数据结构课程实习大纲

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《数据结构与算法》课程设计大纲
(一)课程设计教学目的及基本要求
1、了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;
2、初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;
3、提高综合运用所学的理论知识和方法独立分析和解决问题的能力;
4、训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。

(二)课程设计内容及安排
1、问题分析和任务定义。

根据设计题目的要求,充分地分析和理解问题,明确问题要求做什么?(而不是怎么做?)限制条件是什么?
2、逻辑设计。

对问题描述中涉及的操作对象定义相应的数据类型,并按照以数据结构为中心的原则划分模块,定义主程序模块和各抽象数据类型。

逻辑设计的结果应写出每个抽象数据类型的定义(包括数据结构的描述和每个基本操作的功能说明),各个主要模块的算法,并画出模块之间的调用关系图。

3、物理设计。

定义相应的存储结构并写出各函数的伪码算法。

在这个过程中,要综合考虑系统功能,使得系统结构清晰、合理、简单和易于调试,抽象数据类型的实现尽可能做到数据封装,基本操作的规格说明尽可能明确具体。

详细设计的结果是对数据结构和基本操作作出进一步的求精,写出数据存储结构的类型定义,写出函数形式的算法框架。

4、程序编码。

把详细设计的结果进一步求精为程序设计语言程序。

同时加入一些注解和断言,使程序中逻辑概念清楚。

5、程序调试与测试。

采用自底向上,分模块进行,即先调试低层函数。

能够熟练掌握调试工具的各种功能,设计测试数据确定疑点,通过修改程序来证实它或绕过它。

调试正确后,认真整理源程序及其注释,形成格式和风格良好的源程序清单和结果。

6、结果分析。

程序运行结果包括正确的输入及其输出结果和含有错误的输入及其输出结果。

算法的时间、空间复杂性分析。

7、编写课程设计报告。

