2012年数据结构毕业课程设计题目及报告范例

合集下载

数据结构课程设计报告(上传)

数据结构课程设计报告(上传)

《数据结构》课程设计报告5 : 成绩分析问题16 : 通讯录学院(系):*************班级:*********学生姓名:* * * 学号**********指导教师:* * *时间:从2011年12月31日到2012年1月6日一、课程设计概述:本次数据结构课程设计共完成两个题:成绩分析问题和通讯录使用语言:C编译环境:TC3.0 / VC6.0二、课程设计题目一[实验内容]成绩分析问题[问题描述]录入、保存一个班级学生多门课程的成绩,并对成绩进行分析。

[需求分析](1)通过键盘输.入各学生的多门课程的成绩,建立相应的文件input.dat。

(2)对文件input.dat中的数据进行处理,要求具有如下功能:1)按各门课程成绩排序,并生成相应的文件输出。

2)计算每人的平均成绩,按平均成绩排序,并生成文件。

3)求出各门课程的平均成绩、最高分、最低分、不及格人数、60~69分人数、70~79分人数、80~89分人数、90分以上人数。

4)根据姓名或学号查询某人的各门课成绩,重名情况也能处理。

(3)界面美观。

[概要设计]-=ADT={int r ight(ST D *h,int i);// 查看学号i 是否存在void news tu(STD *h);// 新增一个学生STD *f ind(STD *h,c har na m);// 查找姓名为nam的学生,返回该学生上一结点的地址STD *f ind(STD *h,c har num);// 查找学号为mum的学生,返回该学生上一结点的地址void s how(STD *p,int i);// 输出结点p的信息,若i=0 只输出姓名和学号,i=1,输出全部信息void s how(STD *h);// 按提示输出学生的信息void int os c ores(STD*h);// 按提示录入学生的成绩void s or t(STD *h,int a,int b);/*对学生信息排序,a为0以数学成绩为关键字排序a=1-4为英语成绩、计算机成绩、总成绩、学号。

数据结构课程设计报告范文

数据结构课程设计报告范文

数据结构课程设计报告课程设计报告课程设计题目:链表的创立、插入、删除、修改学生姓名专业计算机科学与技术班级学号指导教师艾9月 30日一、实验题目:实现链表的创立、插入、删除和修改任务:实现链表的创立、插入、删除、修改和输出要求:建立一个简单的人机对话,创立、插入、删除、修改和输出功能能够根据需要选择使用。

二、实验时间、地点:-12-26~ -12-30、信工楼302三、实验目的本次课程设计的主要目的是综合运用所学的数据结构知识解决一个比较实际问题,侧重对链表、数组、字符串、图、树等相关内容的综合应用,使同学们能进一步熟悉掌握数据结构的基础知识,进一步提升自己的解决问题和编程调试能力,为后续专业课程的学习打下良好的基础。

四、实验要求1. 了解数据结构及其分类、数据结构与算法的密切关系;2. 熟悉各种基本数据结构及其操作,学会根据实际问题来选择数据结构;3. 掌握设计算法的步骤和分析方法;4. 掌握数据结构在排序和查找等常见算法中的应用。

5. 独立完成;6.每个人需按照选题规则确定好自己的题目(注意不是多人完成一题,每人独立完成一题),不得以任何理由选择其它的题目,当然在完成自己的题目之后根据个人兴趣能够继续选做其它的题目;7.课程设计完成后严格按照报告格式撰写课程设计报告,并于结束后的第三天上交到学习委员统一交给老师;8.课程设计的成绩由两部分组成:程序检查成绩(40%,每个功能占程序分的20%)+报告检查成绩(40%)+平时考核(20%)五、实现思路链表是一种动态数据结构,她的特点是用一组任意的存储单元(能够是连续的,也能够是不连续的)存放数据元素。

链表中每一个元素成为“结点”,每一个结点都是由数据域和指针域组成的,每个结点中的指针域指向下一个结点。

Head是“头指针”,表示链表的开始,用来指向第一个结点,而最后一个指针的指针域为NULL(空地址),表示链表的结束。

能够看出链表结构必须利用指针才能实现,即一个结点中必须包含一个指针变量,用来存放下一个结点的地址。

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

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

数据结构课程设计报告模板成绩计算机与信息工程学院专业名称信息与计算科学学生班级 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线性表有两种不同的存储结构,分别是顺序存储结构和链式存储结构,在实际中应用十分广泛。

本设计要求分别利用线性表的两种存储结构,设计算法完成对大数的阶乘、加法、乘法的求解。

数据结构是一门研究非数值计算的程序设计问题中的操作对象以及它们之间的关系的操作的学科,在本次课程设计中,定义存储结构均采用了数据结构中的抽象数据类型,而抽象数据类型是指一个数据模型以及定义在改模型上的一组操作,抽象数据类型的定义仅仅取决于它的一组逻辑特性,而与计算机内部如何表示和实现无关,即不论其内部结构如何变化,只要它的数学特性不变,都不影响其外部的使用。

数据结构课程设计(5篇)

数据结构课程设计(5篇)

数据结构课程设计(5篇)第一篇:数据结构课程设计课程设计说明书设计名称:数据结构课程设计题目:设计五:二叉树的相关操作学生姓名:专业:计算机科学与技术班级:学号:指导教师:日期: 2012 年 3 月 5 日课程设计任务书计算机科学与技术专业年级班一、设计题目设计五二叉树的相关操作二、主要内容建立二叉树,并对树进行相关操作。

三、具体要求1)利用完全二叉树的性质建立一棵二叉树。

