《数据结构与算法课程设计报告》文档规范
数据结构课程设计——报告(样例)

《数据结构与算法》课程设计报告王婧、龚丹、宋毅编写题目:航空订票管理系统学期:2014秋班号:学号:姓名:成绩:哈尔滨华德学院电子与信息工程学院2014年12月一、实训设计的目的与要求(注:正文为宋体,五号字,为单倍行距)(一)课程设计目的(不少于100字)1.数据结构课程设计是综合运用数据结构课程中学到的几种典型数据结构,以及程序设计语言(C语言),自行实现一个较为完整的应用系统。
2.通过课程设计,自己通过系统分析、系统设计、编程调试,写实验报告等环节,进一步掌握应用系统设计的方法和步骤,灵活运用并深刻理解典型数据结构在软件开发中的应用。
3.学会将知识应用于实际的方法,提高分析和解决问题的能力,增加综合能力。
具体的有:(1)熟练掌握链表存储结构及其建立过程和常用操作;(2)熟练掌握队列的建立过程和常用操作;(3)学会自己调试程序的方法并掌握一定的技巧。
(二)题目要求(不少于100字)1.每条航线所涉及的信息有:终点站名、航班号、飞机号、飞机周日(星期几)、乘员定额、余票量、订定票的客户名单(包括姓名、订票量、舱位等级1,2或3)以及等候替补的客户名单(包括姓名和所需数量)。
2.系统能实现的操作和功能如下:(1)查询航线:根据客户提出的终点站名输出如下信息:航班号、飞机号、星期几飞行和余票额;(2)承办订票业务:根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若有余票,则为客户办理订票手续,输出座位号;若已满员或余票量少余订票额,则需重新询问客户要求。
若需要,可登记排队候补;(3)承办退票业务:根据客户提出的情况(日期、航班号),为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其它排队候补的客户。
二、实训环境配置Windows系统CodeBlocks三、设计正文1.需求分析本订票系统能够实现全部航线信息的浏览功能、订票客户信息的查询功能、单条航线查询功能、订票功能和退票功能。
《数据结构与算法》课程设计报告范例1

《数据结构与算法》课程设计报告姓名:学号:专业:信息与计算科学一、课题:链表的维护与文件形式的保存以有序链表结构表示某家电商场的库存模型。
提/进货时,需对链表进行维护。
每个工作日结束后,应将该链表以文件形式保存;每日营业前,应从文件中恢复该有序链表结构。
链表接点的数据域包括家电名称,品牌,单价和数量,以单价的升序体现链表的有序性。
程序包括:初始化,创建表,插入,删除,更新数据,查询及链表数据与文件之间的转换等;二、功能、算法、体会描述:系统主要有两个界面,第一个界面是查看界面,任何人可以查看到多个库存或日志文件(050902--050905),如果某个库存文件丢失了,可以通过操作恢复,在这也可以也可以查看到某日的金额统计情况,第二个界面是操作界面,只有操作员可以通过密码进入,可以对某个指定的库存文件进行进货,提货,删货,排序,查询操作,操作的情况可以被系统随时保存,当您想退出此界面时可保存库存和日志情况,文件名可自定,保存完后,自动退回到第一个界面,您当然就可以在查看界面中查看到您刚刚保存的库存或者日志文件了。
1.库存查看功能:基本思想:利用SetupGoodsList( )函数,将库存文件内容先转成链表形式,然后利用TraverseList( )函数,遍历一个链表,就可以直接显示查看到了。
具体步骤:先将文件读到结构体中,读满一个结构体内容就将此结构体连到定义好的链表上,这儿利用了InsertRear( )函数,一直这样读下去只到文件里读不到内容为止,语句描述如下:while(ifstr>>g.code){ifstr>>>>g.mark>>g.minq>>g.curq;InsertRear(L,g);}2.日志查看功能:日志文件的内容看起来跟库存文件差不多,但是里面多了个“操作情况”这一览,所以在读的时候要注意这一点,实现这个功能的我编了rizhichakan( )函数基本思想:将文件内容独到结构体数组中,然后再显示出来具体步骤:先读一个字符串到数组d[ ]中,然后用strcmp( ),判断是不是“j”字符串,如果是就连读5个字符串到定义好的结构体数组中,因为这句话是放在while( )循环里的,要能够的起循环就要不断的给d[ ]赋新值,所以循环语句中还有一句:再读第6个字符串到d[ ]中,只要符合循环条件的都会被连续加到结构体数组中,语句描述为:ifstr>>d;//因为是比较两个字符串所以要一个数组while(strcmp(d,"j")==0){ifstr>>r[x].code>>r[x].name>>r[x].mark>>r[x].minq>>r[x].curq;ifstr>>d[0]; //数组赋不起来,所以改成了元素x++;}其它以“t”“s”开头的也同样的道理,这样就将处了开头的“j”“t”“s”字符以外的信息内容全分别存到三个结构体数组中,这样往外显示的时候可以更清楚方便准确,然后就到用for( )语句循环的将结构体内容显示了,语句描述为:for(p=1;p<x;p++){cout<<setw(8)<<"j";cout<<setw(9)<<r[p].code<<setw(16)<<r[p].name<<setw(16)<<r[p].mark<<setw(10)<<r[p]. minq<<setw(10)<<r[p].curq<<endl;体会:在这懂了strcmp( )是比较两个字符串的,不是单纯的字符,对while()循环有了更深刻的理解,明白了文件的内容要经过一个中间环节,才能够显示,这儿的中间环节就是结构体数组。
数据结构与算法课程设计

