校運動會管理系統_第1頁
校運動會管理系統_第2頁
校運動會管理系統_第3頁
校運動會管理系統_第4頁
校運動會管理系統_第5頁
已閱讀5頁,還剩48頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、精選優質文檔-傾情為你奉上C語言課程設計 學 校 運 動 會 管理系統 專業:網絡工程 班級:網133 報告人:王先海 劉隨心 葛 翔 指導老師:陶陶 報告日期:2014年12月13號一、 需求分析1、 問題描述: 建立運動員信息系統,包括運動員、裁判員以及運動信息的成績管理,運動員信息為編號、姓名、身份信息(教師、學生)、參加的比賽項目等;裁判員信息為編號、姓名、身份信息(教師、學生)、裁判的項目;運動會信息包含各個比賽項目的信息、時間安排、裁判信息、比賽成績等。2、功能要求:(1)各種運動信息需要利用文件的形式進行存儲。(2)輸入功能:可以從鍵盤或文件中一次性輸入多條信息;(3)輸出功能:

2、可將運動員、裁判員、以及比賽信息打印輸出或顯示;(4)查找功能:根據運動員、裁判員等查找出所需要的比賽信息;(5)增加、刪除、修改功能:完成運動員信息的多種更新;(6)統計功能:完成各類比賽信息的統計功能,例如某項比賽的名詞排名,各個運動員的積分成績統計等。二、 總體設計1、 將學校運動會管理系統系統進行模塊化分析學校運動會管理系統 統計功能查找功能增加刪除修改功能輸出功能輸入功能 輸出全部比賽項目輸出單項比賽信息比賽信息模塊按姓名刪除運動員信息搜索姓名修改運動員信息搜索號碼修改運動員信息按姓名查找運動員信息按號碼查找運動員信息增加運動員信息輸出全部運動員信息學生功能模塊按姓名查詢裁判員信息裁

3、判員功能模塊輸出全部裁判員信息學校運動會管理系統三、 詳細設計本程序包含除main函數外包含20個函數:menu()、menu2()、reads(struct athletes athN) 、reads1(struct referee refN)、reads2(struct All_the_events sportN) 、save(struct athletes athN,int n)、 show_athletes()、how_referee()、add()、According_to_the_number_to_find_players_information ()、According_to_

4、the_name_to_find_players_information ()、According_to_the_number_to_Modify_the_players_information ()、According_to_the_name_to_Modify_the_players_information ()、According_to_the_name_to_delete_the_players_information ()、According_to_the_name_to_find_referee_information ()、show_all_events () 、Output_o

5、n_a_single_information ()、 sort()、keep() 、sheep()。此外還定義了三個結構體類型:struct athletes、struct referee、struct All_the_events。函數名功能入口出口調用關系menu()輸出菜單選項該函數無形參printf()輸出信息,無返回值在main()中被反復調用menu2()輸出輸出單項比賽信息菜單選項該函數無形參printf()輸出信息,無返回值在main()中被反復調用reads(struct athletes athN)讀取運動員文件中的內容形參結構體struct athletes athNre

6、turn i在需要運動員數據時被調用reads1(struct referee refN)讀取裁判員取文件中的內容形參結構體struct referee refNreturn i在需要裁判員數據時被調用reads2(struct All_the_events sportN)讀取全部比賽項目文件中的內容形參結構體struct All_the_events sportNreturn i在需要全部比賽項目數據時被調用save(struct athletes athN,int n)運動員信息改變后更新文件形參結構體struct athletes athN ,int n將運動員信息存入文件,無返回值在文

7、件需要被保存時調用show_athletes()輸出全部運動員信息該函數無形參printf()輸出信息,無返回值在main()中被反復調用add()增加運動員信息 該函數無形參printf()輸出信息,無返回值在main()中被反復調用According_to_the_number_to_find_players_information ()按號碼查找運動員信息該函數無形參printf()輸出信息,無返回值在main()中被反復調用According_to_the_name_to_find_players_information ()按姓名查找運動員信息該函數無形參printf()輸出信息,無