(层数不小于4层)2)统计树叶子结点的个数。

3)求二叉树的深度。

4)能够输出用前序,中序,后序对二叉树进行遍历的遍历序列。

四、进度安排依照教学计划,课程设计时间为:2周。

本设计要求按照软件工程的基本过程完成设计。

建议将时间分为三个阶段:第一阶段,根据题目要求,确定系统的总体设计方案:即系统包括哪些功能模块,每个模块的实现算法,并画出相应的流程图.同时编写相应的设计文档;第二阶段,根据流程图编写程序代码并调试,再将调试通过的各个子模块进行集成调试;第三阶段,归纳文档资料,按要求填写在《课程设计说明书》上,并参加答辩。

三个阶段时间分配的大概比例是:35: 45: 20。

五、完成后应上交的材料本课程设计要求按照学校有关规范的要求完成,在课程设计完成后需要提交的成果和有关文档资料包括课程设计的说明书,课程设计有关源程序及可运行程序(含运行环境)。

其中课程设计说明书的格式按学校规范(见附件),其内容不能过于简单,必须包括的内容有:1、课程设计的基本思想,系统的总功能和各子模块的功能说明;2、课程设计有关算法的描述,并画出有关算法流程图;3、源程序中核心代码的说明。

4、本课程设计的个人总结,主要包括以下内容:(1)课程设计中遇到的主要问题和解决方法;(2)你的创新和得意之处;(3)设计中存在的不足及改进的设想;(4)本次课程设计的感想和心得体会。

5、源代码要求在关键的位置有注释,增加程序的可读性。

程序结构和变量等命名必须符合有关软件开发的技术规范(参见有关文献)。

数据结构课程设计-2012

数据结构课程设计-2012

《数据结构》课程设计任务书2012.11.27~2013.01.07一.课程设计的目的通过本设计的训练,深入理解常用的算法,提高算法设计与程序实现能力。

二.设计内容1.问题描述:走迷宫本项目要求使用深度优先搜索(或广度优先搜索)解决迷宫问题,具体要求如下:1.输入:存储在文本文件maze.txt中迷宫,该文件格式为如下:第1行:n m(这里n、m是两个整数,表示该迷宫共有n行和m列,两者间以一个空格隔开)第2行~第(n+1)行:每行由m个无空格分隔的连续字符组成,每个字符只能在0、1间取值,其中取0表示该位置没有阻隔,可以通过,取1则表示不能通过。

如下是一个输入样例(注意在maze文件中不包括分隔线---):4 5000110101000001111002.输出:输出一条从迷宫左上角进入到右下角出来的路径,该路径由迷宫中各数据元素的坐标标识。

这里规定左上角坐标为(0,0),各坐标分别向右和向下递增。

如在上文的示例中,起点为(0,0),终点为(3,4),一条从起点到终点的路径为:(0,0)(1,0)(2,0)(2,1)(2,2)(2,3)(3,3)(3,4)。

3.界面要求:以控制台方式输出或其它更为友好的人机界面输出。

代码参考:/index.php/2012/12/28/152/2.文档要求文档写作要求尽可能规范,文档内容应包括(但不限于)如下内容:1.课程设计任务描述;2.程序总体结构描述,主要是程序的总体结构图(可以理解程序的类组成图和类调用图),并需对各组成类的功能进行简单概括;3.具体描述,内容包括:(1)各个核心类的数据结构、输入输出接口以及功能描述;(2)核心代码和注释。

原则上,建议每个核心类作为独立一个章节4.使用手册和测试结果对提交的软件的使用说明以及测试结果(需有程序运行界面的截图)。

3.课程设计进度安排2012.11.27~2013.01.07。

4.协作及提交要求1.可分组完成,每组最多不得超过3人(可以3人),若分组人数达到2人或以上,需在提交的文档的第二页(第一页是封面)写清楚各人的分工及完成情况;2.提交材料(电子版)包括:源程序及可执行文件、课程设计文档、执行文件使用说明手册。

数据结构设计报告

数据结构设计报告

课程设计报告课程设计名称数据结构课程设计专业计算机科学与技术班级 2学号 10030222姓名田隽霏指导教师于桂玲成绩2012年2月26日数据结构课程设计题目——《运动会分数统计》目录第一章设计任务与要求 (1)1.1 总体目标与任务要求 (1)1.2 题目选择与目的意义 (1)1.3 所选题目的主要工作 (1)第二章需求分析 (2)2.1 用户需求分析 (2)2.2 功能需求分析 (模块图) (2)2.3 系统需求分析 (开发环境、工具) (4)第三章概要设计 (4)3.1 各模块的算法设计说明 (4)3.1.1 数据结构定义 (4)3.1.2比赛成绩输入模块 (5)3.1.3比赛成绩输出 (7)3.1.4查询比赛成绩模块 (9)3.2 存储结构设计说明 (11)第四章详细设计 (11)第五章关键代码说明 (11)第六章运行结果分析 (23)第七章收获与体会 (29)第八章主要参考资料 (29)第一章设计任务与要求1.1 总体目标与任务要求1实验描述参加运动会有N个学校,学校编号为1……m,女子m+1…… m+w。

不同的项目取前五名或前三名积分;取前五名的积分分别为:7.5.4.2.1 ,前三名的积分分别为:5、3、2;哪些取前五名或前三名由自己设定。

(m<=20,n>=20)2.实验要求功能要求:1)可以输入各个项目的前三名或前五名的成绩2)能统计各学校总分,3)可以按学校编号、学校总分、男女团体总分排序输出;4)可以按学校编号查询学校某个醒目的情况;可以按项目编号查询取得前三或前五名的学校1.2 题目选择与目的意义题目:运动会分数统计意义; 随着社会的进步,体育事业的发展,为了提高运动会成绩统计准确,减少设计者们的工作量,开发了本系统。

