Removed_数据结构课程设计——报告(样例)
数据结构课程设计报告范文
![数据结构课程设计报告范文](https://img.taocdn.com/s3/m/3f95bc2f9b6648d7c1c74694.png)
数据结构课程设计报告课程设计报告课程设计题目:链表的创立、插入、删除、修改学生姓名专业计算机科学与技术班级学号指导教师艾9月 30日一、实验题目:实现链表的创立、插入、删除和修改任务:实现链表的创立、插入、删除、修改和输出要求:建立一个简单的人机对话,创立、插入、删除、修改和输出功能能够根据需要选择使用。
二、实验时间、地点:-12-26~ -12-30、信工楼302三、实验目的本次课程设计的主要目的是综合运用所学的数据结构知识解决一个比较实际问题,侧重对链表、数组、字符串、图、树等相关内容的综合应用,使同学们能进一步熟悉掌握数据结构的基础知识,进一步提升自己的解决问题和编程调试能力,为后续专业课程的学习打下良好的基础。
四、实验要求1. 了解数据结构及其分类、数据结构与算法的密切关系;2. 熟悉各种基本数据结构及其操作,学会根据实际问题来选择数据结构;3. 掌握设计算法的步骤和分析方法;4. 掌握数据结构在排序和查找等常见算法中的应用。
5. 独立完成;6.每个人需按照选题规则确定好自己的题目(注意不是多人完成一题,每人独立完成一题),不得以任何理由选择其它的题目,当然在完成自己的题目之后根据个人兴趣能够继续选做其它的题目;7.课程设计完成后严格按照报告格式撰写课程设计报告,并于结束后的第三天上交到学习委员统一交给老师;8.课程设计的成绩由两部分组成:程序检查成绩(40%,每个功能占程序分的20%)+报告检查成绩(40%)+平时考核(20%)五、实现思路链表是一种动态数据结构,她的特点是用一组任意的存储单元(能够是连续的,也能够是不连续的)存放数据元素。
链表中每一个元素成为“结点”,每一个结点都是由数据域和指针域组成的,每个结点中的指针域指向下一个结点。
Head是“头指针”,表示链表的开始,用来指向第一个结点,而最后一个指针的指针域为NULL(空地址),表示链表的结束。
能够看出链表结构必须利用指针才能实现,即一个结点中必须包含一个指针变量,用来存放下一个结点的地址。
数据结构课程设计报告
![数据结构课程设计报告](https://img.taocdn.com/s3/m/3e5fc0b2690203d8ce2f0066f5335a8102d266a2.png)
数据结构课程设计报告数据结构课程设计报告设计题目:实现一个简单的通讯录管理系统设计背景:在日常生活中,我们经常需要管理并使用一些联系人的联系信息,例如电话号码、姓名、地址等。
为了方便对这些联系人进行管理和查询,我们设计了一个简单的通讯录管理系统。
设计目的:本设计旨在通过实现一个通讯录管理系统,加深对数据结构的理解和应用。
通过该系统,用户可以方便地添加、删除、修改和查询联系人信息,提高信息的管理效率和准确性。
设计原理:该系统采用基于链表的数据结构,其中每个节点存储一个联系人的信息,包括姓名、电话号码和地址。
系统提供了以下功能:1. 添加联系人:用户可以输入联系人的姓名、电话号码和地址,程序将创建一个新节点,并将其插入链表中。
2. 删除联系人:用户可以输入要删除的联系人姓名,程序将遍历链表查找到该节点,并将其删除。
3. 修改联系人信息:用户可以输入要修改的联系人姓名,程序将遍历链表查找到该节点,并允许用户修改联系人的电话号码和地址。
4. 查询联系人信息:用户可以输入要查询的联系人姓名,程序将遍历链表查找到该节点,并显示联系人的姓名、电话号码和地址。
设计过程:1. 定义联系人信息结构:创建一个结构体,包含姓名、电话号码和地址等字段的定义。
2. 定义链表节点结构:创建一个结构体,包含联系人信息和指向下一个节点的指针。
3. 实现添加联系人功能:用户输入联系人信息,程序创建一个新节点,并将其插入链表的适当位置。
4. 实现删除联系人功能:用户输入要删除的联系人姓名,程序遍历链表查找到该节点,并将其删除。
5. 实现修改联系人信息功能:用户输入要修改的联系人姓名,程序遍历链表查找到该节点,并允许用户修改联系人的电话号码和地址。
6. 实现查询联系人信息功能:用户输入要查询的联系人姓名,程序遍历链表查找到该节点,并显示联系人的姓名、电话号码和地址。
7. 设计界面显示:使用控制台界面,根据用户选择调用相应的功能函数。
设计结果:通过实验和测试,我们成功实现了一个简单的通讯录管理系统。
数据结构课程设计——报告(样例)
![数据结构课程设计——报告(样例)](https://img.taocdn.com/s3/m/4056b301bceb19e8b9f6ba0d.png)
《数据结构与算法》课程设计报告王婧、龚丹、宋毅编写题目:航空订票管理系统学期:2014秋班号:学号:姓名:成绩:哈尔滨华德学院电子与信息工程学院2014年12月一、实训设计的目的与要求(注:正文为宋体,五号字,为单倍行距)(一)课程设计目的(不少于100字)1.数据结构课程设计是综合运用数据结构课程中学到的几种典型数据结构,以及程序设计语言(C语言),自行实现一个较为完整的应用系统。
2.通过课程设计,自己通过系统分析、系统设计、编程调试,写实验报告等环节,进一步掌握应用系统设计的方法和步骤,灵活运用并深刻理解典型数据结构在软件开发中的应用。
3.学会将知识应用于实际的方法,提高分析和解决问题的能力,增加综合能力。
具体的有:(1)熟练掌握链表存储结构及其建立过程和常用操作;(2)熟练掌握队列的建立过程和常用操作;(3)学会自己调试程序的方法并掌握一定的技巧。
(二)题目要求(不少于100字)1.每条航线所涉及的信息有:终点站名、航班号、飞机号、飞机周日(星期几)、乘员定额、余票量、订定票的客户名单(包括姓名、订票量、舱位等级1,2或3)以及等候替补的客户名单(包括姓名和所需数量)。
2.系统能实现的操作和功能如下:(1)查询航线:根据客户提出的终点站名输出如下信息:航班号、飞机号、星期几飞行和余票额;(2)承办订票业务:根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若有余票,则为客户办理订票手续,输出座位号;若已满员或余票量少余订票额,则需重新询问客户要求。
若需要,可登记排队候补;(3)承办退票业务:根据客户提出的情况(日期、航班号),为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其它排队候补的客户。
二、实训环境配置Windows系统CodeBlocks三、设计正文1.需求分析本订票系统能够实现全部航线信息的浏览功能、订票客户信息的查询功能、单条航线查询功能、订票功能和退票功能。
Removed_数据结构课程设计实验指导书
![Removed_数据结构课程设计实验指导书](https://img.taocdn.com/s3/m/f1c04491b52acfc789ebc99c.png)
数据结构课程设计指导书计算机科学与技术学院2016年1月目录1前言 (3)2 顺序表与链表 (6)2.1 实验内容 (6)2.2 实现提示 (7)3 树和二叉树 (8)3.1 实验内容 (8)3.2 实现提示 (8)4 图 (9)4.1 实验内容 (9)4.2 实现提示 (10)5 赫夫曼编码 (11)5.1赫夫曼编码的应用 (11)5.2设计要求 (11)5.3 实验内容 (12)5.4 问题分析 (13)5.5 实现提示 (13)1前言《数据结构》是计算机科学与技术专业的一门核心专业基础课程,它主要介绍线性结构、树型结构和图型结构的存储实现与基本操作,尤其是查找与排序算法的实现,并分析相应算法的时间、空间效率。
其主要任务是培养学生的算法设计能力及良好的程序设计习惯。
通过学习,要求学生掌握典型算法的设计思想及程序实现,能够根据实际问题选取合适的存储方案、设计出简洁、高效、实用的算法,并为后续课程的学习及软件开发打下良好的基础。
为了更好地配合数据结构课程的实践,特编写此课程设计指导书。
1.1指导思想本次课程设计的指导思想是:1、学习获取知识的方法;2、提高发现问题、分析问题和解决实际问题的能力;3、加强创新意识和创新精神;4、加强团队的分工与合作;5、掌握面向实际背景思考问题的方法。
1.2设计任务本次课程设计任务主要分为个人任务和小组任务两种。
个人基本任务:完成第2章以及第3章中的设计任务,其中选做题可不做。
小组任务:完成第4章和第5章的设计任务,其中选做题可不做。
1.3要求1、每项目小组人员为3~5名。
2、每项目小组提交一份课程设计报告,内容包括:课题名称(第4、第5个任务为两个课题),课题参加人员名单和贡献度,课题的目的,课题内容,需求分析、概要设计、主要代码分析、测试结果、课题特色和创新之处、使用说明、收获与体会。
3、每人必须在完成个人任务的基础上提交个人任务的设计报告,内容包括:任务名称、目的、具体内容、需求分析、概要设计、主要代码分析、测试结果、收获与体会。
数据结构课设报告-绝对原版大家珍惜啊参考模板
![数据结构课设报告-绝对原版大家珍惜啊参考模板](https://img.taocdn.com/s3/m/121e21f4c5da50e2534d7f37.png)
数据结构课程设计报告姓名:班级:学号:指导教师成绩:一.各个课设概述1.算术表达式求值(必做)A 算法思想及数据结构及时间复杂度(括号内容):算式(栈):计算部分(n):建立运算符优先规则,存在一个二维数组中。
运用数字栈和运算符栈,逐个字符读入算式,若字符为数字则放入数字栈;若字符为运算符则让它和元素符栈的栈顶元素比较优先级,若优先级低则进运算符栈,若优先级高,则取数字栈中元素进行运算。
直至读到#。
纠错部分(n):首先对每个读入的字符进行判断,如果非法则终止程序。
对于运算符匹配,则在计算完后查看字符栈和数字栈,进而判断。
B 程序测试正确表达式测试:#7+8+(9+6*5)+4#结果:OPTR:OPND:OPTR: #OPND:OPTR: #OPND: 7OPTR: + #OPND: 7OPTR: + #OPND: 8 7OPTR: #OPND: ?OPTR: + #OPND: ?OPTR: ( + #OPND: ?OPTR: ( + #OPND: 9 ?OPTR: + ( + # OPND: 9 ?OPTR: + ( + # OPND: 6 9 ?OPTR: * + ( + # OPND: 6 9 ?OPTR: * + ( + # OPND: 5 6 9 ?OPTR: + ( + # OPND: N 9 ?OPTR: ( + #OPND: W ?OPTR: + #OPND: W ?OPTR: #OPND: fOPTR: + #OPND: fOPTR: + #OPND: 4 fOPTR: #OPND: jresult: 58错误表达式测试#(7*5)(3+4)#输出结果:OPTR:OPND:OPTR: #OPND:OPTR: ( #OPND:OPTR: ( #OPND: 7OPTR: * ( #OPND: 7OPTR: * ( #OPND: 5 7OPTR: ( #OPND: SOPTR: #OPND: SOPTR: ( #OPND: SOPTR: ( #OPND: 3 SOPTR: + ( #OPND: 3 SOPTR: + ( #OPND: 4 3 SOPTR: ( #OPND: 7 SOPTR: #OPND: 7 S算式操作符搭配有问题,请重新输入。
《数据结构》课程设计报告范本(doc 8页)
![《数据结构》课程设计报告范本(doc 8页)](https://img.taocdn.com/s3/m/4625ac49bd64783e09122be2.png)
《数据结构》课程设计报告范本(doc 8页)《数据结构》课程设计报告一、课程设计的内容、要求1 线性表的另一种实现。
对顺序表空间被耗尽问题的一个解决办法是:当数组溢出时,用一个更大的数组替换该数组。
一个较好的法则是:当出现溢出时,数组长度加长一倍具有较高的时间和空间效率。
参照教材中顺序表的有关内容,按上面的要求实现顺序表,并测试当数组溢出时你的实现的运作情况。
二、所采用的数据结构ADT List{数据对象: D = {a i|a i ∈ElemSet, i=1,2…n>=0}数据关系: R1={<a i-1, a i>|a i-1, a i∈D, i=1,2,…,n}基本操作:void IniList(SqList& L);void DestroyList(SqList& L);bool ListEmpty(SqList L);int ListLength(SqList L);void GetElem(SqList L, int i, Elem &e);bool PriorElem(SqList L, Elem cur_e, Elem &pre_e);bool NextElem(SqList L, Elem cur_e, Elem &next_e);void ListInsert(SqList &L, int i, Elem e);void ListDelete(SqList &L, int i);void ClearList(SqList& L);}三、主要模块(或函数)及其功能typedef struct LIST{ElemType *data;int size;int max_size;}LIST;void InitList(LIST *list)//初始化{list->data = (int*)malloc(sizeof(ElemType)*INIT_SIZE);list->size = 0;list->max_size = INIT_SIZE;}void DestroyList(LIST &list){}bool NextElem(LIST list,int cur_e,int &next_e)//后继{if(cur_e < 0 || cur_e > list.size) return false;else{next_e = cur_e + 1;return true;}}void Insert(LIST *list,ElemType value){if(list->size>=list->max_size){int i;ElemType *temp = (int*)malloc(sizeof(ElemType)*list->size*2);cout<<endl<<"线性表原容量改变:原大小为"<<list->max_size;for(i=0;i<list->size;i++){temp[i] = list->data[i];}free(list->data);list->data = temp;list->max_size*=2;cout<<"改变后大小"<<list->max_size<<endl;}list->data[list->size] = value;list->size++;}void Insert_Back(LIST *list,int idx,ElemType value){if(list->size>=list->max_size){int i;ElemType *temp = (int*)malloc(sizeof(ElemType)*list->size*2);cout<<endl<<"线性表原容量改变:原大小为"<<list->max_size;for(i=0;i<list->size;i++){temp[i] = list->data[i];}free(list->data);list->data = temp;list->max_size*=2;cout<<"改变后大小"<<list->max_size<<endl;}if(idx>list->size){list->data[list->size] = value;}else{int i;for(i=list->size;i>idx;i--){list->data[i] = list->data[i-1];}list->data[idx] = value;}list->size++;}void ListDelete(LIST *list,int i,ElemType *e)//删除一个元素{int j;*e=list->data[i];for(j=i+1;j<=list->size-1;j++)list->data[j-1]=list->data[j];list->size--;}void Print_list(LIST *list){int i;if(list->size == 0){cout<<"当前线性表内没有元素。
数据结构课程设计——报告
![数据结构课程设计——报告](https://img.taocdn.com/s3/m/c49a0b886c85ec3a86c2c534.png)
数据结构课程设计——报告(样例)《数据结构与算法》课程设计报告王婧、龚丹、宋毅编写题目:航空订票管理系统学期: 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]](https://img.taocdn.com/s3/m/91bda92001f69e314232940e.png)
第二题:电梯模拟1、需求分析:模拟某校九层教学楼的电梯系统。
该楼有一个自动电梯,能在每层停留。
九个楼层由下至上依次称为地下层、第一层、第二层、……第八层,其中第一层是大楼的进出层,即是电梯的“本垒层”,电梯“空闲”时,将来到该层候命。
乘客可随机地进出于任何层。
对每个人来说,他有一个能容忍的最长等待时间,一旦等候电梯时间过长,他将放弃。
模拟时钟从0开始,时间单位为0.1秒。
人和电梯的各种动作均要消耗一定的时间单位(简记为t),比如:有人进出时,电梯每隔40t测试一次,若无人进出,则关门;关门和开门各需要20t;每个人进出电梯均需要25t;如果电梯在某层静止时间超过300t,则驶回1层侯命。
而题目的最终要求输出时:按时序显示系统状态的变化过程,即发生的全部人和电梯的动作序列。
2、设计2.1设计思想:(1)数据结构设计本题中的电梯的变化,是一个动态变化的过程,要在动态过程中实现正常跳转,首先要确定各种跳转的状态,因而这里我使用枚举类型来表示电梯的各种状态的:enum {up,down,stop,home}State(home);同时初始化最初状态为电梯在本垒层。
而在电梯的运行过程中对于乘客来说,显然有一个进入电梯与出电梯的队列,因而在这里我是用的链表来实现这个过程的,同时用结构体来保存该乘客的信息:typedef struct passage{int now;//乘客当前所在的位置int dis;//乘客的目地地int wait;//最长的等待的时间int waitnow;//已经等待的时间struct passage *next;}Passage;虽然电梯中的状态是由枚举类型来实现的,但是在整个程序的运行过程中,我还是为电梯设置了一个结构体类型,以便保存更多的信息:typedef struct lift{int count_C;//计数电梯已到达的层数int count_A;//系统的总时间计数器记得必须初始化为0int flag_in[High];//九个楼层有无请求的标志哪个楼层如果有请求该标志置1int num;//等待队列中的人数记得要进行初始化为0int people;//电梯中人数int flag_out[High];}Lift;(2)算法设计顾名思义本程序在运行的过程中用到的算法便是—“电梯算法”,电梯算法借鉴了磁盘寻道C-LOOK算法,即电梯向一个方向运行,直到这个方向上没有服务为止。
Removed_B13计本_数据结构课程设计任务书
![Removed_B13计本_数据结构课程设计任务书](https://img.taocdn.com/s3/m/6cbfdb91b52acfc788ebc90f.png)
B13计算机科学与技术《数据结构与算法分析》课程设计任务书电气与信息工程学院计算机系颜慧(2014.11)一.课程设计目的2013级计算机科学与技术(本)专业学生在学习《数据结构与算法分析》课程后,进行为期2周的课程设计。
本次课程设计要达到如下教学目的:1.巩固已学过的基础知识。
包括:复习巩固顺序表、链表、字符串、栈、队列、数组、矩阵、树与二叉树、图等数据结构的逻辑结构、存储结构和基本操作的实现和应用;递归、查找、排序等技术。
2.提高基础知识的应用水平,对零散的知识点进行整合,形成完整的编程知识,提高编程能力和编程技巧。
3.学会具有一定规模应用项目的分析、设计、实现、调试的方法和步骤,在实践中掌握设计要点。
4.学会自己进行参考资料的收集、整理;掌握课程设计文档的撰写方法和要点。
二.设计课题及要求本次课程设计由指导教师指定课题。
学生运用所学的数据结构的知识,从下面题目中选择一个题目完成。
(一).复杂表达式求值(栈的应用)设计要求:求复杂算数表达式的值。
具体要求:设计一个程序,计算含有如下标识符的表达式的值。
(1) 数值:包括整数和实数,数值可带正、负号。
(2) 一般运算符:正号、负号、加、减、乘、除、求模和乘方,其中可以包括括号。
(3) 单词(即运算函数):abs、sqrt、exp、ln、log10、sin、cos和tanh。
例如:输入一个表达式: 2*sqrt(16)-(-3+5)*(-5),得到运算结果18(二). 文字处理程序(字符串的应用)设计要求:用户可通过键盘输入一页文字,也可以从硬盘上打开一个文件,设计一个可以统计出字符个数的程序(分别统计各种字符和总字符数),并可实现查找、替换、文件的保存、文件的加密和解密等功能。
具体要求:用户可以输入一页文字,每行最多不超过80个字符,共N行。
输入的文字包括英文字母(可大小写)、任何数字及标点符号。
将用户输入的文字存储在本地硬盘上。
(1)分别统计出其中的英文字母个数、空格个数、整篇文章总字数(带标点符号),并显示统计信息;(2)统计某一字符串在文章中出现的次数,并输出该次数;(3)允许用户删除某一子串,并将后面的字符前移。
数据结构课程实践报告(2篇)
![数据结构课程实践报告(2篇)](https://img.taocdn.com/s3/m/e92273b0b8f3f90f76c66137ee06eff9aef849d6.png)
第1篇一、前言数据结构是计算机科学中的重要基础课程,它旨在培养学生对各种数据结构及其算法的理解和应用能力。
本报告将针对数据结构课程实践环节进行总结,包括实践内容、实践过程、实践成果及心得体会等方面。
二、实践内容本次数据结构课程实践主要涉及以下内容:1. 线性表:实现顺序表和链表的基本操作,如插入、删除、查找等。
2. 栈和队列:实现栈和队列的基本操作,如入栈、出栈、入队、出队等。
3. 树:实现二叉树的基本操作,如创建、遍历、查找等。
4. 图:实现图的邻接矩阵和邻接表表示,以及图的遍历算法,如深度优先搜索(DFS)和广度优先搜索(BFS)。
5. 堆:实现堆的基本操作,如建立堆、调整堆、堆排序等。
6. 排序算法:实现冒泡排序、选择排序、插入排序、快速排序、归并排序等。
三、实践过程1. 线性表首先,实现顺序表的基本操作,包括初始化、插入、删除、查找等。
然后,实现链表的基本操作,包括创建、插入、删除、查找等。
在实现过程中,对顺序表和链表的优缺点进行了比较,并分析了它们在不同场景下的适用性。
2. 栈和队列实现栈和队列的基本操作,如入栈、出栈、入队、出队等。
通过实例演示了栈和队列在实际问题中的应用,如逆序输出、求解迷宫问题等。
3. 树实现二叉树的基本操作,包括创建、遍历、查找等。
通过递归和非递归两种方式实现了二叉树的遍历,并对二叉树的遍历顺序进行了分析。
4. 图实现图的邻接矩阵和邻接表表示,以及图的遍历算法。
通过实例演示了图的深度优先搜索和广度优先搜索,并分析了它们在不同场景下的适用性。
5. 堆实现堆的基本操作,如建立堆、调整堆、堆排序等。
通过实例演示了堆排序在求解最大(小)值问题中的应用。
6. 排序算法实现冒泡排序、选择排序、插入排序、快速排序、归并排序等。
通过实例演示了各种排序算法的适用场景和性能特点。
四、实践成果1. 实现了线性表、栈、队列、树、图、堆等基本数据结构及其操作。
2. 掌握了各种排序算法的原理和实现方法。
Removed-数据结构实验2——栈和队列实验报告37
![Removed-数据结构实验2——栈和队列实验报告37](https://img.taocdn.com/s3/m/f83cb69316fc700abb68fc9d.png)
} }
Pop();//出栈
} } template <class T>
void SeqStack<T>::Print()//输出皇后函数
{ cout<<"NO."<<num<<":"<<endl; for(int i=0;i<StackSize;i++) {
for(int j=0;j<data[i];j++) {
1、 存储结构:栈(递归)
2.2 关键算法分析 1、递归 void Queen::Queens(int k,int n)//计算出皇后的排列,k 是当前皇后数量,n
是数量上限
______2__4_1______3___2_1_“_”__________________4__2__40__12__“0_”_12__03__“2__•042_”_“0__•83”__“0__”0_7_1_—_32__—0__1__45__80_1_42__84__42__“56_”_“l4_0_”“3_0_”5_0_28_“01”_“07”_“90_”“02”2“”•30”0“”“09”3124820302130
private: T data[StackSize]; //定义数组
int top; //栈顶指针 }; template <class T> void SeqStack<T>::Push(T x) //入栈操作 {
if(top>=StackSize-1) throw "上溢"; top++;//栈顶指针上移 data[top]=x; } template <class T> void SeqStack<T>::Pop()//出栈操作 { if(Empty()) throw "下溢"; top--;//栈顶指针下移 } template <class T> bool SeqStack<T>::Judgement()//判断该位置是否合适 { for(int i=0;i<top;i++)
数据结构课程设计报告pdf
![数据结构课程设计报告pdf](https://img.taocdn.com/s3/m/b8432a4111a6f524ccbff121dd36a32d7275c752.png)
数据结构课程设计报告pdf一、课程目标知识目标:1. 让学生掌握数据结构的基本概念,包括线性表、树、图等结构的特点和应用场景。
2. 使学生了解常见的数据结构算法,如排序、查找等,并能运用到实际问题中。
3. 帮助学生理解算法复杂度分析,包括时间复杂度和空间复杂度,能够评估算法的优劣。
技能目标:1. 培养学生运用数据结构解决实际问题的能力,能够根据问题选择合适的数据结构进行建模。
2. 提高学生的编程能力,使其能够熟练地使用所学数据结构编写高效、可读性强的代码。
3. 培养学生独立分析和解决问题的能力,通过实际项目案例,学会运用所学知识进行系统设计。
情感态度价值观目标:1. 培养学生对计算机科学的兴趣和热情,激发他们主动探索数据结构及相关领域的欲望。
2. 培养学生的团队协作精神,学会在团队中沟通、分工与合作,共同完成任务。
3. 培养学生具备良好的编程习惯,注重代码规范和优化,提高代码质量。
课程性质:本课程为高年级专业核心课程,旨在帮助学生建立扎实的计算机科学基础,提高编程能力和问题解决能力。
学生特点:学生具备一定的编程基础,具有较强的逻辑思维能力,对数据结构有一定了解,但尚需深入学习和实践。
教学要求:结合学生特点,课程注重理论与实践相结合,强调动手实践和实际应用。
通过案例分析和项目实战,使学生掌握数据结构的核心知识,提高解决实际问题的能力。
教学过程中,关注学生的个体差异,提供个性化指导,确保课程目标的达成。
二、教学内容本课程教学内容主要包括以下几部分:1. 数据结构基本概念:线性表、栈、队列、链表、树、图等结构的特点和基本操作。
2. 算法复杂度分析:时间复杂度和空间复杂度,常见算法复杂度分析。
3. 排序算法:冒泡排序、选择排序、插入排序、快速排序、归并排序等。
4. 查找算法:顺序查找、二分查找、哈希查找等。
5. 树和图的应用:二叉树、平衡树、图的基本算法(深度优先搜索、广度优先搜索等)。
6. 线性表的应用:栈和队列的应用,链表操作等。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《数据结构与算法》课程设计报告
王婧、龚丹、宋毅编写
题目:航空订票管理系统
学期:2014秋
班号:
学号:
姓名:
成绩:
哈尔滨华德学院电子与信息工程学院
2014年12月
一、实训设计的目的与要求(注:正文为宋体,五号字,为单倍行距)
(一)课程设计目的(不少于100字)
1.数据结构课程设计是综合运用数据结构课程中学到的几种典型数据结构,以及程序设计语言(C语言),自行实现一个较为完整的应用系统。
2.通过课程设计,自己通过系统分析、系统设计、编程调试,写实验报告等环节,进一步掌握应用系统设计的方法和步骤,灵活运用并深刻理解典型数据结构在软件开发中的应用。
3.学会将知识应用于实际的方法,提高分析和解决问题的能力,增加综合能力。
具体的有:
(1)熟练掌握链表存储结构及其建立过程和常用操作;
(2)熟练掌握队列的建立过程和常用操作;
(3)学会自己调试程序的方法并掌握一定的技巧。
(二)题目要求(不少于100字)
1.每条航线所涉及的信息有:终点站名、航班号、飞机号、飞机周日(星期几)、乘员定额、余票量、订定票的客户名单(包括姓名、订票量、舱位等级1,2或3)以及等候替补的客户名单(包括姓名和所需数量)。
2.系统能实现的操作和功能如下:
(1)查询航线:根据客户提出的终点站名输出如下信息:航班号、飞机号、星期几飞行和余票额;
(2)承办订票业务:根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若有余票,则为客户办理订票手续,输出座位号;若已满员或余票量少余订票额,则需重新询问客户要求。
若需要,可登记排队候补;
(3)承办退票业务:根据客户提出的情况(日期、航班号),为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其它排队候补的客户。
二、实训环境配置
Windows系统
CodeBlocks
三、设计正文
1.需求分析
本订票系统能够实现全部航线信息的浏览功能、订票客户信息的查询功能、单条航线查询功能、订票功能和退票功能。
具体分析如下:
a) 全部航线信息的浏览功能浏览全部系统预设的航线信息,每条航线包含的信息有:终点站名、航班号、飞机号、飞行周日(星期几飞行)、乘员定额和余票量。
b) 订票客户信息的查询功能根据输入的航班号查询该航线所有订票客户的信息,包括客户姓名、订票数额和舱位等级。
c) 单条航线查询功能根据客户输入的终点站名查看该航线上所涉
及的信息。
d) 订票功能根据客户提出的要求(航班号、订票数量)查询该航班票额情况,若尚有余票,则为客户办理订票手续,输出座位号;若已满员或余票额少于定票额,则询问客户是否愿意排队等候,若愿意,系统则自动登记排队候补。
e) 退票功能根据客户提供的情况(航班、姓名),询问退票张数,然后为客户办理退票手续。
接着系统自动查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其他排队候补的客户。
2.功能框图
图1 航空订票系统
3.算法设计
(1)浏览航线模块:定义void display( struct airline *info),用info指向结构体struct airline中的每一个成员;调用list()函数输出全部航线信息。
(2)浏览订票客户信息模块:定义订票客户信息的结构体ord_ros,根据输入航班号调用find()函数寻找客户信息。
(3)查询航线模块:顺着单链表查找,如果与航班号(航线)一致,输出相关信息,否则,查询不成功。
(4)订票模块:查找乘客要订的航班号,判断此航班是否有空位,有则输入乘客有关信息,订票成功, 否则失败。
(5)退票模块:输入要退票的乘客姓名,查找乘客资料的链表中是否有这位乘客,有则删去此节点,并在空位上加1,无则退票失败。
如果
此时余票额大于等于候补客户的订票数量,那么候补客户订票成功。
4.界面设计
运行主界面
图2 运行界面
5.系统测试
订票测试
图3 订票测试
退票测试
图4 退票测试
四、小组成员分工说明
独立完成
五、总结
1.算法改进设想:
(1)在算法效率上,由于此课程设计所用的是线性表的建立、查找、插入、删除、和队列的建立、插入、删除,所涉及的是查找和排序问题,所以在建立插入时按照客户姓名进行有序,查找时采用分块查找,因此对订票客户信息的存储应采用指针数组存储。
(2)在函数重组,把处理不同问题相同算法思想(如线性表的插入、删除、查找等等)写在一个函数中,其它函数要用到这种操作时只需调用这些函数,这样会减少整个程序的代码量,方便理解、阅读和使用。
2.课程设计期间的主要收获:
看着简单,做着难,我自己眼高收低,心太急,不过敢想敢写感尝试,努力付出还真有蛮多收获。
(1)学与做:做了这次课程设计,我觉得课程设计这种形式真的是我
们需要的,可以让我们学到很多,包括书上的、书外的。
理论永远不等于
实际。
我在调试时出现了很多的问题,下面列举几个:程序中定义了一
个字符串“new”,但在C-Free中“new"不是以未定义的形式存在,所以
把“new”改写成“NEW”就可以了;C-Free中“getchar”表示读取下一
个字符的含义,而“getch”不表示,出现“getch”时系统会报错;在编
写退票模块的代码时,设计先输入退票数然后进行退票,调试时发现舱位
等级的输出出现了混乱,后来经仔细分析才知道,原来“grade=p1->grade;”放在了if()大循环的后面,而在if循环里p1已经释放,所以把
“grade=p1->grade;”放在第一个“free(p1);”之前就可以了。
真正会了这
些算法,理论和实际永远差那么一点,不去做是体会不出来的。
坐在电
脑前才真正知道自己会不会,眼高手低是要不得的。
(2)C与算法描述:在学数据结构的时候总是分不清算法与C语言的区别,总觉得算法就是程序了,通过这两周的课程设计总算是把它们之间的
关系搞透彻了。
其实算法是解决问题的步骤;程序是算法的代码实现;算
法要依靠程序来完成功能;程序需要算法作为灵魂。
两者是相互联系密不
可分的。
(3)小收获:摸索着做完课程设计,增强了自己的自学能力,这应该
是最有用的吧,语言会过时,学习的能力却不会过时。
构造结构体;定义
清晰明确的各种变量;主函数、子函数的声明及定义。
另外:对函数调用,参数传递很有体会。
(4)遇到的问题与感受:这次课程设计面临的大问题就是——选择的
余地太大,头脑不好受。
连续几天的思考,我都不能决定攻克哪个,好几
个都是考虑了一部分又放弃了,以至前功尽弃。
这使我认识到认定干一件
事就必须将它干到底,以使自己的思想连续。
我也开始考虑当事情有重叠时,如何去应对,虽然最后的抉择不一定是对的。
我也在这段时间内好好
地看了一遍书,对书中的算法思想有一个更深的了解,虽然在应用中显得
不是很自如,可我通过这次课设体验到可视化编程的乐趣。
这也给我以后
编程莫大的激励,因为我认为所谓算法通过老师的传授每个人都会一点点,而课外的东西则是通过自己的学习获得的。
写程序是一种乐趣,特别是当
我看到程序运行成功时,我会感到无比的喜悦。
而数据结构是任何程序的
基础,没有数据结构的支持,就没有程序的存在,至少说不会存在有价值
的程序。
有了数据结构的知识,再加上程序设计技术,这对以后的深入学
习应该会有很大的帮助。