logo资料库

数据结构课程设计——运动会分数统计 C++.doc

第1页 / 共15页
第2页 / 共15页
第3页 / 共15页
第4页 / 共15页
第5页 / 共15页
第6页 / 共15页
第7页 / 共15页
第8页 / 共15页
资料共15页,剩余部分请下载后查看
1、概述 任务:参加运动会有 n 个学校,学校编号为 1……n。比赛分成 m 个男子项目, 和 w 个女子项目。项目编号为男子 1……m,女子 m+1……m+w。不同的项目取前 五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分 别为:5、3、2;哪些取前五名或前三名由学生自己设定。(m<=20,n<=20) 功能要求: 1) 可以输入各个项目的前三名或前五名的成绩; 2) 能统计各学校总分, 3) 可以按学校编号或名称、学校总分、男女团体总分排序输出; 4) 可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或 前五名的学校。 5) 数据存入文件并能随时查询 6) 规定:输入数据形式和范围:可以输入学校的名称,运动项目的名称 输出形式:有中文提示,各学校分数为整形 界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相 关的功能要求。 存储结构:学生自己根据系统功能要求自己设计,但是要求运动会的相关数 据要存储在数据文件中。 1
2、概要设计 首先定义结构体 struct pro、struct school,将学校和项目的信息,如项目名称、 前 5 名学校的编号、学校名称、学校总分、男子总分、女子总分等信息分别定义 进结构体中。再定义输出函数,分别按学校编号、学校总分、男子总分、女子总 分顺序输出。之后定义菜单函数,选择序号执行需要的操作,从而查询各项信息。 开始 主函数 输入信息 统计分数 根据菜单实 现选择操作 输出信息 排 序 具体操作 2
主要函数: void input() 输入学校数目、学校名称、男子项目数和女子项目数、项目的 名称以及每个项目前 5 名的学校编号 流程图: 开 始 输入学校数目 输入数据有误, 请重新输入 n>=1&&n<=20 输入第 i 个学校的名称 输入男子项目数和女子项目数 输入数据有误, 请重新输入 m<=20&&m>=1&&w<=20 &&w>=1) i=1;i<=m+w;i++ 输入第 i 个项目的名称 输入第 i 个项目的 前 5 名的学校编号 结束 3
定义菜单函数,根据菜单提示,可以完成相关的功 void solve() 能要求 流程图: 开始 Z=1 按学校编号顺序输出 Z=2 按学校总分顺序输出 Z=3 按男子总分顺序输出 Z=4 按女子总分顺序输出 Z=5 Z=6 输入学校编号, 查询学校信息 输入项目编号, 查询项目信息 Z=7 BREAK 4
3、程序代码: #include #include #include #include using namespace std; int n; //n 个学校 int m; //m 个男子项目 int w; //w 个女子项目 struct pro //表示项目的结构体 { string name; //项目名称 int snum[6]; //前 5 名学校的编号 }p[21]; struct school //表示学校的结构体 { int num; string name; //学校名称 int score; //学校总分 int male; //男子总分 int female; //女子总分 }sch[21]; int integral[5]={7,5,3,2,1};//前五名得分 void input() { int i,j,y,x; printf("输入学校数目:"); y=0; 5
while(1) { scanf("%d",&n); if(n>=1&&n<=20)y=1; if(y)break; else printf("输入数据有误,请重新输入:"); } for(i=1;i<=n;i++) { printf("输入第%d 个学校的名称:",i); cin>>sch[i].name; sch[i].score=0; sch[i].female=0; sch[i].male=0; sch[i].num=i; } printf("输入男子项目数和女子项目数:"); y=0; while(1) { scanf("%d%d",&m,&w); if(m<=20&&m>=1&&w<=20&&w>=1)y=1; if(y)break; else printf("输入数据有误,请重新输入:"); } for(i=1;i<=m+w;i++) { printf("输入第%d 个项目的名称:\n",i); cin>>p[i].name; 6
printf("输入第%d 个项目的前 5 名的学校编号:\n",i); for(j=1;j<=5;j++) { y=0; while(1) { scanf("%d",&x); if(x>=1&&x<=20)y=1; if(y)break; else printf("输入数据有误,请重新输入:"); } p[i].snum[j]=x; sch[x].score+=integral[j-1]; if(i<=m)sch[x].male+=integral[j-1]; else sch[x].female+=integral[j-1]; } } } void print(int i) { cout<
if(sch[i].num>sch[j].num) {t=sch[i];sch[i]=sch[j];sch[j]=t;} } printf("\n 按编号排列:\n"); printf("编号 学校名称 总分 男子总分 女子总分\n"); for(i=1;i<=n;i++) print(i); } void zongfen() //按学校总分排序 { int i,j; school t; for(i=1;i
分享到:
收藏