歌唱比賽評(píng)分系統(tǒng)設(shè)計(jì)(C語(yǔ)言完整版).docx_第1頁(yè)
歌唱比賽評(píng)分系統(tǒng)設(shè)計(jì)(C語(yǔ)言完整版).docx_第2頁(yè)
歌唱比賽評(píng)分系統(tǒng)設(shè)計(jì)(C語(yǔ)言完整版).docx_第3頁(yè)
歌唱比賽評(píng)分系統(tǒng)設(shè)計(jì)(C語(yǔ)言完整版).docx_第4頁(yè)
歌唱比賽評(píng)分系統(tǒng)設(shè)計(jì)(C語(yǔ)言完整版).docx_第5頁(yè)
已閱讀5頁(yè),還剩81頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

。軟件設(shè)計(jì)實(shí)踐報(bào)告學(xué) 院: 中北大學(xué)信息商務(wù)學(xué)院 專 業(yè): 通信工程專業(yè) 題 目: 歌唱比賽評(píng)分系統(tǒng) 1305044142 王 澤 學(xué)生姓名: 1305044138 郭世杰 1305044149 賀 鑫 完成時(shí)間: 2016年1月18日 指導(dǎo)教師: 魯旭濤 姚愛(ài)琴 李沅 目錄課程設(shè)計(jì)任務(wù)書41需求分析51.1題目分析51.2系統(tǒng)分析52設(shè)計(jì)概要63程序設(shè)計(jì)及模塊分工明細(xì)73.1人員模塊分工73.2人員模塊分工明細(xì)74測(cè)試結(jié)果354.1調(diào)試與測(cè)試354.2測(cè)試結(jié)果截圖36設(shè)計(jì)總結(jié)42致 謝43參考文獻(xiàn)44附錄45課程設(shè)計(jì)任務(wù)書1 設(shè)計(jì)目的C語(yǔ)言是通信工程專業(yè)一門重要的專業(yè)技術(shù)課程,它是一門實(shí)踐性很強(qiáng)的課程。軟件設(shè)計(jì)實(shí)踐課程是為配合c語(yǔ)言課程,對(duì)學(xué)生進(jìn)行全面綜合訓(xùn)練、與課堂教學(xué)、作業(yè)練習(xí)題、上機(jī)實(shí)驗(yàn)相輔的必不可少的一個(gè)教學(xué)環(huán)節(jié)。利用所學(xué)的C語(yǔ)言知識(shí)及其編程方法:結(jié)構(gòu)程序設(shè)計(jì)、數(shù)組、指針、結(jié)構(gòu)體、文件操作等內(nèi)容,通過(guò)布置具有一定難度的實(shí)際程序設(shè)計(jì)題目,要求學(xué)生獨(dú)立完成所布置題目。在分析設(shè)計(jì)過(guò)程中,要求學(xué)生養(yǎng)成良好的編程習(xí)慣,學(xué)會(huì)分析解決簡(jiǎn)單的實(shí)際問(wèn)題,學(xué)會(huì)C語(yǔ)言的實(shí)際調(diào)試技巧和方法,要求學(xué)生在教師的指導(dǎo)下逐步完成應(yīng)用程序的設(shè)計(jì)2 設(shè)計(jì)內(nèi)容和要求有十個(gè)選手參加歌唱比賽,十個(gè)裁判對(duì)每個(gè)選手的演唱進(jìn)行打分,去掉一個(gè)最高分,去掉一個(gè)最低分,剩下分?jǐn)?shù)的平均值作為每位選手最后的成績(jī)。要求:(1)采用結(jié)構(gòu)體定義每個(gè)選手的參賽編號(hào),姓名以及十個(gè)裁判打出的分?jǐn)?shù);(2)從鍵盤輸入每個(gè)選手的相關(guān)信息:參賽編號(hào),姓名和十個(gè)得分;(3)計(jì)算每位選手的最后得分,并按分?jǐn)?shù)由高到低排序;(4)查詢功能:輸入?yún)①愡x手的編號(hào)或姓名,便可輸出該選手的得分以及排名;以上功能采用菜單操作方式,即從鍵盤輸入1到3這三個(gè)數(shù),分別完成以上(2)到(4)的功能。3 設(shè)計(jì)工作任務(wù)及工作量的要求u 每個(gè)組員完成自己的模塊設(shè)計(jì)。u 完成一份設(shè)計(jì)說(shuō)明書。u 有正確的運(yùn)行結(jié)果及結(jié)果分析1 需求分析1.1 題目分析軟件設(shè)計(jì)實(shí)踐課程是為配合c語(yǔ)言課程,對(duì)學(xué)生進(jìn)行全面綜合訓(xùn)練、與課堂教學(xué)、作業(yè)練習(xí)題、上機(jī)實(shí)驗(yàn)相輔的必不可少的一個(gè)教學(xué)環(huán)節(jié)。利用所學(xué)的C語(yǔ)言知識(shí)及其編程方法:結(jié)構(gòu)程序設(shè)計(jì)、數(shù)組、指針、結(jié)構(gòu)體、文件操作等內(nèi)容,通過(guò)布置具有一定難度的實(shí)際程序設(shè)計(jì)題目,要求學(xué)生獨(dú)立完成所布置題目。在分析設(shè)計(jì)過(guò)程中,要求學(xué)生養(yǎng)成良好的編程習(xí)慣,學(xué)會(huì)分析解決簡(jiǎn)單的實(shí)際問(wèn)題,學(xué)會(huì)C語(yǔ)言的實(shí)際調(diào)試技巧和方法來(lái)解決實(shí)際問(wèn)題。1.2 系統(tǒng)分析歌唱比賽評(píng)分系統(tǒng)包括:u 菜單:系統(tǒng)以菜單方式工作,界面友好,易于操作。u 錄入:在每個(gè)輸入前都有詳細(xì)分類和提示,簡(jiǎn)單明了,根據(jù)提示輸入?yún)①愡x手號(hào)數(shù),姓名,各個(gè)評(píng)委打分成績(jī)。u 查詢:用戶輸入查詢條件,系統(tǒng)規(guī)則地在界面顯示查詢結(jié)果,不光可以輸入號(hào)數(shù),查詢到該選手信息,每位評(píng)委打分;還可以選擇排名查詢,顯示的數(shù)據(jù)全面。u 修改:在已有數(shù)據(jù)的基礎(chǔ)上實(shí)現(xiàn)對(duì)每位選手的信息,以及評(píng)分的修改。u 排名:利用冒泡程序?qū)?shù)組進(jìn)行排序,刪除一個(gè)最高與最低然后進(jìn)行講剩下的值平均,得出選手最終得分,再根據(jù)分?jǐn)?shù)高低排名。u 儲(chǔ)存:對(duì)于已經(jīng)輸入的數(shù)據(jù),已文檔的信息儲(chǔ)存到電腦硬盤中,實(shí)現(xiàn)永久儲(chǔ)存。系統(tǒng)的程序設(shè)計(jì)環(huán)境:本系統(tǒng)使用Visual C+ 作為程序開發(fā)工具。Visual C+是基于對(duì)象的快速應(yīng)用程序開發(fā)工具,是當(dāng)今最強(qiáng)大、最靈活的應(yīng)用程序開發(fā)工具之一,具有良好的可視化應(yīng)用程序開發(fā)環(huán)境和強(qiáng)大的可擴(kuò)展數(shù)據(jù)庫(kù)功能。利用Visual C+提供的可視化組件庫(kù)進(jìn)行編程,可以快速、高效地開發(fā)出基于Windows環(huán)境的各類應(yīng)用程序。Visual C+語(yǔ)言的特點(diǎn)是面向?qū)ο笤O(shè)計(jì)的程序語(yǔ)言,Visual C+的基礎(chǔ)編程語(yǔ)言是具有面向?qū)ο筇匦缘恼Z(yǔ)言,具有代碼穩(wěn)定、可讀性好、編譯速度快等優(yōu)點(diǎn),并將面向?qū)ο蟮母拍钜浦驳搅薈語(yǔ)言中,使這種基礎(chǔ)語(yǔ)言有了新的發(fā)展空間。與其它編程軟件相比,特別是在數(shù)據(jù)庫(kù)和網(wǎng)絡(luò)應(yīng)用方面,Visual C+具有簡(jiǎn)便易用、靈活高效的特點(diǎn)。開發(fā)軟件通常要經(jīng)過(guò)修改源代碼、編譯、測(cè)試、再修改、再編譯、再測(cè)試等操作,這些操作形成了一個(gè)開發(fā)循環(huán),所以快速的編譯器可以大大地降低開發(fā)周期。Visual C+正是建立在這種高效編譯器的基礎(chǔ)之上,是針對(duì)Windows的最快的高級(jí)語(yǔ)言代碼編譯器,因此生成的代碼十分精練高效,使Visual C+程序的運(yùn)行速度更快。這也是使用Visual C+作為程序設(shè)計(jì)開發(fā)語(yǔ)言的重要原因。2 設(shè)計(jì)概要總體設(shè)計(jì)目標(biāo):使用者可以利用本系統(tǒng)進(jìn)行對(duì)選手信息以及評(píng)委評(píng)分的各項(xiàng)運(yùn)算操作,如根據(jù)需求添加選信息,刪除選手信息,對(duì)選手得分進(jìn)行排名等。最后清晰完整的結(jié)果于屏幕中。方便了評(píng)分操作,不僅節(jié)省時(shí)間,而且提高準(zhǔn)確性,可以達(dá)到事半功倍的效果。總體設(shè)計(jì)策略:本系統(tǒng)采用的是自頂向下、層次化的模塊結(jié)構(gòu)。對(duì)高層模塊,采用以事務(wù)為中心的設(shè)計(jì)策略,把一個(gè)大的模塊逐步分解成較小的相對(duì)簡(jiǎn)單的模塊。對(duì)低層模塊,采用以變換為中心的設(shè)計(jì)策略。為了提高每個(gè)模塊的內(nèi)聚性、降低模塊間的耦合性,將每個(gè)模塊設(shè)計(jì)成具有單一功能的模塊(即功能內(nèi)聚),使模塊間的聯(lián)系完全是通過(guò)主模塊的控制和調(diào)用來(lái)實(shí)現(xiàn)(即非直接耦合)。結(jié)合上述分析該系統(tǒng)應(yīng)包括以下模塊:選手信息瀏覽,選手信息錄入,選手信息保存,選手成績(jī)查詢,選手信息修改,選手信息刪除。選手?jǐn)?shù)據(jù):編號(hào)、姓名、成績(jī)、平均成績(jī)。圖1.總體結(jié)構(gòu)圖3 程序設(shè)計(jì)及模塊分工明細(xì)3.1 人員模塊分工王 澤:瀏覽選手?jǐn)?shù)據(jù)browse();查詢選手成績(jī)search();查詢選手信息print()。郭世杰:菜單函數(shù)menu_select(); 修改函數(shù)update(); 保存函數(shù)save()。賀 鑫: 參賽選手信息錄入creat();成績(jī)排序rank();刪除函數(shù)del();公共模塊:color()、quit()、welcome()。3.2 人員模塊分工明細(xì)l 瀏覽選手?jǐn)?shù)據(jù)browse()分析:實(shí)際為鏈表的遍歷,將頭節(jié)點(diǎn)的指針給予臨時(shí)節(jié)點(diǎn)p1,用while語(yǔ)句實(shí)現(xiàn)鏈表的遍歷。圖2.瀏覽選手?jǐn)?shù)據(jù)模塊/*- browse函數(shù) -*/void browse() SONGER_MESSAGE *p1; if(head = NULL & tail = NULL) printf(n-當(dāng)前信息記錄為空-n); else printf(n-你要瀏覽的選手信息如下-n); printf(-|-n); printf( 編號(hào) | 姓名 n); p1=head; while(p1 != NULL) printf(-|-n); printf( %-9d%-6sn,p1-num,p1-name); p1=p1-next; printf(-|-n); l 查詢選手成績(jī)search()分析:提供詳細(xì)成績(jī)查詢,排名查詢的函數(shù)調(diào)用。其中各功能均采用菜單選擇的方式。圖3.查詢選手成績(jī)/*- search函數(shù)-*/void search() int c; printf(n請(qǐng)選擇查詢內(nèi)容:n); printf(1.選手詳細(xì)成績(jī)查詢 2.選手排名查詢n請(qǐng)輸入您的選擇:); scanf(%d,&c); switch(c) case 1: system(cls); print(); break; case 2: system(cls); rank(); break; l 查詢選手信息print()分析:實(shí)際為輸出鏈表中的某個(gè)某個(gè)節(jié)點(diǎn),輸出某個(gè)選手的編號(hào)與姓名較為好實(shí)現(xiàn),輸出10位評(píng)委成績(jī)則用的for語(yǔ)句來(lái)實(shí)現(xiàn)。圖4.查詢選手信息模塊/*- print函數(shù) -*/void print() SONGER_MESSAGE * p1=(SONGER_MESSAGE *)malloc(LEN); int check=0,i; long seeknum; printf(n請(qǐng)輸入要查找的選手編號(hào):); scanf(%d,&seeknum); if(head = NULL & tail = NULL ) printf(n對(duì)不起,當(dāng)前記錄為空!n); else p1=head; printf(n-你要找的選手的成績(jī)?nèi)缦?n);/在這里找到了要查找的選手成績(jī) printf(-|-|-|-|-|-|-|-|-|-|-|-|-|-|-n); printf( 編號(hào) | 姓名 | 成績(jī)| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 平均成績(jī)n); printf(-|-|-|-|-|-|-|-|-|-|-|-|-|-|-n); while(p1 != NULL) if(p1-num = seeknum) printf( %-7d%-6s,p1-num,p1-name); printf( ); for(i=0; igradesi); printf( %-6.2lfn,p1-ave); check=1; getchar(); return; else p1=p1-next; if(head != NULL & check = 0) printf(n對(duì)不起,你查看的選手成績(jī)不存在!n); getchar();l 菜單函數(shù)menu_select()分析:菜單主函數(shù)要求設(shè)計(jì)比較簡(jiǎn)潔,只提供設(shè)輸入,處理和輸出部分的函數(shù)調(diào)用。其中各功能模塊用菜單方式選擇。圖5菜單模塊/*- menu_select函數(shù) -*/void menu_select() char s100; int c; gets(s); /不管用戶輸入的是數(shù)字鍵或是字母鍵使用gets都能將輸入作為字符串接收 while(1) /限定用戶輸入的數(shù)值必須在1-7之間才有效,否則要求重新輸入 c = atoi(s); /利用atoi()函數(shù)將所接收的字符串轉(zhuǎn)換成數(shù)值,提供給if語(yǔ)句判斷 if(c 7) printf(您的輸入有誤,請(qǐng)重新輸入:); gets(s); else break; switch(c) case 1: system(cls); /清屏 browse(); /選手信息瀏覽 break; case 2: system(cls); creat(); /選手信息錄入 break; case 3: system(cls); save(); /選手信息保存 break; case 4: system(cls); search(); /選手成績(jī)查詢 break; case 5: system(cls); update(); /選手信息修改 break; case 6: system(cls); del(); /選手信息刪除 break; case 7: system(cls); quit(); /退出系統(tǒng) return; break; default: break; getchar(); system(cls); menu(); menu_select();l 修改函數(shù)update()分析;實(shí)現(xiàn)選手信息的修改,核心內(nèi)容為鏈表的遍歷。找出要修改的選手,修改其個(gè)人信息。圖6.修改模塊/*- update函數(shù) -*/void update() SONGER_MESSAGE *p1;/=(SONGER_MESSAGE *)malloc(LEN); int check=0; /用來(lái)進(jìn)行判斷,是否找到了要修改的信息 long updatenum; printf(n請(qǐng)輸入要修改的選手編號(hào):); scanf(%d,&updatenum);/查找到要修改的選手 if(head = NULL & tail = NULL) printf(n-當(dāng)前信息記錄為空-n); else p1=head; while(p1 != NULL) if(p1-num = updatenum) printf(n-你要修改的選手信息如下-n); printf(-|-n); printf( 編號(hào) | 姓名 n); printf(-|-n); printf( %-9d%-6sn,p1-num,p1-name); printf(-|-n); printf(n-請(qǐng)重新寫入此選手信息:-n); check=1;/從新寫入修改項(xiàng)目 printf(n修改選手編號(hào)為:); scanf(%d,&p1-num); printf(n修改選手姓名為:); scanf(%s,p1-name); return; else p1=p1-next; if(head != NULL & check = 0) printf(n對(duì)不起,你要修改的選手信息不存在!n); getchar();l 保存函數(shù)save()分析:保存文件的流程。使用fopen()函數(shù)打開txt文件,“w”參數(shù)代表打開只寫文件,再利用fprintf()函數(shù)寫入選手內(nèi)容,最后用fclose()函數(shù)關(guān)閉文件。圖7.保存模塊/*- save函數(shù) -*/void save()/將數(shù)據(jù)保存到文件 FILE *fp; SONGER_MESSAGE *p1;/=(SONGER_MESSAGE *)malloc(LEN); p1=head; fp=fopen(參賽選手名單.txt,w); fprintf(fp,-|-n); fprintf(fp, 編號(hào) | 姓名 n); while(p1 != NULL) fprintf(fp,-|-n); fprintf(fp, %-9d%-6sn,p1-num,p1-name); p1=p1-next; fprintf(fp,-|-n); fclose(fp); printf(nt文件已將保存到參賽選手名單.txt);l 參賽選手信息錄入creat()分析:錄入信息表現(xiàn)為創(chuàng)建鏈表節(jié)點(diǎn)并給節(jié)點(diǎn)的元素賦值,然后對(duì)評(píng)委的分?jǐn)?shù)進(jìn)行排序(鏈表的排序),排序選擇冒泡排序法,最后去掉一個(gè)最高分去掉一個(gè)最低分。圖7.參賽選手信息錄入模塊/*- creat函數(shù) -*/void creat() int i,j; float t; char c=y; while(c = y | c = Y) SONGER_MESSAGE *p1=(SONGER_MESSAGE *)malloc(LEN); printf(n請(qǐng)輸入要錄入的選手信息:n); printf(n選手編號(hào):); scanf(%d,&p1-num); printf(n選手姓名:); scanf(%s,p1-name); printf(n請(qǐng)輸入10位評(píng)委點(diǎn)評(píng)成績(jī):); p1-ave = 0; for(i=0; igradesi); /runtime error p1-ave += p1-gradesi; for(i=0; iN-1; i+) /冒泡排序法讓那個(gè)成績(jī)從小到大排列,然后選出最大值是最后一個(gè),最小值是第一個(gè) for(j=0; jgradesjp1-gradesj+1) t=p1-gradesj; p1-gradesj=p1-gradesj+1; p1-gradesj+1=t; p1-ave=(p1-ave-(p1-grades0+p1-grades9)/8;/去掉一個(gè)最高分,去掉一個(gè)這一低分,得出最后的平均分 p1-next=NULL; if(p1=NULL) printf(n內(nèi)存分配失敗n); n=n-1; if(head = NULL & tail = NULL) /當(dāng)前沒(méi)有結(jié)點(diǎn),創(chuàng)建第一個(gè)結(jié)點(diǎn) head=p1; head-next=NULL; tail=head; printf(n-選手信息錄入成功-n); else /如果當(dāng)前還有節(jié)點(diǎn)則插入到尾部 tail-next=p1; tail=p1; tail-next=NULL; printf(n-選手信息錄入成功-n); printf(是否繼續(xù)(Y/N):); getchar(); scanf(%c,&c); l 成績(jī)排序rank()分析:用冒泡排序的方法對(duì)平均成績(jī)(鏈表)進(jìn)行排序。圖8.成績(jī)排序模塊/*- rank函數(shù) -*/void rank() SONGER_MESSAGE *p1,*p2,*endpt,*p; / *endpt/*控制循環(huán)比較*/ *p/*臨時(shí)指針變量*/ n=0; p1=head; if(head = NULL & tail = NULL) printf(n-當(dāng)前信息記錄為空-n); else p1 = (SONGER_MESSAGE *)malloc(LEN); p1-next = head; /*注意理解:我們?cè)黾右粋€(gè)節(jié)點(diǎn),放在第一個(gè)節(jié)點(diǎn)的前面,主要是為了便于比較。因?yàn)榈谝粋€(gè)節(jié)點(diǎn)沒(méi)有前驅(qū),我們不能交換地址。*/ head = p1; /*讓head指向p1節(jié)點(diǎn),排序完成后,我們?cè)侔裵1節(jié)點(diǎn)釋放掉*/ for(endpt=NULL; endpt!=head; endpt=p) /*結(jié)合第6點(diǎn)理解*/ for(p=p1=head; p1-next-next!=endpt; p1=p1-next) if(p1-next-ave next-next-ave) /*如果前面的節(jié)點(diǎn)鍵值比后面節(jié)點(diǎn)的鍵值小,則交換*/ p2 = p1-next-next; /1、排序后q節(jié)點(diǎn)指向p節(jié)點(diǎn),在調(diào)整指向之前,我們要保存原p的指向節(jié)點(diǎn)地址,即:p2=p1-next-next p1-next-next = p2-next; /2、順著這一步一步往下推,排序后p1-next-next要指的是p2-next,所以p1-next-next=p2-next p2-next = p1-next; /3、p2-next原是q發(fā)出來(lái)的指向,排序后q的指向要變?yōu)橹赶騪的,而原來(lái)p1-next是指向p的,所以p2-next=p1-next p1-next = p2; /4、p1-next原是指向p的,排序后圖16中p1-next要指向q,原來(lái)p1-next-next(即p2)是指向q的,所以p1-next=p2 p = p1-next-next; /5、至此,完成了相鄰兩節(jié)點(diǎn)的順序交換 p1 = head; /*把p1的信息去掉*/ head = head-next; /*讓head指向排序后的第一個(gè)節(jié)點(diǎn)*/ free(p1); /*釋放p1*/ printf(n-選手成績(jī)排名信息如下-n); printf(-|-|-|-n); printf( 編號(hào) | 姓名 |平均成績(jī)| 名次 n); p1=head; while(p1 != NULL) printf(-|-|-|-n); printf( %-9d%-9s%-9.1lf%-5dn,p1-num,p1-name,p1-ave,n+1); n+; p1=p1-next; printf(-|-|-|-n); getchar();l 刪除函數(shù)del()分析:節(jié)點(diǎn)的刪除較為繁瑣。第一種情況:數(shù)據(jù)在鏈表頭部,并且只有一個(gè)結(jié)點(diǎn)。第二種情況:數(shù)據(jù)在鏈表頭部 ,頭結(jié)點(diǎn)。第三種情況:數(shù)據(jù)在鏈表中間,中間節(jié)點(diǎn)。第四種情況:數(shù)據(jù)在鏈表尾部,尾部節(jié)點(diǎn)。圖9.刪除模塊/*- del函數(shù) -*/void del() SONGER_MESSAGE *node;/=(SONGER_MESSAGE *)malloc(LEN); SONGER_MESSAGE *p1; int check=0; /用來(lái)進(jìn)行判斷,是否找到了要?jiǎng)h除的信息 long del_num; printf(n請(qǐng)輸入要?jiǎng)h除的選手的編號(hào):); scanf(%d,&del_num); if(head = NULL & tail =NULL) printf(n當(dāng)前信息記錄為空,刪除失?。); else node=head; p1=head; while(node != NULL) if(node-num = del_num) printf(n-要?jiǎng)h除的選手信息-n); printf(-|-n); printf( 編號(hào) | 姓名 n); printf(-|-n); printf( %-9d%-6sn,node-num,node-name); /在這里找到了要?jiǎng)h除的選手信息 printf(-|-n); check=1; /找到要?jiǎng)h除的信息,賦為真 if(node = head & head-next = NULL) /是頭結(jié)點(diǎn),并且只有一個(gè)結(jié)點(diǎn) head=NULL; tail=head; free(node); printf(n-刪除信息成功-n); /刪除唯一的節(jié)點(diǎn) else if(node = head & head-next != NULL) /刪除頭節(jié)點(diǎn) node=head; head=head-next; free(node); printf(n-刪除信息成功-n); /頭節(jié)點(diǎn)刪除成功 n=n-1; else if(node -next != NULL) /刪除中間節(jié)點(diǎn) p1-next=node-next; free(node); printf(n-刪除信息成功-n); /中間節(jié)點(diǎn)刪除成功 n=n-1; else if(node-next = NULL) /刪除尾節(jié)點(diǎn) p1-next=NULL; tail=p1; free(node); printf(n-刪除信息成功-n); /尾節(jié)點(diǎn)刪除成功 n=n-1; getchar(); return; else p1=node; node=node-next; if(head != NULL & check = 0) printf(n對(duì)不起,你要?jiǎng)h除的選手信息不存在!n); getchar();u 公共模塊l 顏色控制函數(shù)color()分析:為了使程序看起來(lái)更美觀,所以引入windows api來(lái)控制顏色函數(shù),用來(lái)改變字體顏色。/*-color函數(shù) -*/void color(const unsigned short color1) /*僅限改變0-15的顏色;如果在0-15那么實(shí)現(xiàn)他的顏色 因?yàn)槿绻^(guò)15后面的改變的是文本背景色。*/ if(color1=0&color1=15) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), color1); /*如果不在0-15的范圍顏色,那么改為默認(rèn)的顏色白色;*/ else SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 7); /*顏色對(duì)應(yīng)值: 0=黑色 8=灰色 1=藍(lán)色 9=淡藍(lán)色 2=綠色 10=淡綠色 0xa 3=湖藍(lán)色 11=淡淺綠色 0xb 4=紅色 12=淡紅色 0xc 5=紫色 13=淡紫色 0xd 6=黃色 14=淡黃色 0xe 7=白色 15=亮白色 0xf*/l 退出函數(shù)quit()分析:用來(lái)退出程序/*- quit函數(shù) -*/void quit() printf(nnt=感謝您使用歌唱比賽評(píng)分系統(tǒng)=nn);l 目錄函數(shù)menu()分析;為程序入口提供顯示,因篇幅有限,所以顯示有錯(cuò)亂。/*- menu函數(shù) -*/void menu() system(mode con cols=100 lines=30); color(11); printf(t .;r155551r;. n); printf(t歌唱比賽評(píng)分系統(tǒng) :r1hhhhhhhhhh1r: n); printf(t :1SSSS555555555SSSSSr n); printf(t .sSSS55555555555555SS1. ,. n); printf(t1.選手信息瀏覽 hS5555555555555555SSi iSh. n); printf(t rS555555555555555SSh, .sSSS1 n); printf(t rh55555555555555SS5i ;5S555S, n); printf(t2.選手信息錄入 Sh555555555555SS5r ,1SS5555Si n); printf(t hh5555555555SS5r

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論