ImageVerifierCode 换一换
格式:DOCX , 页数:23 ,大小:94.40KB ,
资源ID:30391022      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/30391022.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构课程设计.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据结构课程设计.docx

1、数据结构课程设计河 南 城 建 学院Henan University of Urban Construction数据结构程序设计课程设计报告学 号:084412130 姓 名:李鲁杨 专 业:软件工程 题 目:运动会分数统计 指导老师:魏新红 孟庆见 计算机科学与工程系2013年12月一、设计目的1.问题描述参加运动会有n个学校,学校编号为1n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1m,女子m+1m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些项目取前五名或前三名由学生自己设定。(m=20,n=20)基本要求

2、:1) 可以输入各个项目的前三名或前五名的成绩;2) 能统计各学校总分;3) 可以按学校编号、学校总分、男女团体总分排序输出;4) 可以按学校编号查询学校某个项目的情况;5) 可以按项目编号查询取得前三或前五名的学校。二.设计意义数据结构课程设计是在学完数据结构课程之后的实践教学环节。该实践教学是软件设计的综合训练,包括问题分析、总体结构设计、用户界面设计、程序设计基本技能和技巧。学生通过数据结构课程设计在下述各方面得到锻炼:1、能根据实际问题的具体情况,结合数据结构课程中的基本理论和基本算法,正确分析出数据的逻辑结构,合理地选择相应的存储结构,并能设计出解决问题的有效算法。2、提高程序设计和

3、调试能力。学生通过上机实习,验证自己设计的算法的正确性。学会有效利用基本调试方法,迅速找出程序代码中的错误并且修改。3、培养算法分析能力。分析所设计算法的时间复杂度和空间复杂度,进一步提高程序设计水平。二. 设计内容第一部分进入程序首先进入成绩录入界面,先输入学校编号1,再输入学校1各个项目成绩0或1(0表示没获得该项目的该名次,1表示获得了该项目的该名次),然后再输入第二个学校编号2,再输入成绩;当输入其他的学校编号和成绩会提示错误输入,重新输入。第二部分1. 输入:1统计各学校总分并输出;2. 输入:2按学校编号排序输出;3. 输入:3按学校总分排序输出;4. 输入:4按男团体总分排序输出

4、;5. 输入:5按女团体总分排序输出;6. 输入:6按学校编号查询学校某个项目情况;7. 输入:7按项目编号查询取得名次的学校;8. 输入:0 退出系统9. 输入其他数据会提示错误输入,重新输入。三概要设计1功能模块图;2各个模块详细的功能描述。1 结构体运动项目 项目编号 ;名次;学校 学校编号;项目;团体总分;男团体总分;女团体总分;2 主程序(main)包括登陆欢迎程序,分数录入程序,查询程序,退出程序四详细设计1.功能函数的调用关系图2各功能函数的数据流程图3重设计及编码。数据类型定义 (1)运动项目的定义:struct matchint matchnum;int rank3;matb

5、m+gm;(2)学校的定义:struct schoolint schoolnum;struct match matbm+gm;int total;int boytotal;int girltotal;schN;五测试数据及运行结果1正常测试数据(3组)及运行结果输入:请输入学校编号:1项目编号 1 2 3 4 5 6 7第名: 1 1 1 1 1 1 1第名: 0 0 0 0 0 0 0第名: 1 1 1 1 1 1 1请输入学校编号: 2项目编号 1 2 3 4 5 6 7第名: 0 0 0 0 0 0 0第名: 1 1 1 1 1 1 1第名: 0 0 0 0 0 0 02非正常测试数据(

6、2组)及运行结果输入数据不合法,程序的健壮性使他课一自动报错.六 调试情况,设计技巧及体会1.对自己的设计进行评价,指出合理和不足之处,和改进方案算法的设计思想:本程序主要是使用顺序表来实现操作。一个运动会包括运动项目和参加运动会的学校。因此构造顺序表match,school。为了操作的方便,设计了一个总目录,选择相应序号进入各个操作,并有错误提示,每完成一个操作程序会提示选择返回目录或退出程序,对于总分的排序使用了冒泡排序。为了使整个程序界面看起来更加惬意,又添加了背景和字体颜色设置的程序语句。每个操作前都有操作指南,易于使用。2对设计及调试过程的心得体会1、由于刚开始程序比较简单,虽能运行

