版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、運(yùn)動會比賽計(jì)分系統(tǒng)一、設(shè)計(jì)目的和任務(wù)要求:初始化輸入:n-參賽學(xué)??倲?shù),m-男子競賽項(xiàng)目數(shù), w-女子競賽項(xiàng)目數(shù)各項(xiàng)目名次取法有如下幾種:取前5名:第一名得分7分,第二名得分5,第三名得分3,第四名得分2,第五名得分1;取前3名:第一名得分5,第二名得分3,第三名得分2;功能要求:(1)系統(tǒng)以菜單方式工作(2)由程序提醒用戶填寫比賽結(jié)果,輸入各項(xiàng)目獲獎運(yùn)動員信息。(3)所有信息記錄完畢后,用戶可以查詢各個學(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)動會比賽計(jì)分系統(tǒng)的入口,用戶所要進(jìn)行的各種操作均需在此模塊中進(jìn)行選擇而調(diào)用其他模塊實(shí)現(xiàn)相應(yīng)的功能;* * 信息輸入模塊完成學(xué)校、比賽項(xiàng)目(以及運(yùn)動員的信息) 輸入功能,輸入信息包括各參賽學(xué)校的編號、名稱和每個學(xué)校在各比賽項(xiàng)目的編號、類型、名稱、獲獎次數(shù)、排名,以及(運(yùn)動員姓名)等必要信息;* * 計(jì)分模塊是對輸入信息的處理,是一種必要的輔助模塊;* * 輸出模塊包括: 1 不輸出信息,讀入文件中; 2 輸出信息,不讀入文件。其
3、中輸出的信息有:學(xué)校編號、名稱以及其所獲獎項(xiàng)的項(xiàng)目編號、類型、名稱、排名、男子總分、女子總分還有學(xué)校的總分等;* * 文件讀入模塊是為了滿足客戶需要,為了儲存信息,方便使用;* * 信息查詢模塊完成對各信息的查詢,查詢時對應(yīng)有兩種選擇以確定用戶進(jìn)行哪種查詢。2.2 數(shù)據(jù)結(jié)構(gòu)本系統(tǒng)中主要的數(shù)據(jù)結(jié)構(gòu)就是以學(xué)校為結(jié)點(diǎn)建立一個鏈?zhǔn)酱鎯Y(jié)構(gòu),結(jié)點(diǎn)中包括學(xué)校編號、學(xué)校名稱、 男子項(xiàng)目總分、女子項(xiàng)目總分、學(xué)??偡?;再定義一個新的結(jié)構(gòu)體是以項(xiàng)目信息為基礎(chǔ), 通過指針實(shí)現(xiàn)學(xué)校來對項(xiàng)目信息的調(diào)用, 無論是計(jì)分, 輸出還是查找均以鏈?zhǔn)酱鎯Y(jié)構(gòu)來實(shí)現(xiàn)。數(shù)據(jù)結(jié)構(gòu):學(xué)校信息:typedef struct schoolin
4、t sclnum;/ 學(xué)校編號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)動員信息) :typedef struct scoint mark5;/分?jǐn)?shù)int itmnum;/ 項(xiàng)目編號int itmkind;/項(xiàng)目類型char itmname20;/ 項(xiàng)目名稱char name10;/ 運(yùn)動員姓名int l; /獲獎名次數(shù)int range5;/ 排名s
5、c;2.3 程序流程系統(tǒng)的執(zhí)行應(yīng)從輸入信息功能開始,再執(zhí)行菜單功能,依據(jù)用戶的選擇來進(jìn)行后續(xù)的處理,直到用戶選擇退出系統(tǒng)為止, 其間應(yīng)對用戶的選擇做出判斷及異常處理。 系統(tǒng)的流程圖如下:編寫目的:根據(jù)項(xiàng)目概要設(shè)計(jì)說明書行程序編碼工作。,在項(xiàng)目概要設(shè)計(jì)的基礎(chǔ)之上,對系統(tǒng)進(jìn)行詳細(xì)設(shè)計(jì),以便下一步進(jìn)三、詳細(xì)設(shè)計(jì):對于總設(shè)計(jì)時的系統(tǒng)模塊功能圖,各個功能模塊的處理邏輯如下1)菜單選擇模塊:調(diào)用void menu() /菜單函數(shù)給出信息提示; 繪制菜單(包含查詢、退出) 提示菜單選擇并輸入變量; 根據(jù)輸入變量的值調(diào)用不同的模塊函數(shù); 以下是截取的菜單函數(shù):void menu()system(cls);編制
6、 *n);鍵盤輸入*n);文件讀入*n);輸出*n);查詢*n);退出*n);7分 5 分 3分2 分 1 分*n);5分3分2分*n);printf(”*welcome*n);printf(=!動會比賽計(jì)分系統(tǒng)=k n);printf(* *printf(* 1printf(* 2printf(* 3printf(* 4printf(* 5printf(*男子前五名依次得分:printf(*女子前三名依次得分:printf(*printf(=n);2) 信息輸入模塊:調(diào)用 scl *input() / 信息輸入函數(shù)在輸入信息時要求按照文字提示進(jìn)行輸入, 要輸入的信息包括: 參賽學(xué)校編號, 名
7、稱以及比賽項(xiàng)目的編號,名稱,獲獎名次,排名, (運(yùn)動員姓名) 。建立單鏈表,以鏈?zhǔn)酱鎯Y(jié)構(gòu)來存放學(xué)校,項(xiàng)目等數(shù)據(jù);以下是輸入的內(nèi)容與形式:scanf(%d,&p-sclnum);/ 輸入學(xué)校編號scanf(%s,p-sclname);/ 輸入學(xué)校名稱for(x=0;xax.itmnum);/輸入項(xiàng)目編號scanf(%d,&p-ax.itmkind);/ 輸入項(xiàng)目類型scanf(%s,p-ax.itmname);/輸入項(xiàng)目名稱scanf(%d,&p-ax.l);/ 輸入獲獎名次數(shù)for(i=0;iax.l;i+)scanf(%d,&p-ax.rangei);/輸入運(yùn)動員的名次scanf(%s,p
8、-); / 運(yùn)動員姓名輸入結(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);printf(*2 輸出,不存入文件n);scanf(%d,&co);switch(co)case 1: 運(yùn)用文件存儲內(nèi)容 ;break;case 2: 輸出相應(yīng)信息;break;5)文件讀入模塊:!此模塊只
9、是用來讀入文件中的信息,無實(shí)際意義,只是滿足題目要求,需謹(jǐn)慎使用。6)信息查詢模塊:和輸出模塊相似,同樣有兩種選擇: 1 、按學(xué)校編號查詢;2 、按項(xiàng)目編號查詢。printf( 按學(xué)校查找請輸入1,按項(xiàng)目查找請輸入2n);scanf(%d,&cha);if(cha=1)printf( 請輸入你要查詢的學(xué)校編號: );scanf(%d,&num);while(q!=null) 按學(xué)校輸出相應(yīng)信息; if(cha=2)printf( 請輸入你要查詢的項(xiàng)目編號: );scanf(%d,&xiang);while(q!=null) 按項(xiàng)目輸出相應(yīng)信息; 四、調(diào)試與測試1 .調(diào)試方法;上機(jī)運(yùn)行各個模塊,
10、分別調(diào)試,最后綜合運(yùn)行;2 . 測試結(jié)果的討論與分析;首先必須要對程序進(jìn)行數(shù)據(jù)信息輸入, 對于所需不同的信息程序會自動提示用戶進(jìn)行相關(guān)操作, 再輸出相關(guān)信息, 對于一些錯誤的操作可能會造成程序運(yùn)行錯誤的后果, 因此在輸入信息的時候用戶請務(wù)必細(xì)心操作。其數(shù)據(jù)與運(yùn)行結(jié)果如下圖:運(yùn)行結(jié)果: 輸入 1嚼瀛哈駕鏟我222號孫稱皂項(xiàng)目類型分項(xiàng)目名郴濠得名次教6名次”姓名a輸入: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 ch
11、enmmmm父刀 75出分二 二 二3 3二 二 二 二 二= 二ic罡掙退w 鴻鋌文李二一ww 輸出:請選擇.輸入: 輸出:出1aw不存入文柞輸入:2輸出:輸入:4輸出:輸入:1輸出:輸入;1輸出:口薪號型名名 相校nnnnrm獎 繆霓項(xiàng)茯 個3 有號型 重君名 目目目獎 項(xiàng)項(xiàng)項(xiàng)擁 有導(dǎo)息得 a.d 口5 項(xiàng)項(xiàng)目 及項(xiàng) 團(tuán)團(tuán)校 子壬于 男女某號目qnun獎 工子項(xiàng).獲 個2 有號型sk名名 目目目獎 段項(xiàng)獲 個2 有項(xiàng)項(xiàng)目 1項(xiàng) 團(tuán)團(tuán)校 子 rkiw -xx發(fā)芬請選imada1111taiqiu第1名第注第眸2222ticao第喔153imdonda1 in taiqiu第造第玷2222 t
12、 icao 第喀第昭3710憒學(xué)校查找請輸入1,按項(xiàng)目查找請輸入之;亙詢的學(xué)校綱號;手校編號左目編號.目莞型111干3個獲獎名次二第1名 第2名 第3名j目編號質(zhì)目類型2z2府1個獲獎名次:賽名輸入:4輸出:父務(wù) 總總得 目日口3 項(xiàng)皆 &頃 團(tuán)團(tuán)校 子孟十 男女13 1膠學(xué)校查找請輸入l按項(xiàng)目查找請輸入2輸入:2輸出:請輛人你要直詢的項(xiàng)月編號工輸入:2輸出;=1:1, jiuada:1, jiuada.,dongd:2 d。119dal:2,dongda一向另另dr_另另另 飴名名名惘名名名靛 6w 口 口 -ujb 口 口 _j -4-戶一7f1 -戶 二-六 二廠一產(chǎn) 堂號號號喋口看方號
13、陽1xxk魯ey交校eiisk(因?yàn)橹欢x了兩個學(xué)校,所以結(jié)果只有兩個學(xué)校的名稱)輸入:3輸出:二:二二二僦出襦麹輸出:4)請?jiān)偸ツ磕磕?頂頂項(xiàng)1 2 1 fe人人人有已已已輸結(jié)束程序運(yùn)行!五、源程序清單#include#include# define n 2 /參賽學(xué)校數(shù)# define m 1 /男子競賽項(xiàng)目數(shù)# define w 1 /女子競賽項(xiàng)目數(shù)typedef struct scoint mark5;/分?jǐn)?shù)int itmnum;/ 項(xiàng)目編號int itmkind;/項(xiàng)目類型char itmname20;/ 項(xiàng)目名稱char name10;/運(yùn)動員姓名int l; /獲獎名次數(shù)int
14、range5;/ 排名sc;typedef struct schoolint sclnum;/學(xué)校編號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;/全局指針變量/*/*/*void menu()system(cls);printf( =運(yùn)動會比賽計(jì)分系統(tǒng)=k n);printf(”*welcomeprintf(* *printf(* 1printf(* 2printf(* 3prin
15、tf(* 4printf(* 5printf(*男子前五名依次得分:printf(*女子前三名依次得分:編制 *n);鍵盤輸入*n);文件讀入*n);輸出*n);查詢*n);退出*n);7分 5 分 3分2 分 1 分*n);5分3分2分*n);*n);printf(*printf(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.rangei=0;break;case 1: p-ax.markp-ax.rangei=5;break;case 2
16、: 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 3: p-ax.markp-ax.rangei=3;break;case 4: p-ax.markp-ax
17、.rangei=2;break;case 5: p-ax.markp-ax.rangei=1;break;default: puts(輸入有誤! );break;*/入函創(chuàng)建鏈表輸入函數(shù)/* scl *input()/int i,x,y=1,k;p=(scl*)malloc(sizeof(scl);/ 頭結(jié)點(diǎn)的初始化printf(n*按如下格式輸入(相同學(xué)校編號不重復(fù)輸入) *n);printf(* 項(xiàng)目類型有: 111- 男子222-女子 *n);printf(*學(xué)校編號 n* 學(xué)校名稱 n* 項(xiàng)目編號 項(xiàng)目類型項(xiàng)目名稱獲得名次數(shù)名次姓名n);p-mscore=0;p-wscore=0;sc
18、anf(%d,&p-sclnum);/輸入學(xué)校編號scanf(%s,p-sclname);/輸入學(xué)校名稱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;elsek=5;for(i=0;iax.l;i+)compute(i,x,k);if(p-ax.itmkind=222 )222(女子
19、項(xiàng)目)輸入項(xiàng)目編號輸入項(xiàng)目類型輸入項(xiàng)目名稱 輸入獲獎名次數(shù)輸入運(yùn)動員的名次運(yùn)動員姓名計(jì)分方式判斷/共兩種項(xiàng)目:111(男子項(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(%s,p-sclname);for(x=0;xax.itmnum); scanf(%d,&p-ax.itmkind); scanf(%s,p-
20、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;elsep-mscore+=p-ax.markp-ax.rangei;p-sum=p-mscore+p-wscore;q-next=p;q=p; p-next=null; men
21、u();return head;/*出函輸出成績*/void output(scl *head)/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(0); while(q!=null)fprintf(fp,%dn,q-sclnum);for(x=0;xax.itmkind);fprintf(fp,%dtn,q
22、-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é)校編號:t);printf(%dn,q-sclnum);printf(學(xué)校名稱:t);printf(%sn,q-sclname);for(x=0;xax.itmnum);printf(項(xiàng)目類型:t);printf(%dn,q-ax.itmkind);printf(項(xiàng)目名稱:t);printf(%sn,q-ax.itmname);pr
23、intf(有 d 個獲獎名次:t”,q-ax.l);for(i=0;iax.l;i+)printf( 第 名 t,q-ax.rangei);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 :puts( 輸入有誤! );exit(0);/*文 件 讀 入 函 數(shù)*/scl *read()file *fpa=null;int i,x,y=1,k;p=(scl *)malloc(
24、sizeof(scl);p-mscore=0;p-wscore=0;fpa=fopen(d:abc.txt,r+);/打開文件if(fpa=null)puts( 對不起,無法打開文件!);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);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
25、-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.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;
26、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;關(guān)閉文件查找*/p-next=null; fclose(fpa);/ return head;/* void find(scl *head)scl *q=head;int num,x,i,cha,xiang,flag=0;printf( 按學(xué)校查找請輸入1,按項(xiàng)目查找請輸入2n);scanf(%d,&cha);if
27、(cha=1)printf( 請輸入你要查詢的學(xué)校編號: );scanf(%d,&num);while(q!=null)if(num=q-sclnum)printf(=n);printf( 學(xué)校編號 n);printf(%dn,q-sclnum);for(x=0;xax.itmnum);printf(項(xiàng)目類型n);printf(%dtn,q-ax.itmkind);printf(有外獲獎名次:t”,q-ax.l);for(i=0;iax.l;i+)printf(第 名 t,q-ax.rangei);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( 對不起!沒有您要查詢的對象);else if(cha=2)printf( 請輸入你要查詢的項(xiàng)目編號: );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. 本站所有資源如無特殊說明,都需要本地電腦安裝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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 河沙購銷合同版
- 借條協(xié)議補(bǔ)簽范本
- 禮儀服務(wù)合同協(xié)議書樣式示例格式
- 居家養(yǎng)老護(hù)理合同
- 陶瓷商品交易協(xié)議
- 會議現(xiàn)場服務(wù)外包合同
- 實(shí)木板材購銷合同
- 電信服務(wù)合同解除協(xié)議解讀
- 電腦購銷諒解合同
- 空調(diào)機(jī)組選購及安裝合同
- 2024年山東省煙臺市中考道德與法治試題卷
- 女性生殖健康與疾病智慧樹知到期末考試答案章節(jié)答案2024年山東中醫(yī)藥大學(xué)
- (高清版)JGT 225-2020 預(yù)應(yīng)力混凝土用金屬波紋管
- 2023-2024學(xué)年四川省綿陽市九年級上冊期末化學(xué)試題(附答案)
- 心電圖進(jìn)修匯報(bào)
- 中醫(yī)科進(jìn)修總結(jié)匯報(bào)
- 初中英語比較級和最高級專項(xiàng)練習(xí)題含答案
- 激光技術(shù)在能源、環(huán)保、農(nóng)業(yè)等領(lǐng)域的應(yīng)用
- 【高分復(fù)習(xí)筆記】周小普《廣播電視概論》筆記和課后習(xí)題詳解
- 中國玉石及玉文化鑒賞智慧樹知到期末考試答案2024年
- MOOC 物理與藝術(shù)-南京航空航天大學(xué) 中國大學(xué)慕課答案
評論
0/150
提交評論