計算機科學(xué)與技術(shù)課程設(shè)計 運動會成績管理系統(tǒng)設(shè)計_第1頁
計算機科學(xué)與技術(shù)課程設(shè)計 運動會成績管理系統(tǒng)設(shè)計_第2頁
計算機科學(xué)與技術(shù)課程設(shè)計 運動會成績管理系統(tǒng)設(shè)計_第3頁
計算機科學(xué)與技術(shù)課程設(shè)計 運動會成績管理系統(tǒng)設(shè)計_第4頁
計算機科學(xué)與技術(shù)課程設(shè)計 運動會成績管理系統(tǒng)設(shè)計_第5頁
已閱讀5頁,還剩20頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、程序設(shè)計課程設(shè)計報告(2012)程序設(shè)計課程設(shè)計報告( 2012 - 2013 年度第 一 學(xué)期)運動會成績管理系統(tǒng)專業(yè)計算機科學(xué)與技術(shù)學(xué)生姓名吳小會班級m計算機112學(xué)號1151401225指導(dǎo)教師王 榕完成日期2012年9 月 13日1目 錄1 概 述11.1 課程設(shè)計目的11.2 課程設(shè)計內(nèi)容12 系統(tǒng)總體設(shè)計12.1 系統(tǒng)目標12.2 主體功能22.3 系統(tǒng)流程32.4 開發(fā)環(huán)境43系統(tǒng)詳細設(shè)計43.1系統(tǒng)主界面設(shè)計43.2錄入修改成績模塊設(shè)計43.3成績查詢模塊設(shè)計53.4成績排序模塊設(shè)計74 測試84.1 測試方案84.2 測試結(jié)果85 小結(jié)9參考文獻10附 錄11附錄1 源程序清

2、單11附錄1.1輸入運動員的基本信息、輸出運動員的基本信息模塊源程序21附錄1.2 查找運動員比賽成績模塊源程序21附錄1.3排序模塊源程序223運動會成績管理系統(tǒng)的設(shè)計與實現(xiàn)1 概 述 1.1 課程設(shè)計目的1、鞏固并加深對c語言程序設(shè)計知識的理解;2、掌握和提高c語言編程和程序調(diào)試的基本技能;3、進一步理解和運用結(jié)構(gòu)化程序設(shè)計的思想和方法;4、提高運用c語言解決實際問題的能力; 5、初步掌握開發(fā)小型實用軟件的基本方法;6、掌握書寫程序設(shè)計開發(fā)文檔的能力(書寫課程設(shè)計實驗報告)。1.2 課程設(shè)計內(nèi)容課題名稱:運動會成績管理系統(tǒng)說明:運動會的基本項目包括:100米,鉛球,跳高,跳遠要求:(1)

3、系統(tǒng)的操作界面,有提示用戶如何操作;(2) 從鍵盤可以將學(xué)生的各個運動項目的成績輸入;(3) 運動會的錄入成績可以通過查詢方式(通過運動員姓名)在屏幕上顯示出來;(4) 程序具有修改輸入資料的功能;(5) 程序?qū)崿F(xiàn)對文件的讀取和寫入操作;(6) 程序具有對某一運動會項目的名次進行排序,使其按降序排列;(7) 每一項目都有對應(yīng)的折合分數(shù),程序可以計算出所有代表隊的比賽總得分,并將各隊按總得分降序排列;比如:甲隊獲得100米的第三名折合分數(shù)為1;獲得鉛球的第一名折合分數(shù)為3;獲得跳高的第一名折合分數(shù)為1;獲得跳遠的第一名折合分數(shù)為3;則甲隊的總得分為:1+3+1+3=8;(8) 程序要求可以將各個

4、參賽隊的所有隊員中成績?nèi)匡@示出來;(9) 程序可以運用運動員的姓名來查詢該隊員的此次運動會的所有項目成績。2 系統(tǒng)總體設(shè)計2.1 系統(tǒng)目標實現(xiàn)對運動員成績輸入功能以及修改輸入資料功能,但是在輸入修改功能時加一項加密功能使其僅限于管理員使用。對于運動員再輸入姓名之后可以查詢該運動員的報名項目、歸屬何隊、比賽成績以及排名。要對每一隊每名運動員參加項目的比賽成績進行累加并對三隊總成績的累加進行排序。當(dāng)運動員查詢自己成績情況后可以查詢該隊的所有隊員以及總成績排名。實現(xiàn)對系統(tǒng)的讀取和寫入操作。2.2 主體功能運動會成績管理系統(tǒng)輸入運動員比賽成績成績情況查詢修改輸入資料運動員比賽成績查詢代表隊總得分查詢