数据结构与算法课程设计一、课程目标知识目标:1. 理解并掌握常见的数据结构(如线性表、树、图等)的基本概念和应用场景;2. 学习并掌握基本算法设计与分析技巧,包括排序、查找、递归等;3. 了解不同数据结构和算法在实际问题中的应用和性能分析。
技能目标:1. 能够运用所学数据结构设计简单的程序,解决实际问题;2. 能够运用算法分析技巧,评价算法的性能,并进行优化;3. 培养学生的编程能力、逻辑思维能力和问题解决能力。
情感态度价值观目标:1. 激发学生对数据结构与算法的兴趣,培养其主动探究和钻研的精神;2. 培养学生的团队合作意识,使其学会在团队中协作解决问题;3. 培养学生严谨、踏实的学术态度,认识到数据结构与算法在计算机科学中的重要性。
课程性质:本课程为高中信息技术课程,旨在帮助学生掌握数据结构与算法的基本知识,提高编程能力和问题解决能力。
学生特点:高中学生已具备一定的编程基础和逻辑思维能力,对新鲜事物充满好奇心,但需加强对数据结构与算法的实践操作和深入理解。
教学要求:结合学生特点,注重理论与实践相结合,通过案例教学和任务驱动,让学生在实际操作中掌握数据结构与算法的知识,提高其编程能力和问题解决能力。
同时,关注学生的情感态度价值观培养,使其形成良好的学习习惯和团队合作意识。
在教学过程中,将课程目标分解为具体的学习成果,便于教学设计和评估。
二、教学内容1. 数据结构部分:- 线性表:定义、顺序存储、链式存储;- 栈和队列:基本概念、应用场景、实现方法;- 树:二叉树、遍历方法、线索二叉树;- 图:图的表示方法、遍历算法、最小生成树、最短路径。
2. 算法部分:- 排序算法:冒泡排序、选择排序、插入排序、快速排序、归并排序;- 查找算法:顺序查找、二分查找、哈希查找;- 递归算法:递归概念、应用实例、递归与栈的关系;- 算法分析:时间复杂度、空间复杂度、算法优化。
3. 教学大纲:- 第一周:数据结构概述,线性表的概念及存储;- 第二周:栈和队列,树的基本概念;- 第三周:二叉树及遍历方法,线索二叉树;- 第四周:图的表示和遍历,最小生成树和最短路径;- 第五周:排序算法,查找算法;- 第六周:递归算法,算法分析。
《数据结构课程设计》报告格式及要求

《uml建模课程设计》报告课题名称:选课系统专业:软件工程班级: KT823-1学号: 2008k230125姓名:闵何招指导教师:翟亚红、梅琴成绩:2010 年 1 月14 日(凡是老师设置好的格式,严禁修改。
如果需要向文档中粘贴文字,必须使用菜单中“编辑”-“选择性粘贴”-“无格式文本”完成,严禁直接粘贴。
此处空一行,在您提交的报告中将此段文字删除)目录(报告写好后,选中下面具体目录后,用右键快捷菜单中的“更新域”—“只更新页码”将目录更新。
此处空一行,在您提交的报告中将此段文字删除)1 前言 (1)2需求分析 (1)3概要设计(特殊功能) (1)4详细设计 (2)5源代码及调试 (2)6特殊问题解决方法 (2)7使用说明及测试结果 (2)8结论 (2)9总结与体会 (3)10参考文献 (3)(报告正文部分,在您提交的报告中将此段文字删除):(要求:正文部分一律用小四号字,宋体,1.5倍行距。
一级标题为黑体小三无缩进靠左。
二级标题为黑体四号无缩进靠左。
三级标题为黑体小四号无缩进靠左。
)(以下内容,除标题外,自己展开写,在您提交的报告中将相关提示文字删除,在您提交的报告中将此段文字删除)1 前言1.1 课题简介课程设计的具体题目名称、目的、意义、具体要实现的内容、预期实现效果等。
(此段自行扩展)1.2 方案及其论证(此段自行扩展)拟采用的解决方案(所选开发软件及原因、系统功能结构、实现技术);可行性分析;设计进度安排;2需求分析对问题的详细描述,包括:你要解决一个什么样的问题,这个问题给你提出了什么样的要求,哪些要求是很明确的,哪些要求是自己认为可能会出现的;在你解决的问题中都出现了哪些对象,这些对象之间有怎样的关系,这些对象相互作用是否完全反映了问题的需求;都有哪些系统外的人或事物来使用这个系统,它们会怎样使用它;以及其它你认为重要的事情。
3概要设计(特殊功能)对你要实现的系统的总体设计,包括:你系统的系统结构和体系框架;项目框图及本工作在项目中的地位;系统中自己完成模块部分的所有对象的概要设计(如对象的主要职责和对象之间的相互关系);主要的控制流程;重要的功能流程设计及方案选择等内容。
数据结构与算法课程设计报告要求

四、课程设计评分标准:
1.程序设计质量(占40%)
2.课程设计报告质量(占40%)
3.平时(占20%)
附:课程设计报告格式。
1、需求分析说明(说明为何做该题目,程序最终需要完成的功能,从其需求上说明。
)
2、总体设计(从总体上说明该题目的框架,用文字和图表说明)
3、详细设计(对数据结构进行详细的描述,设计好相应数据结构以及其操作功能,要求用
C++设计成类;用文字详细描述每个功能实现的算法及思路。
)
4、实现部分(主要描述程序调试过程,报告中只要贴入核心代码)
5、程序测试(给出各测试数据及其对应的测试结果,和程序运行图贴于此处。
并能对程序运
行结果分析之,且需提出改进算法。
)
6、总结
7、自需要提交电子文档:学号_报告.doc 学号_源代码.rar或者学号_源代码.zip
****课程设计报告题目:
学生姓名:
学号:
班级:
指导教师:
201 年月日。
数据结构与算法课程设计程序及报告

