運(yùn)動(dòng)會(huì)比賽計(jì)分系統(tǒng)---1_第1頁
運(yùn)動(dòng)會(huì)比賽計(jì)分系統(tǒng)---1_第2頁
運(yùn)動(dòng)會(huì)比賽計(jì)分系統(tǒng)---1_第3頁
運(yùn)動(dòng)會(huì)比賽計(jì)分系統(tǒng)---1_第4頁
運(yùn)動(dòng)會(huì)比賽計(jì)分系統(tǒng)---1_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、運(yùn)動(dòng)會(huì)比賽計(jì)分系統(tǒng)一、設(shè)計(jì)目的和任務(wù)要求:初始化輸入:N-參賽學(xué)??倲?shù),M-男子競(jìng)賽項(xiàng)目數(shù), W-女子競(jìng)賽項(xiàng)目數(shù)各項(xiàng)目名次取法有如下幾種:取前5名:第一名得分7分,第二名得分5,第三名得分3,第四名得分2,第五名得分1 ; 取前3名:第一名得分5,第二名得分3,第三名得分2;功能要求:(1)系統(tǒng)以菜單方式工作(2 )由程序提醒用戶填寫比賽結(jié)果,輸入各項(xiàng)目獲獎(jiǎng)運(yùn)動(dòng)員信息。(3)所有信息記錄完畢后,用戶可以查詢各個(gè)學(xué)校的比賽成績(4)查看參賽學(xué)校信息和比賽項(xiàng)目信息等。二、總體設(shè)計(jì)編寫目的:根據(jù)要求分析文檔, 初步提出問題的解決方案,以及軟件系統(tǒng)的體系結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方案并寫出書面文檔總體設(shè)計(jì)說

2、明書,為下一步進(jìn)行詳細(xì)設(shè)計(jì)做準(zhǔn)備。2.1總體設(shè)計(jì)該系統(tǒng)可以按功能進(jìn)行模塊劃分,其模塊圖如下:菜單模塊計(jì)分模塊輸入模塊系統(tǒng)模塊圖其中:*菜單選擇模塊完成用戶命令的接收,此模塊是運(yùn)動(dòng)會(huì)比賽計(jì)分系統(tǒng)的入口,用戶所要進(jìn)行的各種操作均需在此模塊中進(jìn)行選擇而調(diào)用其他模塊實(shí)現(xiàn)相應(yīng)的功能;* 信息輸入模塊完成學(xué)校、比賽項(xiàng)目(以及運(yùn)動(dòng)員的信息) 輸入功能,輸入信息包括各參 賽學(xué)校的編號(hào)、名稱和每個(gè)學(xué)校在各比賽項(xiàng)目的編號(hào)、類型、名稱、獲獎(jiǎng)次數(shù)、排名,以及 (運(yùn)動(dòng)員姓名)等必要信息;* 計(jì)分模塊是對(duì)輸入信息的處理,是一種必要的輔助模塊;* 輸出模塊包括: 1 不輸出信息,讀入文件中; 2 輸出信息,不讀入文件。其中

3、輸出的信 息有:學(xué)校編號(hào)、名稱以及其所獲獎(jiǎng)項(xiàng)的項(xiàng)目編號(hào)、類型、名稱、排名、男子總分、女子總 分還有學(xué)校的總分等;* 文件讀入模塊是為了滿足客戶需要,為了儲(chǔ)存信息,方便使用;* 信息查詢模塊完成對(duì)各信息的查詢,查詢時(shí)對(duì)應(yīng)有兩種選擇以確定用戶進(jìn)行哪種查詢。2.2 數(shù)據(jù)結(jié)構(gòu) 本系統(tǒng)中主要的數(shù)據(jù)結(jié)構(gòu)就是以學(xué)校為結(jié)點(diǎn)建立一個(gè)鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu),結(jié)點(diǎn)中包括學(xué)校編號(hào)、 學(xué)校名稱、 男子項(xiàng)目總分、女子項(xiàng)目總分、學(xué)??偡?;再定義一個(gè)新的結(jié)構(gòu)體是以項(xiàng)目信息 為基礎(chǔ), 通過指針實(shí)現(xiàn)學(xué)校來對(duì)項(xiàng)目信息的調(diào)用, 無論是計(jì)分, 輸出還是查找均以鏈?zhǔn)酱鎯?chǔ) 結(jié)構(gòu)來實(shí)現(xiàn)。數(shù)據(jù)結(jié)構(gòu):學(xué)校信息:typedef struct schooli