8、返回值在main()中被反復調用According_to_the_number_to_Modify_the_players_information ()搜索號碼修改運動員信息該函數無形參printf()輸出信息,無返回值在main()中被反復調用According_to_the_name_to_Modify_the_players_information ()搜索姓名修改運動員信息該函數無形參printf()輸出信息,無返回值在main()中被反復調用According_to_the_name_to_delete_the_players_information ()按姓名刪除該運動員信息該函數

9、無形參在main()中被反復調用show_referee()輸出全部裁判員信息該函數無形參printf()輸出信息,無返回值在main()中被反復調用According_to_the_name_to_find_referee_information ()按姓名查找裁判員信息該函數無形參printf()輸出信息,無返回值在main()中被反復調用show_all_events ()輸出輸出全部比賽項目該函數無形參printf()輸出信息,無返回值在main()中被反復調用Output_on_a_single_information ()輸出單項比賽信息該函數無形參printf()輸出信息,無返回

10、值在main()中被反復調用sort()按百米賽跑成績排名該函數無形參printf()輸出信息,無返回值在main()中被反復調用keep()按三級跳成績排名該函數無形參printf()輸出信息,無返回值在main()中被反復調用sheep()按撐桿跳成績排名該函數無形參printf()輸出信息,無返回值在main()中被反復調用4、 調試與測試 1、測試目的:測試出每個調用函數存在的數據調用錯誤,在分步調試的過程中檢查出所用語句的錯誤,在檢查程序的過程中盡量做出一定的更改,已達到讓程序更加簡潔的目的。2、測試方法:對每一個調用的函數進行分步調試,之后再運行成功后根據運行結果對源程序做出相應的

11、更改。3、測試錯誤:a. 搜索號碼修改運動員信息時,發現文件被刪除 b. 按三級跳成績排名時,發現有數據被后面的數據覆蓋 c.等等 4、解決措施:a.我還沒找到方法耶。b.將結構體 struct All_the_events中的 char place10改成char place20五、測試結果1、 輸出菜單2、 增加運動員信息3、輸出全部運動員信息4、按號碼查找運動員信息5、按姓名查找運動員信息6、輸出全部裁判員信息 7、按姓名查詢裁判員信息8、輸出全部比賽項目9、輸出單項比賽信息6、用戶手冊:進入輸出菜單選項界面->一般最開選擇操作2,先增加運動員信息->再根據用戶需求選擇操作-

12、>最后選擇操作13,退出系統。7、附錄(源代碼)#include<stdio.h> #include<stdlib.h> #include <string.h>/#include<conio.h> #define N 20 struct athletes char num20; char name10;char Identity_information 10;float baimi; float sanjitiao; float chenggantiao; ; struct referee char num20;char name10;ch

13、ar Identity_information 10;char baimi10; char sanjitiao10; char chenggantiao10; ;struct All_the_eventschar sport_name10;char time20;char referee10;char place20;void menu(); /輸出菜單選項 void menu2() ;/輸出輸出單項比賽信息菜單選項int reads(struct athletes athN);/ 讀取運動員文件中的內容 int reads1(struct referee refN); / 讀裁判員取文件中的

14、內容int reads2(struct All_the_events sportN); / 讀取全部比賽項目文件中的內容void save(struct athletes athN,int n); / 運動員信息改變后更新文件 void show_athletes(); / 輸出全部運動員信息void show_referee(); / 輸出全部裁判員信息void add();/增加運動員信息 void According_to_the_number_to_find_players_information (); /按號碼查找運動員信息 void According_to_the_name_t

15、o_find_players_information (); /按姓名查找運動員信息 void According_to_the_number_to_Modify_the_players_information (); /搜索號碼修改運動員信息void According_to_the_name_to_Modify_the_players_information (); /搜索號碼姓名修改運動員信息void According_to_the_name_to_delete_the_players_information (); /按姓名刪除該運動員信息 void According_to_the