1.3 所选题目的主要工作规定:输入数据形式和范围:20以内的整数(如果做的更好可以输入学校的名称,运动项目的名称)输出形式:有中文提示。

各学校分数为整数界面要求:有合理的提示,每个功能可以设定菜单,根据提示,可以完成相关的功能要求。

《数据结构》课程设计2011-2012-2

《数据结构》课程设计2011-2012-2

《数据结构》课程设计2011-2012-2题目一:池塘夜降彩色雨【问题描述】:设计一个程序,演示美丽的“池塘夜雨”景色;色彩缤纷的雨点飘飘洒洒地从天而降,滴滴入水有声,溅起圈圈微澜。

【基本要求】:(1)雨点的空中出现位置、降落过程的可见程度、入水位置、颜色、最大水圈等,都是随机确定的;(2)多个雨点按照各自的随机参数和存在状态,同时演示在屏幕上。

(3)增加“电闪雷鸣”景象。

(4)增加风的效果,展现“风雨飘摇”的情景题目二:哈夫曼编码器【问题描述】:利用哈夫曼树实现编码并译码的系统。

【基本要求】:从终端读入一段字符集,系统自动统计出字符的个数n以及各个字符出现的次数w作为权值,建立哈夫曼树,并将哈夫曼树以凹入表示法的形式显示在屏幕上。

利用已建好的哈夫曼树对字符进行编码,并将该段文字的编码存人一个文件code中,然后输出这段编码。

题目三:算术表达式求值演示【问题描述】:表达式计算是实现程序设计语言的基本问题之一,也是栈的应用的一个典型例子。

设计一个程序,演示中缀表达式变为后缀表达式并对后缀表达式求值的过程。

【基本要求】:以字符序列的方式从终端输入语法正确的、不含变量的整数表达式。

利用中缀表达式变为后缀表达式算法和后缀表达式的求值算法实现对算术四则混合运算表达式的求值,并演示出在求值中运算符栈、操作数栈、输入字符和主要操作的变化过程。

题目四:农夫过河问题【问题描述】:从前,一个农夫带着一只狼,一只羊和一棵白菜过河(注意该狼已经被农夫驯服了,但还是会吃羊)。

他要将所有东西安全的带到河的对岸。

不幸的是河边只有一条小船,只能装下农夫和他的一样东西,并且农夫必须每次都随船过河,因为只有他能撑船。

在无人看管的情况下,狼要吃羊,羊要吃白菜,因此农夫不能在河的某边岸上单独留下狼和羊,也不能单独留下羊和白菜。

那么农夫如何才能使三样东西平安过河呢?【基本要求】:1、输出农夫过河问题求解的详细步骤。

2、分别采用深度优先搜索算法和广度优先搜索算法实现。

数据结构专业课程设计方案报告模板参考

数据结构专业课程设计方案报告模板参考

数据结构专业课程设计方案报告模板参考嘿,大家好!今天我来给大家分享一份关于数据结构专业课程的方案设计报告。

作为一名有着十年经验的大师,我可是见证了各种方案的诞生和演变。

那么,咱们废话不多说,直接进入主题吧!一、课程设计背景数据结构是计算机科学与技术领域的基础课程,对于培养同学们的逻辑思维能力、编程能力和算法设计能力具有重要意义。

随着信息技术的不断发展,数据结构的应用越来越广泛,已经成为各类软件开发、等领域的基础。

因此,本课程设计旨在帮助同学们掌握数据结构的基本原理和算法,提高同学们的实际编程能力。

二、课程设计目标1.理解数据结构的基本概念,熟悉各类数据结构的特点和应用场景。

2.学会使用常见的数据结构进行问题求解,具备分析问题和设计算法的能力。

3.掌握数据结构的基本算法,能够实现并优化相关算法。

三、课程设计内容1.线性表定义和特点常见操作(插入、删除、查找、排序等)应用场景(顺序存储、链式存储等)2.栈和队列定义和特点常见操作(入栈、出栈、入队、出队等)应用场景(递归、表达式求值、广度优先搜索等)3.树与二叉树定义和特点常见操作(创建、遍历、查找、插入、删除等)应用场景(查找排序、哈希表、优先队列等)4.图定义和特点常见操作(创建、遍历、查找、最短路径等)应用场景(社交网络、地图导航、最小树等)5.算法设计与分析常见算法(排序、查找、图算法等)时间复杂度分析空间复杂度分析四、课程设计方法1.理论教学:通过课堂讲解,使同学们了解数据结构的基本概念、原理和方法。

2.实践教学:通过上机实验,让同学们动手实现相关算法,提高编程能力。

3.课后作业:布置一些具有代表性的题目,让同学们独立思考,巩固所学知识。

五、课程设计评价1.课堂表现:考察同学们的出勤、发言、作业完成情况等。

2.上机实验:考察同学们的编程能力、算法实现情况等。

3.课后作业:考察同学们对知识点的掌握程度。

六、课程设计进度安排1.第一周:线性表2.第二周:栈和队列3.第三周:树与二叉树4.第四周:图5.第五周:算法设计与分析注意事项:1.理解深度与广度平衡每个数据结构都有其深奥的理论和复杂的实现细节,但初学者容易陷入要么只懂皮毛要么过度深入研究两极分化的困境。

数据结构课程设计实验报告哈夫曼

数据结构课程设计实验报告哈夫曼