数据结构与算法课程设计报告题目两两相连的房间问题:一所奇怪的房子,这所房子里有n个房间,每个房间里有一些门通向别的房间,可是这些门十分奇怪,它们只能从房间a开向房间b,也就是说,一扇从a开向b的门是不能让一个人从b房间走到a房间的。
你能计算一下任意两个房间之间都互相相通吗?问题分析此程序需要完成如下要求:在这所房子里,从任意一个房间开始,按照开门的方向,均能够找到一个合适的路线,使得一个人能够不重复的到达其他的每一个房间,所以,需以每一个房间都为一次起始点来走向其他的房间,以此来判断这所房子里的任意两个房间之间是否互相相通。
实现本程序需要解决以下问题:1.如何表示每一个房间,即存储房间的信息,并且还要确定这所房子里的各个房间的位置。
2.各个房间之间的门,以及门是从哪个房间开向哪个房间的该如何表示和存储的。
3.从某一个房间开始,如何走到其他各个房间,即如何对房间进行遍历。
4.为了在遍历过程中,不重复的遍历每一个房间,该如何标记已被遍历过的房间,从而只访问未走过的房间。
5.最后通过什么的遍历方式才能判断各个房间之间是否互相相通。
数据结构的选择和概要设计通过对题目要求的理解,我们可以用图来表示这所房子,而房子中的各个房间就相当于图中的各个结点,由于房间的门是有方向的,一扇从a开向b的门是不能让一个人从b房间走到a 房间的,从而可知该图为有向图,那么门就相当于有向图中的弧,从一个门开向另一个门即代表有向图中弧的起始点和终止点。
对于图的存储,我采用邻接表的形式来存储,并将每一个房间进行编号,对于邻接表,则需要定义一个邻接表结点类型、邻接表表头结点类型,通过表头与结点的连接而将有向图中弧的信息存储起来。
那么人从任意一个房间走向另一个房间,即相当于有向图中从一个结点按照弧的信息访问其他的结点,可以采用深度优先搜索遍历。
如果从每一个结点以起始点开始一次遍历就都能访问到其他结点的话则说明有向图是连通图,即该房子里的各个房间能够互相相通。
《数据结构与算法》课程设计格式要求

《数据结构与算法》课程设计(2010/2011学年第二学期第20周)指导教师:孙麒郭奕亿班级:09计算机科学与技术1班学号:E09620118姓名:倪建鹤《数据结构与算法》课程设计任务书《数据结构与算法》是计算机专业重要的核心课程之一,在计算机专业的学习过程中占有非常重要的地位。
《数据结构与算法课程设计》就是要运用本课程以及到目前为止的有关课程中的知识和技术来解决实际问题。
特别是面临非数值计算类型的应用问题时,需要选择适当的数据结构,设计出满足一定时间和空间限制的有效算法。
本课程设计要求同学独立完成一个较为完整的应用需求分析。
并在设计和编写具有一定规模程序的过程中,深化对《数据结构与算法》课程中基本概念、理论和方法的理解;训练综合运用所学知识处理实际问题的能力,强化面向对象的程序设计理念;使自己的程序设计与调试水平有一个明显的提高。
赫夫曼编码/译码器1. 问题描述利用赫夫曼编码进行通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本。
这要求在发送端通过一个编码系统对待传输数据预先编码,在接收端将传来的数据进行译码(复原)。
对于双工信道(即可以双向传输信息的信道),每端都需要一个完整的编/译码系统。
试为这样的信息收发站编写一个赫夫曼码的编/译码系统。
2.基本要求一个完整的系统应具有以下功能:(1) I:初始化(Initialization)。
从终端读入字符集大小n,以及n个字符和n个权值,建立赫夫曼树,并将它存于文件hfmTree中。
(2) E:编码(Encoding)。
利用已建好的赫夫曼树(如不在内存,则从文件hfmTree中读入),对文件ToBeTran中的正文进行编码,然后将结果存入文件CodeFile中。
(3) D:译码(Decoding)。
利用已建好的赫夫曼树将文件CodeFile中的代码进行译码,结果存入文件Textfile中。
以下为选做:(4) P:印代码文件(Print)。
将文件CodeFile以紧凑格式显示在终端上,每行50个代码。
数据结构与算法课程设计报告

