数据结构课程设计-文章编辑(附录中有全部代码)
数据结构课程设计报告范文
数据结构课程设计报告课程设计报告课程设计题目:链表的创立、插入、删除、修改学生姓名专业计算机科学与技术班级学号指导教师艾9月 30日一、实验题目:实现链表的创立、插入、删除和修改任务:实现链表的创立、插入、删除、修改和输出要求:建立一个简单的人机对话,创立、插入、删除、修改和输出功能能够根据需要选择使用。
二、实验时间、地点:-12-26~ -12-30、信工楼302三、实验目的本次课程设计的主要目的是综合运用所学的数据结构知识解决一个比较实际问题,侧重对链表、数组、字符串、图、树等相关内容的综合应用,使同学们能进一步熟悉掌握数据结构的基础知识,进一步提升自己的解决问题和编程调试能力,为后续专业课程的学习打下良好的基础。
四、实验要求1. 了解数据结构及其分类、数据结构与算法的密切关系;2. 熟悉各种基本数据结构及其操作,学会根据实际问题来选择数据结构;3. 掌握设计算法的步骤和分析方法;4. 掌握数据结构在排序和查找等常见算法中的应用。
5. 独立完成;6.每个人需按照选题规则确定好自己的题目(注意不是多人完成一题,每人独立完成一题),不得以任何理由选择其它的题目,当然在完成自己的题目之后根据个人兴趣能够继续选做其它的题目;7.课程设计完成后严格按照报告格式撰写课程设计报告,并于结束后的第三天上交到学习委员统一交给老师;8.课程设计的成绩由两部分组成:程序检查成绩(40%,每个功能占程序分的20%)+报告检查成绩(40%)+平时考核(20%)五、实现思路链表是一种动态数据结构,她的特点是用一组任意的存储单元(能够是连续的,也能够是不连续的)存放数据元素。
链表中每一个元素成为“结点”,每一个结点都是由数据域和指针域组成的,每个结点中的指针域指向下一个结点。
Head是“头指针”,表示链表的开始,用来指向第一个结点,而最后一个指针的指针域为NULL(空地址),表示链表的结束。
能够看出链表结构必须利用指针才能实现,即一个结点中必须包含一个指针变量,用来存放下一个结点的地址。
数据结构课程设计报告含代码完整版
数据结构课程设计报告含代码HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】西安邮电学院数据结构课程设计报告题目:校园导航系统院系名称:计算机学院专业名称:计算机科学与技术班级:学生姓名:学号(8位):指导教师:设计起止时间:2011年12月11日~2011年12月15日一. 设计目的1.通过本次课程设计巩固《数据结构》中所学的内容;2.提高自己上机编程以及调试能力。
二. 设计内容1.设计所在学校的校园平面图,所含景点不少于10个。
以图中顶点表示校园内各景点,存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等相关信息。
2.为来访客人提供图中任意景点相关信息的查询。
3.为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一条最短的简单路径。
三.概要设计1.功能模块图;2.各个模块详细的功能描述。
1. 可以手动创建一个校园图。
2. 可以直接从文件读取校园各个景点的信息。
3. 可选择从任意个景点作为起点进行遍历。
4. 输入景点序号查询该景点相关信息。
5. 输入两个景点查询两个景点的最短,最佳及其所有的路径。
6. 将校园图信息保存入文件。
四.详细设计1.功能函数的调用关系图2.各功能函数的数据流程图1. Adjmatrix *g即结构体对象在main()中被创建在其他子函数中进行参数传递。
2. 全局变量visited数组中用。
3. 全局变量shorest[][],path[][]在floyd()中被赋值来分别记录v[i]-v[j]最短路径和 v[i]-v[j]所经过景点。
3.重点设计及编码两景点最短距离弗洛伊德算法void floyd(adjmatrix *g){int i,j,k;for(i=0;i<g->vexnum;i++)for(j=0;j<g->vexnum;j++)shortest[i][j]=0;for(i=0;i<g->vexnum;i++)for(j=0;j<g->vexnum;j++){shortest[i][j]=g->arcs[i][j].adj;path[i][j]=0;}for(i=0;i<g->vexnum;i++)for(j=0;j<g->vexnum;j++)for(k=0;k<g->vexnum;k++)if(shortest[i][j]>(shortest[i][k]+shortest[k][j])){shortest[i][j]=shortest[i][k]+shortest[k][j];path[i][j]=k;path[j][i]=k;}}五.测试数据及运行结果1.正常测试数据和运行结果要求提供3组正常测试数据和运行结果2(遍历功能)1(起始景点序号)1 校门呈长方形,校训:爱国、求实、奋进2 喷泉呈鸽子形状,喷射出水花3 教学楼传授知识和学习知识4 实验楼供学生进行课程实验和教师办公5 洗浴中心供学生洗澡,内设单人间和双人间6 美食广场仅一层,快餐味道不错7 图书馆共七层,存储大量书籍供学生查阅和学习8 旭日苑共三层,主要的就餐场所9 体育馆内设篮球场,羽毛球场和观看席10 宿舍休息的场所5(查询景点信息)2(景点序号)2 喷泉呈鸽子形状,喷射出水花6(查询两景点最短路径)1 9(两景点序号)1->2->7->91->9 最短距离:570米2.异常测试数据及运行结果要求提供2组异常测试数据和运行结果9无此功能模块请重新输入5(功能模块)11(景点序号)无此景点请重新输入六.调试情况,设计技巧及体会1.改进方案1. 可将景点文件,边文件及账户密码合并为一个文件。
数据结构(JAVA)课程设计
数据结构(JAVA)课程设计数据结构(JAVA)课程设计一、项目背景和目的1.1 项目背景这个课程设计是为了让学生在学习数据结构的过程中,能够运用所学的知识,实际完成一个具体的项目。
通过设计和实现一个基于JAVA的数据结构,帮助学生加深对数据结构的理解。
1.2 项目目的通过完成这个项目,学生将能够:- 熟悉和理解数据结构的基本概念和原则- 掌握JAVA编程语言的基本语法和使用方法- 设计和实现一个完整的数据结构,包括各种基本操作和功能- 加深学生对数据结构的应用和解决问题的能力二、项目需求和功能2.1 项目需求本项目需要实现一个基于JAVA的数据结构,可以包括但不限于以下需求:- 实现各种基本数据结构,如栈、队列、链表、树等- 提供基本的操作和功能,如插入、删除、查找、排序等- 可以处理各种不同类型的数据,如整数、字符、字符串等- 可以实现数据结构的可视化和交互功能- 提供良好的使用界面和用户体验2.2 功能划分根据项目需求,可以将功能分为以下几个部分:- 基本数据结构的实现:栈、队列、链表、树等- 数据结构的基本操作和功能:插入、删除、查找、排序等- 数据类型的处理:整数、字符、字符串等- 可视化和交互功能的实现- 用户界面和用户体验的设计三、项目实现和设计3.1 数据结构的实现在这一部分,需要具体实现各种基本的数据结构,包括但不限于栈、队列、链表、树等。
可以根据不同的数据结构,选择合适的实现方式和算法。
3.2 基本操作和功能的实现在这一部分,需要实现数据结构的基本操作和功能,如插入、删除、查找、排序等。
可以根据具体的需求,选择合适的算法和方法。
3.3 数据类型的处理在这一部分,需要实现对不同类型数据的处理功能,如整数、字符、字符串等。
可以考虑使用面向对象的思想,设计合适的类和方法。
3.4 可视化和交互功能的实现在这一部分,需要实现数据结构的可视化和交互功能,可以考虑使用图形界面或者命令行界面,提供友好的用户界面和用户体验。
数据结构课程设计(5篇)
数据结构课程设计(5篇)第一篇:数据结构课程设计课程设计说明书设计名称:数据结构课程设计题目:设计五:二叉树的相关操作学生姓名:专业:计算机科学与技术班级:学号:指导教师:日期: 2012 年 3 月 5 日课程设计任务书计算机科学与技术专业年级班一、设计题目设计五二叉树的相关操作二、主要内容建立二叉树,并对树进行相关操作。
三、具体要求1)利用完全二叉树的性质建立一棵二叉树。
(层数不小于4层)2)统计树叶子结点的个数。
3)求二叉树的深度。
4)能够输出用前序,中序,后序对二叉树进行遍历的遍历序列。
四、进度安排依照教学计划,课程设计时间为:2周。
本设计要求按照软件工程的基本过程完成设计。
建议将时间分为三个阶段:第一阶段,根据题目要求,确定系统的总体设计方案:即系统包括哪些功能模块,每个模块的实现算法,并画出相应的流程图.同时编写相应的设计文档;第二阶段,根据流程图编写程序代码并调试,再将调试通过的各个子模块进行集成调试;第三阶段,归纳文档资料,按要求填写在《课程设计说明书》上,并参加答辩。
三个阶段时间分配的大概比例是:35: 45: 20。
五、完成后应上交的材料本课程设计要求按照学校有关规范的要求完成,在课程设计完成后需要提交的成果和有关文档资料包括课程设计的说明书,课程设计有关源程序及可运行程序(含运行环境)。
其中课程设计说明书的格式按学校规范(见附件),其内容不能过于简单,必须包括的内容有:1、课程设计的基本思想,系统的总功能和各子模块的功能说明;2、课程设计有关算法的描述,并画出有关算法流程图;3、源程序中核心代码的说明。
4、本课程设计的个人总结,主要包括以下内容:(1)课程设计中遇到的主要问题和解决方法;(2)你的创新和得意之处;(3)设计中存在的不足及改进的设想;(4)本次课程设计的感想和心得体会。
5、源代码要求在关键的位置有注释,增加程序的可读性。
程序结构和变量等命名必须符合有关软件开发的技术规范(参见有关文献)。
数据结构课程设计代码
数据结构课程设计代码根据提供的输入输出需求,下面是一个示例的数据结构课程设计代码。
```pythonclass Node:def __init__(self, data):self.data = dataself.next = Noneclass LinkedList:def __init__(self):self.head = Nonedef add(self, data):new_node = Node(data)if self.head is None:self.head = new_nodeelse:current = self.headwhile current.next is not None:current = current.nextcurrent.next = new_nodedef remove(self, data):current = self.headprev = Nonewhile current is not None:if current.data == data:if prev is None:self.head = current.next else:prev.next = current.next returnprev = currentcurrent = current.nextdef display(self):current = self.headwhile current is not None:print(current.data, end=" ")current = current.nextprint()if __name__ == "__main__":linked_list = LinkedList()while True:print("1. Add element")print("2. Remove element")print("3. Display elements")print("4. Quit")choice = input("Enter your choice: ")if choice == "1":data = input("Enter element to add: ")linked_list.add(data)elif choice == "2":data = input("Enter element to remove: ")linked_list.remove(data)elif choice == "3":linked_list.display()elif choice == "4":breakelse:print("Invalid choice")```这个代码示例实现了一个简单的链表数据结构,在命令行中提供了添加元素、删除元素和显示元素的选项。
数据结构课程设计源代码(完整版)
算法与数据结构课程设计报告设计题目:专业班级学生学号指导教师2014年第1学期第一部分:需求分析1、系统名称:航空客运订票系统航空客运订票的业务活动包括:查询航线、客票预定和办理退票等。
要求在TC或VC环境下设计一个航空客运订票系统,以使上述业务可以借助计算机来完成。
2、要求:(1)每条航线所涉及的信息有:终点站名、航班号、飞机号、飞行日期(星期几)、乘员定额、余票量、已经订票的客户名单(包括姓名、订票量)以及等候替补的客户名单(包括姓名、所需票量)。
(2)作为模拟系统,全部数据可以只存放在内存中。
(3)通过此系统可以实现如下功能:①录入功能:可以录入航班情况②查询功能:根据客户提供的终点站名进行查询,可以输出以下信息:航班号、飞机号、星期几飞行和余票量等。
也可以根据航班号,查询飞机某个航线的情况。
③订票功能:根据客户提出的要求(姓名、终点站名、订票数量)查询该航班的余票量情况。
如尚有足够的余票,则为客户办理订票手续;若已满员或余票量少于订票数量,则需要重新询问客户要求,如需要,可登记排队候补。
④退票功能:根据客户提供的情况(姓名、日期、航班号),为客户办理退票手续,然后查询该航班是否有人排队候补,若有人排队,则为排在第一位的客户办理订票手续。
第二部分:系统设计图样一:设计说明1:添加航班:整个航班的信息保存在一个结构体flight中,采用结构体数组,每一个航班信息包含航班号、起飞时间、起飞城市、降落时间、降落城市、余票数量。
航班信息通过lulu()函数进行添加。
添加的信息保存在航班flight结构体数组中。
2:查询航班:查询板块分为两个部分,按姓名查找和按站名查找。
按姓名查找:通过所输入的姓名和已定客户的姓名相匹配,匹配成功则查找成功。
按站名查找:通过所输入的起始站名和终点站名进行匹配,匹配成功则查找成功。
3:订票功能:根据用户的姓名和航班号进行订票,如果所查找的航班号的余票满足用户需要的票数,则订票成功,该信息保存在Customer中,才用结构体数组,包含已定客户的姓名、客户ID、订的票数、起飞时间、起飞城市、降落时间、降落城市、航班号。
《数据结构》课程设计
《数据结构》课程设计一、课程目标《数据结构》课程旨在帮助学生掌握计算机科学中基础的数据组织、管理和处理方法,培养其运用数据结构解决实际问题的能力。
课程目标如下:1. 知识目标:(1)理解基本数据结构的概念、原理和应用,如线性表、栈、队列、树、图等;(2)掌握常见算法的设计和分析方法,如排序、查找、递归、贪心、分治等;(3)了解数据结构在实际应用中的使用,如操作系统、数据库、编译器等。
2. 技能目标:(1)能够运用所学数据结构解决实际问题,具备良好的编程实践能力;(2)掌握算法分析方法,能够评价算法优劣,进行算法优化;(3)能够运用数据结构进行问题建模,提高问题解决效率。
3. 情感态度价值观目标:(1)激发学生对计算机科学的兴趣,培养其探索精神和创新意识;(2)培养学生团队合作意识,学会与他人共同解决问题;(3)增强学生的责任感和使命感,使其认识到数据结构在信息技术发展中的重要性。
本课程针对高中年级学生,结合学科特点和教学要求,将目标分解为具体的学习成果,为后续教学设计和评估提供依据。
课程注重理论与实践相结合,旨在提高学生的知识水平、技能素养和情感态度价值观。
二、教学内容《数据结构》教学内容依据课程目标进行选择和组织,确保科学性和系统性。
主要包括以下部分:1. 线性表:- 线性表的定义、特点和基本操作;- 顺序存储结构、链式存储结构及其应用;- 线性表的相关算法,如插入、删除、查找等。
2. 栈和队列:- 栈和队列的定义、特点及基本操作;- 栈和队列的存储结构及其应用;- 栈和队列相关算法,如进制转换、括号匹配等。
3. 树和二叉树:- 树的定义、基本术语和性质;- 二叉树的定义、性质、存储结构及遍历算法;- 线索二叉树、哈夫曼树及其应用。
4. 图:- 图的定义、基本术语和存储结构;- 图的遍历算法,如深度优先搜索、广度优先搜索;- 最短路径、最小生成树等算法。
5. 排序和查找:- 常见排序算法,如冒泡、选择、插入、快速等;- 常见查找算法,如顺序、二分、哈希等。
《数据结构》课程设计报告范本(doc 8页)
《数据结构》课程设计报告范本(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<<"当前线性表内没有元素。
《数据结构》课程设计报告。目录及正文
目录1 前言 (1)2 需求分析 (1)2.1课程设计目的 (1)2.2课程设计任务 (1)2.3设计环境 (1)3 概要设计 (2)3.1数据结构设计 (2)3.2模块设计 (2)4 详细设计 (4)4.1子函数Great流程图 (4)4.2子函数print流程图 (5)4.3子函数op2流程图 (5)4.4主函数流程图 (7)5 测试分析 (8)6 课程设计总结 (13)参考文献 (14)致谢 (14)附录 (15)1前言纸牌是现代很多人休闲娱乐的一种选择,但要怎样才能赢,这就要好好算算概率了。
玩纸牌的湖南人居多,玩牌也是一种智慧,香港、澳门就有很多玩纸牌高手,他们是拥有过人的记忆和高超的打牌技艺,才赢得自己的地位和荣誉,可想而知,就算是娱乐也是一种智慧,一种艺术。
今天我就以纸牌来做个课程设计,让我们一起在虚拟的世界里来探讨纸牌的奥秘。
2需求分析2.1 题目描述一个21点的扑克牌游戏。
本程序取点于手机游戏,游戏规则与手机游戏相同。
玩家一共可以要5张牌,但如果牌的点数超过21,则暴了,自动出局;在不超过21点的情况下,玩家与庄家比牌的点数大小,大者为赢。
2.2 要求及设计目标(1)将所有的函数与相应的数据封装到类中,并改写主程序,使程序简化。
(2)程序中一共有13张扑克牌可以随机抽取,大于10的点数为10,A根据情况点数不同,当前点数小于11时为11点,大于10时则为1点。
(3)要求庄家永远不会暴庄,即庄家可以查看下一张牌,若大于21点,则拒绝,当然,在游戏规则上不能泄露这点秘密。
(4)高级玩家可以查看下一张牌,即按H键,然后按要求输入密码,密码正确可以看牌,并决定是否要牌。
(5)将界面的提示说明全部设计为中文界面,界面的解释详细友好,可以吸引更多的玩家。
2.3设计环境(1)WINDOWS 2000/2003/XP/7/Vista系统(2)Visual C++或TC集成开发环境3概要设计3.1数据结构设计程序主函数,调用各种子函数,实现程序的运行void main(){SeqList L;create(&L);op2(&L,52);printf("输出牌的编号\n");print(L);本程序设计了一个Game_21类,包含16个类成员函数。
数据结构课程设计报告模板范文
数据结构课程设计报告模板[贪吃蛇程序设计]一、 设计课题贪吃蛇程序设计二、 设计内容1. 工作说明(1)实现贪吃蛇小游戏的运行,各功能模块分别为食物类型的定义,蛇类型的定义,界面光标位置的显示,蛇的初始化,计分方向 码的转换输出(2否(3) 所用到的数据结构的知识及相关数据结构的描述形式数据类型的表示及实现,算法和算法分析,线性表的链式表示和实现,数组的顺序表示,动态存储管理等。
(4) 函数介绍a 界面光标位置函数:控制界面光标位置,为显示边界、食物等界面显示内容提供依据。
b.方向控制函数:经过键盘输入指定字母实现对蛇移动方向的控制。
c.初始化蛇函数:经过链表方式显示蛇的形象,并控制蛇的初始长度、初始移动方向及初始分数。
d.e.计分显示函数:经过引用界面光标位置函数,实现在指定界面位置输出分数。
f.控制蛇的死亡函数:讨论当蛇碰到左右上下边界以及咬到自身等几种情况时,经过引用库函数清除当前屏幕,再经过界面光标位置函数在指定位置输出"Game Over!"、"Press ESC to exit,any other key to retry!",接着经过选择是否继续游戏,如果是,经过引用库函数中的跳跃函数,回到指定位置循环程序;如果否,则结束游戏。
g.食物输出函数:经过引用库函数中的随机数函数随机输出食物,并当蛇吃到食物时,控制蛇长度增长,同时使用递归函数循环输出食物。
h.游戏实现过程函数:调用以上函数,实现蛇的移动、增长、死亡的具体游戏实现过程。
(5) 函数的调用关系(1)调用了gotoxy()函数的有:boundary()函数,getscoresys ()函数,isdead()函数,play()函数。
(2)play()函数调用的函数有:gotoxy()函数,boundary()函数,getscoresys()函数,isdead()函数。
(3)主函数main()调用了play()函数。
数据结构课程设计报告--文章编辑
山东理工大学计算机学院课程设计(数据结构)班级计科0901班姓名许山蒙学号0911051002指导教师张先伟二○一一年一月二十日课程设计任务书及成绩评定课题名称文章编辑Ⅰ、题目的目的和要求:1、设计目的巩固和加深对数据结构的理解,通过上机实验、调试程序,加深对课本知识的理解,最终使学生能够熟练应用数据结构的知识写程序。
(1)通过本课程的学习,能熟练掌握几种基本数据结构的基本操作。
(2)能针对给定题目,选择相应的数据结构,分析并设计算法,进而给出问题的正确求解过程并编写代码实现。
2、设计题目要求:功能:输入一页文字,程序可以统计出文字、数字、空格的个数。
静态存储一页文章,每行最多不超过80个字符,共N行;要求(1)分别统计出其中英文字母数和空格数及整篇文章总字数;(2)统计某一字符串在文章中出现的次数,并输出该次数;(3)删除某一子串,并将后面的字符前移。
存储结构使用线性表,分别用几个子函数实现相应的功能;输入数据的形式和范围:可以输入大写、小写的英文字母、任何数字及标点符号。
输出形式:(1)分行输出用户输入的各行字符;(2)分4行输出"全部字母数"、"数字个数"、"空格个数"、"文章总字数"(3)输出删除某一字符串后的文章Ⅱ、设计进度及完成情况Ⅲ、主要参考文献及资料[1] 严蔚敏数据结构(C语言版)清华大学出版社 1999[2] 严蔚敏数据结构题集(C语言版)清华大学出版社 1999[3] 谭浩强 C语言程序设计清华大学出版社[4] 与所用编程环境相配套的C语言或C++相关的资料Ⅳ、成绩评定:设计成绩:(教师填写)指导老师:(签字)二○一一年一月二十一日目录第一章概述 (1)第二章系统分析 (2)第三章概要设计 (3)第四章详细设计 (5)第五章运行与测试 (14)第六章总结与心得 (18)参考文献 (19)第一章概述课程设计是实践性教学中的一个重要环节,它以某一课程为基础,可以涉及和课程相关的各个方面,是一门独立于课程之外的特殊课程。
数据结构课程设计(附代码)
上海应用技术学院课程设计报告课程名称《数据结构课程设计》设计题目猴子选大王;建立二叉树;各种排序;有序表的合并;成绩管理系统;院系计算机科学与信息工程专业计算机科学与技术班级姓名学号指导教师日期一.目的与要求1. 巩固和加深对常见数据结构的理解和掌握2. 掌握基于数据结构进行算法设计的基本方法3. 掌握用高级语言实现算法的基本技能4. 掌握书写程序设计说明文档的能力5. 提高运用数据结构知识及高级语言解决非数值实际问题的能力二.课程设计内容说明1. 项目一(1) 对设计任务内容的概述学生成绩管理**任务:要求实现对学生资料的录入、浏览、插入和删除等功能。
输入:设学生成绩以记录形式存储,每个学生记录包含的信息有:学号和各门课程的成绩,设学生成绩至少3门以上。
存储结构:采用线性链式结构。
(2) 详细设计LinkList *create():输入学生成绩记录函数;void print(LinkList *head):显示全部记录函数LinkList *Delete(LinkList *head):删除记录函数LinkList *Insert(LinkList *head):插入记录函数void menu_select():菜单选择void ScoreManage():函数界面(3) 程序流程图(4) 程序模块及其接口描述该程序可以分为以下几个模块:1、菜单选择:void menu_select();提供五种可以选择的操作,在main函数中通过switch语句调用菜单menu_select()函数,进入不同的功能函数中完成相关操作。
2、输入功能:LinkList *create();通过一个for循环语句的控制,可以一次完成无数条记录的输入。
并将其存入链表。
3、输出功能:void print(LinkList *head);通过一个while的循环控制语句,在指针p!=NULL时,完成全部学生记录的显示。
数据结构课程设计报告(模版)范文
攀枝花学院学生课程设计(论文)题目:*************学生姓名:********学号:**所在院(系):数学与计算机学院专业:计算机科学与技术专业班级:2011级计算机科学与技术1班指导教师:蒋斌职称:讲师2013年12月19 日攀枝花学院本科学生课程设计任务书注:任务书由指导教数据结构课程设计评定表I摘要本次课程设计是利用数据结构的知识编写一个能够实现学生配对的问题的软件,以达到在每一首歌曲中能够有学生配对来进行舞蹈表演。
为了实现这一个功能我们用利用已学的知识进行编写程序。
通过学习数据结构课程和c语言的知识,主要利用数据结构的队列和C语言知识来实现软件的功能。
主要是把男女生分别放在两个队列中,要涉及到队列的判断和循环等算法。
判断队列的满和空的知识来完成。
关键字:学生搭配问题,数据结构,队列,C语言,软件,功能I I目录摘要 (II)1.方案设计 (1)1.1问题描述 (1)1.2需求分析 (1)1.3运行环境 (1)1.4概要设计 (2)2.算法设计 (3)2.1算法设计思想 (3)2.2算法设计的对应方式 (3)2.3算法设计流程图 (4)3.详细设计 (5)3.1设计思想 (5)3.2设计关键算法 (5)4.调试分析 (7)4.1、测试及结果 (7)5.总结 (9)参考文献 (10)程序清单 (11)数据结构课程设计方案设计1.方案设计1.1问题描述一班有m个女生,有n个男生(m不等于n),现要开一个舞会. 男女生分别编号坐在舞池的两边的椅子上.每曲开始时,依次从男生和女生中各出一人配对跳舞, 本曲没成功配对者坐着等待下一曲找舞伴.请设计一系统模拟动态地显示出上述过程,要求如下:1) 输出每曲配对情况2) 计算出任何一个男生(编号为X)和任意女生(编号为Y),在第K曲配对跳舞的情况.至少求出K的两个值。
1.2需求分析核心问题:循环队列的应用数据模型(逻辑结构):循环队列(两个),将男生、女生两组人分别存放,以后实现循环配对输出。
数据结构课程设计
数据结构课程设计第一篇:数据结构课程设计一、课程题目:一元稀疏多项式计算器二、需求分析1、一元稀疏多项式简单计算器的功能是:1.1 输入并建立多项式;1.2 输出多项式,输出形式为整数序列:n,c1,e1,c2,e2,………cn,en,其中n是多项式的项数,ci和ei分别是第i项的系数和指数,序列按指数降序排列;1.3多项式a和b相加,建立多项式a+b;1.4 多项式a和b相减,建立多项式a-b。
2、设计思路:2、设计思路:2.1 定义线性表的动态分配顺序存储结构; 2.2 建立多项式存储结构,定义指针*next 2.3利用链表实现队列的构造。
每次输入一项的系数和指数,可以输出构造的一元多项式2.4演示程序以用户和计算机的对话方式执行,即在计算机终站上显示“提示信息”之后,由用户在键盘上输入演示程序中规定的运行命令;根据相应的输入数据(滤去输入中的非法字符)和运算结果显示在其后。
3、程序执行的命令包括:1)输入多项式a;2)输入多项式b;3)求a+b;4)求a-b;5)求a*b;6)求a的导数;7)求b的导数;8)退出程序。
4、测试数据:1、(2x+5x^8-3.1x^11)+(7-5x^8+11x^9)=(-3.1x^11+11x^9+2x+7);2、(6x^-3-x+4.4x^2-1.2x^9+1.2x^9)-(-6x^-3+5.4x^2-x^2+7.8x^15)=(-7.8x^15-1.2x^9+12x^-3-x);3、(1+x+x^2+x^3+x^4+x^5)+(-x^3-x^4)=(1+x+x^2+x^5);4、(x+x^3)+(-x-x^3)=0;5、(x+x^100)+(x^100+x^200)=(x+2x^100+x^200);6、(x+x^2+x^3)+0=x+x^2+x^3.7、互换上述测试数据中的前后两个多项式三、概要设计为了实现上述功能需用带表头结点的单链表存储多项式。
为此需要两个抽象的数据类型:线性表和多项式。
数据结构课程设计报告及源代码
printf("\t1.车辆到达--1 2.车辆离开--2 3.车辆信息--3 4.退出程序--4\n");
printf("\t**********************************************************\n");
4、要求栈以顺序结构实现,队列以链表实现
三、设计要求
1、独立完成全部代码的设计、编写、调试与部署,运行正确无误
2、编写设计报告书
设计报告书应包括:
(1)问题描述和系统要求
(2)系统主要功能模块设计
(3)设计中遇到的问题及其解决方法
(4)系统运行报告
(5)总结
问题描述:
设有一个可以停放n辆汽车的狭长停车场,它只有一个大门可以供车辆进出。车辆按到达停车场时间的早晚依次从停车场最里面向大门口处停放(最先到达的第一辆车放在停车场的最里面)。如果停车场已放满n辆车,则后来的车辆只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排以便道上的第一辆车就进入停车场。停车场内如有某辆车要开走,在它之后进入停车场的车都必须先退出停车场为它让路,待其开出停车场后,这些辆再依原来的次序进场。每辆车在离开停车场时,都应根据它在停车场内停留的时间长短交费。如果停留在便道上的车未进停车场时,允许其离去,不收停车费,并且仍然保持在便道上等待的车辆的次序。编制一程序模拟该停车场的管理。
typedef struct node
{ int num;
int reachtime;
int leavetime;
数据结构课程设计报告 (附有完整可运行出来的代码)
课程设计报告设计题目:公园导游图一、流程图二、程序代码#include<iostream>using namespace std;#include<stdio.h>typedef struct //定义图结构{int n; /* 图的顶点个数*/char v[100]; /* 顶点信息*/int e[100][100]; /* 边信息*/int shor; /* 最短路径信息*/}park;park *luru(park *x){int j,k;cout<<"请输入公园景点个数"<<endl;cin>>x->n;if(x->n<=0){cout<<"个数输入错误,请重新输入"<<endl;cin>>x->n;}cout<<"请输入景点名称,每个名称只允许一个字符代替"<<endl;for(j=0;j<x->n;j++)cin>>x->v[j];cout<<"请输入景点之间的路径长度,只允许整数型数值,无路径长度的输入0"<<endl;for(j=0;j<x->n;j++)for(k=0;k<x->n;k++){cout<<"请输入第"<<j+1<<"行"<<"第"<<k+1<<"列的路径长度"<<endl;cin>>x->e[j][k];}return x;}int search(park *x){char start,end,temp;int i=0,j=0,temp_1,temp1=10000;cout<<"请输入要查找的起始景点名称"<<endl;cin>>start;while(i<x->n && start!=x->v[i])i++;if(i==x->n){cout<<"没有找到该景点,按任意键返回"<<endl;return 0;}}cout<<"请输入要查找的终点景点名称"<<endl;cin>>end;while(j<x->n && end!=x->v[j]){j++;if(j==x->n){cout<<"没有找到该景点,按任意键返回"<<endl;return 0;}}x->shor=x->e[i][j];temp_1=x->e[i][j];for (int k=0;k<x->n;k++)//两个顶点最小权值判断{if (x->e[i][k]==0||x->e[k][j]==0 )continue;if(x->shor > x->e[i][k] + x->e[k][j]){x->shor = x->e[i][k] + x->e[k][j];temp=x->v[k];}}if(x->shor==0){cout<<"这两个节点中没有连通路,按任意键返回"<<endl;return 0;}if(x->shor==temp_1){cout<<"最短路径信息: "<<start<<"->"<<end<<endl<<"最小路径长度:"<<x->shor<<endl;x->shor=10000;getchar();return 1;if(x->shor<temp_1 && x->shor<=temp1){cout<<"最短路径信息: "<<start<<"->"<<temp<<"->"<<end<<endl<<"最小路径长度:"<<x->shor<<endl;x->shor=10000;getchar();return 1;}cout<<"查找失败,按任意键返回"<<endl;getchar();return 0;}int main(){park x;int i=1;luru(&x);do{search(&x);cout<<"是否继续?"<<endl<<"1.继续"<<endl<<"0.退出"<<endl;cin>>i;}while(i!=0);return 0;}三、运行结果。
数据结构课程设计完整版
西安郵電學院数据结构课程设计报告题目:魔王语言翻译/多项式相乘系部名称:专业名称:班级:学号:学生姓名:指导教师:时间:一、课程设计目的通过本次课程设计,强化上机动手能力,使我们在理论和实践的基础上进一步巩固《C语言程序设计》、《数据结构——使用C语言》课程学习的内容,初步掌握工程软件设计的基本方法,熟知链表,栈,队以及文件的使用方法,学会将知识应用于实际,提高分析和解决问题的能力,为毕业设计和以后工作打下基础。
二、课程设计内容【1】、魔王语言问题描述有一个魔王总是使用自己的一种非常精炼的而抽象的语言讲话,没有人能听懂。
但他的语言是能够逐步解释成人能听懂的语言的,因为他的语言是由以下两种形式的规则由人的语言逐步抽象上去的:(1)α→β1β2 ……βm(2)(θδ1δ2 ……δn)→θδnθδn-1 …… θδ1 θ在这两种形式中,从左到右均表示解释;从右到左均表示抽象。
试写一个魔王语言的解释系统,把他的话解释成人能听懂的话。
基本规则现在有以下三种规则,设大写字母表示魔王语言解释的词汇,小写字母表示人的语言的词汇;希腊字母表示可以用大写或小写替换的变量。
魔王语言可含人的词汇。
(1)B->tAdA(2)A->sae(3)示例:魔王说:B(ehnxgz)B解释成人的语言:tsaedsaeezegexenehetsaedsae若每个小写字母含义如下表示:t d s a e z g x n h天地上一只鹅追赶下蛋恨则魔王说的话是:天上一只鹅地上一只鹅鹅追鹅赶鹅下鹅蛋鹅恨鹅天上一只鹅地上一只鹅【2】、多项式相乘问题描述用带头结点的动态单链表来表示多项式,在此基础上完成多项式的乘法运算。
三、需求分析对所开发系统功能、性能的描述,想要实现的目标。
【1】魔王语言有一个魔王总是使用自己的一种非常精炼的而抽象的语言讲话,没有人能听懂。
但他的语言是能够逐步解释成人能听懂的语言的,因为他的语言是由以下两种形式的规则由人的语言逐步抽象上去的。
数据结构课程设计:飞机订票系统设计与实现(里面附有源代码!)
课程设计题目飞机订票系统院系*******专业***************姓名******学号*********指导教师***2012年7月1. 需求分析1.1 问题描述基于目前人们外出远行频繁,为方便乘客提前买票及优化飞机航空订票服务,需要开发一个飞机订票系统,此程序就是要实现航班情况的录入,查询,订票,退票以及航班的查询和修改等基本功能。
本课程设计的题目为:飞机订票系统。
1.2 基本要求1.2.1 输入的形式和输入值的范围录入航班信息时,需要输入航班号,起降时间,起飞抵达城市,值为字符串;还需要输入航班票价,票价折扣,值为浮点型(float);还需要输入航班是否满仓,值为整型(int)(“1”表示已满仓,“0”表示没有满仓);如需要继续录入航班信息,要输入判别信息,值为整型(“1”表示继续录入航班信息,“0”表示停止录入航班信息)。
客户订票时,需要输入起飞抵达城市,然后选择航班进行查询,选择航班时需要输入航班号,值为字符串。
客户退票时,需要输入姓名,证件号进行退票操作,值为字符串。
查询某个航班的情况时,需要输入航班号,值为字符串;在查询某个航线的情况时,还可以通过输入起飞抵达城市来查询,值为字符串。
查询某个订单时,需要输入订单号,值为整型(int);或者需要输入客户姓名和证件号,值为字符串。
修改航班时,需要输入字符型数据选择进行何种修改操作;增加航班时,需要输入航班号,起降时间,起飞抵达城市,值为字符串;还需要输入航班票价,票价折扣,值为浮点型(float);还需要输入航班是否满仓,值为整型(int)(“1”表示已满仓,“0”表示没有满仓);如需要继续录入航班信息,要输入判别信息,值为整型(“1”表示继续录入航班信息,“0”表示停止录入航班信息);删除航班时,需要输入要删除的航班的航班号;修改航班时间时,需要输入要修改的航班的航班号,修改后的航班起飞时间和抵达时间。
1.2.2 输出形式在所有操作后的输出中都显示操作是否正确以及操作后单链表的内容。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计任务书专业名称:计算机科学与技术(软件工程)课程名称:数据结构课程设计设计题目:文章编辑问题起止时间:2013年6 月24 日至2013年7 月12 日问题描述静态存储一页文章,每行最多不超过80个字符,共N行,程序可以统计出文字、数字、空格的个数,并且可以对文章中特定内容进行查找及替换,同时也可以删除指定内容。
基本要求(1)分别统计出其中英文字母数和空格数及整篇文章总字数;(2)统计某一字符串在文章中出现的次数,并输出该次数;(3)查找出文章中某一段文字,并用其他文字进行替换;(4)删除某一子串,并将后面的字符前移。
输出形式:(1)分行输出用户输入的各行字符;(2)分4行输出"全部字母数"、"数字个数"、"空格个数"、"文章总字数";(3)查找出指定字符串在文章中出现的所有地方并替换,输出替换后结果;(4)输出删除某一字符串后的文章;实现提示存储结构使用线性表,分别用几个子函数实现相应的功能,并且使用菜单的形式,可以选择所要进行的操作(查找、替换、删除、统计等)。
文章编辑系统1概要设计本次课程设计的题目是文章编辑系统,本系统的功能描述如下:用户新建文本、浏览新建文本、文本字符统计、指定字符串统计、指定字符串删除、指定字符串替换等操作。
1.新建文本2.浏览输入文本3.文本字符统计4.指定字符串统计5.指定字符串删除6.指定字符串替换7.退出系统本系统包含七个功能模块,分别为:新建文本模块,浏览输入文本模块,指定字符串统计模块,指定字符串删除模块,指定字符串删除模块,指定字符串替换模块以退出系统模块。
新建文本模块实现用户录入文本信息,并且系统自动保存录入信息。
浏览输入文本模块实现了显示用户录入信息的功能。
指定字符串统模块实现了对英文字母数和空格数及整篇文章总字数的统计。
指定字符串统计实现了统计用户自定义字符串个数的功能。
指定字符串删除模块实现了对用户自定义字符串的删除。
指定字符串替换模块实现了替换用户自定义字符串为用户定义的新字符功能。
退出系统模块实现了退出系统功能。
图1.1 系统功能模块图2详细设计这部分详细介绍了系统中主要部分的功能实现,以及代码功能说明。
void Create(LINE * &head){printf ("请输入一页文章,以Ctrl+E为结尾(每行最多输入80字符!):\n"); //以Ctrl+E结束文本录入,避免发生混淆LINE *p=new LINE; /*首先为链表建立一个附加表头结点*/head=p; /*将p付给表头指针*/char ch[100];while(1){gets(ch); /*输入字符串!*/if(strlen(ch)>80){printf("每行最多输入80字符");break;}if(ch[0]==5)break; /*如果发现输入^E,则退出输入*/ p=p->next=new LINE;p->data=new char[strlen(ch)+1]; /*为结点分配空间*/strcpy(p->data,ch);if(ch[strlen(ch)-1]==5) /*除去最后一个控制符^E */{p->data[strlen(ch)-1]='\0';break;}}p->next=NULL; /*最后的一个指针为空*/ head=head->next;}/**文本字数统计**/int Count_Space(LINE* &head)//统计空格数{LINE *p=head;int asc_space=32;int count=0;int i;int Len;do{Len=strlen(p->data);for(i=0;i<Len;i++)if(p->data[i]==asc_space)count++;}while((p=p->next)!=NULL);return count;}int Count_Num(LINE * &head)//统计数字个数{LINE *p=head;int count=0;int Len;int i;do{Len=strlen(p->data);for(i=0;i<Len;i++)if(p->data[i]>=48 && p->data[i]<=57)count++;}while((p=p->next)!=NULL);return count;}int Count_All_Word(LINE * &head)//统计文章的总字数{LINE *p=head;int count=0;do{count+=strlen(p->data);}while((p=p->next)!=NULL);return count;}int Count_Letter(LINE * &head)//统计字母数{LINE *p=head;int count=0;int Len;int i;do{Len=strlen(p->data);for(i=0;i<Len;i++)if(p->data[i]>='a' && p->data[i]<='z'||p->data[i]>='A' && p->data[i]<='Z')count++; //计算字母个数}while((p=p->next)!=NULL);return count;}int Find_Word(LINE * &head,char *sch)//统计sch 在文章中出现的次数{LINE *p=head;int count=0;int len1=0;int len2=strlen(sch);int i,j,k;do{len1=strlen(p->data);//当前行的字符数for(i=0;i<len1;i++){if(p->data[i]==sch[0]){k=0;for(j=0;j<=len2-1;j++)if(p->data[i+j]==sch[j])k=k+1;if(k==len2) {count++;i=i+k-1;}}}}while((p=p->next)!=NULL);return count;}/**特定字符串的删除**/void del_string_word(char *s,char *sch){char *p=strstr(s,sch);char tmp[80];int len=strlen(s);int k,kk;int i=len-strlen(p);int j=i+strlen(sch);int count=0;for(k=0;k<i;k++)tmp[count++]=s[k];for(kk=j;kk<len;kk++)tmp[count++]=s[kk];tmp[count]='\0';strcpy(s,tmp);}void Del_String(LINE * &head,char *sch)//删除指定的字符串{LINE *p=head;do{while(strstr(p->data,sch)!=NULL)del_string_word(p->data,sch);}while((p=p->next)!=NULL);}/**特定字符串的替换**/void replace_string_word(char *s,char *sch,char *reh){int StringLen;char caNewString[100];char *FindPos = strstr(s, sch);// if((!FindPos) || (!sch))// return -1;while(FindPos){memset(caNewString, 0, sizeof(caNewString));StringLen = FindPos - s;strncpy(caNewString, s, StringLen);strcat(caNewString, reh);strcat(caNewString, FindPos + strlen(sch));strcpy(s, caNewString);FindPos = strstr(s, sch);}/* return 0; */}void Replace_String(LINE * &head,char *sch,char *reh)//替换指定的字符串{LINE *p=head;do{while(strstr(p->data,sch)!=NULL)replace_string_word(p->data,sch,reh);}while((p=p->next)!=NULL);}/**打印输入的文本**/void OutPutTxt(LINE * &head)//向屏幕输出文章{LINE *p=head;printf("文本文件输出如下:");do{printf("%s\n",p->data);}while((p=p->next)!=NULL);}void Count(LINE * &head){printf("文章统计信息结果:\n");printf("全部字母数:%d\n",Count_Letter(head));printf("数字个数:%d\n",Count_Num(head));printf("空格个数: %d \n",Count_Space(head));printf("文章总字数: %d\n",(Count_All_Word(head)+Count_Num(head)+Count_Space(head)+Count_ Letter(head))/2);printf("\n");}void main(){LINE *head;char sch[20];char reh[20];char ID[10];char ch;char tmp_sch[20];char tmp_rch[20];3调试报告在本次程序设计中,在编译过程中,出现了几次问题(1)错误提示:error C2660: 'search' : function does not take 1 parameters错误类型:Search函数参数错误改正方法:将case语句后加break语句进行返回。