5、圖2-1 系統(tǒng)功能模塊圖2.3 系統(tǒng)流程輸入運動員所在隊及贏得的分數(shù)輸入運動員參加項目成績開始初始化輸入y修改ynn成績查詢查詢運動員成績情況查詢團體成績繼續(xù)結(jié)束退出輸入運動員參加項目成績輸入運動員所在隊及贏得的分數(shù)輸入各隊比才成績輸出運動員參加項目、所屬隊為隊贏得分數(shù)和比賽名次輸出隊中所有成員和各隊成績排名圖3-1系統(tǒng)流程圖2.4 開發(fā)環(huán)境該程序通過turbo c&c+3.0軟件集成開發(fā)3系統(tǒng)詳細設(shè)計3.1系統(tǒng)主界面設(shè)計menu() 圖3-1 系統(tǒng)主界面 其基本功能如下: 當(dāng)打開學(xué)校或者學(xué)生信息錄入時系統(tǒng)會彈出運動會主要信息錄入提醒。當(dāng)打開運動員成績查詢系統(tǒng)會顯示輸入學(xué)生姓名和學(xué)號,學(xué)生開始

6、正式查詢可了解到該學(xué)生比賽項目、比賽成績、所屬隊及為代表隊贏得得分數(shù)。3.2錄入修改成績模塊設(shè)計成績錄入模塊的功能流程圖開始輸入運動員資料增加資料yyynnn修改資料刪除資料結(jié)束請輸入家的數(shù)量ni=n請增加i=i+1失敗修改的學(xué)號in失敗請修改nyynn刪除的學(xué)號in失敗刪除成功ny圖5-1成績錄入、增加、修改流程圖3.3成績查詢模塊設(shè)計成績查詢模塊的功能流程圖。開始輸入比賽項目賽跑yyyyyyynnnnnn輸入學(xué)號姓名i=1ini=i+1跳遠i=1i=1inini=i+1i=i+1跳高i=1鉛球i=i+1innyn結(jié)束輸出成績圖6-1成績查詢流程圖3.4成績排序模塊設(shè)計成績排序模塊的功能流程

7、圖開始定義i、j、n讀取ni=0in-1i=i+1yyynnnj=n-1jn-1j=j+1stujstuj+1temp=stujstuj=stuj+1stuj+1=tempj=1輸出排序結(jié)果結(jié)束圖7-1成績排序流程圖4 測試測試是采用測試用例執(zhí)行軟件的活動。測試有兩個顯著目標:找出失效,或演示正確的執(zhí)行。在對每個模塊的編碼后,對程序本身,采用結(jié)構(gòu)性測試的方法,主要是采用路徑測試的方法。在將各個模塊集成后,采用功能性測試的方法,主要是采用劃分等價類的方法,從輸入的正確和錯誤兩個方面分別設(shè)計不同的測試用例,測試過程和結(jié)果如下。4.1 測試方案測試方案一:對運動員成績排序測試 圖8-1運動員排名界面