合肥学院计算机科学与技术系课程设计报告2012 ~2013 学年第 2 学期课程数据结构与算法设计课程设计课程设计名称欧拉回路学生姓名陶飞学号1104012039专业班级计算机科学与技术11级3班指导教师李红,何立新,华珊珊,陈艳平2013 年 3月题目:欧拉回路是指不令笔离开纸面,可画过图中每条边仅一次,且可以回到起点的一条回路。
现给定一个图,问是否存在欧拉回路?一.问题分析和任务定义:题目要求判断一个给定的图中是否存在欧拉回路。
由欧拉图的定义,当一个图存在欧拉回路时,该图称为欧拉图。
题目问是否存在欧拉回路即等价于问给定的图是否为欧拉图。
所以,证明给定图是欧拉图就说明该图存在欧拉回路,否则不存在欧拉回路。
根据高等教育出版社出版屈婉玲、耿素云、张立昂主编的《离散数学》P.296定理15.1可知:无向图G是欧拉图当且仅当G是连通图且没有奇度顶点。
要证明一个给定的图是否为欧拉图,证明给定的图是连通图且没有奇度顶点即可。
所以,解决题目中的问题就转化为证明给定图是否是连通图且没有奇度顶点。
首先要确定一给定的图是否为连通图。
这里我们可以通过图的深度优先搜索遍历确定。
从任意顶点出发,如果能深度优先遍历到所有的顶点就说明图中所有的顶点都是连图的即为连通图。
然后再确定给定的图是否没有奇度顶点。
我们可以以邻接矩阵的形式存储给定的图,对邻接矩阵的每行分别行进行扫描,记录每个顶点的度数,当每行扫描完后判断该顶点的度数是否为奇数,存在奇度顶点直接结束扫描,说明存在奇度顶点,给定图不是欧拉图。
即不存在欧拉回路。
否则继续扫描,当扫描完所有的行没有发现奇度顶点,即说明给定图没有奇度顶点。
当上述两个问题都确定以后根据定理,当且仅当给定图为连通图且没有奇度顶点时给定的图为欧拉图。
由此可确定,给定的图是否存在欧拉回路。
二.数据结构的选择与概要设计:1.数据结构的选择:图在我们所学的数据结构与算法课程中有四种存储方式:邻接矩阵、邻接表、十字链表和邻接多重表。
《 数据结构与算法》实验报告要求

《数据结构与算法》实验报告要求《数据结构与算法》实验报告要求实验报告首先要求有一个清晰醒目的报告标题,例如:《数据结构课程设计实验一:xxxxxxxxxx》。
报告至少要求具备以下四部分内容:一、简介这一部分需简单介绍题目内容,即该实验到底要做什么。
如果涉及明确的算法,最好再简单介绍一下算法产生的背景。
基本要求:实验内容必须覆盖完备。
二、算法说明这一部分需详细描述解决问题所需要用到的算法和重要的数据结构,即该实验到底应该怎么做。
基本要求:所有处理问题中所用到的关键算法都要描述清楚,而不是仅描述主函数。
算法和数据结构用伪码和图示描述,千万不要只写源代码加注释。
这一部分的目的是让读者在短时间内对作者解决问题的整体思路有个清楚的了解,表达方式必须比源代码通俗易懂。
如果读者感觉还不如直接读源代码来得明白,这一部分就失去了意义。
三、测试结果这一部分需根据题目类型设计提供相应的测试方法和结果。
对于需要比较不同算法性能优劣的题目,应设计并填写一张性能比较表格,列出不同算法在同一指标下的性能表现。
但仅仅罗列出一堆数据是不够的,还应将数字转化为图象、曲线等,帮助读者更直观地理解测试结果。
对于需要利用某算法解决某问题的题目,应设计并填写一张测试用例表。
每个测试用例至少应包括下列内容: ? 测试输入:设计一组输入数据; ? 测试目的:设计该输入的目的在于测试程序在哪方面可能存在的漏洞; ? 正确输出:对应该输入,若程序正确,应该输出的内容; ? 实际输出:该数据输入后,实际测试得到的输出内容; ? 错误原因:如果实际输出与正确输出不符,需分析产生错误的可能原因; ? 当前状态:分为“通过”(实际输出与正确输出相符)、“已改正”(实际输出与正确输出不符,但现在已修改正确)、“待修改”(实际输出与正确输出不符,且尚未改正)三种状态。
四、分析与探讨这一部分应是整篇报告中最令读者感兴趣的部分,分为两块内容: ? 测试结果分析。
数据结构课程设计——报告

数据结构课程设计——报告(样例)《数据结构与算法》课程设计报告王婧、龚丹、宋毅编写题目:航空订票管理系统学期: 2014秋班号:学号:姓名:成绩:哈尔滨华德学院电子与信息工程学院2014年12月一、实训设计的目的与要求(注:正文为宋体,五号字,为单倍行距)(一)课程设计目的(不少于100字)1.数据结构课程设计是综合运用数据结构课程中学到的几种典型数据结构,以及程序设计语言(C语言),自行实现一个较为完整的应用系统。
2.通过课程设计,自己通过系统分析、系统设计、编程调试,写实验报告等环节,进一步掌握应用系统设计的方法和步骤,灵活运用并深刻理解典型数据结构在软件开发中的应用。
3.学会将知识应用于实际的方法,提高分析和解决问题的能力,增加综合能力。
具体的有:(1)熟练掌握链表存储结构及其建立过程和常用操作;(2)熟练掌握队列的建立过程和常用操作;(3)学会自己调试程序的方法并掌握一定的技巧。
(二)题目要求(不少于100字)1.每条航线所涉及的信息有:终点站名、航班号、飞机号、飞机周日(星期几)、乘员定额、余票量、订定票的客户名单(包括姓名、订票量、舱位等级1,2或3)以及等候替补的客户名单(包括姓名和所需数量)。
2.系统能实现的操作和功能如下:(1)查询航线:根据客户提出的终点站名输出如下信息:航班号、飞机号、星期几飞行和余票额;(2)承办订票业务:根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若有余票,则为客户办理订票手续,输出座位号;若已满员或余票量少余订票额,则需重新询问客户要求。
若需要,可登记排队候补;(3)承办退票业务:根据客户提出的情况(日期、航班号),为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其它排队候补的客户。
二、实训环境配置Windows系统CodeBlocks三、设计正文1.需求分析本订票系统能够实现全部航线信息的浏览功能、订票客户信息的查询功能、单条航线查询功能、订票功能和退票功能。
数据结构与算法课程设计报告

