1、计算机软件及应用数据结构课设 运动会分数统计c+学 号 *天津城市建设学院数据结构课程设计设计说明书运动会分数统计起止日期: 2011年 1月 10 日 至 2011 年 1月15日学生姓名李翔班级08计算机2班成绩指导教师(签字) 电子与信息工程系2011年 1 月 15 日一、设计目的熟悉各种数据结构和运算,会使用数据结构的基本操作解决一些实际问题。二、设计要求 (1)重视课程设计环节,用严谨、科学和踏实的工作态度对待课程设计的每一项任务;(2)按照课程设计的题目要求,独立地完成各项任务,严禁抄袭;凡发现抄袭,抄袭者与被抄袭者皆以零分计入本课程设计成绩。凡发现实验报告或源程序雷同,涉及的全
2、部人员皆以零分计入本课程设计成绩;(3)学生在接受设计任务后,首先要按设计任务书的要求编写设计进程表;(4)认真编写课程设计报告。三、设计内容(运动会分数统计查询系统)(一)需求分析1.在该程序中,参赛学校编号为1n(n=20)。比赛分成m(m=30)个男子项目和w(w初始化项目信息(编号、取名次等情况)。2每个项目中取得名次的学校统计。 3根据每个学校的成绩计算对应的得分,包括总得分、男团总分、女团总分。4查询功能,用户按学校编号查询学校具体信息,按项目编号查询,存储本次运动会信息,以及查询已录入的往届运动会信息(须知道准确的存储文件的文件名)5登录模块,为了数据安全,设置登录功能(本功能尚
3、待完善)。6流程图设计:(附:登陆名:lixiang 密码:5211) (三)详细设计(源代码)/08710211.hstruct s_p /学校-项目对应关系数组单元(广义2维线性表) int attend; /是否在该项目取得名次 char sex; /该项目性质b或g(冗余) int nature; /该项目取前几名(冗余) int NO; /在该项目中排名 int score; /在该项目中得分;struct s int bianhao; /学校的编号 int balcore; /学校的男团总分 int brank; / 学校男团排名 int galcore; /学校的女团总分 int
4、 grank; / 学校女团排名 int alscore; /学校的团体总分 int arank; /学校团体总排名;class yonghuprivate: char name100; double code;public: yonghu( char *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; /
5、n个学校 int t; /取前三名的项目数 int *T; /记录取前三名的项目编号 int *F; /记录取前五名的项目编号 s_p *a; /定义学校项目广义二维线性表(本次只在此两个线性表实现文件读写) s *B; /定义学校一维线性表(同上) bool sf;public: void chushi( ); /项目学校信息初始化 void luruchengji(); /学校成绩录入 void jisuan(); /学校排名计算 void bianhao( ); /学校按编号排名 void zongcore( ); /学校按总分排名 void bscore(); /学校按男团总分排名 v
6、oid gscore(); /学校那女团总分 void xuexiao_bianhao(); /学校按编号查询 void xiangmu(); /按项目查询 void W(char s); /功能函数 void cun( ); /存盘函数 void du( ); /读盘函数 void test(); /综合测试 void login( ); /登录;/08710211.cpp#include#include#include#include#include #include08710211.husing namespace std;void yonghu:chushi( char *a,doub
7、le 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数据错误,请重新输入!endl; goto L; J:cout女子项目数:g; if(g=0) cout数据错误,请重新输入!endl; goto J; m=b+g; cout学校数:n; if(n5) cout学校数据(不得少于5个)错
8、误,请重新输入!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=new intm-t+1; /用来记录取前5名的项目编号 L2:cout请依此输入这t个项目的编号endl; for(i=1;iTi; if(Ti=m) cout 项目编号超出范围,请充值数据!end
9、l; 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二维数组的初始化信息,默认情况下,nature是取前5名的*/ for(i=1;i=n;i+) for(int j=1;j=m;j+) aij.attend=
10、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.natureaij.sex ; coutendl; cout项目初始化完毕endlendl; void athelet:lur
11、uchengji() /*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; aoneTi.score=5; B1:coutTitwo; if(twon) cout输入错误,
12、请重新录入;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名项目的成绩*/ cout现在录入取前5名的项目的成绩:endl
13、; 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; atwoFi.score=5;
14、 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; S:c
15、outFifive; 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=B
16、i.brank=Bi.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.balcore
17、Bj.balcore) temp=Bi;Bi=Bj;Bj=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=tem
18、p; for(i=1;i=n;i+) Bi.arank=i; cout个学校积分、排名计算完毕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)女团
19、总分setw(10)女团排endl; for(i=1;i=n;i+) for(int j=1;j=n;j+) if(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按总得分排名输出:end
20、l; 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.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(10)团排名se
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1