8、當(dāng)輸入排序程序時,顯示各個運動員的比賽成績測試方案二:顯示運動員成績測試 圖8-2得分規(guī)則顯示界面4.2 測試結(jié)果測試結(jié)果一:a、 問題:每次在運行時輸入兩個以上的項目便不能出正確結(jié)果。發(fā)現(xiàn)過程:通過對程序的單步執(zhí)行監(jiān)視,發(fā)現(xiàn)在執(zhí)行完stujnextptr 被意外的修改。解決辦法:將newptr =malloc (sizeof (bodyptr) 改為 newptr =malloc (sizeof (body)。 測試結(jié)果二:錯誤主要是在輸入字符時使用的是中文輸入,只要改成英文輸入就行了;注意“”使用要完整等等。不過在我編寫程序時遇到的最大的困難還是在輸入文件模塊,因為對這個知識點掌握不好,后

9、來經(jīng)過查閱資料終于弄清楚了。5 小結(jié)總體來說此次程序設(shè)計寫得特別吃力感覺什么都不會有一些生疏的詞以前都沒有聽過。好像感覺自己之前學(xué)的c語言都白學(xué)了,以前上課老師只要我們寫一些比較簡單的小程序感覺還好,現(xiàn)在突然寫一個成績管理系統(tǒng)開始的時候感覺不知所措不知道從何入手。后來到圖書館查詢和網(wǎng)上搜索才深入的了解c語言,漸漸的就有了一些想法。要想編寫出一個優(yōu)秀的需求軟件,前期的需求分析是相當(dāng)重要的工作,而且在系統(tǒng)設(shè)計的過程中,對c語言又進行了一次系統(tǒng)的學(xué)習(xí)。在設(shè)計信息代碼的時候,將功能分到不同的類中實現(xiàn),在編碼的時候,多次在小問題上卡住,但最后還是在自己的思考和向其他同學(xué)請教、相互討論之后,將問題解決掉。

10、可以說這二個星期的綜合設(shè)計,讓我學(xué)習(xí)到了很多很多。經(jīng)過這兩個星期的學(xué)習(xí)我體會比較多,深深地感到自己有許多的不足。以前學(xué)專業(yè)課時并沒有調(diào)整好自己的心態(tài)以為考試只要過就行了課后自己也沒有練習(xí),現(xiàn)在才認識到我這種態(tài)度的嚴重性。以后我要把我所學(xué)的放入實踐中經(jīng)常體會各種題目的意義所在,為自己以后找工作打下有利基礎(chǔ)。23參考文獻1譚浩強.c程序設(shè)計(第二版)m.北京:清華大學(xué)出版社,2012. 2譚浩強.c程序設(shè)計題解與上機指導(dǎo)(第二版)m.北京:清華大學(xué)出版社,2012.3明日科技.c語言程序開發(fā)范例寶典m.北京:人民郵電出版社,2010.4王一萍 梁偉 金梅.c程序設(shè)計與項目實踐m. 北京:清華大學(xué)出

11、版社,2011.附 錄附錄1 源程序清單#include#include#includeconio.h#definen20struct studentchar num20;char name10;float baimi;float tiaoyuan;float tiaogao;float qianqiu;void menu();int reads(struct student stun);void save(struct student tstun,int n);void add();void del();void sort();void keep();void sheep();void qi

12、anq();void query();void show();void change();void main()int n;while(1)menu();printf(n請輸入您要選擇的操作序號,按回車鍵確認:);scanf(%d,&n);switch(n)case1:add();break;case2:show();break;case3:del();break;case4:change();break;case5:sort();break;case6:keep();break;case7:sheep();break;case8:qianq();break;case9:exit(0);def

13、ault:printf(輸入錯誤,請輸入列表中存在的序號!n);void menu()printf(*運動員成績管理系統(tǒng)*);printf(n1添加運動員數(shù)據(jù));printf(n2顯示運動員數(shù)據(jù));printf(n3刪除運動員數(shù)據(jù));printf(n4更改運動員數(shù)據(jù));printf(n5百米成績排序);printf(n6跳遠成績排序);printf(n7跳高成績排序);printf(“n8鉛球成績排序”);printf(n9退出);printf(n(_)(_)(_)(_)(_)(_)(_);int reads(struct student stu n)/讀取運動員文件中的內(nèi)容file*fp;i

14、nt i=0;if(fp=fopen(e:student.txt,r)=null)printf(文件打開失??!n);return0;elsefor(i=0;!feof(fp);i+)fscanf(fp,%s%s%f%f%fn,stui.num,,&stui.baimi,&stui.tiaoyuan,&stui.tiaogao,&stui,qianqiu);fclose(fp);return i;void save(struct student stun,int n) /運動員信息改變后更新文件file*fp;int i=0;if(fp=fopen(e:student.txt,

15、w)=null)printf(文件打開失??!n);return;elsefor(i=0;in;i+)fprintf(fp,%s%s%f%f%fn,stui.num,,stui.baimi,stui.tiaoyuan,stui.tiaogao,stui,qianqiu);fclose(fp);void add()/*添加運動員信息*/file*fp;int n,i;struct student stu;if(fp=fopen(e:student.txt,a)=null)/如果文件已經(jīng)存在,可以追加學(xué)生信息if(fp=fopen(e:student.txt,w)=null)/文件

16、不存在時,創(chuàng)建新文件,輸入學(xué)生信息printf(文件打開失敗!n);return;printf(請輸入要添加的運動員數(shù)量,按回車鍵確認:);scanf(%d,&n);for(i=1;i=n;i+)printf(n請輸入第%d個運動員的號碼、姓名,用空格分開,并按回車鍵確認:n,i);scanf(%s%s,stu.num,);printf(n請輸入第%d個運動員的百米賽跑、跳遠和跳高、鉛球四項成績,用空格分開,并按回車鍵確認:n,i);scanf(%f%f%f,&stu.baimi,&stu.tiaoyuan,&stu.tiaogao,&stu,qianqiu);fprintf(

17、fp,%s%s%f%f%fn,stu.num,,stu.baimi,stu.tiaoyuan,stu.tiaogao.stu,qianqiu);fclose(fp);void show()/運動員信息顯示函數(shù)struct student stun;inti,n;n=reads(stu);printf(*所有的學(xué)生信息如下*nn);printf(序號號碼姓名百米賽跑跳遠跳高鉛球n);printf(*n);for(i=0;in;i+)printf(n%3d%12s%11s%11.2f%12.2f%11.2fn,i+1,stui.num,,stui.baimi,st

18、ui.tiaoyuan.stui.tiaogao.stui,qianqiu);getch();void del()/*運動員信息刪除函數(shù)*/struct student stun;char number20;int n,i,j;n=reads(stu);printf(n請輸入要刪除信息運動員號碼,按回車鍵確認:);scanf(%s,number);for(i=0;i=n)printf(沒有找到該運動員信息!n);return;elsefor(j=i+1;jn;j+)stuj-1=stuj; save(stu,n-1);printf(刪除成功!n);void change()/學(xué)生信息更改str

19、uct student stun;int n,i;char number20;printf(n請輸入要更改信息的學(xué)生學(xué)號,按回車鍵確認:);scanf(%s,number);n=reads(stu);for(i=0;i=n)printf(無此學(xué)生信息!);return;printf(n請輸入更改后學(xué)生的號碼,姓名,百米賽跑、跳遠、跳高、鉛球四門成績,按回車鍵確認:n);scanf(%s%s%f%f%f,stui.num,,&stui.baimi,&stui.tiaoyuan,&stui.tiaogao,&stui,qianqiu);save(stu,n);void sort(

20、)/按百米賽跑成績排名struct student stun,temp;int i,j,n;n=reads(stu);for(i=0;in-1;i+)for(j=0;jn-1;j+)if(stuj.baimistuj+1.baimi)temp=stuj;stuj=stuj+1;stuj+1=temp;save(stu,n);j=1;printf(*百米賽跑成績排序結(jié)果如下*nn);printf(名次號碼姓名百米賽跑成績n);printf(*n);for(i=0;in;i+)/輸出結(jié)果并排名if(stui.baimi=stui+1.baimi)printf(n%3d%12s%11s%11.2f%

21、11.2f%11.2f%11.2fn,j,stui.num,,stui.baimi,stui.baimi);elseprintf(n%3d%12s%11s%11.2f%11.2f%11.2f%11.2fn,j+,stui.num,,stui.baimi,stui.baimi);getch();void keep()/按跳遠成績排名struct student stun,temp;inti,j,n;n=reads(stu);for(i=0;in-1;i+)for(j=0;jn-1;j+)if(stuj.tiaoyuan stuj+1.tiaoyuan)temp

22、=stuj;stuj=stuj+1;stuj+1=temp;save(stu,n);j=1;printf(*跳遠成績排序結(jié)果如下*nn);printf(名次號碼姓名跳遠成績n); printf(*n);for(i=0;in;i+)/輸出結(jié)果并排名if(stui.sanjitiao=stui+1.sanjitiao)printf(n%3d%12s%11s%11.2f%11.2f%11.2f%11.2fn,j,stui.num,,stui.sanjitiao,stui.sanjitiao);elseprintf(n%3d%12s%11s%11.2f%11.2f%11.2f%11.

23、2fn,j+,stui.num,,stui.sanjitiao,stui.sanjitiao);getch();void sheep()/按跳高成績排名 struct student stun,temp;inti,j,n;n=reads(stu);for(i=0;in-1;i+)for(j=0;jn-1;j+) if(stuj.tiaogaostuj+1.tiaogao)temp=stuj;stuj=stuj+1;stuj+1=temp;save(stu,n);j=1;printf(*跳高成績排序結(jié)果如下*nn);printf(名次號碼姓名跳高成績n);printf(*n);

24、for(i=0;in;i+)/輸出結(jié)果并排名if(stui.tiaogao=stui+1.tiaogao)printf(n%3d%12s%11s%11.2f%11.2f%11.2f%11.2fn,j,stui.num,,stui.tiaogao,stui.tiaogao); elseprintf(n%3d%12s%11s%11.2f%11.2f%11.2f%11.2fn,j+,stui.num,,stui.chenggantiao,stui.tiaogao);getch();void qianq()/按鉛球成績排名 struct student stun,t

25、emp;inti,j,n;n=reads(stu);for(i=0;in-1;i+)for(j=0;jn-1;j+) if(stuj.qianqiustuj+1.qianqiu)temp=stuj;stuj=stuj+1;stuj+1=temp;save(stu,n);j=1;printf(*鉛球成績排序結(jié)果如下*nn);printf(名次號碼姓名鉛球成績n);printf(*n);for(i=0;in;i+)/輸出結(jié)果并排名if(stui.qianqiu =stui+1.qianqiu)printf(n%3d%12s%11s%11.2f%11.2f%11.2f%11.2fn,j,stui.n

26、um,,stui.qianqiu,stui.qianqiu); elseprintf(n%3d%12s%11s%11.2f%11.2f%11.2f%11.2fn,j+,stui.num,,stui.qianqiu,stui.qianqiu);getch();附錄1.1輸入運動員的基本信息、輸出運動員的基本信息模塊源程序當(dāng)執(zhí)行學(xué)生成績錄入功能時,所錄入的數(shù)據(jù)被儲存程序開頭所定義的結(jié)構(gòu)體中,并且各種數(shù)據(jù)被保存其中,方便以后其他的功能函數(shù)調(diào)用。具體的程序段如下:int,i; printf(請輸入要添加的學(xué)生數(shù)量,按回車鍵確認:); scanf(%d,&n); fo

27、r(i=1;i=n;i+) printf(n請輸入第%d個學(xué)生的學(xué)號、姓名,,用空格分開,并按回車鍵確認:n,i); scanf(%s%s%s,stui.num,,stui.daibd); printf(n請輸入第%d個學(xué)生的賽跑比賽、跳遠比賽、跳高比賽、鉛球比賽,用空格分開,并按回車鍵確認:n,i); scanf(%f%f%f,&stui.race,&stui.jump,&stui.high,&stui,qianq); printf(%s %s %s %f %f %f n,stui.num,,stui.daibd,stui.race,stui.jump,s

28、tui.high.stui,qianq); 附錄1.2 查找運動員比賽成績模塊源程序按項目進行運動員成績查詢 當(dāng)執(zhí)行按項目進行運動員成績查詢時,整個查詢過程是在結(jié)構(gòu)體數(shù)組stu中實現(xiàn)的。在此函數(shù)中,為了方便起見,用1代表賽跑比賽,2代表跳遠比賽,3代表跳高比賽,4代表鉛球,輸入數(shù)字后,用if語句進行判斷,輸出各個學(xué)生該項目的成績。具體的程序段如下int i,a; printf(請輸入1,2,3或4,1代表賽跑成績,2代跳遠成績,3代表跳高成績,4代表鉛球); scanf(%d,&a); if(a=1) printf(*按項目查詢結(jié)果如下*nn); printf( 名次 學(xué)號 姓名 系別 賽跑 n); printf(*n); for(i=1;i=n;i+) printf(n%d%12s%12s%11s%11.2f n,i,stui.num,,stui.daibd,stui.race); getch(); if(a=2) printf(*按項目查詢結(jié)果如下*nn); printf( 名次 學(xué)號 姓名 系別 跳高 n); printf(*n)

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論