运动会分数统计的实验报告(数组实现)
运动会分数统计的实验报告(数组实现)
有n个学校参加运动会,学校名对应的编号为1……n。比赛分成m个男子项目,和w个女子项目。每个项目取前三名积分,前三名的积分分别为:5、3、2;数据可以存储在一个数据文件中,数据结构、具体数据自定。
具体功能有:
(1)从键盘输入学校、项目、项目得分信息;
(2)能统计各学校总分;
(3)能统计各个项目的前三名;
(4)可以按学校编号或名称、学校总分、男女团体总分排序输出;
(5)可以按学校编号查询学校某个项目的情况;
(6)可以按项目编号查询取得前三名的学校。
(7)数据存入文件并能随时查询。
设计要求:
(1)符合课题要求,实现相应功能;
(2) 要求界面友好美观,操作方便易行;
(3) 注意程序的实用性、安全性;
所用的编译器是 Dev-C++5.11
在编写的过程中,借鉴了前辈的代码。
链接: 前辈代码.
遇到的问题
在结构体数组中我在一个函数中给了一个元素值,但在另一个函数中调用不出来,只能得到乱码;
解决方案:
再创建一个数组,将原有的数组
node g[65];
变为
typedef struct { node g[65];}lnode;
接着 利用 “引用 &”从而对每个函数的数据进行赋值.
如
void count(lnode &l);
进而保存当前修改数组的数据。
源码如下:
#include<stdio.h>
#include<malloc.h>
#include <iostream>
#include<stdlib.h>
#include<math.h>
#define N 5
FILE *fp;int m;//男子项目数 int w; //女子项目数 int n;//学校个数
typedef struct woman
{ int num; // 编号 int score; int rank2;} woman;typedef struct man
{ int num;int score1;int rank1;} man;typedef struct node
{ int schoolnum;//学校编号 int score;//学校总分 char name[55];//学校姓名 int manscore;//男团总分 int wscore;//女团总分 woman woitem[N];man manitem[N];} node;typedef struct { node g[65];}lnode;void scanf(lnode &l) ;
void count(lnode &l);
void schooltotalsort(lnode &l); //按学校得分编号排序
void schoolsumsort(lnode &l); //按学校的编号排序
void mansort(lnode &l); //按男子团体 成绩排序
void womansort( lnode &l); //按女子团体 成绩排序
void schoolinquiry(lnode &l); //按学校编号查询某项目
void itemnum(lnode &l); //以项目编号查询前三名的学校void menu()
{ printf(" \t\t\t运动会分数统计系统\n ") ;printf("\n");printf("\t\t\t *** 1 输入运动会的相关信息***\n");printf("\t\t\t *** 2 运动会排名***\n");printf("\t\t\t *** 3 参赛学校信息查询***\n");printf("\t\t\t *** 4退 出***\n");printf("*******请选择要进行的操作1/2/3/4/5*******\n"); }void menu2()
{ printf("***\t\t\t运动会排名***\n"); printf("\n");printf("\t\t\t ***1 学校总分排名***\n");printf("\t\t\t ***2 学校编号排名***\n");printf("\t\t\t ***3 男子团体排名***\n");printf("\t\t\t ***4 女子团体排名***\n"); printf("\t\t\t ***5 退出***\n"); printf("*******请选择要进行的操作1/2/3/4/5*******\n"); } void menu3()
{ printf("\t\t\t***运动会查询***\n");printf("\n");printf("\t\t\t *** 1 学校编号查询学校某个项目***\n");printf("\t\t\t *** 2 项目编号查询取得前三名的学校***\n");printf("\t\t\t *** 3 退出***\n");printf("******* 选择要进行的操作1/2/3***\n"); } main()
{ lnode l;int a,b,c;menu();scanf("%d",&a);while (a!=4)
{switch(a)
{ case 1: scanf( l);count(l);getchar();system("pause");menu();break;case 2: menu2(); scanf("%d",&b);while(b!=5){switch(b){ case 1: schooltotalsort(l);getchar();menu2();break;case 2: schoolsumsort(l);getchar();menu2();break;case 3: mansort(l); getchar();menu2();break;case 4: womansort(l);getchar();menu2();break; case 5: getchar();menu();break; } scanf("%d",&b); }menu();break;case 3: menu3();scanf("%d",&c);while(c!=3){switch(c) { case 1: schoolinquiry(l); getchar();menu3();break;case 2:itemnum(l); getchar();menu3();break;case 3: getchar();menu();break; } scanf("%d",&c); }menu();break;default : getchar();menu();printf("\n\t\t\t****请输入正确操作***\n");break; }scanf("%d",&a);}
return 0;
}void scanf( lnode &l) //输入信息
{ int i,j;int z; node t;printf("请先输入运动会信息\n"); printf("输入学校个数:");
scanf("%d",&n);
getchar();
printf("输入男子项目个数:");scanf("%d",&m);getchar();
printf("输入女子项目个数:");scanf("%d",&w);getchar(); if((fp=fopen("sports.txt","w"))==NULL){printf("文件打开失败\n");getchar();exit(1);} else {for(i=0;i<n;i++)
{ printf("\n请输入第%d个学校编号:",i+1);scanf("%d",&l.g[i].schoolnum); fprintf(fp,"第%d所学校的编号为:",i+1);fprintf(fp,"%d\n",l.g[i].schoolnum);printf("第%d所学校的名字为:",i+1);scanf("%s",&l.g[i].name ); fprintf(fp,"第%d所学校男子信息录入\n",i+1);fprintf(fp,"第%d所学校的名字为:",i+1);fprintf(fp,"%s\n",l.g[i].name);printf("\n");for(j=0;j<m;j++)
{ printf("输入第%d所学校的第%d个男子项目编号",i+1,j+1);scanf("%d",&l.g[i].manitem[j].num );printf("\n");printf("该学校该项目获得第几名?");scanf("%d",&l.g[i].manitem[j].rank1 );fprintf(fp,"编号:%d\t",l.g[i].manitem[j].num);fprintf(fp,"名次:%d\n",l.g[i].manitem[j].rank1); printf("\n"); }fprintf(fp,"第%d所学校女子信息录入\n",i+1);for(z=0;z<w;z++) {printf("输入第%d所学校的第%d个女子项目编号",i+1,z+1); scanf("%d",&l.g[i].woitem[z].num );printf("\n");printf("该学校该项目获得第几名?");scanf("%d",&l.g[i].woitem[z].rank2 ); printf("\n");fprintf(fp,"编号:%d\t",l.g[i].woitem[z].num);fprintf(fp,"名次:%d\n",l.g[i].woitem[z].rank2 ); printf("\n"); } printf("_______________________________--\n");
}fclose(fp);
}}void count(lnode &l)
{int i,j;int z;int a=0;int b=0;for(i=0;i<n;i++) //利用 积分制计算分数 { printf("学校的编号 %d \n",l.g[i].schoolnum );printf("学校的名字 %s \n",l.g[i].name );for(j=0;j<m;j++)//男子项目 { switch(l.g[i].manitem[j].rank1 ) {case 1: l.g[i].manitem[j].score1 =5; break ;case 2: l.g[i].manitem[j].score1 =3; break ; case 3:l.g[i].manitem[j].score1 =2; break ;default : l.g[i].manitem[j].score1 =1; break ;}}for(z=0;z<w;z++) //女子项目 { switch(l.g[i].woitem[z].rank2 ){case 1: l.g[i].woitem[z].score=5; break ; case 2: l.g[i].woitem[z].score=3; break ; case 3: l.g[i].woitem[z].score=2; break ; default:l.g[i].woitem[z].score=1; break ; } } for(j=0;j<m;j++) //男子项目名次及分数 { printf("第%d男子项目的编号为 %d\n",j+1,l.g[i].manitem[j].num );printf("第%d男子项目的名次为 %d\t",j+1,l.g[i].manitem[j].rank1 );printf("男子分数:%d\n",l.g[i].manitem[j].score1 );a =a+l.g[i].manitem[j].score1; } l.g[i].manscore=a;for(z=0;z<w;z++) //女子项目的名次及分数
{printf("第%d女子项目的编号为%d\n",z+1,l.g[i].woitem[z].num );printf("第%d女子项目的名次为%d\t",z+1,l.g[i].woitem[z].rank2 );printf("女子分数 %d\n",l.g[i].woitem[z].score ); b =b+l.g[i].woitem[z].score ; } l.g[i].wscore=b;l.g[i].score =l.g[i].manscore +l.g[i].wscore ; printf("男子项目总分数是:%d\t",l.g[i].manscore ); printf("女子项目总分数是:%d\n",l.g[i].wscore);printf("分数和:%d\n",l.g[i].score );printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n"); printf("\n");a=0;b=0;
}
}//排名
void schooltotalsort(lnode &l ) //按学校总分排序
{ int i , j,k ; node t;
for(i=0;i<n;i++)
{ k=i ;for(j=0;j<n-i;j++) {if(l.g[j].score <l.g[j+1].score ) {t=l.g[j];l.g[j]=l.g[j+1];l.g[j=1]=t; }}
}printf("\t\t运动会学校排名\n\n");printf("\t学校编号\t名称学校\t学校总分数\n");
for(i=0;i<n;i++)
{ printf("\t%d\t\t%s\t\t%d\n",l.g[i].schoolnum ,l.g[i].name ,l.g[i].score );}printf("***\n");}void schoolsumsort(lnode &l) //按学校的编号排序
{ int i , j,k ; node t; for(i=0;i<n;i++)
{k=i;for(j=0;j<n-i;j++)
{if(l.g[j].schoolnum <l.g[j+1].schoolnum ) {t=l.g[j];l.g[j]=l.g[j+1];l.g[j+1]=t; }
}} printf("\t\t运动会学校排名\n\n");printf("\t学校编号\t名称学校\t学校总分数\n");for(i=0;i<n;i++)
{ printf("\t%d\t\t%s\t\t%d\n",l.g[i].schoolnum ,l.g[i].name ,l.g[i].score );}printf("***\n");}void mansort(lnode &l) //按男子团体 成绩排序
{ int i , j ,k; node t;for(i=0;i<n;i++)
{ k=i;for(j=0;j<n-i;j++) { if(l.g[j].manscore <l.g[j+1].manscore ){ t=l.g[j];l.g[j]=l.g[j+1];l.g[j+1]=t; }}
}
printf("\t\t\t男子项目团体排名\n\n"); printf("\t学校编号\t学校名称\t学校男子项目的编号\t学校男子团体成绩\n");
for(i=0;i<n;i++)
{ for(j=0;j<m;j++) {printf("\t%d\t\t%s\t\t%d\t\t\t\t%d\n",l.g[i].schoolnum ,l.g[i].name , l.g[i].manitem[j].num,l.g[i].manscore ); }
}
printf("*********************\n");}void womansort(lnode &l)//按女子团体 成绩排序
{ int i , j,k ; node t;for(i=0;i<n;i++)
{ k=i;for(j=0;j<n-i;j++) {if( l.g[j].wscore <l.g[j+1].wscore ){ t=l.g[j];l.g[j]=l.g[j+1];l.g[j+1]=t; }
}} printf("\t\t\t女子项目团体排名\n\n");printf("\t学校编号\t学校名称\t学校女子团体的编号\t学校女子项目团体成绩\n");for(i=0;i<n;i++)
{ for(j=0;j<m;j++) {printf("\t%d\t\t%s\t\t%d\t\t\t\t%d\n",l.g[i].schoolnum ,l.g[i].name, l.g[i].woitem[j].num ,l.g[i].wscore ); }
}
printf("*********************\n");}// 查询
void schoolinquiry(lnode &l) //按学校编号查询
{ int i,j,k,a; int c,d,q; int coco =0; printf("****按学校编号查询****\n"); printf("\t\t **** 1 查询全部项目***\n");printf("\t\t **** 2 查询具体单个项目***\n");printf("\t\t **** 0 返回上一单元***\n");printf("\t\t\t您要进行的操作1/2/0.....***\n");
scanf("%d",&a);
if(a==0)
{printf("任意键返回*。。、*\n");return ;
}if(a==1)
{ int b;int flag =1;printf("输入要查询的学校编号\n");scanf("%d",&b);printf("\n\n");for(i=0;i<n;i++){ if(l.g[i].schoolnum ==b) { flag =0;printf("该学校男子项目\n");for(j=0;j<m;j++) {printf("男子项目 %d 排名%d\t",j+1,l.g[i].manitem[j].rank1 );printf(" 得分%d\n",l.g[i].manitem[j].score1 );} printf("男子项目的总分为%d\n",l.g[i].manscore ); printf("该学校女子项目\n");for( k=0;k<w;k++) { printf("女子项目 %d 排名%d\t",k+1,l.g[i].woitem[k].rank2 );printf("女子项目 %d 得分%d\n",k+1,l.g[i].woitem[k].score );} printf("女子项目的总得分是%d\n\n",l.g[i].wscore );}} printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n"); printf("\n");if( flag )
{ printf("查无此校。\n");}
}
else if(a==2) { printf("请输入您要查询的学校的编号\n");scanf("%d",&c);for(i=0;i<n;i++){ if(l.g[i].schoolnum ==c)coco=1; }if(coco){ printf("******\n");printf(" 1 男子项目\n");printf(" 2 女子项目\n");printf(" 0 返回上一单元\n");printf("您要进行的操作1/2/0***\n");scanf("%d",&d);if(d==0){ printf("任意返回。。、\n");return ;}printf("查询的项目的编号是?\n");scanf("%d",&q);if(d==1) { int flag =1;for(i=0;i<n;i++ ){ for(j=0;j<m;j++) { flag=0;if(q==l.g[i].manitem[j].num ){ printf("男子项目 %d 排名%d,\t",j+1,l.g[i].manitem[j].rank1 );printf("得分%d\n",l.g[i].manitem[j].score1 );}}}printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n"); printf("\n");if(flag){printf("该学校并没有参加该项运动\n");} }if(d==2)
{ int flag =1;for(i=0;i<n;i++ ) { for(j=0;j<w;j++){ flag=0;if(q==l.g[i].woitem[j].num ) { printf("女子项目%d 排名%d,\t",j+1,l.g[i].woitem[j].rank2 );printf("得分%d\n",l.g[i].woitem[j].score ); }}}printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n"); printf("\n");if(flag){printf("该学校并没有参加该项运动\n");}} if(d<0||d>2) { printf("无此选项\n");printf("按任意键返回\n");return ;} }else{ printf("查无此校。\n"); }} if(a<0||a>2) {printf("输入错误\n");printf("按任意键返回\n");return;} }void itemnum(lnode &l) //以项目编号查询前三名的学校
{ int a,b;int i,j,k;int flag=0; node t;printf("\n\n\n");printf("\t\t\t ***查询女子/男子男子项目 ***\n\n"); printf("\t\t\t ***1 *** 男子项目***\n");printf("\t\t\t ***2 ***女子项目***\n");printf("\t\t\t ***0 ***返回上一单元\n");printf("*******您要进行的操作1/2/0.....***\n");scanf("%d",&a);if(a==0) { printf("\t\t\t按任意键返回上一单元\n");return;}printf("输入需要查询项目编号\n");scanf("%d",&b);if(a==1){ for(i=0;i<n;i++){ for(j=0;j<m;j++){ if(b==l.g[i].manitem[j].num )flag=1;} }for(i=0;i<n;i++){ for(j=0;j<n-i;j++){if(l.g[i].manitem[j].score1<l.g[i+1].manitem[j].score1 ){ t=l.g[i];l.g[i]=l.g[i+1]; l.g[i+1]=t;}}} if(flag)
{ printf("\t学校编号\t学校名字\t项目编号\t项目名次\t项目分数\n");if(n<3){ for(i=0;i<n;i++)for(j=0;j<m;j++){printf("\t%d\t\t %s\t\t %d\t\t %d\t\t %d\n ",l.g[i].schoolnum ,l.g[i].name,l.g[i].manitem[j].num ,l.g[i].manitem[j].rank1,l.g[i].manitem[j].score1 );}printf("\n\n");}
else { for(i=0;i<3;i++)for(j=0;j<m;j++){printf("\t%d\t\t %s\t\t %d\t\t %d\t\t %d\n ",l.g[i].schoolnum ,l.g[i].name ,l.g[i].manitem[j].num ,l.g[i].manitem[j].rank1,l.g[i].manitem[j].score1 );}printf("\n\n");}}
else { printf("查无此项目.\n");} }if(a==2)
{ for(i=0;i<n;i++){ for(j=0;j<w;j++){ if(b== l.g[i].woitem[j].num ){ flag=1;} }} for(i=0;i<n;i++){ for(j=0;j<n-i;j++){if(l.g[i].woitem[j].score <l.g[i+1].woitem[j].score ){ t=l.g[i];l.g[i]=l.g[i+1]; l.g[i+1]=t;}}} if(flag)
{ printf("\t学校编号\t学校名字\t项目编号\t项目名次\t项目分数\n");if(n<3){ for(i=0;i<n;i++)for(j=0;j<w;j++){printf("\t%d\t\t %s\t\t %d\t\t %d\t\t %d\n ",l.g[i].schoolnum ,l.g[i].name ,l.g[i].woitem[j].num ,l.g[i].woitem[j].rank2 ,l.g[i].woitem[j].score );}printf("\n\n");}
else { for(i=0;i<3;i++)for(j=0;j<w;j++){printf("\t%d\t\t %s\t\t %d\t\t %d\t\t %d\n ",l.g[i].schoolnum ,l.g[i].name ,l.g[i].woitem[j].num ,l.g[i].woitem[j].rank2 ,l.g[i].woitem[j].score );}printf("\n\n");}}
else { printf("查无此项目.\n");} }if(a<0||a>2)
{ printf("输入错误.\n");printf("按任意键返回\n");return;}
}
若有什么疑问欢迎交流。
运动会分数统计的实验报告(数组实现)相关推荐
- java数据结构运动会分数统计,数据结构实验报告(运动会分数统计系)..doc
数据结构实验报告(运动会分数统计系). 运动会分数统计系统 问题描述: 参加运动会有n个学校,学校编号为1--n.比赛分成m个男子项目,和w个女子项目.项目编号为男子1--m,女子m+1--m+w.不 ...
- c语言编程运动会分数统计系统报告,独家稿件:定稿运动会分数统计系统设计报告_完整版...
<运动会分数统计系统设计报告_.doc>由会员分享,可免费在线阅读全文,更多与<(定稿)运动会分数统计系统设计报告_(完整版)>相关文档资源请在帮帮文库(www.woc88.c ...
- c语言编程运动会分数统计系统,东华大学数据结构设计C语言运动会分数统计系统...
东华大学数据结构设计C语言运动会分数统计系统 东华大学数据结构设计 C 语言运动会分数统计系统东华大学数据结构课程设计 实验报告实验名称: 运动会分数统计系统指导教师:学生姓名:学生学号:实验日期:1 ...
- 数据结构实训——运动会分数统计
题目1: 运动会分数统计(限1 人完成) 任务: 参加运动会有n个学校,学校编号为1--n.比赛分成m个男子项目,和w个女子项目.项目编号为男子1--m,女子m+1--m+w.不同的项目取前五名或前三 ...
- 运动会分数统计 java语言
运动会分数统计java语言 运动会分数统计* 设计内容: 参加运动会有n个学校,学校编号为1--n.比赛分成m个男子项目,和w个女子项目.项目编号为男子1--m,女子m叶+1--m+w.不同的项目取前 ...
- 数据结构课设----运动会分数统计系统
1.运动会分数统计 [问题描述] 参加运动会的n个学校编号为1 ~ n.比赛分成m个男子项目和w个女子项 目,项目编号分别为1~ m和m+1~ m+w.由于各项目参加人数差别较大,有 些项目取前五名, ...
- 运动会分数统计系统(数据结构)C++
运动会分数统计系统(数据结构)C++ 参加运动会有n个学校,学校编号为1--n.比赛分成m个男子项目,和w个女子项目.项目编号为男子1--m,女子m+1--m+w.不同的项目取前五名或前三名积分:取前 ...
- 运动会分数统计(数据结构课程设计)
参加运动会有n个学校,学校编号为1--n.比赛分成m个男子项目,和w个女子项目.项目编号为男子1--m,女子m+1--m+w.不同的项目取前五名或前三名积分:取前五名的积分分别为:7.5.3.2.1, ...
- 运动会分数统计系统c语言,运动会分数统计系统
<运动会分数统计系统>由会员分享,可在线阅读,更多相关<运动会分数统计系统(18页珍藏版)>请在人人文库网上搜索. 1.运动会分数统计系统罗慧明1. 需求分析为了简便地对运动会 ...
最新文章
- 判断jQuery库是否被正确引入
- 代码实践|通过简单代码来回顾卷积块的历史
- 捋一下测序后生信分析内容及其常用软件
- Python学习入门基础教程(learning Python)--2.3.5Python返回多个值问题
- Pandas打印所有行和列(显示所有的行和列)
- HDU-1878 欧拉回路 判定是否存在欧拉回路
- received packet with own address as source address
- t3 深入Tornado
- 去重的Set解不出“斯诺登的密码”(洛谷P1603题题解,Java语言描述)
- Bootstrap 弹出提示插件popover 的使用方法
- 卡尔曼滤波 -- 从推导到应用(二)
- maven工程分开common和server
- IE 8 Beta 2中文版首份试用体验
- 短信验证码和邮箱验证码
- 零基础无经验,该怎么学编程,要学多久?
- 通用计算机按其规模速度和功能,电脑基础知识详解
- update(更新) 和 upgrade(升级)
- 安全帽识别的系统应用
- 新型能力的识别与确定
- iOS 10 is the maximum deployment target for 32-bit targets