《数据结构》课程设计教学任务书

不要为已消尽之年华叹息,必须正视匆匆溜走的时光。 ——布莱希特
《数据结构》课程设计教学任务书
计算机2007-1
 课程设计周数:第20周 指导老师:刘文娟

一、课程设计的目的
数据结构课程主要是研究非数值计算的程序设计问题中所出现的计算机操作对象以及它们之间的关系和操作的学科。数据结构是介于数学、计算机软件和计算机硬件之间的一门计算机专业的核心课程,它是计算机程序设计、数据库、操作系统、编译原理及人工智能等的重要基础,广泛的应用于信息学、系统工程等各种领域。
学习数据结构是为了将实际问题中所涉及的对象在计算机中表示出来并对它们进行处理。通过课程设计可以提高学生的思维能力,促进学生的综合应用能力和专业素质的提高。通过此次课程设计主要达到以下目的:
* 了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;
* 初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;
* 提高综合运用所学的理论知识和方法独立分析和解决问题的能力;
* 训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。
二、课程设计的基本要求
1、独立思考,独立完成:课程设计中各任务的设计和调试要求独立完成,遇到问题可以讨论,但不可以拷贝。
2、做好上机准备:每次上机前,要事先编制好准备调试的程序,认真想好调试步骤和有关环境的设置方法,准备好有关的文件。
3、按照课程设计的具体要求建立的功能模块,每个模块要求按照如下几个内容认真完成;
其中包括:
a)需求分析:
在该部分中叙述,每个模块的功能要求
b)概要设计
在此说明每个部分的算法设计说明(可以是描述算法的流程图),每个程序中使用的存储结构设计说明(如果指定存储结构请写出该存储结构的定义)。
c)详细设计
各个算法实现的源程序,对每个题目要有相应的源程序(可以是一组源程序,每个功能模块采用不同的函数实现)
源程序要按照写程序的规则来编写。要结构清晰,重点函数的重点变量,重点功能部分要加上清晰的程序注释。
d)调试分析
测试数据,测试输出的结果,时间复杂度分析,和每个模块设计和调试时存在问题的思考(问题是哪些?问题如何解决?),算法的改进设想。
e)课程设计总结:(保存在word文档中)总结可以包括:课程设计过程的收获、遇到问题、遇到问题解决问题过程的思考、程序

调试能力的思考、对数据结构这门课程的思考、在课程设计过程中对《数据结构》课程的认识等内容;
4、每组实现的结果必须进行检查和演示;程序源代码和程序的说明文件必须上交,作为考核内容的一部分;(上交时每人交一份,文件夹的取名规则为:"学号 姓名",如"200413498 高魁"。该文件夹下至少包括:"源代码"、"课程设计报告"、"可执行文件"。由学习委员收集刻盘按规定时间统一上交)。
5、报告提交
时间:第20周星期五检查,第20周星期五下午5点之前由学习委员收集上交,迟交无成绩。
形式:课程设计报告(要求打印)和电子文档(统一刻盘)。
三、课程设计内容:
1、排序算法演示系统
【问题描述】
设计一个测试程序比较几种内部排序算法的关键字比较次数和移动次数以取得直观感受。
【基本要求】
(1)实现各种内部排序。包括冒泡排序,直接选择排序,希尔排序,快速排序,堆排序。
(2) 待排序的元素的关键字为整数。其中的数据要用随机数产生(如10000个),至少用5组不同的数据做比较,再使用各种算法对其进行排序,记录其排序时间,再汇总比较。
(3) 演示程序以人机对话的形式进行。每次测试完毕显示各种比较指标值的列表,用饼图或条形图进行表示,以便比较各种排序的优劣。
(4) 界面友好,易与操作。采用菜单方式进行选择。
【选做内容】
(1) 对不同表长进行比较;
(2) 验证各算法的稳定性;
(3) 输出界面的优化。
(4) 使用汉字显示。

2、校园导游咨询系统
【问题描述】
设计一个校园导游程序,为来访的客人提供各种信息查询服务。
【基本要求】
(1) 设计安徽理工大学的校园平面图,所含景点不少于10个。以图中顶点表示校内各景点,存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等相关信息。
(2) 为来访客人提供图中任意景点相关信息的查询。
(3) 为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一条最短的简单路径。
【选做内容】
(1) 系统功能的完善;
(2) 提供求任意两个景点之间的所有路径的功能;
(3) 提供校园图中多个景点的最佳访问路线查询,即求途经这多个景点的最佳(短)路径。
(4) 使用汉字显示。

3、通讯录
【问题描述】
设计散列表实现通讯录查找系统。
【基本要求】
(1) 设每个记录有下列数据项:电话号码、用户名、地址;
(2) 从键盘输入各记录,分别以电话号码为关键字建立散列表;
(3) 采用线性探测再散列法解决冲突;
(4) 查找并显示给定电话号码的记录;
(5) 通讯录信息文件保存;
(6) 要求人机界面友好,使用图形化界

