版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程设计报告课程名称 数据结构课程设计 专业班级 软件1241 姓 名 屠舒剑 学 号 1204431126 指导教师 丁柏秀 赵洁红 起止时间 2014.2.252014.2.28 成 绩 评 定考核内容设计表现设 计报 告答辩综合评定成 绩计算机技术与工程学院课程设计考核和成绩评定办法1 课程设计的考核由指导教师根据设计表现、设计报告、设计成果、答辩等几个方面,给出各项权重,综合评定。该设计考核教研室主任审核,主管院长审批备案。2 成绩评定采用五级分制,即优、良、中、及格、不及格。3 参加本次设计时间不足三分之二或旷课四天以上者,不得参加本次考核,按不及格处理。4 课程设计结束一周内,指导
2、教师提交成绩和设计总结。5 设计过程考核和成绩在教师手册中有记载。课程设计报告内容 课程设计报告内容、格式各专业根据专业不同统一规范,经教研室主任审核、主管院长审批备案。注: 1. 课程设计任务书和指导书在课程设计前发给学生,设计任务书放置在设计报告封面后和正文目录前。 2. 为了节省纸张,保护环境,便于保管实习报告,统一采用A4纸,实习报告建议双面打印(正文采用宋体五号字)或手写。一、课程设计目的本次课程设计的目的就是要达到理论与实际应用相结合,使我们能过根据数据对象的特性,学会数据组织的方法,能把现实世界中的实际问题在计算机内部表示出来,并培养基本的、良好的程序设计技能。掌握基本的输入、输
3、出方法,理解程序的分支结构,实现条件判断和循环程序的设计。掌握线性表的应用。二、课程设计要求数据结构课程设计则要培养、训练学生选用合适的数据结构并运用程序设计语言(C/C+)编写质量高的应用程序。并建立初步评价算法程序的能力。为编译技术、操作系统、数据库及算法设计与分析等后继课程的学习以及为应用软件特别是非数值应用软件的开发打下良好的理论基础和实践基础重点和难点: 1. 针对具体问题如何选择或设计合适的数据结构; 2. 如何根据一定的存储策略实现数据的存储表示; 3. 基于上述数据结构设计并实现完成具体要求的算法; 4. 对算法的时间性能进行分析。针对每一个设计题目写出1. 问题分析和任务定义
4、:根据设计题目的要求,充分地分析和理解问题,明确问题要求做什么?(而不是怎么做?)限制条件是什么? 2. 逻辑设计:对问题描述中涉及的操作对象定义相应的数据类型,并按照以数据结构为中心的原则划分模块,定义主程序模块和各抽象数据类型。逻辑设计的结果应写出每个抽象数据类型的定义(包括数据结构的描述和每个基本操作的功能说明),各个主要模块的算法,并画出模块之间的调用关系图;3. 详细设计:定义相应的存储结构并写出各函数的伪码算法。在这个过程中,要综合考虑系统功能,使得系统结构清晰、合理、简单和易于调试,抽象数据类型的实现尽可能做到数据封装,基本操作的规格说明尽可能明确具体。详细设计的结果是对数据结构
5、和基本操作作出进一步的求精,写出数据存储结构的类型定义,写出函数形式的算法框架;4. 程序编码:把详细设计的结果进一步求精为程序设计语言程序。同时加入一些注解和断言,使程序中逻辑概念清楚;5. 程序调试与测试:采用自底向上,分模块进行,即先调试低层函数。能够熟练掌握调试工具的各种功能,设计测试数据确定疑点,通过修改程序来证实它或绕过它。调试正确后,认真整理源程序及其注释,形成格式和风格良好的源程序清单和结果;三、具体设计题目1问题描述运动会分数统计系统 设计目的:用数据结构中的线性表作数据结构,结合语言基本知识。编写一个运动会分数管理系统。以把所学数据结构知识应用到实际软件开发中去。 设计内容
6、:可以输入各个项目的前三名或前五名的成绩; 能统计各学校总分, 可以按学校编号、学校总分、男女团体总分排序输出; 可以按学校编号查询学校某个项目的情况; 可以按项目编号查询取得前三或前五名;设计要求:输入数据形式和范围:20以内的整数(如果做得更好可以输入学校的名称,运动项目 的名称) 输出形式:有中文提示,各学校分数为整形 界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能 要求。 存储结构:学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储 在数据文件中。(数据文件的数据读写方法等相关内容在c语言程序设计的书上,请 自学解决)请在最后的上交资料中指明你
7、用到的数据结构; 测试数据:要求使用1、全部合法数据;2、整体非法数据;3、局部非法数据。进行 程序测试,已保证程序的稳定。测试数据及测试结构请在上交的资料中写明;2 问题分析和任务定义 本程序主要是使用链表来实现操作,一个运动会运动项目和参加运动会的成员。因此构造两个链表。为了操作的方便,并且能够保存输入数据,所以通过文件操作来实现数据的读和写。每次添加新的数据后都要输入“0”退出,数据才能保存。对于排序功能,采用了冒泡排序法。 该题是要求通过巩固线性表,在所学C+语言基础上用其设计运动会分数统计系统,包括运动会参加者及其成绩信息的输入,显示,查找,删除,存盘和装入功能。限制条件是要有较好的
8、界面和较强的容错能力而且上机能正常运行。3逻辑设计 设计该题需要两个类,一个是School类包括信息的内容有学校名字(name)、学校编号(number)、男团总分(boy)、女团总分(girl)和一个头结点的前驱指针,另一个是Sport类包括项目名称(name)、性别(isboy)、名次(is3)、项目编号(number)、第一名(first)、第二名(second)、第三名(third)、第四名(fourth)、第五名(fifth)和一个结点的前驱指针,后继指针和数据。各模块需对两个结构体中的内容进行操作,该系统包括add()模块,output()模块,search()模块,order()
9、模块,save()模块,load() 模块。模块之间调用关系如下图所示:4详细设计 1)输入信息的伪代码描述如下: First申请空间建立双链表空头结点; while(flag=Y|flag=y) 工作指针p申请空间 向双链表中动态增加节点 2)显示信息的伪代码描述如下: 双链表节点p初始化 While(p!=first) 工作指针p后移 3)查找信息的伪代码描述如下: 工作指针p初始化 while(p!=first & p & p的姓名和已存在的名字不同) 工作指针p后移 4)删除信息的伪代码描述如下: 工作指针p初始化 查找到所要删除的姓名的信息 摘链 5)存盘的伪代码描述如下: 以二进制
10、写的方式打开文件 While(p!=first) 工作指针p后移 向文件中写入结点个数 逐个写入作息 关闭文件 6)装入的伪代码描述如下: 建立双链表空头结点 以二进制读的方式打开文件 工作指针p初始化 从文件中动态载入节点数据 关闭文件5程序源代码如下:#include#include#include#include#include#include#include#includeclass Schoolprivate:char name25;int number;int boy;int girl;public:School *next;void School_add();void Schoo
11、l_sort();void School_output(School *p);int School_isexist(int a);void School_show(int a);void School_search(int a);void School_addmark(int a,int b,int c); /a为分数,b为学校编号,c为性别编号void School_order(School *temp,int type);class Sportprivate:char name20;int isboy;int is3;int number;int first;int second;int
12、third;int fourth;int fifth;public:Sport *next;int Sport_isexist(int a);void Sport_add();void Sport_output(Sport *p);void Sport_search(int a);School *head1;Sport *head2;void School:School_add()School *p;int mark=0;p=new School;cout请输入学校名称:p-name;int c;while(mark!=1)cout请输入学校编号:c;p-number=c;mark=1;p-b
13、oy=0;p-girl=0;p-next=head1-next;head1-next=p;cout成功添加一条信息!endl;cout是否继续添加?(y/n)input;switch(input)case y:mark=0;School_add();case n:mark=1;return;delete p;void School:School_output(School *p)cout学校名称 编号 男团总分 女团总分 团体总分next;while(p)coutnamettnumberttboyttgirlttboy+p-girl)next;int School:School_isexist
14、(int a)int b=0;School *p;p=head1;p=p-next;while(p)if(p-number=a)return 1;p=p-next;return 0;void School:School_show(int a)School *p;p=head1;p=p-next;while(p)if(p-number=a)coutname next;cout无next;while(p)if(p-number=a)cout学校名称name 男团总分boy 女团总分girl 团体总分boy+p-girl) next;cout无此编号!next;while(p)if(p-number
15、=b)if(c=1)p-boy=p-boy+a;elsep-girl=p-girl+a;p=p-next;void School:School_sort() School *q,*small;School *temp1;temp1 = new School;temp1-next = NULL;q = head1;q = q-next;small = head1;small = small-next;temp1-girl = q-girl;q-girl = small-girl;small-girl = temp1-girl;temp1-boy = q-boy;q-boy = small-boy
16、;small-boy = temp1-boy;strcpy(temp1-name,q-name);strcpy(q-name,small-name);strcpy(small-name,temp1-name);temp1-number = q-number;q-number = small-number;small-number = temp1-number;void School:School_order(School *temp,int type)School *q,*small;School *temp1;School sh;temp1 = new School;temp1-next =
17、 NULL;while(q&small)switch(type)case 0:for(q=head1;q=q-next;q!=NULL)for(small=head1;small=small-next;small!=NULL)if(q-boy+q-girl)boy+small-girl)sh.School_sort();break;case 1:for(q=head1;q=q-next;q!=NULL)for(small=head1;small=small-next;small!=NULL)if(q-boyboy)sh.School_sort();break;case 2:for(q=head
18、1;q=q-next;q!=NULL)for(small=head1;small=small-next;small!=NULL)if(q-girlgirl)sh.School_sort();break;case 3:for(q=head1;q=q-next;q!=NULL)for(small=head1;small=small-next;small!=NULL)if(q-numbernumber)sh.School_sort();break;default:coutERROE!number=a)return 1;p=p-next;return 0;void Sport:Sport_add()
19、/需要修改Sport* p;int mark=0;p=new Sport;coutp-name;int c;while(mark!=1)coutc;if(Sport_isexist(c)coutnumber=c;mark=0;while(mark!=1)coutc;mark=1;p-isboy=c;mark=0;while(mark!=1)coutc; mark=1; p-is3=c;mark=0;School sh;while(mark!=1)coutc;if(!sh.School_isexist(c)coutfirst=c;if(p-is3=0)sh.School_addmark(5,c,
20、p-isboy);elsesh.School_addmark(7,c,p-isboy);mark=0;while(mark!=1)coutc;if(!sh.School_isexist(c)coutsecond=c;if(p-is3=0)sh.School_addmark(3,c,p-isboy);elsesh.School_addmark(5,c,p-isboy);mark=0;while(mark!=1)coutc;if(!sh.School_isexist(c)coutthird=c;if(p-is3=0)sh.School_addmark(2,c,p-isboy);elsesh.Sch
21、ool_addmark(3,c,p-isboy);mark=0;if(p-is3=1)while(mark!=1)coutc;if(!sh.School_isexist(c)coutfourth=c;sh.School_addmark(2,c,p-isboy);mark=0;while(mark!=1)cout请输入第五名学校的编号:;if(!sh.School_isexist(c)coutfifth=c;sh.School_addmark(1,c,p-isboy);elsep-fourth=0;p-fifth=0;p-next=head2-next;head2-next=p;cout成功添加
22、了一个运动项目next;cout当前项目名称t编号B/G3/5 第一名第二名 第三名 第四名 第五名 endl;School sh;while(p)coutnamet number isboy is3 first); sh.School_show(p-second); sh.School_show(p-third);sh.School_show(p-fourth); sh.School_show(p-fifth); p=p-next;coutn; coutnext; while(p) if(p-number=a) cout项目名:nameendlisboy=1) cout男子项目; else
23、cout女子项目; coutendlfirst); coutendlsecond); coutendlthird); coutendlfourth); coutendlfifth); return; p=p-next; coutnext=NULL;head2=new Sport;head2-next=NULL;School sh;Sport sp;School *p1;Sport *p2;p1=head1;p1=p1-next;p2=head2;p2=p2-next;int choose;char temp;int a=1;while(a!=0)cout endl;cout endl;cout 欢迎使用运动会分数统计系统 endl;cout-endl;cout endl;cout 1.输入学校; 2.输入运动项目 endl;cout 3.按学校编号输出总分; 4.按学校总分排序输出 endl;cout 5.按男团总分排序输出; 6.按女团总分排序输出 endl;cout 7.按学校编号查询; 8.按项目编号查询 endl;cout 0.退出 endl;cout endl;cout-endl;cout endl;cout-请选择(0-8)-endl;cout choose;sw
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 泥工承包合同书(2024年版)
- 钢筋供应商与施工方2024年度合同的履行保证3篇
- 《总预算会计收入》课件
- 《质壁分离实验》课件
- 二零二四年度个人与个人商铺租赁合同2篇
- 藏毛窦课件可编辑
- 基于二零二四年度的股权转让协议
- 土地流转合同范本2024版
- 2024年学校世界读书日暨“校园读书节”活动实施方案
- 苗圃技术创新研发合作合同(2024版)
- 7 大雁归来 公开课一等奖创新教学设计
- 烟草县局内管培训课件
- 2022农房设计和建设技术导则
- 发豆芽实验报告范文
- 商品学(慕课版)教案汇总-教学设计 1.1走近商品 -6.2品类管理
- 杂志的策划方案
- 消毒供应中心(CSSD)感染防控指引
- 下肢动脉闭塞症的护理
- 中医治疗肾病的
- 《外科学颅脑脑疝》课件
- 社区法律顾问法律知识讲座
评论
0/150
提交评论