數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)_第1頁(yè)
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)_第2頁(yè)
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)_第3頁(yè)
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)_第4頁(yè)
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩15頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、成績(jī) 課 程 設(shè) 計(jì) 報(bào) 告 課 程 名 稱 專 業(yè) 班 級(jí) 學(xué) 生 姓 名 學(xué) 號(hào) 設(shè) 計(jì) 題 目 指 導(dǎo) 教 師 設(shè)計(jì)起止時(shí)間:2010 年6月21日至 2010年 6月25日 運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)一、問題描述參加運(yùn)動(dòng)會(huì)有n個(gè)學(xué)校,學(xué)校編號(hào)為1n。比賽分成m個(gè)男子項(xiàng)目,和w個(gè)女子項(xiàng)目。項(xiàng)目編號(hào)為男子1m,女子m+1m+w。不同的項(xiàng)目取前五名或前三名積分;取前五名的積分分別為:7、5、3、2、1,前三名的積分分別為:5、3、2;哪些取前五名或前三名由學(xué)生自己設(shè)定。(m=20,n=20)二、功能要求:1) 可以輸入各個(gè)項(xiàng)目的前三名或前五名的成績(jī);2) 能統(tǒng)計(jì)各學(xué)??偡?,3) 可以按學(xué)校編號(hào)或名稱、學(xué)

2、??偡?、男女團(tuán)體總分排序輸出;4) 可以按學(xué)校編號(hào)查詢學(xué)校某個(gè)項(xiàng)目的情況;按項(xiàng)目編號(hào)查詢?nèi)〉们皫酌膶W(xué)校。5) 數(shù)據(jù)存入文件并能隨時(shí)查詢 6) 規(guī)定:輸入數(shù)據(jù)形式和范圍:可以輸入學(xué)校的名稱,運(yùn)動(dòng)項(xiàng)目的名稱三、基本思想 本實(shí)驗(yàn)中,對(duì)不同的對(duì)象采取不同的存儲(chǔ)結(jié)構(gòu),對(duì)參賽學(xué)校采取鏈?zhǔn)浇Y(jié)構(gòu),而對(duì)于參賽運(yùn)動(dòng)員采取一個(gè)結(jié)構(gòu)就可以了。本程序中主要用到線性表的一些基本操作,將各學(xué)校信息,運(yùn)動(dòng)員信息,項(xiàng)目信息都構(gòu)造成線性表。具體功能通過(guò)主函數(shù)分別調(diào)用各函數(shù)實(shí)現(xiàn)。參考本實(shí)驗(yàn)的功能要求,本程序分為七個(gè)模塊:主函數(shù)、信息錄入函數(shù)、信息統(tǒng)計(jì)函數(shù)、信息查詢函數(shù),信息排序函數(shù)、存盤函數(shù)、讀盤函數(shù)。信息錄入函數(shù)有包括學(xué)校信息

3、錄入函數(shù)(包括學(xué)??倲?shù)、學(xué)校名稱等),競(jìng)賽項(xiàng)目錄入函數(shù)(男子競(jìng)賽項(xiàng)目總數(shù)、女子競(jìng)賽項(xiàng)目總數(shù)、競(jìng)賽項(xiàng)目名稱、取名次方法和各名次對(duì)應(yīng)的分值)、比賽結(jié)果錄入函數(shù)(各名次的學(xué)生信息等)。信息統(tǒng)計(jì)不再結(jié)果中顯示出來(lái),為了信息查詢和排序輸出。信息查詢函數(shù)包括按學(xué)校編號(hào)查詢、按學(xué)校名稱查詢、按項(xiàng)目編號(hào)查詢?nèi)齻€(gè)子函數(shù)。信息排序函數(shù)包括按男子總分排序函數(shù)、按女子總分排序函數(shù)、按團(tuán)體總分排序函數(shù)。四、詳細(xì)設(shè)計(jì)/*單個(gè)學(xué)校信息描述*/typedef struct _schoolinfoint schoolnum; /*學(xué)校編號(hào)*/char schoolnamemaxlength;/*學(xué)校名稱*/schoolinfo

