【C语言数据结构期末/课程设计】重庆省钱游玩攻略整合与导览系统(EasyX界面)

代写C语言、C++、Java、Python、HTML、JavaScript、vue、MySQL相关编程作业,
长期接单,信誉有保证,标价10-20每份,如有需要请加文章末尾QQ。

本文资源:https://download.csdn.net/download/weixin_47040861/89205349


1.题目要求

(1)景点分布图设计:

设计重庆市的旅游景点分布图。选取特色景点并将其抽象成一个无向带权图,顶点标明景点,边上的权值表示两景点的距离。选择重庆市特色景点作为图的顶点,并根据实际情况设置合理的权值,反映景点之间的距离关系。

(2)路径规划和推荐:

输入两个景点名,就可以得到一个景点到达另一个景点的简单路径,相应路径的路程,公里数以选择方式(轻轨,公交,步行)并推出相应的需求价格,时间以及距离。以最优方式进行推荐。

(3)景点信息存储和查询:

存放编号、景点简介供用户查询。提供用户查询功能,用户可以通过景点名称或编号查找对应景点的详细信息。

(4)旅行体验反馈:

游客可以对景点游览发表意见,吐槽以及亮点。游客可通过对意向景点进行查询,了解景点近期大致人流状况,景点特色(美食,特景)以及避雷,帮助他们更好地游览路线。

(5)用户界面设计:

设计用户友好的界面,包括菜单选项、搜索框、交互按钮等,用户通过注册登录系统能够方便快捷地浏览景点信息、规划行程和分享反馈。

(6)管理员系统维护:

管理员能够对景点信息进行添加、编辑、删除等操作,确保景点信息的准确性和及时性;备份和维护系统中的数据,确保系统的稳定性和安全性。

2.视频演示

【C语言数据结构期末/课程设计】重庆省钱游玩攻略整合与导览系统(EasyX界面)

3.项目流程

该项目主要分为三部分,分别是登录注册部分、管理员操作部分和用户操作部分:

1.登录部分

首先是登录注册部分,项目启动后会生成一个easyx窗口,窗口中包含三个按钮,分别为“管理员登录”、“用户登录/注册”和“退出”按钮,用户可以根据自己的身份选择对应的登录方式:

首先是管理员登录,管理员的密码为统一的默认密码,该密码可以在项目的第37行处修改,

点击管理员登录后进入操作页面,由于EasyX本身并没有输入框,所以项目的各种输入均在控制台窗口中进行,不过管理员的密码输入不会在控制台显示,而是在EasyX窗口中显示字符“*”:

这里如果管理员密码正确会提示正确然后进入管理员操作页面,如果不正确则会提示密码错误然后返回登录主页面:

然后是用户登录部分,在主页面点击“用户登录/注册”按钮后进入用户登录部分,用户可以选择登录或者注册新账号:

点击注册按钮后在控制台输入用户名、密码和手机号即可注册成功,这里的手机号用于找回密码,注册完成后会跳转到用户操作页面:

用户的数据会保存到当前项目目录下的“user_info.csv”文件中:

然后是登录功能,用户点击登录按钮后在控制台输入账号和密码即可登录,若账号和密码不正确则会提示是否找回账号,若选“是”则会要求用户输入手机号,若手机号正确则会显示用户的账号和密码:

2.管理员部分

管理员可执行的操作有四个,分别是“录入景点信息”、“修改景点信息”、“增加景点信息”和“删除景点信息”

 所有的景点信息均保存在项目目录下的“place_info.csv”文件中:

首先是录入景点信息,用户根据提示逐行输入景点信息,每组信息输入完成后都会执行一次保存,同时在项目目录下的“feedback”文件夹中创建对应编号的csv文件用于存储地点评论,然后会询问用户是否继续输入,若输入是则可以继续录入下一条信息:

然后是增加景点信息,与录入信息不同的是增加景点信息可以选择增加景点本身或者增加路径,且只能增加一条信息,输入完成后即返回,不会询问是否继续输入

然后是修改景点信息,点击按钮后输入要修改的景点编号即可进入修改界面,可以根据需要修改景点名称、简介、区域街道和相邻景点距离:

最后是删除景点信息,根据输入的编号可以选择删除对应节点本身还是相邻路径,值得注意的是如果这里选择的是删除景点本身,那么与该景点连接的其他景点中到达该景点的路径信息也会同步被删除:

3.用户部分

用户可以执行的操作有四个,分别是“查询景点信息”、“查询和反馈景点评价”、“获取景点路径”和“用户信息维护”,下面逐个介绍:

首先是查询景点信息,用户可以通过景点编号或名称查询相应景点的相关信息:

然后是查询和反馈景点评价,点击按钮后用户输入景点编号即可查询相应景点评价并跳转到留言按钮,点击留言按钮即可添加一条新的留言,所有留言均保存在项目目录下的“feedback”文件夹中的对应编号csv文件中:

接下来是查询景点路径功能,这个功能相对而言比较复杂,因为有部分景点并不是直接相连的,需要中转几个景点,这里我使用了递归方法穷举所有可能路径,然后从中筛选出了最短路径,然后根据路径长度提供不同的行程建议,可以是步行、公交或轻轨:

这里贴一下递归代码供大家参考:

//逐步寻找终点
void next_step(int start,int end,char pre_line[MAX_PLACES],int pre_num,int pre_len){
	int number,now_num=pre_num,now_len=pre_len;
	number=find_place_index(start);
	int flag=0;

	if(end==start){//若到达该景点
		if(pre_len<end_length||end_length==-1){//若当前路径比原有路径更短
			pre_line[pre_num]=start;
			for(int i=0;i<pre_num+1;i++){//遍历保存当前路径
				end_line[i]=pre_line[i];
			}
			end_length=pre_len;//保存当前长度
			end_num=pre_num+1;//保存景点数量
		}
		return;
	}

	for(int i=0;i<pre_num;i++){//查询当前景点是否已存在于路径中
		if(start==pre_line[i]){flag=1;}
	}

	if(flag==1||pre_num>MAX_PLACES){//判断路径是否存在于路径中,或路径长度超过景点总数
		return;
	}

	//遍历数组,尝试所有路径
	for(int i=0;i<places[number].adjNodeCount;i++){
		char now_line[MAX_PLACES];
		
		//复制原有数组
		for(int j=0;j<pre_num;j++){
			now_line[j]=pre_line[j];
		}

		now_line[pre_num]=start;//将当前位置添加到新数组末尾
		now_num=pre_num+1;//增加数组长度
		now_len=pre_len+places[number].adjNodes[i].distance;//将当前距离添加到变量中

		next_step(places[number].adjNodes[i].destination,end,now_line,now_num,now_len);//递归调用,移动至下一个景点
	};
}

最后是用户信息维护,点击对应按钮后进入信息维护界面,用户可以点击相应的按钮修改对应的用户数据:

以上就是项目的全部流程,末尾附项目下载地址:https://download.csdn.net/download/weixin_47040861/89205349

↓如对项目有任何问题或需要,请加下方QQ↓

  • 27
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

a辰龙a

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值