中南大學(xué)C語言課程設(shè)計報告_第1頁
中南大學(xué)C語言課程設(shè)計報告_第2頁
中南大學(xué)C語言課程設(shè)計報告_第3頁
中南大學(xué)C語言課程設(shè)計報告_第4頁
中南大學(xué)C語言課程設(shè)計報告_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

C語言程序設(shè)計實(shí)踐報告第1頁共14頁中南大學(xué)C語言程序設(shè)計實(shí)踐報告題目校際運(yùn)動會管理系統(tǒng)學(xué)生姓名XXXX學(xué)號XXXXXXXXXX指導(dǎo)教師XXXXXX學(xué)院信息科學(xué)與工程學(xué)院專業(yè)班級XXXXXXXXXXXX完成時間2012年06月XX日校際運(yùn)動會管理系統(tǒng)實(shí)驗(yàn)要求1、需要處理的基礎(chǔ)數(shù)據(jù)學(xué)校信息:學(xué)校編號、學(xué)校名稱、男子競賽項(xiàng)目、女子競賽項(xiàng)目、項(xiàng)目積分、總分等運(yùn)動員信息:運(yùn)動員編號、所屬學(xué)校、姓名、性別、年齡、參賽項(xiàng)目、成績、名次、積分等2、系統(tǒng)的基本功能基本信息輸入:輸入學(xué)校、運(yùn)動員的基本信息競賽信息輸入:(1)根據(jù)運(yùn)動員的參賽項(xiàng)目和獲取名次,自動給予運(yùn)動員相應(yīng)的積分:第1名得分5,第2名得分3,第3名得分2,其他名次不得分;(2)根據(jù)運(yùn)動員所屬的學(xué)校,自動給學(xué)校的相應(yīng)競賽項(xiàng)目加上積分;信息查詢:(1)查詢學(xué)校信息(2)查詢運(yùn)動員信息成績排序按照分?jǐn)?shù)從高到低,對學(xué)校的團(tuán)體名次、學(xué)校的男子或女子競賽名次進(jìn)行排序。二、總體設(shè)計校際運(yùn)動會管理系統(tǒng)包括的函數(shù)有:menu();//主菜單(用戶界面)addSchoolInfo();//錄入學(xué)?;拘畔ddAthleteInfo();//錄入運(yùn)動員基本信息addProjectInfo();//錄入比賽成績信息searchSchoolInfo();//查詢學(xué)校信息searchAthleteInfo();//查詢運(yùn)動員信息sortSchool();//學(xué)校成績排序versionInfo();//系統(tǒng)版本信息顯示main();//主函數(shù)系統(tǒng)功能模塊:versionInfo()exit()addSchoolInfo()addAthleteInfo()addProjectInfo()searchSchoolInfo()searchAthleteInfo()sortSchool()menu()main()versionInfo()exit()addSchoolInfo()addAthleteInfo()addProjectInfo()searchSchoolInfo()searchAthleteInfo()sortSchool()menu()main() 詳細(xì)設(shè)計#include<stdio.h>#include<string.h>#defineSCN10#defineATN30//構(gòu)造學(xué)校結(jié)構(gòu)體structschool{ intnum; charname[12]; intf_score; intm_score; intscore;}sc[SCN];//構(gòu)造運(yùn)動員結(jié)構(gòu)體structathlete{ intnum; charsc_name[12]; charname[12]; intsex; intage; charproject[12]; intscore; intrank; ints_score;}at[ATN];intsNo=0;intaNo=0;//菜單voidmenu(){ printf("┏━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n"); printf("┃校級運(yùn)動會管理系統(tǒng)┃\n"); printf("┣━━━━━━━━━━━━━━━━━━━━━━━━━━━┫\n"); printf("┃1.錄入學(xué)校信息2.錄入運(yùn)動員信息┃\n"); printf("┃3.錄入競賽信息4.查詢學(xué)校信息┃\n"); printf("┃5.查詢運(yùn)動員信息6.成績排序┃\n"); printf("┃7.版本信息0.退出系統(tǒng)┃\n"); printf("┗━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n"); printf("\n");}//插入學(xué)校信息的方法voidaddSchoolInfo(){ intn,i=1; printf("請問你要錄入多少個學(xué)校信息:"); scanf("%d",&n); while(n--){ printf("請輸入第%d個學(xué)校編號:",i); scanf("%d",&sc[sNo].num); printf("請輸入第%d個學(xué)校名稱:",i); scanf("%s",sc[sNo].name); printf("第%d個學(xué)校信息錄入完畢。\n",i); i++; sNo++; }}voidaddAthleteInfo(){//插入運(yùn)動員基本信息的方法 intn,i=1; printf("請問你要錄入多少個運(yùn)動員信息:"); scanf("%d",&n); while(n--){ intj,k=1; printf("請輸入第%d個運(yùn)動員編號:",i); scanf("%d",&at[aNo].num); while(k){printf("請輸入第%d個運(yùn)動員所在學(xué)校:",i); scanf("%s",at[aNo].sc_name);for(j=0;j<sNo;j++){if(strcmp(sc[j].name,at[aNo].sc_name)==0){k=0;break;}}if(j>=sNo){printf("運(yùn)動員所在學(xué)校不存在,請確認(rèn)后重新輸入!\n");}} printf("請輸入第%d個運(yùn)動員姓名:",i); scanf("%s",at[aNo].name); printf("請輸入第%d個運(yùn)動員性別(1:男,0:女):",i); scanf("%d",&at[aNo].sex); printf("請輸入第%d個運(yùn)動員年齡:",i); scanf("%d",&at[aNo].age); printf("請輸入第%d個運(yùn)動員參賽項(xiàng)目:",i); scanf("%s",at[aNo].project); printf("第%d個運(yùn)動員信息錄入完畢。\n",i); i++; aNo++; }}//錄入成績的方法voidaddProjectInfo(){ inti,j,flag=1,num,rank,score; while(flag){ printf("請輸入運(yùn)動員編號、名次、成績:"); scanf("%d%d%d",&num,&rank,&score); for(i=0;i<aNo;i++){ if(num==at[i].num){ //按照編號查找對應(yīng)運(yùn)動員 at[i].rank=rank; at[i].score=score; if(rank==1)at[i].s_score=5; //按照名次給予運(yùn)動員相應(yīng)積分 elseif(rank==2)at[i].s_score=3; elseif(rank==3)at[i].s_score=2; elseat[i].s_score=0; for(j=0;j<sNo;j++){ if(strcmp(sc[j].name,at[i].sc_name)==0){ //運(yùn)動員所在學(xué)校匹配 sc[j].score+=at[i].s_score; //對應(yīng)學(xué)校加分 if(at[i].sex==1)sc[j].m_score+=at[i].s_score; elsesc[j].f_score+=at[i].s_score; break; } } break; } } if(i>=aNo){printf("您要插入的學(xué)生不存在!\n");} printf("是否繼續(xù)錄入競賽信息,1:是,0:否。"); scanf("%d",&flag); printf("\n"); }}//查詢學(xué)校信息的方法voidsearchSchoolInfo(){ inti; charname[12]; printf("請輸入要查詢的學(xué)校名稱:"); scanf("%s",name); for(i=0;i<sNo;i++){ printf("%d",i); if(strcmp(name,sc[i].name)==0){ //匹配名字輸出信息 printf("您要查詢的信息如下:\n"); printf("學(xué)校編號:%d\n",sc[i].num); printf("學(xué)校名稱:%s\n",sc[i].name); printf("男子總分:%d\n",sc[i].m_score); printf("女子總分:%d\n",sc[i].f_score); printf("團(tuán)體總分:%d\n",sc[i].score); break; } } if(i>=sNo)printf("您所查詢的信息不存在。\n");}//查詢運(yùn)動員信息的方法voidsearchAthleteInfo(){ inti; charname[12]; printf("請輸入要查詢的運(yùn)動員名稱:"); scanf("%s",name); for(i=0;i<aNo;i++){ if(strcmp(name,at[i].name)==0){ //匹配名字輸出信息 printf("您要查詢的信息如下:\n"); printf("運(yùn)動員編號:%d\n",at[i].num); printf("所在學(xué)校:%s\n",at[i].sc_name); printf("運(yùn)動員姓名:%s\n",at[i].name); if(at[i].sex==1)printf("運(yùn)動員性別:男\(zhòng)n"); elseprintf("運(yùn)動員性別:女\n"); printf("運(yùn)動員年齡:%d\n",at[i].age); printf("運(yùn)動員參賽項(xiàng)目:%s\n",at[i].project); printf("運(yùn)動員成績:%d\n",at[i].score); printf("運(yùn)動員名次:%d\n",at[i].rank); printf("運(yùn)動員積分:%d\n",at[i].s_score); break; } } if(i>=aNo)printf("您所查詢的信息不存在!\n");}//學(xué)校成績排序方法voidsortSchool(){ structschoolsort[SCN],temp; inti,j,c,max; for(i=0;i<sNo;i++){ sort[i]=sc[i]; } printf("請選擇按照排序方式(1:團(tuán)體總分,2:女子總分,3:男子總分):"); scanf("%d",&c); switch(c){ case1: for(i=0;i<sNo;i++){ max=sort[i].score; for(j=i;j<sNo;j++){ if(sort[j].score>max){ max=sort[j].score; temp=sort[i]; sort[i]=sort[j]; sort[j]=temp; } } } for(i=0;i<sNo;i++){ printf("第%d名:%s(分?jǐn)?shù):%d)\n",i+1,sort[i].name,sort[i].score); } break; case2: for(i=0;i<sNo;i++){ max=sort[i].f_score; for(j=i;j<sNo;j++){ if(sort[j].f_score>max){ max=sort[j].f_score; temp=sort[i]; sort[i]=sort[j]; sort[j]=temp; } } } for(i=0;i<sNo;i++){ printf("第%d名:%s(分?jǐn)?shù):%d)\n",i+1,sort[i].name,sort[i].f_score); } break; case3: for(i=0;i<sNo;i++){ max=sort[i].m_score; for(j=i;j<sNo;j++){ if(sort[j].m_score>max){ max=sort[j].m_score; temp=sort[i]; sort[i]=sort[j]; sort[j]=temp; } } } for(i=0;i<sNo;i++){ printf("第%d名:%s(分?jǐn)?shù):%d)\n",i+1,sort[i].name,sort[i].m_score); } break; }}voidversionInfo(){printf("校際運(yùn)動會管理系統(tǒng)\n\n\n");printf("1、需要處理的基礎(chǔ)數(shù)據(jù)\n");printf("學(xué)校信息:學(xué)校編號、學(xué)校名稱、男子競賽項(xiàng)目、女子競賽項(xiàng)目、\n");printf("項(xiàng)目積分、總分等\n");printf("運(yùn)動員信息:運(yùn)動員編號、所屬學(xué)校、姓名、性別、年齡、參賽\n");printf("項(xiàng)目、成績、名次、積分等\n");printf("2、系統(tǒng)的基本功能\n");printf("基本信息輸入:輸入學(xué)校、運(yùn)動員的基本信息\n");printf("競賽信息輸入:\n");printf("(1)根據(jù)運(yùn)動員的參賽項(xiàng)目和獲取名次,自動給予運(yùn)動員相\n");printf("應(yīng)的積分:第1名得分5,第2名得分3,第3名得分2,\n");printf("其他名次不得分;\n");printf("(2)根據(jù)運(yùn)動員所屬的學(xué)校,自動給學(xué)校的相應(yīng)競賽項(xiàng)目加\n");printf("上積分;\n");printf("信息查詢:\n");printf("(1)查詢學(xué)校信息\n");printf("(2)查詢運(yùn)動員信息\n");printf("成績排序:\n");printf("按照分?jǐn)?shù)從高到低,對學(xué)校的團(tuán)體名次、學(xué)校的男子或女\n");printf("子競賽名次進(jìn)行排序。\n\n\n");printf("設(shè)計者:\n");printf("指導(dǎo)老師:\n");printf("中南大學(xué)\n");printf("2012年06月21日\n");}intmain(){ intset,flag=1; while(flag){ menu(); printf("請輸入你的選擇:"); scanf("%d",&set); switch(set){ case1:addSchoolInfo();break; case2:addAthleteInfo();break; case3:addProjectInfo();break; case4:searchSchoolInfo();break; case5:searchAthleteInfo();break; case6:sortSchool();break; case7:versionInfo();break; case0:flag=0; } }}功能介紹,數(shù)據(jù)結(jié)構(gòu)及用法說明main()是整個系統(tǒng)的主函數(shù),設(shè)置了用戶的主界面,用戶進(jìn)入界面可以通過選擇進(jìn)入各個子系統(tǒng)。用switch語句來對界面操作。menu()是系統(tǒng)的主界面,全部通過printf來實(shí)現(xiàn)。通過主函數(shù)對menu()的操作,用戶可以按照自己的需求選擇子系統(tǒng):1選項(xiàng)是錄入學(xué)校的基本信息2選項(xiàng)是錄入運(yùn)動員的基本信息3選項(xiàng)是錄入運(yùn)動員的成績情況4選項(xiàng)查詢學(xué)校信息5選項(xiàng)查詢運(yùn)動員信息6選項(xiàng)對學(xué)校排名用選擇排序法進(jìn)行排序并按名次顯示7選項(xiàng)顯示整個系統(tǒng)的版本信息8選項(xiàng)退出整個系統(tǒng)addSchoolInfo()是系統(tǒng)錄入學(xué)校信息的函數(shù),用輸入函數(shù)scanf()和輸出函數(shù)printf完成??梢砸淮芜x擇輸入多少個學(xué)校的信息。addAthleteInfo()是系統(tǒng)錄入運(yùn)動員基本信息的函數(shù),運(yùn)用C語言的strcmp()函數(shù)對學(xué)生的學(xué)校名和已錄入的學(xué)校名進(jìn)行匹配,當(dāng)學(xué)生的學(xué)校名在系統(tǒng)中找不到時,系統(tǒng)會提示,從而提高系統(tǒng)的安全性。addProjectInfo()是系統(tǒng)運(yùn)動員成績情況插入的函數(shù),由于運(yùn)動員的名字可能重名,所以采用運(yùn)動員編號的形式對運(yùn)動員成績進(jìn)行插入,保證了成績的唯一性,按照名次給予運(yùn)動員相應(yīng)的積分,同樣用strcmp()函數(shù)匹配運(yùn)動員對應(yīng)的學(xué)校,從而給對應(yīng)的學(xué)校添加相應(yīng)的積分以便于在sortScho

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論