数据结构课程设计实验报告哈夫曼树的应用计算机学院信管专业数据结构课程设计题目:哈夫曼树的应用班级:姓名:学号:同组人姓名:起迄日期:课程设计地点:指导教师:完成日期:2012年12月目录一、需求分析 (3)二、概要设计 (4)三、详细设计 (6)四、调试分析和测试结果 (7)五、心得体会和总结 (10)六、参考文献 (10)七、附录 (11)一、需求分析(一)实验要求要求用到数据结构课上学到的线性表的知识,所以就要充分而清晰的理解关于线性表的知识。

要求实现的基本功能很简单,只有删除和插入,增加功能也不过是加上修改。

这些在数据结构课上已经讲过,只要能够理解关于线性表的几个相关的基本算法就可以了。

问题是将输入的信息保存入文件和从文件输出。

这里基本是自学的内容,而且要考虑到是否要自行选择保存的磁盘。

综上,做这个课题,要具备的知识就是线性表的基本算法,文件的保存和读取算法,必要的C或者C++知识(本次我将使用C++实现),以及丰富的程序调适经验。

(二)实验任务一个完整的系统应具有以下功能:功能1.从终端读入字符集大小n,以及n个字符和n个权值,建立哈夫曼树并将它存于文件hfmTree中.将已在内存中的哈夫曼树以直观的方式(比如树)显示在终端上;功能2.利用已经建好的哈夫曼树(如不在内存,则从文件htmTree中读入),对文件ToBeTran中的正文进行编码,然后将结果存入文件CodeFile中,并输出结果,将文件CodeFile以紧凑格式先是在终端上,每行50个代码。

同时将此字符形式的编码文件写入文件CodePrint中。

功能3.利用已建好的哈夫曼树将文件CodeFile中的代码进行译码,结果存入文件TextFile中,并输出结果。

(三)实验步骤分步实施:1)初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;2)完成最低要求:完成功能1;3)进一步要求:完成功能2和3。

有兴趣的同学可以自己扩充系统功能。

数据结构课程设计航班信息查询与检索

数据结构课程设计航班信息查询与检索

学院名称《数据结构》课程设计报告题目——航班信息查询与检索班级:姓名:时间:2012/12/29---2013/1/5二○一二年十二月二十九日课程设计任务书与成绩评定课题名称航班信息查询与检索Ⅰ、题目的目的和要求:1、设计目的巩固和加深对数据结构的理解,通过上机实验、调试程序,加深对课本知识的理解,最终使学生能够熟练应用数据结构的知识写程序。

(1)通过本课程的学习,能熟练掌握几种基本数据结构的基本操作。

(2)能针对给定题目,选择相应的数据结构,分析并设计算法,进而给出问题的正确求解过程并编写代码实现。

2、设计题目要求:问题描述:该设计要求对飞机航班信息进行排序和查找。

可按航班的航班号、起点站、到达站、起飞时间以与到达时间等信息进行查询。

任务要求:对于本设计,可采用基数排序法对一组具有结构特点的飞机航班号进行排序,利用二分查找法对排好序的航班记录按航班号实现快速查找,按其他次关键字的查找可采用最简单的顺序查找方法进行,因此他们用得较少。

每个航班记录包括八项,分别是:航班号、起点站、终点站、班期、起飞时间、到达时间、飞机型号以与票价等,假设航班信息表(8条记录)位为航班号,这种航班号关键字可分成两段,即字母和数字。

其余七项输入内容因为不涉与本设计的核心,因此除了票价为数值型外,均定义为字符串即可。

Ⅱ、设计进度与完成情况Ⅲ、主要参考文献与资料[1] 严蔚敏数据结构(C语言版)清华大学出版社1999[2] 严蔚敏数据结构题集(C语言版)清华大学出版社1999[3] 谭浩强C语言程序设计清华大学出版社[4] 与所用编程环境相配套的C语言或C++相关的资料Ⅳ、成绩评定:设计成绩:(教师填写)指导老师:(签字)二○一三年一月五日目录一、概述 (6)二、系统分析 (6)三、概要设计 (6)四、详细设计 (7)1.定义数据类型 (7)2.算法实现 (8)五、测试数据 (10)六、收获与体会 (13)七、参考文献 (13)八、附录 (14)5 / 24一、概述课程设计是实践性教学中的一个重要环节,它以某一课程为基础,可以涉与和课程相关的各个方面,是一门独立于课程之外的特殊课程。

《数据结构》2012级实验报告模板

《数据结构》2012级实验报告模板

实验报告(一)一、实验目的:1.掌握VC6.0开发环境下C/C++程序的编辑、编译和运行。

2.通过实验回顾复习C语言中关于结构体、指针等知识的应用。

3.了解学习数据结构的主要方法和课程的主要知识框架。

二、实验环境:个人电脑、Windows XP、VC6.0或以上版本。

三、实验内容、程序代码、程序测试运行界面1.设计一个程序,输出所有小于等于n(n为一个大于2的正整数)的素数。

要求:(1)每行输出10个素数;(2)尽可能采用较优的算法。

2.编写一个程序,计算任一输入的正整数的各位数字之和,并分析算法的时间复杂度。

3.编写一个程序,判断一个字符串是否为“回文”(顺读和倒读都一样的字符串称为“回文”),并分析算法的时间复杂度。

四、心得体会与建议实验报告(二)一、实验目的:1.熟练掌握线性表的顺序存储结构的概念及各种基本操作的C语言实现。

2.熟练掌握线性表的链式存储结构中的单链表的概念及各种基本操作的C 语言实现。