4、,*pschoolinfo;/*全部參賽學(xué)校描述*/typedef struct _schoolschoolinfo schinfoarraymax_n;int ntotalnmofsch; /*參賽學(xué)校總數(shù)*/school,*pschool;/*某一競(jìng)賽項(xiàng)目名次取法*/typedef struct _scrinfoint total; /*取前多少名*/int* power; /*每一名次對(duì)應(yīng)分值*/scrinfo,*pscrinfo;/*單個(gè)競(jìng)賽項(xiàng)目信息描述*/typedef struct _sportinfoint sportnum; /*項(xiàng)目編號(hào)*/char sportnamemaxl

5、ength; /*項(xiàng)目名稱*/sporttype sprttyp; /*項(xiàng)目類型(男子、女子)*/scoretype scrtyp; /*取名次類型(前5、前3、用戶自定義)*/scrinfo scrinfo; /*名次取法紀(jì)錄項(xiàng)*/sportinfo,*psportinfo;/*全部競(jìng)賽項(xiàng)目信息描述*/typedef struct _sportsportinfo sportinfoarraymax_m+max_w;int ntotalnmofmsprt; /*男子項(xiàng)目總數(shù)*/int ntotalnmoffsprt; /*女子項(xiàng)目總數(shù)*/sport,*psport;/*比賽成績(jī)記錄*/type

6、def struct _positionint sportnum; /*競(jìng)賽項(xiàng)目編號(hào)*/char namemaxlength; /*獲得名次的運(yùn)動(dòng)員姓名*/int score; /*得分*/int schoolnum;/ *所屬學(xué)校編號(hào)*/struct _position *ptrnext;position,*pposition;五、源程序:#define _mainfile_h_#include stdio.h#include stdlib.h#define maxlength 20 /*字符串最大長(zhǎng)度*/#define max_n 20 /*最大參賽學(xué)校數(shù)目*/#define max_m

7、30 /*男子項(xiàng)目最大數(shù)目*/#define max_w 20 /*女子項(xiàng)目最大數(shù)目*/#define len sizeof(position)#ifndef null#define null (void*)0#endif /*null*/intn, m,w;typedef enum _bool _true=1,_false=0bool;typedef enum _sporttype _man,_woman sporttype; /*sport type*/typedef enum _scoretype _five,_three,_custom scoretype; /*score type*

8、/typedef struct _schoolinfoint schoolnum;/*學(xué)校編號(hào)*/char schoolnamemaxlength;/*學(xué)校名稱*/schoolinfo,*pschoolinfo;typedef struct _schoolschoolinfo schinfoarraymax_n;int ntotalnmofsch;/*參賽學(xué)校總數(shù)*/school,*pschool;typedef struct _scrinfoint total;/*取前多少名*/int* power;/*每一名次對(duì)應(yīng)分值*/scrinfo,*pscrinfo;typedef struct _

9、sportinfoint sportnum;/*項(xiàng)目編號(hào)*/char sportnamemaxlength;/*項(xiàng)目名稱*/sporttype sprttyp;/*項(xiàng)目類型(男子、女子)*/scoretype scrtyp;/*取名次類型(前5、前3、用戶自定義)*/scrinfo scrinfo;/*名次取法紀(jì)錄項(xiàng)*/sportinfo,*psportinfo;typedef struct _sportsportinfo sportinfoarraymax_m+max_w;int ntotalnmofmsprt;/*男子項(xiàng)目總數(shù)*/int ntotalnmoffsprt;/*女子項(xiàng)目總數(shù)*/

10、sport,*psport;typedef struct _positionint sportnum;/*競(jìng)賽項(xiàng)目編號(hào)*/char namemaxlength;/*獲得名次的運(yùn)動(dòng)員姓名*/int score;/*得分*/int schoolnum;/*所屬學(xué)校編號(hào)*/struct _position *ptrnext;position,*pposition;extern int getpower(int,int);extern void getreport();extern bool getschoolinfo();extern void getscorebyschool();extern c

