数据结构课程设计说明书讲解

合集下载

数据结构课程设计说明书

数据结构课程设计说明书

计算机本科《数据结构与C语言》课程设计任务书一、设计目的1.学习和巩固C 语言及数据结构的基本知识。

2.充分体会在程序设计中数据的重要作用,学会在程序设计中运用数据结构的相关知识解决问题。

二、设计基本要求1.符合课题要求,实现相应功能;2.要求界面友好美观,操作方便易行;3.注意程序的实用性、安全性;4.随时记录设计情况(备查,也为编写设计说明书作好准备);5.设计成果:设计说明书一份(附录:设计说明书格式及要求);源程序(能编译成可执行文件并能正常运行)。

三、设计组织方法1.分组选题:每班分若干组,每组一个课题(可根据课题工作量大小,合理分配人数),每组设组长一名,负责该组设计工作的协调、分工等。

2.设计过程:1)按组讨论、确定设计方案,确定程序模块,并进行明确分工;2)各人分别完成自己的设计任务,编写源程序,并调试好;3)程序汇总、编译。

四、设计时间第17-18周,共计二周五、设计课题1.飞机订票系统实现如下功能:录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;订票:(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果该航班已经无票,可以提供相关可选择航班;退票:可退票,退票后修改相关数据文件;客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。

修改航班信息:当航班信息改变可以修改航班数据文件要求:根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能;2.宿舍管理查询软件为宿舍管理人员编写一个宿舍管理查询软件, 程序设计要求:录入数据,数据的修改,查询: A.按姓名查询 B.按学号查询 C.按房号查询,显示任一查询结果,统计等功能3.学生成绩管理系统实现功能:程序菜单功能或详细的提示功能,学生信息输入、输出、添加、删除、查询(按学号及姓名)、排序(按姓名,平均成绩,总成绩)、文件保存、文件读入。

数据结构课程设计说明书

数据结构课程设计说明书

车厢调度问题摘要:实现栈的基本操作,即实现类型。

程序对栈的任何存取,即更改,读取和状态判别等操作,必须借助于基本操作。

在操作过程中的任何状态下都有两种可能的操作:“入”“出”。

每个状态下处理问题的方法都是相同的,具有递归特性。

关键字:栈递归打印0.引言《数据结构》是计算机科学与技术、软件工程及相关学科的专业基础课,也是软件设计的技术基础。

《数据结构》课程的教学要求之一是训练学生进行复杂的程序设计的技能和培养良好程序设计的风格,其重要程度决不亚于理论知识的传授,因此课程设计环节是一个至关重要的环节,是训练学生从事工程科技的基本能力,是培养创新意识和创新能力的极为重要的环节。

基本要求如下:(1) 熟练掌握基本的数据结构;(2) 熟练掌握各种算法;(3) 运用高级语言编写质量高、风格好的应用程序。

1.需求分析(1)这个实验要求我用栈实现车厢调度.(2)车厢的个数是由用户输入的.(3)程序会自动给车厢进行从1到 n的编号.(4)用户输入车厢个数后,程序打印出所有可能的车厢出站顺序.2.数据结构设计在这个程序中存储结构是栈,对于栈的声明和定义如下:typedef struct SqStack{int *top; /*栈顶指针*/int *base;/*在栈构造之前和销毁之后.base的值为NULL*/int stacksize; /*当前分配的存储空间*/}SqStack; /*顺序栈的结构体声明和定义*/3.算法设计3.1 对算法的简单描述这个实验中, 要求用到栈. 实现栈的基本操作,即实现类型。

程序对栈的任何存取(即更改,读取和状态判别等操作)必须借助于基本操作。

在操作过程中的任何状态下都有两种可能的操作:“入”“出”。

每个状态下处理问题的方法都是相同的,具有递归特性。

栈实现是方便的无论如何调度,我们的操作都是入栈和出栈,设定入栈为1,出栈为-1,对n列车厢有2n次这样的操作,例如n=4,则有操作1111-1-1-1-1、1-11-11-11-1等.所以还要构造一个操作命令队列trainlist[]。

数据结构课程设计(附代码)-数据结构设计说明

数据结构课程设计(附代码)-数据结构设计说明

应用技术学院课程设计报告课程名称《数据结构课程设计》设计题目猴子选大王;建立二叉树;各种排序;有序表的合并;成绩管理系统;院系计算机科学与信息工程专业计算机科学与技术班级学号指导教师日期一.目的与要求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时,完成全部学生记录的显示。

知道不满足循环语句,程序再次回到菜单选择功能界面。

《数据结构》课程设计说明书

《数据结构》课程设计说明书

《数据结构》课程设计说明书设计题目:贪吃蛇的循环队列实现姓名:陈诚班级:计05-2班学号: 28指导教师:顾泽元 _一、设计题目游戏:《贪吃蛇》的队列实现.二、问题描述现有一个大小为Map_Long * Map_Width的方格地图(每一方格尺寸为BoxSize * BoxSize),在地图中间处有一个长度为3*3方格的小蛇。

一旦游戏开始后:地图上随机位置处生成一只大老鼠(占一个方格);小蛇自动朝着一个方向运动,并且用户可以通过按:上、下、左、右键改变小蛇的运动方向。

当小蛇吃到大老鼠,即蛇运动到它的蛇头所在坐标等于老鼠所在坐标时,小蛇长度增加1。

如此往复,随着小蛇变成了大蛇,游戏难度也随之增加,但当小蛇吃到自己身体或者头部撞到障碍物时,将扣去小蛇的生命值,直到小蛇生命为0,游戏失败。

若在游戏中,小蛇吃光所有的老鼠,则游戏胜利。

三、概要设计1、游戏地图以及游戏主要数据表示:MAP[Map_Long][Map_Width]-----将屏幕的某一块矩形区域划分成Map_Long * Map_Width(40*20)个格,定义地图数组MAP[Map_Long][Map_Width],用以存放如同地面、蛇身、老鼠、障碍物的信息。

ElemType---结构体类型,包含两个int变量,存放蛇一格身体的所在位置。

CirQueue---结构体类型,循环队列。

存放队列中,元素的地址以及队列头尾位置。

Snake------结构体类型,存放蛇的蛇头坐标、方向、生命值、蜕壳控制参数。

Food————结构体类型,存放小老鼠所在坐标、颜色等信息。

2、方案设计:(1)实现封面、界面绘制。

(2)实现读取地图的功能。

(3)实现蛇的方向控制以及游戏的暂停、速度设置、退出等功能。

(4)实现蛇的移动、长长。

(5)实现蛇的越界折返(运动到地图边界后,蛇从另一侧移出)。

(6)实现随机位置产生食物。

(7)实现读取地图的功能。

(8)实现撞到障碍物,扣除相应生命数值。

《数据结构课程设计》指导书

《数据结构课程设计》指导书

《数据结构》课程设计指导书沈阳理工大学.信息学院2013.11.1一.目的与意义软件设计能力对计算机专业的学生是很重要。

通过数据结构的学习,使学生对软件编程能力有一定的提高。

数据结构课程设计是锻炼学生在进一步掌握模块化、结构化程序设计的方法的同时,培养学生运用已学知识分析问题、解决问题及编写实用程序的能力,通过对线性化、层次化、网络化数据结构的了解进一步掌握自然数据的结构方式及组织方式,让学生深入体会存储在计算机中的数据及程序中如何运用数据实现编程。

主要目的如下:1.通过本课程设计使学生对面向对象的设计过程有初的认识,并对面向对象的高能语言的学习打下基础,2.通过不同类型的程序设计使学生进一步掌握数据的几种不同的组织和存储方式,为高级编程做准备,3.为专业课的深入学习和毕业设计打基础二.任务和要求分析每一组题目,按要求完成相应的题目:1.题目参照附录中《数据结构课程设计》题目选题。

2. 要求:1)对相应的题目进行算法设计2)编写源代码3)上机调试4)显示调试结果5)写出实验总结3.课程设计说明书设计完成后,将自己选定的题目按上述要求完成课程设计说明书。

