校园导游系统设计与实现目录1.设计要求2.1需求分析2.2概要设计2.3各个模块名称和功能2.4 系统导游主界面2.4.1前台系统2.4.2后台系统2.4.3退出系统3实验总结参考文献附件1.设计要求设计一个校园导游程序,为来访的客人提供各种信息查询服务。
2.1需求分析⑴设计学校的校园平面图。
选取若干个有代表性的景点抽象成一个无向带权图(无向网),所含景点不少于30 个。
以图中顶点表示校内各景点,边上的权值表示两景点之间的距离。
⑵存放景点代号、名称、简介等信息供用户查询。
⑶为来访客人提供图中任意景点相关信息的查询。
⑷为来访客人提供图中任意景点之间的问路查询。
⑸可以为校园平面图增加或删除景点或边,修改边上的权值等。
景点距离图2.2概要设计校园旅游模型是由景点和景点之间的路径组成的,所以这完全可以用数据结构中的图来模拟。
用图的结点代表景点,用图的边代表景点之间的路径。
所以首先应设计一个图类。
结点值代表景点信息,边的权值代表景点间的距离。
结点值及边的权值用顺序表存储,所以需要设计一个顺序表类。
本系统需要查询景点信息和求一个景点到另一个景点的最短路径长度及路线,为方便操作,所以给每个景点一个代码,用结构体类型实现。
计算路径长度和最短路线时可用迪杰斯特拉(Dijkastra)算法实现。
最后用switch 选择语句选择执行浏览景点信息或查询最短路径。
1、主界面设计为了实现校园导游系统各功能的管理,首先设计一个含有多个菜单项的主控菜单子程序以链接系统的各项子功能,方便用户使用本系统。
2、存储结构设计本系统采用图结构类型(mgraph)存储抽象校园图的信息。
其中,各景点间的邻接关系用图邻接矩阵类型(adjmatrix)存储;景点(顶点)信息用结构数组(vexs)存储,其中每个数组元素是一个结构变量,包含景点编号、景点名称及景点介绍三个分量;图的顶点个数及边的条数由分量vexnum、arcnum 表示,它们是整型数据。
3、系统功能设计本系统除了要完成图的初始化功能外还设置了9个子功能。
图的初始化由initgraph()函数实现。
依据读入的图的顶点个数和边的条数,分别初始化图结构中图的顶点数组和图的邻接矩阵。
9个子功能的设计描述如下。
⑴景点信息查询景点信息查询由函数seeabout()实现。
该功能根据用户输入的景点编号输出该景点的相关信息。
如景点编号、名称等。
⑵学校景点介绍学校景点介绍由函数browsecampus()实现。
当用户选择该功能,系统即能输出学校全部景点的信息:包括景点编号、景点名称及景点介绍。
⑶相邻的景点及其距离为使游客能够知道其周围的景点和路径,方便他们迅速知道其所在位置和周围信息⑷查看浏览线路查看浏览线路由函数shortestpath_dij()实现。
该功能采用迪杰斯特拉(Dijkstra)算法实现。
当用户选择该功能,系统能根据用户输入的起始景点编号,求出从该景点到其他景点的最短路径线路及距离。
当用户选择该功能,系统能根据用户输入的起始景点及目的景点编号,查询任意两个景点之间的最短路径线路及距离。
⑸更改图信息修改一个已有景点的相关信息、删除一个景点及其相关信息、删除一条路径、加一条路径、修改路径长度、添加一个景点⑹数据安全防范设置密码,能保证数据不会被随便更改,由pass()判定密码是否正确,可由changepw()函数修改密码,初始密码为gdufsx⑺写入文件并保存修改打开该软件,若没有graph.txt,则会由系统初始化生成一个graph.txt,若已存在该文档会由该文档中的内容初始化系统。
⑻恢复初始状态若数据已经显得很杂乱并很难修理,就可以启用这个功能⑼退出即退出校园导游系统,由exit(0)函数实现2.3函数结构void initgraph(mgraph &G); //依据读入的图的顶点个数和边的条数,//分别初始化图结构中图的顶点向量数组和图的邻接矩阵void browsecampus(mgraph G); //输出学校全部景点的信息:编号、名称、介绍void cgraph(mgraph &G,Password &pw);//构造无向图和读写文件graph。
txtvoid writetxt(mgraph &G,Password &pw);//写入文件int pass(Password pw); //认证密码的正确与否,正确返回1,错误返回0void reception(mgraph &G); //前台服务函数void seeabout(mgraph &G); //景点信息void shortestpath_dij(mgraph G); //该景点到其他景点的最短路径线路及距离void near(mgraph G); //相邻的景点及其距离void changegraph(mgraph &G,Password &pw); //后台函数,并调用void changeP(mgraph &G,Password &pw); //修改一个已有景点的相关信息void deleteP(mgraph &G,Password &pw); //删除一个景点及其相关信void deleteL(mgraph &G,Password &pw); //删除一条路径void addL(mgraph &G,Password &pw); //添加一条路径void changeL(mgraph &G,Password &pw); //修改路径长度void Add(mgraph &G,Password &pw); //添加一个景点void changepw(mgraph &G,Password &pw); //修改密码void regraph(mgraph &G,Password &pw); //恢复初始状态2.42.4校园导游主界面程序运行,后台对图结构进行初始化,运行结果如图2.4.1。
2.4 主界面2.4.10前台系统前台系统是游客浏览查询界面。
如图2.4.102.4.10 游客浏览界面2.4.11个别景点的相关信息查询景点的相关信息查询是通过seeabout ( )函数来调用输出的,在前台系统输入1,输入任一景点编号即可知道其信息。
运行结果如图2.4.112.4.11 信息查询2.4.12任意两景点间最短路径查询根据用户的需求,在用户输入了起点和终点后计算出最短路径是哪一条路径。
例如起点是3.中国银行,终点是15.教学楼A栋。
运行结果如图2.4.122.4.12 任意两景点间最短路径查询2.4.13输出所有景点信息为方便用户一次性知道所有景点信息,设置了查询所有景点的信息如图2.4.132.4.13 输出所有景点信息2.4.14相邻的景点及其距离为使游客能够知道其周围的景点和路径,方便他们迅速知道其所在位置和周围信息。
如图2.4.142.4.14相邻的景点及其距离2.4.20后台系统输入密码为防止他人随意修改景点信息,需密码验证身份,初始密码为gdufsx,进入后台系统后可修改密码,如图2.4.2002.4.200 输入密码后台服务后台服务具有以下功能:修改一个已有景点的相关信息;删除一个景点及其相关信息;删除一条路径;添加一条路径;修改路径长度;添加一个景点;修改密码;恢复初始状态。
如图2.4.20。
功能如图2.4.21至2.4.282.4.20 后台服务2.4.21修改一个已有景点的相关信息2.4.22 删除一个景点及其相关信息2.4.23删除一条路径2.4.24添加一条路径2.4.25修改路径长度2.4.26 添加一个景点2.4.27修改密码2.4.28恢复初始状态在后台系统输入8,就会询问你是否恢复初始状态,暗“Y”将会使之前一切修改的数据信息都恢复原样,重新初始化。
2.4.28恢复初始状态2.4.3退出系统用户满足了需求之后,只要在主界面菜单处输入0便可退出此次校园导游系统。
运行结果如图2.4.9。
退出系统由于设计者水平有限,本导游图系统的功能还比较简单,没有求出两景点间的多条可行路径供游客选择,无法在界面中显示出地图;由于邻接矩阵是30*30的,所以无法在一个界面中完整简洁的显示出来。
还有个很好的想法也没有实现,就是怎样求出游完所有景点是的最短路径和线路,这样游客就不需要重复走过几个景点。
在这次作业中,我积累了不少经验,提高了动手能力。
在编程序过程中不要急于求成,如果一下字把所有的功能编出来了再去编译,一旦出错,就很难找出是哪里错误了,这就需要一个一个的实现了。
这次作业也让我增加了对文件流的理解。
参考文献[1]严蔚敏,李冬梅,吴伟民.数据结构(C语言版).人民邮电出版社.2011.[2]王珊珊,臧洌,张志航.C++程序设计教程第二版.机械工业出版社.2011//程序名称:校园导游系统设计与实现//程序员:Joebug//编写时间:2015年6月#include <iostream>#include <string.h>#include <stdlib.h>#include <fstream>#include <conio.h>using namespace std;#define N 50#define M 10typedef struct Infor{ //景点结构体char name[20]; //景点名称char inf[100]; //景点信息}Infor;typedef struct{int adj[N][N]; //各景点间的邻接关系用图邻接矩阵类型Infor vexs[N]; //景点(顶点)信息:int vexnum,arcnum; //图的顶点个数及边的条数}mgraph;typedef struct{char p[6];}Password;char inform[30][100]={"信息男宿舍,后面是内环,与风采园相近,前面是南苑9-12栋!","一楼价格还好,但饭菜比较难吃,二楼较贵,饭菜还行!","中国银行营业厅,如果要办理业务,需很早地去排队;有ATM机!","二楼有自强社办公室、校学生会办公室…一楼有健身房!","东西较贵但品类基本齐全!","主要是老师居住。
喜祥数码港要收费,云山数码港在不换硬件条件下免费修!","主要接待外来人员,招待所!","一楼有糖水和奶茶供应,晚上总有很多部门在此开会。