版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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 schooli
4、nt 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;/
5、排名sc;2.3 程序流程 系统的执行应从输入信息功能开始,再执行菜单功能,依据用户的选择来进行后续的处理, 直到用户选择退出系统为止, 其间应对用户的选择做出判断及异常处理。 系统的流程图如下:*1结束开始执行菜单模块文件读入函数选择1输入项目编 号、名称、 获奖名次数 排名、运动 员姓名输入学校编 号、名称,按学校排 +/名输出学 校和项目 信息计分函数n07编写目的:根据项目概要设计说明书行程序编码工作。,在项目概要设计的基础之上,对系统进行详细设计,以便下一步进三、详细设计:对于总设计时的系统模块功能图,各个功能模块的处理逻辑如下1) 菜单选择模块:调用void menu() /菜单函
6、数给出信息提示;绘制菜单(包含查询、退出);提示菜单选择并输入变量;根据输入变量的值调用不同的模块函数;以下是截取的菜单函数:void menu()system(cls);prin tf(=运动会比赛计分系统= 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) 信息输入模块: 调用 scl *input() / 信息输入函数在输入信息时要求按照文字提示进行输入, 要输入的信息包括: 参赛学校编号, 名称以 及比赛项目的编号,名称,获奖名次,排名, (运动员姓名) 。 建立单链表,以链式存储结构来存放学校,项目等数据; 以下是输入的内容与形式:scanf(%d,&p-sclnum);/ 输入学校编号 scanf(%s,p-sclname);/ 输入学校名称 for(x=0;xax.itmnum);/输入项目编号scanf(%d,&p-ax.itmkind);/输入项目类型scanf(%s,p-ax.itmn
8、ame);/输入项目名称scanf(%d,&p-ax.l);/输入获奖名次数for(i=0;iax.l;i+)scanf(%d,&p-ax.rangei);/输入运动员的名次scanf(%s,); /运动员姓名输入结束;在输入结束结束后要调用计分模块。3) 计分模块: 计分模块主要是依据输入信息的不同予以判断,并以不同的计分方式来计数将节点中 的数据改变,并保存。if(k=3)/女子项目取前三名else / 男子项目取前五名4) 信息输出模块:根据用户的需要与选择,给出两种方式: 1、存入文件,不输出; 2、输出,不存入文件。printf(*1 不输出,存入文件 n);pri
9、ntf(*2 输出,不存入文件 n);scanf(%d,&co);switch(co)Case 1: 运用文件存储内容 ;break;Case 2: 输出相应信息 ;break;5) 文件读入模块: !此模块只是用来读入文件中的信息,无实际意义,只是满足题目要求,需谨慎使用。6) 信息查询模块: 和输出模块相似,同样有两种选择:1、按学校编号查询; 2、按项目编号查询。printf( 按学校查找请输入 1,按项目查找请输入 2n);scanf(%d,&cha);if(cha=1)printf( 请输入你要查询的学校编号: );scanf(%d,&num);while(q!=NULL) 按学校输
10、出相应信息; if(cha=2)printf( 请输入你要查询的项目编号: );scanf(%d,&xiang);while(q!=NULL) 按项目输出相应信息; 四、调试与测试1. 调试方法; 上机运行各个模块,分别调试,最后综合运行;2. 测试结果的讨论与分析; 首先必须要对程序进行数据信息输入, 对于所需不同的信息程序会自动提示用户进行相关操 作,再输出相关信息, 对于一些错误的操作可能会造成程序运行错误的后果, 因此在输入信 息的时候用户请务必细心操作。其数据与运行结果如下图:运行结果: 输入 1遭卿验粋編瓷重复222半有:111号2称卑厂项目类型R项目名称A滾得名枕数”名衣姓名”输
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徒清薛祷其斗轉科W4MMweMMMM7 53 3二二岀分lcg 玛键芟 尊 * _ -二 二僚】 一二-一 一二请选择输入: 输出:鎚出不存入对牛输入:2输出:输入:4输出:输入:1输出:输入;1输出:口尋号型 咬咬nnnnrm奖 匐路项疣个3有号型舉8i 目目目奖 顶项枭有总总得 a.nins 项项目 赁项 团团校 男女口诵号目Qnun
12、奖个2有H 範筈名 目目HE奖 男项获 个2有八罠务 亠牝号号号琏u|ro|r号 mssss前編番 暹孜咬咬暹交咬” Elisp(因为只定义了两个学校,所以结果只有两个学校的名称)输入:3输出:二:二二醴出禱燉输出:输入:2输出:目目目 顶顶顶12 1 B入入人有已已已输结束程序运行!五、源程序清单#in clude#in clude#define n 2 /参赛学校数#define m 1 /男子竞赛项目数#define w 1 /女子竞赛项目数typedef struct scoint mark5;分数int itmn um; 项目编号int itmki nd;/项目类型char itm
13、name20;项目名称char n ame10;运动员姓名int l; /获奖名次数int range 5;/排名sc;typedef struct schoolint scln um;学校编号char scln ame20;学校名称sc am+w;int mscore;/男子团体总分int wscore;/女子团体总分int sum;/ 学校项目总分struct school *n ext;scl;scl *p,*q,*head,*g,*s,*u;全局指针变量/*/*/*void menu()system(cls);prin tf(=运动会比赛计分系统= 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)计分女子项目取前三名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)/男子项目取前五名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;数 */* 输 scl *input()/int i,x,y=1,k;p=(scl*)malloc(sizeof(scl);创建链表输入函数/ 头结点的初始化 printf(n* 按如下格式输入(相同学校编号不重复输入) *n);printf(* 项目类型有: 111- 男子 222-女子 *n);printf(* 学校编号 n*
17、 学校名称 n* 项目编号 项目类型 项目名称 获得名次数 名次 姓名 n);p-mscore=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-ax.itmname);/输入项目名称scanf(%d,&p-ax.l);/ 输入获奖名次数for(i=0;iax.l;i+)scanf(%d,&p-ax.rangei);/ 输入运动员的名次 scanf(%s,p-ax.na
18、me); / 运动员姓名if(p-ax.itmkind=222) / 计分方式判断k=3;elsek=5;for(i=0;iax.l;i+)compute(i,x,k);/ 共两种项目: 111(男子项目)if(p-ax.itmkind=222 )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; 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;创建新节点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)/出 函数 */输出成绩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(学校编号: t);printf(%dn,q-sclnum);printf(学校名称: t);printf(%sn,q-sclname);for(x=0;xax.itmnum
22、);printf( 项目类型: t); printf(%dn,q-ax.itmkind);printf( 项目名称: t);printf(%sn,q-ax.itmname);prin tf(”有 d 个获奖名次:t,q-ax.l);for(i=0;iax.l;i+)prin tf(第 d t,q-a x .ra ngei);printf(nn);printf(男子团体项目总分:t%dn,q-mscore);printf(女子团体项目总分:t%dn,q-wscore);printf(学校项目总得分:t%dnn,q-sum);printf(n);q=q-next;break;default :pu
23、ts(输入有误! );exit(0);/*文件读入函数*/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( 对不起,无法打开文件! );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);/ 关闭文件 return head;*查找数 *void find(sc
26、l *head)scl *q=head;int num,x,i,cha,xiang,flag=0;printf( 按学校查找请输入1,按项目查找请输入2n);scanf(%d,&cha);if(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(”有1个获奖名次
27、:t,q-ax.l);for(i=0;iax.l;i+)prin tf(第 d t,q-a x .ra ngei);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; break; else if(xiang=q-ax.itmnum&q-ax.itmki
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 44290-2024木材与木制品生物碳含量计算方法
- 眼部化妆品项目运营指导方案
- 石灰制药剂项目营销计划书
- 创意雕塑艺术行业市场调研分析报告
- 家用除湿机产业链招商引资的调研报告
- 加油站用汽油泵产品供应链分析
- 化妆用芦荟凝胶产品供应链分析
- 在线出租服装行业市场调研分析报告
- 剥制加工行业相关项目经营管理报告
- 云身份和访问管理行业相关项目经营管理报告
- DB11-T 1028-2021 民用建筑节能门窗工程技术标准
- 学校矛盾纠纷排查化解工作方案(3篇)
- DB11T 585-2020 组织机构、职务职称英文译写通则
- 静脉留置针固定及维护
- 2024-2025学年浙教版八年级上册科学期中模拟卷
- 英语教师比赛方案
- 3.9 辛亥革命 课件- 2024-2025学年统编版八年级历史上册
- 四川省南充市语文小升初试卷及解答参考(2024-2025学年)
- 教育心理学-形考作业1(第一至三章)-国开-参考资料
- 某地产集团有限公司档案归档范围、保管期限及分类表
- 2023-2024学年北京海淀区首都师大附中初二(上)期中道法试题及答案
评论
0/150
提交评论