4、nt sclnum;/ 學(xué)校編號(hào)char sclname20;/學(xué)校名稱sc am+w;int mscore;/ 男子團(tuán)體總分int wscore;/ 女子團(tuán)體總分int sum;/ 學(xué)校項(xiàng)目總分struct school *next;scl;scl *p,*q,*head,*g,*s,*u;/ 全局指針變量項(xiàng)目信息(及運(yùn)動(dòng)員信息) :typedef struct scoint mark5;/ 分?jǐn)?shù)int itmnum;/ 項(xiàng)目編號(hào)int itmkind;/ 項(xiàng)目類型char itmname20;/項(xiàng)目名稱char name10;/ 運(yùn)動(dòng)員姓名int l; /獲獎(jiǎng)名次數(shù)int range5;/

5、排名sc;2.3 程序流程 系統(tǒng)的執(zhí)行應(yīng)從輸入信息功能開始,再執(zhí)行菜單功能,依據(jù)用戶的選擇來進(jìn)行后續(xù)的處理, 直到用戶選擇退出系統(tǒng)為止, 其間應(yīng)對(duì)用戶的選擇做出判斷及異常處理。 系統(tǒng)的流程圖如下:*1結(jié)束開始執(zhí)行菜單模塊文件讀入函數(shù)選擇1輸入項(xiàng)目編 號(hào)、名稱、 獲獎(jiǎng)名次數(shù) 排名、運(yùn)動(dòng) 員姓名輸入學(xué)校編 號(hào)、名稱,按學(xué)校排 +/名輸出學(xué) 校和項(xiàng)目 信息計(jì)分函數(shù)n07編寫目的:根據(jù)項(xiàng)目概要設(shè)計(jì)說明書行程序編碼工作。,在項(xiàng)目概要設(shè)計(jì)的基礎(chǔ)之上,對(duì)系統(tǒng)進(jìn)行詳細(xì)設(shè)計(jì),以便下一步進(jìn)三、詳細(xì)設(shè)計(jì):對(duì)于總設(shè)計(jì)時(shí)的系統(tǒng)模塊功能圖,各個(gè)功能模塊的處理邏輯如下1) 菜單選擇模塊:調(diào)用void menu() /菜單函

6、數(shù)給出信息提示;繪制菜單(包含查詢、退出);提示菜單選擇并輸入變量;根據(jù)輸入變量的值調(diào)用不同的模塊函數(shù);以下是截取的菜單函數(shù):void menu()system(cls);prin tf(=運(yùn)動(dòng)會(huì)比賽計(jì)分系統(tǒng)= n);printf(welcome);printf(編制*n);printf(* 1printf(* 2printf(* 3printf(* 4printf(* 5printf(*男子前五名依次得分:printf(*女子前三名依次得分:鍵盤輸入*n);文件讀入*n);輸出*n);查詢*n);退出*n);7 分 5 分 3 分 2 分 1 分*n);5 分 3 分 2 分 *n);pri