数据结构与算法课程设计报告摘要:本文是对数据结构与算法课程设计的报告,主要介绍了课程设计的目标、设计思路和实现过程。
通过该课程设计,学生能够加深对数据结构和算法的理解,提高编程能力和问题解决能力。
本文详细介绍了课程设计的背景和需求分析,然后提出了设计思路和方案,并对具体实现进行了详细的说明和分析。
最后,总结了课程设计的收获和不足之处,并提出了改进的建议。
关键词:数据结构,算法,课程设计,设计思路,实现过程第一部分:引言1.1 背景数据结构和算法是计算机科学中非常重要的基础知识,对于软件开发和问题解决都起着至关重要的作用。
因此,数据结构与算法课程设计作为计算机科学专业的核心课程之一,对于学生的学习和培养具有重要意义。
1.2 需求分析本课程设计的目标是通过实际的项目开发,让学生深入理解数据结构和算法的原理,并能够灵活运用于实际问题的解决中。
具体需求如下:学生能够选择合适的数据结构和算法来解决实际问题。
学生能够设计和实现基于数据结构和算法的算法。
学生能够分析和评估算法的效率和性能。
第二部分:设计思路与方案2.1 设计思路本课程设计的设计思路是通过实际的项目开发来实现学生对数据结构和算法的深入理解。
项目的选择应该能够涵盖多种数据结构和算法的应用,并且能够充分体现算法的效率和性能优化。
2.2 设计方案基于上述设计思路,我们选择了一个图论相关的项目作为课程设计的实践项目。
该项目涉及到图的表示和遍历、最短路径算法以及最小生成树算法等多个知识点。
学生需要设计和实现一个图的数据结构,并能够基于该数据结构实现相关的算法。
第三部分:具体实现与分析3.1 图的数据结构设计与实现为了表示一个图,我们选择了邻接表作为数据结构的实现方式。
邻接表能够有效地表示图的结构,并且支持图的遍历和算法的实现。
通过链表的方式,每个节点可以存储与其相邻的节点信息。
此外,我们还设计了相关的操作函数,包括添加节点、添加边、删除节点和删除边等。
3.2 最短路径算法实现与分析在设计最短路径算法时,我们采用了Dijkstra算法作为实现的基础。
数据结构与算法课程设计报告模版参考模板

《数据结构与算法》课程设计报告题目:本科生导师制问题与家族关系查询系统院(系):信息科学与工程专业班级:计算机应用技术1301班学生姓名:顾泉学号:20131201018指导教师:金兰20 14 年 12 月 29 日至20 15 年 1 月 9 日华中科技大学武昌分校制数据结构与算法课程设计任务书目录1 本科生导师制问题 (1)1.1需求 (1)1.2总体设计 (1)1.3详细设计及实现 (1)1.4运行结果 (1)2 停车场管理 (2)2.1需求 (2)2.2总体设计 (2)2.3详细设计及实现 (2)2.4运行结果 (2)3 大整数计算器 (3)3.1需求 (3)3.2总体设计 (3)3.3详细设计及实现 (3)3.4运行结果 (3)4 家族关系查询系统 (4)4.1需求 (4)4.2总体设计 (4)4.3详细设计及实现 (4)4.4运行结果 (4)5 地铁建设问题 (5)5.1需求 (5)5.2总体设计 (5)5.3详细设计及实现 (5)5.4运行结果 (5)总结 (6)(目录要求:目录题头用三号黑体字居中书写,隔行书写目录内容。
目录中各级题序及题标用小四号黑体字)(正文要求:一级标题,黑体,三号,居中;二级标题,黑体,小三号;三级标题,黑体,四号;正文,宋体,小四号,1.25倍行距)1本科生导师制问题1.1需求(二级标题用黑体三号,三级标题用黑体四号,下同)在高校的教学改革中,有很多学校实行了本科生导师制。
一个班级的学生被分给几个老师,每个老师带n个学生,如果该老师还带研究生,那么研究生也可直接带本科生。
本科生导师制问题中的数据元素具有如下形式:①导师带研究生(老师,((研究生1,(本科生1,…,本科生m1)),(研究生2,(本科生1,…,本科生m2))…))②导师不带研究生:(老师,(本科生1,…,本科生m))导师的自然情况只包括姓名、职称;研究生的自然情况只包括姓名、班级;本科生的自然情况只包括姓名、班级。
数据结构与算法课程设计报告格式-计算机学院2015级适用

“数据结构与算法课程设计”报告写作要求及示例一、报告要求:1.各位同学要严格按照要求写报告,A4 纸打印,用学校统一印发的课程设计报告封面封装(报告封皮各班班长到学院办公室领取)。
2.报告中不要求附全部的程序代码,但主要代码在详细设计中说明。
3.报告上的课程设计名称和指导教师按照《数据结构与算法课程设计计划书》中指定的填写。
4.报告字体及字号说明:中文使用宋体,西文使用Times New Roman。
一级标题使用四号加黑,其它次级标题使用小四加黑,正文使用小四不加黑(注:不要附代码)。
5.刻盘说明:统一刻录光盘保存文档和源码,每班一张(班长负责),卷标名称:数据结构与算法课程设计(**2010-*班),如:数据结构与算法课程设计(软件2015-1班)。
根目录中每个同学一个文件夹,文件夹中保存源代码及报告电子文档,目录名为学号加姓名,如:2015082339-刘德华。
6.提交报告说明:课程设计报告由各班长或学习委员收齐后,交给各班的课程设计指导教师。
报告提交时间:2017年1月9日(周一)。
具体提交地点和方式,由各班指导教师确定。
二、报告格式1.问题描述题目内容、基本要求、提高要求。
2.需求分析软件的基本功能、输入/输出形式、测试数据要求。
3.概要设计抽象数据类型、主程序流程及模块调用关系。
4.详细设计实现概要设计的数据类型、主程序以及其它模块的算法描述。
5.编码与调试分析编码与调试过程中遇到的问题及解决的办法,还存在哪些没有解决的问题?6.使用说明简要说明程序运行操作步骤。
7.测试结果准备典型的测试数据和测试方案,包括正确的输入及输出结果和含有错误的输入及输出结果。
8.自学知识自主学习了哪些新知识及主要知识点描述。
9.课程设计心得体会课程设计过程经验教训、心得体会。
三、课程设计报告示例题目:计算表达式的值1、问题描述对于给定的一个表达式,表达式中可以包括常数、算术运行符(“+”、“-”、“*”、“/”)和括号,编写程序计算表达式的值。
《数据结构课程设计报告》的书写规范及示例

