欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOC文档下载  

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

    • 资源ID:1991967       资源大小:527.50KB        全文页数:31页
    • 资源格式: DOC        下载积分:6
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要6
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    学 号 08710211数据结构课程设计设计说明书运动会分数统计起止日期: 2011年 1月 10 日 至 2011 年 1月15日学生姓名李翔班级08计算机2班成绩指导教师(签字) 电子与信息工程系2011年 1 月 15 日目录目录一、设计目的1二、设计要求1三、设计内容(运动会分数统计查询系统)1(一)需求分析1(二)概要设计2(三)详细设计(源代码)4(四)测试数据及运行结果20四、运行环境29五、参考文献29 运动会分析 学号08710211一、设计目的熟悉各种数据结构和运算,会使用数据结构的基本操作解决一些实际问题。二、设计要求 (1)重视课程设计环节,用严谨、科学和踏实的工作态度对待课程设计的每一项任务;(2)按照课程设计的题目要求,独立地完成各项任务,严禁抄袭;凡发现抄袭,抄袭者与被抄袭者皆以零分计入本课程设计成绩。凡发现实验报告或源程序雷同,涉及的全部人员皆以零分计入本课程设计成绩;(3)学生在接受设计任务后,首先要按设计任务书的要求编写设计进程表;(4)认真编写课程设计报告。三、设计内容(运动会分数统计查询系统)(一)需求分析1. 在该程序中,参赛学校编号为1n(n<=20)。比赛分成m(m<=30)个男子项目和w(w<=20)个女子项目,分别编号为1m和m+1m+w,姓名长度不超过20个字符;2. 输入各个项目信息的详细信息,包括项目号,姓名,性别,学校和名次。3. 对于项目编号可以取前五名,得分顺序为7,5,3,2,1;亦可以取前三名,得分顺序为5,3,2,具体怎样取名次可以由用户自己定义。4. 程序执行的命令包括:1)构造线性表的存储结构(简单一维线性表,广义二维表)。具体包括:(1)运动会项目加初始化(2)录入运动会中各学校的成绩(3)计算各学校详细成绩以及排名可以将以上信息存储在线性表中(一维,二维) 2)根据每个学生的名次确定相应的得分。3)可以分别按男子团体总分,女子团体总分和团体总分降序输出各学校的成绩。4)可以按学校编号查询学校某个项目的情况,也可以按项目编号查询取得前三或前五名的学校。5)运动会的相关数据要可以存储在数据文件中(本系统提供的功能可以自己选择存储的文件名)。此外,本系统还提供往届运动会成绩查询功能(磁盘文件读取)。(二)概要设计1. 该程序包含两个核心结构体分别为:struct s/学校结构体,用来存储学校成绩int bianhao; /学校的编号int balcore; /学校的男团总分intbrank; / 学校男团排名int galcore; /学校的女团总分int grank; / 学校女团排名int alscore; /学校的团体总分int arank; /学校团体总排名;以学校结构体构造一维线性表,完成以学校编号查询,以学校团体、男团、女团总分排名等操作。struct s_p/学校-项目对应关系数组单元(广义2维线性表)int attend;/是否在该项目取得名次char sex;/该项目性质'b'或'g'(冗余)int nature;/该项目取前几名(冗余)int NO;/在该项目中排名int score;/在该项目中得分;学校-项目结构体用来存储每一个学校对应的每项目的相关数据,所以有必要依此构造二维线性表,本系统中以aij表示i号学校j号项目的相关成绩,这样该二维表既可以进行以学校为单位查询或统计、计算各种成绩,也可以以项目为单位查询在本项目中取得名次的学校编号(如果结合学校结构体还可以查询具体的信息)当然,我本来还可以定义一个关于编号结构体的一维线性表,但是其核心思想与学校结构体并无本质差异,而且如果要做具体查询,都要结合s_p学校项目结构体的二维表。此外,鉴于本系统不涉及线性表删除、修改的功能应用。本着节省空间的资源原则,两个线性表全部定义为动态,不定义最大长度,在建立线性表时再根据需要确定长度。(s_p *a; s *B;)2.本程序包括4个模块:1>初始化项目信息(编号、取名次等情况)。2>每个项目中取得名次的学校统计。 3>根据每个学校的成绩计算对应的得分,包括总得分、男团总分、女团总分。4>查询功能,用户按学校编号查询学校具体信息,按项目编号查询,存储本次运动会信息,以及查询已录入的往届运动会信息(须知道准确的存储文件的文件名)5>登录模块,为了数据安全,设置登录功能(本功能尚待完善)。6>流程图设计:(附:登陆名:lixiang 密码:5211)主函数登陆函数(用户名、密码)Test函数调用各级函数项目初始化针对项目的学校成绩录入入读取往届运动会成绩按各种要求计算个学校分数,排名按项目查学校本届成绩存档按女团分查按男团分查按团体总分差按编号查按学校查项目 (三)详细设计(源代码)/08710211.hstruct s_p/学校-项目对应关系数组单元(广义2维线性表)int attend;/是否在该项目取得名次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 *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 chushi( );/项目学校信息初始化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( );/登录;/08710211.cpp#include<iostream>#include<iomanip>#include<string>#include<fstream>#include <stdlib.h>#include"08710211.h"using 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<<"男子项目数:"<<endl; cin>>b;if(b<=0) cout<<"数据错误,请重新输入!"<<endl; goto L;J:cout<<"女子项目数:"<<endl; cin>>g;if(g<=0) cout<<"数据错误,请重新输入!"<<endl; goto J;m=b+g;cout<<"学校数:"<<endl;L1:cin>>n;if(n<5) 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<<"请输入有几个项目取前三名"<<endl; cin>>t;if(t<=0|t>=m) cout<<"输入错误,请重新输入!"<<endl;goto V;T=new intt+1;/用来记录取前3名的项目编号F=new intm-t+1;/用来记录取前5名的项目编号L2:cout<<"请依此输入这"<<t<<"个项目的编号"<<endl;for(i=1;i<=t;i+)cin>>Ti;if(Ti<=0|Ti>=m)cout<<" 项目编号超出范围,请充值数据!"<<endl;goto L2;cout<<"取前3名项目编号为:"<<endl;for(i=1;i<=t;i+)cout<<Ti<<"号项目 "cout<<endl;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;cout<<Fk-1<<"号项目 "cout<<endl;/*对s_p a二维数组的初始化信息,默认情况下,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+)cout<<aij.nature<<aij.sex<<" "cout<<endl;cout<<"项目初始化完毕!"<<endl<<endl;void athelet:luruchengji()/*1.(1号功能)录入成绩功能*/*取前3名项目的成绩*/cout<<"现在录入取前三名的项目的成绩:"<<endl;int one,two,three,four,five;for(int i=1;i<=t;i+)A1:cout<<Ti<<"号项目的第1名学校编号为"cin>>one;if(one<=0|one>n)cout<<"输入错误,请重新录入"goto A1;/异常处理if(aoneTi.attend=1)cout<<"输入错误,请重新录入"goto A1;/异常处理,下同aoneTi.attend=1;aoneTi.NO=1;aoneTi.score=5;B1:cout<<Ti<<"号项目的第2名学校编号为"cin>>two;if(two<=0|two>n)cout<<"输入错误,请重新录入"goto B1;/异常处理if(atwoTi.attend=1)cout<<"输入错误,请重新录入"goto B1;atwoTi.attend=1;atwoTi.NO=2;atwoTi.score=3;C1:cout<<Ti<<"号项目的第3名学校编号为"cin>>three;if(three<=0|three>n)cout<<"输入错误,请重新录入"goto C1;/异常处理 if(athreeTi.attend=1)cout<<"输入错误,请重新录入"goto C1;athreeTi.attend=1;athreeTi.NO=3;athreeTi.score=2;/*取前5名项目的成绩*/cout<<"现在录入取前5名的项目的成绩:"<<endl;for(i=1;i<=m-t;i+)o1:cout<<Fi<<"号项目的第1名学校编号为"cin>>one; if(one<=0|one>n)cout<<"输入错误,请重新录入"goto o1;/异常处理if(aoneFi.attend=1) cout<<"输入错误!请重新录入"goto o1;aoneFi.attend=1;aoneFi.NO=1;aoneFi.score=7;p:cout<<Fi<<"号项目的第2名学校编号为" cin>>two;if(two<=0|two>n) cout<<"输入错误,请重新录入"goto p;/异常处理if(atwoFi.attend=1) cout<<"输入错误!请重新录入"goto p;atwoFi.attend=1;atwoFi.NO=2;atwoFi.score=5;q:cout<<Fi<<"号项目的第3名学校编号为" cin>>three;if(three<=0|three>n) cout<<"输入错误,请重新录入"goto q;/异常处理if(athreeFi.attend=1) cout<<"输入错误!请重新录入"goto q;athreeFi.attend=1;athreeFi.NO=3;athreeFi.score=3;r:cout<<Fi<<"号项目的第4名学校编号为" cin>>four;if(four<=0|four>n) cout<<"输入错误,请重新录入"goto r;/异常处理if(afourFi.attend=1) cout<<"输入错误!请重新录入"goto r;afourFi.attend=1;afourFi.NO=4;afourFi.score=2;S:cout<<Fi<<"号项目的第5名学校编号为" cin>>five; if(five<=0|five>n) cout<<"输入错误,请重新录入"goto S;/异常处理if(afiveFi.attend=1) cout<<"输入错误!请重新录入"goto S;afiveFi.attend=1;afiveFi.NO=5;afiveFi.score=1;cout<<"成绩录入完毕!"<<endl<<endl;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.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<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.galcore<Bj.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.alscore<Bj.alscore)temp=Bi;Bi=Bj;Bj=temp;for(i=1;i<=n;i+) Bi.arank=i;cout<<"个学校积分、排名计算完毕!"<<endl<<endl;void athelet:bianhao( )/*可以查询任意编号学校的总分、男团总分、女团总分*/*按编号排序输出学校的总分、男团总分、女团总分*/for(int i=1;i<=n-1;i+)for(int j=i+1;j<=n;j+)if(Bi.bianhao>Bj.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+)if(Bj.bianhao=i)cout<<Bj.bianhao<<setw(10)<<Bj.alscore<<setw(10)<<Bj.arank<<setw(10)<<Bj.balcore<<setw(10)<<Bj.brank<<setw(10)<<Bj.galcore<<setw(10)<<Bj.grank<<endl;cout<<"按编号输出完毕!"<<endl<<endl;void athelet:zongcore( )/*按总得分排名输出成绩*/*按团总分排序输出学校的总分、男团总分、女团总分*/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.arank=i)cout<<Bj.bianhao<<setw(10)<<Bj.alscore<<setw(10)<<Bj.arank<<setw(10)<<Bj.balcore<<setw(10)<<Bj.brank<<setw(10)<<Bj.galcore<<setw(10)<<Bj.grank<<endl;cout<<"按团体总分排名书输出完毕!"<<endl<<endl;void athelet:bscore()/*按男团总分排序输出学校的总分、男团总分、女团总分*/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.brank=i)cout<<Bj.bianhao<<setw(10)<<Bj.alscore<<setw(10)<<Bj.arank<<setw(10)<<Bj.balcore<<setw(10)<<Bj.brank<<setw(10)<<Bj.galcore<<setw(10)<<Bj.grank<<endl;cout<<"按男子团体总分排名输出完毕!"<<endl<<endl;void athelet:gscore()/*按女团总分排序输出学校的总分、男团总分、女团总分*/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)cout<<Bj.bianhao<<setw(10)<<Bj.alscore<<setw(10)<<Bj.arank<<setw(10)<<Bj.balcore<<setw(10)<<Bj.brank<<setw(10)<<Bj.galcore<<setw(10)<<Bj.grank<<endl;cout<<"按女子团体总分排名输出完毕!"<<endl<<endl;void athelet:xuexiao_bianhao()/*(4号功能)按学校编号查询学校某个项目的情况*/int M,N;E:cout<<"请输入学校编号"<<endl;cin>>M;if(M<=0|M>n) cout<<"输入学校编号错误!,请重新输入!"<<endl;goto E;U:cout<<"请输入"<<M<<"号学校的项目"<<endl;cin>>N;if(N<=0|N>m) cout<<"输入项目编号错误!,请重新输入!"<<endl;goto U;cout<<M<<"号学校"<<N<<"号项目的具体信息如下"<<endl;cout<<"学校号"<<setw(10)<<"项目号"<<setw(10)<<" 性质(g/b)"<<setw(10)<<" 是否取得名次(1/0)"<<setw(10)<<"取得名次"<<setw(10)<<"该项得分"<<endl;cout<<M<<setw(10)<<N<<setw(10)<<aMN.sex<<setw(10)<<aMN.attend<<setw(10)<<aMN.NO<<setw(10)<<aMN.score<<endl;cout<<"按学校查询完毕!"<<endl<<endl;void athelet:xiangmu()/*(最后的功能,5号功能)按项目编号查询取得前三或前五名的学校*/HH:cout<<"请输入要查询的项目号"<<endl;int N;cin>>N;if(N<=0|N>m) cout<<"输入项目编号错误!,请重新输入!"<<endl;goto HH;cout<<"学校编号"<<setw(18)<<"名次"<<setw(18)<<"分数"<<endl;for(int i=1;i<=n;i+)if(aiN.attend=1)cout<<i<<setw(18)<<aiN.NO<<setw(18)<<aiN.score<<endl;cout<<"按项目查询完毕!"<<endl<<endl;void athelet:W(char s)cout<<"请按任意字符继续."<<endl;cin>>s;cout<<endl;void athelet:cun( )char name100;char name1100;cout<<"请输入存档文件的文件名!"<<endl;cin>>name;strcpy(name1,name);/*一维线性表存入磁盘*/strcat(name,".txt");ofstream outfile,outfile1;/定义输出流对象outfile.open(name,ios:out);/以输出形式打开if(!outfile)cerr<<"open file error!"<<endl;abort ( );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)cerr<<"open file error!"<<endl;abort ( );outfile1.write(char *)&m,sizeof(m);for( i=1;i<=n;i+)for(int j=1;j<=m;j+)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放弃查询)."<<endl;cin>>q;strcpy(q1,q);/*一维线性表从磁盘读取*/strcat(q,".txt");ifstream infile;/定义输入流对象infile.open(q,ios:in);/以输入形式打开磁盘文件发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(!infile1)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')cout<<"nt 运动会成绩统计系统"<<endl;cout<<"t 主菜单t"<<endl;cout<<"*"<<endl;cout<<"t 1、运动会项目加初始化t"<<endl;cout<<"t 2、录入运动会中各学校的成绩t"<<endl;cout<<"t 3、计算个学校详细成绩以及排名t"<<endl;cout<<"t 4、按编号输出各学校成绩t"<<endl;cout<<"t 5、按团体总得分排名输出各学校成绩t"<<endl;cout<<"t 6、按男子团体总得分排名输出各学校成绩t"<<endl;cout<<"t 7、按女子团体总得分排名输出各学校成绩t"<<endl;cout<<"t 8、查询某一学校某一项目的成绩t"<<endl;cout<<"t 9、按项目编号查询该项目详细信息t"<<endl;cout<<"t A、本届运动会成绩存档t"<<endl;cout<<"t B、读取上届运动会成绩存档t"<<endl;

    注意事项

    本文([计算机软件及应用]数据结构课设 运动会分数统计c++.doc)为本站会员(音乐台)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




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

    三一文库
    收起
    展开