11、har* getsportname(int);extern bool setfmsporttotalnum(int*,int);extern void setpositionforallsports();extern void setpositionforonesport(int);extern bool setschoolinfo(int*);extern bool setschooltotalnum(int*);extern bool setscoretype(int);extern bool setsportinfo();extern void getsportinfo();extern

12、 void getlist();static school g_school;static sportg_sport;ppositionptrhead,ptrthis,ptrnew;bool setfmsporttotalnum(int* pntotalnmoffmsprt,int type/*0:男子;1:女子*/)if (pntotalnmoffmsprt=null) return _false;system(cls);printf(n- - - -);if (type=0) /*男子*/printf(n請(qǐng)輸入男子競(jìng)賽項(xiàng)目總數(shù):);scanf(%d,pntotalnmoffmsprt);i

13、f (*pntotalnmoffmsprtmax_m) printf(n學(xué)??倲?shù)必須大于0小于%d,max_m);return _false;elsereturn _true;else/*女子*/printf(n請(qǐng)輸入女子競(jìng)賽項(xiàng)目總數(shù):);scanf(%d,pntotalnmoffmsprt);if (*pntotalnmoffmsprtmax_w) printf(n學(xué)校總數(shù)必須大于0小于%d,max_w);return _false;elsereturn _true;bool setscoretype(int n/*項(xiàng)目編號(hào)-1*/)char ch;bool ret=_false;bool

14、err=_false;int totalprv,i,power;do system(cls);printf(n請(qǐng)選擇編號(hào)為%d的競(jìng)賽項(xiàng)目取名次類型n(0: 取前5名; 1: 取前3名; 2: 用戶自定義):,n+1);ch=toupper(getch();printf(n);switch(ch) case 0:/*取前5名*/g_sport.sportinfoarrayn.scrtyp=_five;g_sport.sportinfoarrayn.scrinfo.total=5;if (g_sport.sportinfoarrayn.scrinfo.power=(int*)malloc(size

15、of(int)*5)=null) printf(n memory err);return _false;g_sport.sportinfoarrayn.scrinfo.power0=7;g_sport.sportinfoarrayn.scrinfo.power1=5;g_sport.sportinfoarrayn.scrinfo.power2=3;g_sport.sportinfoarrayn.scrinfo.power3=2;g_sport.sportinfoarrayn.scrinfo.power4=1;ret=_true;break;case 1:/*取前3名*/g_sport.spor

16、tinfoarrayn.scrtyp=_three;g_sport.sportinfoarrayn.scrinfo.total=3;if (g_sport.sportinfoarrayn.scrinfo.power=(int*)malloc(sizeof(int)*3)=null) printf(n memory err);return _false;g_sport.sportinfoarrayn.scrinfo.power0=5;g_sport.sportinfoarrayn.scrinfo.power1=3;g_sport.sportinfoarrayn.scrinfo.power2=2;

17、ret=_true;break;case 2:g_sport.sportinfoarrayn.scrtyp=_custom;do printf(n請(qǐng)輸入本項(xiàng)目取前多少名:);scanf(%d,&totalprv);if (totalprv=0) printf(n輸入有誤。只能大于0);elseerr=_true; while(err=_false);g_sport.sportinfoarrayn.scrinfo.total=totalprv;if (g_sport.sportinfoarrayn.scrinfo.power=(int*)malloc(sizeof(int)*totalprv)=

18、null) printf(n memory err);return _false;for(i=0;itotalprv;i+)err=_false;do printf(n請(qǐng)輸入該項(xiàng)目第%d名的分值:,i+1);scanf(%d,&power);if (power=0) printf(n輸入有誤。只能大于0);elseerr=_true; while(err=_false);g_sport.sportinfoarrayn.scrinfo.poweri=power;ret=_true;break;default:/*錯(cuò)誤的輸入*/printf(n錯(cuò)誤的選擇!);ret=_false; while(r

19、et=_false);return ret;bool setsportinfo()int i=0;bool err=_false; do err=setfmsporttotalnum(&m,0); while(err=_false);g_sport.ntotalnmofmsprt=m;do err=setfmsporttotalnum(&w,1); while(err=_false);g_sport.ntotalnmoffsprt=w;for(i=0;ig_sport.ntotalnmoffsprt+g_sport.ntotalnmofmsprt;i+)g_sport.sportinfoarr

20、ayi.sportnum=i+1;if (i+1=m) g_sport.sportinfoarrayi.sprttyp=_man;elseg_sport.sportinfoarrayi.sprttyp=_woman; system(cls);printf(n請(qǐng)輸入編號(hào)為%d的競(jìng)賽項(xiàng)目名稱:,i+1);scanf(%s,g_sport.sportinfoarrayi.sportname);g_sport.sportinfoarrayi.sportnamemaxlength-1=0; setscoretype(i);return _true;bool setschooltotalnum(int*

21、pntotalnmofsch)bool ret=_false;if (pntotalnmofsch=null) return _false;while (ret=_false) system(cls);printf(n- - - -);printf(n請(qǐng)輸入?yún)⒓舆\(yùn)動(dòng)會(huì)的學(xué)??倲?shù):);scanf(%d,pntotalnmofsch);if (*pntotalnmofschmax_n) printf(n學(xué)??倲?shù)必須大于0小于%dn,max_n);printf(nn按任意健繼續(xù));getch();ret=_false;elseret=_true;return _true;bool setschool

