《数据结构课程设计报告(运动会分数统计系统).pdf》由会员分享,可在线阅读,更多相关《数据结构课程设计报告(运动会分数统计系统).pdf(23页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 课程设计(论文)任务书 软件 学 院 信息 专 业 1 班 一、课程设计(论文)题目 运动会分数统计系统 二、课程设计(论文)工作自 2010 年 12 月 27 日起至 2010 年 12 月 31 日止。三、课程设计(论文)地点:创新大楼软件学院大楼 四、课程设计(论文)内容要求:1课程设计的目的 为了配合数据结构课程的教学,使学生能更深刻地领会数据结构这门课程的重要性,特开设此课程设计;编写一些在特定数据结构上的算法,通过上机调试,更好的掌握各种数据结构及其特点,培养学生综合运用所学理论知识解决复杂实际问题的实践能力、研究性学习能力和团队合作能力。2课程设计的任务及要求 1)基本要求
2、(1)课程设计前必须选定课程设计题目,并认真进行需求分析;(2)上机调试之前要认真准备实验程序及调试时所需的测试数据;(3)程序结构要清晰,重点函数的重点变量,重点语句要加上清晰的程序注释;(4)独立思考,独立完成,调试过程要规范,认真记录调试结果;(5)撰写课设报告,对设计进行总结和讨论。2)课程设计论文编写要求(1)要按照书稿的规格撰写打印课设论文(2)论文包括任务书、目录、绪论、正文、总结、参考文献、附录等(3)正文中要有问题描述、设计求解算法、算法的实现、调试分析与结果(4)课设论文装订按学校的统一要求完成 3)课设考核 从以下几方面来考查:(1)出勤情况和课设态度;(2)设计任务的难
3、易程度及设计思路;(3)课设任务完成情况;(4)动手调试能力;(5)论文撰写的层次性、条理性、格式的规范性。4)参考文献 1 严蔚敏,吴伟民.数据结构(C 语言版)M.北京:清华大学出版社,2007 年.2 谭浩强.C 语言程序设计M.北京:清华大学出版社,2006 年.5)课程设计进度安排 内容 天数 地点 构思及收集资料 1 图书馆 程序设计与调试 3 计算机房 撰写论文 1 图书馆 6)任务及具体要求 任务:参加运动会的 n 个学校编号为 1n。比赛分成 m 个男子项目和 w 个女子项目,项目编号分别为 1m 和 m+1mw。由于各项目参加人数差别较大,有些项目取前五名,得分顺序为 7,
4、5,3,2,1;还有些项目只取前三名,得分顺序为 5,3,2。写一个统计程序产生各种成绩单和得分报表。要求:产生各学校的成绩单,内容包括各学校所取得的每项成绩的项目号、名次(成绩)、姓名和得分;产生团体总分报表,内容包括校号、男子团体总分、女子团体总分和团体总分。学生签名:2010 年 12 月 27 日 课程设计(论文)评审意见(1)任务难易及设计思路 :优()、良()、中()、一般()、差()(2)动手调试能力评价 :优()、良()、中()、一般()、差()(3)任务完成情况评价 :优()、良()、中()、一般()、差()(4)论文撰写水平及规范性评价:优()、良()、中()、一般()、差
5、()(5)考勤和态度 :优()、良()、中()、一般()、差()评阅人:职称:讲师 2011 年 1 月 3 日 目 录 1 绪 论.3 2 需求分析与概要设计.4 2.1 需求分析.4 2.1.1 问题描述.4 2.1.2 基本要求.4 2.2 概要设计.4 2.2.1 数据结构.4 2.2.2 程序模块及之间的调用关系.5 3 详细设计与编码实现.6 3.1 目的结果.6 3.2 变量关系.6 数据类型及重要变量的定义.6 3.3 编码实现.7 3.3.1 信息输入及分数统计功能.7 3.3.2 信息输出查询功能.7 3.3.3 主函数.8 4 调试分析与结果.9 4.1 运行界面.9 输
6、入各项信息.9 4.2 查询.11 5 总结体会.13 6 参考文献.14 附录:源程序代码.15 1 绪 论 近年来,在计算机软件业,面向对象程序设计的思想已经被越来越多的软件设计人员所接受。不仅因为它是一种最先进的,新颖的计算机程序设计思想,最主要的是这种新的思想更接近人的思维活动,人们利用这种思想进行程序设计时,可以很大程度地提高编程能力,减少软件维护的开销。面向对象程序设计方法是通过增加软件的可扩充性和可重用性来提高程序员的编程能力。随着计算机在我国广泛而深入的应用,在分析和开发计算机系统软件和应用软件的过程中,迫切需要掌握各种数据结构的描述方法以及相应的处理算法。因此面向对象程序设计
7、知识是计算机相关科学的学生和从事计算机应用的技术人员必备的专业基础知识。著名的瑞士计算机科学家沃思提出:对象+消息=程序。2 需求分析与概要设计 2.1 需求分析 2.1.1 问题描述 参加运动会的n个学校编号为1n。比赛分成m个男子项目和w个女子项目,项目编号分别为1m和m+1mw。由于各项目参加人数差别较大,有些项目取前五名,得分顺序为7,5,3,2,1;还有些项目只取前三名,得分顺序为5,3,2。写一个统计程序产生各种成绩单和得分报表。2.1.2 基本要求 产生各学校的成绩单,内容包括各学校所取得的每项成绩的项目号、名次(成绩)、姓名和得分;产生团体总分报表,内容包括校号、男子团体总分、
8、女子团体总分和团体总分。2.2 概要设计 2.2.1 数据结构 1)学校:名称,编号,男子团体总分,女子固体总分。2)运动项目:项目编号,名称,男子项目,女子项目,前三名,前五名,第一名学校的编号,第二名学校的编号,第三名学校的编号,第四名学校的编号,第五名学校的编号。2.2.2 程序模块及之间的调用关系 图 2.1:模块之间的调用关系 Y N N N Y Case1 Case3 N Y Y开始-初始化 输入 输入某项目各名次成绩 输入学校及男女项目范围 继 续 输查询各学校成绩 Case2 查询团体总分 成绩查询 输出查询学校成绩 继续 结束退出 继续 3 详细设计与编码实现 3.1 目的结
9、果 本课程设计主要解决在运动会上,将各个比赛项目所有获得名次的同学的成绩输入;成绩查询;成绩修改;成绩删除;以及成绩输出。该程序用于运动会上,涉及到比赛项目成绩的录入,某个学校在某个项目中获得成绩的查询,某个学校在某个运动项目中获得的成绩的修改,某个学校在某个运动项目中获得的成绩的删除,以及某个学校所有获得成绩的得分报表以及团体成绩的得分报表。其中比赛成绩的录入可以按照运动项目举行的次序输入,也可以输入自己指定的运动项目的成绩;自己扩展的功能是“某个学校在某个项目中获得成绩的查询,某个学校在某个运动项目中获得的成绩的修改,某个学校在某个运动项目中获得的成绩的删除”三项,这三项都要求输入学校以及
10、运动项目编号,通过这两项作为参数具体的函数可以查询、修改成绩或者是删除某项成绩记录,进而影响到最后得分报表的输出。3.2 变量关系 数据类型及重要变量的定义(1)定义运动项目数据类型,用于存放运动项目,包括项目编号、项目所取名次数、名次、分数。int n;/n个学校 int m;/m个男子项目 int w;/w个女子项目 struct pro/表示项目的结构体 (2)定义学校数据类型,用来存储参赛学校信息,包括学校编号、学校总分、男团总分、女团总分、项目数组。/定义学校结点类型 int num;string name;/学校名称 int score;/学校总分 int male;/男子总分 i
11、nt female;/女子总分 3.3 编码实现 3.3.1 信息输入及分数统计功能 void input()为输入信息及分数统计函数。在输入信息的同时进行分数的统计。可以输入各个学校各项目前三名或前五名的成绩。在输入学校的参赛项目时,结果取前三名还是前五名自己定,用一个选择语句实现。其主要功能代码如下:int integral5=7,5,3,2,1;/前五名得分 int integraly3=7,5,3;/三名得分 for(i=1;ipi.name;printf(该项目取前三名选0,取前5名选1:);scanf(%d,&q);3.3.2 信息输出查询功能 1)void output()为输出
12、函数。列出一个输出目录利用swich语句使函数按学校编号输出或按学校总分、男团总分、女团总分由高到低排序输出。利用辅助数组remember和冒泡排序的方法使之按分数的由高到低输出。利用循环语句do while()当输入2时返回输出目录,输入0是跳出循环返回主菜单。void print(int i)coutschi.numsetw(10)schi.namesetw(8)schi.scoresetw(9)schi.malesetw(10)schi.femaleendl;2)void cxxm()为查询函数。列车一个查询目录利用swich 语句使函数按学校编号或项目编号查询,输出某学校的某个项目的得
13、分情况或某个项目的前几名的学校。再利用循环语句do while()当输入2是返回查询目录,输入0时跳出循环返回主菜单。3.3.3 主函数 void main()是主函数。列出主菜单,利用switch语句调用以上函数实现各个菜单的功能。想在每次查询结束想返回主菜单进行其它项时,应在main()函数中调用其它函数时再调用main()函数。4 调试分析与结果 4.1 运行界面 输入各项信息 图 4.1:输入各项信息的界面(1)图 4.2:选择前几名的界面 图 4.3:输入各项信息的界面(2)图 4.4:各项信息输入完毕的界面 4.2 查询 可以按多个指标查询 图 4.5:查询界面(1)图 4.6:查
14、询界面(2)5 总结体会 本次课程设计,使我对数据结构线性表,栈的设计方法、步骤、思路、有一定的了解与认识。它相当于实际设计工作的模拟。在课程设计过程中,基本能按照规定的程序进行,先针对表达式算法为背景,通过调研、分析现有的管理模式和已有的管理软件,建立系统模型;收集、调查有关资料,然后进入草案阶段,其间与指导教师进行几次方案的讨论、修改,再讨论、再修改,最后定案。通过此次课程设计,我了解了编写应用软件的一般步骤,获得了很多宝贵的经验。特别是怎么样通过理论与实践相结合,把书本上的内容应用到我们做的程序上去。怎样使各个子模块实施其的详细功能,特别是各个子模块之间的接口,一定要相当清晰,达到相互协
15、调的作用其次,我熟悉了数据结构知识。学会了很多关于程序设计的经验和技巧,明白了程序的使用性和通用性是程序生存周期长短的关键,学会了调试程序的一般方法。重要的是,通过这次设计,逐步我具备了走向程序员的基本素质。知道应如何在困难重重中一步一步细心的发现问题,解决问题。并深刻体会到了团体合作精神的重要性,知道了在软件设计中对界面和功能如何平衡,如何达到相对的完美。6 参考文献 1严蔚敏,吴伟民.数据结构(C 语言版)M.北京:清华大学出版社,2007.2张国峰.C+程序设计实用教程.北京:清华大学出版社,1996.3张松梅.C+语言教程.电子科技大学出版社,1993.4阎龙.C 程序员的 C+指南.
16、北京航空航天大学出版社,1992.5王博.面向对象的建模、设计技术与方法.北京希望电脑公司,1990.6汪成为.面向对象分析、设计及应用.国防工业出版社,1992.7江明德.面向对象程序设计.电子工业出版社,1993.8吕凤翥语言程序设计电子工业出版社,2001.附录:源程序代码#include#include#include#include using namespace std;int n;/n 个学校 int m;/m 个男子项目 int w;/w 个女子项目 struct pro/表示项目的结构体 string name;/项目名称 int snum6;/前 5 名学校的编号 int
17、snumy4;/前 3 名学校的编号 p21;struct school /表示学校的结构体 int num;string name;/学校名称 int score;/学校总分 int male;/男子总分 int female;/女子总分 sch21;int integral5=7,5,3,2,1;/前五名得分 int integraly3=7,5,3;/前三名得 void input()int i,j,y,x,q;printf(输入学校数目:);y=0;while(1)scanf(%d,&n);/n:学校数目 if(n=1&n=20)y=1;if(y)break;else printf(输
18、入数据有误,请重新输入:);for(i=1;ischi.name;/给学校结构体的成员初始化为 schi.score=0;schi.female=0;schi.male=0;schi.num=i;printf(输入男子项目数和女子项目数:);y=0;while(1)scanf(%d%d,&m,&w);if(m=1&w=1)y=1;if(y)break;else printf(输入数据有误,请重新输入:);for(i=1;ipi.name;printf(该项目取前三名选 0,取前 5 名选 1:);scanf(%d,&q);if(q=1)printf(输入第%d 个项目的前 5 名的学校编号:n
19、,i);for(j=1;j=1&x=20)y=1;if(y)break;else printf(输入数据有误,请重新输入:);pi.snumj=x;/给项目结构体的成员赋值 schx.score+=integralj-1;/给学校结构体成员赋值 if(i=m)schx.male+=integralj-1;/学校结构体赋值,男子总分 else schx.female+=integralj-1;/学校结构体赋值,女子总分 if(q=0)printf(输入第%d 个项目的前 3 名的学校编号:n,i);for(j=1;j=1&x=20)y=1;if(y)break;else printf(输入数据有
20、误,请重新输入:);pi.snumyj=x;/给项目结构体的成员赋值 schx.score+=integralyj-1;/给学校结构体成员赋值 if(i=m)schx.male+=integralyj-1;/学校结构体赋值 else schx.female+=integralyj-1;/学校结构体赋值 void print(int i)coutschi.numsetw(10)schi.namesetw(8)schi.scoresetw(9)schi.malesetw(10)schi.femaleendl;void bianhao()/按编号排序 int i,j;school t;for(i=1
21、;in;i+)for(j=i;jschj.num)t=schi;schi=schj;schj=t;printf(n 按编号排列:n);printf(编号 学校名称 总分 男子总分 女子总分n);for(i=1;i=n;i+)print(i);void zongfen()/按学校总分排序 int i,j;school t;for(i=1;in;i+)for(j=i;j=n;j+)if(schi.scoreschj.score)t=schi;schi=schj;schj=t;printf(n 按学校总分排列:n);printf(编号 学校名称 总分 男子总分 女子总分n);for(i=1;i=n;
22、i+)print(i);ofstream fout;fout.open(运动会分数统计.txt);fout编号 学校名称 总分 男子总分 女子总分endl;for(i=1;i=n;i+)foutschi.numsetw(13)schi.namesetw(8)schi.scoresetw(9)schi.malesetw(10)schi.femaleendl;fout.close();void malezf()/按学校男总分排序 int i,j;school t;for(i=1;in;i+)for(j=i;j=n;j+)if(schi.maleschj.male)t=schi;schi=schj;
23、schj=t;printf(n 按学校男子总分排列:n);printf(编号 学校名称 总分 男子总分 女子总分n);for(i=1;i=n;i+)print(i);void femalezf()/按学校女总分排序 int i,j;school t;for(i=1;in;i+)for(j=i;j=n;j+)if(schi.femaleschj.female)t=schi;schi=schj;schj=t;printf(n 按学校女子总分排列:n);printf(编号 学校名称 总分 男子总分 女子总分n);for(i=1;i=n;i+)print(i);cout=1&s=n)y=1;if(y)
24、break;else printf(输入数据有误,请重新输入:);printf(该学校相关信息:n);printf(编号 学校名称 总分 男子总分 女子总分n);for(i=1;i=n;i+)if(schi.num=s)print(i);break;cout=1&s=n)y=1;if(y)break;else printf(输入数据有误,请重新输入:);printf(该项目取的前三名选 0,取的前 5 名选 1:);scanf(%d,&v);if(v=1)coutps.name前 5 名学校编号及名称为:endl;printf(名次 编号 学校名称n);for(i=1;i=5;i+)cout
25、i ps.snumisetw(12)sch ps.snumi.nameendl;if(v=0)coutps.name前 3 名学校编号及名称为:endl;printf(名次 编号 学校名称n);for(i=1;i=3;i+)cout i ps.snumyisetw(12)sch ps.snumyi.nameendl;coutendl;void solve()/菜单函数 int z;while(1)printf(n 选择您需要的操作(选择序号):n);printf(1.按学校编号排序输出n);printf(2.按学校总分排序输出n);printf(3.按学校男总分排序输出n);printf(4.按学校女总分排序输出n);printf(5.查询某个学校成绩n);printf(6.查询某个项目成绩n);printf(7.结束nn);scanf(%d,&z);if(z=1)bianhao();if(z=2)zongfen();if(z=3)malezf();if(z=4)femalezf();if(z=5)cxsch();if(z=6)cxxm();if(z=7)break;int main()/主函数 input();solve();return 0;