课程设计说明书内容包含:题目、要求、初步设计(可以是流程图、功能模块图)、详细设计、程序代码、测试数据、运行结果、遇到的问题及总结几部分。

三.进度安排设计总学时为2周第一周:查阅资料、小组讨论、进行模块划分写出分析报告,画N-S结构化框图,编写程序清单,上机调试.第二周周四、五:验收(计算机机房),并将课程设计报告交上来.四.考核标准与成绩评定方式成绩评定有如下几项参考:1.初步设计内容的考核:是否有查阅资料能力?是否有设计思想?2.程序编码能力调试能力的考核:程序是否清晰、易读?在技算计上是否可独立完成程序的调试,是否熟练?3.说明书质量的考核:设计结构是否合理?叙述是否正确?方案是否可行?4.答辩:设计结果的调试能力,对自己设计是否熟练?5.出勤率极平时表现的考核:出勤超过2次不到者成绩为不及格。

数据结构课程设计模板结构设计说明

数据结构课程设计模板结构设计说明

数据结构课程设计模板结构设计一.课程设计概述共完成4个题目:1.一元稀疏多项式计算器2.成绩分析问题3.背包问题4.八皇后问题编程语言:VC6.0运行环境:Windows8.0二.一元稀疏多项式计算器问题描述: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。