16、_name_to_find_referee_information (); /按姓名查找裁判員信息 void show_all_events () ;/ 輸出輸出全部比賽項目void Output_on_a_single_information ();/輸出單項比賽信息void sort(); / 按百米賽跑成績排名void keep() ;/ 按三級跳成績排名void sheep(); / 按撐桿跳成績排名void main() int n; while(1) menu(); printf("n 請輸入您要選擇的操作序號,按回車鍵確認:"); scanf("%d

17、",&n);switch(n) case 1: show_athletes();break; case 2: add();break; case 3: According_to_the_number_to_find_players_information ();break; case 4: According_to_the_name_to_find_players_information ();break; case 5: According_to_the_number_to_Modify_the_players_information ();break; case 6: A

18、ccording_to_the_name_to_Modify_the_players_information ();break; case 7: According_to_the_name_to_delete_the_players_information ();break; case 9: show_referee();break;case 10:According_to_the_name_to_find_referee_information ();break;case 11:show_all_events () ;break;case 12:Output_on_a_single_info

19、rmation ();break;case 13: exit(0);default: printf("輸入錯誤,請輸入列表中存在的序號!n "); void menu() /輸出菜單選項 printf(" * n"); printf(" *運動會管理系統* n"); printf(" * n"); printf(" 【1】輸出全部運動員信息 n"); printf(" n");printf(" 【2】增加運動員信息 n"); printf(" n

20、"); printf(" 【3】按號碼查找運動員信息 n"); printf(" n"); printf(" 【4】按姓名查找運動員信息 n"); printf(" n");printf(" 【5】搜索號碼修改運動員信息 n");printf(" n");printf(" 【6】搜索姓名修改運動員信息 n");printf(" n");printf(" 【7】按姓名刪除運動員信息 n");printf(&q

21、uot; n");printf(" 【8】運動員積分排名 n");printf(" n");printf(" 【9】輸出全部裁判員信息 n");printf(" n");printf(" 【10】按姓名查詢裁判員信息 n");printf(" n");printf(" 【11】輸出全部比賽項目 n");printf(" n");printf(" 【12】輸出單項比賽信息 n");printf("

22、n");printf(" 【13】退出系統 n");printf(" n");void menu2() /輸出輸出單項比賽信息菜單選項 printf(" * n"); printf(" * 單項比賽信息 *n"); printf(" * n"); printf(" 【1】百米賽跑 n"); printf(" n");printf(" 【2】三級跳 n"); printf(" n"); printf(&quo

23、t; 【3】撐桿跳 n"); printf(" n"); printf(" 【4】退出系統 n");printf(" n");int reads(struct athletes athN) / 讀取運動員文件中的內容FILE *fp;int i=0;if(fp=fopen("f:程序設計athletes.txt","r")=NULL) printf("文件打開失敗!n"); return 0; else for(i=0;!feof(fp);i+) fscanf(fp

24、,"%s %s %s %f %f %fn",athi.num,,athi.Identity_information,&athi.baimi,&athi.sanjitiao,&athi.chenggantiao); fclose(fp); return i; int reads1(struct referee refN) / 讀取裁判員取文件中的內容FILE *fp;int i=0;if(fp=fopen("f:程序設計referee.txt","r")=NULL) printf("文

25、件打開失敗!n"); return 0; else for(i=0;!feof(fp);i+) fscanf(fp,"%s %s %s %s %s %sn",refi.num,,refi.Identity_information,refi.baimi,refi.sanjitiao,refi.chenggantiao); fclose(fp); return i; int reads2(struct All_the_events sportN) / 讀取全部比賽項目文件中的內容FILE *fp;int i=0;if(fp=fopen("f

26、:程序設計All_the_events.txt","r")=NULL) printf("文件打開失敗!n"); return 0; else for(i=0;!feof(fp);i+) fscanf(fp,"%s %s %s %sn",sporti.sport_name,sporti.time,sporti.referee,sporti.place); fclose(fp); return i; void save(struct athletes athN,int n) / 運動員信息改變后更新文件 FILE *fp; in

27、t i=0; if(fp=fopen("f:程序設計athletes.txt","w")=NULL) printf("文件打開失敗!n");return ; else for(i=0;i<n;i+) printf("%s %s %s %f %f %fn",athi.num,,athi.Identity_information,athi.baimi,athi.sanjitiao,athi.chenggantiao); fclose(fp); void show_athletes() / 輸出全

28、部運動員信息 struct athletes athN; int i,n; n=reads(ath); printf("*所有的學生信息如下*nn"); printf(" 序號 號碼 姓名 身份 百米賽跑(s) 三級跳(m) 撐桿跳(m) n"); printf("*n"); for(i=0;i<n;i+) printf("n%3d%12s%8s%8s%10.1f%12.1f%12.1fn",i+1,athi.num,,athi.Identity_information,athi.baimi

29、,athi.sanjitiao,athi.chenggantiao); getch(); void add()/增加運動員信息 FILE *fp; int n,i; struct athletes ath; if(fp=fopen("f:程序設計athletes.txt","a")=NULL) /如果文件已經存在,可以追加學生信息 if(fp=fopen("f:程序設計athletes.txt","w")=NULL) / 文件不存在時,創建新文件,輸入學生信息 printf("文件打開失敗!n"

30、); return; printf("請輸入要添加的運動員數量,按回車鍵確認:"); scanf("%d",&n); for(i=1;i<=n;i+) printf("n請輸入第%d個運動員的號碼、姓名、身份,用空格分開,并按回車鍵確認:n",i); scanf("%s%s%s",ath.num,,ath.Identity_information); printf("n請輸入第%d個運動員的百米賽跑(單位:s)、三級跳(單位:m)和撐桿跳(單位:m)三項成績,用空格分開,沒參

31、加的項目用0表示,并按回車鍵確認:n",i); scanf("%f%f%f",&ath.baimi,&ath.sanjitiao,&ath.chenggantiao); fprintf(fp,"%s %s %s %f %f %fn",ath.num,,ath.Identity_information,ath.baimi,ath.sanjitiao,ath.chenggantiao); fclose(fp); void According_to_the_number_to_find_players_info

32、rmation () /按號碼查找運動員信息 struct athletes athN; int n,i; char number20; printf("n請輸入要查找運動員的號碼,按回車鍵確認:"); scanf("%s",number); n=reads(ath); for(i=0;i<n;i+) if(strcmp(number,athi.num)=0) break; if(i>=n) printf("無此學生信息!"); return; printf("n現輸出該運動員的號碼,姓名,身份,百米賽跑、三級跳

33、、撐桿跳三門成績,按回車鍵確認:n");printf(" 序號 號碼 姓名 身份 百米賽跑 三級跳 撐桿跳 n"); printf("*n"); printf("n%3d%12s%11s%11s%11.2f%12.2f%11.2fn",i+1,athi.num,,athi.Identity_information,athi.baimi,athi.sanjitiao,athi.chenggantiao); void According_to_the_name_to_find_players_informati

34、on () /按姓名查找運動員信息 struct athletes athN; int n,i; char name20; printf("n請輸入要查找運動員的姓名,按回車鍵確認:"); scanf("%s",name); n=reads(ath); for(i=0;i<n;i+) if(strcmp(name,)=0) break; if(i>=n) printf("無此學生信息!"); return; printf("n現輸出該運動員的號碼,姓名,身份,百米賽跑、三級跳、撐桿跳三門成績,按

35、回車鍵確認:n");printf(" 序號 號碼 姓名 身份 百米賽跑 三級跳 撐桿跳 n"); printf("*n");printf("n%3d%12s%11s%11s%11.2f%12.2f%11.2fn",i+1,athi.num,,athi.Identity_information,athi.baimi,athi.sanjitiao,athi.chenggantiao); void According_to_the_number_to_Modify_the_players_information

36、() /搜索號碼修改運動員信息 struct athletes athN; int n,i; char number20; printf("n請輸入要更改信息的運動員號碼,按回車鍵確認:"); scanf("%s",number); n=reads(ath); for(i=0;i<n;i+) if(strcmp(number,athi.num)=0) break; if(i>=n) printf("無此運動員信息!"); return; printf("n請輸入更改后運動員的號碼,姓名,身份,百米賽跑、三級跳、撐

37、桿跳三門成績,按回車鍵確認:n"); scanf("%s%s%s%f%f%f",athi.num,,athi.Identity_information,&athi.baimi,&athi.sanjitiao,&athi.chenggantiao);save(ath,n); void According_to_the_name_to_Modify_the_players_information () /搜索姓名修改運動員信息 struct athletes athN; int n,i; char name20; printf

38、("n請輸入要更改信息的運動員姓名,按回車鍵確認:"); scanf("%s",name); n=reads(ath); for(i=0;i<n;i+) if(strcmp(name,)=0) break; if(i>=n) printf("無此運動員信息!"); return; printf("n請輸入更改后運動員的號碼,姓名,身份,百米賽跑(單位:s)、三級跳(單位:m)和撐桿跳(單位:m)三項成績,用空格分開,沒參加的項目用0表示,并按回車鍵確認:n"); scanf("

39、;%s%s%s%f%f%f",athi.num,,athi.Identity_information,&athi.baimi,&athi.sanjitiao,&athi.chenggantiao);save(ath,n); void According_to_the_name_to_delete_the_players_information () /按姓名刪除該運動員信息 struct athletes athN; char name20;int n,i,j; n=reads(ath); printf("n請輸入要刪除信息運動員姓

40、名,按回車鍵確認:"); scanf("%s",name); for(i=0;i<n;i+) if(strcmp(name,)=0)break; if(i>=n) printf("沒有找到該運動員信息!n"); return; else for(j=i+1;j<n;j+) athj-1=athj; save(ath,n-1); printf("刪除成功!n"); void show_referee() / 輸出全部裁判員信息 struct referee refN; int i,n; n=

41、reads1(ref); printf("*所有的裁判員信息如下*nn"); printf(" 序號 號碼 姓名 身份 百米賽跑 三級跳 撐桿跳 n"); printf("*n"); for(i=0;i<n;i+) printf("n%3d%8s%8s%8s%10s%8s%8sn",i+1,refi.num,,refi.Identity_information,refi.baimi,refi.sanjitiao,refi.chenggantiao); getch(); void Accord

42、ing_to_the_name_to_find_referee_information () /按姓名查找裁判員信息 struct referee refN; int n,i; char name20; printf("n請輸入要查找裁判員的姓名,按回車鍵確認:"); scanf("%s",name); n=reads1(ref); for(i=0;i<n;i+) if(strcmp(name,)=0) break; if(i>=n) printf("無此裁判員信息!"); return; printf(

43、"*現輸出該裁判員信息如下*nn"); printf(" 序號 號碼 姓名 身份 百米賽跑 三級跳 撐桿跳 n"); printf("*n"); printf("n%3d%8s%8s%8s%10s%8s%8sn",i+1,refi.num,,refi.Identity_information,refi.baimi,refi.sanjitiao,refi.chenggantiao); void show_all_events () / 輸出輸出全部比賽項目 struct All_the_events

44、 sportN; int i,n; n=reads2(sport); printf("*輸出全部比賽項目*nn"); printf(" 序號 比賽項目 比賽時間 裁判員 比賽地點n"); printf("*n"); for(i=0;i<n;i+) printf("n%3d%12s%10s%11s%13sn",i+1,sporti.sport_name,sporti.time,sporti.referee,sporti.place); getch(); void Output_on_a_single_infor

45、mation ()/輸出單項比賽信息int n; while(1) menu2(); printf("n 請輸入您要選擇的操作序號,按回車鍵確認:"); scanf("%d",&n);switch(n) case 1: sort();break; case 2: keep();break; case 3: sheep();break; case 4: exit(0);default: printf("輸入錯誤,請輸入列表中存在的序號!n "); void sort() / 按百米賽跑成績排名struct athletes athN,temp; int i,j,n; n=reads(ath); for(i=0;i<n-1;i+) for(j=0;j<n-1;j+) if(athj.baimi>athj+1.baimi)temp=athj;athj=athj+1;athj+1=temp;save(ath,n);j=1; printf("*百米賽跑成績排序結果如下*nn"); printf(" 名次 號碼 姓名 身份 百米賽跑(s)n"); printf("

溫馨提示

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

評論

0/150

提交評論