运动会比赛计分系统---1_第1页
运动会比赛计分系统---1_第2页
运动会比赛计分系统---1_第3页
运动会比赛计分系统---1_第4页
运动会比赛计分系统---1_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

1、运动会比赛计分系统一、设计目的和任务要求:初始化输入:n-参赛学校总数,m-男子竞赛项目数, w-女子竞赛项目数各项目名次取法有如下几种:取前5名:第一名得分7分,第二名得分5,第三名得分3,第四名得分2,第五名得分1;取前3名:第一名得分5,第二名得分3,第三名得分2;功能要求:(1)系统以菜单方式工作(2)由程序提醒用户填写比赛结果,输入各项目获奖运动员信息。(3)所有信息记录完毕后,用户可以查询各个学校的比赛成绩(4)查看参赛学校信息和比赛项目信息等。二、总体设计编写目的:根据要求分析文档, 初步提出问题的解决方案,以及软件系统的体系结构和数据结构的设计方案并写出书面文档总体设计说明书,

2、为下一步进行详细设计做准备。2.1总体设计该系统可以按功能进行模块划分,其模块图如下:菜单模块计分模块输入模块系统模块图其中:*菜单选择模块完成用户命令的接收,此模块是运动会比赛计分系统的入口,用户所要进行的各种操作均需在此模块中进行选择而调用其他模块实现相应的功能;* * 信息输入模块完成学校、比赛项目(以及运动员的信息) 输入功能,输入信息包括各参赛学校的编号、名称和每个学校在各比赛项目的编号、类型、名称、获奖次数、排名,以及(运动员姓名)等必要信息;* * 计分模块是对输入信息的处理,是一种必要的辅助模块;* * 输出模块包括: 1 不输出信息,读入文件中; 2 输出信息,不读入文件。其

3、中输出的信息有:学校编号、名称以及其所获奖项的项目编号、类型、名称、排名、男子总分、女子总分还有学校的总分等;* * 文件读入模块是为了满足客户需要,为了储存信息,方便使用;* * 信息查询模块完成对各信息的查询,查询时对应有两种选择以确定用户进行哪种查询。2.2 数据结构本系统中主要的数据结构就是以学校为结点建立一个链式存储结构,结点中包括学校编号、学校名称、 男子项目总分、女子项目总分、学校总分;再定义一个新的结构体是以项目信息为基础, 通过指针实现学校来对项目信息的调用, 无论是计分, 输出还是查找均以链式存储结构来实现。数据结构:学校信息:typedef struct schoolin

4、t sclnum;/ 学校编号char sclname20;/ 学校名称sc am+w;int mscore;/男子团体总分int wscore;/女子团体总分int sum;/ 学校项目总分struct school *next;scl;scl *p,*q,*head,*g,*s,*u;/全局指针变量项目信息(及运动员信息) :typedef struct scoint mark5;/分数int itmnum;/ 项目编号int itmkind;/项目类型char itmname20;/ 项目名称char name10;/ 运动员姓名int l; /获奖名次数int range5;/ 排名s

