ImageVerifierCode 换一换
格式:DOCX , 页数:38 ,大小:693.73KB ,
资源ID:17034962      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/17034962.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构课程设计报告 2Word下载.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据结构课程设计报告 2Word下载.docx

1、 char nameMAX; /客户姓名 int ticketnum; /客户订票量 char rankMAX; /舱位等级 int ticketMAX; /记录座位号Client; /客户信息 int NO; /座位号 int flag; /标记是否被买Ticket;typedef struct int fID; /航班号 char fModelMAX; /航班机型 char airFromMAX; /起飞机场 char airToMAX; /降落机场 char weekMAX; /起飞时间 char startMAX; char endMAX; /降落时间 char timeMAX; /飞

2、行时长 float price; /价格 int count; /成员定额 int rest; /余票量 Client clientMAX; /购买该趟航班所有客户信息 int clientnum; /购买该趟航班的客户数量DataType; /航班数据类型typedef struct node DataType data; Ticket ticket100; struct node* next;SLNode;b.候补队列结构体: 候补队列没有采用队列,而是采用链表,只是添加数据时在末尾添加,删除数据在首部添加。 /候补客户名称 int number; /候补客户订票量 /候补客户订购的航班号

3、QDataType; /候补信息typedef struct qnode /候补客服信息链表 仿队列 QDataType data; struct qnode *next;ListQueue;(2)算法设计 该系统包含五项基本功能:添加航班,查找航班,删除航班,订票,退票。 添加航班:输入航班基本信息,申请空间,将客户信息插入链表结尾。 删除航班:根据输入的航班号在链表里搜索,找到后将该节点删除。 查找航班:包括按航班号查询,按起点站、终点站查询,按日期查询。算法均 类似,在链表里搜索查询条件,并将航班信息输出,如果搜索到表尾均没有,表示没有该趟航班信息。订票业务:根据客户输入的航班号和订票量

4、,在航班信息表中搜素,没有则提示错误,并返回。有则比较航班的余票量是否满足客户的需求,满足则为该客户订票,将该客户信息存入该趟航班节点中,并检索座位号信息是否被订过,将没有被订的座位号输出,并将该客户的余票量改变。若不满足客户需求,询问客户是否需要进入候补队列等待买票,客户需要则将该客户的信息存入候补队列中,有客户退票并满足即可订票,不需要就返回。退票业务:先提示客户输入航班号和名称,在航班信息里搜索,检查客户输入的信息是否正确(该客户是否存在,该客户退的票数是否比定的票数少或者相等),输入错误就提示并输出,输入正确,若输入的票数和客户订购的票数相等,则将该客户的信息从链表中删除,并将该客户的