7、ntf(H*n);n);printf( 2) 信息輸入模塊: 調(diào)用 scl *input() / 信息輸入函數(shù)在輸入信息時(shí)要求按照文字提示進(jìn)行輸入, 要輸入的信息包括: 參賽學(xué)校編號(hào), 名稱以 及比賽項(xiàng)目的編號(hào),名稱,獲獎(jiǎng)名次,排名, (運(yùn)動(dòng)員姓名) 。 建立單鏈表,以鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)來存放學(xué)校,項(xiàng)目等數(shù)據(jù); 以下是輸入的內(nèi)容與形式:scanf(%d,&p-sclnum);/ 輸入學(xué)校編號(hào) scanf(%s,p-sclname);/ 輸入學(xué)校名稱 for(x=0;xax.itmnum);/輸入項(xiàng)目編號(hào)scanf(%d,&p-ax.itmkind);/輸入項(xiàng)目類型scanf(%s,p-ax.itmn

8、ame);/輸入項(xiàng)目名稱scanf(%d,&p-ax.l);/輸入獲獎(jiǎng)名次數(shù)for(i=0;iax.l;i+)scanf(%d,&p-ax.rangei);/輸入運(yùn)動(dòng)員的名次scanf(%s,); /運(yùn)動(dòng)員姓名輸入結(jié)束;在輸入結(jié)束結(jié)束后要調(diào)用計(jì)分模塊。3) 計(jì)分模塊: 計(jì)分模塊主要是依據(jù)輸入信息的不同予以判斷,并以不同的計(jì)分方式來計(jì)數(shù)將節(jié)點(diǎn)中 的數(shù)據(jù)改變,并保存。if(k=3)/女子項(xiàng)目取前三名else / 男子項(xiàng)目取前五名4) 信息輸出模塊:根據(jù)用戶的需要與選擇,給出兩種方式: 1、存入文件,不輸出; 2、輸出,不存入文件。printf(*1 不輸出,存入文件 n);pri

9、ntf(*2 輸出,不存入文件 n);scanf(%d,&co);switch(co)Case 1: 運(yùn)用文件存儲(chǔ)內(nèi)容 ;break;Case 2: 輸出相應(yīng)信息 ;break;5) 文件讀入模塊: !此模塊只是用來讀入文件中的信息,無實(shí)際意義,只是滿足題目要求,需謹(jǐn)慎使用。6) 信息查詢模塊: 和輸出模塊相似,同樣有兩種選擇:1、按學(xué)校編號(hào)查詢; 2、按項(xiàng)目編號(hào)查詢。printf( 按學(xué)校查找請(qǐng)輸入 1,按項(xiàng)目查找請(qǐng)輸入 2n);scanf(%d,&cha);if(cha=1)printf( 請(qǐng)輸入你要查詢的學(xué)校編號(hào): );scanf(%d,&num);while(q!=NULL) 按學(xué)校輸

10、出相應(yīng)信息; if(cha=2)printf( 請(qǐng)輸入你要查詢的項(xiàng)目編號(hào): );scanf(%d,&xiang);while(q!=NULL) 按項(xiàng)目輸出相應(yīng)信息; 四、調(diào)試與測(cè)試1. 調(diào)試方法; 上機(jī)運(yùn)行各個(gè)模塊,分別調(diào)試,最后綜合運(yùn)行;2. 測(cè)試結(jié)果的討論與分析; 首先必須要對(duì)程序進(jìn)行數(shù)據(jù)信息輸入, 對(duì)于所需不同的信息程序會(huì)自動(dòng)提示用戶進(jìn)行相關(guān)操 作,再輸出相關(guān)信息, 對(duì)于一些錯(cuò)誤的操作可能會(huì)造成程序運(yùn)行錯(cuò)誤的后果, 因此在輸入信 息的時(shí)候用戶請(qǐng)務(wù)必細(xì)心操作。其數(shù)據(jù)與運(yùn)行結(jié)果如下圖:運(yùn)行結(jié)果: 輸入 1遭卿驗(yàn)粋編瓷重復(fù)222半有:111號(hào)2稱卑廠項(xiàng)目類型R項(xiàng)目名稱A滾得名枕數(shù)”名衣姓名”輸

