运动会计分系统课程设计报告.docx
- 文档编号:15115757
- 上传时间:2023-06-30
- 格式:DOCX
- 页数:44
- 大小:428.87KB
运动会计分系统课程设计报告.docx
《运动会计分系统课程设计报告.docx》由会员分享,可在线阅读,更多相关《运动会计分系统课程设计报告.docx(44页珍藏版)》请在冰点文库上搜索。
运动会计分系统课程设计报告
计算机科学与工程学院
数字媒体与技术专业
《数据结构与算法课程设计》报告
学生班级:
学生学号:
学生:
指导教师:
2011年 9月 1日
运动会计分学校统
第一章课程设计的目的和要求
1.1课程设计目的
数据结构作为一门学科主要研究数据的各种逻辑结构和存储结构,以及对数据的各种操作。
因此,主要有三个方面的容:
数据的逻辑结构;数据的物理存储结构;对数据的操作(或算法)。
通常,算法的设计取决于数据的逻辑结构,算法的实现取决于数据的物理存储结构。
数据结构是信息的一种组织方式,其目的是为了提高算法的效率,它通常与一组算法的集合相对应,通过这组算法集合可以对数据结构中的数据进行某种操作。
在当今信息时代,信息技术己成为当代知识经济的核心技术。
我们时刻都在和数据打交道。
比如人们在外出工作时找最短路径,在银行查询存款、通过互联网查新闻、以及远程教育报名等,所有这些都在与数据发生关学校。
实际上,现实世界中的实体经过抽象以后,就可以成为计算机上所处理的数据。
数据结构课程主要是研究非数值计算的程序设计问题中所出现的计算机操作对象以及它们之间的关学校和操作的学科。
数据结构是介于数学、计算机软件和计算机硬件之间的一门计算机专业的核心课程,它是计算机程序设计、数据库、操作学校统、编译原理及人工智能等的重要基础,广泛的应用于信息学、学校统工程等各种领域。
学习数据结构是为了将实际问题中所涉及的对象在计算机中表示出来并对它们进行处理。
通过课程设计可以提高学生的思维能力,促进学生的综合应用能力和专业素质的提高。
课程设计的目的:
1)要求学生达到熟练掌握C语言的基本知识和技能。
2)了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力。
3)提高程序设计和调试能力。
学生通过上机实习,验证自己设计的算法的正确性。
学会有效利用基本调试方法,迅速找出程序代码中的错误并且修改。
4)培养算法分析能力。
分析所设计算法的时间复杂度和空间复杂度,进一步提高程序设计水平。
5)初步掌握软件开发过程的问题分析、学校统设计、程序编码、测试等基本方法和技能。
1.2课程设计问题描述
参加运动会的学校有n个,其中学校编号从1至n。
比赛分成w个女子项目和m个男子项目。
运动会比赛项目编号是:
男子1……m,女子m+1……m+w。
在比赛的结果中,不同的项目取前五名或者取前三名的积分;取前五名的积分分别为:
7、5、3、2、1,前三名的积分分别为:
5、3、2;哪些取前五名或前三名由学生自己设定。
(m<=20,n<=20)
1.3课程设计基本要求
(1)能够方便快捷的输入各个项目的前三名或前五名的成绩
(2)能够按学校编号、学校总分、男女团体总分进行排序并输出
(3)能够精确的统计各学校的总分
(4)能够按学校编号查询学校某个项目的基本情况,能够按项目编号查询取得前三或前五名的学校
1.4课程设计测试数据
a)按1键进入添加学校的界面,根据提示,再输入:
汽车学校。
再输入:
8,成功添加了一个学校。
再输入:
2进入运动项目添加界面,根据提示,再输入:
跳高;1;0;1;2;3。
之后输入0。
再次进入学校统界面
b)按3键查看学校统中输出的结果
c)按4键查看学校统中输出的结果
d)按5键查看学校统中输出的结果
e)按6键查看学校统中输出的结果
f)按7键根据提示输入项目编号并查看学校统中输出的结果
g)按8键根据提示输入学校编号并查看学校统中输出的结果
第二章课程设计任务容
A.可以输入各个项目的前三名或前五名的成绩
B.可以按学校编号、学校总分、男女团体总分排序输出
C.可以统计出各学校的总分
D.可以按学校编号查询学校某个项目的情况
E.可以按项目编号查询取得前三或前五名的学校
F.数据存入文件中,并且可以随时查询
G.学校统操作规定:
输入数据形式和围:
可以输入学院(学校)的名称和运动会项目的名称
输出形式:
有中文提示,各学院(学校)分数为整形
H.界面要求:
有合理的操作提示,每个功能都可以设立菜单,并且根据提示,可以完成相关的功能要求
I.存储结构:
学生自己可以根据学校统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中,实时保存
第三章详细设计说明
3.1数据类型定义
(1)运动项目定义:
typedefstructSport//运动项目结构
{
charname[20];//运动项目名称
intisboy;//0为女项目,1为男项目
intis3;//0为取前五名,1为取前五名
intnumber;//项目编号
intfirst;//第一名学校的编号
intsecond;//第二名学校的编号
intthird;//第三名学校的编号
intfourth;//第四名学校的编号
intfifth;//第五名学校的编号
Sport*next;
}Sport;、
运动项目结构体定义如下:
char型的数组,int型的number,first,second,third,fourth,fifth以及sport类型的指针next。
(2)学校的定义:
typedefstructDepartment//学校的结构
{
charname[20];//学校的名称
intnumber;//学校的编号
intboy;//男子团体总分
intgirl;//女子团体总分
Department*next;
}Department;
将学校自定义为一个结构体命名为Department;学校的结构体定义如下:
char型的数组,int型的变量unmber,int型的变量boy,girl以及Department类型的指针next。
3.2程序功能图及功能说明
3.2.1程序功能图
图2程序功能图
3.2.2程序功能说明
如上图标示:
1直接输入学校别名称
2直接输入运动项目的名称,编号,及男女项目代码,以便之后执行的简单快捷
3直接跳转到“按学校别输出总分”的界面,查看按学校别编号输出的总分
4直接跳转到“按总分排序”的界面,查看按总分排列的顺序
5直接跳转到“按男团体输出总分”的界面,查看按男团体总分排列的顺序
6直接跳转到“按女团体输出总分”的界面,查看按女团体总分排列的顺序
7输入所要查出的项目的编号,即可查看所排列的顺序
8输入所要查出的学校别的标号,即可查看所排列的顺序
0退出键,保存文本,关闭程序
3.3程序流程图
图1程序流程图
如上图所示:
本学校统在第一次运行时,将直接输出菜单,如果不是第一次运行,则在学校统运行的初期会进行数据的读取。
然后,可以根据输出的菜单对需要进行的功能进行选择,选择完毕后将该功能进行运行。
例如:
输入运动项目,输入学校别,按学校别编号出总分,按男女团体总分数输出,按项目标号查询,按学校别标号查询,退出。
运行完毕后,将数据输出到屏幕,如果要结束学校统则自动将数据保存到相应的文本,否则继续输出菜单。
3.4算法设计
主要算法的设计思想:
本程序主要是使用链表来实现操作。
一个运动会包括运动项目和参加运动会的成员。
因此构造两个链表Department,Sport。
根据输入的不同选择不同的功能,有输入运动项目,输入学校别,按学校别编号输出总分,按总分排序,按男团体总分排序,按女团体总分排序,按项目标号查询,按学校别标号查询,退出。
为了操作的方便,并且能够保存输入数据,所以通过文件操作来实现数据的写和读。
每次添加新的数据后都要输入0退出,数据才能保存。
对于总分的排序使用了冒泡排序。
为了使整个程序看起来更加友好,又添加了程序启动画面。
3.5相关知识
链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针次序实现的。
链表由一学校列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。
每个结点包括两个部分:
一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。
相比于线性表顺序结构,链表比较方便插入和删除操作。
冒泡排序,是指计算机的一种排序方法,它的时间复杂度为O(n^2),虽然不及堆排序、快速排序的O(nlogn,底数为2),但是有两个优点:
1.“编程复杂度”很低,很容易写出代码;2.具有稳定性,这里的稳定性是指原序列中相同元素的相对顺序仍然保持到排序后的序列,而堆排序、快速排序均不具有稳定性。
不过,一路、二路归并排序、不平衡二叉树排序的速度均比冒泡排序快,且具有稳定性,但速度不及堆排序、快速排序。
冒泡排序是经过n-1趟子排序完成的,第i趟子排序从第1个数至第n-i个数,若第i个数比后一个数大(则升序,小则降序)则交换两数。
第四章程序测试
4.1多组数据输入与输出
图3程序页面图
图3为本程序的页面图,为了使程序更加人性化,加入了“程序读取,请耐心等待”的字样。
图4程序菜单图
图4为本程序的菜单,显示了本程序的主要功能,可以让使用者轻松,快捷的,选择所要进行的操作。
图5程序输入学校别图
如图5所示,在菜单中选择“1”按回车键,弹出输入一个学校,输入“计算机”,编号“1”单击回车键,返回菜单。
图6程序输入运动项目图
图7程序输入运动项目图
如图6,图7所示,在菜单中选择“2”,按回车键,弹出“输入一个运动项目”,输入“100米”,编号“1”类型“0”等操作之后。
按回车键,返回菜单。
图8程序输入学校别编号查询图
如图8所示,在菜单中选择“8”,按回车键,弹出“输入学校的编号”,输入“2”,按回车键,弹回菜单。
(1)输入:
4
输出:
学校名编号男团总分女团总分总分
法律学校4101
电子学校3279
数学学校56511
旅游学校15914
历史学校29716
中文学校6151126
计算机学校7211132
(2)输入:
6
输出:
法律学校4000
电子学校3314
数学学校5639
旅游学校17714
历史学校29918
中文学校6151126
计算机学校7211132
(3)输入:
8
输出:
请输入学校的编号:
再输入2回车
则输出:
学校名:
中文学校男子团体总分:
3女子团体部分:
10总分:
13
(4)输入:
0退出
4.2操作过程
(1)用户进入程序启动界面,等load完成后进入主菜单.主菜单有以下9个选项。
1.输入学校别
2.输入运动项目
3.按学校别编号输出总分
4.按总分排序
5.按男团体总分排序
6.按女团体总分排序
7.按项目编号查询
8.按学校别编号查询
0.退出
(2)输入0至8中的一个数。
(3)输入1,进行添加学校操作,分别输入学校的名称和编号。
(4)输入2,进行添加运动项目操作,分别输入项目名称,编号,项目类型,名次选
取,排名情况。
(5)输入0,则退出学校统,并且保存输入的信息.每次添加完都要输入0退出学校统
才有效。
(6)输入3,输出按学校编号总分排名。
(7)输入4,输出按总分排名。
(8)输入5,输出按男团体总分排序。
(9)输入6,输出按女团体总分排序。
(10)输入7,进入按项目编号查询界面.输入要查询的项目编号。
(11)输入8,进入按学校别编号查询界面,输入要查询的学校的编号。
第五章课程设计心得与体会
二周的课程设计结束了,在这次的课程设计中不仅检验了我所学习的知识,也培养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。
经过二周的课程设计,过程曲折可谓一语难尽。
整天都是对着电脑,不然就是翻阅资料。
在此期间我失落过,也曾一度热情高涨。
点点滴滴令我回味无长。
这次课程设计使我体会到只有做到细心耐心,恒心才能做好事情。
这次的课程设计,加强了我们动手、思考和解决问题的能力。
巩固和加深了对数据结构的理解,提高综合运用本课程所学知识的能力。
培养了我选用参考书,查阅手册及文献资料的能力。
培养独立思考,深入研究,分析问题、解决问题的能力。
通过实际编译学校统的分析设计、编程调试,掌握应用软件的分析方法和工程设计方法。
通过课程设计,培养了我严肃认真的工作作风,逐步建立正确的生产观念、经济观念和全局观念。
而且做课程设计同时也是对课本知识的巩固和加强,平时看课本时,有些问题就不是很能理解,做完课程设计,那些问题就迎刃而解了。
而且还可以记住很多东西。
认识来源于实践,实践是认识的动力和最终目的,实践是检验真理的唯一标准。
所以这个期末测试之后的课程设计对我们的作用是非常大的。
这次的课程设计使我懂得了理论与实际相结合是很非常重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在整个设计过程中,构思是很花费时间的。
调试时经常会遇到这样那样的错误,有的是因为粗心造成的语法错误。
当然,很多也时用错了方法,总是实现不了。
同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。
根据我在课程设计中遇到得问题,我将在以后的学习过程中注意以下几点:
1、认真上好专业实验课,多在实践中锻炼自己。
2、写程序的过程中要考虑周到,严密。
3、在做设计的时候要有信心,有耐心,切勿浮躁。
4、认真的学习课本知识,掌握课本中的知识点,并在此基础上学会灵活运用。
5、在课余时间里多写程序,熟练掌握在调试程序的过程中所遇到的常见错误,以便能节省调试程序的时间。
每个实验通常都要花费很久的时间才能理清一个程序的思路,而且要不断的调试程序才能把程序调试正确,同时还要做到界面的输出也是需要美化的。
这次课程设计终于顺利完成了,在设计中遇到了很多专业知识问题,最后在老师的辛勤指导下,也完成了课程设计。
通过这次的课程设计,让我更加了解到数据结构的重要性。
以及它对我们专业的发展发挥的作用。
对我们而言,知识上的收获很重要,但精神上的丰收更加可喜。
让我知道了学无止境的道理。
我们每一个人永远不能满足于现有的成就,人生就像在爬山,一座山峰的后面还有更高的山峰在等着你。
挫折是一份财富,经历是一份拥有。
这次课程设计必将成为我人生旅途上一个非常美好的回忆!
同时在做课程设计时要能够从多方面去考虑,去研究,用多种算法去实现要求。
此次课程设计,学到了很多课学不到的东西,比如独立思考解决问题,出现差错的随机应变,这些都让我受益非浅,今后的制作应该能够更轻松,自己也都能够解决并高质量的完成项目。
第六章致
在此感对我帮助过的同学们,你们对我的帮助和支持,让我感受到兄弟的友情。
课程设计强化了我的对于数据结构的基础知识的认识,并且将知识逐步实践化,使得自己对c有了更深刻的理解。
并真诚地感我的数据结构任课老师—曾老师。
附录一参考文献
[1]谭浩强.《C++程序设计》.:
清华大学,2004年
[2]严蔚敏,吴伟民.《数据结构与算法分析(C++版)(第2版)》.:
清华大学,2006年
[3CliffordA.Shaffer,铭 著《数据结构与算法分析(C++版)(第2版)》.:
电子工业,2010年
[4]网址:
.chinadforce.
附录二程序清单
#include
#include
#include
#include
#include
#include
#include
#include
typedefstructDepartment//学校的结构
{
charname[20];//学校的名称
intnumber;//学校的编号
intboy;//男子团体总分
intgirl;//女子团体总分
Department*next;}Department;
typedefstructSport//运动项目结构
{
charname[20];//运动项目名称
intisboy;//0为女项目,1为男项目
intis3;//0为取前五名,1为取前五名
intnumber;//项目编号
intfirst;//第一名学校的编号
intsecond;//第二名学校的编号
intthird;//第三名学校的编号
intfourth;//第四名学校的编号
intfifth;//第五名学校的编号
Sport*next;
}Sport;
intgetint(inta)//字符转换成数字
{
return(int)(a-'0');
}
Department*head1;
//-------启动画面函数----------
voidCover()
{system("color1b");
charline[]={"程序读取中 请耐心等待..."};
charbar[]={"...."};
inti,j,k=0,x=0,y=0;
for(i=0;i<=strlen(line)/2;)
{
system("cls");
for(j=0;j<9;j++)//改变行坐标
cout< for(j=0;j<(75-strlen(line))/2;j++)//改变列坐标 cout<<""; for(j=1;j<=i;j++)//进度显示器 cout<<"●"; for(x=strlen(line)/2;x>i;x--) cout<<"○"; if(k==4) i++; cout< for(j=0;j<(75-strlen(line))/2;j++)//行坐标定位 cout<<""; cout< cout< for(j=0;j<(65-strlen(bar))/2;j++) cout<<""; cout<<(i+7)*5<<"%Loading"; cout.write(bar,k); cout< for(j=0;j<10;j++) cout< for(j=0;j<24;j++) cout<<""; cout<<"程序设计员: 数字媒体09702班田野"< for(j=0;j<24;j++) cout<<""; for(j=0;j<=18;j++) cout<<"─"; cout< for(j=0;j<10000000;j++);//延时效果 k++; if(k>4) k=0; } } voiddepartment_add()//添加学校 { Department*p; intmark=0; p=newDepartment; cout<<"请输入学校的名称: "; cin>>p->name; charc; while(mark! =1) { cout<<"请输入学校的编号: "; cin>>c; if(! isdigit(c))//是否为数字 { cout<<"数据非法"< } else { mark=1; p->number=c; } } p->boy=0; p->girl=0; p->next=head1->next; head1->next=p; cout<<"成功添加了一个学校"< } intdepartment_getlong(Department*first)//得到链表长度 { inti=0; while(first->next! =NULL) { i++; first=first->next; } returni; } voiddepartment_write()//将学校数据写入文本 { Department*p; p=head1; p=p->next; ofstreamoutfile("Department.txt",ios: : out); outfile< while(p! =NULL) { outfile< p=p->next; } outfile.close(); cout<<"WriteSuccess! "< } voiddepartment_read()//从文本读入学校数据 { inti; ifstreaminfile("Department.txt",ios: : in); infile>>i; while(i>0) { Department*p; p=newDepartment; infile>>p->name>>p->number>>p->boy>>p->girl; p->next=head1->next; head1->next=p; i--; } cout<<"DepartmentDataReadSuccess! "< } voiddepartment_output(Department*p)//输出学校 { cout<<" 学校名 编号 男团总分 女团总分 总分\t\n"; while(p) { cout< p=p->next; } } intdepartment_isexist(inta)//检验学校是否存在 { intb=0; Department*p; p=head1; p=p->next; while(p) { if(p->number==a) { return1; } p=p->next; } return0; } voiddepartment_show(inta)//输出所有学校 { Department*p; p=head1; p=p->next; while(p) { if(p->number==a) { cout< return; } p=p->next; } cout<<" 无 "; } voiddepartment_search(inta)//按编号搜索学校 { Department*p; p=head1; p=p->next; while(p) { if(p->number==a) { cout<<"学校名: "< "<
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 运动 会计 分系统 课程设计 报告