运动会比赛计分系统(共18页).doc
《运动会比赛计分系统(共18页).doc》由会员分享,可在线阅读,更多相关《运动会比赛计分系统(共18页).doc(18页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上运动会比赛计分系统一、设计目的和任务要求:初始化输入:N-参赛学校总数,M-男子竞赛项目数,W-女子竞赛项目数各项目名次取法有如下几种:取前5名:第一名得分7分,第二名得分5,第三名得分3,第四名得分2,第五名得分1;取前3名:第一名得分5,第二名得分3,第三名得分2;功能要求:(1)系统以菜单方式工作(2)由程序提醒用户填写比赛结果,输入各项目获奖运动员信息。(3)所有信息记录完毕后,用户可以查询各个学校的比赛成绩(4)查看参赛学校信息和比赛项目信息等。二、总体设计编写目的:根据要求分析文档,初步提出问题的解决方案,以及软件系统的体系结构和数据结构的设计方案并写出书
2、面文档总体设计说明书,为下一步进行详细设计做准备。2.1总体设计 该系统可以按功能进行模块划分,其模块图如下:菜单模块 计分模块 输入模块输出模块文件读入模块查找模块结束 系统模块图 其中:*菜单选择模块完成用户命令的接收,此模块是运动会比赛计分系统的入口,用户所要进行的各种操作均需在此模块中进行选择而调用其他模块实现相应的功能;*信息输入模块完成学校、比赛项目(以及运动员的信息)输入功能,输入信息包括各参赛学校的编号、名称和每个学校在各比赛项目的编号、类型、名称、获奖次数、排名,以及(运动员姓名)等必要信息;*计分模块是对输入信息的处理,是一种必要的辅助模块;*输出模块包括:1不输出信息,读
3、入文件中;2输出信息,不读入文件。其中输出的信息有:学校编号、名称以及其所获奖项的项目编号、类型、名称、排名、男子总分、女子总分还有学校的总分等;*文件读入模块是为了满足客户需要,为了储存信息,方便使用;*信息查询模块完成对各信息的查询,查询时对应有两种选择以确定用户进行哪种查询。2.2 数据结构本系统中主要的数据结构就是以学校为结点建立一个链式存储结构,结点中包括学校编号、学校名称、男子项目总分、女子项目总分、学校总分;再定义一个新的结构体是以项目信息为基础,通过指针实现学校来对项目信息的调用,无论是计分,输出还是查找均以链式存储结构来实现。数据结构:学校信息:typedef struct
4、school int 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 sco int mark5;/分数 int itmnum;/项目编号 int itmkind;/项目类型 char itmname20;/项目名称 char name10;/运动员姓名 int l; /获奖名次数
5、int range5;/排名sc;2.3程序流程系统的执行应从输入信息功能开始,再执行菜单功能,依据用户的选择来进行后续的处理,直到用户选择退出系统为止,其间应对用户的选择做出判断及异常处理。系统的流程图如下:开始执行菜单模块选择输入学校编号、名称输入项目编号、名称、获奖名次数排名、运动员姓名选择按学校信息输出其获奖项目信息按学校排名输出学校和项目信息按项目信息输出各个获奖学校信息计分函数n0?文件读入函数结束编写目的:根据项目概要设计说明书,在项目概要设计的基础之上,对系统进行详细设计,以便下一步进行程序编码工作。三、详细设计:对于总设计时的系统模块功能图,各个功能模块的处理逻辑如下:1)菜
6、单选择模块:调用void menu() /菜单函数给出信息提示;绘制菜单(包含查询、退出);提示菜单选择并输入变量;根据输入变量的值调用不同的模块函数;以下是截取的菜单函数: void menu() system(cls); printf(=运动会比赛计分系统=n); printf(* welcome *n); printf(* * 编制 *n); printf(* 1-键盘输入 *n); printf(* 2-文件读入 *n); printf(* 3-输出 *n); printf(* 4-查询 *n); printf(* 5-退出 *n); printf(*男子前五名依次得分:7分 5分 3
7、分 2分 1分*n); printf(*女子前三名依次得分:5分 3分 2分 *n); printf(*n); printf(=n); 2) 信息输入模块:调用scl *input() /信息输入函数在输入信息时要求按照文字提示进行输入,要输入的信息包括:参赛学校编号,名称以及比赛项目的编号,名称,获奖名次,排名,(运动员姓名)。建立单链表,以链式存储结构来存放学校,项目等数据;以下是输入的内容与形式:scanf(%d,&p-sclnum);/输入学校编号 scanf(%s,p-sclname);/输入学校名称 for(x=0;xax.itmnum);/输入项目编号 scanf(%d,&p-a
8、x.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.name); /运动员姓名 输入结束;在输入结束结束后要调用计分模块。3)计分模块:计分模块主要是依据输入信息的不同予以判断,并以不同的计分方式来计数将节点中的数据改变,并保存。 if(k=3) /女子项目取前三名else /男子项目取前五名4)信息输出模块:根据用户的需要与选择,给出两种方式:1、存入文件,不输出;
9、2、输出,不存入文件。printf(*1-不输出,存入文件n); printf(*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(请输入你要查询的学校编号:); scan
10、f(%d,&num);while(q!=NULL) 按学校输出相应信息;if(cha=2)printf(请输入你要查询的项目编号:); scanf(%d,&xiang);while(q!=NULL) 按项目输出相应信息;四、调试与测试1.调试方法;上机运行各个模块,分别调试,最后综合运行;2.测试结果的讨论与分析;首先必须要对程序进行数据信息输入,对于所需不同的信息程序会自动提示用户进行相关操作,再输出相关信息,对于一些错误的操作可能会造成程序运行错误的后果,因此在输入信息的时候用户请务必细心操作。其数据与运行结果如下图:运行结果:输入1输入:1huada1 111 taiqiu 3 1 zh
11、ao 2 qian 3 sun2 222 ticao 1 2 li2dongda1 111 taiqiu 2 4 zhou 5 wu2 222 ticao 2 1 feng 3 chen输出:输入:3输出:输入:2输出:输入:4输出:输入:1输出:输入;1输出:输入:4输出:输入:2输出:输入:2输出;(因为只定义了两个学校,所以结果只有两个学校的名称)输入:3输出:输出:输入:2输出:结束程序运行!五、源程序清单#include#include#define n 2 /参赛学校数#define m 1 /男子竞赛项目数#define w 1 /女子竞赛项目数typedef struct sc
12、o int mark5;/分数 int itmnum;/项目编号 int itmkind;/项目类型 char itmname20;/项目名称 char name10;/运动员姓名 int l; /获奖名次数 int range5;/排名sc;typedef struct school int sclnum;/学校编号 char sclname20;/学校名称 sc am+w; int mscore;/男子团体总分 int wscore;/女子团体总分 int sum;/学校项目总分 struct school *next;scl; scl *p,*q,*head,*g,*s,*u;/全局指针
13、变量 /*/ /*菜 单 函 数*/ void menu() system(cls); printf(=运动会比赛计分系统=n); printf(* welcome *n); printf(* * 编制 *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); printf(*n); printf(=n); /
14、*/*计 分 函 数*/ 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: p-ax.markp-ax.rangei=3;break; case 3: p-ax.markp-ax.rangei=2;break; default: puts(输入有误!);exit(0); else switch(p-ax.rangei) /男子项目取前五名
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 运动会 比赛 计分 系统 18
限制150内