[计算机软件及应用]数据结构课设 运动会分数统计c++.doc

上传人:音乐台 文档编号:1991967 上传时间:2019-01-29 格式:DOC 页数:31 大小:527.50KB
返回 下载 相关 举报
[计算机软件及应用]数据结构课设 运动会分数统计c++.doc_第1页
第1页 / 共31页
[计算机软件及应用]数据结构课设 运动会分数统计c++.doc_第2页
第2页 / 共31页
[计算机软件及应用]数据结构课设 运动会分数统计c++.doc_第3页
第3页 / 共31页
亲,该文档总共31页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《[计算机软件及应用]数据结构课设 运动会分数统计c++.doc》由会员分享,可在线阅读,更多相关《[计算机软件及应用]数据结构课设 运动会分数统计c++.doc(31页珍藏版)》请在三一文库上搜索。

1、学 号 08710211数据结构课程设计设计说明书运动会分数统计起止日期: 2011年 1月 10 日 至 2011 年 1月15日学生姓名李翔班级08计算机2班成绩指导教师(签字) 电子与信息工程系2011年 1 月 15 日目录目录一、设计目的1二、设计要求1三、设计内容(运动会分数统计查询系统)1(一)需求分析1(二)概要设计2(三)详细设计(源代码)4(四)测试数据及运行结果20四、运行环境29五、参考文献29 运动会分析 学号08710211一、设计目的熟悉各种数据结构和运算,会使用数据结构的基本操作解决一些实际问题。二、设计要求 (1)重视课程设计环节,用严谨、科学和踏实的工作态度