3.了解双向链表及循环链表的基本操作。

二、实验环境:个人电脑、Windows XP、VC6.0或以上版本。

三、实验内容、程序代码、程序测试运行界面1.编写一个程序,实现顺序表的各种基本运算(假设顺序表的元素类型为char),并在此基础上设计一个程序完成如下功能:(1)初始化顺序表L;(2)采用尾插法依次插入元素a,b,c,d,e;(3)输出顺序表L;(4)输出顺序表L长度;(5)判断顺序表L是否为空;(6)输出顺序表L的第3个元素;(7)输出元素a的位置;(8)在第4个位置上插入元素f;(9)输出顺序表L;(10)删除L的第3个元素;(11)输出顺序表L;(12)释放顺序表L。

程序代码如下:程序运行结果如下:2.编写一个程序,实现单链表的各种基本运算(假设单链表的元素类型为char),并在此基础上设计一个程序,完成如下功能:(1)初始化单链表h;(2)采用尾插法依次插入元素a,b,c,d,e;(3)输出单链表h;(4)输出单链表h长度;(5)判断单链表h是否为空;(6)输出单链表h的第3个元素;(7)输出元素a的位置;(8)在第4个位置上插入元素f;(9)输出单链表h;(10)删除h的第3个元素;(11)输出单链表h;(12)释放单链表h。

数据结构课程设计题目(最终版)-2012

数据结构课程设计题目(最终版)-2012

数据结构课程设计题目1、医务室模拟。

问题描述:假设只有一位医生,在一段时间内随机地来几位病人;假设病人到达的时间间隔为0~14分钟之间的某个随机值,每个病人所需处理时间为1~9分钟之间的某个随机值。

试用队列结构进行模拟。

实现要求:要求输出医生的总等待时间和病人的平均等待时间。

程序设计思路:计算机模拟事件处理时,程序按模拟环境中的事件出现顺序逐一处理,在本程序中体现为医生逐个为到达病人看病。

当一个病人就诊完毕而下一位还未到达时,时间立即推进为下一位病人服务,中间时间为医生空闲时间。

当一个病人还未结束之前,另有一位病人到达,则这些病人应依次排队,等候就诊。

2、招聘模拟问题描述:某集团公司为发展生产向社会公开招聘m个工种的工作人员,每个工种各有不同的编号(0,1,2,…,m-1)和计划招聘人数,参加招聘的人数有n个(编号为0,1,2,。

,n-1)。

每位应聘者可以申报两个工种,并参加公司组织的考试。

公司将按应聘者的成绩,从高到低的顺序排队录取。

公司的录取原则是:从高分到低分依次对每位应聘者按其第一志愿录取;当不能按第一志愿录取时,便将他的成绩扣去5分后,重新排队,并按其志愿考虑录取。

程序为每个工种保留一个录取者的有序队列。

录取处理循环直至招聘额满,或已对全部应聘者都做了录用处理。

实现要求:要求程序输出每个工种录用者的信息(编号、成绩),以及落选者的信息(编号、成绩)。

3、组织机构问题问题描述:以青岛理工大学为例,实现对我校组织结构的管理。

要求把我校的组织结构以树型结构存储,实现要求:(1)树中每个结点保存部门名称;(2)假定处级部门(含院系)在树中第二层,科级部门在第三层(即最后一层),软件应该能计算出处级部门有几个,有哪几个?(3)软件可以查询某部门下面的具体编制?4、最少换车次数问题问题描述:设某城市有n个车站,并有m条公交线路连接这些车站。

设这些公交车站都是单向的,这n个车站被顺序编号为0~n-1。

数据结构课程设计报告

数据结构课程设计报告

沈阳工程学院课程设计设计题目:数据结构与算法课程设计系别信息工程系班级系统本111-2学生姓名马金波李享学号415212 415114 指导教师张楠代钦职称讲师讲师起止日期:2012 年12月10日起——至2012 年12月14日止沈阳工程学院课程设计任务书课程设计题目:数据结构与算法课程设计系别信息工程系班级系统本111-2学生姓名马金波学号2011415212学生姓名李享学号2011415114指导教师张楠代钦职称讲师讲师课程设计进行地点:F608任务下达时间:2012 年12 月10日起止日期:2012年12月10日起——至2012年12月14日止教研室主任年月日批准一、课程设计的原始资料及依据数据结构与算法课程设计是在完成数据结构理论课程学习之后进行的一个综合性的实践教学环节,是对课程理论和课程实验的一个补充。

通过课程设计,培养学生综合运用已学过的理论和技能去分析和解决实际问题的能力,并使所学知识得到进一步巩固、深化和扩展。

二、课程设计主要内容及要求设计内容:1、叉树用二叉链表存储,编写一算法,判别给定的二叉树是否为完全二叉树。

(马金波)2、编写先序遍历二叉树的非递归算法。

(李享)3、校园导游程序(2人)●问题描述:用无向图表示你所在学校的景点平面图,图中顶点表示主要景点,存放景点的编号、名称、简介等信息,图中的边表示景点间的道路,存放路径长度等消息。

●基本要求:1.能查询各景点的相关信息2.为来访客人提供景点的问路查询,即已知一个景点,查询到某景点之间的一条最短路径及长度。

设计要求:(1)每名同学任选两题;(2)学生应明确设计任务和要求,并拟定设计计划,按时完成;(3)设计分阶段进行,每一阶段的设计没有原则错误时才能允许进行下一阶段设计;(4)设计过程中,提倡独立思考、深入钻研,主动地、创造性地进行设计;(5)要求设计态度严肃认真、有错必改。

