基于springboot地方旅游系统的设计与实现
摘 要
本次设计内容是基于Springboot的旅游系统的设计与实现,采用B/S三层架构分别是Web表现层、Service业务层、Dao数据访问层,并使用Springboot,MyBatis二大框架整合开发服务器端,前端使用vue,elementUI技术,开发采用了Idea编辑工具、Tomcat服务器和MySQL数据库。
此系统包括了前台用户端、后台管理员端两大模块。前台用户端主要是供用户浏览、查看景区、美食、旅游路线、新闻等信息,并在线进行预订、下单等操作。后台管理员端主要供管理员维护系统前台用户端信息,包括美食发布、用户账号管理、景区信息发布、预订订单查看管理、新闻发布等管理,便于维护用户端各类信息。
关键词:旅游系统;springboot框架;MySQL数据库;Java Web;vue
1 绪论
1.1课题的开发背景
随着旅游业的发展,越来越多的人开始重视旅游观光网站的作用。旅游观光网站是旅游业的重要组成部分,也是当今世界旅游业发展的趋势之一。旅游观光网站作为旅游服务平台,不仅可以提供旅游信息,还能为用户提供旅游预订、旅游指南等一系列服务,方便用户的旅游体验。
“海岛渔乡”是一种新型的旅游形态,也是当前旅游业中备受关注的热点之一。它结合了海岛的自然风光和渔乡文化的特色,为游客提供了独特的旅游体验。随着旅游市场的不断扩大,越来越多的旅游观光网站开始关注“海岛渔乡”这一旅游形态的发展。
本研究旨在探究“海岛渔乡”旅游观光网站的发展现状、特点和趋势,分析其对旅游业的影响和未来的发展方向,从而为旅游观光网站的建设和发展提供一定的参考。
1.2课题研究的目的与意义
一方面,许多旅行社在组织、分类和保存信息方面不够好,大多仍使用传统的纸质书籍进行保存。对于少量的信息,仍然可以处理,但一旦信息量变大,就非常不方便进行排序和保存,人力和物质资源的成本也会增加。这种人为的过程也更容易出现疏忽、遗漏或错误。这种方法并不适合长期的数据保存。此外,游客获取旅游信息的方式也不是非常方便和高效。使用计算机技术是一个非常明智的选择。
另一方面,许多旅游广告采取统一的推广方式,既不突出景区的特色,也没有把握自己的优势。如今,旅游业发展迅速,各地旅行社的数量日益增多,旅游业之间的竞争加剧。然而,对于如此多的旅行社,其实际质量参差不齐,游客无法区分好坏。许多旅行社推出了各种低价旅游团以提高竞争力和吸引客户。然而,对于一些低价旅游团,在实际旅行中,旅行社与旅游目的地的各种供应商勾结,导游使用各种名目向客户销售一些不必要的物品,并强迫他们购买。如果有人提出反对意见,他们必然会面临个人攻击,甚至忽视游客的安全并将他们赶下旅游大巴。这种现象现在层出不穷,也不鲜见。旅游目的地周围的地区也受到不良商家的困扰,甚至连最基本的服务问题都无法保证。这些事件和现象不仅影响各种旅游景点的声誉,而且严重阻碍了旅游业的整体发展,这也将影响经济发展。如今,由于上述原因,许多游客会因基本的信任问题而失去对旅行社的信任,并选择自助旅游。因此,各地旅游信息的组织特别重要。无论是想参加团体旅游的游客还是计划选择自助游的游客都需要了解关于目的地及其周围的各种信息。然而,仅通过纸质材料获取信息已成为新的问题,主要原因是处理各种信息的方法不当。如果这些旅游相关信息可以以全面、安全、高效的方式存储,并可以方便快捷地让游客访问,那么问题就可以轻松解决。如今,随着科技的发展,许多行业都使用计算机和互联网技术将信息存储在虚拟的网络空间,并高效地运作。考虑到社会的当前发展趋势,这是旅游业的一个好方法。
2 系统开发环境及技术
2.1 系统开发环境
硬件平台:CPU:2.50GHz;内存:8G。
软件平台:操作系统:Windows10;数据库:MySQLServer5.7
开发工具包:IDEA+jdk1.8;应用服务器:tomcat9.0;浏览器:GoogleChrome
2.2 系统开发技术
2.2.1 SpringBoot框架
Spring Boot是在原来Spring的基础上进行开发的,并且它可以快速创建一个应用框架。它的设计思想是简化Spring应用的搭建和开发过程,提供一种“开箱即用”的方式来创建单独的、生产级别的Spring应用程序[10]。
Spring Boot为了降低开发Spring应用程序的复杂性,提供了如下的一些特性。例如:
- 配置自动化:该框架包含了很多默认的配置,让开发者在不需要进行手动配置的情况下还能够使用非常多的常见功能。
- 快速开发:通过使用Spring Starter项目快速开始一个项目,并利用Spring Boot的自动配置特性快速搭建应用。
3. 内嵌式Web容器:Spring Boot内置了Tomcat、Jetty或Undertow,使得开发者无需手动部署和配置Web服务器。
4. 应用监控:Spring Boot提供了丰富的指标和监控工具,作为开发者诊断应用和理解程序的工具。
2.2.2 Mybatis框架
Mybatis它是持久化框架中的一种。给开发者提供的有SQL映射、参数自动映射等功能,让数据库的各类操作变得更加简单和高效。Mybatis最大的优势就是可以很好地解决传统JDBC编程的问题,提高了代码的可读性和维护性。 Mybatis的核心组件包括:SqlSessionFactory、SqlSession、Mapper以及Mybatis配置文件[11]。 其中,SqlSessionFactory是创建SqlSession的工厂类,SqlSession封装了sql语句的执行方法,Mapper则是用来描述数据操作的接口,而Mybatis配置文件则是用来配置SqlSessionFactory和Mapper的。 Mybatis采用XML文件或注解方式进行SQL映射,并且支持动态SQL拼装,可以在运行时根据不同的条件构建出不同的SQL语句,使得开发更加灵活和高效[15]。
2.2.3 Vue、ElementUI前端框架
Vue是一种轻量级的框架,被设计为构建大规模的高性能Web应用程序。Vue具有易于学习和使用、高效、灵活和可组件化等优点。
ElementUI其实就是基于Vue框架进行开发的组件库,它可以快速来构建Web应用程序的UI界面。它包含了诸如按钮、表格、日期选择器、对话框、提示框等几十个组件,并且都具有可自定义样式和可组合性的特点。使用ElementUI可以使得构建Web应用程序的UI界面更加简单、快捷和美观。
综上所述,Vue和ElementUI可以一起使用,以构建快速、高效、可组件化、美观的Web应用程序。
2.2.4 MYSQL数据库
MySQL是一种开源的关系型数据库管理系统,它是最流行的开源数据库之一,也是Web应用程序开发中最常用的数据库之一[2]。MySQL能够支持Windows、Linux等多类型的操作系统,也可以支持Java等各种编程语言。
该数据库的应用范围非常广泛,包括Web应用程序、电子商务、金融、游戏、媒体等领域。MySQL具有高性能、可扩展性、安全性、易用性和开源性等特点,可以满足不同规模和复杂度的应用需求。随着大数据和云计算技术的发展,MySQL也将继续发挥重要作用,为各种应用场景提供高效、可靠的数据管理服务。
2.2.5 Tomcat服务器
Tomcat是一个基于Java的开源Web应用程序服务器,由Apache软件基金会维护。它支持Java Servlet、JavaServer Pages(JSP)、JavaServer Faces(JSF)和其他一些Java技术来创建动态Web类型的应用。Tomcat是用来运行Web应用,获取客户端的请求进行处理,然后把响应后的结果再返回给客户端。它具有良好的安全性和稳定性[12],易于配置和管理,它特支持在不同平台上使用,能够支持Windows、Linux等多类型操作系统。同时,Tomcat也具有高度的灵活性和可扩展性,可以通过插件和扩展支持其他的Web开发技术和框架。它是Java Web应用程序开发和部署的首选Web容器之一。
3 系统可行性研究
3.1 操作可行性分析
本系统开发的开发宗旨是以便捷为中心开发后的系统应具有美观、大方、简单、易操作等优点,即使是不懂计算机的人员也可以根据系统提示使用和管理本系统,它的操作简单的特点使本系统在操作上可行[15]。
3.2 经济可行性分析
该系统开发用到的开发工具IDEA、数据库MySQL等都是能够从网上找到不需要付费的破译版本的,包括用到的开发技术都是开源的。因此,没有任何需要付费的成本。等到开发完成后,也不需要多余的宣传成本,所以说该系统的经济可行性无问题。
3.3 技术可行性分析
本系统采用的模式是B/S框架、MVC开发模式,里面主要包括了前台用户端和后台管理员端两大模块部分、数据库的内容维护等。系统开发用到的开发工具是IDEA,MySQL数据库,SpringBoot、Mybatis后端框架,前端页面开发用到了vue、elementUI新技术[7]。这些技术都是学习过,在网上也可以找到免费学习资料,因此技术上无难点且可行。
4 系统需求设计
4.1 旅游前台功能需求
前台功能是给用户使用的,主要提供给用户的功能大体上有:用户的注册登录、系统首页展示宣传、新闻资讯展示、景点景区介绍展示、地方特色美食展示推荐、出游路线推荐展示、留言入口提供、个人相关信息查看修改、线路预定管理等。
4.2 旅游后台功能需求
后台管理系统是为管理员使用的,目的是为前台用户展示端做数据维护管理的。主要提供给管理员的功能有管理员系统登录,前台用户管理,景区展示信息发布、地方特色美食发布、推荐旅游线路维护、用户订单查看处理、展示新闻推送,系统设置等管理功能。
5 系统概要设计
5.1 系统总体功能结构
此系统包括了前台用户端、后台管理员端两大模块。前台用户端主要是供用户浏览、查看景区、美食、旅游路线、新闻等信息,并在线进行预订、下单等操作。后台管理员端主要供管理员维护系统前台用户端信息,包括美食发布、用户账号管理、景区信息发布、预订订单查看管理、新闻发布等管理,便于维护用户端各类信息。系统总体功能结构图如下图5.1、5.2所示:
图5.1 前台功能结构图
图5.2 后台功能结构图
5.2 系统功能模块设计
5.2.1 旅游前台模块设计
前台用户端主要是供用户浏览、查看景区、美食、旅游路线、新闻等信息,并在线进行预订、下单等操作。
(1)用户注册模块
提供用户注册功能,用户需要注册账号才能登录
(2)用户登录模块
提供用户登录功能,用户需要登录才能进行下单操作
(3)首页模块
展示分类导航菜单和人气景点、地方美食、旅游线路、旅游资讯,方便用户选购
(4)旅游新闻模块
用户可以搜索站内或者行内新闻信息
(5)景区信息模块
用户可以根据地区选择景点信息
(6)美食信息模块
用户可以根据分类和名称搜索美食信息
(7)旅游线路模块
用户可以根据出发点、终点、途径地搜索旅游线路
(8)在线留言模块
用户可以提交留言信息
(9)个人中心模块
用户可以修改个人资料、修改密码、查看自己收藏、查看自己留言信息
5.2.2 旅游后台模块设计
后台管理员端主要供管理员维护系统前台用户端信息,包括美食发布、用户账号管理、景区信息发布、预订订单查看管理、新闻发布等管理,便于维护用户端各类信息。
(1)管理员登录模块
后台管理员用分配给自己的账号、密码登录到该后台,完成自己的管理维护工作。此部分仅供内部人员使用,不公开。
(2)账号管理模块
管理员账号管理:查询、修改、删除、添加
用户管理:查询、修改、删除、添加
修改密码。
(3)地区管理模块
地区添加、查询、修改、删除等。
(4)景点信息管理模块
旅游景点添加、修改、删除、查询等
(5)地方美食管理模块
地方美食添加、修改、删除、查询等
(6)旅游线路管理模块
旅游线路添加、修改、删除、查询等
(7)订单信息管理模块
查询用户下的订单信息等
(8)新闻管理模块
新闻添加、查询、修改、删除等
(9)系统管理模块
友情链接添加、查询
(10)轮播图添加、查询
留言管理:修改、删除、详情等
5.3 数据库设计
5.3.1 数据库表结构设计
该系统根据前台、后台的功能划分规划,设计出的业务逻辑表一共有15个,详细表结构设计如下所示:
后台管理员用户表admins,如下表5.1所示:
表5.1 管理员表admins
名称 | 类型 | 空 | 默认值 | 备注 |
id | int(30) | no | 主键 | |
username | varchar (20) | yes | NULL | 帐号 |
pwd | datetime | yes | NULL | 密码 |
addtime | int(30) | yes | NULL | 添加时间 |
地方美食表difangmeishi,如下表5.2所示:
表5.2 地方美食表difangmeishi
名称 | 类型 | 空 | 默认值 | 备注 |
id | int(10) | no | 主键 | |
meishibianhao | varchar (20) | yes | NULL | 美食编号 |
mingcheng | varchar (20) | yes | NULL | 名称 |
fujinjingdian | varchar (20) | yes | NULL | 附近景点 |
fenlei | int(10) | yes | NULL | 分类 |
tupian | text | yes | NULL | 图片 |
jiage | decimal | yes | NULL | 价格 |
meishijianjie | text | yes | NULL | 美食简介 |
addtime | timestamp | yes | NULL | 添加时间 |
地区表diqu,如下表5.3所示:
表5.3 地区表diqu
名称 | 类型 | 空 | 默认值 | 备注 |
id | varchar (50) | no | 主键 | |
diqumingcheng | varchar (50) | yes | NULL | 地区名称 |
addtime | datetime | yes | NULL | 添加时间 |
景点信息表jingdianxinxi,如下表5.4所示:
表5.4 景点信息表jingdianxinxi
名称 | 类型 | 空 | 默认值 | 备注 |
id | varchar (11) | no | 主键id | |
jingdianbianhao | varchar (11) | yes | NULL | 景点编号 |
jingdianmingcheng | datetime | yes | NULL | 景点名称 |
suoshudiqu | int(50) | yes | NULL | 所属地区 |
tupian | varchar (11) | yes | NULL | 图片 |
kaifangshijian | datetime | yes | NULL | 开放时间 |
fujinmeishi | varchar (11) | yes | NULL | 附近美食 |
dizhi | varchar (11) | yes | NULL | 地址 |
piaojia | varchar (11) | yes | NULL | 票价 |
liulanliang | varchar (11) | yes | NULL | 浏览量 |
miaoshu | varchar (11) | yes | NULL | 描述 |
addtime | int(50) | yes | NULL | 添加时间 |
留言板表liuyanban,如下表5.5所示:
表5.5 留言板表liuyanban
名称 | 类型 | 空 | 默认值 | 备注 |
ID | varchar(50) | no | 主键 | |
xingming | varchar(50) | yes | NULL | 姓名 |
lianxidianhua | datetime | yes | NULL | 联系电话 |
liuyanneirong | int(50) | yes | NULL | 留言内容 |
liuyanren | varchar (11) | yes | NULL | 留言人 |
huifuneirong | datetime | yes | NULL | 回复内容 |
addtime | varchar (11) | yes | NULL | 添加时间 |
轮播图表lunbotu,如下表5.6所示:
表5.6 轮播图表lunbotu
名称 | 类型 | 空 | 默认值 | 备注 |
ID | Int(11) | no | 主键 | |
title | varchar (11) | yes | NULL | 标题 |
image | varchar (11) | yes | NULL | 图片 |
url | varchar (11) | yes | NULL | 连接地址 |
addtime | timestamp | yes | NULL | 添加时间 |
旅游线路表lvyouxianlu,如下表5.7所示:
表5.7 旅游线路表lvyouxianlu
名称 | 类型 | 空 | 默认值 | 备注 |
ID | int(11) | no | 主键 | |
xianlubianhao | varchar(11) | yes | NULL | 线路编号 |
xianlumingcheng | varchar(11) | yes | NULL | 线路名称 |
Tupian | text | yes | NULL | 图片 |
chufadi | varchar(11) | yes | NULL | 出发地 |
tujingdi | varchar(11) | yes | NULL | 途经地 |
zhongdian | varchar(11) | yes | NULL | 终点 |
jiage | decimal | yes | NULL | 价格 |
liulanliang | int(11) | yes | NULL | 浏览量 |
xianlutese | longtext(11) | yes | NULL | 线路特色 |
xianlujianjie | longtext(11) | yes | NULL | 线路简介 |
addtime | timestamp | yes | NULL | 添加时间 |
美食分类表meishifenlei,如下表5.8所示:
表5.8 美食分类表meishifenlei
名称 | 类型 | 空 | 默认值 | 备注 |
ID | varchar (50) | no | 主键 | |
fenleimingcheng | varchar (50) | yes | NULL | 分类名称 |
addtime | datetime | yes | NULL | 添加时间 |
收藏记录表shoucangjilu,如下表5.9所示:
表5.9 收藏记录表shoucangjilu
名称 | 类型 | 空 | 默认值 | 备注 |
ID | int(11) | no | 主键 | |
username | varchar (50) | yes | NULL | 收藏用户 |
xwid | int(11) | yes | NULL | 对应模块id |
biao | varchar (50) | yes | NULL | 收藏得模块 |
biaoti | varchar (50) | yes | NULL | 显示的标题 |
url | varchar (50) | yes | NULL | 收藏URL |
ziduan | varchar (50) | yes | NULL | 对应模块字段 |
addtime | timestamp | yes | NULL | 添加时间 |
token表,如下表6-10所示:
表5.10 token表
名称 | 类型 | 空 | 默认值 | 备注 |
token | varchar (50) | no | 唯一值 | |
session | varchar (50) | yes | NULL | 保存得数据 |
cx | datetime | yes | NULL | 登录权限 |
login | int(11) | yes | NULL | 登录模块 |
username | varchar (50) | yes | NULL | 登录用户 |
valueid | datetime | yes | NULL | 用户id |
token_time | varchar (50) | yes | NULL | 当前时间 |
新闻分类表xinwenfenlei,如下表6-11所示:
表5.11 新闻分类表xinwenfenlei
名称 | 类型 | 空 | 默认值 | 备注 |
ID | Int(10) | no | 主键 | |
fenleimingcheng | varchar (50) | yes | NULL | 分类名称 |
addtime | timestamp | yes | NULL | 添加时间 |
闻信息表xinwenxinxi,如下表5.12所示:
表5.12 新闻信息表xinwenxinxi
名称 | 类型 | 空 | 默认值 | 备注 |
ID | Int(10) | no | 主键 | |
Biaoti | varchar (50) | yes | NULL | 标题 |
fenlei | Int(10) | yes | NULL | 分类 |
tupian | varchar (50) | yes | NULL | 图片 |
tianjiaren | varchar (50) | yes | NULL | 添加人 |
dianjilv | Int(10) | yes | NULL | 点击率 |
neirong | longtext | yes | NULL | 内容 |
addtime | timestamp | yes | NULL | 添加时间 |
用户表yonghu,如下表5.13所示:
表5.13 用户表yonghu
名称 | 类型 | 空 | 默认值 | 备注 |
ID | Int(10) | no | 主键 | |
yonghuming | varchar (50) | yes | NULL | 用户名 |
mima | varchar (50) | yes | NULL | 密码 |
xingming | varchar (50) | yes | NULL | 姓名 |
xingbie | varchar (50) | yes | NULL | 性别 |
shouji | varchar (50) | yes | NULL | 手机 |
youxiang | varchar (50) | yes | NULL | 邮箱 |
shenfenzheng | varchar (50) | yes | NULL | 身份证 |
touxiang | varchar (50) | yes | NULL | 头像 |
addtime | timestamp | yes | NULL | 添加时间 |
友情链接表youqinglianjie,如下表5.14所示:
表5.14 友情链接表youqinglianjie
名称 | 类型 | 空 | 默认值 | 备注 |
ID | Int(10) | no | 主键 | |
wangzhanmingcheng | varchar (50) | yes | NULL | 网站名称 |
wangzhi | varchar (50) | yes | NULL | 网址 |
addtime | timestamp | yes | NULL | 添加时间 |
预定表yuding,如下表5.15所示:
表5.15 预定表yuding
名称 | 类型 | 空 | 默认值 | 备注 |
ID | Int(10) | no | 主键 | |
lvyouxianluid | Int(10) | yes | NULL | 旅游线路id |
xianlubianhao | varchar (50) | yes | NULL | 线路编号 |
xianlumingcheng | varchar (50) | yes | NULL | 线路名称 |
chufadi | varchar (50) | yes | NULL | 出发地 |
tujingdi | varchar (50) | yes | NULL | 途经地 |
zhongdian | varchar (50) | yes | NULL | 终点 |
jiage | decimal | yes | NULL | 价格 |
dingdanhao | varchar (50) | yes | NULL | 订单号 |
yudingshijian | varchar (50) | yes | NULL | 预订时间 |
yudingrenxingming | varchar (50) | yes | NULL | 预订人姓名 |
lianxifangshi | varchar (50) | yes | NULL | 联系方式 |
zhuangtai | varchar (50) | yes | NULL | 状态 |
beizhu | text | yes | NULL | 备注 |
yudingren | varchar (50) | yes | NULL | 预订人 |
addtime | timestamp | yes | NULL | 添加时间 |
iszf | varchar (50) | yes | NULL | 是否支付 |
5.3.2 数据库数据表实现
系统开发数据库选择的是MySQL,选择了Navicat Premium可视化连接数据库工具进行操作数据库。以下是用连接工具完成数据库创建的实现过程:
后台管理员用户表admins创建效果如图5.3所示:
图5.3 管理员表admins
地方美食表difangmeishi如下图5.4所示:
图5.4 地方美食表difangmeishi
地区表diqu如下图5.5所示:
图5.5 地区表diqu
景点信息表jingdianxinxi如下图5.6所示:
图5.6 景点信息表jingdianxinxi
留言板表liuyanban如下图5.7所示:
图5.7 留言板表liuyanban
轮播图表lunbotu如下图5.8所示:
图5.8 轮播图表lunbotu
旅游线路表lvyouxianlu如下图5.9所示:
图5.9 旅游线路表lvyouxianlu
美食分类表meishifenlei如下图5.10所示:
图5.10 美食分类表meishifenlei
收藏记录表shoucangjilu如下图5.11所示:
图5.11 收藏记录表shoucangjilu
token表如下图5.12所示:
图5.12 token表
新闻分类表xinwenfenlei如下图5.13所示:
图5.13 新闻分类表xinwenfenlei
新闻信息表xinwenxinxi如下图5.14所示:
图5.14 新闻信息表xinwenxinxi
用户表yonghu如下图5.15所示:
图5.15 用户表yonghu
友情链接表youqinglianjie如下图5.16所示:
图5.16 友情链接表youqinglianjie
预定表yuding如下图5.17所示:
图5.17 预定表yuding
6 系统详细设计与实现
6.1 系统功能实现的Springboot框架
Springboot框架的本质就是把Spring、SpringMVC整合在一起再进行简化优化的框架,它也是标准的MVC模式。在开发过程中把系统分成了表现层、业务逻辑层、数据访问层,从而缩短开发系统的周期时间[10]。
6.1.1 SpringBoot配置文件
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.url=jdbc:mysql://localhost:3306/tourism?useUnicode=true&chara cterEncoding=UTF-8&useOldAliasMetadataBehavior=true
#以下为mysql8.0以上使用
#spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#spring.datasource.url=jdbc:mysql://localhost:3306/spbootvue07987lyxxtjxtsjysx? useUnicode=true&characterEncoding=UTF-8&useSSL=FALSE&serverTimezone=UTC&useOldA liasMetadataBehavior=true
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.initial-size=10
spring.datasource.max-idle=20
spring.datasource.min-idle=5
spring.datasource.max-active=50
spring.datasource.log-abandoned=true
spring.datasource.remove-abandoned=true
spring.datasource.remove-abandoned-timeout=180
spring.datasource.max-wait=1000
spring.datasource.test-while-idle=true
spring.datasource.validation-query=select 1
spring.datasource.test-on-borrow=true
spring.datasource.min-evictable-idle-time-millis=600000
spring.datasource.time-between-eviction-runs-millis=300000
spring.mvc.view.prefix=/
spring.mvc.view.suffix=.jsp
spring.mvc.pathmatch.use-suffix-pattern=false
spring.mvc.pathmatch.use-registered-suffix-pattern=true
spring.mvc.contentnegotiation.favor-path-extension=false
server.port=8088
server.servlet.context-path=/
mybatis.type-aliases-package=com.spring.boot.entity
mybatis.mapper-locations=classpath:mapper/*.xml
mapper.mappers=com.base.MapperBase
mapper.not-empty=false
mapper.identity=MYSQL
pagehelper.reasonable=true
pagehelper.supportMethodsArguments=true
pagehelper.params=count=countSql
spring.servlet.multipart.maxFileSize=-1
spring.servlet.multipart.maxRequestSize=-1
以上是springboot配置文件主要配置的参数,主要配置端口和连接数据库的数据源、mybatis配置等信息。
6.2 前台功能模块实现
前台用户端主要是供用户浏览、查看景区、美食、旅游路线、新闻等信息,并在线进行预订、下单等操作。使用vue,elementUI技术,开发采用了Idea编辑工具、Tomcat服务器和MySQL数据库。
6.2.1 用户登录
用户登录,如下图6.1所示:
图6.1 用户登录
6.2.2 用户注册页面
用户注册如下图6.2所示:
图6.2 用户注册页面
6.2.3 首页页面
首页页面如下图6.3所示:
图6.3 首页页面
6.2.4 旅游新闻页面
旅游新闻页面如下图6.4所示:
图6.4 旅游新闻页面
6.2.5 景区信息页面
景区信息页面如下图6.5所示:
图6.5 景区信息页面
6.2.6 美食信息页面
美食信息页面如下图6.6所示:
图6.6 美食信息页面
6.2.7 旅游线路页面
旅游线路页面如下图6.7所示:
图6.7 旅游线路页面
6.2.8 在线留言页面
在线留言页面如下图6.8所示:
图6.8 在线留言页面
6.2.9 个人中心页面
个人中心页面如下图6.9所示:
图6.9 个人中心页面
6.2.10 线路预订管理页面
线路预订管理如下图6.9所示:
图6.9 线路预订管理页面
6.3 后台功能模块实现
后台管理员端主要供管理员维护系统前台用户端信息,包括美食发布、用户账号管理、景区信息发布、预订订单查看管理、新闻发布等管理,便于维护用户端各类信息。使用vue,elementUI技术,开发采用了Idea编辑工具、Tomcat服务器和MySQL数据库。
6.3.1 管理员登录页面
管理员登录页面,如下图6.10所示:
图6.10 管理员登录页面
6.3.2 账号管理页面
账号管理页面,如下图6.11所示:
图6.11 账号管理页面
6.3.3 地区管理页面
地区管理页面,如下图6.12所示:
图6.12 地区管理页面
6.3.4 景点信息管理页面
景点信息管理页面,如下图6.13所示:
图6.13 景点信息管理页面
6.3.5 地方美食管理页面
地方美食管理页面,如下图6.14所示:
图6.14 地方美食管理页面
6.3.6 旅游线路管理页面
旅游线路管理页面,如下图6.15所示:
图6.15 旅游线路管理页面
6.3.7 订单信息管理页面
订单信息管理页面,如下图6.16所示:
图6.16 订单信息管理页面
6.3.8 新闻管理页面
新闻管理页面,如下图6.17所示:
图6.17 新闻管理页面
6.3.9 系统管理页面
系统管理页面,如下图6.18所示:
图6.18 系统管理页面
7 系统测试
7.1 软件测试目的
软件测试的目的是为了发现并纠正软件中的错误、缺陷和漏洞,以确保软件产品的质量和稳定性,提高用户的满意度和信任度。同时,软件测试也可以帮助开发团队发现潜在的问题,并为软件产品的改进提供支持。
7.2 软件测试步骤
(1)模块化测试,该测试需将整体的系统功能拆分成一个一个小模块,然后按照模块化进行测试,在测试过程中将每个小模块里面的问题找出来并记录好,从而把问题都一一解决并完善好。
(2)整体性测试,系统按照模块化把功能都测试完成后,再把小模块的内容全部整合到一起测试,按照需求整理好系统整体流程,梳理好整体流程。按照整体确定的流程完成系统整体测试,使各个模块有密切联系,这样做才可完成确定的操作流程;
(3)测试结果验收,在项目验收之前多次测试,在确保没问题情况下即可交付客户。
7.3 系统测试过程和结论
以下对后台的登录功能测试用到的是黑盒测试,在后台系统的登录页面输入错误的用户名、密码,会提示账号密码有错误,具体效果如图7.1所示:
图7.1 后台登录验证账号密码
(1)在登录的页面上输入正确的用户名、密码,提示系统登录成功。实现效果如下图7.2所示:
在识别到用户名、密码都输入正确后,系统会进行跳转至系统主页面。
图7.2 后台登录页面验证账号密码
由此可见,通过黑盒测试方式测出后台系统成功。
结 论
本次毕业设计基于springboot的旅游系统的设计与实现开发结束,已经完全满足了此系统的用户、管理员的使用需求。从系统的展示页面上来看简洁大方,从用户操作上来说方便,已经尽量多次测试避免出现错误。但是,因为时间原因系统确实存在不足,系统的界面、逻辑设计、数据库设计等都需要不断优化完善。做这次的毕业设计和论文,已经将我大学四年学习到的Java知识、数据库知识、开发框架等都进行了应用,也把我所学内容进行了巩固和提升,加强了自己的编程能力。在编码的时候,自己需要不断去测试代码、寻找问题,思考自己的需求等问题,也需要反复测试已经完成的功能和修改里面测试出来的bug,让自己解决问题的能力也得到了了快速的提升,并且对开发有了深层次的了解与认识。现在,自己的编码能力确实得到了提升,也理解了大家说的代码是调试出来的不是一气呵成写出来的。通过这次的毕业设计完成,我也全方位发现了自己的问题与需要提升的方向,这可能就是这次毕业设计最重要的目的。
参 考 文 献
[1] 李乐.Java语言应用研究[J].智慧中国,2022(09):80-81.
[2] 郑戟明,董云朝,柳青.MySQL数据库数据导入导出方法的探讨[J].电脑知识与技术,2022,18(22):24-25.
[3] 宋旸.使用Java语言开发Web应用软件的知识探讨[J].中国设备工程,2022(14):121-123.
[4] 王仲科.Web程序设计中数据库获取编程技巧与方法[J].电脑编程技巧与维护,2022(07):68-70.
[5] 陈晓刚.计算机数据库技术在信息管理中的应用[J].无线互联科技,2022,19(13):123-125.
[6] 李璋,赵鸿皓,黄震,陈逸凡,杨洲.Java在程序设计语言课程中的应用[J].长江信息通信,2022,35(07):108-111.
[7] 季焕淑.基于HTML5技术的移动Web前端设计与开发[J].电脑编程技巧与维护,2022(10):74-76+169.
[8] 曹方玲.HTML5在Web前端开发中的应用[J].长江信息通信,2022,35(10):106-108+111.
[9] 吴晓霞.服装企业ERP管理信息系统的设计与实现[J].当代会计,2021(01):177-178.
[10] 小马哥. Spring Boot编程思想(核心篇)[M]. 电子工业出版社,2019.
[11] 李刚.轻量级javaEE企业应用实战[M].北京:电子工业出版社,2014:190-600.
[12] 张跃平、耿祥义. JSP程序设计(第2版)[M].清华大学出版社, 2015.
[13] 张海藩.软件工程[M].清华大学出版社,2009.
[14] 蔡剑、景楠.Java Web应用开发[M]. 清华大学出版社,2005.
[15] 杨开振.java ee互联网轻量级框架整合开发SSM框架[M]. 电子工业出版社,2017.
[16] 疯狂软件.Spring+MyBatis企业应用实战[M]. 电子工业出版社,2017.
[17] 埃克尔. JAVA编程思想(第4版)[M]. 机械工业出版社, 2007.
[18] 周志明. 深入理解JAVA虚拟机 JVM高级特性与最佳实践[M].机械工业出版社,2013.
[19] 许令波. 深入分析Java Web技术内幕[M]. 电子工业出版社,2014.
喜欢的点赞收藏加关注私信作者沟通交流
相关文章:

基于springboot地方旅游系统的设计与实现
摘 要 本次设计内容是基于Springboot的旅游系统的设计与实现,采用B/S三层架构分别是Web表现层、Service业务层、Dao数据访问层,并使用Springboot,MyBatis二大框架整合开发服务器端,前端使用vue,elementUI技术&…...
一些学习资料链接
组件化和CocoaPods iOS 组件化的三种方案_迷曳的博客-CSDN博客 CocoaPods 私有化 iOS组件化----Pod私有库创建及使用 - 简书 CocoaPods1.9.1和1.8 使用 出现CDN: trunk URL couldnt be downloaded: - 简书 cocoapod制作私有库repo - 简书 【ios开发】 上传更新本地项目到…...

Webpack打包图片-JS-Vue
1 Webpack打包图片 2 Webpack打包JS代码 3 Babel和babel-loader 5 resolve模块解析 4 Webpack打包Vue webpack5打包 的过程: 在webpack的配置文件里面编写rules,type类型有多种,每个都有自己的作用,想要把小内存的图片转成bas…...

进程控制(Linux)
进程控制 fork 在Linux中,fork函数是非常重要的函数,它从已存在进程中创建一个新进程。新进程为子进程,而原进程为父进程。 返回值: 在子进程中返回0,父进程中返回子进程的PID,子进程创建失败返回-1。 …...

C Primer Plus第十四章编程练习答案
学完C语言之后,我就去阅读《C Primer Plus》这本经典的C语言书籍,对每一章的编程练习题都做了相关的解答,仅仅代表着我个人的解答思路,如有错误,请各位大佬帮忙点出! 由于使用的是命令行参数常用于linux系…...

又名管道和无名管道
一、进程间通信(IPC,InterProcess Communication) 概念:就是进程和进程之间交换信息。 常用通信方式 无名管道(pipe) 有名管道 (fifo) 信号(signal) 共…...

操作系统复习4.1.0-文件管理结构
定义 一组有意义的信息的集合 属性 文件名、标识符、类型、位置、大小、创建时间、上次修改时间、文件所有者信息、保护信息 操作系统向上提供的功能 创建文件、删除文件、读文件、写文件、打开文件、关闭文件 这6个都是系统调用 创建文件 创建文件时调用Create系统调用…...

【嵌入式烧录/刷写文件】-2.6-剪切/保留Intel Hex文件中指定地址范围内的数据
案例背景: 有如下一段HEX文件,保留地址范围0x9140-0x91BF内的数据,删除地址范围0x9140-0x91BF外的数据。 :2091000058595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F70717273747576775F :2091200078797A7B7C7D7E7F808182838485868788898A…...
JavaScript表单事件(下篇)
目录 八、keydown: 当用户按下键盘上的任意键时触发。 九、keyup: 当用户释放键盘上的键时触发。 十、keypress: 当用户按下键盘上的字符键时触发。 十一、focusin: 当表单元素或其子元素获得焦点时触发。 十二、focusout: 当表单元素或其子元素失去焦点时触发。 十三、c…...

机器学习 | SVD奇异值分解
本文整理自哔哩哔哩视频:什么是奇异值分解SVD–SVD如何分解时空矩阵 📚奇异值分解是什么? M是原始矩阵,它可以是任意的矩阵,奇异值分解就是将它分解为三个矩阵相乘。U和V是方阵,∑是不规则矩阵,…...

chatgpt赋能python:Python取值:介绍
Python取值:介绍 Python是一种非常流行的高级编程语言,适用于各种任务,包括数据科学、机器学习、Web开发和自动化。它被广泛使用,因为它易于学习、易于使用、易于阅读和易于维护。Python中的取值对于程序员来说是一个极其有用的工…...

广播风暴的成因以及如何判断、解决
广播风暴(broadcast storm)简单的讲是指当广播数据充斥网络无法处理,并占用大量网络带宽,导致正常业务不能运行,甚至彻底瘫痪,这就发生了“广播风暴”。一个数据帧或包被传输到本地网段 (由广播…...

Loki 日志收集系统
一.系统架构 二.组成部分 Loki 的日志堆栈由 3 个组件组成: promtail:用于采集日志、并给每条日志流打标签,每个节点部署,k8s部署模式下使用daemonset管理。 loki:用于存储采集的日志, 并根据标签查询日志流…...

uCOSii信号量的作用
uCOSii中信号量的作用: 在创建信号量时,Sem_EventOSSemCreate(1)用于分时复用共享资源; Sem_EventOSSemCreate(0)用于中断和任务间同步或任务之间的同步。 具体在使用时,需要灵活运用。在访问共享资源时,我喜欢用互…...
Android 13 版本变更总览
Android 13 总览 https://developer.android.google.cn/about/versions/13?hlzh-cn 文章基于官方资料上提取 Android 13 功能和变更列表 https://developer.android.google.cn/about/versions/13/summary?hlzh-cn 行为变更:所有应用 https://developer.andr…...

QT 设计ROS GUI界面订阅和发布话题
QT 设计ROS GUI界面订阅和发布话题 主要参考下面的博客 ROS项目开发实战(三)——使用QT进行ROS的GUI界面设计(详细教程附代码!!!) Qt ROS 相关配置请看上一篇博客 首先建立工作空间和功能包&a…...

pandas数据预处理
pandas数据预处理 pandas及其数据结构pandas简介Series数据结构及其创建DataFrame数据结构及其创建 利用pandas导入导出数据导入外部数据导入数据文件 导出外部数据导出数据文件 数据概览及预处理数据概览分析利用DataFrame的常用属性利用DataFrame的常用方法 数据清洗缺失值处…...

Jupyter Notebook如何导入导出文件
目录 0.系统:windows 1.打开 Jupyter Notebook 2.Jupyter Notebook导入文件 3.Jupyter Notebook导出文件 0.系统:windows 1.打开 Jupyter Notebook 1)下载【Anaconda】后,直接点击【Jupyter Notebook】即可在网页打开 Jupyte…...

Linux:/dev/tty、/dev/tty0 和 /dev/console 之间的区别
在Linux操作系统中,/dev/tty、/dev/tty0和/dev/console是三个特殊的设备文件,它们在终端控制和输入/输出过程中扮演着重要的角色。尽管它们看起来很相似,但实际上它们之间存在一些重要的区别。本文将详细介绍这三个设备文件之间的区别以及它们…...

Linux 上安装 PostgreSQL——Ubuntu
打开 PostgreSQL 官网 PostgreSQL: The worlds most advanced open source database,点击菜单栏上的 Download ,可以看到这里包含了很多平台的安装包,包括 Linux、Windows、Mac OS等 。 Linux 我们可以看到支持 Ubuntu 和 Red Hat 等各个平台…...

SpringBoot-17-MyBatis动态SQL标签之常用标签
文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...

wordpress后台更新后 前端没变化的解决方法
使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…...
RestClient
什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端,它允许HTTP与Elasticsearch 集群通信,而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级ÿ…...

Docker 运行 Kafka 带 SASL 认证教程
Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明:server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...

渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止
<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet: https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?
在建筑行业,项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升,传统的管理模式已经难以满足现代工程的需求。过去,许多企业依赖手工记录、口头沟通和分散的信息管理,导致效率低下、成本失控、风险频发。例如&#…...
3403. 从盒子中找出字典序最大的字符串 I
3403. 从盒子中找出字典序最大的字符串 I 题目链接:3403. 从盒子中找出字典序最大的字符串 I 代码如下: class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...
rnn判断string中第一次出现a的下标
# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...
4. TypeScript 类型推断与类型组合
一、类型推断 (一) 什么是类型推断 TypeScript 的类型推断会根据变量、函数返回值、对象和数组的赋值和使用方式,自动确定它们的类型。 这一特性减少了显式类型注解的需要,在保持类型安全的同时简化了代码。通过分析上下文和初始值,TypeSc…...

基于Java+VUE+MariaDB实现(Web)仿小米商城
仿小米商城 环境安装 nodejs maven JDK11 运行 mvn clean install -DskipTestscd adminmvn spring-boot:runcd ../webmvn spring-boot:runcd ../xiaomi-store-admin-vuenpm installnpm run servecd ../xiaomi-store-vuenpm installnpm run serve 注意:运行前…...