数据结构课程设计指导.docx
- 文档编号:7967545
- 上传时间:2023-01-27
- 格式:DOCX
- 页数:9
- 大小:31.67KB
数据结构课程设计指导.docx
《数据结构课程设计指导.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计指导.docx(9页珍藏版)》请在冰豆网上搜索。
数据结构课程设计指导
《数据结构》
课程设计指导
孙鸿飞
东北电力大学经济管理学院
数据结构课程设计指导
一、课程设计的目的
数据结构课程是信息管理与信息系统专业的核心课程,是一门以实践为主的课程。
计算机学科各领域及应用都用到各种数据结构,特别是随着计算机应用领域的扩大和非数值计算的增加,数据大量增加,它们之间的结构关系也日益复杂,无论是操作系统、数据库系统、电子商务系统、编译系统及信息系统等的设计和实现,还是其它各种应用软件都涉及不同的数据结构。
学习数据结构与算法的最终目的是解决实际的应用问题,特别是非数值计算类型的应用问题。
本课程设计是在学生理解了数据结构内在的逻辑关系的基础上,深入讨论它们在计算机中的存储表示,结合上机进行算法及存储表示的实现。
这样,进一步提高学生软件设计和编程水平。
课程设计要求同学独立完成一个较为完整的应用需求分析,在完成设计和编程大型作业的过程中,深化对数据结构与算法课程中基本概念、理论和方法的理解;训练综合运用所学知识处理实际问题的能力,强化面向对象的程序设计理念;使同学的程序设计与调试水平有一个明显的提高。
经过查找参考资料、技术手册和撰写文档的实践,进一步培养软件工程师的综合素质。
课程设计所安排的题目,在难度和深度方面都大于课内的上机训练。
二、课程设计要求
学生必须仔细阅读《数据结构》课程设计指导,认真主动完成课设的要求。
有问题及时主动通过各种方式与教师联系沟通。
学生要发挥自主学习的能力,充分利用时间,安排好课设的时间计划,并在课设过程中不断检测自己的计划完成情况,及时的向教师汇报。
课程设计按照教学要求需要两周时间完成,两周中每天(按每周5天)至少要上3-4小时的机来调试C语言/C++语言设计的程序,总共至少要上机调试程序50小时。
2013年1月9日提交课程设计所需全部资料,1月10日进行最终答辩和程序测试,地点:
经济管理学院机房。
课程设计不安排补考,不合格者将随下届同学重新进行课程设计。
注意:
在课程设计时,任选下列两题完成。
每个同学必须单独完成。
三、课程设计的具体内容
1.试设计一个航空客运定票系统
问题描述:
每条航线所涉及的信息有:
终点站名、航班号、飞行日期(星期几飞行)、乘员定额、余票量、订定票的客户名单(包括姓名、订票量、舱位等级1,2或3)以及等候替补的客户名单(包括姓名、所需数量)。
系统能实现的操作和功能如下:
查询航线:
根据客户提出的终点站名输出如下信息:
航班号、飞机号、星期几飞行,最近一天航班的日期和余票额;
承办订票业务:
根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若有余票,则为客户办理订票手续,输出座位号;若已满员或余票少于订票额,则需重新询问客户要求。
若需要,可登记排队候补;
承办退票业务:
根据客户提出的情况(日期、航班号),为客户办理退票手续,然后查询该航班是否有其他人排队候补,首先询问排在第一位的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其它排队候补的客户。
实现提示:
两个客户名单可分别由线性表和队列实现。
为查找方便,已订票客户的线性表应按客户姓名有序,并且,为了插入和删除方便,应以链表作为存储结构。
由于预约人数无法预计,队列也应以链表作为存储结构。
2.校园导游咨询(为来访的客人提供各种信息服务)
问题描述:
设计你的学校的校园平面图,所含景点10个左右。
以图中顶点表示校园内各景点,存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等有关信息。
为来访客人提供图中任意景点相关信息的查询。
为来访客人提供任意景点的问路查询,即查询任意两个景点之间的一条最短路径。
实现提示:
一般情况下,校园的道路是双向通行的,可设计校园平面图是一个无向网。
顶点和边均含有相关信息。
3.停车场管理问题
问题描述:
设有一个可以停放n辆汽车的狭长停车场,它只有一个大门可以供车辆进出。
车辆按到达停车场时间的早晚依次从停车场最里面向大门口处停放(最先到达的第一辆车放在停车场的最里面)。
如果停车场已放满n辆车,则后来的车辆只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排在便道上的第一辆车就进入停车场。
停车场内如有某辆车要开走,在它之后进入停车场的车都必须先退出停车场为它让路,待其开出停车场后,这些车辆再依原来的次序进场。
每辆车在离开停车场时,都应根据它在停车场内停留的时间长短交费。
如果停留在便道上的车未进停车场就要离去,允许其离去,不收停车费,并且仍然保持在便道上等待的车辆的次序。
编制一程序模拟该停车场的管理。
实现要求:
要求程序输出每辆车到达后的停车位置(停车场或便道上),以及某辆车离开停车场时应交纳的费用和它在停车场内停留的时间。
实现提示:
汽车的模拟输入信息格式可以是:
(到达/离去,汽车牌照号码,到达/离去的时刻)。
例如,(‘A’,1,5)表示1号牌照车在5这个时刻到达,而(‘D’,5,20)表示5号牌照车在20这个时刻离去。
整个程序可以在输入信息为(‘E’,0,0)时结束。
本题可用栈和队列来实现。
4.n阶魔阵问题
问题描述:
给定一奇数n,构造一个n阶魔阵。
n阶魔阵是一个n阶方阵,其元素由自
然数1,2,3,…,n2组成。
魔阵的每一行元素之和,每列元素之和以及主、副对角线元素之和均相等。
即对于给定的奇数n以及i=1,2,3,…,n,魔阵a满足条件:
实现要求:
要求输出结果的格式要具有n阶方阵的形式。
实现提示:
依次将自然数填入方阵中,共填n轮,每轮填n次。
第一轮的第一次,将1填入方阵的中间一行的最后一列位置。
设前一次填入的位置是aij:
每轮中第2至第n次将数填入ai+1,j+1,若遇到下列两种情况之一,则填写位置按以下规则调整。
①aij是最后一列(即j=n)位置,则将下一个数填入ai+1,1;
②aij是最后一行(即i=n)位置,则将下一个数填入a1,j+1
新一轮的第一次填入a1,j-1。
5.公交线路问题
问题描述:
假设以一个带权有向图表示某一个区域的公交线路;图中顶点代表一些区域中的重要场所,弧代表已有的公交线路,弧上的权表示该线路上的票价(或搭乘所需时间)。
试设计一个交通指南系统,指导前来咨询者以最低的票价或最少的时间从区域中的某一场所到达另一场所。
实现提示:
该问题可归结为一个求带权有向图中顶点间最短路径的问题。
分别建立以票价为权或以搭乘时间为权的图的邻接矩阵,以Floyd算法来求最短路径及其路径长度。
6.交通咨询系统设计
问题描述:
在交通网络非常发达,交通工具和交通方式不断更新的今天,人们在出差、旅游或做其他出行时,不仅关心节省交通费用,而且对里程和所需时间等问题也感兴趣。
利用计算机建立一个交通咨询系统,城市用结点表示,城市之间的交通关系用边表示。
这个交通系统可以回答旅客提出的各种问题。
例如,一位旅客要从A城到B城,他希望选择一条途中中转次数最少的路线。
实现功能:
设计一个交通咨询系统,能让旅客咨询从任一个城市结点到另一个城市结点之间的最短路径(里程)或最低花费或最少时间等问题。
对于不同咨询要求,可输入城市间的路程或所需时间或所需费用。
该设计共分三个部分,一是建立交通网络图的存储结构;二是解决单源最短路径问题;最后再实现两个城市结点之间的最短路径问题。
7.八皇后问题
问题描述:
八皇后问题是在8×8的国际象棋棋盘上,安放8个皇后,要求没有一个皇后能够“吃掉”任何其他一个皇后,即没有两个或两个以上的皇后占据棋盘上的同一行、同一列或同一对角线。
实现提示:
八皇后在棋盘上分布的各种可能的格局,其数目非常大,约等于232种,但是,可以将一些明显不满足问题要求的格局排除掉。
由于任意两个皇后不能同行,即每一行只能放置一个皇后,因此将第i个皇后放置在第i行上。
这样在放置第i个皇后时,只要考虑与前i-1个皇后处于不同列和不同对角线位置上即可。
因此,其算法基本思想为:
从第1行起逐行放置皇后,每放置一个皇后均需要依次对1,2,……,8列进行试探,并尽可能取小的列数。
若当前试探的列位置是安全的,即不与已放置的其他皇后冲突,则将该行的列位置保存起来,然后继续在下一行上寻找安全位置;若当前试探的列位置不安全,则用下一列进行试探,当8列位置试探完毕都未找到安全位置时,就返回到上一行,然后继续试探。
8.约瑟夫问题
问题描述:
有M个敢死队员要炸掉敌人的一碉堡,谁都不想去,排长决定用轮回数数的办法来决定哪个战士去执行任务。
如果前一个战士没完成任务,则要再派一个战士上去。
现给每个战士编一个号,大家围坐成一圈,随便从某一个战士开始计数,当数到5时,对应的战士就去执行任务,且此战士不再参加下一轮计数。
如果此战士没完成任务,再从下一个战士开始数数,被数到第5时,此战士接着去执行任务。
以此类推,直到任务完成为止。
功能要求:
至少采用两种不同的数据结构的方法实现。
如果采用三种以上的方法者,可加分。
9.运动会分数统计
问题描述:
参加运动会有n个学校,学校编号为1……n。
比赛分成m个男子项目,和w个女子项目。
项目编号为男子1……m,女子m+1……m+w。
不同的项目取前五名或前三名积分;取前五名的积分分别为:
7、5、3、2、1,前三名的积分分别为:
5、3、2;哪些取前五名或前三名由学生自己设定。
(m<=20,n<=20)
实现功能:
(1)可以输入各个项目的前三名或前五名的成绩。
(2)能统计各学校总分。
(3)可以按学校编号或名称、学校总分、男女团体总分排序输出。
(4)可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。
(5)数据存入文件并能随时查询,输入数据形式和范围:
可以输入学校的名称,运动项目的名称。
输出形式:
有中文提示,各学校分数为整形。
界面要求:
有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。
10.迷宫问题
问题描述:
迷宫实验是取自心理学的一个古典实验。
在该实验中,把一只老鼠从一个无顶大盒子的门放入,在盒中设置了许多墙,对行进方向形成了多处阻挡。
盒子仅有一个出口处放置一块奶酪,吸引老鼠在迷宫中寻找道路以到达出口。
对同一只老鼠重复进行上述实验,一直到老鼠从入口到出口,而不走错一步。
老鼠经多次试验终于得到它学习走通迷宫的路线。
设计一个计算机程序对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。
实现要求:
要求程序输出:
(1)一条通路的二元组(i,j)数据序列,(i,j)表示通路上某一点的坐标。
(2)用一种标志(如数字8)在二维数组中标出该条通路,并在屏幕上输出二维数组。
实现提示:
可以利用一个二维数组maze[i][j]表示迷宫,其中1<=i<=m,1<=j<=n。
数组元素值为1表示该位置是墙壁,不能通行;元素值为0表示该位置是通路。
假定从maze[l][1]出发,出口位于maze[m][n],移动方向可以是8个方向(东,东南,南,西南,西,西北,北和东北)。
11.教学计划编制问题
问题描述:
大学的每个专业都要制定教学计划。
假设任何专业都有固定的学习年限,每学年含两学期,每学期的时间长度和学分上限值均相等,每个专业开设的课程都是确定的,而且课程在开设时间的安排必须满足先修关系。
每门课程有哪些先修课程是确定的,可以有任意多门,也可以没有。
每门课恰好占一个学期。
试在这样的前提下设计一个教学计划编制程序。
实现要求:
(1)输入参数包括:
学期总数,一学期的学分上限,每门课的课程号(固定占3位的字母数字串)、学分和直接先修课的课程号。
(2)允许用户指定下列两种编排策略之一:
一是使学生在各学期中的学习负担尽量均匀;二是使课程尽可能地集中在前几个学期中。
(3)若根据给定的条件问题无解,则报告适当的信息;否则将教学计划输出到用户指定的文件中。
计划的表格格式自行设计。
12.通讯录的制作
问题描述:
第一个模块——主函数main()的功能是:
根据选单的选项调用各函数,并完成相应的功能。
第二个模块——Menu()的功能是:
显示英文提示选单。
第三个模块——Quit()的功能是:
退出选单。
第四个模块——Create()的功能是:
创建新的通讯录。
第五个模块——Add()的功能是:
在通讯录的末尾,写入新的信息,并返回选单。
第六个模块——Find()的功能是:
查询某人的信息,如果找到了,则显示该人的信息,如果未找到,则提示通讯录中没有此人的信息,并返回选单。
第七个模块——Alter()的功能是:
修改某人的信息,如果未找到要修改的人,则提示通讯录中没有此人的信息,并返回选单。
第八个模块——Delete()的功能是:
删除某人的信息,如果未找到要删除的人,则提示通讯录中没有此人的信息,并返回选单。
第九个模块——List()的功能是:
显示通讯录中的所有记录。
实现要求:
(1)每条信息至包含:
姓名(NAME)、性别(GENDER)、电话(TEL)、城市(CITY)邮编(EIP)几项。
(2)作为一个完整的系统,应具有友好的界面和较强的容错能力。
四、上交相关内容要求
上交的成果的内容必须由以下四个部分组成,缺一不可。
1.上交源程序:
学生按照课程设计的具体要求所开发的所有源程序(应该放到一个文件夹中);
2.上交程序的说明文件:
(保存在.txt中)在说明文档中应该写明上交程序所在的目录,上交程序的主程序文件名,如果需要安装,要有程序的安装使用说明;
3.课程设计报告:
(保存在word文档中,文件名要求按照"姓名-学号-课程设计报告"起名,如文件名为"张三-001-课程设计报告".doc)按照课程设计的具体要求建立的功能模块,每个模块要求按照如下几个内容认真完成;(至少15页以上)
其中包括:
a)需求分析:
在该部分中叙述,每个模块的功能要求。
b)概要设计
在此说明每个部分的算法设计说明(可以是描述算法的流程图),每个程序中使用的存储结构设计说明(如果指定存储结构请写出该存储结构的定义)。
c)详细设计
各个算法实现的源程序,对每个题目要有相应的源程序(可以是一组源程序,每个功能模块采用不同的函数实现)
源程序要按照写程序的规则来编写。
要结构清晰,重点函数的重点变量,重点功能部分要加上清晰的程序注释。
d)调试分析
测试数据,测试输出的结果,时间复杂度分析,和每个模块设计和调试时存在问题的思考(问题是哪些?
问题如何解决?
),算法的改进设想。
4.课设总结:
(保存在word文档中)总结可以包括:
课程设计过程的收获、遇到问题、遇到问题解决问题过程的思考、程序调试能力的思考、对数据结构这门课程的思考、在课程设计过程中对《数据结构》课程的认识等内容。
五、设计和调试过程的规范化要求
1、对每个题目要有需求分析
在需求分析中,将题目中要求的功能进行叙述分析,并且设计解决此问题的数据存储结构,(有些题目已经指定了数据存储的,按照指定的设计),设计或叙述解决此问题的算法,描述算法建议使用流程图,进行算法分析指明关键语句的时间复杂度。
给出实现功能的一组或多组测试数据,程序调试后,将按照此测试数据进行测试的结果列出来。
对有些题目提出算法改进方案,比较不同算法的优缺点。
如果程序不能正常运行,写出实现此算法中遇到的问题,和改进方法;
2、对每个题目要有相应的源程序(可以是一组源程序,即详细设计部分):
源程序要按照写程序的规则来编写。
要结构清晰,重点函数的重点变量,重点功能部分要加上清晰的程序注释。
程序能够运行,要有基本的容错功能。
尽量避免出现操作错误时出现死循环;
3、最后提供的主程序可以象一个应用系统一样有主窗口,通过主菜单和分级菜单调用课程设计中要求完成的各个功能模块,调用后可以返回到主菜单,继续选择其他功能进行其他功能的选择。
六、成绩评定方法
《数据结构》课程设计的最后成绩由以下几个方面组成:
程序运行情况(20分),程序的结构合理与否(10分),算法说明的清晰程度(10分),上交磁盘中程序存放的规范程度(10分),课程设计报告完成情况(20分),独立完成情况(学生间不相互雷同)(20分),以及加分因素(10分)(包括:
总结的深刻程度、算法的创新性等);共100分。
根据以上评定方法,个人成绩分为:
优秀、良好、中等、不及格四个级别。
附件1
课程设计选题登记汇总表
学年:
学期:
系:
班级:
年月日
序号
学生
姓名
专业
课程设计题目
课时
备注
学生
教师
指导教师签字:
系主任阅签:
注:
1.此表一式两份,一份交学生所在系,一份上交教务处存档;
2.此表在课程设计开始两天后上交。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计 指导