22、info(int* pntotalnmofsch)int i=0;if (!setschooltotalnum(pntotalnmofsch) printf(nerr!);return _false;elseg_school.ntotalnmofsch=*pntotalnmofsch;for(i=0;ig_school.ntotalnmofsch;i+)g_school.schinfoarrayi.schoolnum=i+1;printf(n請(qǐng)輸入編號(hào)為%d的學(xué)校名稱:,i+1);scanf(%s,g_school.schinfoarrayi.schoolname);g_school.schi

23、nfoarrayi.schoolnamemaxlength-1=0;/*截?cái)喽嘤嘧址?/return _true;bool getschoolinfo()int i=0;printf(n共有%d個(gè)學(xué)校參賽,g_school.ntotalnmofsch);for(i=0;ig_school.ntotalnmofsch;i+)printf(n學(xué)校編號(hào):%d,g_school.schinfoarrayi.schoolnum);printf( 校名:%s,g_school.schinfoarrayi.schoolname);return _true;void setpositionforonespor

24、t(int sportnum/*項(xiàng)目編號(hào)-1*/)int i=0,j=0;bool err=_false;printf(n- - - -);printf(n填寫項(xiàng)目%d的比賽結(jié)果,sportnum+1);for(i=0;iptrnext!=(pposition)null)ptrthis=ptrthis-ptrnext;ptrthis-ptrnext=ptrnew;ptrthis=ptrnew;ptrthis-sportnum=sportnum+1;printf(n輸入獲得第%d名的學(xué)生信息,i+1);printf(n姓名:);scanf(%s,ptrthis-name);do printf(n

25、學(xué)校編號(hào):);scanf(%d,&ptrthis-schoolnum);if (ptrthis-schoolnumschoolnumg_school.ntotalnmofsch) printf(n學(xué)校編號(hào)必須大于0小于等于%d,g_school.ntotalnmofsch);err=_false;elseerr=_true; while(err=_false);ptrthis-score=i+1;ptrthis-ptrnext=(pposition)null;void setpositionforallsports()int i=0;for(i=0;ig_sport.ntotalnmoffsp

26、rt+g_sport.ntotalnmofmsprt;i+)system(cls);setpositionforonesport(i);return;char* getsportname(int sportnum)int i=0;for(i=0;ig_sport.ntotalnmoffsprt+g_sport.ntotalnmofmsprt;i+)if (sportnum=g_sport.sportinfoarrayi.sportnum) break;if (i=g_sport.ntotalnmoffsprt+g_sport.ntotalnmofmsprt) return null;retur

