数据结构课程设计模板(DOC)

数据结构课程设计模板(DOC)
数据结构课程设计模板(DOC)

数据结构与算法

课程设计报告

题目:

学院:

专业班级:

学生姓名:

指导教师:

2016 年06 月2 9日

目录

一、课程设计目的 (3)

二、课程设计步骤 (3)

三、课程设计内容 (5)

四、课程设计报告...................................................................... 错误!未定义书签。

五、提交材料 (6)

六、考核方式与评分标准 (7)

七、参考文献 (9)

附录1 齐齐哈尔大学软件工程系课程设计说明书(报告)撰写规范 (10)

一、课程设计目的及要求

《数据结构与算法分析》课程设计培养计算机专业的学生的算法程序设计能力。通过上机实验,可以培养学生程序设计的方法和技巧,提高学生编制清晰、合理、可读性好的系统程序的能力,加深对数据结构课程和算法的理解。使学生更好地掌握数据结构的基本概念、基本原理、及基本算法,具有分析算法、设计算法、构造和开发较复杂算法的基本能力。

要求学生能综合运用《数据结构与算法分析》的相关知识,培养学生上机解决一些与实际应用结合紧密的、规模较大的问题的能力,通过分析、设计、编码、调试等各环节的训练,使学生深刻理解、牢固掌握数据结构和算法设计技术,掌握分析实际问题的能力并提高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、封面

附录2 Visual C++ 6.0简介

考虑到目前大多数初学者使用的都是PC机和Windows操作系统,我们以Visual C++作为推荐的C++编译器。

1.Visual C++集成开发环境

Visual C++软件包包含了许多独立的组件,如编辑器、编译器、调试器,以及各种各样为开发Windows环境下的C/C++程序而设计的工具。其中最重要的是一个名为Developer Studio的集成开发环境。Developer Studio把所有的Visual C++工具结合在一起,集成为一个由窗口、对话框、菜单、工具栏、快捷键及宏组成的和谐系统,通过该集成环境,程序员可以观察和控制整个开发进程。

1显示了一个典型的Developer Studio主窗口。它分为几个部分:窗口顶部是菜单和工具栏,左面的一个子窗口是工作区窗口,工作区的右面是编辑子窗口。最下面是输出子窗口。值得注意的是,上述各种部件,包括子窗口、菜单栏和工具栏的位置不是一成不变的,可以根据个人的喜好重新安排。

图1 典型的Developer Studio窗口

(1)菜单和工具栏

Developer Studio中有一个Menu Bar(菜单栏,通常停靠在开发环境窗口的顶部),其中的菜单项有File (文件处理)、Edit(编辑功能)、View(查看)、Insert(插入)、Project (项目管理)、Built(编译)、Tools(工具)、Window(窗口)和Help(帮助)等,分别对应一个下拉子菜单。

除菜单栏外,开发环境中还有几个工具栏,一般均放在开发环境的顶部,菜单栏的下方,如Standard(标准工具栏,用于文件管理、编辑和查看等),Wizard Bar(向导工具栏)和Build MiniBar(建立工具栏,用于编译、连接等)。工具栏上有常用命令的图标。一般来说,工具栏上的命令在菜单中均有对应选项,但工具栏使用更方便,只要用鼠标左键点击工具栏中的相应图标即可调用相应的功能。

开发环境的各种菜单栏和工具栏均为停靠式,可以用鼠标拖动改变它们的位置,除此之外,Developer Studio的所有部分几乎都可响应鼠标右键单击而弹出一个上下文相关菜单。甚至当Developer Studio没有打开窗口时,在空白区右击鼠标也会弹出一个菜单,其中含有使窗口可见和调整工具栏是否可见的命令。在工具栏上除标题栏外的任何地方右击鼠标,同样可以弹出菜单。在使用集成环境工作时试一试鼠标右键,还会发现许多其他的快捷方式。(2)Developer Studio窗口

除了各种对话框外,Developer Studio显示两种类型的窗口,即文档窗口和停靠窗口。文档窗口是一般的带边框子窗口,其中含有源代码文本或图形文档。Window子菜单中列出了在屏幕上以平铺方式还是以层叠方式显示文档窗口的命令。所有其他的Developer Studio 窗口,包括工具栏和菜单栏,都是停靠式窗口。开发环境有两个主要的停靠窗口――Workspace(工作区)窗口和Output(输出)窗口。另外还有一个Debugger(调试器)停靠窗口,只在调试过程中显示。

图2 新建一个项目

停靠窗口可以固定在Developer Studio用户区的顶端、底端或侧面,或者浮动在屏幕上任何地方。停靠窗口,不论是浮动着的或是固定着的,总是出现在文档窗口的上面。这样,就保证了当焦点从一个窗口移到另一个时,浮动的工具栏一直都是可见的。但这也意味着,文档窗口偶尔会看起来像消失了似的。例如,如果正在文本编辑器中编辑源代码,此时打开一个占据整个Developer Studio用户区的停靠窗口,源代码文档就会消失,它隐藏在新窗口之下。解决方法是要么关了覆盖的窗口,要么把它拖到不挡眼的地方去。

(3)菜单选项、快捷键和工具栏

Developer Studio的许多功能都有不只一种调用方法。例如,执行一个编译、连接成功的可执行文件,既可通过选择菜单选项Build/Execute.exe完成,也可以直接使用快捷键Ctrl+F5,还可以用鼠标点击Build MiniBar(编译工具栏)上的相应图标来完成。一般来说,越是常用的功能,可以调用的方法越多、越方便。

(4)用Developer Studio编写和调试简单C++程序

在Visual C++中,C++的程序是存放到以后缀名为.CPP的文件中,系统是通过Projects (工程项目)来管理这些文件的。所以要编写和运行C++程序,首先必须建立一个Projects。

下面以一个简单的例子来说明如何在Visual 集成开发环境编写和调试简单C++程序的步骤:

(1)首先运行并打开Developer Studio系统,选择菜单选项File/New中的Projects选项

卡。从卡中选择Win32 Console Application(Win32控制台应用程序)。

(2)为应用项目取一个名字,填写在选项卡右上方的Project Name(项目名称)处,并检查下面的Location(位置)中列出的路径是否正确。注意使下面的单选框选择Create New Workspace(即要建立新工作区),然后按下OK按钮。如图2。

(3)这时会出现Application Wizard(应用程序生成向导),提问要生成的项目类型。选择An Empty Project(空项目),按下Finish(结束)键,会弹出一个窗口,显示新项目的有关信息。检查无误后按OK按钮。如图3及4

图3 确定项目类型图4 项目相关信息

(4)这时屏上会显示一个空项目,并生成一个工作区文件(后缀为.DSW)。再次选择File菜单的New选项,并选择Files选项卡。从卡中选择C++ Source File(C++源程序)。

(5)为程序取一个名字(可与项目名相同,也可以不同)填写在选项卡右边的File处,然后按下OK按钮。如图5

图5 建立文件

(6)这时开发环境右侧的文件编辑窗口中出现了一个空文件,在此可以键入源程序代码。如图6

(7)程序输入后,应仔细检查一遍,然后就可以编译了。

(8)选择菜单选项Build/Compile gravitation.cpp (其中gravitation为文件名)编译源程序。稍候片刻,会在Output窗口(通常在屏幕下方)中显示编译结果,如出错信息等(编译错误的处理在下一节介绍)。如果程序正确,编译结果会生成一个目标文件(后缀为.OBJ)。

(9)目标文件还需通过连接才能生成可执行文件。选择菜单选项Build/Build gravitation.exe连接目标文件。结果显示在Output窗口中。连接的结果为可执行文件(后缀为. exe)。

以上两步也可以并为一步,即直接使用菜单选项Build/Build gravitation.exe。

图6 代码的编辑界面

生成的可执行文件可以单独运行,也可以在开发环境中直接运行,后一种方法在程序需要反复调试时更加方便。在集成开发环境中直接运行程序的方法是选用菜单选项Build/Excute.exe。程序运行结果如图7

图7 程序运行结果

2.Visual C++帮助功能

