欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    校园导游系统设计与实现(20页).doc

    • 资源ID:37010519       资源大小:206.50KB        全文页数:20页
    • 资源格式: DOC        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    校园导游系统设计与实现(20页).doc

    -校园导游系统设计与实现-第 20 页校园导游系统设计与实现 目录1.设计要求2.1需求分析概要设计各个模块名称和功能 系统导游主界面 前台系统后台系统退出系统3实验总结参考文献附件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,则会由系统初始化生成一个,若已存在该文档会由该文档中的内容初始化系统。 恢复初始状态若数据已经显得很杂乱并很难修理,就可以启用这个功能 退出即退出校园导游系统,由 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.4校园导游主界面 程序运行,后台对图结构进行初始化,运行结果如图2.。 主界面前台系统 前台系统是游客浏览查询界面。如图 游客浏览界面1个别景点的相关信息查询 景点的相关信息查询是通过seeabout ( )函数来调用输出的,在前台系统输入1,输入任一景点编号即可知道其信息。运行结果如图 信息查询2.4.12任意两景点间最短路径查询 根据用户的需求,在用户输入了起点和终点后计算出最短路径是哪一条路径。例如起点是3.中国银行,终点是15.教学楼A栋。运行结果如图2.4.12 2.4.12 任意两景点间最短路径查询2.4.13输出所有景点信息为方便用户一次性知道所有景点信息,设置了查询所有景点的信息如图2.4.13 2.4.13 输出所有景点信息2.4.14相邻的景点及其距离为使游客能够知道其周围的景点和路径,方便他们迅速知道其所在位置和周围信息。如图相邻的景点及其距离后台系统 输入密码为防止他人随意修改景点信息,需密码验证身份,初始密码为gdufsx,进入后台系统后可修改密码,如图 输入密码后台服务后台服务具有以下功能: 修改一个已有景点的相关信息;删除一个景点及其相关信息;删除一条路径;添加一条路径;修改路径长度;添加一个景点;修改密码;恢复初始状态。如图2.4.20。功能如图2.4.21至2.4.28 后台服务 修改一个已有景点的相关信息 删除一个景点及其相关信息删除一条路径添加一条路径修改路径长度 2.4.26 添加一个景点修改密码恢复初始状态在后台系统输入8,就会询问你是否恢复初始状态,暗“Y”将会使之前一切修改的数据信息都恢复原样,重新初始化。恢复初始状态退出系统用户满足了需求之后,只要在主界面菜单处输入0便可退出此次校园导游系统。运行结果如图。退出系统3总结 由于设计者水平有限,本导游图系统的功能还比较简单,没有求出两景点间的多条可行路径供游客选择,无法在界面中显示出地图;由于邻接矩阵是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 name20; /景点名称 char inf100; /景点信息 Infor;typedef structint adjNN; /各景点间的邻接关系用图邻接矩阵类型Infor vexsN; /景点(顶点)信息:int vexnum,arcnum; /图的顶点个数及边的条数mgraph;typedef struct char p6; Password;char inform30100="信息男宿舍,后面是内环,与风采园相近,前面是南苑9-12栋!","一楼价格还好,但饭菜比较难吃,二楼较贵,饭菜还行!","中国银行营业厅,如果要办理业务,需很早地去排队;有ATM机!","二楼有自强社办公室、校学生会办公室一楼有健身房!","东西较贵但品类基本齐全!","主要是老师居住。喜祥数码港要收费,云山数码港在不换硬件条件下免费修!","主要接待外来人员,招待所!","一楼有糖水和奶茶供应,晚上总有很多部门在此开会。二楼有许多套餐!","一楼大众点菜,品类比三饭多。二楼的价格在8元左右!","女生宿舍,北苑三栋楼下有创业园!","组成巡逻队,协助学校保障校园安全。!","位于保卫处后面,在校生校内看病只需支付很少的费用!","具有防空洞;连接宿舍区和教学区!","在隧道口的上方,可以乘坐很多路的公交车!","一楼有中国银行ATM。早上和中午前面有校巴。不少活动的举办地点!","是学习的主要地方,教室里面设施较为齐全,有多媒体、空调、电视等,后面是语心湖和实验楼!","早上会有学生在那里练嗓子,以及读书!","多种会议比赛的场所!","学校政要的办公室所在地!","各学院老师的办公室所在地!","拍毕业照时,校友回来时的聚集之地!","摆放着很多电脑的地方!","位于教学楼和实验楼之间,湖水平静,还有黑天鹅嬉戏于水上!","各种活动的举办场所!","主要是艺术生上课的地方,周六日为雅思考场!","重要会议进行的地方,党课和军训理论课在这里上,有空调!","图书馆除了中英文借阅区与杂志借阅区外,还有自习区;前面有大广场,最前面是学校正门!","内有排球场、篮球场,外有足球场。还有游泳池、网球场!","体育馆有多个观众席;中央可用做正规比赛场所。日常用来上羽毛球课、跆拳道课!","位于图书馆前面,学术报告厅与艺术楼中间,虽然不宏伟,但是也是一个标志!"char Name3020="南苑13栋","风采园(三饭)","中国银行","学活&水榭", "又康超市","师苑&数码港","广外友苑","博雅园(二饭)","文采园(一饭)","创业园","后勤&保卫处","校医室","隧道口","广外公交站","教学楼A栋","教学楼E、F栋","凤凰山坡","八角楼","校办公楼","院系办公楼","校友林","实验楼","语心湖","学术报告厅","艺术楼","大会堂","图书馆","泳池&操场","体育馆&场","正校门"void initgraph(mgraph &G); /依据读入的图的顶点个数和边的条数, /分别初始化图结构中图的顶点向量数组和图的邻接矩阵void browse(mgraph G); /输出学校全部景点的信息 :编号、名称、介绍 void cgraph(mgraph &G,Password &pw); /构造无向图和读写文件graph。txt void writetxt(mgraph &G,Password &pw); /写入文件 int pass(Password pw); /认证密码的正确与否,正确返回1,错误返回0 void reception(mgraph &G); /前台服务函数void seeabout(mgraph &G); /景点信息void shortestpath_dij(mgraph G); /该景点到其他景点的最短路径线路及距离void browsecampus(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); /恢复初始状态 int main()mgraph campus;Password pw;strcpy(pw.p,"gdufsx"); /初始化密码 initgraph(campus);cgraph(campus,pw);int n,m=1;while(m) system("cls"); cout<<" 欢迎使用GDUFS校园导游系统"<<endl;cout<<" *"<<endl<<endl; cout<<" (1)前台服务(游客身份登陆)"<<endl; cout<<" (2)后台服务(管理员身份登陆)"<<endl; cout<<" (0)退出"<<endl<<endl;cout<<" *"<<endl;cout<<" 请输入您的选择(0-2):" cin>>n; switch(n) case 1: reception(campus); break; case 2:if(pass(pw)=1) changegraph(campus,pw); /后台函数 break; case 0: m=0;cout<<"谢谢您的使用!" <<endl<<"按任意键继续" ;getch();exit(0); default: cout<<" 您的输入有误,任意键继续." getch(); void initgraph(mgraph &G) /依据读入的图的顶点个数和边的条数, /分别初始化图结构中图的顶点向量数组和图的邻接矩阵int i,j;for(i=0;i<N;i+)for(j=0;j<N;j+) G.adjij=9999;for(i=0;i<30;i+)strcpy(G.vexsi.name,Namei);strcpy(G.vexsi.inf,informi);G.vexnum=30;G.arcnum=45;G.adj01=55; G.adj10=55; G.adj05=287; G.adj50=287;G.adj12=243; G.adj21=243;G.adj23=28; G.adj32=28;G.adj34=31; G.adj43=31;G.adj45=42; G.adj54=42;G.adj49=106; G.adj94=106; G.adj56=87; G.adj65=87;G.adj57=71; G.adj75=71;G.adj78=132; G.adj87=132;G.adj79=97; G.adj97=97;G.adj712=150; G.adj127=150;G.adj89=111; G.adj98=111;G.adj811=151; G.adj118=151;G.adj813=126; G.adj138=126;G.adj911=257; G.adj119=257;G.adj1011=33; G.adj1110=33;G.adj1013=128; G.adj1310=128;G.adj1027=287; G.adj2710=287;G.adj1213=117; G.adj1312=117;G.adj1214=83; G.adj1412=83;G.adj1216=160; G.adj1612=160;G.adj1326=359; G.adj2613=359;G.adj1415=118; G.adj1514=118;G.adj1416=245; G.adj1614=245;G.adj1522=94; G.adj2215=94;G.adj1526=176; G.adj2615=176;G.adj1618=62; G.adj1816=62;G.adj1718=74; G.adj1817=74;G.adj1719=88; G.adj1917=88;G.adj1722=218; G.adj2217=218;G.adj1920=64; G.adj2019=64;G.adj2021=167; G.adj2120=167;G.adj2122=68; G.adj2221=68;G.adj2123=132; G.adj2321=132;G.adj2326=203; G.adj2623=203;G.adj2329=60; G.adj2923=60;G.adj2425=129; G.adj2524=129;G.adj2428=263; G.adj2824=263;G.adj2429=80; G.adj2924=80;G.adj2526=181; G.adj2625=181;G.adj2527=212; G.adj2725=212;G.adj2528=192; G.adj2825=192;G.adj2627=164; G.adj2726=164;G.adj2728=354; G.adj2827=354;void cgraph(mgraph &G,Password &pw) /写入文件并初始化 int i,j,dist;char c;ifstream infile("graph.txt");if(!infile)infile.close();writetxt(G,pw);elseinfile.close();ifstream infile("graph.txt");infile>>G.vexnum>>G.arcnum;for(i=0;i<G.vexnum;i+)infile>>G.vexsi.name;infile>>G.vexsi.inf; for(i=0;i<G.vexnum;i+)for(j=0;j<G.vexnum;j+)infile>>dist;G.adjij=dist;for(i=0;i<6;i+)infile>>pw.pi; infile.close();void writetxt(mgraph &G,Password &pw) /写入文件 int i,j;ofstream outfile("graph.txt");outfile<<G.vexnum<<endl<<G.arcnum<<endl;for(i=0;i<G.vexnum;i+)outfile<<G.vexsi.name<<endl<<G.vexsi.inf<<endl; for(i=0;i<G.vexnum;i+)for(j=0;j<G.vexnum;j+)outfile<<G.adjij<<" "for(i=0;i<6;i+)outfile<<pw.pi<<" "outfile.close();void browse(mgraph G) /输出学校全部景点的信息 :编号、名称int j=0,k;for(int i=0;i<G.vexnum;i+)k=i+1;cout<<k<<"."<<G.vexsi.name<<'t'j+;if(j%3=0)cout<<endl;if(j%3!=0)cout<<endl;int pass(Password pw)char ch6,judge=1;cout<<" 请输入密码:"for(int i=0;i<6;i+)chi=getch();cout.flush();cout<<"*" for(int i=0;i<6;i+)if(pw.pi!=chi)judge=0;return judge; void changepw(mgraph &G,Password &pw)int i,b=1;char ch6,ch16,judge1=1,judge2=1;while(b=1)cout<<"请输入原密码:"<<endl;for(i=0;i<6;i+)chi=getch();cout.flush();cout<<"*" for(i=0;i<6;i+)if(pw.pi!=chi)judge1=0;if(judge1)cout<<endl<<"请输入新密码:"<<endl;for(i=0;i<6;i+)chi=getch();cout.flush();cout<<"*" cout<<endl<<"请确认新密码:"<<endl;for(i=0;i<6;i+)ch1i=getch();cout.flush();cout<<"*" for(i=0;i<6;i+)if(chi!=ch1i)judge2=0; if(judge2)for(i=0;i<6;i+)pw.pi=chi;cout<<endl<<"修改成功!" <<endl;writetxt(G,pw);elsecout<<endl<<"修改错误!" <<endl; else cout<<"密码错误!"<<endl;cout<<endl<<"返回后台系统按0,继续修改按1"<<endl; cin>>b;cout<<endl;/前台/ void reception(mgraph &G) /前台函数 int n,i,j; while(1) system("cls");/清屏 cout<<"*欢迎使用前台系统*"<<endl; cout<<"(1)个别景点信息查询"<<endl; cout<<"(2)问路查询"<<endl; cout<<"(3)输出所有景点信息"<<endl; cout<<"(4)相邻的景点及其距离"<<endl; cout<<"(0)返回上一级菜单"<<endl; cout<<"请输入您的选择(0-4):" cin>>n; switch(n) case 1: seeabout(G); break; case 2: shortestpath_dij(G); break; case 3: browsecampus(G); break; case 4: near(G); break; case 0: return; break; default: cout<<"您的输入有误,任意键继续."<<endl; getch(); void seeabout(mgraph &G) /景点信息 int a; int b=1;system("cls");browse(G); while(b) cout<<"请输入要查找的景点信息"<<endl; cin>>a; a-;if(a>=0&&a<G.vexnum)cout<<a+1<<"."<<G.vexsa.name<<endl<<G.vexsa.inf<<endl;else cout<<"输入错误,无此景点"<<endl; cout<<"返回前台系统按0,继续查找按1"<<endl; cin>>b;while(b!=0&&b!=1)cout<<"返回前台系统按0,继续查找按1"<<endl;cin>>b;void shortestpath_dij(mgraph G) /该景点到其他景点的最短路径线路及距离 int b=1,i,j,vt,v,v0,w,min; bool SN; int DN,PathN; int n=G.vexnum; system("cls"); browse(G); while(b) cout<<"请输入要查询路径的两个景点的编号"<<endl; cin>>v0; v0-; cin>>vt; vt-; for(v=0;v<n;v+) Sv=false; Dv=G.adjv0v; if(Dv<9999) Pathv=v0;/v0是v的前趋 else Pathv=-1;/v无前趋 Dv0=0; Sv0=true; for(i=1;i<n;i+) min=9999; for(w=0;w<n;w+) if(!Sw&&Dw<min) v=w; min=Dw;/选择一条当前的最短路径,终点为v Sv=true; /将v加入S for(w=0;w<n;w+)/更新当前最短路径及距离 if(!Sw&&(Dv+G.adjvw<Dw) Dw=Dv+G.adjvw; Pathw=v; cout<<"距离为:"<<endl; cout<<Dvt<<endl; cout<<"要经过"<<endl; int f=Pathvt,eN; i=0; while(f!=-1) ei=f; f=Pathf; i+; for(v=i-1;v>=0;v-) cout<<ev+1<<"."<<G.vexsev.name<<"->" cout<<vt+1<<"."<<G.vexsvt.name<<endl; cout<<"返回后台系统按0,继续查询按1"<<endl; cin>>b;void browsecampus(mgraph G) /输出学校全部景点的信息 :编号、名称、介绍 int k;for(int i=0;i<G.vexnum;i+)k=i+1;cout<<k<<"."<<G.vexsi.name<<endl<<G.vexsi.inf<<endl;cout<<"按任意键返回前

    注意事项

    本文(校园导游系统设计与实现(20页).doc)为本站会员(1595****071)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开