

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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 数据结构本系统中主要的数据结构就是以学校为结点建立一个链式存储结构,结点中包括学校编号、学校名称、男子项目总分、女子项目总分、学校总分;再定义一个新的结构体是以项目信息为基础,通过指针实现学校来对项目信息的调用,无论是计分,输出还是查找均以链式存储结构来实现。数据结构:学校信息:typedefstructschoolintsclnum;/学校编号ch
4、arsclname20;/学校名称scam+w;intmscore;/男子团体总分intwscore;/女子团体总分intsum;/学校项目总分structschool*next;scl;scl*p,*q,*head,*g,*s,*u;/全局指针变量项目信息(及运动员信息):typedefstructscointmark5;/分数intitmnum;/项目编号intitmkind;/项目类型charitmname20;/项目名称charname10;/运动员姓名intl;/获奖名次数intrange5;/排名sc;2.3 程序流程系统的执行应从输入信息功能开始,再执行菜单功能,依据用户的选择来
5、进行后续的处理直到用户选择退出系统为止,其间应对用户的选择做出判断及异常处理。系统的流程图如下:根据项目概要设计说明书,在项目概要设计的基础之上,对系统进行详细设计,以便下一步进行程序编码工作。三、详细设计:对于总设计时的系统模块功能图,各个功能模块的处理逻辑如下:1) 菜单选择模块:调用voidmenu()/菜单函数给出信息提示;绘制菜单(包含查询、退出);提示菜单选择并输入变量;根据输入变量的值调用不同的模块函数;以下是截取的菜单函数:voidmenu()system("cls");printf("=运动会比赛计分系统=、);printf("*wel
6、comeprintf("*编制*n");printf("*1>>键盘输入*n");printf("*2>>文件读入*n");printf("*3>>输出*n");printf("*4>>查询*n");printf("*5>>退出*n");printf("*男子前五名依次得分:7分5分3分2分1分*n");printf("*女子前三名依次得分:5分3分2分*n");rz*>
7、r114-(%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx-tk、I1rIlliIIIIJprintf("=n");2) 信息输入模块:调用scl*input()/信息输入函数在输入信息时要求按照文字提示进行输入,要输入的信息包括:参赛学校编号,名称以及比赛项目的编号,名称,获奖名次,排名,(运
8、动员姓名)。建立单链表,以链式存储结构来存放学校,项目等数据;以下是输入的内容与形式:scanf("%d",&p-sclnum);/输入学校编号scanf("%s",p-sclname);/输入学校名称for(x=0;x<m+w;x+)scanf("%d",&p-ax.itmnum);/输入项目编号scanf("%d",&p-ax.itmkind);/输入项目类型scanf("%s",p-ax.itmname);/输入项目名称scanf("%d"
9、,&p-ax.l);/输入获奖名次数for(i=0;i<p-ax.l;i+)scanf("%d",&p-ax.rangei);/输入运动员的名次scanf("%s",);/运动员姓名输入结束;在输入结束结束后要调用计分模块。3) 计分模块:计分模块主要是依据输入信息的不同予以判断,并以不同的计分方式来计数将节点中的数据改变,并保存。if(k=3)/女子项目取前三名else/男子项目取前五名4) 信息输出模块:根据用户的需要与选择,给出两种方式:1、存入文件,不输出;2、输出,不存入文件printf("*l
10、不输出,存入文件n");printf("*2输出,不存入文件n");scanf("%d",&co);switch(co)Case1:运用文件存储内容;break;Case2:输出相应信息;break;5) 文件读入模块:!此模块只是用来读入文件中的信息,无实际意义,只是满足题目要求,需谨慎使用6) 信息查询模块:和输出模块相似,同样有两种选择:1、按学校编号查询;2、按项目编号查询。printf("按学校查找请输入1,按项目查找请输入2n");scanf("%d",&cha);if(cha
11、=1)printf(请输入你要查询的学校编号:);scanf("%d",&num);while(q!=NULL)按学校输出相应信息;if(cha=2)printf(请输入你要查询的项目编号:);scanf("%d",&xiang);while(q!=NULL)按项目输出相应信息;四、调试与测试1. 调试方法;上机运行各个模块,分别调试,最后综合运行;2. 测试结果的讨论与分析;首先必须要对程序进行数据信息输入,对于所需不同的信息程序会自动提示用户进行相关操作,再输出相关信息,对于一些错误的操作可能会造成程序运行错误的后果,因此在输入信息的
12、时候用户请务必细心操作。其数据与运行结果如下图:运行结果:输入1(相同学校编号不重复執入)*222女子*项貝类型有:男子项目编号”项目类型”项目名称”获得名次数”名次”姓名”输入:1huada1111taiqiu31zhao2qian3sun2222ticao12li2dongda1111taiqiu24zhou5wu2222ticao21feng3chen输出:输入3输出*1丕输岀,宣裒仟*2输出,不存入文仁输入2输出1huada1111taiqiu第1名第2名第玮2222ticao第2名15318一一蒸号型接一一咬咬耳§-m一一冲S于项项项疣一一个-3有号型接目目目奖项项项疣个八
13、X务总总爲项项曰借项团团校尹S于男女dongda1illtaiqiu第4名第昭2222ticao第诧第玮710口鬲号型目目目奖屮盂于项项项疣,八2有018H目目目奖项项项获个2有八ss'zl总总猖tnitni口s项项目借项团团校男女»»»»请选输入:4输出:安学校查找请输入1,按项目查找请输入乂输入:1输出:输入;1输出:学校编号1项目编号1项目类型111有2个获奖名次:第1名第2名第2名1页目编号毓目类型222有1个获奖名挨:第2名58131八s:帶总总趕目tni吕项项目廉项团团校子工于男女»»»»请选择
14、;入出入出入出输输输输输输输入:3输出:输出:按学校查找请输入1,按项目查找请输入2(因为只定义了两个学校,所以结果只有两个学校的名称)»»»»请选择输入:2输出:目目目项项项atx121-vr-入入入有读读rUrUr输结束程序运行!五、源程序清单#include<stdio.h>#include<stdlib.h>#definen2/参赛学校数#definem1/男子竞赛项目数#definew1/女子竞赛项目数typedefstructscointmark5;/分数intitmnum;/项目编号intitmkind;/项目类型c
15、haritmname20;/项目名称charname10;/运动员姓名intl;/获奖名次数intrange5;/排名sc;typedefstructschoolintsclnum;/学校编号charsclname20;/学校名称scam+w;intmscore;/男子团体总分intwscore;/女子团体总分intsum;/学校项目总分structschool*next;scl;scl*p,*q,*head,*g,*s,*u;/全局指针变量/*A*A*A*4>*4>*/<T>XT»XT»/*菜单函数«A»«A»
16、;«A»«X»«A»«J>»«J>»«J>»«J>»«J>»«J>»«J>»«J>»«J>»«J>»«J>»«J>»«J>»«J>»«J>»«
17、;J>»«J>»«J>»«J>»«J>»«J>»«J>»«J>»«J>»*A*A*A*A*/XTXXTXXT>/voidmenu()system("cls");printf("=运动会比赛计分系统=、);printf("*welcomeprintf("*编制*n");printf("*1>&g
18、t;键盘输入*n");printf("*2>>文件读入*n");printf("*3>>输出*n");printf("*4>>查询*n");printf("*5>>退出*n");printf("*男子前五名依次得分:7分5分3分2分1分*n");printf("*女子前三名依次得分:5分3分2分*n");rz*>r114-(%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx
19、%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx%lx-tk、I1rIlliIIIIJprintf("=n");/*计分函*i*i*i*i*i*i*i*i*i*i*i*i*i*i*i*i*i*i*i*i*i*i*i*i*i*i*i*i*i*i*i*/voidcompute(inti,intx,intk)if(k=3)/女子项目取前三名switch(p->ax.rangei)case0:
20、p->ax.markp->ax.rangei=0;break;case1:p->ax.markp->ax.rangei=5;break;case2:p->ax.markp->ax.rangei=3;break;case3:p->ax.markp->ax.rangei=2;break;default:puts("输入有误!");exit(0);elseswitch(p->ax.rangei)/男子项目取前五名case0:p->ax.markp->ax.rangei=0;break;case1:p->ax.
21、markp->ax.rangei=7;break;case2:p->ax.markp->ax.rangei=5;break;case3:p->ax.markp->ax.rangei=3;break;case4:p->ax.markp->ax.rangei=2;break;case5:p->ax.markp->ax.rangei=1;break;default:puts("输入有误!");break;入函数*/创建链表输入函数/*x*x*x*x*x*x*x*x*x*x*x*x*x*x*X*X*X*/*输scl*input(
22、)inti,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;scanf("%d",&p-sclnum);/输入学校编号scanf("%s",p-sclname);/输入学校名称for(
23、x=0;x<m+w;x+)scanf("%d",&p-ax.itmnum);/输入项目编号scanf("%d",&p-ax.itmkind);/输入项目类型scanf("%s",p-ax.itmname);/输入项目名称scanf("%d",&p-ax.l);/输入获奖名次数for(i=0;i<p-ax.l;i+)scanf("%d",&p-ax.rangei);/输入运动员的名次scanf("%s",);/运动员
24、姓名if(p-ax.itmkind=222)/计分方式判断k=3;elsek=5;for(i=0;i<p-ax.l;i+)compute(i,x,k);if(p-ax.itmkind=222)/共两种项目:111(男子项目)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;/jsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsj
25、sjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjs/while(y<n)/创建新节点y+;/计数:控制输入学校的个数p=(scl*)malloc(sizeof(scl);p->mscore=0;p->wscore=0;scanf("%d",&p->sclnum);scanf("%s",p->sclname);for(x=0;x<m+w;x+)scanf("%d",&p->ax.itmnum)
26、;scanf("%d",&p->ax.itmkind);scanf("%s",p->ax.itmname);scanf("%d",&p->ax.l);for(i=0;i<p->ax.l;i+)scanf("%d",&p->ax.rangei);scanf("%s",p->);if(p->ax.itmkind=222)k=3;elsek=5;for(i=0;i<p->ax.l;i+)compute(i
27、,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;menu();returnhead;出函数*/输出成绩/*输voidoutput(scl*head)scl*q=head;inti,x,y=1;FILE*fp;intco;printf("*l不输出,存入文件n&
28、quot;);printf("*2输出,不存入文件n");scanf("%d",&co);switch(co)case1:fp=fopen("d:abc.txt","w+");if(fp=NULL)printf("无法打开文件!");exit(0);while(q!=NULL)fprintf(fp,"%dn",q->sclnum);for(x=0;x<m+w;x+)fprintf(fp,"%dtn",q->ax.itmkind);
29、fprintf(fp,"%dtn",q->ax.l);for(i=0;i<q->ax.l;i+)fprintf(fp,"%dt",q->ax.rangei);fprintf(fp,"n");q=q->next;fclose(fp);break;case2:while(q!=NULL)printf("=n");printf("学校编号:t");printf("%dn",q->sclnum);printf("学校名称:t")
30、;printf("%sn",q->sclname);for(x=0;x<m+w;x+)printf("项目编号:t");printf("%dn",q->ax.itmnum);printf("项目类型:t");printf("%dn",q->ax.itmkind);printf("项目名称:t");printf("%sn",q->ax.itmname);printf("有%小个获奖名次:t",q-ax.l);
31、for(i=0;i<q->ax.l;i+)printf("第%d£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);/*文件
32、读入函数*/scl*read()FILE*fpa=NULL;inti,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("对不起,无法打开文件!");exit(0);fscanf(fpa,"%d",&p-sclnum);for(x=0;x<m+w;x+)printf("已读入d个项目n",x+l);fscanf(fpa,
33、"%d%d%d",&p-ax.itmnum,&p-ax.itmkind,&p-ax.l);for(i=0;i<p-ax.l;i+)fscanf(fpa,"%d",&p-ax.rangei);if(p-ax.itmkind=222)k=3;elsek=5;for(i=0;i<p->ax.l;i+)compute(i,x,k);if(p->ax.itmkind=222)p->wscore+=p->ax.markp->ax.rangei;elsep->mscore+=p->a
34、x.markp->ax.rangei;p->sum=p->mscore+p->wscore;head=p;q=p;while(yn)/控制输入学校个数y+;p=(scl*)malloc(sizeof(scl);p->mscore=0;p->wscore=0;fscanf(fpa,"%d",&p->sclnum);for(x=0;xm+w;x+)printf("已读入d个项目n",x+l);fscanf(fpa,"%d%d",&p->ax.itmnum,&p->
35、;ax.itmkind);fscanf(fpa,"%d",&p->ax.l);for(i=0;ip->ax.l;i+)fscanf(fpa,"%d",&p->ax.rangei);if(p->ax.itmkind=222)k=3;elsek=5;for(i=0;ip->ax.l;i+)compute(i,x,k);if(p->ax.itmkind=222)p->wscore+=p->ax.markp->ax.rangei;elsep->mscore+=p->ax.markp
36、->ax.rangei;p->sum=p->wscore+p->mscore;q->next=p;q=p;p->next=NULL;fclose(fpa);/关闭文件returnhead;/*查找函数*/voidfind(scl*head)scl*q=head;intnum,x,i,cha,xiang,flag=0;printf("按学校查找请输入1,按项目查找请输入2n");scanf("%d",&cha);if(cha=1)printf(请输入你要查询的学校编号:);scanf("%d"
37、,&num);while(q!=NULL)if(num=q->sclnum)printf("=n");printf("学校编号n");printf("%dn",q->sclnum);for(x=0;x<m+w;x+)printf("项目编号n");printf("%dtn",q->ax.itmnum);printf("项目类型n");printf("%dtn",q->ax.itmkind);printf("有
38、%d个获奖名次:t",q-ax.l);for(i=0;i<q->ax.l;i+)printf("第%d£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(对不起!没有您要查询的对象");elseif(cha=2)printf(请输入你要查询的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 贵州健康职业学院《三维专业软件》2023-2024学年第二学期期末试卷
- 大连工业大学艺术与信息工程学院《软件系统设计与体系结构》2023-2024学年第二学期期末试卷
- 智能设备保密教育
- 2025届广东省云浮高三5月第一次联考语文试题试卷含解析
- 广东文艺职业学院《空气调节与通风》2023-2024学年第一学期期末试卷
- 山西航空职业技术学院《面向对象原理与语言实验》2023-2024学年第二学期期末试卷
- 崇左幼儿师范高等专科学校《设施工程专业课程实验》2023-2024学年第二学期期末试卷
- 无线网络配置试题及答案
- 《2025合同解除与终止操作指引》
- 吉林投资施工方案
- 2024-2025学年北师大版数学七年级下第一次月考模拟练习(含答案)
- 2025年广西职业院校技能大赛高职组(智慧物流赛项)参考试题库及答案
- 2024年内蒙古各地区中考语文文言文阅读试题(含答案解析与翻译)
- 2025年春新北师大版数学一年级下册课件 三 20以内数与减法 第3课时 凑数游戏
- 《义务教育信息科技教学指南》有效应用策略
- 2024年低碳生活科普知识竞赛题库
- 2025-2030全球藻源虾青素行业调研及趋势分析报告
- 2025年广东深圳市慢性病防治中心选聘专业技术人员3人历年高频重点提升(共500题)附带答案详解
- 新生儿感染的个案护理
- 国省道公路标志标线维护方案投标文件(技术方案)
- 面具的设计制作课件
评论
0/150
提交评论