校园导游咨询系统课程设计_第1页
校园导游咨询系统课程设计_第2页
校园导游咨询系统课程设计_第3页
校园导游咨询系统课程设计_第4页
校园导游咨询系统课程设计_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、经济管理学院本科课程设计论文数据结构课程设计目 录第1章校园导游咨询系统概述- 1 -1.1校园导游咨询系统目的- 1 -1.2校园部分景点平面图- 1 -1.3软件运行和开发工具- 1 -第2章需求分析- 2 -2.1程序要求- 2 -2.2程序功能- 2 -2.3测试数据- 2 -第3章系统设计- 3 -3.1设计思路- 3 -3.2系统结构- 3 -第4章程序设计与编码- 4 -4.1概要设计说明- 4 -4.2详细设计- 4 -4.2.1介绍景点函数- 4 -4.2.2主函数- 6 -第5章系统测试- 8 -5.1运行结果界面- 8 -5.2查找景点相关信息的结果- 8 -5.3查找最

2、短路径的结果- 9 -第6章航空客运订票系统概述- 10 -6.1航空客运订票系统简介- 10 -6.2航空客运订票系统原理- 10 -第7章航空客运订票系统需求分析- 11 -7.1程序背景- 11 -7.2系统功能- 11 -第8章航空客运订票系统需求分析- 12 -8.1查询- 12 -8.2订票- 12 -8.3退票- 12 -第9章航空客运订票系统设计- 13 -9.1系统结构- 13 -9.2系统流程图- 14 -9.3详细设计- 14 -9.3.1查询功能- 14 -9.3.2退票功能- 15 -第10章系统测试- 18 -10.1系统主界面- 18 -10.2查询航线信息- 1

3、9 -10.3进行订票操作- 19 -10.4所需已经被预订的情况- 20 -10.5退票界面- 20 -第11章心得与体会- 21 -参考文献- 22 -校园导游咨询系统第1章 校园导游咨询系统概述1.1 校园导游咨询系统目的 设计一个校园导游系统,为来客查询校园的各种信息。并熟练掌握图的知识,加深课堂所学用于实践。1.2 校园部分景点平面图图1-1 东北电力部分景点平面图1.3 软件运行和开发工具1. windowsxp操作系统2. visualc+6.0开发环境第2章 需求分析2.1 程序要求1. 设计你所在的学校的校园平面图,所含景点不少于10个。以图中顶点表示校内各景点,存放景点的名

4、称、代号、简介等信息;以边表示路径,存放路径长度等相关信息。2. 为来访客人提供图中任意景点相关信息的查询。3. 为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的最短的简单路径。2.2 程序功能查询校园各景点的信息并找出最短路径。2.3 测试数据出发点:1:新校区寝室 到达点:10:第二教学楼出发点:10:第二教学楼到达点:1: 新校区寝室出发点:1:新校区寝室 到达点:2:第三教学楼出发点:6:专家招待所 到达点:10:第二教学楼结果正常,未发现错误第3章 系统设计3.1 设计思路1. 创建校园图:2. 先定义节点个数n,边的最大值(maxedg),节点(景点名称、景点信息),