三、对课程设计说明书撰写内容、格式、字数的要求1.课程设计说明书是体现和总结课程设计成果的载体,主要内容包括:设计题目、设计目的、设备器材、设计原理及内容、设计步骤、遇到的问题及解决方法、设计总结、参考文献等。

数据结构课程设计报告

数据结构课程设计报告

《数据结构》课程设计报告学号姓名班级指导教师2012年6月迷宫求解1.问题描述输入一个任意大小的迷宫数据,用递归和非递归两种方法求出一条走出迷宫的路径,并将路径输出。

2.设计思路用非递归方式求解迷宫问题:设迷宫为m行n列,利用maze[m][n]来表示一个迷宫,maze[i][j]=0或1,其中0表示通路,1表示不通,当从某点作为入口向下试探,中间点有4个方向可以试探,而4个角有两个方向,其他边缘点有三个方向,用maze[m+2][n+2]表示迷宫,迷宫的四周的值全为1,每个点的试探方向全部为4。

用递归方式求解迷宫问题:迷宫问题的求解过程就是从起始点一步一步的移到出口点的过程。

在当前位置按照一定的策略寻找下一个位置,在下一个位置又按照相同的策略寻找下下个位置……,直到当前位置就是出口点,每一步的走法是一样的。

随着一步一步的移动,求解的规模不断减小。

如果起始位置是出口,说明路径直到,算饭结束,如果起始位置的四个方向都走不通,说明迷宫没有路径,算法结束。

3.数据结构定义栈元素的定义:typedef struct{int x,y,d;}datatype;定义栈的结构体:typedef struct{datatype data[MAXSIZE];int top;}seqstack,*pseqstack;定义试探方向元素:typedef struct{int x,y;}item;4.系统功能模块介绍非递归和递归方式:5.程序清单非递归方式源代码:#include<stdio.h>#include<malloc.h>#define MAXSIZE 100#define m 6#define n 8int maze[m+2][n+2];typedef struct{int x,y,d;}datatype;typedef struct{datatype data[MAXSIZE];int top;}seqstack,*pseqstack; typedef struct{int x,y; }item;item move[4]={{0,1},{1,0},{0,-1},{-1,0}};pseqstack init_seqstack(void){pseqstack s;s=(pseqstack)malloc(sizeof(seqstack));if(s)s->top=-1;return s;}int empty_seqstack(pseqstack s){if(s->top==-1)return 1;elsereturn 0;}int push_seqstack(pseqstack s,datatype x) {if(s->top==MAXSIZE-1)return 0;else{s->top++;s->data[s->top]=x;return 1;}}int pop_seqstack(pseqstack s,datatype *x) {if(empty_seqstack(s))return 0;else{*x=s->data[s->top];s->top--;return 1;}}void destroy_seqstack(pseqstack *s){if(*s)free(*s);*s=NULL;return;}int mazepath(int maze[][n+2],item move[],int x0,int y0){pseqstack s;datatype temp;int x,y,d,i,j;temp.x=x0; temp.y=y0; temp.d=-1;s=init_seqstack();if(!s){printf("栈初始化失败!");return(0);}push_seqstack(s,temp);while(!empty_seqstack(s)){pop_seqstack(s,&temp);x=temp.x;y=temp.y;d=temp.d+1;while(d<4){i=x+move[d].x;j=y+move[d].y;if(maze[i][j]==0){temp.x=x;temp.y=y;temp.d=d;push_seqstack(s,temp);x=i; y=j;maze[x][y]=-1;if(x==m&&y==n){while(!empty_seqstack(s)){pop_seqstack(s,&temp);printf("(%d,%d)<-",temp.x,temp.y);}destroy_seqstack(&s);return 1;}else d=0;}else d++;}}destroy_seqstack(&s);return 0;}void main(){int x=1,y=1,z,i,j;int maze[m+2][n+2];printf("请输入需要建立的迷宫:\n"); for(i=0;i<m+2;i++){for(j=0;j<n+2;j++)scanf("%d",&maze[i][j]); }printf("所建立的迷宫为:\n");for(i=0;i<m+2;i++){for(j=0;j<n+2;j++)printf("%2d",maze[i][j]);printf("\n");}printf("\n");printf("迷宫的路径为:\n");printf("(%d,%d)<-",m,n);z=mazepath(maze,move,x,y);printf("\n");}递归方式:#include<stdio.h>#include<malloc.h>#define m 6#define n 8int maze[m+2][n+2];typedef struct{int x,y;}item;item move[4]={{0,1},{1,0},{0,-1},{-1,0}};int path(int maze[][n+2],item move[],int x,int y,int step){int i;step++;maze[x][y]=step;if(x==m&&y==n){printf("<%d,%d><-",x,y);return 1;}for(i=0;i<4;i++){if(maze[x+move[i].x][y+move[i].y]==0)if(path(maze,move,x+move[i].x,y+move[i].y,s tep)){printf("<%d,%d><-",x,y);return 1;}}step--;maze[x][y]=0;return 0;}void main(){int x=1,y=1,z=1,i,j;int maze[m+2][n+2];printf("请输入需要建立的迷宫:\n");for(i=0;i<m+2;i++){for(j=0;j<n+2;j++)scanf("%d",&maze[i][j]);}printf("所建立的迷宫为:\n");for(i=0;i<m+2;i++){for(j=0;j<n+2;j++)printf("%2d",maze[i][j]);printf("\n");}printf("迷宫的路径为:\n");path(maze,move,x,y,z);printf("\n");}6.运行及调试分析运行结果:分析:在本程序中,首先按照设计要求建立一个迷宫,并显示出来,分别用非递归和递归两种求解迷宫的方式得出,迷宫的路径并打印出来。

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

