- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验三广外校园导游系统的设计与实现
广外校园导游系统的设计与实现
广东外语外贸大学 电气1206 吴俊辉
一、设计要求
设计一个校园导游程序,为来访的客人提供各种信息查询服务。
2、需求分析
⑴设计学校的校园平面图。选取若干个有代表性的景点抽象成一个无向带权图(无向网),所含景点不少于30个。以图中顶点表示校内各景点,边上的权值表示两景点之间的距离。
⑵存放景点代号、名称、简介等信息供用户查询。
⑶为来访客人提供图中任意景点相关信息的查询。
⑷为来访客人提供图中任意景点之间的问路查询。
⑸可以为校园平面图增加或删除景点或边,修改边上的权值等。
二、概要设计
校园旅游模型是由景点和景点之间的路径组成的,所以这完全可以用数据结构中的图来模拟。用图的结点代表景点,用图的边代表景点之间的路径。所以首先应设计一个图类。结点值代表景点信息,边的权值代表景点间的距离。结点值及边的权值用顺序表存储,所以需要设计一个顺序表类。本系统需要查询景点信息和求一个景点到另一个景点的最短路径长度及路线,为方便操作,所以给每个景点一个代码,用结构体类型实现。计算路径长度和最短路线时可用弗洛伊德算法实现。最后用while选择语句选择执行浏览景点信息或查询最短路径。
1、主界面设计
输出每个景点
存储结构设计
用类描述,封装顶点信息
本系统采用图结构类型(mgraph)存储抽象校园图的信息。其中,各景点间的邻接关系用图邻接矩阵类型(adimatrix)存储;景点(顶点)信息用结构数组(vexs)存储,其中每个数组元素是一个结构变量,包含景点编号、景点名称及景点介绍三个分量;图的顶点个数及边的条数由分量vexnum、arcnum表示,它们是整型数据。
此外,本系统还设置了三个全局变量:visited[]数组用于存储顶点是否被访问标志;d[]数组用于存放边上的权值或存储查找路径顶点的编号;campus是一个结构的全局变量。
3、系统功能设计
⑴学校景点介绍
学校景点介绍由函数outputname();实现。当用户选择该功能,系统即能输出学校全部景点的信息:包括景点编号、景点名称
⑵查看浏览线路
查看浏览线路由函数floyed()实现。当用户选择该功能,系统能根据用户输入的起始景点编号,求出从该景点到其他景点的最短路径线路及距离。
⑶查询景点间最短路径
查询景点间最短路径由函数floyed()实现。该功能采用弗洛伊德(Floyd) 算法实现。当用户选择该功能,系统能根据用户输入的起始景点及目的景点编号,查询任意两个景点之间的最短路径线路及距离。
⑷景点信息查询
景点信息查询由函数outputname();
实现。该功能根据用户输入的景点编号输出该景点的相关信息。
⑸更改图信息
更改图的信息功能由主调函数void modify(graph g);
及若干子函数完成,可以实现图的若干基本操作。如增加新的景点、删除边、重建图等。(6)输出邻接矩阵
输出图的邻接矩阵,由函数void output_1();实现。
⑻退出
即退出校园导游系统,由按0函数实现。
PS:算法见附件.cpp
算法运用类class graph描述,对数据进行封装,用容器vector修改内容,但是一开始没有想到,后来就看没有时间就没有修改了,否则可以让算法更加灵活,把输出的矩阵放在文件中,可以防止cmd见面的繁杂。
总体算法还是缺少最优性,限于时间,暂时于此了。
操作结果如图:
代码:
//电六吴俊辉20121003736
#includeiostream
#includefstream
#includeiomanip
#includevector
#includestring
using namespace std;
#define INFINITY 9999
const int n=30;//顶点数
const int e=51;//边数
//#define MAX 32767
class graph
{
private:
int vex[n];
char*name[n][20]; //景点名字
int arc[n][n]; //景点距离
int path[n][n]; //记录路径
int D[n][n]; //记录两点间的最短路径
public:
void creat();//建立邻接矩阵
void output_1();//输出邻接矩阵
void floyed();//佛洛依德求最短路径
void Name();//景点命名
void output_2(int i,int j);//输出最短路径
void outputname();//输出景点
void detail(int m);//景点详细信息
void modify(graph g);//修改顶点
};
void graph::Name ()
您可能关注的文档
最近下载
- 255-20240615+《中庸》第4讲:《行明章》.docx VIP
- 高中语文课堂情境化多模态教学策略探究教学研究课题报告.docx
- 2025深度融合AI的低代码平台.pptx VIP
- 道路桥梁工程课件培训资料.ppt VIP
- ASME B16.5-2020 管法兰和法兰管件(中文版).pdf
- 人教版PEP小学五年级英语上册教案-全册.pdf VIP
- 《第7课 冒泡排序》课件.pptx VIP
- 最新中小学校长选拔笔试试题及参考答案[教育].docx VIP
- DB62T 856-2002 无公害蔬菜番瓜(西葫芦)日光温室生产技术.pdf VIP
- TJYXFIA0002-2024 菜干团体标准.pdf VIP
文档评论(0)