MSDN (Microsoft Developer Network) 是使用Microsoft 开发工具或是以Windows 和Internet 为开发平台的开发人员的基本参考资料。通过MSDN所提供的Help资料,可以对Visuan C++和Windows的工作机制有更全面的了解,可以帮助解决开发者遇到的大多数问题。

由于MSDN库为包括Visual C++在内的所有的Visual studio 6.0开发环境工具提供在线帮助,所以它在系统中作为一个应用程序独立运行,并没有同任何单个开发环境结合在一起。要从Visual C++中访问MSDN,一种方法是从Visual C++的Help菜单中选择Contents、Search或Index命令,另一种方法是在Visual C++开发环境中直接按下F1键,系统都会自动运行MSDN帮助程序。

MSDN界面分为三个窗格,顶端的窗格包含有工具栏。左侧的窗格包含有各种信息定位方法,通过单击列表中的主题,即可浏览或查找所需的各种信息;右侧的窗格则显示所选择的主题的具体内容,这些内容是以超文本形式存在的,其中的相关内容可以通过超文本链接连接到其他的相关主题。

图8 MSDN界面

左边窗口中有四个选项卡:目录、索引、搜索和书签,用于提供四种不同的在线帮助浏览方式。

(1)目录。单击目录选项卡可浏览主题的标题。该目录是依照标题和副标题的排列方式形成一个包含了MSDN中所有可用信息的可扩充目录表。双击列表中的标题,就可在MSDN窗口的右栏中打开该文章。

(2)索引。单击索引选项卡可查看索引项的列表,然后可通过该栏左边的滚动条翻阅整个索引列表。也可通过在对话框顶部的编辑框中键人关键字来完成查找功能。找到所要的索引条目后双击,如果该条目仅对应一篇文章,MSDN就会立刻在其窗口右栏显示其内容;否则会出现已找到的主题对话框,其中列出了该条目可能指向的所有文章,这时可通过双击列表中所需要主题,打开相应的一篇文章。

(3)搜索。单击搜索选项卡可查找到包含在某个主题中的所有词组或短语。它是一个全文本搜索引擎,允许寻找包含指定词或短语的主题。和MSDN的索引选项比起来,全文本搜索所能覆盖范围更宽,它可以提供更多的文章以供选择。

(4)书签。单击书签选项卡可创建或访问书签的列表。用户只需简单地标记书签中的某些主题,即可重新访问它们。

3.Developer Studio文本编辑器

Developer Studio提供了一个优秀的程序文本编辑器,它使应用程序的编辑修改和调试工作混为一体,非常方便。该文本编辑器不仅可编辑程序文本,还可编辑一般的文本文件和HTML Page。

启动文本编辑器非常简单,只要建立一个新文本文件,或打开一个已存在的文本文件,文本编辑器就会自动出现。

在文本编辑器中,用一闪烁的短竖线表示编辑位置,通过键盘输入的文字在此位置插入

文本。用鼠标左键点击文本中的某个字符可以改变编辑位置。

文本编辑器的基本操作包括:

●→:光标向后移动一个字符。

●←:光标向前移动一个字符。

●↑:光标向上移动一行。

●↓:光标向下移动一行。

●Home:光标移动到行首。

●End:光标移动到行尾。

●Ctrl+Home: 光标移动到文件头。

●Ctrl+End: 光标移动到文件尾。

●PgUp:光标向上滚动一屏。

●PgDn: 光标向下滚动一屏。

●Ctrl+Y:删除行。

●Del:删除光标右边字符。

●Backspace:删除光标左边字符。

●Ins:插入/改写方式切换。

Developer Studio的Edit子菜单还提供了一批高级编辑功能,大致可分为以下几类:(1)Undo和Redo,用于反悔对文本文件所做的修改

(2)剪贴Cut、复制Copy、粘贴Paste和删除Delete

(3)查找Find和替换Replace

(4)书签

(5)高级选项

(6)断点设置

(7)编程指导信息

4.Developer Studio文件处理功能

Developer Studio提供了很完整的文件处理功能,可处理程序文本文件、项目文件、WORD文档和EXCEL文档等。

Developer Studio的File子菜单共有14项,分为6组,组与组之间用横线隔开。

第1组用于建立、打开和关闭文件处理的对象,包括项目、文件、工作区和其他文档:(1)建立新对象(New…,快捷键为CTRL+N)。选择该菜单项,可打开一个有若干卡片的对话框,各卡片的内容分别为:

项目(Projects):用于建立项目。项目即要开发的应用程序,Developer Studio可用于开发各种类型的应用程序,如控制台应用程序(Win32 Console Application)、32位Windows 应用程序(Win32 Application)和MFC应用向导程序(MFC AppWizard)等。对于不同类型的项目,建立的具体文件也不同。

文件(Files):用于建立各种文件,包括源程序文件(Source File,文件名后缀为cpp)、头文件(Header File,文件名后缀为h)、文本文件(Text File,文件名后缀为txt)、位图文件(Bitmap File,文件名后缀为bmp)等。

工作区(Workspaces):每个正在开发的项目要占用一个工作区。一般来说,在建立项目的同时即为其建立了工作区。但也可用本选项建立一个空的工作区。

其他文档(Other Documents):用于建立一些文档文件,如MS Excel工作表,MS Excel 图表,MS PowerPoint演示文稿和MS Word排版文档等。

(2)打开已有对象(Open…,快捷键为CTRL+O)。用于打开一个已存在的项目、文件或文档。选择该菜单项,会弹出一个文件路径对话框,用于确定要打开的内容。

(3)关闭文件(Close)。用于关闭当前打开并激活的文件。

第2组用于处理工作区。包括:

(1)打开工作区(Open Workspace…)。用于一个已存在的工作区。工作区的有关参数(包括应用程序的结构体系,特别是其类、资源、文件和帮助信息等的参数)存放在后缀名为dsw和mdp的文件中。

(2)保存工作区(Save Workspace)。用于保存当前打开的工作区文件。

(3)关闭工作区(Close Workspace)。用于关闭当前打开的工作区文件。

第3组用于处理当前文件,包括:

(1)保存文件(Save,快捷键为CTRL+S)。用于保存当前正在使用的文件。

(2)另存文件(Save As…)。将当前文件换一个名字保存,原来的文件内容不变。

(3)保存所有文件(Save All)。保存当前打开的所有文件。

第4组用于打印当前文件,包括:

(1)页面设置(Page Setup…)。设置打印页面格式,为打印当前文件作准备。

(2)打印当前文件(Print…,快捷键为CTRL+P)。用于打印当前文件。

第5组用于快速打开或切换文件和工作区。包括:

(1)最近使用过的文件(Recent Files)。用于直接打开最近几次在Developer Studio 中使用过的文件,可在弹出的下级菜单中直接选取。

(2)最近使用过的工作区(Recent Workspaces)。用于直接打开最近几次在Developer Studio中打开过的工作区,可在弹出的下级菜单中直接选取。

最后1组只有一个菜单项:

(1)退出Developer Studio(Exit)。选择该菜单项可以关闭当前打开的所有对象,包括项目、工作区和文件等,退出Developer Studio,返回Windows操作系统界面。

5.Visual C++程序的编译、连接和运行

用于编译、连接和运行应用程序的功能集中在创建(Build)子菜单中,但其中多数功能也可通过快捷键和工具条调用。

Developer Studio的Build子菜单共有11项,分为4组,组与组之间用横线隔开。

第1组包括编译、连接等功能:

编译当前项目(Compile,快捷键为Ctrl+F7)。用于将源程序编译为目标代码。编译结果及编译错误信息在输出窗口(Output)显示。

编译、连接当前项目(Build,快捷键为F7)。在对当前项目的源程序编译之后,还进行连接(Link)操作,即将目标代码与系统或用户类库连接并生成可执行的程序(或动态连接库.DLL等)。

重新编译、连接当前项目(Rebuild All)。功能与基本相同,只是无论是否修改过,对所有文件都重新进行编译和连接工作。

以批处理方式编译、连接当前项目(Batch Build)。功能与基本相同,只是同时产生调试版和发行版执行程序。

清除临时文件(Clean)。用于清除上一次编译、连接时产生的临时文件和输出文件,

以整理程序目录。

第2组用于调试程序,包括开始调试(Start Debug)和远程调试链接(Debugger Remote Connect)。