《数据结构课程设计报告》的书写规范对于每一个应用程序所解决的问题,都应有规范说明的文档。
书写合格的文档和编程调试同等重要,是合格软件必不可少的文献。
本课程设计采用的规范说明格式如下:题目:一、问题描述1、题目内容2、基本要求3、测试数据二、需求分析1、(程序所能达到的基本功能)2、(输入的形式和输入值的范围)3、(输出的形式)4、(测试数据要求)三、概要设计1、(所需的ADT,它们的作用)2、(主程序流程及模块调用关系)3、(核心的粗线条伪码算法)四、详细设计1、(实现概要设计的数据类型,重点语句加注释)2、(每个操作的伪码算法,重点语句加注释)3、(主程序和其他模块的伪码算法,重点语句加注释)4、(函数调用关系图)五、调试分析1、(设计与调试过程中遇到的问题及分析、体会)2、(主要和典型算法的时空复杂度的分析)六、使用说明(简要说明程序运行操作步骤)七、测试结果(包括输入输出,输入集应多于需求分析的数据)八、附录(带注释的源程序)其中,问题描述旨在建立问题提出的背景环境,指明问题的求解的要求。
需求分析以无歧义的方式陈述说明程序设计的任务和功能。
概要设计说明程序中用到的所有抽象数据类型的定义、主程序流程和模块之间的层次关系。
详细设计实现概要设计中定义所有数据类型,对每个操作和核心模块写出伪码算法,画出函数的调用关系图。
调试分析主要记载调试过程、经验体会,并进行算法的时空分析。
使用说明讲述操作步骤和运行环境。
测试结果应包括运行的各种数据集和所有的输入输出情况。
附录主要指源程序代码和下达任务的其他原始文件。
数据结构课程设计报告示例数据结构课程设计报告题目:编制完成集合的交、并、差运算的程序专业年级:姓名:学号:12345 指导老师:杨先凤、游书涛完成日期:2012年1月6日成绩:一、问题描述1、题目内容:利用有序链表表示正整数集合,实现集合的交、并和差运算。
2、基本要求:由用户输入两组整数分别作为两个集合的元素,由程序计算它们的交、并、差集,并将运算结果输出。
数据结构课程设计报告要求及样本(最终版)范文

数据结构课程设计格式要求1.课程设计形式结构封面前部分目录课程设计形式结构主要部分附录部分参考文献2.排版与装订2.1 页面大小:全部采用A4纸。
2.2 行距:全部采用1.5倍行距(图表除外)。
2.3 页码:每页下端居中,全部采用阿拉伯数字排序,如1,2,3等。
2.4目录两字用黑体4号字居中,字与字之间空4个字距。
目录中的中文全部用宋体小4号字。
2.5 页眉:全部不加页眉。
2.6 页面设置:页边距上下左右各用2.4cm。
2.7封面:统一封面。
2.8 装订:一律左侧装订。
3.正文3.1一级标题一律用黑体4号字,左顶格,标题与段落之间不留空行。
正文其他部分全部用宋体小4号字,英文采用Times New Roman。
3.2图应有图题,放图下方居中,用阿拉伯数字编号,图题用黑体5号字,居中。
如:图1,图号后不加任何符号,空1个中文字距后写图题。
4.参考文献“参考文献”四字用黑体4号字居中,字与字之间空一个中文字距。
其后内容用宋体5号字。
具体格式可参考教务处发布的本科毕业论文格式要求(2008届开始启用)仲恺农业工程学院课程设计报告课程名称:数据结构院(系):计算机科学与工程学院专业班级:学号:姓名:指导老师:2承诺书郑重声明:本人所呈交的课程设计是本人在导师指导下独立撰写并完成的,课程设计没有剽窃、抄袭、造假等违反学术道德、学术规范和侵权行为。
本课程设计不包含任何其他个人或集体已经发表或撰写过的研究成果,如果引用则标识出了出处。
对本课程设计的研究做出贡献的个人和集体,均已在文中以明确方式标明。
课程设计与资料若有不实之处,本人承担一切相关责任。
特此声明。
签名:年月日目录1.线性表........................................... 错误!未定义书签。
2.栈和队列......................................... 错误!未定义书签。
3.树和二叉树....................................... 错误!未定义书签。
数据结构与算法课程设计报告