5、座位号退回去(将该趟航班的这几个座位号标识记为未定),将订购该趟航班的客户数量加一;若输入的票数比客户订购的票数少,则将该客户后面部分的票退回去,并将该趟航班的余票量减少,最后将该客户订购的票数减少。退票就完成了。 然后检索候补队列的信息,依次询问客户是否需要订票,若满足则订票,不满足就询问下一个。最后添加了一点打印功能,可以将购买某趟航班的客户信息打印出来,以及打印候补队列客户信息,方便随时查询内存情况。2.设计表示: (1)函数调用关系图:(2)函数接口规格说明: void SLNodeInit(SLNode *head) /链式表 存储航班信息int SLNodeInsert(SLNod

6、e *head,DataType x) /插入节点void SLNodeFirst(SLNode *head) /初始化2趟航班int SLnodeLength(SLNode *head) /求链表长度void ListQueueInit(ListQueue *head) /候补客户链表初始化int ListQueueLength(ListQueue *head) /链表长度ListQueue* ListQueueFind(ListQueue *head,int number,int fid) /按照航班号和票数在链表里查找void ListQueueDel(ListQueue *head,L

7、istQueue *node) /删除该节点ListQueue* ListQueueInsertLast(ListQueue *head,char name,int fid,int number) /客户信息插入候补末尾SLNode* FlightAdd(SLNode *head) /添加航班void FlightPrint(SLNode *head) /打印出航班信息void FlightDelete(SLNode *head) /删除航班void ListQueuePrint(ListQueue *head) /候补名单打印void ClientFind(SLNode *head,int

8、fid) /查找订购某趟航班的客户信息int BackFind(SLNode *head,int fid,char name,int nu/判断退票客户信息是否有误void FlightIDFind(SLNode *head,int fid) /按航班号查询void FlightStartFind(SLNode *head,char start) /按起飞机场查询void FlightEndFind(SLNode *head,char end) /按着陆机场查询void FlightDateFind(SLNode *head,char date) /按星期查询ListQueue* Ticket

9、Order(SLNode *head,int fid,int tknum,ListQueue *SS) /订票void TicketBack(SLNode *head,int fid,int tknum,char name,ListQueue *S) /退票3.详细设计: (1)调试分析: a.首先写程序我没有把客户信息保存下来,而是单独用一个链表保存,后来写到后面遇到瓶颈,又改为每趟航班都保存客户信息。 b.退票业务没有根据客户姓名退票,在老师的指点下,退票将客户信息与链表中的客户信息对比,输入没有错误才可以退票。 c.座位号是后来老师指点下设置标记为存起来,每次订票和退票都修改标志位,这样

10、座位号才是联系起来的。 (2)用户手册: a. 按照提示输入数据,一定注意数据的格式和数据的个数。 b. 输入数据最好先保存在文档中,再复制,不然输入错误一个肯能导致程序运行错误。 (3)测试数据及测试结果:添加的两趟航班信息:按航班号查询航班信息:查询候补客户信息:退票后为候补客户订票查询购票客户信息:题目5:铁路网最佳经由问题1需求分析铁路运输网络中有铁路线和火车站两个主要概念,譬如:1号铁路线表示京广线,2号铁路线表示京沪线等。铁路线对象包括铁路线编号、铁路线名称、起始站编号、终点站编号、该铁路线长度、通行标志(00B客货运禁行,01B货运通行专线,10B客运通行专线,11B客货运通行)

11、。火车站对象包括所属铁路线编号、车站代码、车站名、车站简称、离该铁路线起点站路程及终点站路程。要求:(1)查询某站所属的铁路线。(2)要求具备新增铁路线的管理功能。(3)要求具备新增车站的管理功能。(4)针对客运、货运情况能计算任何一个起始车站到任何一个终点站之间的最短路径。并且要求能够显示出该最短路径的各个火车站的经由顺序。(5)能输出全部线路及沿途站点。二.设计铁路线采用动态链表存储,包括铁路线编号、铁路线名称、起始站编号、终点站编号、该铁路线长度、通行标志(00B客货运禁行,01B货运通行专线,10B客运通行专线,11B客货运通行)结构体如下: int rID; /铁路线编号 /铁路线名

12、称 int startID; /起始站站点编号 int endID; /终点站编号 long length; /铁路线长度 char sign3; /通行标志 /铁路线数据 struct node *next; /铁路线节点所有站点采用邻接表存储,邻接表的下一个节点包括该站点的站点代码和距离上一个站点的距离,结构体如下:typedef struct Node2 int sID; /站点代码 long weight; /前一个站到这站的距离 struct Node2 *next;Edge; /两个站点之间的边typedef struct Node1 int belongMAX; /站点所属的铁路

13、线 int routecount; /站点所属的铁路线数量 char *name; /站点名称 char *shortname; /站点简称 long startDis; /距离起始站的距离 long endDis; /距离终点站的距离 /记录它在数组的第几个位置,方便深度优先算法用 Edge *adj; /邻接边头指针SDataType; /站点数据 SDataType dataMAX; /每个站点的数据 /记录站点个数GNode; /图节点(2)算法设计:该系统采用动态链表存储所有铁路线信息,但是包括的站点只是起点站和终点站,以及该铁路线所有其他信息,铁路线所以站点(包括起点站和终点站)单

14、独采用图的邻接表存储。系统包括项功能:添加铁路线,查看铁路线,添加站点,显示全部站点信息及沿途站点,找到任意两点间的最短距离。添加铁路线:根据输入的铁路线信息,检查这两个站点是否已经存在,若不存在,申请内存,将数据存入并插入到链表的末尾。并将两个站点所属的铁路线加入所属铁路线数组中,所属铁路线数量递增。若存在,则只添加该站点所属的铁路线,并修改邻接表的相关信息。查询铁路线:在链表中一次循环,将铁路线信息输出,链表为空则提示错误。添加站点:输入站点所属的铁路线,站点信息,上一站代码,距离上一站点的距离,下一站代码,距离下一站点的距离。先查看是否存在该站点,存在则只修改所属的铁路线,并修改邻接表的

15、相关信息。显示全部铁路线及沿途站点:在铁路线链表中依次搜索铁路线信息,并在站点中搜寻,若属于该铁路线就输出这个站点的信息,当搜索到表尾时,就可以输出全部铁路线信息,同时该系统还采用图的深度优先遍历算法输出全部站点信息。找到任意两点间的距离:题目要求按照铁路通行情况找到任意两点间的距离,但是我只是采用弗洛伊德算法找到任意两点间的最短距离,后来经老师指点可以将全部站点导出各种通行情况,再用弗洛伊德算法,但是由于时间较短,还没有弄出最终结果,目前只能实现寻找任意两点间的最短距离及经过的沿途站点。(1).函数关系调用图:(2).函数接口说明:#include Graph.h /站点相关信息SLNode

16、.h /铁路线相关信息Print.h /输出相关信息void SLNodeInit(SLNode *head) /初始化链表void AddRoute(SLNode *head,int rID,char name,int startID,char *sn,char *ss,int endID,char *en,char *es,long length,char sign,GNode *G) /添加铁路线void PrintRoute(SLNode *head,GNode *G) /输出所有铁路线信息void GraphInit(GNode *G) /图初始化void AddStation(GN

17、ode *G,SLNode *head,int belong,int sid,char* sn,char* ss,int preID,long preDis,int laterID,long laterDis) /添加站点int FirstVertex(GNode *G,int v) /求V的邻接节点int NextVertex(GNode *G,int v,int w) /求V的临界点w的第一个节点void DepthFSearch(GNode *G,int v,int visited,void Vist(int sid) /深度优先算法void DepthFirstSearch(GNode

18、 *G,void Visit(int sid) /无向图的深度优先算法2.详细设计:采用动态链表存储所有铁路线信息,但是包括的站点只是起点站和终点站,以及该铁路线所有其他信息,铁路线所以站点(包括起点站和终点站)单独采用图的邻接表存储。采用弗洛伊德算法找到任意两点间的最短距离,后来经老师指点可以将全部站点导出各种通行情况,再用弗洛伊德算法,但是由于时间较短,还没有弄出最终结果,目前只能实现寻找任意两点间的最短距离及经过的沿途站点。3.调试分析:a. 添加站点信息比较麻烦一点,因为可能要添加的站点已经存在,先要搜索站点,没有则添加,即使有了,还要添加站点所属的铁路线信息。并且根据站点相邻的站点,

19、要将整个图串联起来,还要算出各个站点间的距离。b. 求两点间的距离采用弗洛伊德算法,但是我存储数据用了邻接表存储,没有找到相应的站点编号,后来在每个新加入的站点中添加编号,根据编号导出二维数组,才能采用弗洛伊德算法求解。c. 根据弗洛伊德算法求出path路径后,我不知道怎么输出所经过的站点,在网上搜索各种方法,终于找到一种方法可行,就是要递归调用path,最终才得到正确的答案。4.用户手册:a.添加信息注意数据的格式和数量,否则程序运行会出错,最好用文档保存下来,再复制。b.添加站点信息,需要提供所属的铁路线,它的上一个站点信息,距离上一站的距离,还要输入它下一个站点的站点信息和距离下一个站点

20、的距离。c.查找最短距离,还没有分客货运情况,有一点小遗憾,目前只能查看可以通行的路线最短距离。5.测试数据及测试结果:这是我用画图工具画出的铁路网信息图(圆圈表示站点代码)添加铁路线信息:所有铁路线信息:添加站点信息:查询某站信息:所有站点信息:查找两点间的最短距离和经过的站点:题目8:学生成绩管理系统 学生成绩管理是高等学校教务管理的重要组成部分,主要包括学生注册、考试成绩的录入及修改、成绩的统计分析等等。设计一个系统实现对学生成绩的管理。 要求系统应具有以下基本功能: (1)学生注册登记; (2)增加、删除某一班级的学生; (3)成绩录入:输入学生的考试成绩; 要求采用二叉排序树存放学生

21、成绩,一门课程对应一棵二叉排序树; (4)成绩修改:若输入错误可进行修改; (5)统计分析:对某个班级学生的单科成绩进行统计,求出平均成绩;求出成绩处于指定分数段内的学生人数;求出每个学生一学期各科的平均成绩等; (6)查找:查找某个学生的某门课程成绩,查找某门课程成绩处于指定分数段内的学生名单等等。 (7)打印:打印一个班级学生的单科成绩;打印某一课程成绩处于指定分数段内的学生名单;打印学生在某一学期的成绩报告单。 1.设计思想: (1)数据结构设计: 该系统采用链表存储所有学生信息,每个节点表示一个学生信息,包括学生的姓名,班级,学号(唯一),成绩。其中成绩用采用链表存储,可以动态添加科目

22、及该学生该科目的成绩。链表结构体如下: char subjectnameMAX; /科目名称 int sorce; /分数DataTypeSub;typedef struct node3 DataTypeSub data; struct node3 *next;Subject; /学生科目和成绩的链表 Subject *subject;Grade; /科目成绩 /学号 /姓名 int cls; /班级 Grade grade; /成绩 /学生信息typedef struct node /学生信息管理链表节点成绩采用二叉排序树,一科成绩对应一科排序二叉树,但是由于科目可以动态添加,所以我只用了一

23、科树,要查看某科目的排序情况,需要输入科目名称,从链表中取出该科目的成绩,并排出二叉排序树,要查看下一刻目,再输入科目名称,再打印出来。二叉树结构体如下:typedef struct node2 int data; struct node2 *leftChild; struct node2 *rightChild;BiTreeNode;该系统包括以下几个模块:注册学生信息:根据输入的学生学号,姓名,班级,将该学生查询链表末尾,其中学号是唯一的,若存在重复的会提示出错误。查询所有学生信息:遍历链表,并输出信息删除学生信息:根据提供的要删除的学生学号,在链表中找到信息,并删除节点。添加成绩:提示用

24、户输入学生学号,科目名称,并将成绩存入链表相关位置。修改成绩:在链表中找到该学生的科目名称,并修改成绩。打印某一个班级的单科成绩:遍历链表,找到班号,输出全部学生成绩。打印某一科目处于指定分数段的学生名单和数目:这里采用在链表中求名单的方法,不足之处就是没有采用二叉树前序遍历。打印某一学生本学期的成绩单及平均成绩:在链表中找到相关学生的信息,并全部输出,同时求出平均成绩。查找某一学生某一科目的成绩:在链表中找到相关信息并输出。将某一科目成绩存入二叉排序树并打印:这里是先将要打印的科目名称写出来,根据科目名称,取出链表中的全部成绩,并排序,最后打印出来。相关头文件: #include Stude

25、nt.h /学生相关信息Grade.h /成绩相关信息 /要输出的相关函数Tree.h /二叉排序树并打印相关函数void SLNodeInit(SLNode *head) /初始化学生信息链表void StudentAdd(SLNode *head,int sid,char name,int cls) /注册学生信息void StudentPrint(SLNode *head) /显示所有学生信息void StudentDelete(SLNode *head,int sid,int cls) /按学号查删除某个班级的学生void StudentSubject(SLNode *head,int sid,char subjectname) /查找某个学生某门科目的成绩void S

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1