第3组用于执行当前项目的可执行程序(Execute,快捷键为Ctrl+F5)。

第4组用于设置编译和连接工作的参数。包括:

设置项目的版本类型(Set Active Configuration…)。Developer Studio生成的可执行文件有两种版本,一种是调试版本(Win32 Debug),内含调试代码,体积稍大,主要在编程调试过程中使用。另一种是发放版本(Win32 Release),其中不包含调试代码,体积小,用于在程序调试结束后提交用户。

管理项目版本(Configuration…)。用于管理项目的调试版本和发放版本。

Profile。设置、Profile程序和显示Profile数据。

6.查看和修改编译、连接错误

刚编写好的程序含有错误是正常的,即使是熟练的专业程序员也很难一次就编写出完全没有错误的源程序来。实际上,重要的不是程序中是否有错误,而是怎样将这些错误找出来并改正之。一般来说,一段源程序从输入编辑到通过编译,往往要重复若干次编译-修改-再编译的过程。

如果在编译的过程中发现了错误,则进入编辑查错状态。这时在屏幕下方的Output窗口中会显示出错误的类型、错误发生的位置以及错误的原因。错误信息的格式为: <源程序路径>(行)<错误代码>: <错误内容>

错误有两种,一种是Error,表示这是一个严重错误,非改不可。另一种是Warning,表示源程序这里有可能是错误的,也有可能不是错误,编译程序自己也拿不准。一般来说,如果只出现警告信息,还是可以继续连接、运行程序,建议在出现编译警告时最好还是仔细检查一下,设法消除引起警告的原因。

错误发生的位置包括源程序的路径和文件名以及错误所在行。必需说明的是C++编译程序的“智力”并不十分高,虽然能够查出错误,但对错误的说明可能并不十分准确,而且一个实际错误往往会引出若干条错误说明,使人不容易摸清到底错在什么地方。错误的原因其实可能很简单,例如少写了一个括号、分号或拼错了一个单词,都可能引起一连串的错误提示。真正的错误之处也可能在此之前的某个语句。而且指出的错误条数可能偏多,常常是由于一处出错而引发了一系列错误提示信息。

用鼠标双击一条错误信息可使文本编辑器作出反应,其左框上显示一个箭头指出对应的出错语句,以便修改源程序。

在连接阶段也可能出现一些错误提示。与编译错误提示信息不同的是连接错误不指出错误发生的详细位置,这是因为连接的对象是目标程序,和源程序格式有很大差别,不易确定错误的准确位置。连接阶段出现的错误一般比较少,大多数是因为在程序中调用了某个函数,而连接程序却找不到该函数的定义。这时最有可能的是函数名字拼写错误。另外,如果程序的规模较大,需要分为若干个源程序文件分别编译然后连接,则也可能出现全局变量重复定义或找不到等错误现象。

在找到连接错误的原因并改正以后,一定要重新编译后才能再次连接。否则,虽然源程序已经修改,但进行连接的目标程序还是以前有错误的目标程序,再次连接仍然会产生同样的错误。

7.运行错误的判断与调试

通常所说的运行错误有两种, 一种是逻辑错误, 即程序的实际运行结果和编程者对程序结果的期望不符; 另一种仍是程序设计上的错误, 但是躲过了编译程序和连接程序的检查, 通常表现为突然死机、自行热启动或者输出信息混乱。

相对于编译和连接错误来说, 运行错误的查找和判断更为困难。编译和连接错误可以由编译程序和连接程序检查, 而运行错误就不同了, 很少或根本没有提示信息, 只能靠程序员的经验来判断错误的性质和位置。下面简单地介绍一些常见运行错误的调试方法。

逻辑错误: 一种逻辑错误是由于在设计程序的算法时考虑欠周引起的, 例如对边界和极端条件未作处理等。例如以下循环:

while(count)

{

… …

}

程序员的构思是进行count次循环。但是, 如果count中原来的值为负数时, 此循环就成了一个“死循环”而导致无法停机, 显然是错误的。但是编译程序无法查出这类错误, 只有到了程序运行之后才有可能发现。再如, 在利用海伦公式计算三角型面积时, 首先应该确认给出的三条边长确实可以构成一个三角形, 否则计算结果是没有意义的; 而在编写求解一般实系数一元二次方程的程序时, 必须在程序中设计处理复根情况的程序段, 以免对负数求平方根。

另一种常见的逻辑错误是由于程序输入时的打字错误造成的, 例如将判断条件中的“>=”误输入为“>”, 将相等判断“==”误输入为赋值号“=”等。含有这类错误的程序在运行时出现的现象多种多样, 而且通常很难与错误的原因联系起来。

数组下标越界错误:即使用了并不存在的数组元素。例如有程序段

int a[5];

for(int i=1; i<=5; i++)

a[i] = 0;

由于[5]并不存在,而上述程序段试图将数据存放到一个并不存在的数组元素中,这会引起包括死机在内的严重运行错误。类似错误还有指针和动态存储分配引起的一些运行错误。

8.基本调试手段

程序的基本调试手段有以下几种: 标准数据检验、程序跟踪、边界检查和简化循环次数等。

标准数据检验: 在程序编译、连接通过以后, 就进入了运行调试阶段。运行调试的第一步就是用若干组已知结果的标准数据对程序进行检验。标准数据的选择非常重要, 一是要有代表性, 接近实际数据; 二是要比较简洁, 容易对其结果的正确性进行分析。另外, 对重要的临界数据也必须进行检验。

程序跟踪: 对于比较复杂的大型程序来说, 上述标准数据检验一次就完全通过的可能性很小。通常程序中总是存在许多各种各样的错误,还需要对程序进行细致的调试工作。程序跟踪则是最重要的调试手段。程序跟踪的基本原理是让程序一句一句地执行, 通过观察和分析程序执行的过程中数据和程序执行流程的变化来查找错误。就Visual C++而言, 程序跟踪可以采用两种方法, 一种是直接利用Developer Studio中的分步执行、断点设置、变量内容显示等功能对程序进行跟踪, 这种方法在后面的编程与调试部分介绍; 另一种是传统的方法, 通过在程序中直接设置断点、打印重要变量内容等来掌握程序的运行情况。例如,可以在程序中的关键部位插入这样的代码段:

// 调试代码段

cout << "Break Point 10: line 120 --- count > 100" << endl;

cout << "Variable count = “ << count << “, x = “ << x << “, sum = “ << sum << e ndl;

数据结构课程设计参考题目

数据结构课程设计题目 数据结构课程设计题目(大题目).doc 一、公司销售管理系统 项目开发基本要求 1.客户信息管理:对客户的基本信息进行添加、修改和删除。 2.产品信息管理:对产品的基本信息进行添加、修改和删除。 3.供应商信息管理:对供应商的基本信息进行添加、修改和删除。 4.订单信息管理:对订单的基本信息进行添加、修改和删除。 二、高校科研管理系统 系统主要用于帮助高校或科研单位管理和维护各项科研相关资料 项目开发基本要求 1.系统用户管理模块:为系统新用户设置用户名及口令;操作员更改自己的系统口令。2.数据字典管理模块:管理项目性质包括:分为国家自然科学基金、863、部省科委及企业集团四种情况;范围包括:分为全国、国际、地方三种情况;检索源包括:分为EI、SCI、核心和一般四种情况。 3.项目参加人员管理模块包括:显示添加修改删除查询。 4.项目基本情况模块包括:显示添加修改删除查询。 5.项目获奖情况模块包括:显示添加修改删除查询。 6.期刊论文管理模块包括:显示添加修改删除查询。 7.著作管理模块包括:显示添加修改删除查询。 8.科研工作量统计模块:按照学校科研工作量计算办法,为每位科研人员进行科研工作量的计算和统计。 9.科研积分统计模块:按照学校科研积分计算办法,为每位科研人员进行科研计分的计算和统计。 三、网络五子棋对战 四、不同排序算法模拟 五、科学计算器 数据结构课程设计题目 1.运动会分数统计 任务:参加运动会有n个学校,学校编号为1……n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1……m,女子m+1……m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。(m<=20,n< =20) 功能要求: 1)可以输入各个项目的前三名或前五名的成绩; 2)能统计各学校总分,