面;
【选做内容】
(1) 系统功能的完善;
(2) 设计不同的散列函数,比较冲突率;
(3) 在散列函数确定的前提下,尝试各种不同类型处理冲突的方法,考察平均查找长度的变化。
(4) 使用汉字显示。
【实现提示】
如果不用界面编程,可用以下函数实现:
主函数:根据选单的选项调用各函数,并完成相应的功能。
Menu()的功能:显示英文提示选单。
Quit()的功能:退出选单。
Create()的功能:创建新的通讯录。
Append()的功能:在通讯录的末尾写入新的信息,并返回选单。
Find():查询某人的信息,如果找到了,则显示该人的信息,如果没有则提示通讯录中没有此人的信息,并返回选单。
Alter()的功能:修改某人的信息,如果未找到要修改的人,则提示通讯录中没有此人的信息,并返回选单。
Delete()的功能:删除某人的信息,如果未找到要删除的人,则提示通讯录中没有此人的信息,并返回选单。
List()的功能:显示通讯录中的所有记录。
Save()的功能:保存通讯录中的所有记录到指定文件中。
Load()的功能:从指定文件中读取通讯录中的记录。

4、哈夫曼编码/译码器
【问题描述】
设计一个哈夫曼编码/译码系统,对一个文本文件中的字符进行哈夫曼编码,生成编码文件(压缩文件,后缀名.cod);反过来,可将一个压缩文件译码还原为一个文本文件(.txt)。
【基本要求】
(1) 输入一个待压缩的文本文件名, 统计文本文件中各字符的个数作为权值,生成哈夫曼树;
(2) 将文本文件利用哈夫曼树进行编码,生成压缩文件(后缀名cod),
(3) 输入一个待解压的压缩文件名称,并利用相应的哈夫曼树将编码序列译码;
(4) 显示指定的压缩文件和文本文件;
(5) 界面友好,易与操作。采用菜单方式进行选择。
【选做内容】
(1) 把哈夫曼编码用二进制位紧缩到一个变量中,利用位运算进行真正的数据压缩,并求压缩比。
(2) 显示哈夫曼树;
(3) 使用汉字显示。

不要为已消尽之年华叹息,必须正视匆匆溜走的时光。 ——布莱希特

5、二叉树遍历算法集成
功能要求:
(1) 界面友好,易于操作。可采用菜单或其它人机对话方式进行选择。
(2) 实现各种二叉树的遍历。包括先序遍历、中序遍历、后序遍历的递归或非递归算法。
(3) 要求能查找任一结点在某种遍历序列中的前驱和后继。
(4) 演示程序以人机对话的形式进行。每次测试完毕正确显示各种遍历序列。
在上交资料中请写明:存储结构、基本算法(可以使用程序流程图)、源程序、测试数据和结果、算法的时间复杂度、另外可以提出算法的改进方法;

6、航班

信息的查询与检索
功能要求:
(1)界面友好,易于操作。可采用菜单或其它人机对话方式进行选择。
(2)实现对飞机航班信息进行排序与查找。可按航班的航班号、起点站、到达站、起飞时间以及到达时间等信息进行查询。每个航班记录包括八项:航班号、起点站、到达站、班期、起飞时间、到达时间、飞机型号以及票价。除了票价为数值型外,其它的均定义为字符串。
航班号 起点站 终点站 班期 起飞时间 到达时间 飞机型号 票价 CA1544 合肥 北京 1.3.5 1055 1240 733 960 MU5341 上海 广州 每日 1420 1615 M90 1280 CZ3869 重庆 深圳 2.4.6 0855 1035 733 1010
7、学生成绩管理系统(图书管理系统、个人账簿管理系统)
功能要求:
(1)界面友好,易于操作。可采用菜单或其它人机对话方式进行选择。
(2)实现对学生成绩信息进行排序与查找。可按学生学号、姓名等信息进行查询。每个学生信息包含:学号,姓名,班级,语文,数学,英语,物理,化学等项。学生信息的存储结构可以选择顺序结构,也可以选择链式结构。

8、表达式求值
功能要求:
当用户输入一个合法的表达式后,能够返回正确的结果。能够计算的运算符包括:加、减、乘、除、括号;能够计算的数要求在实数范围内。能执行多重括号嵌套运算。对于异常表达式给出错误提示。(要求使用静态栈数据结构。)

