运动会分数统计_第1页
运动会分数统计_第2页
运动会分数统计_第3页
运动会分数统计_第4页
运动会分数统计_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、通达学院专业课程设计II题 目: 运动会分数统计 专 业 计算机通信 学 生 姓 名 班 级 学 号 09002829 指 导 教 师 沙超 指 导 单 位 计算机学院 日 期 2012年6月13日 教师评语同学出勤率(满勤、较高、一般,较低),学习态度(端正、较端正、一般、较差),程序设计基础(好、较好、一般、较差),演示程序(已经、没有)达到了基本要求,算法设计(好、较好、一般),界面友好程度(好、较好、一般),答辩过程中回答问题(准确、较准确、错误率较高),撰写报告格式(规范、一般)、内容(丰满、简单)、表述(清晰、一般、不清楚),(圆满、较好、基本)完成了课题任务。 教师签名: 年 月

2、 日成绩评定备 注运动会分数统计一、 课题内容和要求题目描述:参加运动会的有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)可以按照学校编号查询学校的某个项目的情况,并

3、可以按照项目编号查询取得前三名或者前五名的学校5)有完善的出错处理机制,最终的运动会分数统一为整数提高要求:1)有图形界面、功能菜单2)能够将所有积分信息保存为文件二、概要设计 1. 本系统的流程图如下:(流程图较大,在下页显示)YNNNYCase1Case3NYYY开始-初始化输入输入某项目各名次成绩输入学校及男女项目范围继续输入查询各学校成绩Case2查询团体总分成绩查询输出查询学校成绩继续结束退出继续2. 本系统采用的存储结构为结构化设计理念,这是数据库的最基本的设计要求,主要包括三个数据表:(1) 项目数据表:运动会开始前必须详细制定本次运动会所需的参赛项目为接下来报名、场地的准备提供

4、依据。本数据表根据要求设计存储每个项目的编号、取得前几名名次的数目、要取的名次以及各个名次对应的分数。在初始输入时仅输入项目编号、名称及要取的名次,而各名次对应的分数将由系统自动统计。这也有利于以后项目情况的查询。typedef structint itemnum; /项目编号 int top; /取名次的数目int range5; /名次int mark5; /分数 itemnode; /定义项目结点的类型(2) 学校数据表:本数据表储存了各个参赛学校的总体情况,包括学校的编号、男子团体总分、女子团体总分和学校总分。其中学校编号是提前输入的,而其他三项内容将由系统进行自动统计。 typede

5、f structint schoolnum; /学校编号int score; /学校总分int mscore; /男团体总分int wscore; /女团体总分itemnode cm+w; /项目数组headnode;/定义头结点类型 这两个数据表之间由项目编号和学校编号进行相关联接,形成一个整体。三、详细设计 源程序代码:#include<stdio.h>#include<iostream.h>#include <conio.h>#include <process.h>#define n 4 /学校数目 #define m 2 /男子项目数目

6、#define w 2 /女子项目数目#define null 0typedef struct int itemnum; /项目编号 int top; /取名次的数目 int range5; /名次 int mark5; /分数itemnode; /定义项目结点的类型typedef structint schoolnum; /学校编号 int score; /学校总分 int mscore; /男团体总分 int wscore; /女团体总分 itemnode cm+w; /项目数组headnode; /定义头结点类型headnode hn; /定义一个头结点数组void input() /输