5、邻接点,边,顶点向量,当前顶点数和边数。3. 先给一个节点赋上其相关信息,然后再用p = (node)malloc(sizeof(edgenode)语句申请下一结点,再给所申请的节点赋上相关信息,直到节点数为n=10为止。4. 读入道路的起始点,为邻接矩阵的边赋相应的值。5. 节点和边的相关信息都弄好了后,校园图也就创建好了6. 利用函数name给10个节点赋上相应的名称,利用函数information给各节点添加相应的介绍信息。7. 利用函数travgraph来查找景点信息,要查找景点名称时调用name函数,要查找景点介绍信息时调用information函数。8. 手动创建一个校园图crea

6、t(matrix_graph *g),然后为相应的边赋上真正的值。9. 用path函数来求任意两景点之间的最短路径。10. 用main函数来输出结果:用switch语句分别输出,要创建校园图时调用creatgraph函数;查找景点相关信息时调用travgraph函数;要查找任意两景点之间的最短路径时,先输入你目前所在的位置,再输入你的目的地,最后调用path函数。3.2 系统结构图3-1 系统结构第4章 程序设计与编码4.1 概要设计说明用无向网表示你所在学校的校园景点平面图,图中顶点表示主要景点,存放景点的编号、名称、简介等信息,图中的边表示景点间的道路,存放路径长度等信息。要求实现以下功能

7、:1. 查询各景点的相关信息。2. 查询图中任意两个景点间的最短路径。3. 查询图中任意两个景点间的所有路径。用图的结点代表景点,用图的边代表景点意见的路径,首先设计一个图类,结点值代表景点的信息,边的权值代表景点之间的距离,结点值及边的权值用顺序表存储,所以需要设计一个顺序表类,本系统需要查询景点信息和求一个景点到另一个景点的最短路径长度及路线,为方便操作,所以给每个景点一个编号,用结构体类型来实现。计算路径长度和最短路线是可以用dijkstra(迪杰斯特拉)算法实现,在主函数中用switch选择语句执行浏览景点信息或查询最短路径。4.2 详细设计4.2.1 介绍景点函数void intro

8、duce() int n; cout请输入查询景点编号:n; switch(n) case 1: cout景点编号:mgr.vexs1.date.number景点名称:mg; cout景点简介:mgroduceendl; break; case 2: cout景点编号:mgr.vexs2.date.number景点名称:mg; cout景点简介:mgroduceendl; break; case 3: cout景点编号:mgr.vexs3.date.number景

9、点名称:mg; cout景点简介:mgroduceendl; break; case 4: cout景点编号:mgr.vexs4.date.number景点名称:mg; cout景点简介:mgroduceendl; break; case 5: cout景点编号:mgr.vexs5.date.number景点名称:mg; cout景点简介:mgroduceendl; break; case 6: c

10、out景点编号:mgr.vexs6.date.number景点名称:mg; cout景点简介:mgroduceendl; break; case 7: cout景点编号:mgr.vexs7.date.number景点名称:mg; cout景点简介:mgroduceendl; break; case 8: cout景点编号:mgr.vexs8.date.number景点名称:mg; cout景点简介:mgr.vexs8.date.i

11、ntroduceendl; break; case 9: cout景点编号:mgr.vexs9.date.number景点名称:mg; cout景点简介:mgroduceendl; break; case 10: cout景点编号:mgr.vexs10.date.number景点名称:mg; cout景点简介:mgroduceendl; break; default: cout输入序号错误。; break; 4.2.2 主函数void main() char

12、k; init(); coutn; coutn; cout n; cout n; cout 欢迎使用校园导游咨询 n; cout 本程序将为您快捷找到东电的景物 n; cout n; cout 2012.1.3 n; coutn; coutn; while(1) cout1.景点信息查询请按“1” 键n; cout2.景点最短路径查询请按“2”键n; cout3.退出系统请按“3”键n; coutk; switch(k) case 1: cout景点简介查询(请输入110)。; introduce(); break; case 2: coutnext; if(p) do /使用do while

13、来查找是否有此航班 if(!p) /如果是到了表尾且没有匹配,goto至再输入航班号 printf(n对不起,没有你要找的航班:n); goto loop1; m=strcmpi(p-hangbanhao,c);/如果匹配的话,m=0 if(m=0) printf(t航班信息:n); printf(航班号:%sn,p-hangbanhao); printf(飞机号:%sn,p-feijihao); printf(飞行时间:%dn,p-feixingriqi); printf(余票量:%dn,p-yupiao); else p=p-next; while(m!=0); if(m=0) /如果找到

14、了,就来给他退票 do h=p-yiding; if(h) printf(请输入你的姓名:); gets(name1);/gets(name1); printf(请输入你订的票数:); scanf(%d,&piao); printf(n); h1=h; h=h-next1; if(strcmpi(h-name,name1)=0&h-dingpiaoshu=piao)/如果名字和订的票数相等,则就给他取消订票 p-yupiao+=h-dingpiaoshu; h2=h; h1-next1=h-next1; free(h2); printf(你取消订票成功:nn); struct weidingk

15、ehu *q3; q.front=p-yudingqueue; if(q.front=q.rear) printf(没有人预订票:n); goto loop1; if(p-yupiao)=(q.front-next2-yudingpiao) h2=(struct yidingkehu*)malloc(sizeof(yidingkehu); strcpy(h2-name,q.front-next2-name); h2-dingpiaoshu=q.front-next2-yudingpiao; n=p-yupiao-q.front-next2-yudingpiao; p-yupiao=n; q3=

16、q.front-next2;/ q.front-next2=q3-next2;/这二语句来删除结点 if(q.rear=q3) q.rear=q.front; free(q3);/释放空间 printf(链队中删除成功n); h2-next1=h-next1; h-next1=h2;/为之插入进已订票客户链表中 printf(为预订的客户订票成功n); else printf(余票数不够,不能为预订客户订票!n); else /如果没有找到,即系统中没有该人的信息,提示是否来重新查找 printf(对不起,该航班没有人订票或者是你没有订该航班的票n); printf(是否要重新查找并取消订票?

17、n); printf(需要请输入1 否则请按2 ); scanf(%d,&m); printf(n); while(m=1); loop1: ;第10章 系统测试10.1 系统主界面图10-1 系统主界面10.2 查询航线信息图10-2 系统主界面10.3 进行订票操作图10-3 进行订票操作10.4 所需已经被预订的情况图10-4 余票为零10.5 退票界面图10-5 退票界面第11章 心得与体会通过本次课程设计,对图的概念有了一个新的认识,在学习离散数学的时候,总觉得图是很抽象的东西,但是在学习了数据结构与算法这门课程之后,我慢慢地体会到了其中的奥妙,图能够在计算机中存在,首先要捕捉他有哪

18、些具体化、数字化的信息,比如说权值、顶点个数等,这也就说明了想要把生活中的信息转化到计算机中必须用数字来完整的构成一个信息库,而图的存在,又涉及到了顶点之间的联系。图分为有向图和无向图,而无向图又是有向图在权值双向相等下的一种特例,如何能在计算机中表示一个双向权值不同的图,这就是一件很巧妙的事情,经过了思考和老师同学的帮助,我用edgesij=up和edgesji=up就能实现了一个双向图信息的存储。 对整个程序而言,dijkstra算法始终都是核心内容,其实这个算法在实际思考中并不难,也许我们谁都知道找一个路径最短的方法,及从顶点一步一步找最近的路线并与其直接距离相比较,但是,在计算机中实现这么一个很简单的想法就需要涉及到很多专业知识,为了完成设计,在前期工作中,基本都是以学习c语言为主,所以浪费了很多时间,比如说在程序中,删除顶点和增加顶点的模块中都有和建图模块相互重复的函数,但是由于技术的原因,只能做一些很累赘的函数,可见在调用知识点,我没有掌握好。不过,有了这次课程设计的经验和教训,我能够很清楚的对自己定一个合适的水平

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论