大型景区的管理系统C++实现

本次项目主要是设计一个大型景区的管理系统。系统用户包括管理员和游客两类,管理员负责管理景区的景点维护;游客可以根据自己的需求对景区进行各种信息查询,及路线规划等。
1.1系统背景
当今出行旅游已经是一件十分普遍的事情,而且随着经济的发展各个地方的旅游人数都在逐年上升。但是对于各个景区的负责人员来说旅游人数的递增给他们带来了许许多多的问题,例如景区没有足够的导游给游客们提供各景区介绍或者最快捷游览完所有景点的路径指导。而且游客乱停车的现象给景区的观光环境及秩序管理带来了很大的困扰。同样对于游客来说,他们却面临着无人提供指导服务以及停车难的问题。因此设计一个为游客自助提供服务并且便于景区管理人员对游客和车辆进行管理的软件系统是非常有必要且有发展前景的。
1.2系统功能需求
根据上述背景我打算设计的系统是一个大型的景区管理系统,系统的用户包括管理员和游客两类,管理员负责管理景区的景点维护而游客可以根据自己的需求对景区进行各种信息查询及路线规划等。
其中游客方面对系统的功能需求有:首先游客需要在任意时刻都能看到景区管理员发布的通知信息,其次游客能够按照景点关键字、景点热度、景点岔路数对景区的景点进行搜索与排序搜索得到的结果需要包含景区简介、有无休息区、有无厕所等信息;游客还能够查看景点的景区分布图,该分布图中显示景区每个景点到其他所有景点是否有直接通路、到达另一景点的路径长度以及大概需要花费的时间等信息;然后游客能够输入自己拟游览起点景区以及目标终点景区的名称从而获取系统提供的最短路径推荐;最后游客可以选定景区中任意一个景点,系统能帮游客找出以该景点为起点,能够保证游客可以将景区每个景点都去到并且最终返回该出发结点的最短路线推荐。
系统管理员方面对系统的功能需求有:为了防止游客错误地执行管理员才能够执行的操作,首先管理员要能够在进入系统之后进行管理员登录操作从而验证其管理员身份以便进行景区的管理;其次管理员主要的功能需求便是停车场系统这一部分,在该部分的功能当中管理员对到达停车场车辆的车牌信息以及到达时间进行记录并为车辆分配好一个停车的位置并将其位置记录;其次管理员需要对退出停车场的车辆进行结算收费并且为其他可能在等待停车的车辆分配车位;管理员能够随时查看当前时刻停车场车辆停靠信息以及便道上所停车辆的信息,确保已有车位的车辆在为了给其他需要离开停车场的车辆让道之后再次返回停车场内时能停靠至退让前的位置并且给按照时间顺序给在便道上等待的车辆依次安排停车位。
根据用户需求,我设计的本系统的用例图如下:
用例图
1.3系统解决方案
对于管理员部分的解决方案,设计一个Admin类当管理员登录之后实例化一个Admin类的对象,该管理员对象可以执行Admin类中的所有方法以实现管理员对景区的管理操作。该解决方案的设计原则是要实现应有的方法,确保管理员能够有效且无误地执行景点插入、景点删除、路径插入、路径删除、查看景点分布、发布通知公告、管理停车场等操作。该解决方案的设计优势是不仅能够保证管理员的所有操作都能顺利完成,还能运用登录的方法实现在同一平台上管理员与普通游客的区分,进而减少游客误操作的概率。
对于游客部分的解决方案,由于游客数目众多,因此不能在每个游客进入系统的时候都实例化一个游客的对象。我设计了一个所有游客都能够同用的TravelSystem类,该类中包含实现游客功能需求中例如查看景点分布图、景点的查找与排序、查找最短路径和最短距离、查看导游路线图等功能的所有方法。所有游客进入系统之后都能进行上述操作。
1.4主要工作
我开发本系统用到的实验环境是codeblocks编译器,操作系统是windows10。因此我的主要工作是按照以上设计系统时的需求分析按照面向对象程序设计的思想设计合适的类以及方法从而实现好所有用户所需要的功能。并且我还要在编程过程中运用分层设计等思想原则减少代码冗余,确保该软件系统的可靠性、安全性和高性能等特点和优势。
第二章 系统设计
2.1游客部分的系统设计
2.1.1景区分布图的数据结构
对于游客部分的功能设计我创建了一个TravelSystem类以用于对所有游客提供必要的服务,该类中有一个私有成员变量filename,由于景区的初始结构保存于文本文件中,当系统打开时,文本文件名传参至filename然后系统从文件中读取景区信息,初始化景区图结构。另外该类中还有另外一个私有的ALGraph类型的成员变量graph用于以邻接链表形式存储景区分布图的信息,带权无向图的邻接链表。ALGraph类是自定义的结构体类型,其中包含成员变量AdjList类型的vertices数组,数组中每个元素存储对应结点的基本信息,包括景点名称、景点简介、景点欢迎度、有无休息区、有无公厕以及以该结点为出发结点的边的链表ArcNode的头结点。而用于存储边的链表的结构体类ArcNode包含边所属结点、该边的长度、该边对应景区路径耗时程度以及边所指向的目的结点名称等信息。用于存储景区各景点的图的具体代码如下:
typedef struct ArcNode {//ArcNode变量类型存储边的信息
int adj;//所属哪个结点
float time;
int distance;
string destination;
ArcNode* nextArc;//指向下一顶点
} ArcNode;
typedef struct VNode {//存储景点的基本信息
string name;//景点名称
string intro;//景点简介
int popular;//景点欢迎度
bool rest_place;//有无休息区
bool washroom;//有无公厕
bool visible = false;
int edgeNum = 0;
ArcNode* hea

  • 7
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值