1.5多项式a和b相乘,建立乘积多项式ab。

需求分析:2.1 定义线性表的动态分配顺序存储结构;2.2 建立多项式存储结构,定义指针*next2.3利用链表实现队列的构造。

每次输入一项的系数和指数,可以输出构造的一元多项式2.4演示程序以用户和计算机的对话方式执行,即在计算机终站上显示“提示信息”之后,由用户在键盘上输入演示程序中规定的运行命令;最后根据相应的输入数据(滤去输入中的非法字符)建立的多项式以及多项式相加的运行结果在屏幕上显示。

多项式显示的格式为:c1x^e1+c2x^e2+…+cnx^en设计思路:要解决多项式相加,必须要有多项式,所以必须首先建立两个多项式,在这里采用链表的方式存储链表,所以我将结点结构体定义为运用尾插法建立两条单链表,以单链表polyn p和polyn h分别表示两个一元多项式a和b,a+b的求和运算等同于单链表的插入问题(将单链表polyn p中的结点插入到单链表polyn h中),因此“和多项式”中的结点无须另生成。

为了实现处理,设p、q分别指向单链表polya和polyb的当前项,比较p、q结点的指数项,由此得到下列运算规则:① 若p->expn<q->expn,则结点p所指的结点应是“和多项式”中的一项,令指针p后移。

② 若p->expn=q->expn,则将两个结点中的系数相加,当和不为0时修改结点p的系数。

数据结构设计说明书

数据结构设计说明书

摘要数据结构是研究与数据之间的关系,我们称这一关系为数据的逻辑结构,简称数据结构。

当数据的逻辑结构确定以后,数据在物理空间中的存储方式,称为数据的存储结构。

相同的逻辑结构可以具有不同的存储结构,因而有不同的算法。

本次课程设计,程序中的数据采用“树形结构”作为其数据结构。

具体采用的是“二叉排序树”,并且使用“一维数组”来作为其存储结构。

一维数组顺序表存储结构是用一组地址连续的存储单元依次自上而下、自左而右存储完全二叉树上的结点元素;本课程设计实现了二叉排序树的创建、中序遍历、计算二叉排序树的平均查找长度和删除二叉排序树中某个结点。

本课程主要介绍了本课题的开发背景,所要完成的功能和开发的过程。

重点说明了系统的设计思路、总体设计、各个功能模块的设计与实现方法。

关键词:二叉排序树的实现;C语言;数据结构;线性表;顺序表;中序遍历。

目录摘要 (I)1 课题背景的介绍 (3)1.1 课题背景 (3)1.2 目的 (3)2 需求分析 (3)课程设计题目、任务及要求 (3)课程设计思想 (4)3 系统总体设计 (5)3.1 系统模块划分 (5)3.2 二叉排序树的生成过程 (5)3.3 主要功能模块设计 (5)4 系统详细设计 (7)4.1 主函数菜单模块 (7)4.2 查找模块 (8)4.3 插入模块 (9)4.4 中序遍历模块 (10)删除模块 (11)5 系统连编与运行 (13)6 总结 (14)参考文献 (15)附录 (14)A)课题背景的介绍课题背景随着经济的迅速发展,各行各业纷纷应用电脑数据信息管理。

当然数据信息是一个很笼统的概念,随着现代信息的大量增加,其处理难度也越来越大,如何对各个数据信息进行更好的树立,这就是我们研究这个课题的目的。

在电脑迅速发展的今天,将电脑这一信息处理器应用于实际数据问题问题的信息计算已是势必所然,而且这也将数据信息处理带来前所未有的改变。

采用电脑对数据的信息处理是信息科学化和现代化的重要标志,它也给各行各业带来了明显的经济效益。

数据结构课程设计说明(2014.12)