数据结构课程设计报告模板

《数据结构I》三级项目报告 大连东软信息学院 电子工程系 ××××年××月

三级项目报告注意事项 1. 按照项目要求书写项目报告,条理清晰,数据准确; 2. 项目报告严禁抄袭,如发现抄袭的情况,则抄袭者与被抄袭者均 以0分计; 3. 课程结束后报告上交教师,并进行考核与存档。 三级项目报告格式规范 1. 正文:宋体,小四号,首行缩进2字符,1.5倍行距,段前段后 各0行; 2. 图表:居中,图名用五号字,中文用宋体,英文用“Times New Roman”,位于图表下方,须全文统一。

目录 一项目设计方案 (3) 二项目设计分析 (4) 三项目设计成果 (4) 四项目创新创业 (5) 五项目展望 (6) 附录一:项目成员 (6) 附录二:相关代码、电路图等 (6)

一项目设计方案 1、项目名称: 垃圾回收 2、项目要求及系统基本功能: 1)利用数据结构的知识独立完成一个应用系统设计 2)程序正常运行,能够实现基本的数据增加、删除、修改、查询等功能3)体现程序实现算法复杂度优化 4)体现程序的健壮性 二项目设计分析 1、系统预期实现基本功能: (结合本系统预期具体实现,描述出对应基本要求(增、删、改、查等)的具体功能) 1. 2. 3. 4. 5. 6. 7. 2、项目模块功能描述 (基本分为组织实施组织、程序功能模块编写、系统说明撰写等。其中程序功能子模块实现) 模块一: 主要任务:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 模块二: 主要任务:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 模块n: 主要任务:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

数据结构实验总结报告

数据结构实验总结报告 一、调试过程中遇到哪些问题? (1)在二叉树的调试中,从广义表生成二叉树的模块花了较多时间调试。 由于一开始设计的广义表的字符串表示没有思考清晰,处理只有一个孩子的节点时发生了混乱。调试之初不以为是设计的问题,从而在代码上花了不少时间调试。 目前的设计是: Tree = Identifier(Node,Node) Node = Identifier | () | Tree Identifier = ASCII Character 例子:a(b((),f),c(d,e)) 这样便消除了歧义,保证只有一个孩子的节点和叶节点的处理中不存在问题。 (2)Huffman树的调试花了较长时间。Huffman编码本身并不难处理,麻烦的是输入输出。①Huffman编码后的文件是按位存储的,因此需要位运算。 ②文件结尾要刷新缓冲区,这里容易引发边界错误。 在实际编程时,首先编写了屏幕输入输出(用0、1表示二进制位)的版本,然后再加入二进制文件的读写模块。主要调试时间在后者。 二、要让演示版压缩程序具有实用性,哪些地方有待改进? (1)压缩文件的最后一字节问题。 压缩文件的最后一字节不一定对齐到字节边界,因此可能有几个多余的0,而这些多余的0可能恰好构成一个Huffman编码。解码程序无法获知这个编码是否属于源文件的一部分。因此有的文件解压后末尾可能出现一个多余的字节。 解决方案: ①在压缩文件头部写入源文件的总长度(字节数)。需要四个字节来存储这个信息(假定文件长度不超过4GB)。 ②增加第257个字符(在一个字节的0~255之外)用于EOF。对于较长的文件,

会造成较大的损耗。 ③在压缩文件头写入源文件的总长度%256的值,需要一个字节。由于最后一个字节存在或不存在会影响文件总长%256的值,因此可以根据这个值判断整个压缩文件的最后一字节末尾的0是否在源文件中存在。 (2)压缩程序的效率问题。 在编写压缩解压程序时 ①编写了屏幕输入输出的版本 ②将输入输出语句用位运算封装成一次一个字节的文件输入输出版本 ③为提高输入输出效率,减少系统调用次数,增加了8KB的输入输出缓存窗口 这样一来,每写一位二进制位,就要在内部进行两次函数调用。如果将这些代码合并起来,再针对位运算进行一些优化,显然不利于代码的可读性,但对程序的执行速度将有一定提高。 (3)程序界面更加人性化。 Huffman Tree Demo (C) 2011-12-16 boj Usage: huffman [-c file] [-u file] output_file -c Compress file. e.g. huffman -c test.txt test.huff -u Uncompress file. e.g. huffman -u test.huff test.txt 目前的程序提示如上所示。如果要求实用性,可以考虑加入其他人性化的功能。 三、调研常用的压缩算法,对这些算法进行比较分析 (一)无损压缩算法 ①RLE RLE又叫Run Length Encoding,是一个针对无损压缩的非常简单的算法。它用重复字节和重复的次数来简单描述来代替重复的字节。尽管简单并且对于通常的压缩非常低效,但它有的时候却非常有用(例如,JPEG就使用它)。 变体1:重复次数+字符 文本字符串:A A A B B B C C C C D D D D,编码后得到:3 A 3 B 4 C 4 D。

数据结构课程设计报告模板

课程设计说明书 课程名称:数据结构 专业:班级: 姓名:学号: 指导教师:成绩: 完成日期:年月日

任务书 题目:黑白棋系统 设计内容及要求: 1.课程设计任务内容 通过玩家与电脑双方的交替下棋,在一个8行8列的方格中,进行棋子的相互交替翻转。反复循环下棋,最后让双方的棋子填满整个方格。再根据循环遍历方格程序,判断玩家与电脑双方的棋子数。进行大小判断,最红给出胜负的一方。并根据y/n选项,判断是否要进行下一局的游戏。 2.课程设计要求 实现黑白两色棋子的对峙 开发环境:vc++6.0 实现目标: (1)熟悉的运用c语言程序编写代码。 (2)能够理清整个程序的运行过程并绘画流程图 (3)了解如何定义局部变量和整体变量; (4)学会上机调试程序,发现问题,并解决 (5)学习使用C++程序来了解游戏原理。 (6)学习用文档书写程序说明

摘要 本文的研究工作在于利用计算机模拟人脑进行下黑白棋,计算机下棋是人工智能领域中的一个研究热点,多年以来,随着计算机技术和人工智能技术的不断发展,计算机下棋的水平得到了长足的进步 该程序的最终胜负是由棋盘上岗双方的棋子的个数来判断的,多的一方为胜,少的一方为负。所以该程序主要运用的战术有削弱对手行动战术、四角优先战术、在游戏开局和中局时,程序采用削弱对手行动力战术,即尽量减少对手能够落子的位置;在游戏终局时则采用最大贪吃战术,即尽可能多的吃掉对手的棋子;而四角优先战术则是贯穿游戏的始终,棋盘的四角围稳定角,不会被对手吃掉,所以这里是兵家的必争之地,在阻止对手进角的同时,自己却又要努力的进角。 关键词:黑白棋;编程;设计

数据结构课程设计报告

《数据结构与算法》课程设计报告 学号: 班级序号: 姓名: 指导教师: 成绩: 中国地质大学信息工程学院地理信息系统系 2011年12 月

1.需求规格说明 【问题描述】 利用哈夫曼编码进行对已有文件进行重新编码可以大大提高减小文件大小,减少存储空间。但是,这要求在首先对一个现有文件进行编码行成新的文件,也就是压缩。在文件使用时,再对压缩文件进行解压缩,也就是译码,复原原有文件。试为完成此功能,写一个压缩/解压缩软件。 【基本要求】 一个完整的系统应具有以下功能: (1)压缩准备。读取指定被压缩文件,对文件进行分析,建立哈夫曼树,并给出分析结果(包括数据集大小,每个数据的权值,压缩前后文件的大小),在屏幕上输出。 (2)压缩。利用已建好的哈夫曼树,对文件进行编码,并将哈夫曼编码及文件编码后的数据一起写入文件中,形成压缩文件(*.Haf)。 (3)解压缩。打开已有压缩文件(*.Haf),读取其中的哈夫曼编码,构建哈夫曼树,读取其中的数据,进行译码后,写入文件,完成解压缩。 (4)程序使用命令行方式运行 压缩命令:SZip A Test.Haf 1.doc 解压缩命令:SZip X Test.Haf 2.doc或SZip X Test.Haf 用户输入的命令不正确时,给出提示。 (5)使用面向对象的思想编程,压缩/解压缩、哈夫曼构建功能分别构建类实现。 2.总体分析与设计 (1)设计思想: 1、压缩准备:1> 读文件,逐个读取字符,统计频率 2> 建立哈夫曼树 3> 获得哈弗曼编码 2、压缩过程: 1> 建立一个新文件,将储存权值和字符的对象数组取存储在文件头

