运动会分数统计的实验报告(数组实现)

有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;}
}



若有什么疑问欢迎交流。

运动会分数统计的实验报告(数组实现)相关推荐

  1. java数据结构运动会分数统计,数据结构实验报告(运动会分数统计系)..doc

    数据结构实验报告(运动会分数统计系). 运动会分数统计系统 问题描述: 参加运动会有n个学校,学校编号为1--n.比赛分成m个男子项目,和w个女子项目.项目编号为男子1--m,女子m+1--m+w.不 ...

  2. c语言编程运动会分数统计系统报告,独家稿件:定稿运动会分数统计系统设计报告_完整版...

    <运动会分数统计系统设计报告_.doc>由会员分享,可免费在线阅读全文,更多与<(定稿)运动会分数统计系统设计报告_(完整版)>相关文档资源请在帮帮文库(www.woc88.c ...

  3. c语言编程运动会分数统计系统,东华大学数据结构设计C语言运动会分数统计系统...

    东华大学数据结构设计C语言运动会分数统计系统 东华大学数据结构设计 C 语言运动会分数统计系统东华大学数据结构课程设计 实验报告实验名称: 运动会分数统计系统指导教师:学生姓名:学生学号:实验日期:1 ...

  4. 数据结构实训——运动会分数统计

    题目1: 运动会分数统计(限1 人完成) 任务: 参加运动会有n个学校,学校编号为1--n.比赛分成m个男子项目,和w个女子项目.项目编号为男子1--m,女子m+1--m+w.不同的项目取前五名或前三 ...

  5. 运动会分数统计 java语言

    运动会分数统计java语言 运动会分数统计* 设计内容: 参加运动会有n个学校,学校编号为1--n.比赛分成m个男子项目,和w个女子项目.项目编号为男子1--m,女子m叶+1--m+w.不同的项目取前 ...

  6. 数据结构课设----运动会分数统计系统

    1.运动会分数统计 [问题描述] 参加运动会的n个学校编号为1 ~ n.比赛分成m个男子项目和w个女子项 目,项目编号分别为1~ m和m+1~ m+w.由于各项目参加人数差别较大,有 些项目取前五名, ...

  7. 运动会分数统计系统(数据结构)C++

    运动会分数统计系统(数据结构)C++ 参加运动会有n个学校,学校编号为1--n.比赛分成m个男子项目,和w个女子项目.项目编号为男子1--m,女子m+1--m+w.不同的项目取前五名或前三名积分:取前 ...

  8. 运动会分数统计(数据结构课程设计)

    参加运动会有n个学校,学校编号为1--n.比赛分成m个男子项目,和w个女子项目.项目编号为男子1--m,女子m+1--m+w.不同的项目取前五名或前三名积分:取前五名的积分分别为:7.5.3.2.1, ...

  9. 运动会分数统计系统c语言,运动会分数统计系统

    <运动会分数统计系统>由会员分享,可在线阅读,更多相关<运动会分数统计系统(18页珍藏版)>请在人人文库网上搜索. 1.运动会分数统计系统罗慧明1. 需求分析为了简便地对运动会 ...

最新文章

  1. 判断jQuery库是否被正确引入
  2. 代码实践|通过简单代码来回顾卷积块的历史
  3. 捋一下测序后生信分析内容及其常用软件
  4. Python学习入门基础教程(learning Python)--2.3.5Python返回多个值问题
  5. Pandas打印所有行和列(显示所有的行和列)
  6. HDU-1878 欧拉回路 判定是否存在欧拉回路
  7. received packet with own address as source address
  8. t3 深入Tornado
  9. 去重的Set解不出“斯诺登的密码”(洛谷P1603题题解,Java语言描述)
  10. Bootstrap 弹出提示插件popover 的使用方法
  11. 卡尔曼滤波 -- 从推导到应用(二)
  12. maven工程分开common和server
  13. IE 8 Beta 2中文版首份试用体验
  14. 短信验证码和邮箱验证码
  15. 零基础无经验,该怎么学编程,要学多久?
  16. 通用计算机按其规模速度和功能,电脑基础知识详解
  17. update(更新) 和 upgrade(升级)
  18. 安全帽识别的系统应用
  19. 新型能力的识别与确定
  20. iOS 10 is the maximum deployment target for 32-bit targets

热门文章

  1. 今日早报 每日精选12条新闻简报 每天一分钟 知晓天下事 2月17日
  2. nuscenes instance 调研笔记
  3. 使用什么软件可以将PDF文件进行编辑
  4. 硬盘柱面损坏怎么办_硬盘在坏道检测中出现了要多少个损坏柱面才说明这个硬盘废了?...
  5. Android之集成极光推送消息
  6. 苹果要求部分员工佩戴警用级随身摄像头
  7. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxcccccccccccc
  8. erlang游戏服务器
  9. 提高工作效率的tab
  10. 论军人的战斗意志—亮剑精神