课程编号:
课程名称:数据结构 / data structures
周数/学分:1周 / 1学分。
先修课程:c 或 c++
适用专业:计算机科学与技术专业、计算机软件与理论专业。
1. 课程设计的目的。
课程设计是对学生的一种全面的综合训练,是与课堂听讲、自学、练习、上机实习相辅相成的教学环节。课程设计的题目通常比平时练习与上机实习复杂得多,也更接近实际。其目的是使学生深化理解和灵活掌握教学内容,并学会如何把书上学到的知识用于解决实际问题,培养软件工作所需的问题分析、软件设计、算法设计和实际动手编程、调试的能力。
2. 课程设计的内容和要求。
随着计算机技术的发展,软件开发复杂度也日趋增加。应该充分意识到:编制一个10,000行的程序的难度绝不仅仅是一个5,000行程序的两倍,因此,软件开发需要系统的方法。
虽然数据结构课程设计题目的复杂度远不如一个“真正”的软件,但为了培养一个软件工作者所应具备的科学工作方法和作风,我们要求按如下步骤完成课程设计:
1)问题分析和任务定义(需求分析)
课程设计题目的陈述是比较简洁的。在进行设计之前,首先应该充分地分析和理解问题,明确问题要求做什么?限制条件是什么?
请注意:这一步骤强调的是做什么,而不是怎么做。具体方法是:
对问题的描述是对所需完成的任务作出明确的回答,应避开算法和所涉及的数据类型、存储结构。
例如:输入数据的类型、值域以及输入的形式;输出数据的类型、值域及输出形式;若为会话式输入,则应明确结束标志是什么?是否接受非法的输入?对非法输入的反馈信息是什么等。
在这一步骤还应该为调试程序准备好测试数据,测试数据必须包括以下两部分:
a. 用于正确性检测的合法数据。
b. 用于健壮性检测的非法输入数据。
2)数据类型和系统设计。
在这一步骤要求分为逻辑设计和详细设计两步实现。
a. 逻辑设计。
按照以数据结构为中心的原则划分模块,定义主程序模块和各抽象数据类型。如果采用c++实现,可通过c++类模板机制支持泛型数据类型;如果采用c语言实现,则应对问题描述中涉及的操作对象定义相应的数据类型。
c. 详细设计。
定义相应的存储结构,并写出类的说明(c++)成员)函数的伪码算法。
具体要求:在这个过程中,要综合考虑系统功能,使系统结构清晰、合理、简洁和易于调试,抽象的数据类型的实现尽可能做到数据封装,基本操作的规格说明尽可能明确具体。
作为逻辑设计的结果,应写出每个抽象数据类型的定义(包括数据结构的描述和每个基本操作的规格说明),各个主要模块的算法,并画出模块之间的调用关系图。
详细设计的结果是对数据结构和基本操作的规格说明作出进一步的求精,写出数据存储结构的类型定义,按照算法书写规范用类c/c++语言写出函数形式的算法框架。在求精的过程中,应避免陷入语言细节,不必过早地表述辅助数据结构和局部变量(或类的成员变量)。
3) 编码实现和静态检查。
编码是把详细设计的结果进一步求精为程序设计语言程序。程序的每行不超过60个字符。每个函数体,即不计首部和规格说明部分,一般不超过40行,最长不超过60行,否则应该分割成较小的函数。
要控制if语句连续嵌套的深度。其它要求参见参考资料[2]第一篇中的算法书写规范。
如何编写程序才能较快地完成调试是特别要注意的问题。对于编程很熟练的作者,如果基于详细设计的伪码算法就能直接在键盘上输入程序的话,则可以不必用笔在纸上写出编码,而将这一步的工作放在上机准备之后进行,即在上机调试之前直接用键盘输入。
无论你是否写出编码的程序,在上机之前,都必须认真地进行静态检查。多数初学者在编好程序后处于以下两种状态之一:一种是对自己的“精心作品”的正确性确信不疑;另一种是认为上机前的任务已经完成,纠查错误是上机的工作。
这两种态度是极为有害的。事实上,非训练有素的程序设计者,当编写的程序长度超过50行时,极少不含有错误。上机动态调试决不能代替静态检查,否则调试效率是极低的。
静态检查主要有两种方法:一是用一组测试数据手工执行程序(通常应分为模块检查);二是通过阅读或给别人讲解自己的程序而深入全面地理解程序逻辑,在这个工程中再加入一些注解和断言。如果程序中逻辑概念清楚,后者将比前者有效。
4) 程序调试。
上机准备包括以下几个方面:
a. 编译器及其版本。无论采用 c 或 c++完成课程设计,均建议采用支持标准c / c++ 的visual c++编译器(6.0或更高版本)。
b. 程序的项目类型。
visual c++以项目的方式创建应用程序,并支持多种不同类型的项目。建议至少创建win32控制台程序,有一定编程基础的同学,也可创建 windows 应用程序或mfc应用程序。
c. 要特别注意教科书上的类c语言与实际的 c / c++语言之间的差别。
d. 熟悉语言集成环境和程序调试方法,考虑调试方案,设计测试数据并手工得出正确结果。
调试程序时要带一本高级语言教材或手册。调试最好分模块进行,自底向上,即先调试最底层函数。必要时可以另写一个调用驱动程序。
这种表面上麻烦的工作,实际上可以大大降低调试所面临的复杂性,提高调试工作效率。
调试中遇到的各种异常现象往往是预料不到的,此时不应“冥思苦想”,而应动手确定疑点,通过修改程序来证实它或绕过它。调试正确后,认真整理源程序及其注释,打印出带有完整注释的且格式良好的源程序清单和结果。
5)按照软件工程的相关规范撰写课程设计报告书。
三、课程设计进度安排。
四、课程设计说明书要求。
课程设计报告书正文的内容应包括:
1 问题分析和任务定义;
2 开发平台(系统、开发工具、语言的选择):推荐采用 visual c++编译器。
3 数据类型和系统设计(数据结构与模块说明);
4 调试结果与运**况分析;
5 自我评价与总结:
a) 你认为你完成的设计哪些地方做得比较好或比较出色;
b) 什么地方做得不太好,以后如何改正;
c) 从本设计得到的收获(在编写,调试,执行过程中的经验和教训);
d) 完成本题是否有其它的方法(如果有,简要说明该方法);
6 参考文献(按公开发表的规范书写)。
五、课程设计评分标准。
注:优(90-100分)、良(80-89分)、中(70-79分)、及格(60-69分)、
60分以下为不及格。
六、课程设计参考资料。
1]《数据结构——用面向对象方法与c++语言描述(第二版)》,殷人昆编著,清华大学出版社,出版或修订时间:2024年9月。
2]《数据结构(c语言版)》,严蔚敏,吴伟民编著,出版社:清华大学出版社,出版或修订时间:2024年4月。
3]《数据结构习题集(c语言版)》,严蔚敏,吴伟民,米宁编著,清华大学出版社,出版或修订时间:2024年2月。
起草人:杨克俭。
数据结构课程设计指导书
数据结构。课。程。设。计。指。导。书。目录。一 课程设计的基本任务3 二 课程设计的基本要求3 三 课程设计的基本步骤和方法4 四 课程设计说明书 含报告的书写规范5 五 附录 课程设计大纲等内容13 一 课程设计的基本任务。数据结构是一门涉及多门课程的课程,难度较大,需要较好的c语言的程序设计和调...
数据结构课程设计指导书
数据结构。课。程。设。计。指。导。书。一 课程设计的基本任务3 二 课程设计的基本要求3 三 课程设计的基本步骤和方法4 四 课程设计说明书 含报告的书写规范5 五 附录 课程设计大纲等内容13 一 课程设计的基本任务。数据结构是一门涉及多门课程的课程,难度较大,需要较好的c语言的程序设计和调试能力...
数据结构课程设计指导书
指导书。信息工程学院计算机科学与技术专业。2013年12月。数据结构课程设计 指导书。一 课程设计题目与要求。根据课程设计题目规模,要求每个题目3人一组。分组规则如下 按照学号顺序每3人编为一组 或者自由组合 一经确定不得随意调换,题目由各组选派代表抽签确定,设计题目不得更换。选题一 教学计划编制问...