




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
《軟件設(shè)計實(shí)踐》
匯報
學(xué)院:中北大學(xué)信息商務(wù)學(xué)院
專業(yè):__________通信工程專業(yè)______________
題目:_________歌唱比賽評分系統(tǒng)___________
王澤
學(xué)生姓名:________郭世杰___________
賀鑫
完畢時間:________完23年1月18FI_____________
指導(dǎo)教師:魯旭濤姚愛琴李沅
目錄
課程設(shè)計任務(wù)書............................3
1需求分析......................................5
1.1題目分析..................................5
1.2系統(tǒng)分析..................................5
2設(shè)計概要......................................6
3程序設(shè)計及模塊分工明細(xì)........................7
3.1人員模塊分工..............................7
3.2人員模塊分工明細(xì)..........................7
4測試成果.....................................47
4.1調(diào)試與測試...............................47
4.2測試成果截圖.............................48
設(shè)計總結(jié).......................................55
致謝..........................................56
參照文獻(xiàn).......................................57
附錄...........................................58
課程設(shè)計任務(wù)書
1設(shè)計目的
C語言是通信工程專業(yè)一門重要H勺專業(yè)技術(shù)課程,它是一門實(shí)踐性很強(qiáng)的課程。
軟件設(shè)計實(shí)踐課程是為配合c語言課程,對學(xué)生進(jìn)行全面綜合訓(xùn)練、與課堂教學(xué)、作業(yè)練
習(xí)題、上機(jī)試驗相輔時必不可少H勺一種教學(xué)環(huán)節(jié)。
運(yùn)用所學(xué)的C語言知識及其編程措施:構(gòu)造程序設(shè)計、數(shù)組、指針、構(gòu)造體、文獻(xiàn)操作等
內(nèi)容,通過布置具有一定難度的實(shí)際程序設(shè)計題目,規(guī)定學(xué)生獨(dú)立完畢所布置題目。在分析設(shè)
計過程中,規(guī)定學(xué)生養(yǎng)成良好的編程習(xí)慣,學(xué)會分析處理簡樸的實(shí)際問題,學(xué)會C語言的實(shí)際
調(diào)試技巧和措施,規(guī)定學(xué)生在教師的指導(dǎo)下逐漸完畢應(yīng)用程序的設(shè)計
2設(shè)計內(nèi)容和規(guī)定
有十個選手參與歌唱比賽,十個裁判對每個選手H勺演唱進(jìn)行打分,去掉一種最高分,去掉
一種最低分,剩余分?jǐn)?shù)的平均值作為每位選手最終的成績。
規(guī)定:
(1)采用構(gòu)造體定義每個選手的參賽編號,姓名以及十個裁判打出的分?jǐn)?shù);
(2)從鍵盤輸入每個選手的有關(guān)信息:參賽編號,姓名和十個得分;
(3)計算每位選手的最終得分,并按分?jǐn)?shù)由高到低排序;
(4)行詢功能:輸入?yún)①愡x手的編號或姓名,便可輸出該選手的得分以及排名;
以上功能采用菜單操作方式,即從鍵盤輸入1到3這三個數(shù),分別完畢以上(2)到(4)
W'J功能。
3設(shè)計工作任務(wù)及工作量的規(guī)定
?每個組員完畢自己的模塊設(shè)計。
?完畢一份設(shè)計闡明書。
?有對日勺口勺運(yùn)行成果及成果分析
1需求分析
1.1題目分析
軟件設(shè)計實(shí)踐課程是為配合C語言課程,對學(xué)生進(jìn)行全面綜合訓(xùn)練、與課堂教學(xué)、
作業(yè)練習(xí)題、上機(jī)式驗相輔的必不可少的I一種教學(xué)環(huán)節(jié)。
運(yùn)用所學(xué)的JC語言知識及其編程措施:構(gòu)造程序設(shè)計、數(shù)組、指針、構(gòu)造體、文獻(xiàn)
操作等內(nèi)容,通過布置具有一定難度打勺實(shí)際程序設(shè)計題目,規(guī)定學(xué)生獨(dú)立完畢所布置題
目。在分析設(shè)計過程中,規(guī)定學(xué)生養(yǎng)成良好的編程習(xí)慣,學(xué)會分析處理簡樸口勺實(shí)際問
題,學(xué)會C語言打勺實(shí)際調(diào)試技巧和措施來處理實(shí)際問題。
1.2系統(tǒng)分析
歌唱比賽評分系統(tǒng)包括:
?菜單:系統(tǒng)以菜單方式工作,界面友好,易于操作。
?錄入:在每個輸入前均有詳細(xì)分類和提醒,簡樸明了,根據(jù)提醒輸入?yún)①愡x手號
數(shù),姓名,各個評委打提成績。
?查詢:顧客輸入查詢條件,系統(tǒng)規(guī)則地在界面顯示查詢成果,不光可以輸入號數(shù),
查詢到該選手唁息,每位評委打分;還可以選擇排名查詢,顯示日勺數(shù)據(jù)全面。
?修改:在己經(jīng)有數(shù)據(jù)的基礎(chǔ)上實(shí)現(xiàn)對每位選手口勺信息,以及評分口勺修改。
?排名:運(yùn)用冒泡程序?qū)?shù)組進(jìn)行排序,刪除?種最高與最低然后進(jìn)行講剩余的值平
均,得出選手最終得分,再根據(jù)分?jǐn)?shù)高卜.排名。
?儲存:對于已經(jīng)輸入的數(shù)據(jù),己文檔的信息儲存到電腦硬盤中,實(shí)現(xiàn)永久儲存。
系統(tǒng)的程序設(shè)計環(huán)境:
本系統(tǒng)使用VisualC++作為程序開發(fā)工具。VisualC++是基于對象的迅速應(yīng)用程序
開發(fā)工具,是當(dāng)今最強(qiáng)大、最靈活的應(yīng)用程序開發(fā)工具之一,具有良好的可視化應(yīng)用程
序開發(fā)環(huán)境和強(qiáng)大的可擴(kuò)展數(shù)據(jù)庫功能。運(yùn)用VisualC++提供的可視化組件庫進(jìn)行編
程,可以迅速、高效地開發(fā)出基fWindows環(huán)境的各類應(yīng)用程序。VisualC++語言口勺特
點(diǎn)是面向?qū)ο笤O(shè)計的程序語言,VisualC++的J基礎(chǔ)編程語言是具有面向?qū)ο筇匦缘恼Z
言,具有代碼穩(wěn)定、可讀性好、編譯速度快等長處,并將面向?qū)ο蟮母拍钜浦驳搅薈語
言中,使這種基礎(chǔ)語言有了新的發(fā)展空間。與其他編程軟件相比,尤其是在數(shù)據(jù)庫和網(wǎng)
絡(luò)應(yīng)用方面,VisualC++具有簡便易用、靈活高效日勺特點(diǎn)。
開發(fā)軟件一般要通過修改源代碼、編譯、測試、再修改、再編譯、再測試等操作,
這些操作形成了一種開發(fā)循環(huán),因此迅速的編譯器可以大大地減少開發(fā)周期。Visual
C++正是建立在這種高效編譯器的基礎(chǔ)之上,是針時Windows口勺最快的高級語言代碼編
譯器,因此生成日勺代碼十分精練高效,使VisualC++程序的運(yùn)行速度更快。這也是使用
VisualC++作為程序設(shè)計開發(fā)語言日勺重要原因。
2設(shè)計概要
總體設(shè)計目冊):使用者可以運(yùn)用本系統(tǒng)進(jìn)行對選手信息以及評委評分的各項運(yùn)算操作,如
根據(jù)需求添加選信息,刪除選手信息,對選手得分進(jìn)行排名等。最終清晰完整的成果于屏幕
中。以便了評分操作,不僅節(jié)省時間,并且提高精確性,可以到達(dá)事半功倍口勺效果。
總體設(shè)計方略:本系統(tǒng)采用時是自頂向卜、層次化的模塊構(gòu)造。對高層模塊,采用以事務(wù)
為中心的設(shè)計方略,把一種大的I模塊逐漸分解成較小的相對簡樸的模塊。對低層模塊,采用以
變換為中心的設(shè)計方略。為了提高每個模塊的內(nèi)聚性、減少模塊間的耦合性,將每個模塊設(shè)計
成具有單一功能的模塊(即功能內(nèi)聚),使模塊間H勺聯(lián)絡(luò)完全是通過主模塊的控制和調(diào)用來實(shí)
現(xiàn)(即非直接耦合)。
結(jié)合上述分析該系統(tǒng)應(yīng)包括如下模塊:選手信息瀏覽,選手信息錄入,選手信息保留,選
手成績查詢,選手信息修改,選手信息刪除。
選手?jǐn)?shù)據(jù):編號、姓名、成績、平均成績。
手
手
手
手
手
手
信
成
信
信
信
信
息
績
息
息
息
息
錄
查
修
刪
瀏
保
入
詢
改
除
覽
存
圖1.總體構(gòu)造圖
3程序設(shè)計及模塊分工明細(xì)
3.1人員模塊分工
王澤:瀏覽選手?jǐn)?shù)據(jù)browse0;查詢選手成績search();查詢選手信息print()。
郭世杰:菜單函數(shù)menu_select();修改函數(shù)update。;保留函數(shù)save。。
賀鑫:參賽選手宅息錄入creal();成績排序rank。;刪除函數(shù)del();
公共模塊:colorC>quit()>welcome()?
3.2人員模塊分工明細(xì)
?瀏覽選手?jǐn)?shù)據(jù)browse。
分析:實(shí)際為鏈表的遍歷,將頭節(jié)點(diǎn)時指針予以臨時節(jié)點(diǎn)pl,用while語句實(shí)現(xiàn)鏈
表日勺遍歷。
圖2.瀏覽選手?jǐn)?shù)據(jù)模塊
/*----------------------browse函數(shù)-------------------------------*/
voidbrowseO
(
SONGER_MESSAGE*pl;
if(head==NULL&&tail==NULL)
printf("\n目前信息記錄為空\n〃);
)
else
printf("\n你要瀏覽日勺選手信息如下\n〃);
printf('--------1--------\n〃);
printfC編號|姓名\n〃);
pl=head;
while(pl!=NULL)
printf('--------1--------\n〃);
printf("%-9d%-6s\n/?,pl->num,pl->name);
pl=pl->next;
}
printf('--------1--------\n〃);
)
}
?查詢選手成績search()
分析:提供詳細(xì)成績查詢,排名查詢的函數(shù)調(diào)用。其中各功能均采用菜單項選擇擇FJ勺方式。
圖3.查詢選手成績
search函數(shù)*/
voidsearch()
(
intc;
printf("\n請選擇查詢內(nèi)容:\n〃);
printfCl.選手詳細(xì)成績查詢2.選手排名查詢\n請輸入您的選擇:〃);
scanf(〃%d〃,&c);
switch(c)
case1:
system("cis");
print();
break;
case2:
system(〃cls〃);
rank();
break;
}
)
?查詢選手信息print。
分析:實(shí)際為輸出鏈表中的某個某個節(jié)點(diǎn),輸出某個選手的編號與姓名較為好實(shí)現(xiàn),諭出10
位評委成績則用時for語句來實(shí)現(xiàn)。
(-TART
輸入要查找的選手編號
NULL&&lail==-------------------------------------------------
目前記錄為空輸出表頭
WHILE(pl!=NULL)
4El£j^>num==seekuiuw)—
輸出編號姓名指向鏈表的下一種
FOR(i=0;i<N;i++)
輸出每個評委的分?jǐn)?shù)
平均分
Return
-^HUieaU=NULL&&check__________________________________________________
選手成績不存在
Enter
END
圖4.杳詢選手信息模塊
---print函數(shù)
voidprint()
SONGER_MESSAGE*pl=(SONGERMESSAGE*)malloc(LEN);
intcheck=0,i;
longseoknum;
printf("\n請輸入要查找H勺選手編號:〃);
scanf(“/d”,&seeknum);
if(head==NULL&&tail=NULL)
(
printf("\n對不起,目前記錄為空!\n");
)
else
(
pl=head;
printff\n----------你要找H勺選手口勺成績?nèi)缦?--------\n");〃在這里找到了要查找
口勺選手成績
printfC——I——I——I一一I一一I——I——I——I一一I——I——I——I——
|----------1--------'n");
printfC編號I姓名|成績I1|2|3|4|5|6|7|8|9|10
平均成績\n〃);
printf('------1-------1------1----1-----1----1-
—|---------\吟;
while(pl!=NULL)
(
if(pl->num==secknum)
(
printf(*淅7d%-6s”,pl->num,pl->name);
printff〃);
for(i=0;i<N;i++)
(
printf(z,%.Ifz,,pl->grades[i]);
I
printf("%-6.21f\nw,pl->ave);
chcck=l;
getchar();
return;
)
else
pl=pl->next;
1
)
)
if(head!=NULL&&check==0)
(
printfC\n對不起,你查看的J選手成績不存在!\n");
)
gctchar();
?菜單函數(shù)menu_select()
分析:菜單主函數(shù)規(guī)定設(shè)計比較簡潔,只提供設(shè)輸入,處理和輸出部分的函數(shù)調(diào)用。其中各功
能模塊用菜單方式選擇。
定義變量charsflOOkintc:
WHILE(1)
運(yùn)用atoiO函數(shù)將所接受II勺字符串轉(zhuǎn)換成數(shù)值,提供應(yīng)if語句判斷
____________________________________________
<111c------------------------------------------
輸入有誤Break
SWITCH(c)
1234567default
信息瀏覽信息錄入信息保留成績查詢信息修改信息刪除退出系統(tǒng)Break
BreakBreakBreakBreakBreakBreakReturn
Break
Code
圖5菜單模塊
/*-----------------menu_select函數(shù)--------------------------*/
voidmenu_select0
chars[100];
intc;
gots(s);〃不管顧客輸入吊J是數(shù)字鍵或是字母鍵使用gets都能將輸入作為字
符串接受
while(l)〃限定顧客輸入的數(shù)值必須在1-7之間才有效,否則規(guī)定重新輸入
(
c=atoi(s);〃運(yùn)用atoi()函數(shù)將所接受的字符串轉(zhuǎn)換成數(shù)值,提供應(yīng)if語句
判斷
if(c<1||c>7)
(
printf(“您的輸入有誤,請重新輸入:〃);
gets(s);
)
elsebreak;
)
switch(c)
(
case1:
system("cls");〃清屏
browse();〃選手信息瀏覽
break;
case2:
system("cis");
creat();〃選手信息錄入
break;
case3:
systcm("cls");
save();〃選手信息保留
break;
case4:
system("cls");
search();〃選手成績查詢
break;
case5:
systcm("cls");
update();〃選手信息修改
break;
case6:
system("cls");
del();〃選手信息刪除
break;
case7:
system(/zclsw);
quit();〃退出系統(tǒng)
return;
break;
default:
break;
)
gctchar();
system("cis");
menu();
menuselect();
?修改函數(shù)update()
分析;實(shí)現(xiàn)選手信息的修改,關(guān)鍵內(nèi)容為鏈表日勺遍歷。找出要修改H勺選手,修改其
/*-------------------------update函數(shù)----------------------------*/
voidupdate()
SONGER_MESSAGE*pl;//=(SONGERMESSAGE*)malloc(LEN);
intcheck=0;〃用來進(jìn)行判斷,與否找到了要修改口勺信息
longupdatenum;
printfC\n請輸入要修改日勺選手編號:");
scanf&updatcnum);〃查找到要修改H勺選手
if(head==NULL&&tail==NULL)
(
printf("\n--------目前信息記錄為空--------\n");
)
else
(
pl=hcad;
while(pl!=NULL)
if(pl->num==updatenum)
(
printf(*\n-----------你要修改的選手信息如F----------\n");
printf(*--------1--------\n");
printff編號|姓名\n〃);
printf("---\n〃);
printf("%-9d%-6s\nw,pl->num,pl->namo);
printff---------1---------\n");
printff\n------------請重新寫入此選手信息:---------\n");
check=l;//從新寫入修改項目
printf(〃\n修改選手編號為:〃);
scanf(飛d”,&pl->num);
printf(〃\n修改選手姓名為:〃);
scanfpl->namc);
return;
)
else
(
pl=pl>next;
)
}
)
if(head!=NULL&&check==0)
(
printfC\n對不起,你要修改的選手信息不存在!\n");
)
getchar();
)
?保留函數(shù)save。
分析:保留文獻(xiàn)H勺流程。使用fopen()函數(shù)打開txt文獻(xiàn),“w”參數(shù)代表打開只寫文
獻(xiàn),再運(yùn)用fprintf。函數(shù)寫入選手內(nèi)容,最終用fclose()函數(shù)關(guān)閉文獻(xiàn)。
(START)
打開一種文獻(xiàn),并寫入格式數(shù)據(jù)
WHILE(pl!=NULL)
向文獻(xiàn)寫入“編號”,“姓名”
關(guān)閉文獻(xiàn)
(END)
圖7.保留模塊
voidsave。〃將數(shù)據(jù)保留到文獻(xiàn)
{
FILE*fp;
SONGER_MESSAGE*pl;//=(SONGERMESSAGE*)malloc(I^N);
pl-head;
fp=fopen(”參賽選手名單.txt","[v");
fprintf(fp.\n〃):
fprintf(fp/編號|姓名\n〃);
while(pl!=NULL)
(
fprintf(fp,*--------1--------;
fprintf(fp,/z%-9d%-6s\n,z,pl->num,pl->name);
pl=pl->next;
)
fprintf(fp,"--------1--------\n〃);
fclose(fp);
printfC\n\t文獻(xiàn)已將保留到、〃參賽選手名單.txt\");
}
?參賽選手信息錄入creat()
分析:錄入信息體現(xiàn)為創(chuàng)立鏈表節(jié)點(diǎn)并給節(jié)點(diǎn)的元素賦值,然后對評委口勺分?jǐn)?shù)進(jìn)行排序(鏈表
的排序),排序選擇冒泡排序法,最終去掉一種最高分去掉一種最低分。
圖7.參賽選手信息錄入模塊
/*—----creat函數(shù)
voidcreat()
inti,j;
floatt;
charc=,y';
while(c=='y'11c=='Y')
(
SONGER_MESSAGE*pl=(SONGER_MESSAGE*)malloc(LEN);
printf("\n請輸入要錄入的選手信息:\n");
printf(〃\n選手編號:”);
scanf&pl->num);
printf(〃\n選手姓名:〃);
scanfpl->name);
printf("\n請輸入10位評委點(diǎn)評成績:");
pl->ave=0;
for(i=0;i<N;i++)
(
scanf(線f”,&(pl-〉grades[i]));//runtimeerror
pl->ave+=pl->grades[i];
for(i=0;i〈N-1;i++)〃冒泡排序法讓那個成績從小到大排
列,然后選出最大值是最終一種,最小值是第一種
for(j=0;j++)
if(pl->gradesJJ>pl->grades[j+lj)
(
t=pl->grades[j];
pl->gradesLj]=pl->gradesJ+l];
pl->gradesLj+lj=t;
}
pl->ave=(pl->ave-(pl->grades[0]+pl->grades[9]))/8;〃去掉一種最高分,去第一種這
一低分,得出最線的平均分
pl->next=NULL;
if(pl==NULL)
(
printfC\n內(nèi)存分派失敗\n〃);
n=n-l;
)
if(head==NULL&&tail==NULL)〃目前沒有結(jié)點(diǎn),創(chuàng)立第一種結(jié)點(diǎn)
hcad=pl;
head->next=NL'LL;
tail=head;
printf(",\n-----選手信息錄入成功------\n");
}
else〃假如目前尚有節(jié)點(diǎn)則插入到尾部
(
tail->next=pl;
tail=pl;
tail->next=NL-LL;
printf(z,\n-----選手信息錄入成功------\n");
)
printf(〃與否繼續(xù)(Y/N):");
getchar();
scanf&c);
}
)
?成績排序rank。
分析:用冒泡排序的措施對平均成績(鏈表)進(jìn)行排序。
&TART
圖8.成績排序模塊
/*rank函數(shù)
voidrank()
SONGER_MESSAGE*pl,*p2,*endpt,*p;//*endpl/*控制循環(huán)比較*/*p/*臨時指針變量*/
n=0;
pl-head;
if(head==NULL&&tail=NULL)
(
printf(*\n-----------目前信息記錄為空--------\n");
)
else
(
pl=(SONGERMESSAGE*)malloc(LEN);
pl->next=head;/*注意理解:我們增長一種節(jié)點(diǎn),放在第一種節(jié)點(diǎn)口勺前面,重
要是為了便于比較。由于第一種節(jié)點(diǎn)沒有前驅(qū),我們不能互換地址。*/
head=pl;/*讓head指向pl節(jié)點(diǎn),排序完畢后,我們再把pl節(jié)點(diǎn)釋放
掉*/
for(endpt=NULL;endpt!=head;endpt=p)/*結(jié)合第6點(diǎn)理解*/
(
for(p二pl二head;pl->next->next!=endpt;pl=pl->next)
(
if(pl->next->ave<pl->next->next->ave)/*假如前面口勺節(jié)點(diǎn)鍵值比背面
節(jié)點(diǎn)的鍵值小,則互換*/
p2=pl->next->next;//1>排序后q節(jié)點(diǎn)指向p節(jié)點(diǎn),在調(diào)
整指向之前,我們要保留原pH勺指向節(jié)點(diǎn)地址,即:p2=pl->next->next
pl->next->next=p2->next;〃2、順著這一步一步往下推,排序后
pl->ncxt->next要指於J是p2->next,因此pl->next->next=p2->next
p2->next=pl->next;〃3、p2->next原是q發(fā)出來H勺指
向,排序后qH勺指向要變?yōu)橹赶騪的1,而本來pl->next是指向p口勺,因此p2->next=pl->next
pl->next=p2;〃4、pl->next原是指向pH勺,排序
后圖16中pl->next要指向q,本來pl->next->next(即p2)是指向q的,因此pl->next=p2
P=pl->next->next;〃5、至此,完畢了相鄰兩節(jié)點(diǎn)口勺次序
互換
}
)
pl=head;/*把pl『勺信息去掉*/
head=head->next;/*讓head指向排序后的第一種節(jié)點(diǎn)*/
free(pl);/*釋放pl*/
printfT\n----------選手成績排名信息如下---------\n〃);
printf("--------1--------1--------1---------\n");
printfT編號I姓名I平均成績I名次\n〃);
pl=head;
while(pl!=NULL)
printf("---------1---------1---------1---------\n");
printf("%-9d%-9s%-9.1lf%-5d\n,z,pl->num,pl->name,pl->ave,n+1);
n++;
pl=pl->next;
)
printf("---------1---------1---------1---------\n");
)
getchar();
)
?刪除函數(shù)del()
分析:節(jié)點(diǎn)H勺刪除較為繁瑣。
第一種狀況:數(shù)據(jù)在鏈表頭部,并且只有一種結(jié)點(diǎn)。
第二種狀況:數(shù)據(jù)在鏈表頭部,頭結(jié)點(diǎn)。
第三種狀況:數(shù)據(jù)在鏈表中間,中間節(jié)點(diǎn)。
第四種狀況:數(shù)據(jù)在鏈表尾部,尾部節(jié)點(diǎn)。
START
輸出要刪除的選手信息
head&&IL、nE--MULE)""""
刪除唯一口勺節(jié)
點(diǎn)刪除頭節(jié)點(diǎn)
中間節(jié)點(diǎn)刪除
成功刪除尾節(jié)點(diǎn)
getchar();
Return
END
圖9.刪除模塊
/*------del函數(shù)*/
voiddel()
SONGERJIESSAGE*node;//=(SONGERJIESSAGE*)malloc(LEN);
SONGERJIESSAGE*pl;
intcheck=0;〃用來進(jìn)行判斷,與否找到了要刪除的信息
longdel_num;
printf(〃\n請輸入要刪除H勺選手的編號:〃);
scanf(“/d”,&del_num);
if(head==NULL&&tail==Nl)LL)
{
printf("\n目前信息記錄為空,刪除失敗!\n〃);
)
else
(
node=hcad;
pl=head;
while(node!=NULL)
if(node->num==delnum)
printff\n-要刪除的選手信息\n〃)
printff--------1--------\n");
printff編號|姓名\n");
printfC--------1--------\n");
printf(z/%-9d%-6s\nw,node->num,noth->name);〃在這里找到了要刪除艮I
選手信息
printff--------1--------\n");
chcck=l;〃找到要刪除的信息,賦為真
if(node==head&&head->next==NULL)〃是頭結(jié)點(diǎn),并且只有
一種結(jié)點(diǎn)
(
hcad=NULL;
tail=head;
free(node);
printf(",\n--------刪除信息成功--------\n");〃刪除唯一的T節(jié)點(diǎn)
)
elseif(nede==head&&head->next!=NULL)//刪除頭節(jié)點(diǎn)
(
node二head:
head-head->next;
free(node);
printfC\n--------刪除信息成功--------\n〃);〃頭節(jié)點(diǎn)刪除成功
n=n-l;
}
elseif(ncdc->next!=NULL)//刪除中間節(jié)點(diǎn)
(
pl->ncxt=nodo->noxt;
free(node);
printfC\n--------刪除信息成功--------;〃中間節(jié)點(diǎn)刪除成功
n=n-l;
)
elseif(ncde->next==NULL)〃刪除尾節(jié)點(diǎn)
(
pl->next=NULL;
tail=pl;
free(node);
printfC\n刪除信息成功\n");〃尾節(jié)點(diǎn)刪除成功
n=n-l;
)
getcharO;
return;
else
pl=nodc;
node=node->ncxt;
)
}
)
if(head!=NULL&&check==0)
(
printfC\n對不起,你要刪除的選手信息不存在!\n");
)
gctchar();
}
?公共模塊
?顏色控制函數(shù)color。
分析:為了使程序看起來更美觀,因此引入wind5Vsapi末控制顏色函數(shù),用來變化字體顏色。
/*---------------------------color函數(shù)------------------------------*/
voidcolor(constunsignedshortcolorl)
/*僅限變化0-15H勺顏色;假如在0-15那么實(shí)現(xiàn)他H勺顏色由于假如超過15背面
日勺變化的是文本背景色。,/
if(colorl>=0&&colorl<=15)
SetConsoleTextAttribute(GetStdllandle(STD_OUTPUT_HANDLE),colorl);
/*假如不在0T5日勺范圍顏色,那么改為默認(rèn)的顏色白色;*/
else
SetConsoleTextAttribute(GetStdllandle(STD_OUTPUTJIANDLE),7);
/*顏色對應(yīng)值:
0:黑色8;灰色
1二藍(lán)色9二淡藍(lán)色
2二綠色10;淡綠色Oxa
3二湖藍(lán)色11;淡淺綠色Oxb
4:紅色12二淡紅色Oxc
5二紫色13二淡紫色Oxd
6:黃色14二淡黃色Oxe
7=白色15=亮白色Oxf
*/
)
?退出函數(shù)quit。
分析:用來退出程序
/*----------------------quit函數(shù)------------------------------*/
voidquit()
(
printf(/z\n\n\t==========^感謝您使用歌唱比賽評分系統(tǒng)?==========\n\n/z);
}
?目錄函數(shù)menu。
分析;為程序入口提供顯示,因篇幅有限,因此顯示有錯亂。
/*--------------------------------------menu函數(shù)---------------------------
---------------*/
voidmenu()
(
system(z,modeconcols=100lines=30/z);
color(11):
printf(,z\t.;rl55551r
\n〃);
printf(〃、1★+★☆歌唱比賽評分系統(tǒng):rlhhhhhhhhhhlr:
printf(〃\t:ISSSSSSSSSr
\n〃);
printf(z,\t.sSSS55SSl.
\n〃);
printf選手信息瀏覽hS5555SSiiSh.
\n〃);
printf(〃\trS555SSh,.sSSSl
\n〃);
printf(z/\trh55SS5i;5S555S,
\n〃);
printf(z,\t2.選手信息錄入ShSS5r,lSS5555Si
\n〃);
printf("\thhSS5r..sSS555555S;
\n〃);
printf("\t,hS555555SSS5r..r5ss555555s5.
\n〃);
printf(z/\t3.選手信息保
留:SS555SSS1;,sSSS5555555SS;
printf(〃\t
iSSSShi.;1SSS55555555SS;\n〃);
printf(z,\t,sr,,r5ss55555555SSS1,
si.\n〃);
printf(〃\t4.選手成績查詢
i533SSSSSSSSSSS5s,.lSS5i\n");
printf("\t.:islh5555hlsi,.r5S
55SSh;\n〃);
printf(〃\t..,;s5SS5
5555SS1,\n〃);
printf(z,\t5.選手信息修
改.sS3SSSs.\n");
printf("\t,r5SS5
5555555ss5i\n〃);
printf("\t;hS
SS5555555SSh:\n〃);
printfC\t6.選手信息刪
除:sSSS5555555SSl,
\n〃);
printf(zz\t
,r5SS5555555SSr.\n〃);
printf("\t
.ihSSS55555SS5;\n〃);
printf(/z\t7.退出系
統(tǒng):1SSS55555SS
s\n〃);
printf(〃\t
,r5ss5555s5\n〃);
printf("\t
:shhhhh:\n〃);
color(15);
}
?歡迎模塊welcome()
分析:一種系統(tǒng)需要一種美觀歡迎界面,由于DOS窗口有限,因此用點(diǎn)陣字寫出“welcome”
并且在右下角增長目前時間顯示。時間用的time.h庫來實(shí)現(xiàn)。
/*-------------------------------welcome函數(shù)------------------------------*/
intwelcome0
system(z,modeconcols=65lincs=25");
printf(〃\n\n\n\n〃);
color(14);printf(z,#n#######n#########
#######\n〃);
color(14);printf(z,n###nn蝴##
#\n〃);
color(ll);printf(z,##n##n####
#\n〃);
color(11);printf("itnnnnnnnitaantun
附###\n〃);
color(11);printf(z,n###n#####n
#\n〃);
color(13);printf(z,##########n
#\n");
color(13);printfC#############¥##########
#######\n〃);
color(lO);printf("\n\n\n\n\n制作:電子信息工程系通信工程1班42王澤
38郭世杰49賀鑫\n〃);color(15);
time_tit;
it=time(NULL);
ptr=localtime(&it);
printfC\n\t\t\t目前系統(tǒng)時間:%4d年$02d月%02d
日%d:%d\n”,ptr->tm_year+1900,ptr->tm_mon+l,ptr->tm_mday,ptr->tm_hour,ptr->
ptr->tm_sec);
printf(z,\n\n按任意健進(jìn)入主菜單\n〃);
getchO;
system("cis");
menu();
menuselect();
return0;
)
?主函數(shù)main。
分析;提供程序入口。
/*---------------------------------------------------------main函數(shù)
-----------------------*/
intmain()
(
welcome();
return0;
)
?庫函數(shù)
ttinclude<stdio.h>
^include<stdlib.h>
#include<conio.h>
ttinclude<string.h>
■include<malloc.h>
#include<Windows.h>
#include<timc.h>
#defineLENsizeof(S0NGERJ1ESSAGE)
ttdefineN10
?構(gòu)造體
structtm*ptr;//用于welcome()顯示時間的構(gòu)造體
typedefstructsonger〃定義選手信息鏈表構(gòu)造
tr
longnum;〃選手編號
charname[20];
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 黑龍江工業(yè)學(xué)院《生物醫(yī)學(xué)信息與統(tǒng)計學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 陽光學(xué)院《流體傳動與控制基礎(chǔ)》2023-2024學(xué)年第二學(xué)期期末試卷
- 武漢海事職業(yè)學(xué)院《單片機(jī)原理與應(yīng)用綜合設(shè)計》2023-2024學(xué)年第二學(xué)期期末試卷
- 大興安嶺職業(yè)學(xué)院《企業(yè)電子產(chǎn)品設(shè)計與制造》2023-2024學(xué)年第二學(xué)期期末試卷
- 四川汽車職業(yè)技術(shù)學(xué)院《科學(xué)社會主義概論》2023-2024學(xué)年第二學(xué)期期末試卷
- 雙頭應(yīng)急燈項目效益評估報告
- 沈陽音樂學(xué)院《內(nèi)科護(hù)理學(xué)(2)》2023-2024學(xué)年第二學(xué)期期末試卷
- 鄭州商貿(mào)旅游職業(yè)學(xué)院《社會治理》2023-2024學(xué)年第二學(xué)期期末試卷
- 伊犁師范大學(xué)《中職英語微格教學(xué)技能訓(xùn)練》2023-2024學(xué)年第二學(xué)期期末試卷
- 人教版初中歷史與社會七年級上冊 3.5 干旱的寶地-塔里木盆地 教學(xué)設(shè)計
- 出版物網(wǎng)絡(luò)零售備案表
- 云南省昭通市各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名居民村民委員會明細(xì)
- 國家留學(xué)基金委國外大學(xué)邀請函
- QES三體系內(nèi)審檢查表 含審核記錄
- 信息論與編碼 自學(xué)報告
- 二年級乘除法口訣專項練習(xí)1000題-推薦
- 貸款項目資金平衡表
- 唯美動畫生日快樂電子相冊視頻動態(tài)PPT模板
- 設(shè)計文件簽收表(一)
- 義務(wù)教育語文課程標(biāo)準(zhǔn)2022年版
- 公務(wù)員入職登記表
評論
0/150
提交評論