計算機科學與技術課程設計 運動會成績管理系統(tǒng)設計
《計算機科學與技術課程設計 運動會成績管理系統(tǒng)設計》由會員分享,可在線閱讀,更多相關《計算機科學與技術課程設計 運動會成績管理系統(tǒng)設計(25頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、程序設計課程設計報告(2012) 程序設計課程設計報告 ( 2012 -- 2013 年度第 一 學期) 運動會成績管理系統(tǒng) 專業(yè) 計算機科學與技術 學生姓名 吳小會 班級 M計算機112 學號 1151401225 指導教師 王 榕 完成日期 2012年9 月 13日 1 目 錄 1 概 述 1 1.1 課程設計目的 1 1.2 課程設計內容 1 2 系統(tǒng)總體設計 1 2.1 系統(tǒng)目標 1 2.2 主體功能 2 2.3
2、系統(tǒng)流程 3 2.4 開發(fā)環(huán)境 4 3系統(tǒng)詳細設計 4 3.1系統(tǒng)主界面設計 4 3.2錄入修改成績模塊設計 4 3.3成績查詢模塊設計 5 3.4成績排序模塊設計 7 4 測試 8 4.1 測試方案 8 4.2 測試結果 8 5 小結 9 參考文獻 10 附 錄 11 附錄1 源程序清單 11 附錄1.1輸入運動員的基本信息、輸出運動員的基本信息模塊源程序 21 附錄1.2 查找運動員比賽成績模塊源程序 21 附錄1.3排序模塊源程序 22 3 運動會成績管理系統(tǒng)的設計與實現(xiàn) 1 概 述 1.1 課程設計目的
3、1、鞏固并加深對C語言程序設計知識的理解; 2、掌握和提高C語言編程和程序調試的基本技能; 3、進一步理解和運用結構化程序設計的思想和方法; 4、提高運用C語言解決實際問題的能力; 5、初步掌握開發(fā)小型實用軟件的基本方法; 6、掌握書寫程序設計開發(fā)文檔的能力(書寫課程設計實驗報告)。 1.2 課程設計內容 課題名稱:運動會成績管理系統(tǒng) 說明:運動會的基本項目包括:100米,鉛球,跳高,跳遠 要求: (1) 系統(tǒng)的操作界面,有提示用戶如何操作; (2) 從鍵盤可以將學生的各個運動項目的成績輸入; (3) 運動會的錄入成績可以通過查詢方式(通過運動員姓名)在屏幕上顯示出來
4、; (4) 程序具有修改輸入資料的功能; (5) 程序實現(xiàn)對文件的讀取和寫入操作; (6) 程序具有對某一運動會項目的名次進行排序,使其按降序排列; (7) 每一項目都有對應的折合分數(shù),程序可以計算出所有代表隊的比賽總得分,并將各隊按總得分降序排列;比如:甲隊獲得100米的第三名折合分數(shù)為1;獲得鉛球的第一名折合分數(shù)為3;獲得跳高的第一名折合分數(shù)為1;獲得跳遠的第一名折合分數(shù)為3;則甲隊的總得分為:1+3+1+3=8; (8) 程序要求可以將各個參賽隊的所有隊員中成績全部顯示出來; (9) 程序可以運用運動員的姓名來查詢該隊員的此次運動會的所有項目成績。 2 系統(tǒng)總體設計 2.
5、1 系統(tǒng)目標 實現(xiàn)對運動員成績輸入功能以及修改輸入資料功能,但是在輸入修改功能時加一項加密功能使其僅限于管理員使用。對于運動員再輸入姓名之后可以查詢該運動員的報名項目、歸屬何隊、比賽成績以及排名。要對每一隊每名運動員參加項目的比賽成績進行累加并對三隊總成績的累加進行排序。當運動員查詢自己成績情況后可以查詢該隊的所有隊員以及總成績排名。實現(xiàn)對系統(tǒng)的讀取和寫入操作。 2.2 主體功能 運動會成績管理系統(tǒng) 輸入運動員比賽成績 成績情況查詢 修改輸入資料 運動員比賽成績查詢 代表隊總得分查詢 圖2-1 系統(tǒng)功能模塊圖 2.3 系統(tǒng)流程 輸入運動員所在隊及贏得的分數(shù)
6、輸入運動員參加項目成績 開始…初始化 輸入 Y 修改 Y N N 成績查詢 查詢運動員成績情況 查詢團體成績 繼續(xù) 結束退出 輸入運動員參加項目成績 輸入運動員所在隊及贏得的分數(shù) 輸入各隊比才成績 輸出運動員參加項目、所屬隊為隊贏得分數(shù)和比賽名次 輸出隊中所有成員和各隊成績排名 圖3-1系統(tǒng)流程圖 2.4 開發(fā)環(huán)境 該程序通過Turbo C&C++3.0軟件集成開發(fā) 3系統(tǒng)詳細設計 3.1系統(tǒng)主界面設計 menu() 圖3-1 系統(tǒng)主界面 其基本功能如下: 當打開學?;蛘邔W生信息錄入時系統(tǒng)會
7、彈出運動會主要信息錄入提醒。當打開運動員成績查詢系統(tǒng)會顯示輸入學生姓名和學號,學生開始正式查詢可了解到該學生比賽項目、比賽成績、所屬隊及為代表隊贏得得分數(shù)。
3.2錄入修改成績模塊設計
成績錄入模塊的功能流程圖
開始
輸入運動員資料
增加資料
Y
Y
Y
N
N
N
修改資料
刪除資料
結束
請輸入家的數(shù)量n
i<=n
請增加
i=i+1
失敗
修改的學號
i 8、查詢模塊的功能流程圖。
開始
輸入比賽項目
賽跑
Y
Y
Y
Y
Y
Y
Y
N
N
N
N
N
N
輸入學號姓名
i=1
i 9、[j] 10、 圖8-1運動員排名界面
當輸入排序程序時,顯示各個運動員的比賽成績
測試方案二:顯示運動員成績測試
圖8-2得分規(guī)則顯示界面
4.2 測試結果
測試結果一:
a、 問題:每次在運行時輸入兩個以上的項目便不能出正確結果。
發(fā)現(xiàn)過程:通過對程序的單步執(zhí)行監(jiān)視,發(fā)現(xiàn)在執(zhí)行完stu[j]<=stu[j+1]
被修改。
分析原因:在insert函數(shù)中動態(tài)分配 newPtr 內存時,開始用的語為newPtr =malloc (sizeof (
bodyPtr)); 因為結構指針bodyPtr 所占用的內存字節(jié)數(shù)小于結 11、構body 所占用的內存字節(jié)數(shù),導致給newPtr分配的內存過小,使得(*tailPtr)->nextPtr 被意外的修改。
解決辦法:將newPtr =malloc (sizeof (bodyPtr)) 改為 newPtr =malloc (sizeof (body))。
測試結果二:
錯誤主要是在輸入字符時使用的是中文輸入,只要改成英文輸入就行了;注意“{}”使用要完整等等。不過在我編寫程序時遇到的最大的困難還是在輸入文件模塊,因為對這個知識點掌握不好,后來經(jīng)過查閱資料終于弄清楚了。
5 小結
總體來說此次程序設計寫得特別吃力感覺什么都不會有一些生疏的詞以前都沒有聽過。好像感 12、覺自己之前學的C語言都白學了,以前上課老師只要我們寫一些比較簡單的小程序感覺還好,現(xiàn)在突然寫一個成績管理系統(tǒng)開始的時候感覺不知所措不知道從何入手。后來到圖書館查詢和網(wǎng)上搜索才深入的了解C語言,漸漸的就有了一些想法。
要想編寫出一個優(yōu)秀的需求軟件,前期的需求分析是相當重要的工作,而且在系統(tǒng)設計的過程中,對C語言又進行了一次系統(tǒng)的學習。在設計信息代碼的時候,將功能分到不同的類中實現(xiàn),在編碼的時候,多次在小問題上卡住,但最后還是在自己的思考和向其他同學請教、相互討論之后,將問題解決掉??梢哉f這二個星期的綜合設計,讓我學習到了很多很多。
經(jīng)過這兩個星期的學習我體會比較多,深深地感到自己有許多的不足 13、。以前學專業(yè)課時并沒有調整好自己的心態(tài)以為考試只要過就行了課后自己也沒有練習,現(xiàn)在才認識到我這種態(tài)度的嚴重性。以后我要把我所學的放入實踐中經(jīng)常體會各種題目的意義所在,為自己以后找工作打下有利基礎。
23
參考文獻
[1]譚浩強.C程序設計(第二版)[M].北京:清華大學出版社,2012.
[2]譚浩強.C程序設計題解與上機指導(第二版)[M].北京:清華大學出版社,2012.
[3]明日科技.C語言程序開發(fā)范例寶典[M].北京:人民郵電出版社,2010.
[4]王一萍 梁偉 金梅.C程序設計與項目實踐[M]. 北京:清華大學出版社,2011.
附 錄
附錄1 14、 源程序清單
#include 15、oid del();
void sort();
void keep();
void sheep();
void qianq();
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 16、();break;
case5:sort();break;
case6:keep();break;
case7:sheep();break;
case8:qianq();break;
case9:exit(0);
default:printf("輸入錯誤,請輸入列表中存在的序號!\n");
}
}
}
void menu()
{
printf("*************************運動員成績管理系統(tǒng)************************");
printf("\n1添加運動員數(shù)據(jù)");
printf("\n2顯示運動員數(shù)據(jù)");
print 17、f("\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])//讀取運動員文件中的內容
{
FILE*fp;
int i=0;
i 18、f((fp=fopen("e:\\student.txt","r"))==NULL)
{
printf("文件打開失??!\n");
return0;
}
else
{
for(i=0;!feof(fp);i++)
fscanf(fp,"%s%s%f%f%f\n",stu[i].num,stu[i].name,&stu[i].baimi,&stu[i].tiaoyuan,&stu[i].tiaogao,&stu[i],qianqiu);
}
fclose(fp);
return i;
}
void save(struct student stu[N],int n) 19、 //運動員信息改變后更新文件
{
FILE*fp;
Int i=0;
if((fp=fopen("e:\\student.txt","w"))==NULL)
{
printf("文件打開失??!\n");
return;
}
Else
{
for(i=0;i 20、*/
{
FILE*fp;
int n,i;
struct student stu;
if((fp=fopen("e:\\student.txt","a"))==NULL)//如果文件已經(jīng)存在,可以追加學生信息
{
if((fp=fopen("e:\\student.txt","w"))==NULL)//文件不存在時,創(chuàng)建新文件,輸入學生信息
{
printf("文件打開失??!\n");
return;
}
}
printf("請輸入要添加的運動員數(shù)量,按回車鍵確認:");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
printf( 21、"\n請輸入第%d個運動員的號碼、姓名,用空格分開,并按回車鍵確認:\n",i);
scanf("%s%s",stu.num,stu.name);printf("\n請輸入第%d個運動員的百米賽跑、跳遠和跳高、鉛球四項成績,用空格分開,并按回車鍵確認:\n",i);
scanf("%f%f%f",&stu.baimi,&stu.tiaoyuan,&stu.tiaogao,&stu,qianqiu);
fprintf(fp,"%s%s%f%f%f\n",stu.num,stu.name,stu.baimi,stu.tiaoyuan,stu.tiaogao.stu,qianqiu);
}
22、
fclose(fp);
}
void show()//運動員信息顯示函數(shù)
{
struct student stu[N];
inti,n;
n=reads(stu);
printf("*********************所有的學生信息如下**********************\n\n");
printf("序號號碼姓名百米賽跑跳遠跳高鉛球\n");
printf("*************************************************************\n");
for(i=0;i 23、12s%11s%11.2f%12.2f%11.2f\n",i+1,stu[i].num,stu[i].name,stu[i].baimi,stu[i].tiaoyuan.stu[i].tiaogao.stu[i],qianqiu);
getch();
}
void del()/*運動員信息刪除函數(shù)*/
{
Struct student stu[N];
char number[20];
int n,i,j;
n=reads(stu);
printf("\n請輸入要刪除信息運動員號碼,按回車鍵確認:");
scanf("%s",number);
for(i=0;i 24、)
if(strcmp(number,stu[i].num)==0)break;
if(i>=n)
{
printf("沒有找到該運動員信息!\n");
return;
}
else
{
for(j=i+1;j 25、學生學號,按回車鍵確認:");
scanf("%s",number);
n=reads(stu);
for(i=0;i 26、gao,&stu[i],qianqiu);
save(stu,n);
}
void sort()//按百米賽跑成績排名
{
struct student stu[N],temp;
int i,j,n;
n=reads(stu);
for(i=0;i 27、*****百米賽跑成績排序結果如下****************************\n\n");
printf("名次號碼姓名百米賽跑成績\n");
printf("***********************************************************************\n");
for(i=0;i 28、name,stu[i].baimi,stu[i].baimi);
else
printf("\n%3d%12s%11s%11.2f%11.2f%11.2f%11.2f\n",j++,stu[i].num,stu[i].name,stu[i].baimi,stu[i].baimi);
}
getch();
}
void keep()//按跳遠成績排名
{
struct student stu[N],temp;
inti,j,n;
n=reads(stu);
for(i=0;i 29、an 30、++)//輸出結果并排名
{
if(stu[i].sanjitiao==stu[i+1].sanjitiao)
printf("\n%3d%12s%11s%11.2f%11.2f%11.2f%11.2f\n",j,stu[i].num,stu[i].name,stu[i].sanjitiao,stu[i].sanjitiao);
else
printf("\n%3d%12s%11s%11.2f%11.2f%11.2f%11.2f\n",j++,stu[i].num,stu[i].name,stu[i].sanjitiao,stu[i].sanjitiao);
}
getch(); 31、
}
void sheep()//按跳高成績排名
{
struct student stu[N],temp;
inti,j,n;
n=reads(stu);
for(i=0;i 32、************\n\n");
printf("名次號碼姓名跳高成績\n");
printf("***********************************************************************\n");
for(i=0;i 33、gao);
else
printf("\n%3d%12s%11s%11.2f%11.2f%11.2f%11.2f\n",j++,stu[i].num,stu[i].name,stu[i].chenggantiao,stu[i].tiaogao);
}
getch();
void qianq()//按鉛球成績排名
{
struct student stu[N],temp;
inti,j,n;
n=reads(stu);
for(i=0;i 34、.qianqiu 35、 36、iu);
}
getch();
}
附錄1.1輸入運動員的基本信息、輸出運動員的基本信息模塊源程序
當執(zhí)行學生成績錄入功能時,所錄入的數(shù)據(jù)被儲存程序開頭所定義的結構體中,并且各種數(shù)據(jù)被保存其中,方便以后其他的功能函數(shù)調用。具體的程序段如下:
int,i;
printf("請輸入要添加的學生數(shù)量,按回車鍵確認:");
scanf("%d",&n); for(i=1;i<=n;i++)
{
printf("\n請輸入第%d個學生的學號、姓名,,用空格分開,并按回車鍵確認:\n",i);
37、 scanf("%s%s%s",stu[i].num,stu[i].name,stu[i].daibd);
printf("\n請輸入第%d個學生的賽跑比賽、跳遠比賽、跳高比賽、鉛球比賽,用空格分開,并按回車鍵確認:\n",i);
scanf("%f%f%f",&stu[i].race,&stu[i].jump,&stu[i].high,&stu[i],qianq);
printf("%s %s %s %f %f %f \n",stu[i].num,stu[i].name,stu[i].daibd,stu[i].race,stu[i] 38、.jump,stu[i].high.stu[i],qianq);
}
附錄1.2 查找運動員比賽成績模塊源程序
按項目進行運動員成績查詢 當執(zhí)行按項目進行運動員成績查詢時,整個查詢過程是在結構體數(shù)組stu中實現(xiàn)的。在此函數(shù)中,為了方便起見,用1代表賽跑比賽,2代表跳遠比賽,3代表跳高比賽,4代表鉛球,輸入數(shù)字后,用if語句進行判斷,輸出各個學生該項目的成績。具體的程序段如下
int i,a;
printf("請輸入1,2,3或4,1代表賽跑成績,2代跳遠成績,3代表跳高成績,4代表鉛球");
scanf("%d",&a);
if( 39、a==1)
{ printf("*********************按項目查詢結果如下**********************************\n\n");
printf(" 名次 學號 姓名 系別 賽跑 \n"); printf("*************************************************************************\n");
for(i=1;i<=N;i++)
{ 40、
printf("\n%d%12s%12s%11s%11.2f \n",i,stu[i].num,stu[i].name,stu[i].daibd,stu[i].race);
}
getch();
}
if(a==2)
{
printf("*********************按項目查詢結果如下**********************************\n\n");
printf(" 名次 學號 姓名 系別 跳高 \n"); pri 41、ntf("*************************************************************************\n");
for(i=1;i<=N;i++)
{
printf("\n%d%12s%11s%11s%11.2f\n",i,stu[i].num,stu[i].name,stu[i].daibd,stu[i].high);
}
getch();
if(a==3)
{
printf("*********************按項目 42、查詢結果如下**********************************\n\n");
printf(" 名次 學號 姓名 代表隊 跳遠 \n"); printf("*************************************************************************\n");
for(i=1;i<=N;i++)
{
printf("\n%d%12s%11s%11s%11.2f\n",i,stu[i].num,stu[i].name, 43、stu[i].daibd,stu[i].jump);
}
if(a==4)
{
printf("*********************按項目查詢結果如下**********************************\n\n");
printf(" 名次 學號 姓名 代表隊 鉛球 \n"); printf("*************************************************************************\n 44、");
for(i=1;i<=N;i++)
{
printf("\n%d%12s%11s%11s%11.2f\n",i,stu[i].num,stu[i].name,stu[i].daibd,stu[i].qianq);
}
附錄1.3排序模塊源程序
按代表隊排名函數(shù)(參照學生總成績) 對于按代表隊的排名采用的排序算法是冒泡法排序,其中總成績的求得是在排序的過程中實現(xiàn)的,整個排序過程在結構體數(shù)組stu中實現(xiàn),由于排序算法涉及到兩個數(shù)組元素的信息交換,因此還需要定義一個中間變量來協(xié)助。排序函數(shù)使學生數(shù)據(jù)的排列順序發(fā)生了變化,因 45、此也需要對結構體進行更新。此外,對于系別排序后名次的確定,僅在結果輸出時予以顯示。具體的程序段如下:
int i,j;
printf("*********************按系成績排序結果如下**********************************\n\n");
printf(" 名次 代表隊 總成績 \n");
printf("*************************************************************************\n");
for(i=1 46、;i<=N;i++)
for(j=1;j<=N-i;j++)
{
if(stu[j].race+stu[j].jump+stu[j].high
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。