7、,但处理错误的能力很低,后来经过反复的添加修改,使程序能处理了错误,提高了健壮性。2、开始编时由于不太规范,编译出错后由于程序长,很难找到错误,后来规范了格式,错误容易找到了,以后编程要规范。3、算法的时空分析线性表使用的是顺序结构,各种算法的时间复杂度相对比较合理4、本程序相对来说比较容易看明白,其中涉及到的一些函数相对来说比较容易。通过调试,运行,基本上达到了要求,但还存在一些缺点。如:不够人性化等。七参考文献(1)C程序设计(第三版) 谭浩强 著 清华大学出版社(2)数据结构(C语言版)作者:严蔚敏,吴伟民 出版社:清华大学出版社(3)数据结构题集(C语言版)作者:严蔚敏,吴伟民 出版社

8、:清华大学出版社八附录:源代码#include #include #include #define N 2 /学校个数#define bm 4 /男团体个数#define gm 3 /女团体个数void xuanze();void xunhuan();struct match /项目int matchnum;int rank3;matbm+gm;struct school /学校int schoolnum;struct match matbm+gm;int total;int boytotal;int girltotal;schN;void huanyingni() /*开始界面,欢迎使用*/

9、printf(n);printf(t*n);printf(t*n);printf(t* *n);printf(t* 欢迎使用运动会分数统计系统 *n);printf(t* *n);printf(t*n);printf(t*nn );void input() /输入成绩int i,j,k;for(i=0;iN;i+) /初始化分数schi.total=0;schi.boytotal=0;schi.girltotal=0;for(k=0;kbm+gm;k+)schi.matk.rank0=0;schi.matk.rank1=0;schi.matk.rank2=0;schi.matk.matchnu

10、m=k+1;printf(ttt*n);printf(ttt*输入成绩*n);printf(ttt*nn);printf(*输入说明*n);printf(t1.学校编号为1-%d;nt 项目编号为1-%dnt (1-%d为男子项目,%d-%d为女子项目).n,N,bm+gm,bm,bm+1,bm+gm);printf(t2.成绩只能是0或1nt (0表示没获得该项目的该名次,1表示获得了该项目的该名次.)n,N);printf(t3.请以Tab键切换下一次输入nnn);printf(*输入数据*n);for(i=0;iN;i+)/以学校编号为顺序输入数据printf(*请输入学校编号:);lo

11、op3:scanf(%d,&schi.schoolnum);/获取一个学校编号if(schi.schoolnumN)printf(输入错误(只能是1-%d)请重新输入:,N);goto loop3;printf(项目编号 );for(k=0;kbm+gm;k+)printf(%d ,schi.matk.matchnum);printf(n);for(j=0;j3;j+) /输入每一个学校每一个项目是否在前三名获得成绩,需要添加一个前五名的情况 loop: printf(第(%d)名:t,j+1); for(k=0;kbm+gm;k+)scanf( %d,&schi.matk.rankj);fo

12、r(k=0;kbm+gm;k+)if(schi.matk.rankj!=0&schi.matk.rankj!=1)printf(输入错误,请重新输入,成绩只能是0或1n);goto loop;void totaljisuan() /总分计算,学校总分,以及男女团体的总分计算fflush(stdin);int i,k,b;for(i=0;iN;i+)for(k=0,b=0;kbm+gm;k+) b=schi.matk.rank0*5+schi.matk.rank1*3+schi.matk.rank2*2;schi.total=schi.total+b;if(k=bm)schi.girltotal

13、=schi.girltotal+b;void mulu()printf(nn *系统目录*n); /目录printf(tt*n);printf(tt* 1.统计各学校总分 *t n);printf(tt* 2.按学校编号排序输出 *t n);printf(tt* 3.按学校总分排序输出 *t n);printf(tt* 4.按男团体总分排序输出 *t n);printf(tt* 5.按女团体总分排序输出 *t n);printf(tt* 6.按学校编号查询学校某个项目情况 *t n);printf(tt* 7.按项目编号查询取得名次的学校 *t n);printf(tt* 0.退出 *t n)