数据结构课程设计题目选择

数据结构课程设计题目 说明: (1)选用语言:C或Java语言; (2)需要注明3人(可少于3人)小组各自承担和完成的任务(据此给予成绩); (3)如下带“*”的题目,“*”越多,难度越大一些,分值权重更高---要得到更高分数,推荐选择。 要求: (1) 用中文给出设计说明书(含重要子函数的流程图); (2) 给出测试通过、能实现相应功能的源代码; (3) 测试报告。 0、小学数学四则混合运算试题出题、评价、题库自动生成与组卷系统(****)---已经有2组选择 任务: (1)将随机给出的四则混合运算表达式显示在计算机显示器上,要求应试者给出答案;并且使用堆栈对该表达式求值,同给出的答案进行比较,判断 正确和错误。给出鼓励信息和嘉奖信息; (2)保存多人在不同时间应试的题目与他(或她)给出的答案,评价所出题目的难易程度(通过多人回答正确与否的情况给出),形成题库; (3)按照用户给出的题目难易程度指标(例如让50人的得分满足怎样的正态分布,如90分以上10%,80分以上30%,70分以上30%,60分以上20%,60分 以下10%),从题库中抽取不同的题目,组成试卷。 要求:随机产生的题目中,参加运算的数据随机、运算符随机。题目涉及加减乘除,带括弧的混合运算;随时可以退出;保留历史分数,能回顾历史,给出与历史分数比较后的评价。 1、集合的并、交和差运算---已经有1组选择 任务:编制一个能演示执行集合的并、交和差运算的程序。 要求: (1) 集合的元素限定为小写字母字符[…a?..?z?] 。 (2) 演示程序以用户和计算机的对话方式执行。 实现提示:以链表表示集合。 选作内容: (1) 集合的元素判定和子集判定运算。 (2) 求集合的补集。 (3) 集合的混合运算表达式求值。 (4) 集合的元素类型推广到其他类型,甚至任意类型。 2、停车场管理------已经有2组选择 任务:设停车场是一个可以停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次有北向南排列(大门在最南端,最先到达的第一车停放在车场的最北端),若车场内已停满n辆车,那么后来的车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。试为停车场编制按上述要求进行管理的模拟程序。 要求:以栈模拟停车场,以队列模拟车场外的便道。每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码以及到达或离去的时刻。对每一组输入数据进行操作后的输出信息为:若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若是车辆离去,则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停车不收费)。栈以顺序存储结构实现,队列以链表结构实现。 3、哈夫曼码的编/译码系统(**)---已经有1组选择

数据结构课程设计独立题目

题目2:运动会分数统计 1.问题描述 参加运动会有n个学校,学校编号为1……n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1……m,女子m+1……m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。(m<=20,n<=20) 2.功能要求 1)可以输入各个项目的前三名或前五名的成绩; 2)能统计各学校总分; 3)可以按学校编号、学校总分、男女团体总分排序输出; 4)可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。 存储结构:学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中。 。 题目6:哈夫曼编/译码器 1.问题描述 利用哈夫曼编码进行信息通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本。但是,这要求在发送端通过一个编码系统对待传数据预先编码,在接收端将传来的数据进行译码(复原)。对于双工信道(即可以双向传输信息的信道),每端都需要一个完整的编/译码系统。试为这样的信息收发站写一个哈夫曼编/译码系统。 2.功能要求 I:初始化(Initialization)。从终端读入字符集大小n,以及n个字符和n个权值,建立哈夫曼树,并将它存于文件hfmTree中。 E:编码(Encoding)。利用已建好的哈夫曼树(如不在内存,则从文件htmTree 中读入),对文件ToBeTran中的正文进行编码,然后将结果存入文件CodeFile 中。 D:译码(Decoding)。利用已建好的哈夫曼树将文件CodeFile中的代码进行译码,结果存入文件TextFile中。 P:印代码文件(Print)。将文件CodeFile以紧凑格式显示在终端上,每行50个代码。同时将此字符形式的编码写入文件CodePrint中。 T:印哈夫曼树(Tree Printing)。将已在内存中的哈夫曼树以直观的方式(树或凹入表形式)显示在终端上,同时将此字符形式的哈夫曼树写入文件TreePrint 中。 题目9:构造可以使n个城市连接的最小生成树 1.问题描述 给定一个地区的n个城市间的距离网,用Prim算法或Kruskal算法建立最小生成树,并计算得到的最小生成树的代价。 2.功能要求 城市间的距离网采用邻接矩阵表示,邻接矩阵的存储结构定义采用课本中给出的定义,若两个城市之间不存在道路,则将相应边的权值设为自己定义的无穷大值。要求在屏幕上显示得到的最小生成树中包括了哪些城市间的道路,并显示得到的最小生成树的代价。

数据结构课程设计报告模板

数据结构课程设计报告模板

课程设计说明书 课程名称:数据结构 专业:班级: 姓名:学号: 指导教师:成绩: 完成日期:年月日

任务书 题目:黑白棋系统 设计内容及要求: 1.课程设计任务内容 通过玩家与电脑双方的交替下棋,在一个8行8列的方格中,进行棋子的相互交替翻转。反复循环下棋,最后让双方的棋子填满整个方格。再根据循环遍历方格程序,判断玩家与电脑双方的棋子数。进行大小判断,最红给出胜负的一方。并根据y/n选项,判断是否要进行下一局的游戏。 2.课程设计要求 实现黑白两色棋子的对峙 开发环境:vc++6.0 实现目标: (1)熟悉的运用c语言程序编写代码。 (2)能够理清整个程序的运行过程并绘画流程图 (3)了解如何定义局部变量和整体变量; (4)学会上机调试程序,发现问题,并解决 (5)学习使用C++程序来了解游戏原理。 (6)学习用文档书写程序说明

目录 1.引言 (1) 2.课题分析 (4) 3.具体设计过程 (5) 3.1设计思路 (5) 3.2程序设计流程图 (5) 3.3.函数实现说明 (10) 4.程序运行结果 (12) 5.软件使用说明 (16) 6.结论 (19) 参考文献 (20) 附录:源代码 (21)

1.引言 数据结构在计算机科学界至今没有标准的定义。个人根据各自的理解的不同而有不同的表述方法: Sartaj Sahni在他的《数据结构、算法与应用》一书中称:“数据结构是数据对象,以及存在于该对象的实例和组成实例的数据元素之间的各种联系。这些联系可以通过定义相关的函数来给出。”他将数据对象(data object)定义为“一个数据对象是实例或值的集合”。Clifford A.Shaffer在《数据结构与算法分析》一书中的定义是:“数据结构是ADT(抽象数据类型Abstract Data Type)的物理实现。” Lobert L.Kruse在《数据结构与程序设计》一书中,将一个数据结构的设计过程分成抽象层、数据结构层和实现层。其中,抽象层是指抽象数据类型层,它讨论数据的逻辑结构及其运算,数据结构层和实现层讨论一个数据结构的表示和在计算机内的存储细节以及运算的实现。数据结构具体指同一类数据元素中,各元素之间的相互关系,包括三个组成成分,数据的逻辑结构,数据的存储结构和数据运算结构。 1.1. 重要意义 一般认为,一个数据结构是由数据元素依据某种逻辑联系组织起来的。对数据元素间逻辑关系的描述称为数据的逻辑结构;数据必须在计算机内存储,数据的存储结构是数据结构的实现形式,是其在计算机内的表示;此外讨论一个数据结构必须同时讨论在该类数据上执行的运算才有意义。 在许多类型的程序的设计中,数据结构的选择是一个基本的设计考虑因素。许多大型系统的构造经验表明,系统实现的困难程度和系统构造的质量都严重的依赖于是否选择了最优的数据结构。许多时候,确定了数据结构后,算法就容易得到了。有些时候事情也会反过来,我们根据特定算法来选择数据结构与之适应。不论哪种情况,选择合适的数据结构都是非常重要的。 选择了数据结构,算法也随之确定,是数据而不是算法是系统构造的关键因素。这种洞见导致了许多种软件设计方法和程序设计语言的出现,面向对象的程序设计语言就是其中之一。 1.2. 研究内容