数据结构课程设计说明(2014.12)
课程设计目标与特点
课程设计目标
解决数据结构课程学习过程中存在的困惑(数据结构内容
抽象;动态存储结构理解;使用多种技术,如递归技术等; 算法描述,设计无从下手等) 通过课程设计的综合训练,培养学生实际分析问题、解决 问题、编写程序和动手操作的能力,最终通过课程设计的 形式,帮助学生系统掌握本课程的主要内容,具有将强的 程序设计能力。
课程设计步骤
选题阶段 建模阶段
数据对象及其关系的描述 问题求解的要求及方法
问题求解
选择合适存储结构
构造求解算法
算法实现(编写程序)
调试与测试
总结与思考(重点指出独创部分,以及存在不足) ——提交各阶段小组讨论的会议记录
课程入一页文字,程序可以统计出文字、数字、空格的个 数。 静态存储一页文章,每行最多不超过80个字符,共N行;要求: (1)分别统计出其中英文字母数和空格数及整篇文章总字数; (2)统计某一字符串在文章中出现的次数,并输出该次数; (3)删除某一子串,并将后面的字符前移。 存储结构使用线性表,分别用几个子函数实现相应的功能; 输入数据的形式和范围:可以输入大写、小写的英文字母、任 何数字及标点符号。 输出形式:(1)分行输出用户输入的各行字符;(2)分4行输 出"全部字母数"、"数字个数"、"空格个数"、"文章总字数"(3) 输出删除某一字符串后的文章;
每组必须提交可运行的程序源代码(电子版) 每组必须提交答辩PPT (电子版) 每组必须提交《〈数据结构〉课程设计报告——***》(电
子版)(报告中“自我评价”每人一份)
评分标准
平时成绩占20% 答辩成绩占40%(PPT讲解+程序运行结果+答辩提问等) 《〈数据结构〉课程设计报告》40% 以上三项缺一不可,否则不能到得相应学分
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

安徽理工大学
数据结构
课程设计说明书题目: 一元多项式计算
院系:计算机科学与工程学院
专业班级:数字媒体13-1班
学号: 2013303102
学生姓名:钱福琛
指导教师:梁兴柱
2015年 1月 9 日
安徽理工大学课程设计(论文)任务书计算机科学与工程学院
2014年 11 月 10 日安徽理工大学课程设计(论文)成绩评定表
目录
1 问题描述
2 功能描述
2.1 课题要求...........................................
2.2 软件格式规定.......................................
3 设计 2
3.1 相关函数介绍说明...................................
3.2 主程序的流程基函数调用说明.........................
4 程序设计 4
4.1 多项式存储的实现...................................
4.2 加减乘除算法.......................................
4.2.1加法运算的实现...............................
4.2.2减法运算的实现...............................
4.2.3乘法运算的实现...............................
4.2.4除法运算的实现...............................
4.3 函数调用关系图.....................................
5 运行测试
1 问题描述
1.1首先是确定结构化程序设计的流程图,利用已学过的数据结构来构造二个存储多项式的结构,接着把输入,加,减,乘,除运算分成四个主要的模块:实现多项式输入模块、实现加法的模块、实现减法的模块、实现乘法的模块、实现除法的模块.
2 功能描述
2.1 课题要求
A. 支持一元多项式的运算器
B. 能够正确输入并显示输入多项式的每一项
C. 要求将输入的多项式F(X),G(X)可进行加,减,乘,除运算,并显示结果
2.2 软件格式规定
A.输入的形式 :按程序菜单的数字选择输入,并按提示输入多项式。

按照(系数指数)的格式进行输入并以输入(0 0)作为结束输入的控制。

B. 程序所能达到的功能 :能够进行多项式的输入,显示,加,减,乘,除运算。