14、;printf(tt*n);void funct0() /退出系统printf(ntt*n);printf(tt* 谢谢使用! *n);printf(tt*n);exit(0);void funct1() /统计各学校总分 int i,q;printf( *统计各学校总分*n);printf( *学校编号*tttt*总分*n);for(i=0;iN;i+)printf(t%dtttt%dn,schi.schoolnum,schi.total);printf(nn);printf(# 0:退出;1:返回目录。n);printf(*请选择: );loop2:scanf(%d,&q);if(q=0)

15、 funct0();if(q=1) xunhuan(); else printf(输入错误(只能是0或1),请重新输入:);goto loop2;void funct2() /按学校编号排序(冒泡排序)struct school sch1;int i,j,q;for(j=0;jN-1;j+)for(i=0;ischi+1.schoolnum)sch1=schi;schi=schi+1;schi+1=sch1;printf( *按学校编号排序*n); printf(*学校编号*ttt*总分*n);for(i=0;iN;i+)printf(t%dtttt%dn,schi.schoolnum,sch

16、i.total);printf(n);printf(n);printf(# 0:退出;1:返回目录。n);printf(*请选择: );loop2: scanf(%d,&q);if(q=0) funct0();if(q=1) xunhuan(); else printf(输入错误(只能是0或1),请重新输入:);goto loop2;void funct3() /按学校总分排序struct school sch1;int i,j,q;for(j=0;jN-1;j+)for(i=0;iN-j-1;i+)if(schi.totalschi+1.total)sch1=schi;schi=schi+1

17、;schi+1=sch1;printf( *按学校总分排序*n); printf( *学校编号*tttt*总分*n);for(i=0;iN;i+)printf(t%dtttt%dn,schi.schoolnum,schi.total);printf(n);printf(n);printf(# 0:退出;1:返回目录。n);printf(*请选择: );loop2: scanf(%d,&q);if(q=0) funct0();if(q=1) xunhuan(); else printf(输入错误(只能是0或1),请重新输入:);goto loop2;void funct4() /按男团体总分排序

18、struct school sch1;int i,j,q;for(j=0;jN-1;j+)for(i=0;iN-j-1;i+)if(schi.boytotalschi+1.boytotal)sch1=schi;schi=schi+1;schi+1=sch1;printf( *按男团体总分排序*n); printf( *学校编号*tt*总分*n);for(i=0;iN;i+)printf(t%dtttt%dn,schi.schoolnum,schi.boytotal);printf(n);printf(n);printf(# 0:退出;1:返回目录。n);printf(*请选择: );loop2

19、: scanf(%d,&q);if(q=0) funct0();if(q=1) xunhuan(); else printf(输入错误(只能是0或1),请重新输入:);goto loop2;void funct5() /按女团体总分排序struct school sch1;int i,j,q;for(j=0;jN-1;j+)for(i=0;iN-j-1;i+)if(schi.girltotalschi+1.girltotal)sch1=schi;schi=schi+1;schi+1=sch1;printf( *按女团体总分排序*n); printf( *学校编号*tt*总分*n);for(i=

20、0;iN;i+)printf(t%dtttt%dn,schi.schoolnum,schi.girltotal);printf(n);printf(n);printf(# 0:退出;1:返回目录。n);printf(*请选择: );loop2:scanf(%d,&q);if(q=0) funct0();if(q=1) xunhuan();else printf(输入错误(只能是0或1),请重新输入:);goto loop2;void funct6() /按学校编号查询学校某个项目情况int i,n,m,q;printf( *按学校编号查询学校某个项目情况*n);loop1: printf(*请

21、输入所要查询的学校编号: );scanf(%d,&n);if(n!=1&n!=2)printf(!输入错误,学校编号只能是0或1,请重新输入!n);goto loop1;printf(*请输入所要查询的项目编号: );scanf(%d,&m);for(i=0;iN;i+) /需要添加前五名的情况if(n=schi.schoolnum) printf(学校编号: %dt项目编号%dn,n,m);if(schi.matm.rank0=1)printf(第一名(获得) t);if(schi.matm.rank1=1)printf(第二名(获得) t);if(schi.matm.rank2=1)pri

22、ntf(第三名(获得) t);if(schi.matm.rank0=0&schi.matm.rank1=0&schi.matm.rank1=0)printf(本校该项目未进入前三名);printf(n);printf(n);printf(# 0:退出;1:返回目录;2:返回上一级。n);printf(*请选择: );loop2: scanf(%d,&q);if(q=1) xunhuan();if(q=0) funct0();if(q=2) goto loop1;else printf(输入错误(只能是0或1或2),请重新输入:);goto loop2;void funct7() /按项目编号查询取得名次的学校 int i,t,q;printf( *按项目编号查询取得名次的学校*

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1