数据结构课程设计题目及要求

实验一~实验四任选一题;实验五~实验九任选一题。 实验一运动会分数统计 一、实验目的: (1)熟练掌握线性表的两种存储方式 (2)掌握链表的操作和应用。 (3)掌握指针、结构体的应用 (4)按照不同的学校,不同项目和不同的名次要求,产生各学校的成绩单、团体总分报表。 二、实验内容: 【问题描述】 参加运动会的n个学校编号为1~n。比赛分成m个男子项目和w个女子项目,项目编号分别为1~m和m+1~m+w。由于各项目参加人数差别较大,有些项目取前五名,得分顺序为7,5,3,2,1;还有些项目只取前三名,得分顺序为5,3,2。写一个统计程序产生各种成绩单和得分报表。 【基本要求】 产生各学校的成绩单,内容包括各校所取得的每项成绩的项目号、名次(成绩)、姓名和得分;产生团体总分报表,内容包括校号、男子团体总分、女子团体总分和团体总分。 【测试数据】 对于n=4,m=3,w=2,编号为奇数的项目取前五名,编号为偶数的项目取前三名,设计一组实例数据。 【实现提示】 可以假设m≤20,m≤30,w≤20,姓名长度不超过20个字符。每个项目结束时,将其编号、类型符(区分取前五名还是前三名)输入,并按名次顺序输入运动员姓名、校名(和成绩)。 【选作内容】 允许用户指定某些项目可采取其他名次取法。

实验二停车场管理 一、实验目的: (1)熟练掌握栈顺存和链存两种存储方式。 (2)掌握栈的基本操作及应用。 (3)以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。 二、实验内容: 【问题描述】 设停车场是一个可停放n辆汽车的长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车信放在车场的最北端),若车场内已停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再按原次序进入车场院,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。试为停车场编制按上述要求进行管理的模拟程序。 【基本要求】 以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码以及到达或离去的时刻。对每一组输入数据进行操作后的输出信息为:若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若是车辆离去,则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费)。栈以顺序结构实现,队列以链表结构实现。 【测试数据】 设n=2,输入数据为:(A,1,5),(A,1,15),(A,3,20),(A,4,25),(A,5,30),(D,2,35),(D,4,40),(E,0,0)。其中:A表示到达(Arrival);D表示离去(Departure);E表示输入结束(End)。 【实现提示】 需另设一个栈,临时停放为给要离去的汽车让路而从停车场退出来的汽车,也用顺序存储结构实现。输入数据按到达或离去的时刻有序。栈中每个元素表示一辆汽车,包含两个数据项:汽车的牌照号码和进入停车场的时刻。 【选作内容】 (1)两个栈共享空间,思考应开辟数组的空间是多少? (2)汽车可有不同种类,则他们的占地面积不同收费标准也不同,如1辆客车和1.5辆小汽车的占地面积相同,1辆十轮卡车占地面积相当于3辆小汽车的占地面积。(3)汽车可以直接从便道开走,此时排在它前面的汽车要先开走让路,然后再依次排到队尾。 (4)停放在便道上的汽车也收费,收费标准比停放在停车场的车低,请思考如何修改结构以满足这种要求。

数据结构课程设计题目

《数据结构》课程设计题目 1. 排序算法的性能分析 问题描述 设计一个测试程序,比较几种内部排序算法的关键字比较次数和移动次数以取得直观感受。 基本要求 (1)对冒泡排序、直接排序、选择排序、箱子排序、堆排序、快速排序及归并排序算法进行比较。 (2)待排序表的表长不小于100,表中数据随机产生,至少用5组不同数据作比较,比较指标:关键字参加比较次数和关键字的移动次数(关键字交换记为3次移动)。 (3)输出比较结果。 选做内容 (1)对不同表长进行比较。 (2)验证各算法的稳定性。 (3)输出界面的优化。 2. 排序算法思想的可视化演示—1 基本要求 排序数据随机产生,针对随机案例,对冒泡排序、箱子排序、堆排序、归并算法,提供排序执行过程的动态图形演示。 3. 排序算法思想的可视化演示—2 基本要求 排序数据随机产生,针对随机案例,,对插入排序、选择排序、基数排序、快速排序算法,提供排序执行过程的动态图形演示。 4. 线性表的实现与分析 基本要求 ①设计并实现线性表。 ②线性表分别采取数组(公式化描述)、单链表、双向链表、间接寻址存储方 式 ③针对随机产生的线性表实例,实现线性表的插入、删除、搜索操作动态演示(图 形演示)。 5. 等价类实现及其应用 问题描述:某工厂有一台机器能够执行n个任务,任务i的释放时间为r i(是一个整数),最后期限为d i(也是整数)。在该机上完成每个任务都需要一个单元的时间。一种可行的调

度方案是为每个任务分配相应的时间段,使得任务i的时间段正好位于释放时间和最后期限之间。一个时间段不允许分配给多个任务。 基本要求: 使用等价类实现以上机器调度问题。 等价类分别采取两种数据结构实现。 6. 一元稀疏多项式计算器 问题描述 设计一个一元稀疏多项式简单计算器。 基本要求 一元稀疏多项式简单计算器的基本功能是: (1)输入并建立多项式; (2)输出多项式,输出形式为整数序列:n,c1,e1,c2,e2,…,c n,e n,其中n是多项式的项数,c i,e i,分别是第i项的系数和指数,序列按指数降序排序; (3)多项式a和b相加,建立多项式a+b; (4)多项式a和b相减,建立多项式a-b; (5)计算多项式在x处的值; (6)计算器的仿真界面(选做) 7. 长整数的代数计算 问题描述 应用线性数据结构解决长整数的计算问题。设计数据结构完成长整数的表示和存储,并编写算法来实现两长整数的加、减、乘、除等基本代数运算。 基本要求 ①长整数长度在一百位以上。 ②实现两长整数在取余操作下的加、减、乘、除操作,即实现算法来求解a+b mod n, a-b mod n, a?b mod n, a÷b mod n。 ③输入输出均在文件中。 ④分析算法的时空复杂性。 8. 敢死队问题。 有M个敢死队员要炸掉敌人的一碉堡,谁都不想去,排长决定用轮回数数的办法来决定哪个战士去执行任务。如果前一个战士没完成任务,则要再派一个战士上去。现给每个战士编一个号,大家围坐成一圈,随便从某一个战士开始计数,当数到5时,对应的战士就去执行任务,且此战士不再参加下一轮计数。如果此战士没完成任务,再从下一个战士开始数数,被数到第5时,此战士接着去执行任务。以此类推,直到任务完成为止。排长是不愿意去的,假设排长为1号,请你设计一程序,求出从第几号战士开始计数才能让排长最后一个留下来而不去执行任务。 要求:至少采用两种不同的数据结构的方法实现。 9. 简单计算器

数据结构课程设计报告模板2013

课程设计(论文)任务书 学院专业班 一、课程设计(论文)题目 二、课程设计(论文)工作自年月日起至年月日止。 三、课程设计(论文) 地点: 四、课程设计(论文)内容要求: 1.课程设计的目的 为了配合《数据结构》课程的教学,使学生能更深刻的领会《数据结构》课程的重要性,特开设此课程设计;编写一些在特定数据结构上的算法,通过上机调试,更好的掌握各种数据结构及其特点,培养学生综合运用所学理论知识解决复杂实际问题的实践能力、研究性学习能力和团队合作能力。 2.课程设计的任务及要求 1)基本要求 (1)课程设计前必须选定课程设计题目,并认真进行需求分析与系统设计; (2)上机调试之前要认真准备实验程序及调试时所需的测试数据; (3)独立思考,独立完成,严禁抄袭,调试过程要规范,认真记录调试结果; (4)上机结束后认真规范撰写课设报告,对设计进行总结和讨论。 2)课程设计论文编写要求 (1)要按照书稿的规格撰写打印课设论文 (2)论文包括任务书、目录、绪论、正文、总结、参考文献、附录等 (3)正文中要有问题描述、抽象数据类型的定义、数据的存储结构、设计的求解算法、算法的实现、调试分析与测试结果 (4)课设论文装订按学校的统一要求完成 3)课设考核 从以下几方面来考查: (1)考勤和态度; (2)任务的难易程度及设计思路;

