数据结构课程设计.docx
- 文档编号:8324936
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:27
- 大小:249.79KB
数据结构课程设计.docx
《数据结构课程设计.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计.docx(27页珍藏版)》请在冰豆网上搜索。
数据结构课程设计
数据结构与算法
课程设计报告
题目:
学院:
专业班级:
学生姓名:
指导教师:
2016年06月29日
一、课程设计目的及要求
《数据结构与算法分析》课程设计培养计算机专业的学生的算法程序设计能力。
通过上机实验,可以培养学生程序设计的方法和技巧,提高学生编制清晰、合理、可读性好的系统程序的能力,加深对数据结构课程和算法的理解。
使学生更好地掌握数据结构的基本概念、基本原理、及基本算法,具有分析算法、设计算法、构造和开发较复杂算法的基本能力。
要求学生能综合运用《数据结构与算法分析》的相关知识,培养学生上机解决一些与实际应用结合紧密的、规模较大的问题的能力,通过分析、设计、编码、调试等各环节的训练,使学生深刻理解、牢固掌握数据结构和算法设计技术,掌握分析实际问题的能力并提高C语言编程技巧,培养良好的编程风格。
课程设计要求独立完成,题目自选(参考题目见三,也可自拟),但需要老师确认(6月16日前定题),一人一题,要求程序有能采用交互式工作方式的界面进行功能的选择,只能用文件存储数据和处理数据不能使用数据库。
要求在教学周的第18周前完成。
二、课程设计步骤
随着计算机性能的提高,它所面临的软件开发的复杂度也日趋增加。
然而,编制一个10000行的程序的难度绝不仅仅是一个5000行的程序的两倍,因此软件开发需要系统的方法。
一种常用的软件开发方法,是将软件开发过程分为分析、设计、实现和维护四个阶段。
虽然数据结构课程中的课程设计的复杂度远不如(从实际问题中提出来的)一个“真正的”软件,但为了培养一个软件工作者所应具备的科学工作的方法和作风,完成课程设计的应有如下的5个步骤:
1.问题分析和任务定义
通常,课程设计题目的陈述比较简洁,或者说是有模棱两可的含义。
因此,在进行设计之前,首先应该充分地分析和理解问题,明确问题要求做什么,限制条件是什么。
注意:
本步骤强调的是做什么,而不是怎么做。
对问题的描述应避开算法和所涉及的数据类型,而是对所需完成的任务作出明确的回答。
例如:
输入数据的类型、值的范围以及输入的形式;输出数据的类型、值的范围及输出的形式;若是会话式的输入,则结束标志是什么,是否接受非法的输入,对非法输入的回答方式是什么等等。
这一步还应该为调试程序准备好测试数据,包括合法的输入数据和非法形式输入的数据。
2.数据类型和系统设计
在设计这一步骤中需分逻辑设计和详细设计两步实现。
逻辑设计指的是,对问题描述中涉及的操作对象定义相应的数据类型,并按照以数据结构为中心的原则划分模块,定义主程序模块和各抽象数据类型;详细设计则为定义相应的存储结构并写出各过程和函数的伪码算法。
在这个过程中,要综合考虑系统功能,使得系统结构清晰、合理、简单和易于调试,抽象数据类型的实现尽可能做到数据封装,基本操作的规格说明尽可能明确具体。
作为逻辑设计的结果,应写出每个抽象数据类型的定义(包括数据结构的描述和每个基本操作的规格说明),各个主要模块的算法,并画出模块之间的调用关系图。
详细设汁的结果是对数据结构和基本操作的规格说明作出进一步的求精,写出数据存储结构的类型定义,按照算法书写规范用类C语言写出过程或函数形式的算法框架。
在求精的过程中,应尽量避免陷入语言细节,不必过早表述辅助数据结构和局部变量。
3.编码实现和静态检查
编码是把详细设计的结果进一步求精为程序设计语言程序。
程序的每行不要超过60个字符。
每个过程(函数)体,即不计首部和规格说明部分,一般不要超过40行。
最长不得超过60行,否则应该分割成较小的过程(函数)。
要控制语句连续嵌套的深度。
如何编写程序才能较快地完成调试是特别要注意的问题。
对于编程很熟练的读者,如果基于详细设计的伪码算法就能直接在键盘上输入程序的话,则可以不必用笔在纸上写出编码,而将这一步的工作放在上机准备之后进行,即在上机调试之前直接用键盘输入。
然而,不管你是否写出编码的程序,在上机之前,认真的静态检查却是必不可少的。
多数初学者在编好程序后处于以下两种状态之一:
一种是对自己的“精心作品”的正确性确信不疑;另一种是认为上机前的任务已经完成,纠查错误是上机的工作。
这两种态度是极为有害的。
事实上,非训练有素的程序设计者编写的程序长度超过50行时,极少不含有除语法错误以外的错误。
上机动态调试决不能代替静态检查,否则调试效率将是极低的。
静态检查主要有两种方法,一是用一组测试数据手工执行程序(通常应先分模块检查);二是通过阅读或给别人讲解自己的程序而深入全面地理解程序逻辑,在这个过程中再加入一些注解和断言。
如果程序中逻辑概念清楚,后者将比前者有效。
4.上机准备和上机调试
上机准备包括以下几个方面:
(1)高级语言文本(体现与编译程序用户手册)的扩充和限制。
例如,有些C编译程序限制for语句的循环控制变量为局部简单变量等。
(2)如果用C语言,要特别注意平时惯用的类C语言与标准C语言之间的细微差别。
(3)熟悉机器的操作系统和语言集成环境的用户手册,尤其是最常用的命令操作,以便顺利进行上机的基本活动。
(4)掌握调试工具,考虑调试方案,设计测试数据并手工得出正确结果。
“磨刀不误砍柴工”。
计算机各专业的学生应该能够熟练运用高级语言的程序调试器DEBUG调试程序。
上机调试程序时要带一本高级语言教材或手册。
调试最好分模块进行,自底向上,即先调试低层过程或函数。
必要时可以另写一个调用驱动程序。
这种表面上麻烦的工作实际上可以大大降低调试所面临的复杂性,提高调试工作效率。
在调试过程中可以不断借助DEBUG的各种功能,提高调试效率。
调试中遇到的各种异常现象往往是预料不到的,此时不应“苦思具想”,而应动手确定疑点,通过修改程序来证实它或绕过它。
调试正确后,认真整理源程序及其注释,印出带有完整注释的且格式良好的源程序清单和结果。
5.总结和整理实习报告
注意:
在实践中,有时候可能想检验自己的想法,这时可以上机尝试一下,看看自己的思路是否可行。
三、课程设计内容
参考题目:
1.二叉树的应用-哈夫曼树(电文的编码和译码)
2.运动会分数统计
3.学生成绩管理系统
4.简易客房管理系统
5.其他类型管理系统的题目
①人事档案管理系统
②图书管理系统
③进销存货物管理系统
④职工工资管理系统
6.稀疏矩阵运算器
7.长整数的四则运算
8.校园导游咨询
10.停车场管理
11其余题目:
(必须事先得到指导老师允许)
程序经常需要输入输出,所以可以在考虑采用什么样的数据结构时,考虑如何进行数据的输入和输出,可以把输入和输出分别实现为一个函数。
实现了输入输出功能,也为以后程序的调试和测试带来方便。
四、课程设计报告
课程设计报告统一用A4纸打印,并装订成册,封面格式参见所附文档,正文格式要求参见附录1。
课程设计报告内容具体要求如下:
1.课程设计实验报告内容总体要求
1)给出问题分析过程
根据自身对课程的掌握程度,充分分析和理解问题的设计要求,给出较为明确、简洁的设计思路。
2)给出数据结构描述
根据要解决的问题,考虑各种可能的数据结构类型,从中选择一种较为有效的方法,并写出采用的数据结构描述及其功用。
3)给出相应算法设计
根据问题分析的结果,并确立好所选的数据结构描述,然后写出合理的算法设计过程,特别要注意所使用函数间的调用与被调用关系。
4)给出详细程序清单
根据算法的内容,用计算机语言(如C语言)编写完整的程序,并将程序在机器上反复调试,直到结果正确为止,程序要求附上详细注解。
特别要注意算法与程序的区别以及上下层模块间的接口处理。
5)给出程序运行结果
利用典型的测试用例,将数据输入到程序执行过程中去,记下执行过程中屏幕显示情况与相应结果。
2.具体内容要求:
报告包括以下7个内容:
1)以无歧义的陈述说明程序设计的任务,强调的是程序要做什么?
并明确规定:
(1)输入的形式和输入值的范围;
(2)输出的形式;
(3)程序所能达到的功能;
(4)测试数据:
包括正确的输入及其输出结果和含有错误的输入及其输出结果。
2)概要设计
说明本程序中用到的所有抽象数据类型的定义、主程序的流程以及各程序模块之间的层次(调用)关系。
3)详细设计
实现概要设计中定义的所有数据类型,对每个操作只需要写出伪码算法;对主程序和其他模块也都需要写出伪码算法(伪码算法达到的详细程度建议为:
按照伪码算法可以在计算机键盘直接输入高级程序设计语言程序);画出函数和过程的调用关系图。
4)调试分析
内容包括:
(1)调试过程中遇到的问题是如何解决的以及对设计与实现的回顾讨论和分析;
(2)算法的时空分析(包括基本操作和其他算法的时间复杂度和空间复杂度的分析)
(3)改进设想;
(4)经验和体会等。
5)用户使用说明
说明如何使用你编写的程序,详细列出每一步的操作步骤。
6)测试结果
列出你的测试结果,包括输入和输出。
这里的测试数据应该完整和严格,最好多于需求分析中所列。
7)附录
带注释的源程序,如果提交程序,可以只列出程序文件名的清单。
五、提交材料
课程设计完成后的下一周的周一上午,也就是2012年6月28-29日,提交如下资料并答辩:
1.课程设计报告。
课程设计报告总体上主要包括以下几个部分:
1)封面
2)考核方式与评分标准(见六)
3)目录
4)课程设计报告正文
5)使用说明
2.完整的软件系统
最终必须向指导老师提交完整的程序源代码(.c和.cpp以及.h为后缀的文件)、数据文件以及使用说明文件等。
源代码文件要特别注意编程规范、代码风格,关键代码需有合理的注释,不含任何无用代码;数据文件内要求有一定数量的“真实”数据(如对于记录文件,需要有8条以上记录);使用说明文件的第一行,需要给出设计者的学号、姓名,后面为其它说明。
课程设计项目源代码和相关数据,放到一个目录下,目录名以学号加姓名方式命名。
六、考核方式与评分标准(下页单独打印)
综合实践1评分表
班级
姓名
指导教师
题目:
评分标准
评分标准
分数权重
评分的依据
得分
A
C
选题
10
选题符合大纲要求,题目较新颖,工作量大
选题基本符合大纲要求,工作量适中
工作态度
10
态度端正,能主动认真完成各个环节的工作,不迟到早退,出勤好。
能够完成各环节基本工作,出勤较好。
存储结构、算法描述
20
能正确选择存储结构,定义准确,算法流程图或类C语言描述的算法准确无误
能正确选择存储结构,算法流程图或类C语言描述的算法基本准确
独立解决问题的能力
10
具有独立分析、解决问题能力,有一定的创造性,能够独立完成软件的设计与调试工作,程序结构清晰,逻辑严谨,功能完善。
有一定的分析、解决问题能力。
能够在老师指导下完成软件的设计与调试工作,程序功能较完善。
答辨问题回答
20
能准确回答老师提出的问题
能基本准确回答老师提出的问题
程序运行情况
10
程序运行正确、界面清晰,测试数据设计合理。
程序运行正确、界面较清晰,能给出合适的测试数据。
综合实践报告
20
格式规范,层次清晰,设计思想明确,解决问题方法合理,体会深刻。
格式较规范,设计思想基本明确,解决问题方法较合理。
总分
指导教师(签字):
注:
介于A和C之间为B级,低于C为D级和E级。
按各项指标打分后,总分在90~100为优,80~89为良,70~79为中,60~69为及格,60分以下不及格。
七、参考文献
1.严蔚敏,吴伟民.数据结构(C语言版).北京:
清华大学出版社,1997.4
2.严蔚敏,吴伟民,米宁.数据结构题集(C语言版).北京:
清华大学出版社,1999.2
附录1齐齐哈尔大学数据结构课程设计说明书(报告)撰写规范
(一)正文:
汉字应采用《简化汉字总表》规定的简化字,并严格执行汉字的规范。
所有文字字面清晰,不得涂改。
要求文字通顺,语言流畅,无错别字,不得使用铅笔书写。
正文内容层次序号为:
1、1.1、1.1.1……。
正文内容一般为:
1、选题背景:
说明本课题应解决的主要问题及应达到的技术要求;简述本设计的指导思想。
2、方案论证:
说明设计原理并进行方案选择,阐明为什么要选择这个设计方案以及所采用方案的特点。
3、过程(设计或实验)论述:
对设计工作的详细表述。
要求层次分明、表达确切。
4、结果分析:
对研究过程中所获得的主要的数据、现象进行定性或定量分析,得出结论和推论。
5、结论或总结:
对整个研究工作进行归纳和综合。
(二)表格
说明书(报告)的表格可以统一编序(如:
表15),也可以逐章单独编序(如:
表2.5),采用哪种方式应和插图及公式的编序方式统一。
表序必须连续,不得重复或跳跃。
表格的结构应简洁。
表格中各栏都应标注量和相应的单位。
表格内数字须上下对齐,相邻栏内的数值相同时,不能用‘同上’、‘同左’和其它类似用词,应一一重新标注。
表序和表题置于表格上方中间位置,无表题的表序置于表格的左上方或右上方(同一篇论文位置应一致)。
(三)图
插图要精选。
图序可以连续编序(如图52),也可以逐章单独编序(如图6.8),采用哪种方式应与表格、公式的编序方式统一,图序必须连续,不得重复或跳跃。
仅有一图时,在图题前加‘附图’字样。
课程设计中的插图以及图中文字符号应打印,无法打印时一律用钢笔绘制和标出。
由若干个分图组成的插图,分图用a,b,c,……标出。
图序和图题置于图下方中间位置。
(四)公式
说明书中重要的或者后文中须重新提及的公式应注序号并加圆括号,序号一律用阿拉伯数字连续编序(如:
(45))或逐章编序(如(6.10)),序号排在版面右侧,且距右边距离相等。
公式与序号之间不加虚线。
(五)数字用法
公历世纪、年代、年、月、日、时间和各种计数、计量,均用阿拉伯数字。
年份不能简写,如1999年不能写成99年。
数值的有效数字应全部写出,如:
0.50:
2.00不能写作0.5:
2。
(六)软件
软件流程图和原程序清单要按软件文档格式附在说明书(报告)后面,特殊情况可在成绩评定时展示,不附在说明书(报告)内。
(七)工程图按国标规定装订
图幅小于或等于3#图幅时应装订在说明书(报告)内,大于3#图幅时按国标规定单独装订作为附图。
(八)计量单位的定义和使用方法按国家计量局规定执行。
(九)排版与封面要求
1、排版
用word排版,具体格式如下:
版面要求:
页边距:
上2.5cm,下2.5cm,左3cm,右2.5cm;
字体:
正文宋体、小四,章节标题宋体、小三;
行距:
固定值20;
页码:
居中、底部。
2、封面
附录2VisualC++6.0简介
考虑到目前大多数初学者使用的都是PC机和Windows操作系统,我们以VisualC++作为推荐的C++编译器。
1.VisualC++集成开发环境
VisualC++软件包包含了许多独立的组件,如编辑器、编译器、调试器,以及各种各样为开发Windows环境下的C/C++程序而设计的工具。
其中最重要的是一个名为DeveloperStudio的集成开发环境。
DeveloperStudio把所有的VisualC++工具结合在一起,集成为一个由窗口、对话框、菜单、工具栏、快捷键及宏组成的和谐系统,通过该集成环境,程序员可以观察和控制整个开发进程。
1显示了一个典型的DeveloperStudio主窗口。
它分为几个部分:
窗口顶部是菜单和工具栏,左面的一个子窗口是工作区窗口,工作区的右面是编辑子窗口。
最下面是输出子窗口。
值得注意的是,上述各种部件,包括子窗口、菜单栏和工具栏的位置不是一成不变的,可以根据个人的喜好重新安排。
图1 典型的DeveloperStudio窗口
(1)菜单和工具栏
DeveloperStudio中有一个MenuBar(菜单栏,通常停靠在开发环境窗口的顶部),其中的菜单项有File(文件处理)、Edit(编辑功能)、View(查看)、Insert(插入)、Project(项目管理)、Built(编译)、Tools(工具)、Window(窗口)和Help(帮助)等,分别对应一个下拉子菜单。
除菜单栏外,开发环境中还有几个工具栏,一般均放在开发环境的顶部,菜单栏的下方,如Standard(标准工具栏,用于文件管理、编辑和查看等),WizardBar(向导工具栏)和BuildMiniBar(建立工具栏,用于编译、连接等)。
工具栏上有常用命令的图标。
一般来说,工具栏上的命令在菜单中均有对应选项,但工具栏使用更方便,只要用鼠标左键点击工具栏中的相应图标即可调用相应的功能。
开发环境的各种菜单栏和工具栏均为停靠式,可以用鼠标拖动改变它们的位置,除此之外,DeveloperStudio的所有部分几乎都可响应鼠标右键单击而弹出一个上下文相关菜单。
甚至当DeveloperStudio没有打开窗口时,在空白区右击鼠标也会弹出一个菜单,其中含有使窗口可见和调整工具栏是否可见的命令。
在工具栏上除标题栏外的任何地方右击鼠标,同样可以弹出菜单。
在使用集成环境工作时试一试鼠标右键,还会发现许多其他的快捷方式。
(2)DeveloperStudio窗口
除了各种对话框外,DeveloperStudio显示两种类型的窗口,即文档窗口和停靠窗口。
文档窗口是一般的带边框子窗口,其中含有源代码文本或图形文档。
Window子菜单中列出了在屏幕上以平铺方式还是以层叠方式显示文档窗口的命令。
所有其他的DeveloperStudio窗口,包括工具栏和菜单栏,都是停靠式窗口。
开发环境有两个主要的停靠窗口――Workspace(工作区)窗口和Output(输出)窗口。
另外还有一个Debugger(调试器)停靠窗口,只在调试过程中显示。
图2新建一个项目
停靠窗口可以固定在DeveloperStudio用户区的顶端、底端或侧面,或者浮动在屏幕上任何地方。
停靠窗口,不论是浮动着的或是固定着的,总是出现在文档窗口的上面。
这样,就保证了当焦点从一个窗口移到另一个时,浮动的工具栏一直都是可见的。
但这也意味着,文档窗口偶尔会看起来像消失了似的。
例如,如果正在文本编辑器中编辑源代码,此时打开一个占据整个DeveloperStudio用户区的停靠窗口,源代码文档就会消失,它隐藏在新窗口之下。
解决方法是要么关了覆盖的窗口,要么把它拖到不挡眼的地方去。
(3)菜单选项、快捷键和工具栏
DeveloperStudio的许多功能都有不只一种调用方法。
例如,执行一个编译、连接成功的可执行文件,既可通过选择菜单选项Build/Execute.exe完成,也可以直接使用快捷键Ctrl+F5,还可以用鼠标点击BuildMiniBar(编译工具栏)上的相应图标来完成。
一般来说,越是常用的功能,可以调用的方法越多、越方便。
(4)用DeveloperStudio编写和调试简单C++程序
在VisualC++中,C++的程序是存放到以后缀名为.CPP的文件中,系统是通过Projects(工程项目)来管理这些文件的。
所以要编写和运行C++程序,首先必须建立一个Projects。
下面以一个简单的例子来说明如何在Visual集成开发环境编写和调试简单C++程序的步骤:
(1)首先运行并打开DeveloperStudio系统,选择菜单选项File/New中的Projects选项卡。
从卡中选择Win32ConsoleApplication(Win32控制台应用程序)。
(2)为应用项目取一个名字,填写在选项卡右上方的ProjectName(项目名称)处,并检查下面的Location(位置)中列出的路径是否正确。
注意使下面的单选框选择CreateNewWorkspace(即要建立新工作区),然后按下OK按钮。
如图2。
(3)这时会出现ApplicationWizard(应用程序生成向导),提问要生成的项目类型。
选择AnEmptyProject(空项目),按下Finish(结束)键,会弹出一个窗口,显示新项目的有关信息。
检查无误后按OK按钮。
如图3及4
图3确定项目类型 图4项目相关信息
(4)这时屏上会显示一个空项目,并生成一个工作区文件(后缀为.DSW)。
再次选择File菜单的New选项,并选择Files选项卡。
从卡中选择C++SourceFile(C++源程序)。
(5)为程序取一个名字(可与项目名相同,也可以不同)填写在选项卡右边的File处,然后按下OK按钮。
如图5
图5建立文件
(6)这时开发环境右侧的文件编辑窗口中出现了一个空文件,在此可以键入源程序代码。
如图6
(7)程序输入后,应仔细检查一遍,然后就可以编译了。
(8)选择菜单选项Build/Compilegravitation.cpp(其中gravitation为文件名)编译源程序。
稍候片刻,会在Output窗口(通常在屏幕下方)中显示编译结果,如出错信息等(编译错误的处理在下一节介绍)。
如果程序正确,编译结果会生成一个目标文件(后缀为.OBJ)。
(9)目标文件还需通过连接才能生成可执行文件。
选择菜单选项Build/Buildgravitation.exe连接目标文件。
结果显示在Output窗口中。
连接的结果为可执行文件(后缀为.exe)。
以上两步也可以并为一步,即直接使用菜单选项Build/Buildgravitation.exe。
图6代码的编辑界面
生成的可执行文件可以单独运行,也可以在开发环境中直接运行,后一种方法在程序需要反复调试时更加方便。
在集成开发环境中直接运行程序的方法是选用菜单选项Build/Excute.exe。
程序运行结果如图7
图7程序运行结果
2.VisualC++帮助功能
MSDN(MicrosoftDeveloperNetwork)是使用Microsoft开发工具或是以Windows和Internet为开发平台的开发人员的基本参考资料。
通过MSDN所提供的Help资料,可以对VisuanC++和Windows的工作机制有更全面的了解,可以帮助解决开发者遇到的大多数问题。
由于MSDN库为包括VisualC++在内的所有的Visualstudio6.0开发环境工具提供在线帮助,所以它在系统中作为一个应用程序独立运行,并没有同任何单个开发环境结合在一起。
要从VisualC++中访问MSDN,一种方法是从VisualC++的Help菜单中选择Contents、Search或Index命令,另一种方法是在VisualC++开发环境中直接按下F1键,系统都会自动运行MSDN帮助程序。
MSDN界面分为三个窗格,顶端的窗格包含有工具栏。
左侧的窗格包含有各种信息定位方法,通过单击列表中的主题,即可浏览或查找所需的各种信息;右侧的窗格则显示所选择的主题的具体内容,这些内容是以超文本形式存在的,其中的相关内容可以通过超文本链接连接到其他的相关主题。
图8 MSDN界面
左边窗口中有四个选项卡:
目录、索引、搜索和书签,用于提供四种不同的在线帮助浏览方式。
(1)目录。
单击目录选项卡可浏览主题的标题。
该目录是依照标题和副标题的排列方式形成一个包含了MSDN中所有可用信息的可扩充目录表。
双击列表中的标题,就可在MSDN窗口的右栏中打开该文章。
(2)索引。
单击索引选
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计