(具体格式参见附录课程设计报告格式。


(三)课程设计考核方法及成绩评定
课程设计结束时,要求学生写出课程设计报告(附源程序),可运行的软件系统。

课程设计成绩分两部分,设计报告占30%,设计作品占70%。

(四)课程设计注意事项
1、课程设计报告要求
按格式要求完成实习报告,每人用A4纸打印课程设计报告(源代码可不打印),此外,请学习委员将所有同学的源代码收齐后刻在一张光盘上,光盘上分别为每位同学的资料建一个文件夹(名为“班学号姓名”,如-01-XXX),其中存入该同学课程设计的源程序及课程设计报告的电子文档。

2、下学期开学第一周周一交。

3、第一次上机之前请各位同学对实现题目仔细研究,最好能有自己的思路。

第一次上机时
和指导老师交流对题目的理解。

4、请各位同学自行完成课程设计内容。

如有网上下载或同学间雷同,成绩将以不通过计!!!
5、请各位同学把实习题目当作产品来完成。

追求完善,不要应付老师检查,程序要求有良
好的结构及编码风格,有必要的注释。

6、为了减少调试时间,可以把测试数据及操作都使用文件存储,也可在“项目属性”中指定
参数。

7、必须在机房完成实习。

《数据结构与算法》课程设计题目
1、软件压缩/解压缩软件Szip(Huffman算法及应用)
【问题描述】
利用哈夫曼编码进行对已有文件进行重新编码可以大大提高减小文件大小,减少存储空间。

但是,这要求在首先对一个现有文件进行编码行成新的文件,也就是压缩。

在文件使用时,再对压缩文件进行解压缩,也就是译码,复原原有文件。

试为完成此功能,写一个压缩/解压缩软件。

【基本要求】
一个完整的系统应具有以下功能:
(1)压缩准备。

读取指定被压缩文件,对文件进行分析,建立哈夫曼树,并给出分析结果(包括数据集大小,每个数据的权值,压缩前后文件的大小),在屏幕上输出。

(2)压缩。

利用已建好的哈夫曼树,对文件进行编码,并将哈夫曼编码及文件编码后的数据一起写入文件中,形成压缩文件(*.Haf)。

(3)解压缩。

打开已有压缩文件(*.Haf),读取其中的哈夫曼编码,构建哈夫曼树,读取其中的数据,进行译码后,写入文件,完成解压缩。

(4)程序使用命令行方式运行
压缩命令:SZip A Test.Haf 1.doc
解压缩命令:SZip X Test.Haf 2.doc或SZip X Test.Haf
用户输入的命令不正确时,给出提示。

(5)使用面向对象的思想编程,压缩/解压缩、哈夫曼构建功能分别构建类实现。

【提高要求】
(1)基于Windows对话框界面,可选择输入/输出文件名,有压缩进度条显示。

(2)采用不同的数据集,比较其压缩比,采用最有效的压缩方式。

(3)多个文件的压缩。

(4)试构建程序框架,使其能添加新的压缩/解压缩算法(例如书上LZW压缩算法)。

【测试数据】
约40000字符左右。

示例数据.txt,80K,采用WinRar压缩后为43K;
示例数据.doc,144K,采用WinRar压缩后为52K。

2、灰度图像压缩/解压缩类的实现(动态规划算法的应用)
【问题描述】
灰度图像的像素值范围在[0,255]之间,如果采用一个像素一个字节的存储方式,势必会造成空间的浪费。

如果采用一定的无损压缩算法,可以大大提高减小文件大小,减少存储空间。

本课题要求针对提供的256色(8位)位图数据,采用教材上第15章动态规划中图像压缩算法(图像分段合并的思想),设计一个类,实现灰度位图数据的压缩和解压过程。

【基本要求】
一个完整的灰度图像类应具有以下功能:
(1)对8位位图数据的读功能,提供ReadBitmap方法。

ReadBitmap方法有一个参数为输入位图文件名(*.bmp),它能解析8位位图文件格式,获取位图BITMAPINFOHEADER信息和每个像素的数据信息,放入内存中。

(2)对8位位图数据的写功能,提供WriteBitmap方法。

WriteBitmap方法有一个参数为输出位图文件名(*.bmp),它能将内存中的位图文件信息,按照位图格式,写到位图文件中保存。

(3)灰度图像压缩功能,提供Compress方法。

Compress方法有一个参数为输出压缩文件名(*.img) ,它能将已经装入到内存中的8位位图信息,进行压缩,形成段标题和以变长格式存储的像素的二进制串,写入到文件中(注意:Img文件格式自行定义)。

(4)灰度图像解压功能,提供UnCompress方法。

UnCompress方法有一个参数为输入压缩文件名(*.img),它能解析Img文件格式,将其在内存中解压缩为8位位图信息,以便输出为位图文件。

(5)以上是该灰度图像类基本的四个方法,在实现时可根据需要扩充其他方法。

在设计时,要使用面向对象的思想,考虑各个成员的访问权限。

【提高要求】
(1)基于Windows对话框界面,可选择输入/输出文件名,有压缩进度条显示。

(2)采用不同的数据集,比较其压缩比,采用最有效的压缩方式。

【测试数据】
数字化.bmp,636*455*8
纹理.bmp,512*512*8
【测试用例】
类的测试用例如下:
CCompressImage Test;
Test. ReadBitmap(“数字化.bmp”); 读原始位图
Test. Compress(“Out.img”); 压缩
Test. UnCompress(“Out.img”); 解压
Test. WriteBitmap(“Out.bmp”); 还原位图信息
测试结果:
可以使用ACDSee打开两幅位图,比较其属性信息及文件大小,验证你所实现的灰度图像类是否做到了无损压缩。

【实现提示】
有关8位的位图格式可以参考MSDN中BITMAPINFOHEADER结构的说明文档,注意其中biBitCount=8的说明。

《数据结构与算法》课程设计报告
学号:
班级序号:
姓名:
指导教师:
成绩:
中国地质大学信息工程学院空间信息工程系
2011年12 月
课程设计报告格式
1.需求规格说明
(<五号宋体>,具体内容:问题描述,求解的问题是什么)
2.总体分析与设计
(1)设计思想:
(<五号宋体>,具体内容:存储结构、主要的算法思想。


(2)设计表示:
(<五号宋体>,具体内容:子程序(过程或函数)的规格说明,通过调用关系图表示它们之间的调用关系。


(3)详细设计表示:
(<五号宋体>,具体内容:主要算法的框架。


3.编码
(<五号宋体>,具体内容:问题是如何解决的,编码过程中的困难与解决方法。

)4.程序及算法分析
(<五号宋体>,具体内容:使用说明、程序运行结果、讨论与分析、改进设想、经验与体会、时空复杂度等。


5.小结
(<五号宋体>,具体内容:经验与体会,或需要改进的地方)
6.附录
(<五号宋体>,部分核心代码)
【参考资料】
1、Sartaj Sahni著,《数据结构、算法与应用》,机械工业出版社
2、殷人昆等编著,数据结构(用面向对象方法与C++语言描述)》,清华大学出版社
3、严蔚敏,吴伟民编著,《数据结构题集》,清华大学出版社
4、严蔚敏,陈文博编著,《数据结构及应用算法》,清华大学出版社。

相关文档
最新文档