(3)动手调试能力; (4)论文撰写的水平、格式的规范性。 4)参考文献 [1] 严蔚敏, 吴伟民. 数据结构(C语言版)[M]. 北京:清华大学出版社, 2007年. [2] 严蔚敏, 吴伟民. 数据结构题集(C语言版)[M]. 北京:清华大学出版社, 2007年. [3] 谭浩强. C语言程序设计[M]. 北京:清华大学出版社,2006年. 5)课程设计进度安排 内容天数地点 构思及收集资料1图书馆 程序设计与调试3计算机房 撰写论文1图书馆 6)任务及具体要求 (此处填写任务书中自已所选题目的要求) 学生签名:亲笔签名 年月日 课程设计(论文)评审意见 (1)考勤和态度:优()、良()、中()、一般()、差()(2)任务难易及设计思路:优()、良()、中()、一般()、差()(3)动手调试能力评价:优()、良()、中()、一般()、差()(4)论文撰写水平及规范性评价:优()、良()、中()、一般()、差() 评阅人:职称:讲师 年月日

数据结构课程设计报告

编号 课程设计 题目 1、一元稀疏多项式计算器 2、模拟浏览器操作程序 3、背包问题的求解 4、八皇后问题 二级学院计算机科学与工程学院 专业计算机科学与技术 班级 2011级 37-3班 学生姓名 XX 学号 XXXXXXXXXX 指导教师 XXXXX 评阅教师 时间 1、一元稀疏多项式计算器 【实验内容】 一元稀疏多项式计算器。

【问题描述】 设计一个一元稀疏多项式简单计算器。 【需求分析】 其基本功能包括: (1)输入并建立多项式; (2)输出多项式,输出形式为整数序列为:n,c1,e1,c2,e2,……,cn,en,其中n 是多项式的项数,ci,ei分别是第i项的系数和指数,序列按指数降序排序;(3)多项式a和b相减,建立多项a+b; (4)多项式a和b相减,建立多项式a-b; (5)计算多项式在x处的值; (6)计算器的仿真界面(选做); 【概要设计】 -=ADT=- { void input(Jd *ha,Jd *hb); void sort(dnode *h)

dnode *operate(dnode *a,dnode *b) float qiuzhi(int x,dnode *h) f",sum); printf("\n"); } 【运行结果及分析】 (1)输入多项式:

(2)输出多项式(多项式格式为:c1x^e1+c2x^e2+…+cnx^en): (3)实现多项式a和b相加: (4)实现多项式a和b相减: (5)计算多项式在x处的值:

2、模拟浏览器操作程序 【实验内容】 模拟浏览器操作程序 【问题描述】 标准Web浏览器具有在最近访问的网页间后退和前进的功能。实现这些功能的一个方法是:使用两个栈,追踪可以后退和前进而能够到达的网页。在本题中,要求模拟实现这一功能。 【需求分析】 需要支持以下指令: BACK:将当前页推到“前进栈”的顶部。取出“后退栈”中顶端的页面,使它成为当前页。若“后退栈”是空的,忽略该命令。 FORWARD:将当前页推到“后退栈”的顶部。取出“前进栈”中顶部的页面,使它成为当前页。如果“前进栈”是空的,忽略该命令。 VISIT:将当前页推到“后退栈”的顶部。使URL特指当前页。清空“前进栈”。 QUIT:退出浏览器。 假设浏览器首先加载的网页URL是:http:

数据结构课程设计题目表

《数据结构》课程设计课题表 课题1:设计出链表结构的相关函数库,以便在程序设计中调用。要求: (1)包括线性表的各种基本函数以及常用函数(自己确定函数、函数形式及理由)。 (2)最好能借助语言环境实现图形显示功能,以便能将抽象的数据结构以图形方式显示出来,将复杂的运行过程以动态方式显示出来。 (3)给出若干例程,演示通过调用自己的库函数来实现相关问题的求解。 课题2:设计出顺序表结构的相关函数库,以便在程序设计中调用。要求: (1)包括线性表的各种基本函数以及常用函数(自己确定函数、函数形式及理由)。 (2)最好能借助语言环境实现图形显示功能,以便能将抽象的数据结构以图形方式显示出来,将复杂的运行过程以动态方式显示出来。 (3)给出若干例程,演示通过调用自己的库函数来实现相关问题的求解。 课题3:设计程序以实现任意两个高次多项式的加法和乘法运算。 要求: (1)所设计的数据结构应尽可能节省存储空间。 (2)程序的运行时间应尽可能少。 课题4:设计一个模拟计算器的程序,要求能对包含加、减、乘、除、括号运算符及SQR和ABS函数的任意整型表达式进行求解。 要求:要检查有关运算的条件,并对错误的条件产生报警。 课题5:设计出二叉链表结构的相关函数库,以便在程序设计中调用。要求: (1)包括二叉树的各种基本函数以及常用函数(自己确定函数、函数形式及理由)。 (2)最好能借助语言环境实现图形显示功能,以便能将抽象的数据结构以图形方式显示出来,将复杂的运行过程以动态方式显示出来。 (3)给出若干例程,演示通过调用自己的库函数来实现相关问题的求解。 课题6:设计出树结构的相关函数库,以便在程序设计中调用。要求: (1)包括树结构的存储结构及各种基本函数以及常用函数(自己确定函数、函数形式及理由)。 (2)最好能借助语言环境实现图形显示功能,以便能将抽象的数据结构以图形方式显示出来,将复杂的运行过程以动态方式显示出来。 (3)给出若干例程,演示通过调用自己的库函数来实现相关问题的求解。 课题7:选择合适的存储结构表示广义表,并能实现下列运算要求: (1)用大写字母表示广义表,用小写字母表示原子,并提供设置广义表的值的功能。 (2)取广义表L的表头和表尾的函数head(L)和tail(L)。

数据结构课程设计报告

山东建筑大学 课程设计成果报告 题目: 1.数组实现两个矩阵的相乘运算 2.成绩分析问题 课程:数据结构A课程设计 院(部):管理工程学院 专业:信息管理与信息系统 班级:信管*** 学生姓名:*** 学号:******** 指导教师:******* 完成日期:2016年12月29日

目录 目录 (2) 一、课程设计概述 (3) 二、课程设计题目一 (3) 用数组实现两个矩阵的相乘运算 (3) 2.1[问题描述] (3) 2.2[要求及提示]: (3) 2.3[详细设计] (4) 2.4[调试分析] (5) 2.5[运行结果及分析] (5) 三、课程设计题目二 (6) 成绩分析问题 (6) 3.1[问题描述] (6) 3.2[概要设计] (6) 3.3[存储结构] (7) 3.4[流程图] (7) 3.5[详细设计] (8) 3.6[调试分析] (8) 3.7[运行结果及分析] (22) 四、参考文献: (25)

一、课程设计概述 本次数据结构课程设计共完成两个题:用数组实现两个矩阵相乘运算、成绩分析问题。使用语言:C 编译环境:vc6.0 二、课程设计题目一 用数组实现两个矩阵的相乘运算 2.1[问题描述] #include “stdio.h” int r[6][6]; void mult(int a[6][6] , int b[6][6]){ } main(){ int i,j; int num1[6][6],num2[6][6]; printf(“请输入第一个矩阵的值:”,); for(i=1;i<=6;i++) for(j=1;j<=6;j++) scanf(“%d”,&num1[i][j]); printf(“请输入第二个矩阵的值:”,); for(i=1;i<=6;i++) for(j=1;j<=6;j++) scanf(“%d”,&num2[i][j]); mult(num1,num2); printf(“\n两个矩阵相乘后的结果为:”); for(i=1;i<=6;i++) {for(j=1;j<=6;j++) printf(“%4d”,r[i][j]); printf(“\n”); } } 2.2[要求及提示]: 1、要求完善函数mult( ),

数据结构课程设计报告

数据结构课程设计 设计说明书 TSP 问题 起止日期:2016 年 6 月27 日至2016 年7 月 1 日 学生姓名 班级 学号 成绩 指导教师( 签字) 2016 年7 月 1 日

目录 第1 章需求分析.................................................................................1... 1.1 简介 (1) 1.2 系统的开发背景 (1) 1.3 研究现状 (1) 第2 章概要设计.................................................................................2... 2.1 系统开发环境和技术介绍 (2) 2.2 系统需求分析 (2) 2.2.1 总体功能分析 (2) 2.2.2 核心功能分析 (3) 第3 章详细设计...................................................................................4... 3.1 系统开发流程 (4) 3.2 系统模块设计 (4) 3.3 系统结构 (6) 3.2 系统流程图 (6) 第4 章调试分析...................................................................................7... 4.1 程序逻辑调试 (7) 4.2 系统界面调试 (8) 第5 章测试结果...................................................................................9... 5.1 测试环境 (9) 5.2 输入输出测试项目 (9) 5.3 测试结果 (10) 结论.....................................................................................................1..1.. 参考文献................................................................................................1..1. 附录.......................................................................................................1..2..

关于数据结构课程设计心得体会范文

关于数据结构课程设计心得体会范文 心得体会是指一种读书、实践后所写的感受性文字。是指将学习的东西运用到实践中去,通过实践反思学习内容并记录下来的文字,近似于经验总结。下面是小编搜集的关于数据结构课程设计心得体会范文,希望对你有所帮助。 关于数据结构课程设计心得体会(1) 这学期开始两周时间是我们自己选题上机的时间,这学期开始两周时间是我们自己选题上机的时间,虽然上机时间只有短短两个星期但从中确实学到了不少知识。上机时间只有短短两个星期但从中确实学到了不少知识。 数据结构可以说是计算机里一门基础课程,据结构可以说是计算机里一门基础课程,但我觉得我们一低计算机里一门基础课程定要把基础学扎实,定要把基础学扎实,然而这次短短的上机帮我又重新巩固了 c 语言知识,让我的水平又一部的提高。数据结构这是一门语言知识让我的水平又一部的提高。数据结构这是一门知识,纯属于设计的科目,它需用把理论变为上机调试。 纯属于设计的科目,它需用把理论变为上机调试。它对我们来说具有一定的难度。它是其它编程语言的一门基本学科。来说具有一定的难度。它是其它编程语言的一门基本学科。我选的上机题目是交叉合并两个链表,对这个题目,我选的上机题目是交叉合并两个链表,对这个题目,我觉得很基础。刚开始调试代码的时候有时就是一个很小的错觉得很基础。 刚开始调试代码的时候有时就是一个很小的错调试代码的时候误,导致整个程序不能运行,然而开始的我还没从暑假的状导致整个程序不能运行,态转到学习上,每当程序错误时我都非常焦躁,态转到学习上,每当程序错误时我都非常焦躁,甚至想到了放弃,但我最终找到了状态,一步一步慢慢来,放弃,但我最终找到了状态,一步一步慢慢来,经过无数次的检查程序错误的原因后慢慢懂得了耐心是一个人成功的必然具备的条件! 同时,通过此次课程设计使我了解到,必然具备的条件! 同时,通过此次课程设计使我了解到,硬件语言必不可缺少,要想成为一个有能力的人,必须懂得件语言必不可缺少,要想成为一个有能力的人,硬件

数据结构课程设计题目

数据结构课程设计 一、考核方法和容 根据课程设计过程中学生的学生态度、题目完成情况、课程设计报告书的质量和回答问题的情况等按照10%、40%、30%、20%加权综合打分。成绩评定实行优秀、良好、中等、及格和不及格五个等级。 评分标准: 优秀:答辩所有问题都能答出+报告良好 或报告良好+实现“提高部分”的功能; 良好:答辩所有问题都能答出+报告一般; 或报告一般+实现“提高部分”的功能; 中等:答辩大部分问题能答出+报告良好; 及格:答辩大部分问题能答出+报告一般; 以下四种,都不及格: 1)答辩几乎答不出问题; 2)报告几乎都是代码; 3)雷同部分达到60%; 4)课设报告与数据结构和c/c++关联不大。 课设报告的装订顺序如下: 任务书(签名,把题目要求贴在相应位置,注意下划线)-----目录(注意目录的格式,页码)-----1、设计任务(题目要求)-----2、需求分析(准备选用什么数据逻辑结构?数据元素包含哪些属性?需要哪些函数?为什么要这样设计?最后列出抽象数据类型定义)-----3、系统设计(设计实现抽象数据类型,包含选择什么物理存储方式?数据元素的结构体或类定义,以及各函数的设计思路,算法,程序流程图等)----4、编码实现(重要函数的实现代码)-----5、调试分析(选择多组测试数据、运行截图、结果分析)-----6、课设总结(心得体会)-----7、谢辞-----8、参考文献; 课设报告打印要求: B5纸打印,报告总页数控制在10—15页,报告中不能全是代码,报告中代码总量控制在3页。版式:无页眉,有页码,页码居中 字号:小四,单倍行距 字体:宋体+Times new Romar 截图:截图要配图的编号和图的题目,如:“图1 Insert函数流程图” 二、课程设计的题目 1.长整数的加法运算 2.通讯录管理系统的设计与实现——顺序表 3.广义表的应用 4.学生成绩管理系统的设计与实现 5.家谱管理系统的设计与实现

