版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 东华大学数据结构课程设计 实验报告实验名称: 运动会分数统计系统指导教师: 学生姓名: 学生学号: 实验日期: 目 录一、设计题目 (3)二、任务(3)三、功能要求和测试数据 (3)四、需求分析 (4)概要设计(5)(5) 5.2系统各函数的功能、相互调用关系 (6)详细设计(5) 6.1 各变量的定义和作用 (8) 6.2 系统各函数的功能 (8)调试分析(21)用户手册 (22)九、测试结果(22)十、心得体会与参考文献(22)设计题目运动会分数统计任务:参加运动会有n个学校,学校编号为1n。比赛分成m个男子工程,和w个女子工程。工程编号为男子1m,女子m+1m+w。不同的工程取前五名或
2、前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些工程取前五名或前三名由学生自己设定。m=20,n=20功能要求:1) 可以输入各个工程的前三名或前五名的成绩;2) 能统计各学校总分;3) 可以按学校编号、学校总分、男女团体总分排序输出;4) 可以按学校编号查询学校某个工程的情况;5) 可以按工程编号查询取得前三或前五名的学校。测试数据:学校数据校名东华大学上海交大复旦大学同济大学华东师范大学编号12345工程数据工程编号工程名称1男子100米2男子200米3男子400米4男子跳高5男子跳远6女子跳高7女子跳远8女子铅球9女子100米10女子400米需求
3、分析 本程序在运行期间,为了防止在运行大量数据时不会出错,并且能够在很短的时间内将运行结果稳定输出,就需要系统到达平安性能好,可靠性高,稳定性强,处理数据迅速等特点,应具备一定的实用性。功能实现1记录功能。能记录一次运动会的所有工程信息,如其编号,名称,是男子工程还是女子工程,是取前三名还是前五名,以及取得名次的学校编号;能记录参加本次运动会的学校个数,以及学校的编号,并能添加,修改,删除其中的信息。2查询功能。能根据工程编号查询在该工程上获得名次的学校编号,并按名次先后顺序输出;能根据学校编号和工程编号查询该学校在该工程上获得的名次以及得分情况。3统计功能。能统计各个学校的总分,男子团体总分
4、,女子团体总分。:输入数据形式和范围:20以内的整数,也可以输入学校的名称,运动工程的名称:有中文提示,各学校分数为整形。界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。概要设计程序调用关系void main调用了void basic(),void matchoutvoid,void input(),void output(),void teamoutput( );void output()调用了 void index();void teamoutput( )调用了void teamsco();void teamsco()调用了void index();详细设计
5、#include#include#include /*conio是Console Input/Output控制台输入输出的简写,其中定义了通过控制台进行数据输入和数据输出的函数,主要是一些用户通过按键盘产生的对应操作,比方getch()函数等等。*/#define N 20 /*参赛学校数量*/int helpN;/*成绩排序时使用*/int n,m,w; /* 定义代表学校、男子工程、女子工程数量的变量 */ int a,b; /* 工程编号,工程名次个数 */ struct Score /* 定义工程比赛结果名次列表元素结构体 */ int schnum; /* 学校编号*/ char n
6、ame20; /* 姓名 */ int position; /* 名次 */ int score; /* 得分 */;struct Match /* 定义运动工程结构体 */ int matnum; /* 工程编号 */ int num; /* 工程名次个数 */ struct Score list5; /* 名次列表数组,结构体数组*/ma50; struct SchoolScore /* 定义学校成绩单元素 */ int matnum; /* 工程编号 */ int position; /* 名次 */ /char name20; /* 姓名 */ int score; /* 得分 */;
7、 struct School /* 定义学校结构体 */ int schnum; /* 学校编号 */ struct SchoolScore list50; /* 成绩单列表数组 */ int team; /* 团体总分 */ int mteam; /* 男子团体总分 */ int fteam; /* 女子团体总分 */ int num; /* 累加数 */sc20; void input ( ) /* 输入比赛数据 */ int i,rank,c; cout请输入比赛结果资料endl; for(i=0;im+w;i+) mai.matnum=i+1; /* 初始化工程编号matnum */
8、cout请输入比赛工程编号1-m+wc; /*工程编号*/ if(c0)&(c=m+w) do coutrank; if (rank=3) mac-1.num=3; /* 工程名次个数为3 */ if(rank=5) mac-1.num=5; else if(rank!=3&rank!=5) cout输入错误,请重新输入:; while (rank!=3&rank!=5);cout第c项比赛:取前mac-1.num名endl; for(i=0;imac-1.num;i+) mac-1.listi.position=i+1; do coutendl输入第i+1mac-1.listi.schnum
9、; if(mac-1.listi.schnumn) cout错误!输入的编号应为1-n之间!; /* 输出出错信息 */ while (mac-1.listi.schnumn); coutmac-1.listi.score;void index () /* 整理比赛数据函数,将输入的分数赋值给sc */ int i,j,k; for(i=0;in;i+) sci.schnum=i+1; /* 初始化学校编号 */ sci.num=0; /* 初始化累加数 */ for(i=0;im+w;i+) /* 工程个数 */ for(j=0;jmai.num;j+) /* 工程名次 */ for(k=0
10、;kn;k+) /* 学校编号 */ if(mai.listj.schnum=sck.schnum) /* schnum学校编号 */ sck.listsck.num.matnum=mai.matnum; /*matnum工程编号,运动工程编号赋值给SchoolScore的运动工程*/ sck.listsck.num.position=mai.listj.position;/*Score名次赋值给School*/ sck.listsck.num.score=mai.listj.score; sck.num+; return;void teamsco ( ) /* 团体成绩计算函数 */ int
11、 i,j; for(i=0;in;i+) /* 初始化 */ sci.team=0; sci.mteam=0; sci.fteam=0; for(i=0;in;i+) for(j=0;jsci.num;j+) /*累加*/ sci.team=sci.team+sci.listj.score; /* 团体总分成绩计算 */ if(sci.listj.matnum=m) /*工程编号小于m,为男子工程*/ sci.mteam=sci.mteam+sci.listj.score; /* 男子团体成绩计算 */ else sci.fteam=sci.fteam+sci.listj.score; /*
12、女子团体成绩计算 */ return; void output ( ) /* 输出学校成绩列表函数 */ int i,a; cout按学校编号查询学校某个工程的比赛情况endl; cout请输入学校编号:a; cout比赛工程编号 名次 得分endl; for(i=0;isca-1.num;i+) /*num累加数*/ coutsca-1.listi.matnum sca-1.listi.position sca-1.listi.scoreendl; return; void teamoutput ( ) /* 输出团体报表函数 */ int i,j,k; for(i=0;iN;i+) cou
13、t 1.按学校编号排序输出 endl; cout 2.按学校总分排序输出 endl; cout 3.按学校男子团体总分排序输出 endl; cout 4.按学校女子团体总分排序输出 endl; cout 5.返回上一级 endl; cout *j; switch(j) case 1:cout学校编号 学校总分 男子团体总分 女子团体总分endl; for(i=0;in;i+) coutsci.schnum sci.team sci.mteam sci.fteamendl; break; case 2: for(i=0;iN;i+) helpi=i; /*用辅助数组帮助排序,辅助数组改变,而原来
14、排序不变*/for(i=0;iN;i+) for(j=i+1;jN;j+) if(schelpi.teamscj.team) k=helpi; helpi=helpj; helpj=k; /*用冒泡排序方法从大到小排序*/ cout学校编号 学校总分 男子团体总分 女子团体总分endl; for(i=0;in;i+) coutschelpi.schnum schelpi.team schelpi.mteam schelpi.fteamendl; break; case 3: for(i=0;iN;i+) helpi=i; /*用辅助数组帮助排序,辅助数组改变,而原来排序不变*/ for(i=0
15、;iN;i+) for(j=i+1;jN;j+) if(schelpi.mteamscj.mteam) k=helpi; helpi=helpj; helpj=k; /*用冒泡排序方法从大到小排序*/ cout学校编号 学校总分 男子团体总分 女子团体总分endl; for(i=0;in;i+) coutschelpi.schnum schelpi.team schelpi.mteam schelpi.fteamendl; break; case 4: for(i=0;iN;i+) helpi=i; /*用辅助数组帮助排序,辅助数组改变,而原来排序不变*/ for(i=0;iN;i+) for
16、(j=i+1;jN;j+) if(schelpi.fteamscj.fteam) k=helpi; helpi=helpj; helpj=k; /*用冒泡排序方法从大到小排序*/ cout学校编号 学校总分 男子团体总分 女子团体总分endl; for(i=0;in;i+) coutschelpi.schnum schelpi.team schelpi.mteam schelpi.fteamendl; /按所记下标顺序输出 break; case 5: i=N;break;default:cout输入出错endl;break;void matchoutput ( ) /* 输出比赛工程名次列表
17、函数 */ int i,t=1; while ( t!=0 ) cout请输入需要查询排名的工程编号1-m+wt; if ( t=0 ) break; else if ( (t0)&(t=m+w) cout比赛工程名次列表 请输入工程编号:t; cout比赛工程编号 名次 学校编号 得分; for ( i=0;imat-1.num;i+ ) coutmat-1.matnum mat-1.listi.position mat-1.listi.schnum mat-1.listi.scoreendl; void main() /*主菜单*/ int chose;void basic();void
18、matchoutput();void output();void teamsco(); void index(); void teamoutput( ); void input();cout*运动会分数统计系统*endl; for(;) cout 您好,欢送使用运动会分数统计系统系统 endl;cout * 1.录入比赛根本信息 *endl;cout * 2.录入各个工程的前三名或前五名的成绩 *endl;cout * 3.按学校编号查询学校某个工程的情况 *endl;cout * 4.按学校编号、学校总分、男女团体总分排序输出 *endl;cout * 5.按工程编号查询取得前三或前五名的学
19、校 *endl;cout * 6.清屏; *endl;cout * 7.退出操作; *endl;coutchose; switch(chose) case 1: basic( ); break; case 2: input( ); break; case 3: index(); output(); break; case 4: index(); teamsco( ); teamoutput( ); break; case 5: matchoutput( ); break; case 6 : system(cls); /*清屏功能,美化界面*/break; case 7 : exit(0); c
20、out退出系统!;break; default : cout007 输入有误,请重新选择;break; void basic( ) cout*n; do coutn; if( n20 ) /* 输出出错信息 */ cin输入的学校数目不正确!请重新输入!; while ( n20 ); do coutm; if ( m20 ) /* 输出出错信息 */ cout输入的男子工程数目不正确!请重新输入!; while ( m20 ); do coutw; if ( w20 ) /* 输出出错信息 */ cout输入的女子工程数目不正确!请重新输入!; while ( w20 ); cout本运动会共有n个学校参加,共m+w个比赛工程,男子工程m个,女子工程w个endl; 调试分析用户手册2进入演示程序后即显示界面: (3) 请根据提示进行操作,按标准输入,如上一
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年现代企业管理试题库及答案
- 2026年企业员工质管知识竞赛题库含标准答案
- 2026年权益证券期末试题及答案
- 2026年重症5c考试老年重症进阶试题及答案
- 2026年餐饮服务试题附答案
- 2026年桁架钳工考试题及答案详解
- 2026年保育员(初级)幼儿游戏活动设计考试试卷附答案
- 2026江西赣州市章贡区委网信办招募高校毕业见习生1人笔试题库及参考答案详解【培优B卷】
- 2026浙江宁波气象信息科技有限公司下属单位招辅助岗人员2人备考题库附完整答案详解(全优)
- 2026重庆两江新区悦来幼儿园编外教师招聘2人备考题库【达标题】附答案详解
- GB/T 47427-2026合成纤维预取向丝(POY)动态热应力试验方法
- 2026年广东省汕头市龙湖区中考一模考试地理试题(含答案)
- 2026年湖北省烟草专卖局招聘笔试真题
- 厨卫间防水施工方案
- 郑州市金水区2025-2026学年第二学期三年级语文期末考试卷(部编版含答案)
- 物流公司业务部管理制度
- (正式版)DB33∕T 1224-2020 《城市轨道交通结构监测技术规程》
- 北森测评题库及答案2026
- 安防综合平台运维服务方案
- 2025年危化品安全员资格证考试题库及答案
- 雨课堂在线学堂《信息素养-学术研究的必修课》作业单元考核答案
评论
0/150
提交评论