运动会分数统计系统实验报告_第1页
运动会分数统计系统实验报告_第2页
运动会分数统计系统实验报告_第3页
运动会分数统计系统实验报告_第4页
运动会分数统计系统实验报告_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、运动会分数统计系统的实现09 计科 (2) 班 E10914044 杨素传一、设计要求1、问题描述参加运动会有n个学校,学校编码为1, 2,,n,比赛分成m个男子项目和 w个女子 项目。项目编号为男子1, 2,,m,女子m+1,m+2,m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为 7, 5 , 3 , 2, 1 ;前三名的积分分别 5, 3 , 2;哪些取前五名 或前三名由学生自己设定(m<=20,n<=20) 。2、需求分析( 1)可以输入各个项目的前三名或前五名成绩;( 2)能统计各学校成绩;( 3)可以按学校编号、学校总分、男女团体总分排序输出;( 4)可以按

2、学校编号查询学校某项目情况,可以按项目编号查询取得前三名或前五名 的学校。二、概要设计1、主界面设计为了实现运动会分数统计系统,设计一个含有多个菜单项的主控菜单子程序以连接系统的各项子程序,方便用户使用本程序。本系统主控菜单运行界面图 1 所示。图 1 运动会分数统计系统程序主菜单2、存储结构设计本程序采用链式存储类型(LNode)存储运动会分数统计系统的节点信息。运动会分数统计系统的链表中的结点包括8 个域:项目编号域( objnum ) 、项目类型( objtype ) 、运动员编号 ( athnum) 、 运动员姓名 ( athname20 ) 、 学校编号( schnum) 、 校名

3、( schname30 ) 、运动员分数( athscore )和指向下一个节点的指针欲(struct LNode *next )。3、系统功能设计本系统设置了 8个子功能菜单。8个子功能的设计描述如下:(1)录入各项目的成绩。由函数 creatLink() 实现。当用户选择该功能时,系统会以 用户输入的数据运动会分数统计链表。(2)统计各学校分数。由函数 schoolScore()实现。当用户选择该功能时,系统会统 计各学校分数。(3)按学校编号顺序输出。由函数printfSchoolNumber() 实现。当用户选择该功能时,系统会按学校编号顺序输出数据。(4)按学校总分顺序输出。由函数

4、printfSchoolScore() 实现。当用户选择该功能时, 系统会按学校总分顺序输出数据。(5)按男女团体总分顺序输出。由函数 printfManWomanScore()实现。当用户选择该 功能时,系统会按男女团体总分顺序输出数据。(6)按学校编号查询学校某项目情况。由函数 printfSchoolObject() 实现。当用户选 择该功能时,系统会按学校编号输出学校某项目情况。(7)按项目编号查询取得前三名或前五名的学校。由函数printfObjectSchool() 实现。当用户选择该功能时,系统会按项目编号查询取得前三名或前五名的学校情况。(8)退出。由exit(0)函数实现。三