(此文档为word格式,下载后您可任意编辑修改!)ch0 绪 (3)一、概述 (3)二、实习步骤 (4)三、实习报告规范 (5)ch1 线性表及其应用 (7)1. 运动会分数统计 (7)2. 约瑟夫环 (7)3. 集合的并、交和差运算(此题目不能选,因为报告范例对应的就是该题目) (8)4. 长整数四则运算 (8)5. 一元稀疏多项式计算器 (9)6. 池塘夜降彩色雨 (10)ch2 栈和队列及其应用 (11)1. 停车场管理 (11)2. 魔王语言解释 (11)3. 马踏棋盘 (12)5. 银行业务模拟 (13)6. 航空客运订票系统 (14)7. 电梯模拟 (14)8. 迷宫问题 (17)ch3 串及其应用 (19)1. 文学研究助手 (19)2. 文本格式化 (20)3. 简单行编辑程序 (21)4. 串基本操作的演示 (22)5. 程序分析 (23)ch4 数组和广义表 (25)1. 稀疏矩阵运算器 (25)2. 多维数组 (26)3. 识别广义表的头或尾 (27)4. 简单LISP算术表达式计算器 (27)ch5 树、图及其应用 (29)1. 重言式判别 (29)2. 哈夫曼编译码器 (29)3. 图遍历的演示 (30)4. 教学计划编制问题 (31)5. 校园导游咨询 (31)6. 最小生成树问题 (32)7. 表达式类型的实现 (32)8. 全国交通咨询模拟 (33)ch6 存储管理、查找和排序 (35)1. 伙伴存储管理系统演示 (35)2. 哈希表设计 (36)3. 图书管理 (37)4. 平衡二叉树操作的演示 (37)5. 英语词典的维护和识别 (38)6. 内部排序算法比较 (38)7. 多关键字排序 (39)ch7 文件操作 (40)1. 文件索引 (40)2. 成绩分析问题 (40)附录1: 课程设计报告范例-集合的并、交和差运算 (41)ch0 绪一、概述上机实习是对学生的一种全面综合训练,是与课堂听讲、自学和练习相辅相成的必不可少的一个教学环节。

通常,实习题中的问题比平时的习题复杂得多,也更接近实际。

实习着眼于原理与应用的结合点,使读者学会如何把书上学到的知识用于解决实际问题,培养软件工作所需要的动手能力;另一方面,能使书上的知识变“活”,起到深化理解和灵活掌握教学内容的目的。

平时的练习较偏重于如何编写功能单一的“小”算法,而实习题是软件设计的综合训练,包括问题分析、总体结构设计、用户界面设计、程序设计基本技能和技巧,多人合作,以至一整套软件工作规范的训练和科学作风的培养。

此外,还有很重要的一点是:机器是比任何教师都严厉的检查者。

为了达到上述目的,本书安排了六个主实习单元,各单元的训练重点在于基本的数据结构,而不强调面面俱到。

各实习单元与教科书的各章只具有粗略的对应关系,一个实习题常常涉及几部分教学内容。

每个实习题采取了统一的格式,由问题描述、基本要求、测试数据、实现提示和选做内容五个部分组成。

问题描述旨在为读者建立问题提出的背景环境,指明问题“是什么”。

基本要求则对问题进一步求精,划出问题的边界,指出具体的参量或前提条件,并规定该题的最低限度要求。

测试数据部分旨在为检查学生上机作业提供方便,在完成实习题时应自己设计完整和严格的测试方案,当数据输入量较大时,提倡以文件形式向程序提供输入数据。

在实现提示部分,对实现中的难点及其解法思路等问题作了简要提示。

选做部分向那些尚有余力的读者提出了更严峻的挑战,同时也能开拓其他读者的思路,在完成基本要求时力求避免就事论事的不良思想方法,尽可能寻求具有普遍意义的解法,使得程序结构合理,容易修改扩充。

不难发现,这里与传统的做法不同,题目设计得非常详细。

会不会限制读者的想象力,影响创造力的培养呢?回答是:软件发展的一条历史经验就是要限制程序设计者在某些方面的创造性,从而使其创造能力集中地用到特别需要创造性的环节之上。

实习题目本身就给出了问题说明和问题分解求精的范例,使读者在无形中学会模仿,它起到把读者的思路引上正轨的作用,避免坏结构程序和坏习惯,同时也传授了系统划分方法和程序设计的一些具体技术,保证实现预定的训练意图,使某些难点和重点不会被绕过去,而且也便于教学检查。

题目的设计策略是:一方面使其难度和工作量都较大,另一方面给读者提供的辅助和可以模仿的成份也较多。

当然还应指出的是,提示的实现方法未必是最好的,读者不应拘泥于此,而应努力开发更好的方法和结构。

本书的一个特点是为实习制定了严格的规范(见下一节)。

一种普遍存在的错误观念是,调试程序全凭运气。

学生花两个小时的上机时间只找出一个错误,甚至一无所获的情况是常见的。

其原因在于,很多人只认识到找错误,而没有认识到努力预先避免错误的重要性,也不知道应该如何努力。

实际上,结构不好、思路和概念不清的程序可能是根本无法调试正确的。

严格按照实习步骤规范进行实习不但能有效地避免上述种种问题,更重要的是有利于培养软件工作者不可缺少的科学工作方法和作风。

二、实习步骤随之计算机性能的提高,它所面临的软件开发的复杂度也日趋增加。