C.输出的形式:按照多项式的数学表达式的形式输出,形如:
F(x)=X^2+2X^3-2X^4-3X^3-X^1+10
3 设计
3.1 相关函数介绍说明
(1)程序定义的数据结构类型为线性表的链式存储结构类型变量:
typedef struct linknode
(2)程序定义的其它函数:
linnode *Sort(linnode *S);
//多项式按指数从大到小排序
linnode *CreateList();
//创建多项式
Void ShowList(linnode *head) ;
//显示多项式
linnode *Copy(linnode *copy);
//拷贝多项式(因为做减法运算时会破坏原来输入的多项式)linnode *SearchList(linnode *head,int x);
//查找函数
Linnode*Mulr(linnode *s,linnode *p)
//用一个节点去乘与一个多项式(辅助除法运算)
Linnode *AddSame(linnode *head);
//和并多项式的同类项
linnode *Add(linnode *head1,linnode *head2);
// 加法
linnode *Mul(linnode *head1,linnode *head2);
// 乘法
linnode *Sub(linnode *head1,linnode *head2);
// 减法
Void Div(linnode *head1,linnode *head2)
//除法
int main()
//主函数
3.2 主程序的流程基函数调用说明
(1)主程序的简要流程图
图1 主程序流程图
(2)各程序模块之间的层次(调用)关系
①输入模块“CreateList()”,首先按提示逐项输入多项式的每一项,当接收到“0 0”时终止输入,此时调用“Sort()”进行按指数降序排列后直接返回多项式的链表头指针。

②加法运算模块“Add()”,首先将两个多项式连接成一个多项式,再调用“AddSame ()”函数进行合并连接后的多项式的同类项并返回头指针。

③减法运算程序模块“Sub( )”,首先判断多项式1是否为空,不为空时调用“SearchList ()”进行查找操作,查找到的结果与多项式1作减法后删除多项式2中查找到的对应项。

多项式2中剩余的项取反后连接到多项式1的尾部,再调用“AddSame()”进行合并同类项操作并返回头指针。

④乘法运算程序模块“Mul( )”,首先判断输入的多项式两个不为空时进行多项式相乘运算,并将结构存储在新创建的多项式中。

再调用“AddSame()”进行合并同类项后返回头指针。

⑥除法运算模块“Div”,首先判断第一个多项式的最高次数大于或等于第二多项式的最高次数,然后再用第一个多项式的第一项去除于第二个多项式的第一项,所得的商的第一项,然后调用“Mulr()”用商的第一项去乘第二个多项式,用第一个多项式减去乘得的多项式,所得的差多项式再与第二个多项式的最高指数项判断。

直到第二多项式的最高次数项大于与之判断的多项式时结束运算,并调用“ShowList()”输出相应的结果。

⑥显示函数“ShowList()”,首先调用“Sort()”进行排序,再按格式输出多项式的每一项。

4 程序设计
4.1 多项式存储的实现
多项式是由若干项构成的一个数学式子,其每一项包含系数与指数。

然而我们可以把每一项看成是一个节点,再由这些节点连接成多项式。

根据所学数据结构,采用线性表的链式存储来存储多项式的每一个项的系数与指数。

其结构为:
4.2 加减乘除算法
在多项式运算的程序设计中,每一部分都会调用一些其它函数来辅助完成运算(例如:对输入的多项式进行排序,查找,合并等),在这里主要说明加减乘除运算的程序设计,其它函数的程序设计和具体调用关系请查看程序清单。

4.2.1加法运算的实现
加法计算还是比较容易实现的,将两个传递过来的多项式链表进行复制操作(加法运算会破坏原来两个链表的结构),再将复制出来的两链表进行连接操作,即将第一个多项式链表的尾指针next指向第二个链表的第一个节点,最后进行合并同类项操作。

图2 加法运算原理图
对于加法运算我们并不用考虑多项式是否为空的情况,为空时连接后合并同类项处理后仍然返回空的多项式。

4.2.2减法运算的实现
图3 减法运算原理图
4.2.3乘法运算的实现
图4 乘法运算原理图
4.2.4除法运算的实现
图5 除法运算原理图
在程序设计时应注意:
由于在输入多项式的时候就调用了Sort()函数进行降序排序,因此在除法运算时并不需要从新排序。

4.3 函数调用关系图
此函数调用关系图主要描述了四则运算的实现、取反及实现各运算所要调用的函数,详情还请看程序清单。

图6函数调用关系图
5 运行测试
图7 主界面效果图
main ()选择菜单
Add()加法运算 Sub()减法运算 Mul()乘法运算 Copy()备份 CreateList()创建 Sort()排序 AddSame()合并
AddSame()合并 SearchList()搜索
节点 Copy()备份 AddSame()合并 Div 除法运算
Mulr()
Negate()取反
AddSame()合并
ShowList()显示输出
Sort()排序
SearchList()搜索 SearchList()搜索 SearchList()搜索
图8 按1输入多项式
图9 输入测试数据
图10 显示输入的测试多项式
图11 多项式相加
图12 多项式相减
图13 多项式相乘
图14 多项式相除。

相关文档
最新文档