计算机毕业设计——基于Spring Boot框架的在线导游预约系统
文章目录
- 前言
- 一、背景及意义
- 1、编写目的
- 2、项目背景
- 3、程序描述
- 4、主要系统功能(分角色介绍)
- 游客功能
- 导游功能
- 管理员功能
- 二、总体设计
- 1、需求规定
- 2、运行环境
- 3、使用说明
- 部分页面截图展示
- 管理员模块
- 导游模块
- 游客模块
- 三、部分代码展示
- 四、源码获取
前言
提示:这里可以添加本文要记录的大概内容:
因为一些导游的自私,为了蝇头小利而使游客处于尴尬境地。所以,想着玩的好,又想着少花钱,追求一个经济实惠的旅游。那么如何选择一个靠谱的导游是一个困难的问题。
提示:以下是本篇文章正文内容,下面案例可供参考
一、背景及意义
1、编写目的
本次项目设计目的是构建一个在线导游预约系统,主要完成游客在出门旅游时对导游的预定和对旅游类型的选择等操作。近年来,随着人们旅游活动日益增加,旅游产业的逐渐扩大,对于导游人员的需求量更是与日递增。旅游也成为了老百姓的所需。
导游服务是出门旅游活动中举足轻重的环节,人们外出旅游,是出于不同的动机,但究其本质旅游活动是为了满足人类精神需求,满足人们对自然美,艺术美,生活美的欣赏与享受。编写这样一个系统,符合人们旅游时选择导游所需,把优质的导游,不同类型的导游呈现在游客面前,让人们出行旅游省时省力。
实现旅游信息的交流和共享,为喜爱旅游的人们提供旅游经验的分享平台,带给用户不一样的分享体验,让用户畅游在平台为其构建的旅行空间之中
2、项目背景
导游的存在源于为游客提供服务,解决出行问题的。站在一个游客角度来看,首先就得思考在接下来的旅游中,将会遇到什么问题,从而思索导游存在是否能够解决。
那么,以以往出行经验来看,游客在旅游时,常遇到的问题包括,去哪玩?去哪吃?去哪住?怎么去?去哪买?基本围绕的就是旅游的这几大要素形成的服务需求。而这六要素需求的解决对于大部分人来说,又是基于价格对比考虑的,即大部分的人面临着钱不多,心不小的尴尬境地。
既想着玩的好,又想着少花钱,追求一个经济实惠的旅游。那么如何选择一个靠谱的导游是一个困难的问题,现在导游水平参差不齐,乱收费,强行买卖,人们很难选择到一个优质,安心的导游,做此项目,把导游评分,全部导游,全部透明的显示在游客面前,无二次收费,给游客一次好的导游预约体验。
3、程序描述
该程序段是以在线导游预约系统的登入页面设计,用于区分用户的身份,使用户以自己的身份(游客、导游或管理员)登入进该系统,登入页面不同,所执行的功能也不同。
要求所有用户在使用本系统之前都必须通过自己的用户名和密码登入,才能进行操作,该子系统主要判断用户登入时用户名和密码的正确性。
4、主要系统功能(分角色介绍)
游客功能
游客可以选择或者系统推荐当季热门、周边游、国内游、海外游等分类;
游客登陆后可以在导游预约中进行预约导游,对某个导游下订单的功能;
游客可以在订单中心查看订单,但不能进行任何操作;
游客可以对导游以及旅游景点进行留言评价;
游客可以查看自己的个人信息及对密码的修改;
导游功能
导游除了可以浏览其他用户的游记,还可以上传自己的旅游照片、视频,分享旅游心得,推荐旅游路线等;
游客和导游均可以查看管理员发布的旅游资讯和旅游活动;
导游可以在订单中心查看订单,但不能进行任何操作;
导游可以查看并管理全部预约信息;
导游可以对游客的留言评价进行恢复;
导游可以查看自己个人信息及对密码的修改;
管理员功能
管理员可以对导游及游客进行管理;
管理员对旅游分类进行管理;
管理员可以查看并管理全部预约信息;
管理员可管理导游及游客的留言评价并进行回复操作;
管理员可以查看自己个人信息及对密码的修改;
二、总体设计
1、需求规定
每个用户都有自己的用户名和密码,这是区分用户身份的有效凭证,只有正确输入用户名和密码才能登入系统开始使用,并且要完善用户的个人信息要求正确,方便管理员进行管理。管理员离职后,账号将注销,不能使用。
2、运行环境
包括开发软件、硬件环境,运行软件环境、硬件环境
开发软件:idea
操作系统:windows 10/11或者 Mac OS
数据库:mysql-8.0.11-winx64、mysql-8.0.21-winx64版本及以上,越高越好
开发环境: IntelliJ IDEA 2022.2.2、IntelliJ IDEA 2021.1.2 x64
服务器:apache-tomcat-9.0.22 或 apache-tomcat-9.0.56、apache-maven-3.3.3 或 apache-maven-3.8.4
浏览器:qq浏览器或 Win10自带浏览器或者其他浏览器都可以
大部分配置都是越高越好,但难免有些新出版本不稳定,所以一定要选稳定的
3、使用说明
logout
http://localhost:8181/login
退出登录另一账户即可
部分页面截图展示
管理员模块
管理员登录模块实现 password:【admin】
导游管理
会员管理
旅游管理
订单管理
预约管理
导游模块
游客登录模块实现 user:【a】、password:【1】
游客模块
游客登录模块实现 password:【aa】、【bb】,密码与用户名一样
三、部分代码展示
@RestController
@RequestMapping("/classification")
@Slf4j
public class ClassificationController {@ResourceClassificationService classificationService;/*** 添加分类* @param name* @return*/@PostMapping("/add")public Result addClassification(@RequestParam("name") String name){Classification classification = new Classification();classification.setName(name);if(classificationService.addClassification(classification)){return Result.success("创建成功!");}return Result.error("创建失败!");}/*** 删除分类* @param id* @return*/@DeleteMapping("/delete/{id}")public Result deleteClassification(@PathVariable Integer id){if(classificationService.deleteClassificationById(id)) {return Result.success("删除成功!");}return Result.error("创建失败!");}/*** 分类分页* @param current* @param size* @return*/@GetMapping("/page/{current}/{size}")public Result classificationPage(@PathVariable Integer current, @PathVariable Integer size){IPage<Classification> page = classificationService.page(current, size);return Result.success("返回分页。", page);}/*** 全部分类* @return*/@GetMapping("/all")public Result allClassification(){List<Classification> list = classificationService.getAllClassification();return Result.success("返回全部分类。", list);}
@Service
@Slf4j
public class TableServiceImpl implements TableService {@ResourceDiningTableMapper diningTableMapper;@ResourceOrderMapper orderMapper;@ResourceReservationService reservationService;@Overridepublic List<DiningTable> listInfo() {List<DiningTable> tables = listForShow();for(DiningTable table : tables){table.setOrder(orderMapper.selectById(table.getOrderId()));table.setReservationInfoList(reservationService.getReservationByTableId(table.getId()));}return tables;}@Overridepublic List<DiningTable> listForShow() {QueryWrapper<DiningTable> wrapper = new QueryWrapper<>();wrapper.eq("open", true);return diningTableMapper.selectList(wrapper);}@Overridepublic List<DiningTable> list() {return diningTableMapper.selectList(null);}@Overridepublic Boolean createTable(String tableName, Integer capacity, Boolean open) {DiningTable table = TableBuilder.create().pushTableName(tableName).pushCapacity(capacity).pushOpen(open).finish();return diningTableMapper.insert(table) == 1;}@Overridepublic Boolean updateTable(Integer id, String tableName, Integer capacity, Boolean open) {DiningTable table = getTableOfThrow(id);table.setName(tableName);table.setCapacity(capacity);table.setOpen(open);return diningTableMapper.updateById(table) == 1;}@Overridepublic Boolean deleteTable(Integer id) {DiningTable table = getTableOfThrow(id);if(table.getUsed()){throw new UnmessageException("导游正忙!");}return diningTableMapper.deleteById(id) == 1;}@Overridepublic boolean tableUsed(Integer tableId, Integer orderId){DiningTable table = getTableOfThrow(tableId);log.info("tableId:{} orderId:{} used:{}", tableId, orderId, table.getUsed());if(!table.getOpen()){throw new UnmessageException("导游未开放!");}if(table.getUsed()){throw new UnmessageException("导游正忙。");}table.setOrderId(orderId);table.setUsed(true);return diningTableMapper.updateById(table) == 1;}@Overridepublic boolean tableUnused(Integer tableId, Integer orderId) {DiningTable table = getTableOfThrow(tableId);log.info("tableId:{} orderId:{} used:{}", tableId, orderId, table.getUsed());if(!table.getUsed()){throw new UnmessageException("导游空闲。");}if(!table.getOrderId().equals(orderId)){throw new UnmessageException("订单号未对应。");}table.setOrderId(0);table.setUsed(false);return diningTableMapper.updateById(table) == 1;}@Overridepublic DiningTable getTableOfThrow(Integer id) {DiningTable table = diningTableMapper.selectById(id);if(table == null){throw new UnmessageException("导游不存在");}return table;}
}
public interface TableService {List<DiningTable> listForShow();List<DiningTable> listInfo();List<DiningTable> list();Boolean createTable(String tableName, Integer capacity, Boolean open);Boolean updateTable(Integer id, String tableName,Integer capacity, Boolean open);Boolean deleteTable(Integer id);/*** 设置导游正在使用中* @param tableId* @param orderId* @return*/boolean tableUsed(Integer tableId, Integer orderId);/*** 设置导游空闲* @param tableId* @param orderId* @return*/boolean tableUnused(Integer tableId, Integer orderId);DiningTable getTableOfThrow(Integer id);
}
四、源码获取
此项目为收费项目
计算机毕业设计——基于Spring Boot框架的在线导游预约系统相关推荐
- java计算机毕业设计基于springboo+vue的医院挂号体检预约系统
项目介绍 进入21世纪以来,网络的空前发展给人们的工作和生活带来了极大的便利,信息化建设已经成为节约运营成本.提高工作效率的首选.相比之下,国内相当数量的中小医院的医院体验套餐工作还采用相对保守的手工 ...
- 毕业设计——基于Spring boot框架的 AI智能大数据医疗诊断平台
首页 主题设置 个人资料 通知 居民医保信息
- 基于 Spring boot + MyBatis 的在线音乐播放系统
目录 一.项目截图 二.创建 SpringBoot 项目 1.在 IDEA 中创建一个 SpringBoot 项目 2.设置项目名称 3.选择项目依赖 4.选择项目存放路径,就可以创建出一个 Spri ...
- java项目-第99期基于spring+springmvc+hibernate的在线问卷答题系统-计算机毕业设计
java项目-第99期基于spring+springmvc+hibernate的在线问卷答题系统[毕业设计] [源码请到下载专栏下载] 1.项目简述 今天分享的项目是<在线问卷答题系统>, ...
- springboot 打卡功能_基于spring boot框架的公司考勤系统的研究与设计
基于 spring boot 框架的公司考勤系统的研究与设计 李宏坤 ; 郑光勇 ; 谢舞 ; 彭承辉 [期刊名称] <电脑知识与技术> [年 ( 卷 ), 期] 2019(015)018 ...
- 基于Spring boot框架开发的电商网站系统
目 录 第一章 绪论- 2 1.1 编写目的 - 2 1.2 项目背景 - 2 1.3 项目需求 - 2 第二章 系统体系结构 - 3 2.1 系统体系结构 - 3 2.2 数据库设计 E-R 图 - ...
- 基于Python Flask框架的共享自习室预约系统的设计与实现-计算机毕业设计源码+LW文档
1.1选题背景 信息技术的发展改变了我们的生活方式,许多行业的管理模式发生了根本性改变,特别是零售业受到电子商务强烈的冲击,越来越多的人参与到网购中.许多传统行业逐渐凋零,蓬勃发展的信息技术带来了大量 ...
- java计算机毕业设计基于Ssm学生信息管理系统源码+数据库+系统+lw文档+mybatis+运行部署
java计算机毕业设计基于Ssm学生信息管理系统源码+数据库+系统+lw文档+mybatis+运行部署 java计算机毕业设计基于Ssm学生信息管理系统源码+数据库+系统+lw文档+mybatis+运 ...
- java计算机毕业设计基于web的公益募捐网站源程序+mysql+系统+lw文档+远程调试
java计算机毕业设计基于web的公益募捐网站源程序+mysql+系统+lw文档+远程调试 java计算机毕业设计基于web的公益募捐网站源程序+mysql+系统+lw文档+远程调试 本源码技术栈: ...
- java计算机毕业设计基于微信小程序的校园外卖订餐系统APP
项目介绍 网络技术的快速发展给各行各业带来了很大的突破,也给各行各业提供了一种新的管理模块和校园订餐模块,对于校园订餐小程序将是又一个传统管理到智能化信息管理的改革,对于传统的校园订餐管理,所包括的信 ...
最新文章
- pcl求平面法向量_线性代数6——平面方程与矩阵
- HDU1040简单排序题
- ListView通过自定义的Adapter实现异步下载显示网络图片
- jar包导出无法显示图片或者音乐_如何制作图片视频短片,配上音乐闪耀朋友圈!...
- 重磅 | 阿里AI labs百万美元年薪聘请两位顶级视觉科学家
- mysql数据类型的学习心得_MySQL自学总结 (一到四章)
- 移动端媒体尺寸_网络推广外包浅析提升移动端网站建设效率有哪些网络推广外包技巧...
- 鸡尾酒排序Cocktail Sort
- 【翻译】Sencha Touch 2入门:创建一个实用的天气应用程序之一
- c语言对硬件编程,c语言直接对硬件操作可行吗?
- Windows7 64位软件资源
- JS生成26个英文字母
- android 蓝牙连接rtk,基于Android手机的RTK手簿软件设计与实现
- 电大计算机科学与技术专业论文,国家开放大学计算机科学与技术专业毕业设计(论文)要求...
- checked和unchecked的区别
- 通达信接口的登录调试步骤
- 使用python修改配置文件
- linux第二块sata硬盘叫什么意思,在Linux系统中,第二块SATA硬盘中的第2个逻辑分区应该表示为()...
- 《和声学教程》学习笔记(三):六和弦和经过/辅助的六四和弦
- 经营一个站群,该如何控制成本呢?【关于域名,空间】
热门文章
- linux实验报告ALU,《linux内核分析》第一次课 实验作业
- Carson带你学Android:RxJava、Retrofit联合使用汇总(含实例教程)
- LinuxCNC虚拟机环境搭建
- 使用sql语句在命令行下载mysql表格数据
- 【数字图像处理】图像滤波C语言实现(中值,均值,高斯)
- unity 烘焙模式——baked indirect/shadow mask/distance shadowmask/subtractive模式的区别
- 【opencv学习之十二】opencv滑条及实例
- f7功能键使用计算机,F1到F12都代表什么 电脑键盘上F1-F12键的用法
- 阿里云高主频通用型hfg7云服务器磁盘I/O性能表详解
- 高中生学python培养思维能力_Python教学:编程如何培养学生计算思维