然而,编制一个10,000行的程序的难度绝不仅仅是一个5,000行的程序两倍,因此软件开发需要系统的方法。

一种常用的软件开发方法,是将软件开发过程划分为分析、设计、实现和维护四个阶段。

虽然数据结构课程中的实习题的复杂度远不如(从实际问题中提出来的)一个“真正的“软件,但为了培养一个软件工作者所应具备的科学工作的方法和作风,我们制订了如下所述完成实习的五个步骤:(一) 问题分析和任务定义通常,实习题目的陈述比较简洁,或者说是有模棱两可的含义。

因此,在进行设计之前,首先应该充分地分析和理解问题,明确问题要求做什么?限制条件是什么。

注意本步骤强调的是做什么?而不是怎么做。

对问题的描述应避开算法和所涉及的数据类型,而是对所需完成的任务作出明确的回答。

例如:输入数据的类型、值的范围以及输入的形式;输出数据的类型、值的范围及输出的形式;若是会话式的输入,则结束标志是什么?是否接受非法的输入?对非法输入的回答方式是什么等。

这一步还应该为调试程序准备好测试数据,包括合法的输入数据和非法形式的输入数据。

(二) 数据类型和系统设计在设计这一步骤中需分概要设计和详细设计两步实现。

概要设计指的是,对问题描述中涉及的操作对象定义相应的数据类型,并按照以数据结构为中心的原则划分模块,定义主程序模块和各抽象数据类型;详细设计则为定义相应的存储结构并写出各函数的伪码算法。

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

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

详细设计的结果是对数据结构和基本操作的规格说明作出进一步的求精,写出数据存储结构的类型定义,按照算法书写规范用类C语言写出函数形式的算法框架。

在求精的过程中,应尽量避免陷入语言细节,不必过早表述辅助数据结构和局部变量。

(三) 编码实现和静态检查编码是把详细设计的结果进一步求精为程序设计语言程序。

程序的每行不要超过60个字符。

每个函数体,即不计首部和规格说明部分,一般不要超过40行,最长不得超过60行,否则应该分割成较小的函数。

要控制if语句连续嵌套的深度。

如何编写程序才能较快地完成调试是特别要注意的问题。

对于编程很熟练的读者,如果基于详细设计的伪码算法就能直接在键盘上输入程序的话,则可以不必用笔在纸上写出编码,而将这一步的工作放在上机准备之后进行,即在上机调试之前直接用键盘输入。

然而,不管你是否写出编码的程序,在上机之前,认真的静态检查是必不可少的。

多数初学者在编好程序后处于以下两种状态之一:一种是对自己的“精心作品“的正确性确信不疑;另一种是认为上机前的任务已经完成,纠查错误是上机的工作。

这两种态度是极为有害的。

事实上,非训练有素的程序设计者编写的程序长度超过50行时,极少不含有除语法错误以外的错误。

上机动态调试决不能代替静态检查,否则调试效率将是极低的。

静态检查主要有两种方法,一是用一组测试数据手工执行程序(通常应先分模块检查);二是通过阅读或给别人讲解自己的程序而深入全面地理解程序逻辑,在这个过程中再加入一些注解和断言。

如果程序中逻辑概念清楚,后者将比前者有效。

(四)上机准备和上机调试上机准备包括以下几个方面:(1) 高级语言文本(体现于编译程序用户手册)的扩充和限制。

例如,常用的BorlandC(C++)和MicrosoftC(C++)与标准C(C++)的差别,以及相互之间的差别。

(2) 如果使用C或C++语言,要特别注意与教科书的类C语言之间的细微差别。

(3) 熟悉机器的操作系统和语言集成环境的用户手册,尤其是最常用的命令操作,以便顺利进行上机的基本活动。

(4)掌握调试工具,考虑调试方案,设计测试数据并手工得出正确结果。

上机调试程序时要带一本高级语言教材或手册。

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

必要时可以另写一个调用驱动程序。

这种表面上麻烦的工作实际上可以大大降低调试所面临的复杂性,提高调试工作效率。

调试中遇到的各种异常现象往往是预料不到的,此时不应“冥思苦想”,而应动手确定疑点,通过修改程序来证实它或绕过它。

调试正确后,认真整理源程序及其注释,印出带有完整注释的且格式良好的源程序清单和结果。

(五)总结和整理实习报告三、实习报告规范实习报告的开头应给出题目、班级、姓名、学号和完成日期,并包括以下七个内容:1. 需求分析以无歧义的陈述说明程序设计的任务,强调的是程序要做什么?明确规定:(1) 输入的形式和输入值的范围;(2) 输出的形式;(3) 程序所能达到的功能;(4) 测试数据:包括正确的输入及其输出结果和含有错误的输入及其输出结果。

2. 概要设计说明本程序中用到的所有抽象数据类型的定义、主程序的流程以及各程序模块之间的层次(调用)关系。

3. 详细设计实现概要设计中定义的所有数据类型,对每个操作只需要写出伪码算法;对主程序和其他模块也都需要写出伪码算法(伪码算法达到的详细程度建议为:按照伪码算法可以在计算机键盘直接输入高级程序设计语言程序);画出函数的调用关系图。

4. 调试分析内容包括:(1)调试过程中遇到的问题是如何解决的以及对设计与实现的回顾讨论和分析;(2)算法的时空分析(包括基本操作和其他算法的时间复杂度和空间复杂度的分析)和改进设想;(3)经验和体会等。

5. 用户使用说明说明如何使用你编写的程序,详细列出每一步的操作步骤。

6. 测试结果列出你的测试结果,包括输入和输出。

相关文档
最新文档