27、n g_sport.sportinfoarrayi.sportname;int getpower(int sportnum/*項(xiàng)目編號(hào)*/,int score/*名次*/)int i=0;for(i=0;ig_sport.ntotalnmoffsprt+g_sport.ntotalnmofmsprt;i+)if (sportnum=g_sport.sportinfoarrayi.sportnum) break;if (i=g_sport.ntotalnmoffsprt+g_sport.ntotalnmofmsprt) return (int)-1;return g_sport.sportinf

28、oarrayi.scrinfo.powerscore-1;void getscorebyschool()int schnum;if (g_school.ntotalnmofschg_school.ntotalnmofsch|schnumschoolnum=schnum) printf(n%5d,ptrthis-sportnum);/*項(xiàng)目號(hào)*/printf(%20s,getsportname(ptrthis-sportnum);/*項(xiàng)目名稱*/printf(%5d,ptrthis-score);/*名次*/printf(%20s,ptrthis-name);/*姓名*/printf(%5d,g

29、etpower(ptrthis-sportnum,ptrthis-score);ptrthis=ptrthis-ptrnext; while(ptrthis!=(pposition)null);void getreport()int i,j,mantotal=0,womtotal=0,total=0;/*男子團(tuán)體總分,女子團(tuán)體總分,團(tuán)體總分*/if(ptrhead=(pposition)null)printf(n沒有比賽結(jié)果);return;ptrthis=ptrhead;printf(n團(tuán)體總分報(bào)表:);printf(nn學(xué)校編號(hào) 學(xué)校校名 男子團(tuán)體總分 女子團(tuán)體總分 團(tuán)體總分);print

30、f(n- - - - -);for(i=0;ischoolnum=g_school.schinfoarrayi.schoolnum)for(j=0;jsportnum=g_sport.sportinfoarrayj.sportnum) if (g_sport.sportinfoarrayj.sprttyp=_man) mantotal+=g_sport.sportinfoarrayj.scrinfo.powerptrthis-score-1;else womtotal+=g_sport.sportinfoarrayj.scrinfo.powerptrthis-score-1;ptrthis=p

31、trthis-ptrnext; while(ptrthis!=(pposition)null);total+=mantotal+womtotal;printf(n%5d,g_school.schinfoarrayi.schoolnum);printf(%20s,g_school.schinfoarrayi.schoolname);printf(%10d,mantotal);printf(%15d,womtotal);printf(%15dn,total);void getsportinfo()int i,j;system(cls);printf(n您輸入的比賽項(xiàng)目信息如下:);printf(n

32、- - - -);for(i=0;ig_sport.ntotalnmoffsprt+g_sport.ntotalnmofmsprt;i+)printf(n項(xiàng)目編號(hào):%d 項(xiàng)目名稱:%s,g_sport.sportinfoarrayi.sportnum,getsportname(g_sport.sportinfoarrayi.sportnum);for(j=0;jg_sport.sportinfoarrayi.scrinfo.total;j+)printf(n 第%d名 得分:%d,j+1,g_sport.sportinfoarrayi.scrinfo.powerj);printf(n按任意鍵繼續(xù));getch();void getlist()int i=0,j;int n=0;if(ptrhead=(pposition)null)printf(n沒有比賽結(jié)果);return;ptrthis=ptrhead;doprintf(n第%d個(gè)結(jié)點(diǎn):,n+);for(i=0;isportnum=g_sport.sportinfoarrayi.sportnum) break;if (i=g_sport.ntotalnmoffsprt+g_sport.ntotalnmofmsprt) return;printf(n 項(xiàng)目編號(hào):%d,ptrthis-sport

溫馨提示

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

評(píng)論

0/150

提交評(píng)論