5、、模块设计1、模块设计本程序包含两个模块:主程序模块和工作区选择模块。其调用关系如图2所示。主程序模块工作区选择模块图2模块调用示意图2、系统子程序及功能设计本系统共设置个6子程序,各子程序的函数名及功能说明如下。(1)LinkList creatLink()/创建链表(录入各项目的成绩)(2)int schoolScore(LinkList L)/统计各学校总分(3)void printfSchoolNumber()/按学校编号顺序输出(4)void printfSchoolScore()/按学校总分顺序输出(5)void printfManWomanScore(LinkList L /按男

6、女团体总分排序输出(6)void printfSchoolObject(LinkList L) /情况按学校编号查询学校某项目void printfObjectSchool(LinkListL)前五名的学校/ 按项目编号查询取得前二名或(8)int main()/主函数3、函数主要调用关系图本系统6个子系统之间的主要调用关系如图3所示,图中数字是各函数的编号。8 main()四、详细设计1、数据类型定义(1)本系统采用链式结构存储运动会分数统计的结点。节点定义如下:typedef struct LNode链表节点数据结构int objnum;char objtype;int athnum;ch

7、ar athname20;int schnum;char schname30;int athscore;struct LNode *next;LNode,*LinkList;(2)各学校情况数据结构的结构定义成结构体数组形式。定义如下:struct Schoolint schoolnumber;char schoolname30;int schoolscore;school30;2、系统主要子程序详细设计(1)创建链表(录入各项目的成绩)子程序设计LinkList creatLink()LinkList L=(LinkList)malloc(LEN);LinkList p,q;int num,

8、objnum,n;char objtype;L->next=NULL;p=L;printf(" 请输入男女项目总个数:");scanf("%d",&num);while(num-)printf("请输入项目编号:");scanf("%d",&objnum);printf("请输入项目类型:");getchar();objtype=getchar();printf(" 请输入 3( 代表取前三名 )或 5(代表取前五名 ):");scanf("%

9、d",&n);printf(" 请按名次顺序输入运动员编号, 姓名 , 学校编号 , 校名和成绩n");while(n-)q=(LinkList)malloc(LEN);q->objnum=objnum;q->objtype=objtype;printf("请输入运动员编号:");scanf("%d",&q->athnum);printf("请输入运动员姓名:");getchar();scanf("%s",q->athname);printf(&

10、quot; 请输入学校编号:");scanf("%d",&q->schnum);printf(" 请输入校名 :");getchar();scanf("%s",q->schname);printf(" 请输入成绩:");scanf("%d",&q->athscore);q->next=NULL;p->next=q;p=q;return(L);( 2 )统计各学校总分子程序设计int schoolScore(LinkList L)LinkLi

11、st p;int i;p=L->next;for(i=0;i<20;i+)schooli.schoolscore=0;schooli.schoolnumber=-1;while(!p=NULL)for(i=0;i<20;i+)if(schooli.schoolnumber=-1)strcpy(schooli.schoolname,p->schname);schooli.schoolnumber=p->schnum;schooli.schoolscore=p->athscore;p=p->next; break;else if(schooli.schoo

12、lnumber=p->schnum) schooli.schoolscore+=p->athscore;p=p->next;break;return 0;五、测试分析1、创建链表(录入各项目的成绩)在主菜单下,用户输入 1 并回车,然后输入数据结点的个数并回车,再输入数据,运行结果如图 4 所示。图 4 链表建立(录入各项目的成绩)2、统计各学校总分在主菜单下,用户输入 2 并回车,运行结果如图 5 所示。图 5 统计各学校总分3、按学校编号顺序输出在主菜单下,用户输入 3 并回车,运行结果如图 6 所示。图 6 按学校编号顺序输出的数据4、按学校总分顺序输出在主菜单下,用户

13、输入 4 并回车,运行结果如图 7 所示。图 7 按学校总分顺序输出的数据5、按男女团体总分排序输出在主菜单下,用户输入 5 并回车,运行结果如图 8 所示。图 8 按男女团体总分排序输出的数据6、按学校编号查询学校某项目情况在主菜单下,用户输入 6 并回车,再输入学校编号回车,然后输入项目编号,运行结果如图 9 所示。图 9 按学校编号查询学校某项目情况6、按项目编号查询取得前三名或前五名的学校在主菜单下,用户输入 7 并回车,再输入项目编号回车,然后输入取名规则,运行结果如图 10 所示。图 10 按项目编号查询取得前三名或前五名的学校8、退出在主菜单下,用户输入 0 并回车,运行结果如图

14、 11 所示。图 11 退出程序六、源程序清单#include<stdio.h>#include<stdlib.h>#include<string.h>#define NULL 0#define LEN sizeof(LNode)typedef struct LNode/ 链表节点数据结构 int objnum;char objtype;int athnum;char athname20;int schnum;char schname30;int athscore;struct LNode *next;LNode,*LinkList;/ 学校情况数据结构st

15、ruct Schoolint schoolnumber;char schoolname30;int schoolscore;school30;/ 创建链表LinkList creatLink()LinkList L=(LinkList)malloc(LEN);LinkList p,q;int num,objnum,n;char objtype;L->next=NULL;p=L;printf(" 请输入男女项目总个数:");scanf("%d",&num);while(num-)printf("请输入项目编号:");sca

16、nf("%d",&objnum);printf("请输入项目类型:");getchar();objtype=getchar();printf(" 请输入 3( 代表取前三名 ) 或 5(代表取前五名 ):");scanf("%d",&n);printf(" 请按名次顺序输入运动员编号 , 姓名 , 学校编号 , 校名和成绩n");while(n-)q=(LinkList)malloc(LEN);q->objnum=objnum;q->objtype=objtype;p

17、rintf("请输入运动员编号:");scanf("%d",&q->athnum);printf("请输入运动员姓名:");getchar();scanf("%s",q->athname);printf(" 请输入学校编号:");scanf("%d",&q->schnum);printf(" 请输入校名 :");getchar();scanf("%s",q->schname);printf(&qu

18、ot; 请输入成绩:");scanf("%d",&q->athscore);q->next=NULL;p->next=q;p=q;return(L);/ 统计各学校总分int schoolScore(LinkList L)LinkList p;int i;p=L->next;for(i=0;i<20;i+)schooli.schoolscore=0;schooli.schoolnumber=-1;while(!p=NULL)for(i=0;i<20;i+)if(schooli.schoolnumber=-1)strcpy

19、(schooli.schoolname,p->schname);schooli.schoolnumber=p->schnum;schooli.schoolscore=p->athscore;p=p->next;break;else if(schooli.schoolnumber=p->schnum) schooli.schoolscore+=p->athscore;p=p->next;break;return 0;/ 按学校编号顺序输出void printfSchoolNumber()int i,j,num,flag;printf(" 学校编

20、号 校 名 学校总分 n");for(i=0;i+)if(schooli.schoolnumber=-1)break;num=school0.schoolnumber;flag=0;for(j=1;j+)if(schoolj.schoolnumber=-1)break;if(schoolj.schoolnumber<num)num=schoolj.schoolnumber;flag=j;printf("%8d%10s%12dn",schoolflag.schoolnumber,schoolflag.schoolname,sc hoolflag.schools

21、core);schoolflag.schoolnumber=35565;/ 按学校总分顺序输出void printfSchoolScore()int i,j,sco,flag;printf(" 学校编号 校 名 学校总分 n");for(i=0;i+)if(schooli.schoolscore=0)break;sco=school0.schoolscore;flag=0;for(j=1;j+)if(schoolj.schoolscore=0)break;if(schoolj.schoolscore>sco)sco=schoolj.schoolscore;flag=j

22、;printf("%8d%10s%12dn",schoolflag.schoolnumber,schoolflag.schoolname,sc hoolflag.schoolscore);schoolflag.schoolscore=-1;/ 按男女团体总分排序输出void printfManWomanScore(LinkList L)LinkList p;int manscore=0,womanscore=0;p=L->next;while(!p=NULL)if(p->objtype='m')manscore+=p->athscore;e

23、lse womanscore+=p->athscore;p=p->next;printf(" 团体 总分 n");if(manscore>=womanscore)printf("男生 %8dn",manscore);printf("女生 %8dn",womanscore);else printf("女生 %8dn",womanscore);printf("男生 %8dn",manscore);/ 按学校编号查询学校某项目情况void printfSchoolObject(Lin

24、kList L)LinkList p;int scnum,obnum,sum=0;char scname30;p=L->next;printf(" 请输入要查看的学校编号:");scanf("%d",&scnum);printf(" 请输入项目编号:");scanf("%d",&obnum);while(p!=NULL)if(p->schnum=scnum&&p->objnum=obnum)sum+=p->athscore;strcpy(scname,p-&g

25、t;sc hname);p=p->next;printf(" 学校编号 校 名 项目编号 获得总分 n");printf("%8d%10s%12d%12dn",scnum,scname,obnum,sum);/ 按项目编号查询取得前三名或前五名的学校void printfObjectSchool(LinkList L)LinkList p;int obnum,n,i;p=L->next;printf(" 请输入要查看的项目编号:");scanf("%d",&obnum);printf("

26、; 请输入 3( 前三名 ) 或 5( 前五名 ):");scanf("%d",&n);for(i=20;i<30;i+)schooli.schoolscore=0;schooli.schoolnumber=-1;while(p!=NULL)for(i=20;i<30;i+)if(schooli.schoolnumber=-1&&p->objnum=obnum) strcpy(schooli.schoolname,p->schname);schooli.schoolnumber=p->schnum; schoo

27、li.schoolscore=p->athscore; p=p->next;break;else if(schooli.schoolnumber=p->schnum&&p->objnum=obnum) schooli.schoolscore+=p->athscore;p=p->next;break;elsep=p->next;break;printf(" 项目编号 学校编号校 名 学校总分 n");/*i=20;while(n-)if(schooli.schoolscore!=0)printf("%8d%1

28、2d%10s%12dn",obnum,schooli.schoolnumber,schooli.schoolnam e,schooli.schoolscore);i+;else break;*/p=L->next;while(p->objnum!=obnum)p=p->next; while(n-)printf("%8d%12d%10s%12dn",obnum,p->schnum,p->schname,p->athscore);p=p->next;/ 主函数int main()LinkList L;int menu;while(menu!=0)printf("*n");printf(" printf("printf("printf("printf(&

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论