9、飞机订票系统
功能要求:
(1)录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)
(2)查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;
(3)订票:(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果该航班已经无票,可以提供相关可选择航班;
(4)退票: 可退票,退票后修改相关数据文件;客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。
(5)修改航班信息:当航班信息改变可以修改航班数据文件

10、多项式运算
功能要求:
(1)输入并建立多项式;
(2)输出多项式,输出形式为整数序列n,c1,e1,c2,e2,......,cn,en,其中n是多项式的 项数,ci和ei分别是第i项的系数和指数,序列按指数降序排列;
(3)多项式a和b相加,建立多项式a+b;输出相加的多项式
(4)多项式a和b相减,建立多项式a-b。输出相加的多项式
(5)用带表头结点的单链表存储多项式。

11、猴子选大王
问题描述:
n只猴子要选大王,选举方法是:所有猴子按1,2,...,n编号围坐一圈,

从第1号开始按1,2,...,m报数,凡报到m号的退出圈外,如此循环报数,直到圈内剩下一只猴子时,这只猴子就是大王。
基本要求:
分别选择顺序表和单向循环链表作为存储结构模拟整个过程,并依次输出出列的各猴子的编号和最终所选出猴王的编号。

12、停车场管理
问题描述:
设停车场是一个可以停放n辆汽车的狭长通道,且只有一个大门可以供车辆进出。车辆按到达停车场时间的早晚依次从停车场最里向大门口处停放(最先到达的第一辆车放在停车场的最里面)。如果停车场已放满n辆车,则后来的车只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排在便道上的第一辆车就进入停车场。停车场内如有某辆车要开走,在它之后进入停车场的车都必须先退出停车场为它让路,待其开出停车场后,这些车辆再依原来的次序进场。每辆车在离开停车场时,都应根据它在停车场内停留的时间长短交费。如果停留在便道上的车未进停车场就要离去,允许其离去,不收停车费,并且仍然保持在便道上等待的车辆次序。编制一程序模拟该停车场的管理。
提示:
停车场采用栈式结构,停车场外的便道采用队列结构(即便道就是等候队列)。

13、文本编辑器
功能要求:运用链表与数组来处理字符串的各项操作。如插入,删除,查找,替换,显示等等。
提示:对于自定义的文本文件"*.txt",其每一行表示一个结点用单链表来实现,可以进行一行的修改,删除,添加等;每一行中的字符可用一维数组来存储,这样可以利用数组的特性方便地进行插入,删除,替换,甚至可以进行排序操作!

14、迷宫问题
问题描述:
在迷宫中求从入口到出口的一条简单路径。
提示:
迷宫用一个二维字符数组maze来表示,用x表示纵坐标,y表示横坐标。
(1)定义探索迷宫的四个方向:RIGHT为向右,DOWN向下,LEFT向左,UP向上,用Switch语句根据当前的位置坐标来判断下一步要探索的方向求出下一步要走的位置坐标。
(2) 探索迷宫的四个方向的坐标表示:RIGHT(x,y+1), DOWN(x+1,y), LEFT(x,y-1), UP(x-1,y)。
(3)对每个方向探索时,用0表示可通过,用1表示不能通过是障碍,对探索过的位置加以标记。把每一个可以通过的位置坐标放入栈中,最后打印输出路径。
(4)根据二维字符数组和加标记的位置坐标,输出迷宫的图形。

15、电梯模拟运行
问题描述:
模拟我校九层教学楼的电梯系统。该楼有一个自动电梯,能在每层停留。九个楼层由下至上依次称为第一层、第二层、......第九层,其中第一层是大楼的进

出层,即是电梯的"本垒层",电梯"空闲"时,将来到该层候命。
乘客可随时地进出于任何层。对于每个人来说,他有一个能容忍的最长等待时间,一旦等候电梯时间过长,他将放弃。
模拟时钟从0开始,时间单位为0.1秒。人和电梯的各种动作均要消耗一定的时间单位(简记为t),比如:有人进出时,电梯每隔40t检测一次,若无人进出,则关门;关门和开门各需要20t;每个人进出电梯均需要25t;如果电梯在某层精致时间超过300t,则驶回1层候命。
基本要求:
按时序显示系统状态的变化过程,即发生的全部人和电梯的动作序列。
(1)用系统计时,每当有新的动作要输入时要暂停计时,等输入完成后即可继续计时。
(2)输入各个动作,最后,输入完毕后,可以保存所有动作序列,并有序输出。

四、上交作业及成绩评定
1、上交要求
上交设计报告和相关光盘。其中设计报告要以打印文稿的形式上交。光盘内容包括程序源码设计报告的电子文档。整个班级的设计均刻在一张光盘上。(上交时每人交一份,文件夹的取名规则为:"学号 姓名",如"200711111 王文"。该文件夹下至少包括:"源代码"、"课程设计报告"、"可执行文件"。由学习委员收集刻盘按规定时间统一上交)。
2、评分标准
根据完成任务的情况(必须进行系统演示)、课程设计报告书的质量和课程设计过程中的工作态度等按照30%、50%、20%加权综合打分。成绩评定实行优秀、良好、中等、及格和不及格五个等级。上机程序检查未通过者、无设计报告者以及严重抄袭他人设计者,成绩为不及格。




数据结构课程设计任务书----计2007-1




1
/7




不要为已消尽之年华叹息,必须正视匆匆溜走的时光。 ——布莱希特

相关文档
最新文档