5、c;2.3 程序流程系统的执行应从输入信息功能开始,再执行菜单功能,依据用户的选择来进行后续的处理,直到用户选择退出系统为止, 其间应对用户的选择做出判断及异常处理。 系统的流程图如下:编写目的:根据项目概要设计说明书行程序编码工作。,在项目概要设计的基础之上,对系统进行详细设计,以便下一步进三、详细设计:对于总设计时的系统模块功能图,各个功能模块的处理逻辑如下1)菜单选择模块:调用void menu() /菜单函数给出信息提示; 绘制菜单(包含查询、退出) 提示菜单选择并输入变量; 根据输入变量的值调用不同的模块函数; 以下是截取的菜单函数: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(=!动会比赛计分系统=k n);printf(* *printf(* 1printf(* 2printf(* 3printf(* 4printf(* 5printf(*男子前五名依次得分:printf(*女子前三名依次得分:printf(*printf(=n);2) 信息输入模块:调用 scl *input() / 信息输入函数在输入信息时要求按照文字提示进行输入, 要输入的信息包括: 参赛学校编号, 名

7、称以及比赛项目的编号,名称,获奖名次,排名, (运动员姓名) 。建立单链表,以链式存储结构来存放学校,项目等数据;以下是输入的内容与形式:scanf(%d,&p-sclnum);/ 输入学校编号scanf(%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,p

8、-); / 运动员姓名输入结束;在输入结束结束后要调用计分模块。3)计分模块:计分模块主要是依据输入信息的不同予以判断,并以不同的计分方式来计数将节点中的数据改变,并保存。if(k=3)/女子项目取前三名else/男子项目取前五名4) 信息输出模块:根据用户的需要与选择,给出两种方式: 1、存入文件,不输出; 2 、输出,不存入文件。printf(*1 不输出,存入文件n);printf(*2 输出,不存入文件n);scanf(%d,&co);switch(co)case 1: 运用文件存储内容 ;break;case 2: 输出相应信息;break;5)文件读入模块:!此模块只

9、是用来读入文件中的信息,无实际意义,只是满足题目要求,需谨慎使用。6)信息查询模块:和输出模块相似,同样有两种选择: 1 、按学校编号查询;2 、按项目编号查询。printf( 按学校查找请输入1,按项目查找请输入2n);scanf(%d,&cha);if(cha=1)printf( 请输入你要查询的学校编号: );scanf(%d,&num);while(q!=null) 按学校输出相应信息; if(cha=2)printf( 请输入你要查询的项目编号: );scanf(%d,&xiang);while(q!=null) 按项目输出相应信息; 四、调试与测试1 .调试方法;上机运行各个模块,

10、分别调试,最后综合运行;2 . 测试结果的讨论与分析;首先必须要对程序进行数据信息输入, 对于所需不同的信息程序会自动提示用户进行相关操作, 再输出相关信息, 对于一些错误的操作可能会造成程序运行错误的后果, 因此在输入信息的时候用户请务必细心操作。其数据与运行结果如下图:运行结果: 输入 1嚼瀛哈驾铲我222号孙称皂项目类型分项目名郴濠得名次教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奖 缪霓项茯 个3 有号型 重君名 目目目奖 项项项拥 有导息得 a.d 口5 项项目 及项 团团校 子壬于 男女某号目qnun奖 工子项.获 个2 有号型sk名名 目目目奖 段项获 个2 有项项目 1项 团团校 子 rkiw -xx发芬请选imada1111taiqiu第1名第注第眸2222ticao第喔153imdonda1 in taiqiu第造第玷2222 t

12、 icao 第喀第昭3710愦学校查找请输入1,按项目查找请输入之;亘询的学校纲号;手校编号左目编号.目莞型111干3个获奖名次二第1名 第2名 第3名j目编号质目类型2z2府1个获奖名次:赛名输入:4输出:父务 总总得 目日口3 项皆 &顷 团团校 子孟十 男女13 1胶学校查找请输入l按项目查找请输入2输入:2输出:请辆人你要直询的项月编号工输入:2输出;=1:1, jiuada:1, jiuada.,dongd:2 d。119dal:2,dongda一向另另dr_另另另 饴名名名惘名名名靛 6w 口 口 -ujb 口 口 _j -4-户一7f1 -户 二-六 二厂一产 堂号号号喋口看方号

13、阳1xxk鲁ey交校eiisk(因为只定义了两个学校,所以结果只有两个学校的名称)输入:3输出:二:二二二僦出襦麹输出:4)请诩圣目目目 顶顶项1 2 1 fe人人人有已已已输结束程序运行!五、源程序清单#include#include# define n 2 /参赛学校数# define m 1 /男子竞赛项目数# define w 1 /女子竞赛项目数typedef struct scoint mark5;/分数int itmnum;/ 项目编号int itmkind;/项目类型char itmname20;/ 项目名称char name10;/运动员姓名int l; /获奖名次数int

14、range5;/ 排名sc;typedef struct schoolint sclnum;/学校编号char sclname20;/学校名称sc am+w;int mscore;/男子团体总分int wscore;/女子团体总分int sum;/ 学校项目总分struct school *next;scl;scl *p,*q,*head,*g,*s,*u;/全局指针变量/*/*/*void menu()system(cls);printf( =运动会比赛计分系统=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)计分女子项目取前三名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)/男子项目取前五名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;*/入函创建链表输入函数/* scl *input()/int i,x,y=1,k;p=(scl*)malloc(sizeof(scl);/ 头结点的初始化printf(n*按如下格式输入(相同学校编号不重复输入) *n);printf(* 项目类型有: 111- 男子222-女子 *n);printf(*学校编号 n* 学校名称 n* 项目编号 项目类型项目名称获得名次数名次姓名n);p-mscore=0;p-wscore=0;sc

18、anf(%d,&p-sclnum);/输入学校编号scanf(%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;elsek=5;for(i=0;iax.l;i+)compute(i,x,k);if(p-ax.itmkind=222 )222(女子

19、项目)输入项目编号输入项目类型输入项目名称 输入获奖名次数输入运动员的名次运动员姓名计分方式判断/共两种项目:111(男子项目)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;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;创建新节点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(学校编号:t);printf(%dn,q-sclnum);printf(学校名称:t);printf(%sn,q-sclname);for(x=0;xax.itmnum);printf(项目类型:t);printf(%dn,q-ax.itmkind);printf(项目名称: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(男子团体项目总分:t%dn,q-mscore);printf(女子团体项目总分:t%dn,q-wscore);printf( 学校项目总得分: t%dnn,q-sum);printf(n);q=q-next;break;default :puts( 输入有误! );exit(0);/*文 件 读 入 函 数*/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;关闭文件查找*/p-next=null; fclose(fpa);/ return head;/* void find(scl *head)scl *q=head;int num,x,i,cha,xiang,flag=0;printf( 按学校查找请输入1,按项目查找请输入2n);scanf(%d,&cha);if

27、(cha=1)printf( 请输入你要查询的学校编号: );scanf(%d,&num);while(q!=null)if(num=q-sclnum)printf(=n);printf( 学校编号 n);printf(%dn,q-sclnum);for(x=0;xax.itmnum);printf(项目类型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(男子团体项目总分:%dn,q-mscore);printf(女子团体项目总分:%dn,q-wscore);printf( 学校项目总得分: %dnn,q-sum);printf(n);flag=1;printf(n);q=q-next;if(flag=0)puts( 对不起!没有您要查询的对象);else if(cha=2)printf( 请输入你要查询的项目编号: );scanf(%d,&xiang);while(q!=null)for(x=0;xax.itmnum&q-ax.itmkind=111)printf( 获得前 5 名的学校为:n);for(i=0;isclnum,q-sclname);flag=

温馨提示

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

评论

0/150

提交评论