2、对待课程设计的每一项任务;(2)按照课程设计的题目要求,独立地完成各项任务,严禁抄袭;凡发现抄袭,抄袭者与被抄袭者皆以零分计入本课程设计成绩。凡发现实验报告或源程序雷同,涉及的全部人员皆以零分计入本课程设计成绩;(3)学生在接受设计任务后,首先要按设计任务书的要求编写设计进程表;(4)认真编写课程设计报告。三、设计内容(运动会分数统计查询系统)(一)需求分析1. 在该程序中,参赛学校编号为1n(n=20)。比赛分成m(m=30)个男子项目和w(w初始化项目信息(编号、取名次等情况)。2每个项目中取得名次的学校统计。 3根据每个学校的成绩计算对应的得分,包括总得分、男团总分、女团总分。4查询功能

3、,用户按学校编号查询学校具体信息,按项目编号查询,存储本次运动会信息,以及查询已录入的往届运动会信息(须知道准确的存储文件的文件名)5登录模块,为了数据安全,设置登录功能(本功能尚待完善)。6流程图设计:(附:登陆名:lixiang 密码:5211)主函数登陆函数(用户名、密码)Test函数调用各级函数项目初始化针对项目的学校成绩录入入读取往届运动会成绩按各种要求计算个学校分数,排名按项目查学校本届成绩存档按女团分查按男团分查按团体总分差按编号查按学校查项目 (三)详细设计(源代码)/08710211.hstruct s_p/学校-项目对应关系数组单元(广义2维线性表)int attend;/

4、是否在该项目取得名次char sex;/该项目性质b或g(冗余)int nature;/该项目取前几名(冗余)int NO;/在该项目中排名int score;/在该项目中得分;struct sint bianhao; /学校的编号int balcore; /学校的男团总分intbrank; / 学校男团排名int galcore; /学校的女团总分int grank; / 学校女团排名int alscore; /学校的团体总分int arank; /学校团体总排名;class yonghuprivate:char name100;double code;public:yonghu( char

5、 *a,double b)strcpy(name,a);code=b;void chushi( char *a,double b);bool paiduan(char *a,double b);class atheletprivate:int m;/m个项目int b;/男子项目数int g;/女子项目数int n;/n个学校int t;/取前三名的项目数int *T;/记录取前三名的项目编号int *F;/记录取前五名的项目编号s_p *a;/定义学校项目广义二维线性表(本次只在此两个线性表实现文件读写)s *B;/定义学校一维线性表(同上)bool sf;public:void chush

6、i( );/项目学校信息初始化void luruchengji();/学校成绩录入void jisuan();/学校排名计算void bianhao( );/学校按编号排名void zongcore( );/学校按总分排名void bscore();/学校按男团总分排名void gscore();/学校那女团总分void xuexiao_bianhao();/学校按编号查询void xiangmu();/按项目查询void W(char s);/功能函数void cun( );/存盘函数void du( );/读盘函数void test();/综合测试void login( );/登录;/08

7、710211.cpp#include#include#include#include#include #include08710211.husing namespace std;void yonghu:chushi( char *a,double b)strcpy(name,a);code=b;bool yonghu:paiduan(char *a,double b)if(strcmp(a,name)=0&b=code) return 1;else return 0;void athelet:chushi( )/*1.初始化项目*/L:cout男子项目数:b;if(b=0) cout数据错误,

8、请重新输入!endl; goto L;J:cout女子项目数:g;if(g=0) cout数据错误,请重新输入!endl; goto J;m=b+g;cout学校数:n;if(n5) cout学校数据(不得少于5个)错误,请重新输入!endl; goto L1;a=new s_p *n+1;B=new sn+1;for(int i=1;i=n;i+)ai=new s_pm+1;/*2.项目如何取名次的设置(取前3或前5)*/V:cout请输入有几个项目取前三名t;if(t=m) cout输入错误,请重新输入!endl;goto V;T=new intt+1;/用来记录取前3名的项目编号F=ne

9、w intm-t+1;/用来记录取前5名的项目编号L2:cout请依此输入这t个项目的编号endl;for(i=1;iTi;if(Ti=m)cout 项目编号超出范围,请充值数据!endl;goto L2;cout取前3名项目编号为:endl;for(i=1;i=t;i+)coutTi号项目 ;coutendl;cout取前5名项目编号为:endl;/输出同时计算取前5名的项目的编号int k=1;for(i=1;i=m;i+)int y=1;for(int j=1;j=t;j+)if(i=Tj) y=0;if(y=1) Fk+=i;coutFk-1号项目 ;coutendl;/*对s_p a

10、二维数组的初始化信息,默认情况下,nature是取前5名的*/for(i=1;i=n;i+)for(int j=1;j=m;j+)aij.attend=0; aij.nature=5;aij.NO=0;aij.score=0;if(j=b)aij.sex=b;else aij.sex=g;/*符合条件情况下,则nature修改为取前3名*/for(i=1;i=n;i+)for(int j=1;j=m;j+)for(int h=1;h=t;h+)if(j=Th)aij.nature=3;/*测试数据的函数*/for(i=1;i=n;i+)for(int j=1;j=m;j+)coutaij.na

11、tureaij.sex ;coutendl;cout项目初始化完毕!endlendl;void athelet:luruchengji()/*1.(1号功能)录入成绩功能*/*取前3名项目的成绩*/cout现在录入取前三名的项目的成绩:endl;int one,two,three,four,five;for(int i=1;i=t;i+)A1:coutTione;if(onen)cout输入错误,请重新录入;goto A1;/异常处理if(aoneTi.attend=1)cout输入错误,请重新录入;goto A1;/异常处理,下同aoneTi.attend=1;aoneTi.NO=1;aon

12、eTi.score=5;B1:coutTitwo;if(twon)cout输入错误,请重新录入;goto B1;/异常处理if(atwoTi.attend=1)cout输入错误,请重新录入;goto B1;atwoTi.attend=1;atwoTi.NO=2;atwoTi.score=3;C1:coutTithree;if(threen)cout输入错误,请重新录入;goto C1;/异常处理 if(athreeTi.attend=1)cout输入错误,请重新录入;goto C1;athreeTi.attend=1;athreeTi.NO=3;athreeTi.score=2;/*取前5名项

13、目的成绩*/cout现在录入取前5名的项目的成绩:endl;for(i=1;i=m-t;i+)o1:coutFione; if(onen)cout输入错误,请重新录入;goto o1;/异常处理if(aoneFi.attend=1) cout输入错误!请重新录入;goto o1;aoneFi.attend=1;aoneFi.NO=1;aoneFi.score=7;p:coutFitwo;if(twon) cout输入错误,请重新录入;goto p;/异常处理if(atwoFi.attend=1) cout输入错误!请重新录入;goto p;atwoFi.attend=1;atwoFi.NO=2

14、;atwoFi.score=5;q:coutFithree;if(threen) cout输入错误,请重新录入;goto q;/异常处理if(athreeFi.attend=1) cout输入错误!请重新录入;goto q;athreeFi.attend=1;athreeFi.NO=3;athreeFi.score=3;r:coutFifour;if(fourn) cout输入错误,请重新录入;goto r;/异常处理if(afourFi.attend=1) cout输入错误!请重新录入;goto r;afourFi.attend=1;afourFi.NO=4;afourFi.score=2;

15、S:coutFifive; if(fiven) cout输入错误,请重新录入;goto S;/异常处理if(afiveFi.attend=1) cout输入错误!请重新录入;goto S;afiveFi.attend=1;afiveFi.NO=5;afiveFi.score=1;cout成绩录入完毕!endlendl;void athelet:jisuan()/*(2号功能)统计各学校总分*/*学校数据初始化*/for(int i=1;i=n;i+)Bi.bianhao=i;Bi.alscore=0;Bi.balcore=0;Bi.galcore=0;Bi.arank=Bi.brank=Bi.

16、grank=0;int sum;/*计算学校的男团总得分、女团总得分、总得分*/for(i=1;i=n;i+)sum=0;for(int j=1;j=b;j+)sum+=aij.score;Bi.balcore=sum;sum=0;for(j=b+1;j=m;j+)sum+=aij.score;Bi.galcore=sum;Bi.alscore=Bi.balcore+Bi.galcore;/*计算学校根据男团总得分的排名*/s temp;for(i=1;i=n-1;i+)for(int j=i+1;j=n;j+)if(Bi.balcoreBj.balcore)temp=Bi;Bi=Bj;Bj=

17、temp;for(i=1;i=n;i+) Bi.brank=i;/*计算学校根据女团总得分的排名*/for(i=1;i=n-1;i+)for(int j=i+1;j=n;j+)if(Bi.galcoreBj.galcore)temp=Bi;Bi=Bj;Bj=temp;for(i=1;i=n;i+) Bi.grank=i;/*计算学校根据总得分的排名*/for(i=1;i=n-1;i+)for(int j=i+1;j=n;j+)if(Bi.alscoreBj.alscore)temp=Bi;Bi=Bj;Bj=temp;for(i=1;i=n;i+) Bi.arank=i;cout个学校积分、排名

18、计算完毕!endlendl;void athelet:bianhao( )/*可以查询任意编号学校的总分、男团总分、女团总分*/*按编号排序输出学校的总分、男团总分、女团总分*/for(int i=1;i=n-1;i+)for(int j=i+1;jBj.bianhao)s temp=Bi;Bi=Bj;Bj=temp;/*按编号输出成绩*/cout按编号输出:endl;cout学编号setw(10)团总分setw(10)团排名setw(10)男总分setw(10)男团排setw(10)女团总分setw(10)女团排endl;for(i=1;i=n;i+)for(int j=1;j=n;j+)i

19、f(Bj.bianhao=i)coutBj.bianhaosetw(10)Bj.alscoresetw(10)Bj.aranksetw(10)Bj.balcoresetw(10)Bj.branksetw(10)Bj.galcoresetw(10)Bj.grankendl;cout按编号输出完毕!endlendl;void athelet:zongcore( )/*按总得分排名输出成绩*/*按团总分排序输出学校的总分、男团总分、女团总分*/cout按总得分排名输出:endl;cout学编号setw(10)团总分setw(10)团排名setw(10)男总分setw(10)男团排setw(10)女团

20、总分setw(10)女团排endl;for(int i=1;i=n;i+)for(int j=1;j=n;j+)if(Bj.arank=i)coutBj.bianhaosetw(10)Bj.alscoresetw(10)Bj.aranksetw(10)Bj.balcoresetw(10)Bj.branksetw(10)Bj.galcoresetw(10)Bj.grankendl;cout按团体总分排名书输出完毕!endlendl;void athelet:bscore()/*按男团总分排序输出学校的总分、男团总分、女团总分*/cout男排名endl;cout学编号setw(10)团总分setw

21、(10)团排名setw(10)男总分setw(10)男团排setw(10)女团总分setw(10)女团排endl;for(int i=1;i=n;i+)for(int j=1;j=n;j+)if(Bj.brank=i)coutBj.bianhaosetw(10)Bj.alscoresetw(10)Bj.aranksetw(10)Bj.balcoresetw(10)Bj.branksetw(10)Bj.galcoresetw(10)Bj.grankendl;cout按男子团体总分排名输出完毕!endlendl;void athelet:gscore()/*按女团总分排序输出学校的总分、男团总分、

22、女团总分*/cout女排名endl;cout学编号setw(10)团总分setw(10)团排名setw(10)男总分setw(10)男团排setw(10)女团总分setw(10)女团排endl;for(int i=1;i=n;i+)for(int j=1;j=n;j+)if(Bj.grank=i)coutBj.bianhaosetw(10)Bj.alscoresetw(10)Bj.aranksetw(10)Bj.balcoresetw(10)Bj.branksetw(10)Bj.galcoresetw(10)Bj.grankendl;cout按女子团体总分排名输出完毕!endlendl;voi

23、d athelet:xuexiao_bianhao()/*(4号功能)按学校编号查询学校某个项目的情况*/int M,N;E:cout请输入学校编号M;if(Mn) cout输入学校编号错误!,请重新输入!endl;goto E;U:cout请输入M号学校的项目N;if(Nm) cout输入项目编号错误!,请重新输入!endl;goto U;coutM号学校N号项目的具体信息如下endl;cout学校号setw(10)项目号setw(10) 性质(g/b)setw(10) 是否取得名次(1/0)setw(10)取得名次setw(10)该项得分endl;coutMsetw(10)Nsetw(10

24、)aMN.sexsetw(10)aMN.attendsetw(10)aMN.NOsetw(10)aMN.scoreendl;cout按学校查询完毕!endlendl;void athelet:xiangmu()/*(最后的功能,5号功能)按项目编号查询取得前三或前五名的学校*/HH:cout请输入要查询的项目号N;if(Nm) cout输入项目编号错误!,请重新输入!endl;goto HH;cout学校编号setw(18)名次setw(18)分数endl;for(int i=1;i=n;i+)if(aiN.attend=1)coutisetw(18)aiN.NOsetw(18)aiN.sco

25、reendl;cout按项目查询完毕!endlendl;void athelet:W(char s)cout请按任意字符继续.s;coutendl;void athelet:cun( )char name100;char name1100;cout请输入存档文件的文件名!name;strcpy(name1,name);/*一维线性表存入磁盘*/strcat(name,.txt);ofstream outfile,outfile1;/定义输出流对象outfile.open(name,ios:out);/以输出形式打开if(!outfile)cerropen file error!endl;abo

26、rt ( );outfile.write(char *)&n,sizeof(n);/n(学校数)存入文档for(int i=1;i=n;i+)outfile.write(char *)&Bi,sizeof(s);outfile.close();/*二维线性表存入磁盘*/strcat(name1,.bat);outfile1.open(name1,ios:out);if(!outfile1)cerropen file error!endl;abort ( );outfile1.write(char *)&m,sizeof(m);for( i=1;i=n;i+)for(int j=1;j=m;j+

27、)outfile1.write(char *)&aij,sizeof(s_p);outfile1.close();cout存储完毕!endl;void athelet:du( )sf=1;int t=0;char q100;char q1100;ss:if(t=5) cout对不起,您的操作过多,必须强制退出!endl;sf=0;return ;cout请输入您要查询的运动会存档文件名(输入0放弃查询).q;strcpy(q1,q);/*一维线性表从磁盘读取*/strcat(q,.txt);ifstream infile;/定义输入流对象infile.open(q,ios:in);/以输入形式

28、打开磁盘文件发txtif(!infile)cerr文件未找到!请重新输入文件名endl;goto ss;t+;/infile.read(char *)&m,sizeof(m);/m(项目数)从文件中取infile.read(char *)&n,sizeof(n);/n(学校数)从文档中取B=new sn+1;for(int i=1;i=n;i+)infile.read(char *)&Bi,sizeof(s);infile.close( );/*二维线性表从磁盘读取*/strcat(q1,.bat);ifstream infile1;infile1.open(q1,ios:in);if(!in

29、file1)cerr学校项目文件已丢失或已损坏!请重新输入文件名endl;goto ss;infile1.read(char *)&m,sizeof(m);/m(项目数)从文件中取a=new s_p *n+1;for( i=1;i=n;i+)ai=new s_pm+1;for( i=1;i=n;i+)for(int j=1;j=m;j+)infile1.read(char *)&aij,sizeof(s_p);infile1.close();cout你要查询的运动会成绩已成功打开!endl;void athelet:test( )char I=1;int H3=0,0,0;while(I!=0

30、)coutnt 运动会成绩统计系统endl;coutt 主菜单tendl;cout*endl;coutt 1、运动会项目加初始化tendl;coutt 2、录入运动会中各学校的成绩tendl;coutt 3、计算个学校详细成绩以及排名tendl;coutt 4、按编号输出各学校成绩tendl;coutt 5、按团体总得分排名输出各学校成绩tendl;coutt 6、按男子团体总得分排名输出各学校成绩tendl;coutt 7、按女子团体总得分排名输出各学校成绩tendl;coutt 8、查询某一学校某一项目的成绩tendl;coutt 9、按项目编号查询该项目详细信息tendl;coutt A、本届运动会成绩存档tendl;coutt B、读取上届运动会成绩存档tendl;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1