课程设计是数据结构课程的一个综合实践练习,是有别于课程实验的一个独立实践教学环节。课程设计一般在课程结束后进行,教学时数为1周。具体要求如下:
1、结合实际问题进一步理解和深化课程理论知识,做到理论与实际相结合。
2、能对实际问题进行分析和抽象,并进行数据结构设计和算法设计,具有初步的分析问题和解决问题的能力。
3、了解软件工程的理论与方法,初步掌握软件开发过程中的需求分析、系统设计、编码、测试等基本方法和技能。
4、进一步强化编程训练,提高程序设计能力。
5、设计内容要有一定的深度和难度,达到一定工作量,**量不低于500行。
课程设计的主要工作如下:
1、问题定义与需求分析:根据设计题目的要求,对问题进行分析,确定系统的功能需求和性能需求。
2、数据结构与算法设计:对问题描述中涉及的数据对象定义相应的数据结构,包括逻辑结构、存储定义和主要操作。对主要算法要进行时间和空间复杂度分析。
3、概要设计:采用面向对象方法设计软件结构,定义类及类之间的关系。要求系统结构合理、易于实现。
4、详细设计:对数据结构和基本操作做进一步的求精,写出数据存储定义,用程序流程图或伪码对算法进行描述。
5、编码与测试:用c++编程实现系统,并设计测试用例对系统进行测试,修改程序中的错误,形成格式和风格良好的源程序清单。
6、设计结果分析:对系统应用效果进行分析,评价系统的先进性、实际应用价值及在在的问题。
7、撰写课程设计报告。
课程设计考核内容包括设计作品和设计报告两个部分。设计作品包括可运行的源程序(刻录成光盘),系统使用说明,主要程序**(打印附在课程报告内)。 课程设计报告主要报告系统分析、设计和实现过程,内容如下:
1、问题定义及设计要求;
2、主要设计内容:详细报告课程设计中所做的主要工作,包括系统分析、概要设计、数据结构设计、算法设计及模块设计和编程及测试等。
3、总结与体会:写出本次课程设计的主要创新点及存在的问题。
4、参考文献:列出所参考的主要文献。
5、小组成员及分工。
课程设计成绩分两部分,设计报告占50%,设计作品占50%。评价因素主要有:
1、知识点覆盖范围及运用能力;
2、数据结构设计与算法设计能力;
3、系统规模(**行数);
4、数据存储方式;
5、人机交互(用户体验或评价)
冬季短学期,第19周周一开题,第19周周四中期检查,下学期开学第一天课程设计答辩。19周安排课程组老师在指定地点值班辅导。
问题描述】设计并实现一个能够对学生信息以及其成绩信息进行管理的系统。其中学生信息包括:学号、姓名、年龄、性别;课程成绩信息包括:
课程号、课程名、成绩、任课教师。能够根据学生信息和成绩信息对数据进行插入、删除、更新、查询、排序、统计等操作。
基本要求】1)对系统用到的数据要从能够文件中读取;
2)系统中的排序操作至少要用到快速排序、堆排序和归并排序中的两种排序方法;
3)系统中查找过程至少用到两种查找方法。
知识点】1)线性表;
2)排序算法;
3)查找算法。
问题描述】图书管理基本业务活动包括:对一本书进行采编入库、清除库存、借阅和归还等。试设计一个图书管理系统,将上述业务活动借助于计算机系统完成。
基本要求】1)每种书的登记内容至少包括书号、书名、作者、现存量和总库存量等5种。
2)系统应实现的操作及功能定义如下:
1)采编入库:新购入一种书,经分类和确定书号后登记到图书账目中去。如果这种书在账目中已有,则只将总库存量增加;
2)清除库存:某种书已无保留价值,将它从图书帐目中注销;
3)某种书的现存量大于零,则借出一本,登记借阅者的图书证号和归还期限;
4)归还:注销对借阅者的登记,改变该书的现存量。
3)扩展内容:用b树对书号进行索引,以获得高的查找效率。
知识点】1)线性表;
2)查找算法;
3)b树。
问题描述】设计一种编码,让使用频率高的字符的编码尽可能的短,并且要求一字符的编码不能与另一个字符的编码的前一部分相同。把每个叶子的使用频率作为权,构造哈夫曼树。然后能够通过字符和他的权值来构造哈夫曼编码,并且能够通过编码相反的过程来实现哈夫曼的译码功能。
基本要求】1)能够通过键盘或者纯文本文件读入字符集的大小n,以及n个字符和权值来建立哈夫曼树,并且把建立好的哈夫曼树存入到中去。
2)利用已经建立好的哈夫曼树,对文件中的正文进行编码,将结果存入到文件中。
3)利用已经建立好的哈夫曼树将中的哈夫曼编码进行译码,结果存入到中。
4)能够按照垂直输出二叉树的方式,将存储在纯文本文件中的哈夫曼树垂直输出。并且在打印哈夫曼编码是,要求字符与编码之间是一一对应的。
实现提示】1)在程序运行时,能够出现一个主选择菜单,用户能够自主选择功能:建立哈夫曼树;对哈夫曼树进行编码、译码等功能。
2)在建立哈夫曼树时,用到文本文件的读取时,需要用到头文件“fstream”来对文本文件进行处理。
关键技术与知识点】
1)优先级队列;
2)哈夫曼树;
3)啥夫曼编码。
问题描述】八皇后问题是一个古老而著名的问题,是回溯算法的典型例题。问题描述如下:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。
基本要求】1)在8×8格的国际象棋上摆放八个皇后。
2)任意两个皇后不能处于同一列中。
3)任意两个皇后不能处于同一行中。
4)任意两个皇后不能处于对角线中。
5)程序中包含递归和非递归两种算法。
实现提示】最深层的叶子结点才有可能是合法的布局。深度优先遍历这棵“状态树”,寻找这些叶子便是求解过程。
1)用三个一维数组a、b、c记录棋盘占用情况,称为状态数组,状态数组的初始值为0,表示棋盘上还没有皇后。如果一个皇后占据了某一位置(x0,y0)令a[x0]=b[x0+y0]=c[x0-y0]=1,那么下一个皇后能够占据另一个位置(x1,y1)的前提是a[x1]=b[x1+y1]=c[x1-y1]=0.
2)作为数组下标,x和y的取值范围是0~7,因此x+y和x-y的取值范围分别为0~14和-7~7,整个取值范围是-7~14。按照习惯,数组下标从0开始,这就需要加7,使下标范围等价的转换为0~21,数组a、b、c的长度为22.原来的数组元素a[x]、b[x+y]、c[x-y]现在分别等价于a[x+7]、b[x+y+7]、c[x-y-7]。
3)利用长度为8的一维数组y记录皇后的位置,如果y[y]=x(0<=y<8)表示皇后占据了第y行第x列。
4)求解过程就是深度优先遍历。如果叶子是合法的布局,就输出记录的结果。然后回溯,在回到上一层递归之前,要把状态数组在当前位置上的值恢复为0。
知识点】1)树的遍历;
2)递归与非递归算法;
3)栈与队列。
问题描述】以一个m*n的长方阵表示迷宫,如图1所示,阴影部分表示此路不能,空白部分表示此路可行。规定每次只能走上下左右相邻的一格。设计一个c++程序,求出从入口到出口所有路径。
基本要求】1)迷宫的规格(即行数与列数)、状态设置(即各方格能否通行的状态)、入口和出口的位置,均应由输入随机确定。
2)求得的路径,应该以从入口到出口的路径上的各个方格的坐标的线性序列输出。当无通路时,应该报告无路径的信息。
3)扩展内容:求出从入口到出口的最短路径。
实现提示】1)将迷宫转换为图,即把迷宫中的空白看作图的顶点,空白的上下左右邻接关系看作图的无向边。图的顶点存储迷宫空白坐标。这样图1所示的迷宫可以转换成图2所示的图。
迷宫求解问题可以转换为图的遍历问题。
2)存储结构:迷宫可以采用二维数组maze[表示。row与col分别表示迷宫的行数与列数。
而maze[i][j]表示迷宫中第i行第j列的一个方格,用maze[i][j]=0表示该方格可以通行,用maze[i][j]=1表示该方格不可以通行。可在迷宫的四周加一圈障碍,这样可以保证从任一顶点出发,都可以有4个方向的选择。
3)可以采用递归算法或非递归算法求出所有路径。非递归算法需要借助栈保存迷宫搜索程中已走过的路径信息,以便在遇到障碍时沿原路返回,在搜索结束后输出栈中保存的最终路径。
4)求迷宫最短路径可以采用图的广度优先搜索遍历算法,这时需要采用队列作为辅助数据结构。
知识点】1)图的遍历;
2)单源最短路径;
3)递归与非递归算法;
4)栈与队列。
问题描述】排序是一个将记录的无序序列调整成为一个有序序列的过程。排序算法是计算机程序设计中的重要过程,不同的排序算法性能各有不同。在程序中,我们通过随机函数产生规模不同的随机整型数组,然后分别让不同的排序算法来从小到大进行排序。
通过排序时间和排序的交换次数上对不同的排序算法进行性能分析。
基本要求】1)每种排序算法在同一规模的数组测试中使用的原始数据是相同的。例如:不同排序算法对一个含有100个元素的无序数组进行排序时,他们的无序序列是相同的。
2)对用于测试的随机数组规模不少于100个元素,其待测排序数组不少于5组。
3)对不同的排序算法要求记录排序所需执行时间和移动次数。
4)对以下排序算法进行性能分析,尽量采用结构化程序设计方法,要求对各个模块的功能及参数作必要的说明。(直接插入排序,折半插入排序,希尔排序,起泡排序,快速排序,直接选择排序,堆排序(加黑的着重要求),树型选择排序,归并排序以及基数排序)
实现提示】1)通过在程序中插入计数器来实现排序算法中对移动次数的记录。
数据结构课程设计指导书
数据结构。课。程。设。计。指。导。书。目录。一 课程设计的基本任务3 二 课程设计的基本要求3 三 课程设计的基本步骤和方法4 四 课程设计说明书 含报告的书写规范5 五 附录 课程设计大纲等内容13 一 课程设计的基本任务。数据结构是一门涉及多门课程的课程,难度较大,需要较好的c语言的程序设计和调...
数据结构课程设计指导书
数据结构。课。程。设。计。指。导。书。一 课程设计的基本任务3 二 课程设计的基本要求3 三 课程设计的基本步骤和方法4 四 课程设计说明书 含报告的书写规范5 五 附录 课程设计大纲等内容13 一 课程设计的基本任务。数据结构是一门涉及多门课程的课程,难度较大,需要较好的c语言的程序设计和调试能力...
数据结构课程设计指导书
指导书。信息工程学院计算机科学与技术专业。2013年12月。数据结构课程设计 指导书。一 课程设计题目与要求。根据课程设计题目规模,要求每个题目3人一组。分组规则如下 按照学号顺序每3人编为一组 或者自由组合 一经确定不得随意调换,题目由各组选派代表抽签确定,设计题目不得更换。选题一 教学计划编制问...