11、入:1huada1 111 taiqiu 3 1 zhao 2 qian 3 sun2 222 ticao 1 2 li2dongda1 111 taiqiu 2 4 zhou 5 wu2 222 ticao 2 1 feng 3 che n輸出:Mix at徒清薛禱其斗轉(zhuǎn)科W4MMweMMMM7 53 3二二岀分lcg 瑪鍵芟 尊 * _ -二 二僚】 一二-一 一二請(qǐng)選擇輸入: 輸出:鎚出不存入對(duì)牛輸入:2輸出:輸入:4輸出:輸入:1輸出:輸入;1輸出:口尋號(hào)型 咬咬nnnnrm獎(jiǎng) 匐路項(xiàng)疣個(gè)3有號(hào)型舉8i 目目目獎(jiǎng) 頂項(xiàng)梟有總總得 a.nins 項(xiàng)項(xiàng)目 賃項(xiàng) 團(tuán)團(tuán)校 男女口誦號(hào)目Qnun

12、獎(jiǎng)個(gè)2有H 範(fàn)筈名 目目HE獎(jiǎng) 男項(xiàng)獲 個(gè)2有八罠務(wù) 亠牝號(hào)號(hào)號(hào)璉u|ro|r號(hào) mssss前編番 暹孜咬咬暹交咬” Elisp(因?yàn)橹欢x了兩個(gè)學(xué)校,所以結(jié)果只有兩個(gè)學(xué)校的名稱)輸入:3輸出:二:二二醴出禱燉輸出:輸入:2輸出:目目目 頂頂頂12 1 B入入人有已已已輸結(jié)束程序運(yùn)行!五、源程序清單#in clude#in clude#define n 2 /參賽學(xué)校數(shù)#define m 1 /男子競(jìng)賽項(xiàng)目數(shù)#define w 1 /女子競(jìng)賽項(xiàng)目數(shù)typedef struct scoint mark5;分?jǐn)?shù)int itmn um; 項(xiàng)目編號(hào)int itmki nd;/項(xiàng)目類型char itm

13、name20;項(xiàng)目名稱char n ame10;運(yùn)動(dòng)員姓名int l; /獲獎(jiǎng)名次數(shù)int range 5;/排名sc;typedef struct schoolint scln um;學(xué)校編號(hào)char scln ame20;學(xué)校名稱sc am+w;int mscore;/男子團(tuán)體總分int wscore;/女子團(tuán)體總分int sum;/ 學(xué)校項(xiàng)目總分struct school *n ext;scl;scl *p,*q,*head,*g,*s,*u;全局指針變量/*/*/*void menu()system(cls);prin tf(=運(yùn)動(dòng)會(huì)比賽計(jì)分系統(tǒng)= n);printf(welcome)

