运动会分数统计系统设计报告
按项目序号输入比赛成绩; 分成录取前 5 名或前 3 名成绩;
② 成绩统计模块: 输出各学校总积分情况; 输出已结束的比赛信息;
③ 成绩排序模块: if( 按学校编号排序 ) 按学校编号输出各学校积分信息; else if ( 按总成绩排序 ) 按总成绩排序输出各学校积分信息; else if ( 按男女团体成绩排序 ) 按平男女团体成绩输出各学校积分信息; else 提示输入不合适;
//函数功能:4.成绩查询
void write(struct school *parr,int N);
//函数功能:5.将数据写入文件
void exit(struct school *parr,int *N);
//函数功能:0.结束整个程序
int cmp (const void *a,const void *b){ if((*(struct school*)a).Sscore<(*(struct school *)b).Sscore) return 1; else if((*(struct school*)a).Sscore==(*(struct school *)b).Sscore) return((*(struct school*)a).Snumber>(*(struct school *)b).Snumber?1:-1); else return -1;
} int cmpM(const void *a,const void *b){
if((*(struct school*)a).Mscore<(*(struct school *)b).Mscore)
return 1; else if((*(struct school*)a).Mscore==(*(struct school *)b).Mscore)
//函数功能:1.成绩录入
void statistics(struct school *parr,int N);
//函数功能:2.成绩统计
void sore(struct school *parr,int N);
//函数功能:3.成绩排序
void inquire(struct school *parr,int N);是Biblioteka 否 保存项目 编号
是
成绩 保存
结束
程序流程图
详细设计 编写目的: 根据项目概要设计说明书,在项目概要设计的基础之上,对系统进行详细设计, 以便下一步进行程序编码工作。
三、详细设计: 对应于总体设计时的系统功能模块图,各个功能模块的处理逻辑如下:
首先输入参加运动会的数量以及学校名称; ① 成绩录入模块:
④ 成绩查询模块: if( 按学校编号查询 ) 输出该学校得到积分的所有项目成绩; else if( 项目编号查询 ) else 提示输入不合适;
⑤ 成绩保存模块: 创建一个新的文件; 将比赛积分、排名等情况以文本形式存储在本地
程序的详细清单如下:
#include <stdio.h>
#include <stdlib.h>
return((*(struct school*)a).Snumber>(*(struct school *)b).Snumber?1:-1); else
return -1; } int cmpW(const void *a,const void *b){
if((*(struct school*)a).Wscore<(*(struct school *)b).Wscore) return 1;
//学校编号
int Sscore;
//学校总分
int Mscore;
//男子团体总分
int Wscore;
//女子团体总分
struct Sport{
int Enumber;
//项目编号
int Escore;
//项目分数
};struct Sport Event[MAXN];
}; void input(struct school *parr,int N);
else if((*(struct school*)a).Wscore==(*(struct school *)b).Wscore) return((*(struct school*)a).Snumber>(*(struct school *)b).Snumber?1:-1);
else return -1;
成绩 查询
按男女 团体
成绩 保存
退出 系统
系统模块图
其中: 成绩录入模块完成学校成绩的录入功能,录入信息包括项目编号、项目名称、项 目排名、每项积分等; 成绩统计模块完成已录入学校总积分和每项排名的显示; 成绩排序模块完成学校成绩的排序,排序时对应有按学校编号查询、按学校总分 查询和按男女团体总分三种方式;
int Escore; //项目分数
}
2.3
程序流程
系统的执行应从功能菜单的选择开始,依据用户的选择来进行后续的处理,直到
用户选择退出系统为止,其间应对用户的选择做出判断及异常处理。系统的流程
图如下:
开始
菜单选择
录入 是
否 统计
否 排序
是
否 否
查询
成绩 录入
学校
是
编号
成绩 统计
总 成绩
男女 团体
学校 编号
case '0' : exit(parr,&N); break; default : printf("\n\t 输入错误!按回车键返回主菜单!"); } } free(parr); return 0; } //函数功能:列出学校名称 void list_school(struct school *parr,int N){ int i; qsort(&parr[1],N,sizeof(struct school),cmpN); printf("\n 参与此次运动会的学校编号及名称:\n"); for(i=1;i<=N;i++) printf("\t\t\t%02d %s\n",parr[i].Snumber,parr[i].Sname); return ; } //函数功能:1.成绩录入 void input(struct school *parr,int N){ int i; int num,temp; int serial; printf("\t 男子项目:\n"); printf("\t\t01.100 米 02.200 米 03.400 米 04.800 米 05.1500 米\n"); printf("\t\t06.5000 米 07.4*100 米 08.4*400 米 09.110 米栏 10.跳高\n"); printf("\t\t11.跳远 12.铅球 13.标枪 14.铁饼 15.三级跳\n"); printf("\t 女子项目:\n"); printf("\t\t16.100 米 17.200 米 18.400 米 19.800 米 20.1500 米\n"); printf("\t\t21.3000 米 22.4*100 米 23.4*400 米 24.100 米栏 25.跳高\n"); printf("\t\t26.跳远 27.铅球 28.标枪 29.铁饼\n"); getchar(); while(1){ printf("\n\t 请输入项目编号:"); scanf("%d",&num); if(num>29||num<1){
数据结构:
学校: struct school
{
char Sname[20]; //学校名称
int Snumber; //学校编号
int Sscore;
//学校总分
int Mscore;
//男子团体总分
int Wscore;
//女子团体总分
}
项目 :struct Sport
{
int Enumber; //项目编号
case '1' : input(parr,N); break; case '2' : statistics(parr,N);break; case '3' : sore(parr,N); break; case '4' : inquire(parr,N);break; case '5' : write(parr,N); break;
printf("\t\t|------- 欢迎使用运动会分数统计系统 -------|\n"); printf("\t\t|******************************************|\n"); printf("\n\n\n\n"); printf("请输入参加运动会的学校个数:"); scanf("%d",&N); parr = (struct school *)malloc((sizeof(struct school) * (N+1))); for(i=1;i<=N;i++)
二、总体设计
编写目的:根据需求分析文档,初步提出问题的解决方案,以及软件系统的体系 结构和数据结构的设计方案并写出书面文档总体设计说明书,为下一步进行详细 设计做准备。
2.1 总体设计 该系统可以按功能进行模块划分,其模块图如下:
运动会分数管理系统
成绩 录入
成绩 统计
成绩 排序
按学校 编号