运动会分数统计系统实验报告.doc
更新时间:2023-04-14 09:09:01 阅读量: 实用文档 文档下载
运动会分数统计系统的实现
9计科 (2)班
E10914044
杨素传
一、设计要求
1、问题描述
参加运动会有n 个学校,学校编码为1,2,, n,比赛分成m 个男子项目和w 个女子项目。项目编号为男子 1,2,, m,女子 m+1,m+2, ,m+w 。不同的项目取前五名或前三名积分;取前五名的积分分别为 7, 5, 3, 2, 1;前三名的积分分别 5, 3, 2;哪些取前五名或前三名由学生自己设定( m<=20,n<=20 )。
2、需求分析
(1)可以输入各个项目的前三名或前五名成绩;
(2)能统计各学校成绩;
(3)可以按学校编号、学校总分、男女团体总分排序输出;
(4)可以按学校编号查询学校某项目情况,可以按项目编号查询取得前三名或前五
名的学校。
二、概要设计
1、主界面设计
为了实现运动会分数统计系统,设计一个含有多个菜单项的主控菜单子程序以连接系
统的各项子程序,方便用户使用本程序。本系统主控菜单运行界面图 1 所示。
图 1运动会分数统计系统程序主菜单
2、存储结构设计
本程序采用链式存储类型(LNode )存储运动会分数统计系统的节点信息。运动会分数
统计系统的链表中的结点包括8 个域:项目编号域(objnum )、项目类型( objtype )、运动员编号( athnum)、运动员姓名( athname[20] )、学校编号( schnum)、校名
( schname[30])、运动员分数( athscore)和指向下一个节点的指针欲( struct LNode *next )。
3、系统功能设计
本系统设置了8 个子功能菜单。8 个子功能的设计描述如下:
(1)录入各项目的成绩。由函数 creatLink() 实现。当用户选择该功能时,系统会以用户
输入的数据运动会分数统计链表。
(2)统计各学校分数。由函数 schoolScore()实现。当用户选择该功能时,系统会统计各
学校分数。
(3)按学校编号顺序输出。由函数printfSchoolNumber() 实现。当用户选择该功能时,
系统会按学校编号顺序输出数据。
(4)按学校总分顺序输出。由函数 printfSchoolScore() 实现。当用户选择该功能时,系统
会按学校总分顺序输出数据。
(5)按男女团体总分顺序输出。由函数 printfManWomanScore() 实现。当用户选择该功能时,系统会按男女团体总分顺序输出数据。
( 6)按学校编号查询学校某项目情况。由函数printfSchoolObject() 实现。当用户选择该功能时,系统会按学校编号输出学校某项目情况。
( 7)按项目编号查询取得前三名或前五名的学校。由函数printfObjectSchool() 实现。当用户选择该功能时,系统会按项目编号查询取得前三名或前五名的学校情况。
( 8)退出。由exit(0) 函数实现。
三、模块设计
1、模块设计
本程序包含两个模块:主程序模块和工作区选择模块。其调用关系如图 2 所示。
主程序模块工作区选择模块
图 2模块调用示意图
2、系统子程序及功能设计
本系统共设置个 6 子程序,各子程序的函数名及功能说明如下。
( 1)LinkList creatLink() // 创建链表(录入各项目的成绩)
( 2)int schoolScore(LinkList L) //统计各学校总分
( 3)void printfSchoolNumber() //按学校编号顺序输出
( 4)void printfSchoolScore() //按学校总分顺序输出
( 5)void printfManWomanScore(LinkList L //按男女团体总分排序输出
( 6)void printfSchoolObject(LinkList L) // 按学校编号查询学校某项目情况
( 7)void printfObjectSchool(LinkList L) //按项目编号查询取得前三名或前五名的学校
( 8)int main() //主函数
3、函数主要调用关系图
本系统 6 个子系统之间的主要调用关系如图 3 所示,图中数字是各函数的编号。
8 main()
1 2 3 4 5 6 7
图 3 系统函数调用关系图
四、详细设计
1、数据类型定义
( 1)本系统采用链式结构存储运动会分数统计的结点。节点定义如下:
typedef struct LNode{//链表节点数据结构
int objnum;
char objtype;
int athnum;
char athname[20];
int schnum;
char schname[30];
int athscore;
struct LNode *next;
}LNode,*LinkList;
( 2)各学校情况数据结构的结构定义成结构体数组形式。定义如下:
struct School{
int schoolnumber;
char schoolname[30];
int schoolscore;
}school[30];
2、系统主要子程序详细设计
( 1)创建链表(录入各项目的成绩)子程序设计
LinkList creatLink(){
LinkList L=(LinkList)malloc(LEN);
LinkList p,q;
int num,objnum,n;
char objtype;
L->next=NULL;
p=L;
printf(" 请输入男女项目总个数:");
scanf("%d",&num);
while(num--){
printf(" 请输入项目编号:");
scanf("%d",&objnum);
printf(" 请输入项目类型:");
getchar();
objtype=getchar();
printf(" 请输入 3(代表取前三名)或 5(代表取前五名 ):");
scanf("%d",&n);
printf(" 请按名次顺序输入运动员编号,姓名 ,学校编号,校名和成绩\n");
while(n--){
q=(LinkList)malloc(LEN);
q->objnum=objnum;
q->objtype=objtype;
printf(" 请输入运动员编号:");
scanf("%d",&q->athnum);
printf(" 请输入运动员姓名:");
getchar();
scanf("%s",q->athname);
printf(" 请输入学校编号:");
scanf("%d",&q->schnum);
printf(" 请输入校名:");
getchar();
scanf("%s",q->schname);
printf(" 请输入成绩:");
scanf("%d",&q->athscore);
q->next=NULL;
p->next=q;
p=q;
}
}
return(L);
}
( 2)统计各学校总分子程序设计
int schoolScore(LinkList L){
LinkList p;
int i;
p=L->next;
for(i=0;i<20;i++){
school[i].schoolscore=0;
school[i].schoolnumber=-1;
}
while(!p==NULL){
for(i=0;i<20;i++){
if(school[i].schoolnumber==-1){
strcpy(school[i].schoolname,p->schname);
school[i].schoolnumber=p->schnum;
school[i].schoolscore=p->athscore;
p=p->next;
break;
}
else if(school[i].schoolnumber==p->schnum){
school[i].schoolscore+=p->athscore;
p=p->next;
break;
}
}
}
return 0;
}
五、测试分析
1、创建链表(录入各项目的成绩)
在主菜单下,用户输入 1 并回车,然后输入数据结点的个数并回车,再输入数据,运行结果如图 4 所示。
图 4链表建立(录入各项目的成绩)
2、统计各学校总分
在主菜单下,用户输入 2 并回车,运行结果如图 5 所示。
图 5统计各学校总分
3、按学校编号顺序输出
在主菜单下,用户输入 3 并回车,运行结果如图 6 所示。
图 6按学校编号顺序输出的数据
4、按学校总分顺序输出
在主菜单下,用户输入 4 并回车,运行结果如图7 所示。
图 7按学校总分顺序输出的数据
5、按男女团体总分排序输出
在主菜单下,用户输入 5 并回车,运行结果如图8 所示。
图 8按男女团体总分排序输出的数据
6、按学校编号查询学校某项目情况
在主菜单下,用户输入 6 并回车,再输入学校编号回车,然后输入项目编号,运行结果如图 9 所示。
图 9按学校编号查询学校某项目情况
6、按项目编号查询取得前三名或前五名的学校
在主菜单下,用户输入 7 并回车,再输入项目编号回车,然后输入取名规则,运行结果如图 10 所示。
图 10按项目编号查询取得前三名或前五名的学校
8、退出
在主菜单下,用户输入0 并回车,运行结果如图11 所示。
图 11退出程序六、源程序清单
#include
#include
#include
#define NULL 0
#define LEN sizeof(LNode)
typedef struct LNode{//链表节点数据结构
int objnum;
char objtype;
int athnum;
char athname[20];
int schnum;
char schname[30];
int athscore;
struct LNode *next;
}LNode,*LinkList;
//学校情况数据结构
struct School{
int schoolnumber;
char schoolname[30];
int schoolscore;
}school[30];
//创建链表
LinkList creatLink(){
LinkList L=(LinkList)malloc(LEN);
LinkList p,q;
int num,objnum,n;
char objtype;
L->next=NULL;
p=L;
printf(" 请输入男女项目总个数:");
scanf("%d",&num);
while(num--){
printf(" 请输入项目编号:");
scanf("%d",&objnum);
printf(" 请输入项目类型:");
getchar();
objtype=getchar();
printf(" 请输入 3( 代表取前三名 )或 5(代表取前五名):");
scanf("%d",&n);
printf(" 请按名次顺序输入运动员编号,姓名 ,学校编号,校名和成绩\n");
while(n--){
q=(LinkList)malloc(LEN);
q->objnum=objnum;
q->objtype=objtype;
printf(" 请输入运动员编号:");
scanf("%d",&q->athnum);
printf(" 请输入运动员姓名:");
getchar();
scanf("%s",q->athname);
printf(" 请输入学校编号:");
scanf("%d",&q->schnum);
printf(" 请输入校名:");
getchar();
scanf("%s",q->schname);
printf(" 请输入成绩:");
scanf("%d",&q->athscore);
q->next=NULL;
p->next=q;
p=q;
}
}
return(L);
}
//统计各学校总分
int schoolScore(LinkList L){
LinkList p;
int i;
p=L->next;
for(i=0;i<20;i++){
school[i].schoolscore=0;
school[i].schoolnumber=-1;
}
while(!p==NULL){
for(i=0;i<20;i++){
if(school[i].schoolnumber==-1){
strcpy(school[i].schoolname,p->schname);
school[i].schoolnumber=p->schnum;
school[i].schoolscore=p->athscore;
p=p->next;
break;
}
else if(school[i].schoolnumber==p->schnum){
school[i].schoolscore+=p->athscore;
p=p->next;
break;
}
}
}
return 0;
}
//按学校编号顺序输出
void printfSchoolNumber(){
int i,j,num,flag;
printf(" 学校编号校名学校总分\n");
for(i=0;;i++){
if(school[i].schoolnumber==-1)break;
num=school[0].schoolnumber;
flag=0;
for(j=1;;j++){
if(school[j].schoolnumber==-1)break;
if(school[j].schoolnumber printf("%8d%10s%12d\n",school[flag].schoolnumber,school[flag].schoolname,school[flag].s choolscore); school[flag].schoolnumber=35565; } } //按学校总分顺序输出 void printfSchoolScore(){ int i,j,sco,flag; printf(" 学校编号校名学校总分\n"); for(i=0;;i++){ if(school[i].schoolscore==0)break; sco=school[0].schoolscore; flag=0; for(j=1;;j++){ if(school[j].schoolscore==0)break; if(school[j].schoolscore>sco){sco=school[j].schoolscore;flag=j;} } printf("%8d%10s%12d\n",school[flag].schoolnumber,school[flag].schoolname,school[flag].s choolscore); school[flag].schoolscore=-1; } } //按男女团体总分排序输出 void printfManWomanScore(LinkList L){ LinkList p; int manscore=0,womanscore=0; p=L->next; while(!p==NULL){ if(p->objtype=='m')manscore+=p->athscore; else womanscore+=p->athscore; p=p->next; } printf(" 团体总分\n"); if(manscore>=womanscore){ printf(" 男生 %8d\n",manscore); printf(" 女生 %8d\n",womanscore); } else { printf(" 女生 %8d\n",womanscore); printf(" 男生 %8d\n",manscore); } } //按学校编号查询学校某项目情况 void printfSchoolObject(LinkList L){ LinkList p; int scnum,obnum,sum=0; char scname[30]; p=L->next; printf(" 请输入要查看的学校编号:"); scanf("%d",&scnum); printf(" 请输入项目编号:"); scanf("%d",&obnum); while(p!=NULL){ if(p->schnum==scnum&&p->objnum==obnum){sum+=p->athscore;strcpy(scname,p->schna me);} p=p->next; } printf(" 学校编号校名项目编号获得总分 \n"); printf("%8d%10s%12d%12d\n",scnum,scname,obnum,sum); } //按项目编号查询取得前三名或前五名的学校 void printfObjectSchool(LinkList L){ LinkList p; int obnum,n,i; p=L->next; printf(" 请输入要查看的项目编号:"); scanf("%d",&obnum); printf(" 请输入 3(前三名 ) 或 5(前五名 ):"); scanf("%d",&n); for(i=20;i<30;i++){ school[i].schoolscore=0; school[i].schoolnumber=-1; } while(p!=NULL){ for(i=20;i<30;i++){ if(school[i].schoolnumber==-1&&p->objnum==obnum){ strcpy(school[i].schoolname,p->schname); school[i].schoolnumber=p->schnum; school[i].schoolscore=p->athscore; p=p->next; break; } else if(school[i].schoolnumber==p->schnum&&p- >objnum==obnum){ school[i].schoolscore+=p->athscore; p=p->next; break; } else{p=p->next;break;} } } printf(" 项目编号学校编号校名学校总分\n"); /*i=20; while(n--){ if(school[i].schoolscore!=0){ printf("%8d%12d%10s%12d\n",obnum,school[i].schoolnumber,school[i].schoolname,school [i].schoolscore); i++; } else break; }*/ p=L->next; while(p->objnum!=obnum)p=p->next; while(n--){ printf("%8d%12d%10s%12d\n",obnum,p->schnum,p->schname,p->athscore); p=p->next; } } //主函数 int main(){ LinkList L; int menu; while(menu!=0){ printf("*********************** 欢迎使用运动会分数 统 计系统***********************\n"); printf(" printf(" printf(" printf(" printf(" printf(" printf(" 1.录入各项目的成绩\n"); 2.统计各学校分数\n"); 3.按学校编号顺序输出\n"); 4.按学校总分顺序输出\n"); 5.按男女团体总分顺序输出\n"); 6.按学校编号查询学校某项目情况\n"); 7.按项目编号查询取得前三名或前五名的学校 \n"); printf(" printf("*********************** 0.退出系统 \n"); 欢迎使用运动会分数统计系统 ***********************\n"); printf(" 请选择功能0-7:"); scanf("%d",&menu); switch(menu){ case 1: L=creatLink();printf("各项目的成绩录入完毕case 2: schoolScore(L);printf(" 统计各学校成绩完毕case 3: printfSchoolNumber();break; case 4: schoolScore(L);printfSchoolScore();break; case 5: printfManWomanScore(L);break; case 6: printfSchoolObject(L);break; case 7: printfObjectSchool(L);break; case 0: printf(" 退出系统成功,欢迎使用 !\n");exit(0); default :printf(" 功能选项错误,请重新输入 !"); !\n");break; !\n");break; } printf("\n"); } return 0; } 七、用户手册 (1)本程序执行文件为“运动会分数统计系统演示.exe”。 (2)进入本程序之后,就会进入系统主菜单界面,用户可在该界面下输入各子菜单前对应的数字并按回车,执行相应子菜单命令。
正在阅读:
运动会分数统计系统实验报告.doc04-14
游山西村06-29
2019-2020年高中化学课时跟踪检测二十硫酸的制备和性质苏教版12-23
区发展和改革局最新半年工作总结及2022年工作计划范本04-04
数据结构1-10题目12-16
美丽的华店 - 图文11-26
临水照花_此花幽独_论吴文英的咏梅词05-04
交通灯附带原理图05-21
高一数学第四章三角函数同步辅导讲义(2)12-03
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 运动会
- 分数
- 统计
- 实验
- 报告
- 系统
- doc
- 北京市东城区社会保障和就业工作领导小组办公室
- 广州市白云区石井俪臻蔷服饰经营部企业信息报告-天眼查
- 停车场道路施工方案
- 【语文】语文诗歌鉴赏的专项培优易错试卷练习题(含答案)含详细答
- JTP矿用提升绞车司机操作规程通用版
- 人力资源管理模拟沙盘培训手册
- 陕西省西安市第八十三中学高三地理上学期第一次阶段测试试题
- 小学一年级语文《学写字》优秀教案范文三篇
- 2022年精选历史七年级上册第 4 课 丝绸之路中图版课后辅导练习【
- 一只小鸟读后感【精品】
- 公路桥梁板式橡胶支座尺寸表
- 2022年高中通用技术 常见结构的认识5教案 苏教版必修
- 32组Yes or no 你的生活习惯真的健康吗?-2022年精选文档
- 15.2《电流和电路》—人教版九年级物理同步练习(解析版)
- 第九课弘扬和培育民族精神教案
- 《管理学基础》综合测试题
- 部编版教材语文二年级上册专项复习---量词
- 院校代号一览表_高考院校代码
- 2022-2022年高考数学一轮复习第2章函数导数及其应用2.10导数的概
- 科研项目结题汇报ppt模板