14、;printf(編制*n);printf(* 1printf(* 2printf(* 3printf(* 4printf(* 5printf(*男子前五名依次得分:printf(*女子前三名依次得分:printf(鍵盤輸入*n);文件讀入*n);輸出*n);查詢*n);退出*n);7 分 5 分 3 分 2 分 1 分*n);5 分 3 分 2 分 *n);H*printf(/*n);n);*/* */ void compute(int i,int x,int k) if(k=3)/switch(p-ax.rangei)計(jì)分女子項(xiàng)目取前三名case 0: p-ax.markp-ax.range

15、i=0;break;case 1: p-ax.markp-ax.rangei=5;break;case 2: p-ax.markp-ax.rangei=3;break;case 3: p-ax.markp-ax.rangei=2;break;default: puts( 輸入有誤! );exit(0);elseswitch(p-ax.rangei)/男子項(xiàng)目取前五名case 0: p-ax.markp-ax.rangei=0;break;case 1: p-ax.markp-ax.rangei=7;break;case 2: p-ax.markp-ax.rangei=5;break;case

16、3: p-ax.markp-ax.rangei=3;break;case 4: p-ax.markp-ax.rangei=2;break;case 5: p-ax.markp-ax.rangei=1;break;default: puts(輸入有誤! );break;數(shù) */* 輸 scl *input()/int i,x,y=1,k;p=(scl*)malloc(sizeof(scl);創(chuàng)建鏈表輸入函數(shù)/ 頭結(jié)點(diǎn)的初始化 printf(n* 按如下格式輸入(相同學(xué)校編號(hào)不重復(fù)輸入) *n);printf(* 項(xiàng)目類型有: 111- 男子 222-女子 *n);printf(* 學(xué)校編號(hào) n*

17、 學(xué)校名稱 n* 項(xiàng)目編號(hào) 項(xiàng)目類型 項(xiàng)目名稱 獲得名次數(shù) 名次 姓名 n);p-mscore=0;p-wscore=0; scanf(%d,&p-sclnum);/輸入學(xué)校編號(hào)scanf(%s,p-sclname);/輸入學(xué)校名稱for(x=0;xax.itmnum);/輸入項(xiàng)目編號(hào)scanf(%d,&p-ax.itmkind);/ 輸入項(xiàng)目類型 scanf(%s,p-ax.itmname);/輸入項(xiàng)目名稱scanf(%d,&p-ax.l);/ 輸入獲獎(jiǎng)名次數(shù)for(i=0;iax.l;i+)scanf(%d,&p-ax.rangei);/ 輸入運(yùn)動(dòng)員的名次 scanf(%s,p-ax.na

18、me); / 運(yùn)動(dòng)員姓名if(p-ax.itmkind=222) / 計(jì)分方式判斷k=3;elsek=5;for(i=0;iax.l;i+)compute(i,x,k);/ 共兩種項(xiàng)目: 111(男子項(xiàng)目)if(p-ax.itmkind=222 )222(女子項(xiàng)目)p-wscore+=p-ax.markp-ax.rangei; elsep-mscore+=p-ax.markp-ax.rangei; /求學(xué)校總成績p-sum=p-mscore+p-wscore;head=p;q=p;*while(ymscore=0;p-wscore=0; scanf(%d,&p-sclnum); scanf(%

19、s,p-sclname);for(x=0;xax.itmnum);scanf(%d,&p-ax.itmkind);scanf(%s,p-ax.itmname); scanf(%d,&p-ax.l); for(i=0;iax.l;i+)scanf(%d,&p-ax.rangei); scanf(%s,);if(p-ax.itmkind=222)k=3;創(chuàng)建新節(jié)點(diǎn)elsek=5; for(i=0;iax.l;i+) compute(i,x,k); if(p-ax.itmkind=222) p-wscore+=p-ax.markp-ax.rangei;else p-mscore+=

20、p-ax.markp-ax.rangei;p-sum=p-mscore+p-wscore;q-next=p;q=p; p-next=NULL; menu(); return head;/*void output(scl *head)/出 函數(shù) */輸出成績scl *q=head;int i,x,y=1;FILE *fp;int co;printf(*1 不輸出,存入文件 n);printf(*2 輸出,不存入文件 n);scanf(%d,&co);switch(co)case 1:fp=fopen(d:abc.txt,w+);if(fp=NULL)printf( 無法打開文件! );exit(

21、0); while(q!=NULL)fprintf(fp,%dn,q-sclnum);for(x=0;xax.itmkind);fprintf(fp,%dtn,q-ax.l);for(i=0;iax.l;i+) fprintf(fp,%dt,q-ax.rangei);fprintf(fp,n);q=q-next;fclose(fp);break;case 2:while(q!=NULL)printf(=n); printf(學(xué)校編號(hào): t);printf(%dn,q-sclnum);printf(學(xué)校名稱: t);printf(%sn,q-sclname);for(x=0;xax.itmnum

22、);printf( 項(xiàng)目類型: t); printf(%dn,q-ax.itmkind);printf( 項(xiàng)目名稱: t);printf(%sn,q-ax.itmname);prin tf(”有 d 個(gè)獲獎(jiǎng)名次:t,q-ax.l);for(i=0;iax.l;i+)prin tf(第 d t,q-a x .ra ngei);printf(nn);printf(男子團(tuán)體項(xiàng)目總分:t%dn,q-mscore);printf(女子團(tuán)體項(xiàng)目總分:t%dn,q-wscore);printf(學(xué)校項(xiàng)目總得分:t%dnn,q-sum);printf(n);q=q-next;break;default :pu

23、ts(輸入有誤! );exit(0);/*文件讀入函數(shù)*/scl *read()FILE *fpa=NULL;int i,x,y=1,k;p=(scl *)malloc(sizeof(scl);p-mscore=0;p-wscore=0;fpa=fopen(d:abc.txt,r+);/打開文件if(fpa=NULL)puts( 對(duì)不起,無法打開文件! );exit(0);fscanf(fpa,%d,&p-sclnum);for(x=0;xax.itmnum,&p-ax.itmkind,&p-ax.l);for(i=0;iax.l;i+)fscanf(fpa,%d,&p-ax.rangei);

24、 if(p-ax.itmkind=222) k=3;elsek=5;for(i=0;iax.l;i+)compute(i,x,k);if(p-ax.itmkind=222) p-wscore+=p-ax.markp-ax.rangei;elsep-mscore+=p-ax.markp-ax.rangei; p-sum=p-mscore+p-wscore; head=p; q=p;while(ymscore=0; p-wscore=0;fscanf(fpa,%d,&p-sclnum); for(x=0;xax.itmnum,&p-ax.itmkind); fscanf(fpa,%d,&p-ax.

25、l);for(i=0;iax.l;i+) fscanf(fpa,%d,&p-ax.rangei);if(p-ax.itmkind=222)k=3;elsek=5;for(i=0;iax.l;i+)compute(i,x,k);if(p-ax.itmkind=222) p-wscore+=p-ax.markp-ax.rangei;elsep-mscore+=p-ax.markp-ax.rangei; p-sum=p-wscore+p-mscore;q-next=p;q=p;p-next=NULL; fclose(fpa);/ 關(guān)閉文件 return head;*查找數(shù) *void find(sc

26、l *head)scl *q=head;int num,x,i,cha,xiang,flag=0;printf( 按學(xué)校查找請(qǐng)輸入1,按項(xiàng)目查找請(qǐng)輸入2n);scanf(%d,&cha);if(cha=1)printf( 請(qǐng)輸入你要查詢的學(xué)校編號(hào): ); scanf(%d,&num);while(q!=NULL)if(num=q-sclnum) printf(=n); printf( 學(xué)校編號(hào) n);printf(%dn,q-sclnum); for(x=0;xax.itmnum);printf(項(xiàng)目類型 n);printf(%dtn,q-ax.itmkind);printf(”有1個(gè)獲獎(jiǎng)名次

27、:t,q-ax.l);for(i=0;iax.l;i+)prin tf(第 d t,q-a x .ra ngei);printf(nn);printf(男子團(tuán)體項(xiàng)目總分:%dn,q-mscore);printf(女子團(tuán)體項(xiàng)目總分:%dn,q-wscore);printf(學(xué)校項(xiàng)目總得分:%dnn,q-sum);printf(n);flag=1;printf(n);q=q-next;if(flag=0)puts( 對(duì)不起!沒有您要查詢的對(duì)象 );else if(cha=2)printf( 請(qǐng)輸入你要查詢的項(xiàng)目編號(hào): ); scanf(%d,&xiang);while(q!=NULL) for(x=0;xax.itmnum&q-ax.itmkind=111)printf( 獲得前 5 名的學(xué)校為 :n); for(i=0;isclnum,q-sclname); flag=1; break; else if(xiang=q-ax.itmnum&q-ax.itmki

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論