数据结构与算法分析课程设计报告课题名称: 1. txt编译器2. 带括号的算术表达式求值3. Huffman编码(二叉树用)4. 课表拓扑排序提交文档学生姓名:提交文档学生学号:同组成员名单:指导教师姓名:指导教师评阅成绩:指导教师评阅意见:..提交报告时间:2013年 1月 6日实验一:1.实验的目的和要求:<1>采用C++的ASCII码文件和串函数实现;<2>熟练掌握串运算的应用;<3>熟练掌握计算机系统的基本操作方法,了解如何编辑、编译、链接和运行一个C++程序;<4>上机调试程序,掌握查错、排错使程序能正确运行。
2.实验的环境:●硬件环境: Windows XP操作系统●软件环环境:Microsoft Visual Studio C++6.03.算法描述:●类的层次结构EditorNext_line();goto_line();insert_line();substitute_line();change_line();read_file();write_line();find_string();●测试程序说明按行读取文件->显示文本内容->删除指定行->在指定行插入->显示指定行内容4.源程序清单:(程序文字:6号字体,行距12磅)#include <iostream>#include <string>#include <fstream>#include <cmath>#include <cstdlib>using namespace std;/*链表的节点。
保存文件中一行的内容*/struct Line{int id;string content;struct Line* next;};class TextEditor{public:// 文件中一行最多的字符数enum{MAX_SIZE_PER_LINE = 10000};/*构造函数参数:fileName 文件路径*/TextEditor(string fileName);/*打印文件内容*/void print();/*保存文件*/void save();/*为文件增加一行参数:lineIndex 要增加的行所在行号content 要增加的行的内容返回:添加成功返回 true ,否则返回 false*/bool addLine(int lineIndex,string content);/*为文件删除一行参数:lineIndex 要删除的行所在行号返回:删除成功返回 true ,否则返回 false*/bool deleteLine(int lineIndex);/*为文件修改一行参数:lineIndex 要修改的行所在行号content 要修改的行的修改后的内容返回:修改成功返回 true ,否则返回 false*/bool modifyLine(int lineIndex,string content);/*搜索文件中的行参数:keyword 要搜索的行含有的关键字返回:搜索结果,是一个链表*/struct Line * searchLines(string keyword);/*查询文件的总行数返回:文件的总行数*/int getNumOfLines();private:// 文件路径string fileName;// 链表形式,按行存储文件在内存中struct Line * artical;};TextEditor::TextEditor(string fileName){this->fileName = fileName;this->artical = NULL;ifstream fin(this->fileName.c_str());if(fin){int lineId = 0;struct Line * pr, *p;char *buffe = new char[MAX_SIZE_PER_LINE+1];while(!fin.eof()){p = new struct Line();// 生成行号p -> id = ++ lineId;// 文件读入行内容fin.getline(buffe,MAX_SIZE_PER_LINE);p -> content = string(buffe);// 初始化指针p -> next = NULL;// 添加新的一行(新的节点)if(this->artical == NULL){this->artical = p;pr = p;}else{pr -> next = p;pr = p;}}}fin.close();}void TextEditor::print(){struct Line *p = this->artical;// 输出的行号的宽度int lineIdWidth = (int)log10(this->getNumOfLines()) + 1;while(p){// 设置行号输出的宽度cout.width(lineIdWidth);cout << (p -> id) << " : " << (p -> content) << endl;p = p -> next;}}void TextEditor::save(){ofstream fout(this->fileName.c_str());if(fout){struct Line *p = this->artical;while(p){fout << p->content;// 不是最后一行,输出一个换行符号if(p -> next != NULL){fout << endl;}p = p->next;}}fout.close();}bool TextEditor::addLine(int lineIndex,string content){int numOfLines = this->getNumOfLines();// 要插入新行的位置不合法if(lineIndex < 1 || lineIndex > (numOfLines+1)){return false;}else{// 新行struct Line * newLine = new struct Line();// 生成行号newLine -> id = lineIndex;// 行内容newLine -> content = content;// 初始化指针newLine -> next = NULL;if(this->artical == NULL){this->artical = newLine;}else{struct Line * pr = this->artical , *p = pr ;// 找到要插入行的位置while(p && (lineIndex > p->id )){pr = p;p = p -> next;}// 插入第一行特别处理if(lineIndex == 1){p = newLine -> next = this -> artical;this -> artical = newLine;}else{p = newLine -> next = pr -> next;pr -> next = newLine;}// 更改插入行之后所有行的行号while(p){p -> id ++;p = p -> next;}}return true;}}bool TextEditor::deleteLine(int lineIndex){int numOfLines = this->getNumOfLines();// 要删除行的位置不合法if(lineIndex < 1 || lineIndex > numOfLines){return false;}else{struct Line * pr = this->artical , *p = pr ;// 找到要删除行的位置while(p && (lineIndex != p->id )){pr = p;p = p -> next;}// 删除第一行要特别处理if(lineIndex == 1){this -> artical = p -> next;free(p);p = this -> artical;}else{pr -> next = p -> next ;free(p);p = pr -> next;}// 更改删除行之后所有行的行号while(p){p -> id --;p = p -> next;}return true;}}bool TextEditor::modifyLine(int lineIndex,string content){int numOfLines = this->getNumOfLines();// 要修改行的位置不合法if(lineIndex < 1 || lineIndex > numOfLines){return false;}else{struct Line * pr = this->artical , *p = pr ;// 找到要修改行的位置while(p && (lineIndex != p->id )){pr = p;p = p -> next;}// 修改行的内容p -> content = content ;return true;}}struct Line * TextEditor::searchLines(string keyword){struct Line * p = this->artical ,*pr ,*searchResult = NULL ;while(p){// 当前行含有要搜索的关键字if(p -> content.find(keyword) != string::npos){// 生成一个匹配项struct Line * matchLine = new struct Line();matchLine -> id = p -> id;matchLine -> content = p -> content;matchLine -> next = NULL;// 添加到第一条搜素结果要特殊处理if(searchResult == NULL){searchResult = matchLine;pr = matchLine;}else{pr -> next = matchLine;pr = matchLine;}}p = p -> next;}return searchResult;}int TextEditor::getNumOfLines(){int numOfLines = 0;struct Line *p = this->artical;while(p){numOfLines++;p = p->next;}return numOfLines;}int main(int argc, char *argv[]){// 菜单while(1){/*第一级菜单*/cout<<"[B/b] B E G I N"<<endl;cout<<"[Q/q] Q U I T "<<endl;char ch_1;cin >> ch_1;switch(ch_1){case 'B':case 'b':{system("cls");cout<<"Welcom To My Editor"<<endl;cout << "Please input the file name:";string fileName;cin >> fileName;TextEditor textEditor(fileName);system("cls");// 输出文件内容//textEditor.print();while('B'||'b'){/*第二级菜单*/cout << endl;cout<<"---------[A/a] Add ------"<<endl;cout<<"---------[D/d] Del ------"<<endl;cout<<"---------[M/m] Modify ------"<<endl;cout<<"---------[S/s] Search ------"<<endl;cout<<"---------[R/r] Read ------"<<endl;cout<<"---------[H/h] Help ------"<<endl;cout<<"---------[B/b] Back ------"<<endl;char ch_2;cin >> ch_2;switch(ch_2){// 添加行case 'A':case 'a':{system("cls");cout << "Please input the linenum:[1~" << (textEditor.getNumOfLines()+1) << "] :";int lineIndex;cin >> lineIndex;cout << "Please input the content:" ;string content;cin >> content;if(textEditor.addLine(lineIndex,content)){cout << "Done!"<<endl;}else{cout << "Fall!"<<endl;}break;}// 删除行case 'D':case 'd':{system("cls");cout << "Please input the linenum[1~" << textEditor.getNumOfLines() << "] :";int lineIndex;cin >> lineIndex;if(lineIndex > textEditor.getNumOfLines()){cout<<"Errors: invalid linenum!"<<endl;}else{if(textEditor.deleteLine(lineIndex)){cout << "Done!"<<endl;}else{cout << "Fall!"<<endl;}}break;}// 修改行case 'M':case 'm':{system("cls");cout << "Please input the linenum[1~" << textEditor.getNumOfLines() << "] :";int lineIndex;cin >> lineIndex;if(lineIndex > textEditor.getNumOfLines()){cout<<"Errors: invalid linenum!"<<endl;}else{cout << "Please input the content:" ;string content;cin >> content;if(textEditor.modifyLine(lineIndex,content)){cout << "Done!"<<endl;}else{cout << "Fall!"<<endl;}}break;}// 搜索行case 's':case 'S':{system("cls");cout << "Please input the keyword:";string keyword;cin >> keyword;// 搜索行struct Line * searchResult = textEditor.searchLines(keyword) ,*p = searchResult;// 输出搜索结果cout << "search result:"<< endl;while(p){cout << p->id << " : " << endl << p->content << endl;p = p -> next;}break;}// 打印文件case 'R':case 'r':{system("cls");textEditor.print();break;}// 返回case 'H':case 'h':{system("cls");cout<<"Add : To add a line "<<endl;cout<<"Del : To delete a line"<<endl;cout<<"Modify : To modify a line"<<endl;cout<<"Search : To output a line which has the keyword"<<endl;cout<<"Read : San the file"<<endl;cout<<"Back : Back to the top"<<endl;break;}case 'B':case 'b':{system("cls");textEditor.save();break;}// 选择错误default:{system("cls");cout<<"Errors: invalid command"<<endl;break;}} // end switch// 从二级菜单返回一级菜单if(ch_2 == 'B'||ch_2 == 'b'){break;}}// end while(1)break;}case 'Q':case 'q':{exit(0);break;}default:{cout<<"Errors: invalid command"<<endl;break;}}}return 0;}5.运行结果:6.实验运行情况分析(包括算法、运行结果、运行环境等问题的总体讨论)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
合肥学院计算机科学与技术系
《课程设计报告》文档规范及注意事项
一、按照《实验指导书》中“课程设计示例”模式写;即:应包括1、题目,
2、问题分析,
3、数据结构的选择和概要设计,
4、算法思想,
5、详细设计和主要编码段,
6、上机调试情况记录,
7、测试用例、结果及其算法性能分析,
8、用户使用说明,
9、参考文献,10、附录(完整源程序)这几个部分,按顺序书写;
二、文档格式为A4纸、页边距上下2.54cm,左右3.17cm、宋体、5号字、一级标题加粗、单倍行距;
三、图、表应有标号和名称,且图名位于图下,表名位于表格上方;
四、参考文献格式为:参考《合肥学院学报(理科版)》参考文献格式。
序号作者.书名.出版地:出版社名称,出版社年份
序号作者.论文题名.期刊名称,年份,卷号(期号):起至页码
五、附录中的源代码应有适当的注释;
六、按照格式要求填写《课程设计报告封面》、《课程设计评分表》中学生应填写的内容。
七、课程设计结束后的周五,学生应提交的文档包括纸质文档和电子文档,纸质文档和电子文档的内容应完全一致。
纸质文档包括:《课程设计报告》1份(用塑料拉杆夹装订好)、《课程设计评分表》1份、《课程设计任务书》1份(可以双面打印)、《课程设计的心得体会》1份;纸质文档装入“课程设计资料袋”交课程设计指导老师,各指导老师在“课程设计资料袋”签字后转交各班任课老师。
电子文档包括:上述纸质文档的电子档、源程序、程序的可执行文件(.exe);将这些电子档形成一个压缩文件,文件名为:班级-学号-姓名-课程设计题名,发
送至各班任课老师的邮箱(注意确认)。
《数据结构与算法》精品课程建设组。