7、入信息,建立系统int i,j,k,s;/*初始化头结点* for(i=0;i<n;i+) hi.score=0; hi.mscore=0; hi.wscore=0; /*输入头结点信息* for(i=0;i<n;i+) cout<<"*学校编号:" cin>>hi.schoolnum; /*输入项目信息* for(j=0;j<m+w;j+) cout<<"*项目编号:" cin>>hi.cj.itemnum; cout<<"*取前3名or前5名:" cin

8、>>hi.cj.top; cout<<"*获得几个名次:" cin>>k; for(s=0;s<5;s+) hi.cj.ranges=0, hi.cj.marks=0; for(s=0;s<k;s+) cout<<"*名次:" cin>>hi.cj.ranges; if(hi.cj.top=3) switch(hi.cj.ranges) case 0: hi.cj.marks=0; break; case 1: hi.cj.marks=5; break; case 2: hi.cj.

9、marks=3; break; case 3: hi.cj.marks=2; break; else switch(hi.cj.ranges) case 0: hi.cj.marks=0; break; case 1: hi.cj.marks=7; break; case 2: hi.cj.marks=5; break; case 3: hi.cj.marks=3; break; case 4: hi.cj.marks=2; break; case 5: hi.cj.marks=1; break; hi.score=hi.score+hi.cj.marks; /按取前三名还是取前五名分别记分

10、if(j<=m-1) hi.mscore=hi.mscore+hi.cj.marks; /是男子项目则记到男子分数里面去 else hi.wscore=hi.wscore+hi.cj.marks; /是女子项目则记到女子项目里面去 cout<<endl; cout<<endl; /*输出函数*void output() int choice,i,j,k;int sign; do cout<<"* 1.按学校编号输出 *"<<endl; cout<<"* 2.按学校总分输出 *"<&l

11、t;endl; cout<<"* 3.按男团总分输出 *"<<endl; cout<<"* 4.按女团总分输出 *"<<endl;cout<<endl; cout<<"* 请选择编号:" cin>>choice;cout<<endl; switch(choice) case 1:/*按编号顺序输出for(i=0;i<n;i+) cout<<"*学校编号:"<<hi.schoolnum<

12、<endl; cout<<"*学校总分:"<<hi.score<<endl; cout<<"*男团总分:"<<hi.mscore<<endl; cout<<"*女团总分:"<<hi.wscore<<endl;cout<<endl; break; case 2:/*按学校总分输出 for(i=0;i<n;i+) for(j=i+1;j<n;j+)if(hi.score<hj.score)k=i;

13、 i=j; j=k; for(i=0;i<n;i+) cout<<"*学校编号:"<<hi.schoolnum<<endl; cout<<"*学校总分:"<<hi.score<<endl; cout<<"*男团总分:"<<hi.mscore<<endl; cout<<"*女团总分:"<<hi.wscore<<endl; cout<<endl; break;

14、 case 3:/*按男团总分输出 for(i=0;i<n;i+) for(j=i+1;j<n;j+) if(hi.mscore<hj.mscore)k=i; i=j; j=k; for(i=0;i<n;i+) cout<<"*学校编号:"<<hi.schoolnum<<endl; cout<<"*学校总分:"<<hi.score<<endl; cout<<"*男团总分:"<<hi.mscore<<end

15、l; cout<<"*女团总分:"<<hi.wscore<<endl;cout<<endl; break; case 4:/*按女团总分输出 for(i=0;i<n;i+) for(j=i+1;j<n;j+) if(hi.wscore<hj.wscore) k=i; i=j; j=k; for(i=0;i<n;i+) cout<<"*学校编号:"<<hi.schoolnum<<endl; cout<<"*学校总分:"

16、<<hi.score<<endl; cout<<"*男团总分:"<<hi.mscore<<endl; cout<<"*女团总分:"<<hi.wscore<<endl; cout<<endl; break; cout<<"请选择 2-继续,0-跳出"<<endl; cin>>sign;while(sign=2); /* 查询函数:提供两种查询方式*void inquiry()int choice

17、;int i,j,k,s;cout<<"*1:按学校编号查询"<<endl;cout<<"*2:按项目编号查询"<<endl;cout<<"*请选择查询方式:" cin>>choice;cout<<endl; switch(choice) case 1: do cout<<"要查询的学校编号:"cin>>i;cout<<endl;if(i>n)cout<<"错误:这个学

18、校没有参加此次运动会!"<<endl; elsecout<<"要查询的项目编号:" cin>>j; if(j>m+w|j=0) cout<<"此次运动会没有这个项目"<<endl; else cout<<"这个项目取前"<<h0.cj-1.top<<"名,该学校的成绩如下:"<<endl; for(k=0;k<5;k+) if(hi-1.cj-1.rangek!=0) cout<&

19、lt;"名次:"<<hi-1.cj-1.rangek<<endl; cout<<"请选择 2-继续, 0-跳出"<<endl;cin>>s;cout<<endl;while(s=2); break; case 2: do cout<<"要查询的项目编号:"cin>>s;cout<<endl;if(s>m+w|s=0)cout<<"此次运动会不包括这个项目."<<endl;else

20、cout<<"该项目取前"<<h0.cs-1.top<<"名,取得名次的学校"<<endl;for(i=0; i<n;i+) for(j=0;j<5;j+) if(hi.cs-1.rangej!=0) cout<<"学校编号:"<<hi.schoolnum<<"名次:"<<hi.cs-1.rangej<<endl; cout<<"2-继续,0-跳出"<<

21、endl;cin>>i;cout<<endl;while(i=2); break;/*把数据存储在文件中*void writedata() FILE *report; int i; if(report=fopen("sportsdata.txt","w")=null) cout<<"不能打开文件!"<<endl; exit(1); for(i=0;i<n;i+)fwrite(&hi,sizeof(headnode),1,report); fclose(report); /*

22、读出文件中数据的函数*void readdata() FILE *report; int i,j,k,s; if(report=fopen("sportsdata.txt","r")=null) cout<<"不能打开文件!"<<endl; exit(1); /*按照读一个数据就输出一个数据的方式显示数据内容* for(i=0;i<n;i+) cout<<"*学校编号:" fread(&k,sizeof(int),1,report); cout<<k&l

23、t;<endl; cout<<"*学校总分:" fread(&k,sizeof(int),1,report); cout<<k<<endl; cout<<"*男团总分:" fread(&k,sizeof(int),1,report); cout<<k<<endl; cout<<"*女团总分:" fread(&k,sizeof(int),1,report); cout<<k<<endl; cout&l

24、t;<endl; getch(); for(j=0;j<m+w;j+) cout<<"*项目编号:" fread(&k,sizeof(int),1,report); cout<<k<<endl; cout<<"*所取名次数量:" fread(&k,sizeof(int),1,report); cout<<k<<endl; for(s=0;s<5;s+) fread(&k,sizeof(int),1,report); if(k!=0) cout

25、<<"*名次:"<<k<<endl; for(s=0;s<5;s+) fread(&k,sizeof(int),1,report); if(k!=0) cout<<"*分数:"<<k<<endl; cout<<endl; getch(); fclose(report); /*主函数*void main() int choice;cout<<endl;cout<<"=欢迎使用运动会分数统计系统="<<en

26、dl; cout<<" -BY:09002829 "<<endl;cout<<endl;cout<<endl; cout<<"* 1.输入信息 *"<<endl; cout<<"* 2.输出信息 *"<<endl; cout<<"* 3.查询信息 *"<<endl; cout<<"* 4.调用信息 *"<<endl; cout<<"

27、* 5.退出系统 *"<<endl; cout<<endl; cout<<"="<<endl;cout<<endl;cout<<"*请选择要实现步骤的编号:"cin>>choice;cout<<endl;switch(choice) case 1: input();writedata();readdata();main(); case 2: output();main(); case 3: inquiry();main(); case 4: read

28、data();main(); case 5: exit(0); default: exit(0); 四、测试数据及其结果分析1进入主界面选择信息录入2.设定4个学校编号为1、2、3、4,男生项目编号为1、2,女生项目为3、4。依次录入各学校信息3.录入后系统自动对数据进行处理,得出总分。4.信息录入完毕,自动保存到TXT文档5.选择返回主界面6.按照学校编号排序输出7. 按照学校总分排序输出8.按照男团总分排序输出9按照女团总分排序输出10.学校编号查询11.无学校编号情况下报错提示12.项目查询13项目查询无此项目报错提示14.调用之前保存文档中的信息15.无文本文档,提示调用出错五、课程设计总结(1).调试中所遇到的较重要问题的回顾:1) 提出问题:在输出时,调用冒泡排序法时,输出总是报错,无法执行。 分析问题:在分析的时候检查到,自己调用了一个第三参数当做下标,直接使用下标进行数组的交换。然后经过检查发现,此下标是多余的,没有必要引入,依靠当前的元素完全可以满足功能需求。解决问题:去掉引入的第三方下标。2) 提出问题:设置选项,供用户输入选择时,当按任意键时都会跳入下一步操作,或者直接退出系统。分析问题:在供用

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论