数据结构课程设计报告模板

数据结构课程设计报告模板 成绩 计算机与信息工程学院 专业名称信息与计算科学 学生班级 10 级1班 学生姓名刘远远 学生学号 2010025707 设计起止时间: 2012年12月17日至 2012年12月21日 课程设计任务书 一、课程设计题目: 线性表的应用(大数运算) 二、课程设计目的与要求: 1、课程设计目的 (1)对数据结构中线性结构的理解和掌握; (2)熟练掌握顺序和链式存储结构有关知识和方法; (3)深入掌握各种数据结构的理论知识和实践操作; (4) 养成良好的编程风格,掌握各种数据结构的编程思想和编程方法; (5)将数据结构的理论知识和实践有机结合起来,为后续知识的学习 做好准备。 2、课程设计要求 (1) 选择合适的存储结构实现大数存储; (2) 设计算法,采用顺序存储结构完成大数的阶乘运算; (3) 设计算法,采用链式存储结构完成大数的加法运算; (4) 设计算法,选择合适的存储结构完成大数的乘法运算;

(5) 其中某一算法采用两种存储结构实现。三、工作计划: 第一阶段(12月17日,12月18日): 查阅各种数据结构相关资料书籍,整理出课程设计初步模型,并形成 课程设计的整体理论框架,理论模型 ; 第二阶段(12月19日,12月21日): 在DEV-C++5或TURBOC2相关开发语言上,进行编码、上机调试, 逐步形成完善的设计程序,使其达到上机完善演示出系统性的课程设计。 四、课程设计提交的文件: (1) 课程设计报告 (2) 课程设计可运行程序(刻录成光盘) 指导教师: 张绍兵 2012 年 12 月 1日 2 线性表有两种不同的存储结构,分别是顺序存储结构和链式存储结构,在实际中应用十分广泛。本设计要求分别利用线性表的两种存储结构,设计算法完成对大数的阶乘、加法、乘法的求解。 数据结构是一门研究非数值计算的程序设计问题中的操作对象以及它们之间的关系的操作的学科,在本次课程设计中,定义存储结构均采用了数据结构中的抽象数据类型,而抽象数据类型是指一个数据模型以及定义在改模型上的一组操作,抽象数据类型的定义仅仅取决于它的一组逻辑特性,而与计算机内部如何表示和实现无关,即不论其内部结构如何变化,只要它的数学特性不变,都不影响其外部的使用。选择合适存储结构实现大数运算。首先需要先解释的是这里大数计算的因数和结果精度一般是少则数十位,多则几万位。在C语言中定义的类型中精度最多只有二十多位,因而在此我们采取用线性表的顺序和链表存储结构的方式来存放大数,

相关文档
最新文档