摘要
随着民宿行业的迅速发展,在预订信息分散、房源管理混乱、用户决策成本高这些方面的问题也愈加严重。传统的电话预订和第三方平台混合经营方式存在着信息同步迟缓,服务质量不稳定等问题。创建起整合房源管理、在线预订、评价反馈功能的专门系统,成为改进行业运作效率的主要途径。本系统使用SpringBoot框架来搭建后端服务,用Vue框架来创建前端界面,MySQL数据库来保存业务数据。系统面向普通用户有民宿查询、在线支付、预订管理、住宿评价等功能,商家用户可以管理自己的房源和美食信息,管理员统筹景点、房间类型、新闻资讯等基础数据。从需求分析开始,对系统架构进行设计、数据库进行设计、功能模块进行实现以及测试。测试结果说明系统各个功能模块运行正常,预订流程闭环,评价机制工作正常。该系统给民宿经营者赋予了数字化的管理手段,削减了用户预订的操作繁杂程度,推进了住宿服务业的信息化进程。
关键词:民宿预订;SpringBoot;Vue;MySQL;在线支付
Abstract
Many problems of the homestay industry are that booking information is scattered, room sources are not organised, and users have a high decision-making cost. The old combined model of phone reservation and third-party platform is slow in information updates and has an unreliable service. To improve the operational efficiency of the property, a new system will be built to manage room source information, online reservation and feedback functions, etc. Spring Boot is used to build the backend service of this system, Vue is employed for front-end development, and MySQL will be the database. Regular users can obtain information on homestays, make online payments, manage bookings, read reviews, etc. Manage the room resources and food information of users at the merchant end. Administrators manage the basic data of tourist attractions, rooms and news. According to the demands, a system architecture will be constructed, and at this time, the database structure, functions and test plans will also be prepared. According to the test results, all the functions of the modules work correctly, the closed-loop booking process is completed successfully, and the review mechanism is effective. A digital management system for homestay operators will be built to reduce the difficulty of booking for users and advance the informatisation of the accommodation service industry
Keywords:Homestay Booking; SpringBoot; Vue; MySQL; Online Payment
目录
摘要I
AbstractII
1 绪论
1.1 研究的背景和意义
1.2 国内外研究现状
1.3 研究内容
1.4 相关技术介绍
1.5 毕业设计说明书结构
2 系统需求分析
2.1 可行性分析
2.2 功能需求分析
2.3 系统角色分析
2.4 用例分析
2.5 系统业务流程分析
2.6 非功能性需求
2.7 本章小结
3 系统设计
3.1 系统架构设计
3.2 功能结构设计
3.3 业务流程设计
3.4 数据库设计
4 系统实现
4.1 开发环境
4.2 普通用户功能实现
4.3 商家用户功能实现
4.4 管理员功能实现
4.5 本章小结
5 总结与展望
5.1 总结
5.2 展望
参 考 文 献
致 谢
1 绪论
1.1 研究的背景和意义
民宿产业在旅游消费升级的大背景之下实现了快速增长。传统的住宿预订方式都是依靠电话沟通和线下登记的,用户要多次确认房源的状态,经营者会遇到订单记录分散、房态更新迟缓的两难境地[1]。张婉琳认为乡村民宿营销信息不对称造成客户转化率低。刘之禹对成都青羊区民宿管理进行调查之后得出结论,小型民宿业主缺少标准化的订单管理软件。目前市场上的主流OTA平台虽然有预订功能,但是高额的佣金抽成压缩了民宿的利润空间,平台内部的搜索排序机制使得中小房源的曝光机会不均等[2]。现有的解决方案不能很好地解决经营者成本控制和用户信息获取效率之间的矛盾。创建轻量化、有针对性的预订管理系统,可以降低民宿主的技术使用门槛,给用户带来透明的房源信息和方便的支付方式,这是提高行业信息流动效率的一种可行途径[3]。
本系统以角色权限分离为原则,把操作界面分为普通用户、商家用户和管理员三个视图。商家用户直接管理自家的房态和价格信息,消除第三方平台信息滞后的问题。普通用户从浏览、预订、支付评价的全部环节都没有出现由于跨平台跳转而造成的信息断裂的情形。后台管理员对景点、美食、新闻等公共服务数据进行统一管理,形成住宿与周边旅游资源联动展示。系统使用的是前后端分离的方式,前端主要做交互流畅性的处理,后端主要做业务逻辑的稳定。分层设计使系统具有良好的可维护性,给中小型民宿提供一种低成本的数字化经营方案。系统运行之后商家可以及时了解订单的动态,用户得到完整的服务闭环体验,行业层面也形成了可以复制的民宿信息化建设参考范式。
1.2 国内外研究现状
国内现状分析
国内民宿预订平台由最初的简单的信息展示,发展到现在的交易闭环。早期的门户网站时代,民宿信息以静态页面的形式存在,用户只能浏览基础的介绍。移动互联网出现以后,垂直类民宿社区开始出现,途家、小猪等平台加入了用户评价和即时沟通的功能,互动性大大提升[3]。刘洁研究数字化旅游民宿平台的时候发现,推荐算法的应用使得房源匹配的效率得到了提高。马元博根据信任理论得出结论,预订量是由房东响应速度、历史评价数量等很多因素所决定的[4]。徐楠有关即时预订策略的研究显示,灵活的取消政策可以提高转化率大约15%。技术架构上,苏雅婷、石玉通过对主客互动评论数据的分析得出结论,装饰风格图片的质量会影响用户的点击意愿[5]。王凯所开发的民宿旅游管理平台V1.0包含订单处理以及房态同步两个模块[6]。目前国内系统对于基础预订功能已经比较成熟,但是对于多角色权限的精细化管理以及本地化服务的整合还存在一定的不足。
国外现状分析
国外民宿管理系统较早进入了数据驱动的阶段。早期Airbnb平台用社交分享的方式建立起了房东和房客之间的双边信任关系[7]。随着用户规模的扩大,系统也加入了动态定价模型以及智能推荐引擎[8]。Li和Zhu利用LDA模型来挖掘出非遗民宿场景下游客感知的主题,得出文化体验因素对复购率有显著的影响[9]。Sianipar等人认为乡村民宿管理中社区参与模式可以提高当地居民对旅游业发展的支持程度[10]。王针对海南特色民宿空间设计的可持续路径提出经济与文化并重的目标[11]。ForthFocus公司推出的OTA入驻服务为中小民宿提供了一键对接多个分销渠道的技术方案[12]。Sarina等人认为智能技术在中介效应分析中对于协同数字经济和民宿管理的关系起着正向调节的作用[12]。国外系统对于数据挖掘、收益管理有丰富的经验,但是对中国的分散式民宿群体轻量化管理工具的研究很少。
1.3 研究内容
平台包含民宿预订、景点美食浏览、住宿评价这三个主要业务。用户注册账号或者手机号登录后可以浏览民宿列表、景点信息和美食推荐,查看民宿详情图片和设施介绍,按照区域或者价格区间筛选房源,选择入住日期和房间数量之后提交预订订单并完成支付操作。用户可以在个人中心管理自己的历史订单,对已经完成的住宿进行评分和文字评价,收藏自己感兴趣的地方,查看留言反馈的回复,浏览新闻资讯的内容。商家用户通过资质审核之后可以管理自己的民宿信息和美食菜品,收到订单通知后确认接单,回复用户评价。管理员对景点数据、房间类型字典、新闻资讯进行后台维护,并且可以删除违规内容。整个平台功能设计包含用户浏览、下单、评价全流程,可以满足民宿经营者的房源管理和订单追踪的需求。目前该平台有三个访问端,分别是普通用户端、商家用户端和后台管理端。
普通用户端
普通用户端主要是为住宿旅客提供从信息查询到住宿评价的全过程服务,包含以下功能:
(1)用户注册登录,用户通过手机号获取验证码完成账户注册,已注册用户输入手机号和密码进入系统,登录状态为2小时。
民宿浏览查询是指用户根据区域或者价格区间选择房源列表之后,进入到房源详情页查看房间图片轮播、设施标签、真实用户评价摘要等。
(3)景点及美食查看,浏览旅游景点简介及周边美食推荐,查看景点位置、票价、开放时间以及商家菜品图片和价格。
(4)预订下单支付,用户选定入住日期和房间数量后生成订单,跳转到支付页面选择微信或者支付宝完成付款操作。
(5)订单管理,用户在个人中心可以查看待支付、已预订、已完成、已取消四个类型的订单,对未入住的订单进行取消。
(6)住宿评价提交,用户对已完成订单填写的各个方面的满意度评分及文字评语,评价经过审核后在民宿详情页展示。
(7)留言反馈,用户在使用过程中遇到的问题或者建议会提交到后台,管理员收到后会在后台回复,用户可以查看留言列表中自己的回复。
(8)收藏管理,用户把喜欢的民宿或者景点放进收藏夹,之后可以从个人中心快速找到并访问。
(9)新闻资讯阅读:用户查看平台发布的旅游攻略、优惠活动与行业公告等文章内容。
(10)异常提醒推送,系统在用户连续取消订单或者支付超时等异常情况出现之后发送提醒通知。
商家用户端
商家用户端主要是为民宿经营者服务,以房源管理、订单处理和客户评价反馈为主,具有以下功能:
(1)民宿信息管理,商家对自家房间的类型、价格、可预订数量、设施标签、房间图片等属性信息进行新增或者修改。
(2)美食信息管理,商家将店铺中菜品名称、价格、菜系分类、烹饪方式、封面图片等信息上传。
(3)订单处理确认,商家查看自家订单列表,对新订单执行确认接单或者拒绝接单操作,用户入住后标记订单为已完成。
(4)评价回复管理,商家浏览到自己房源的评分、评论等信息,对低分评价作出回应。
(5)景点与美食查看:商家浏览平台内的旅游景点信息与其他商家的美食展示内容。
后台管理端
后台管理端主要是为系统运营人员提供服务,实现基础数据的维护、内容审核和异常监控等功能,具有如下功能
(1)景点信息管理,管理员对景点条目的名称、位置、票价、开放时间、攻略内容进行添加、修改或者删除。
(2)对商家提交的菜品进行全局管理,审核通过后生效并上线展示,不通过则退回或者驳回。
(3)房间类型配置,管理员维护系统全局的房间分类字典,可以添加、修改或者删除类型名称。
(4)民宿信息管理,管理员对商户的注册资质、房源等进行审核,对不合格的商户进行强制下架,手动置顶优秀房源。
(5)管理员根据用户手机号或者订单编号来查询全平台所有的订单记录,查看支付情况以及订单详情。
(6)异常提醒管理:管理员查看系统捕获的异常事件日志,排查问题后标记处理状态。
(7)住宿评价审核,管理员对用户提交的评价进行审核,删除带有不当言论或者违规信息的评价。
(8)新闻发布,管理员发布平台公告、旅游攻略、优惠活动等文章,可以进行富文本排版和封面图上传。
1.4 相关技术介绍
SpringBoot框架
SpringBoot框架用Java语言生态来解决应用开发过程中遇到的配置复杂的问题。该框架内含Servlet容器,开发人员不需要单独部署WAR文件就可以启动服务[13]。SpringBoot利用自动配置机制,根据项目的依赖关系自动生成配置项,从而减少手动编写XML配置文件的工作量。在启动的时候框架扫描类路径下的某个配置类,对Beans进行实例化和注入。民宿预订管理系统中用户登录状态校验、订单数据持久化、支付回调处理等环节都依靠SpringBoot提供的控制层和数据访问层整合能力。框架内部使用约定优于配置的思想,给常见的整合场景,比如数据源的配置、事务的管理等提供默认实现。开发人员只需要在配置文件中注释出某些属性,就可以达到默认的行为效果,大大降低了项目搭建阶段的技术门槛。SpringBoot还提供了健康检查接口,外部监控系统可以利用这个接口来判断应用的运行状态。框架模块化设计可以按照需要引入不同的Starter组件,从而避免无关的功能占用运行时资源。在请求响应机制中SpringBoot对参数进行解析、数据绑定、结果序列化等一系列操作。
Vue框架
Vue框架用基于组件的方式来创建用户界面。每个组件都封装了它的模板、逻辑和样式,组件之间用属性传递和事件通信来实现数据交互[14]。框架核心库以视图层为主,开发者可以根据需要来选择使用路由管理、状态管理、构建工具等周边生态。Vue采用响应式数据绑定的方式,当组件内部的数据状态发生改变的时候,框架会追踪到相关的依赖关系并更新DOM节点。该机制可以省去手动修改DOM元素的操作,把开发重点放在数据状态的保存上。在民宿预订管理系统前端实现的时候,房源列表展示、预订表单提交、评价信息录入等界面都是独立的组件。路由层控制不同权限用户页面访问规则,普通用户不能进入商家管理界面,管理员有独立的后台操作面板。Vue的虚拟DOM技术在每次数据发生变化的时候计算出最小差异集,然后批量地执行真实的DOM更新操作。异步组件加载特性可以按需引入大型模块,从而缩短首页白屏等待时间。框架提供的指令系统可以简化条件渲染、列表循环、事件绑定等常见操作的实现过程。
MySQL数据库
MySQL数据库使用表格结构存储业务数据,每一张表都有固定的列来定义字段属性。数据查询使用结构化查询语言进行,执行计划是由数据库优化器根据索引统计信息和表大小自动选择的[15]。存储引擎层支持多种数据文件组织方式,InnoDB引擎具有事务处理能力和行级锁机制。事务执行时引擎用日志文件来保存数据变更的操作,保证系统出现异常的时候可以回到一致的状态。民宿预订管理系统中的用户账户信息、民宿房源信息、订单信息、评价信息等都是存放在不同的表里。外键约束可以在数据库层面保证表之间的引用完整性,即预订记录中的用户编号必须在用户表中存在对应的记录。索引结构加快查询操作,B+树组织方式把磁盘随机IO变成顺序扫描。连接查询执行时,优化器会比较不同的表关联顺序所花费的成本,然后选择代价最小的执行路径。MySQL还支持视图、存储过程、触发器等特性,把部分业务逻辑放到数据库层去执行。
MyBatis框架
MyBatis是一个持久层解决方案,它负责Java对象和数据库记录之间的映射转换。开发者用XML文件或者注解的形式来定义SQL语句,框架在运行的时候动态地生成JDBC代码进行参数的设置和结果集的处理[16]。映射配置文件中可以写动态SQL片段,根据传入的参数不同来拼接查询条件。细粒度的控制使得开发人员可以针对某个查询场景来调整执行逻辑,从而避免ORM框架自动生成出低效的SQL。框架内部维护会话工厂和执行器组件,每一次的数据库操作都会从连接池中取出一个连接,操作结束后再将该连接放回连接池。民宿预订管理系统中的民宿信息查询、订单状态更新、评价数据插入等全部使用MyBatis来完成。框架支持一级缓存和二级缓存,相同的查询条件在会话周期内重复执行的时候,就会直接返回缓存的结果。批量操作接口可以将多条INSERT或者UPDATE语句合并在同一个请求中提交,从而减少网络往返次数。MyBatis和SpringBoot整合之后,事务管理由Spring容器来控制,开发者可以在服务层的方法上使用事务注解。框架中提供的代码生成工具会根据数据表结构反向生成实体类、映射接口以及配置文件。
1.5 毕业设计说明书结构
(1)绪论。绪论部分首先介绍民宿预订管理系统的行业背景与研究意义,分析传统电话预订与第三方平台混合运营模式的局限性,其次通过国内外研究现状梳理民宿预订平台从信息展示到交易闭环的演进路径,最后概述本文的研究内容与技术路线。
2 系统需求分析
需求分析主要是对系统的功能边界与用户操作场景进行梳理和确认的必要环节。通过识别不同角色在民宿预订流程中的行为特征,明确系统需要支撑的业务范围与数据交互规则。本章从技术可行性、经济可行性与操作可行性三个维度论证项目实施的合理性,按普通用户、商家用户、管理员三类角色分别描述功能需求,界定各角色的权限边界,最后通过用例图与用例规约展示角色与功能之间的动态关系。
2.1 可行性分析
技术可行性
系统使用SpringBoot框架搭建后端服务,该框架自带Tomcat容器,并且简化了项目配置的过程,开发人员不需要再单独部署Web服务器就可以运行应用。Vue框架采用组件化的方式进行前端界面开发,数据绑定机制可以省去手动操作DOM元素的过程,提高了开发效率。MySQL数据库具有事务支持以及索引优化的功能,订单数据的不一致可以依靠事务回滚来维持。开发工具使用的是IntelliJ IDEA和VS Code,两者都具有完善的功能提示、调试等技术要求的开发环境。Maven构建工具对项目的依赖关系进行管理,各个技术层之间用HTTP和JSON格式进行数据交换,接口协议比较清楚。
经济可行性
系统开发阶段所用到的软件工具都是免费或者社区版本的,JDK开发环境、MySQL数据库、Navicat预览版等都可以直接下载使用。硬件上采用个人计算机就可以进行编码和测试,不需要购买专用服务器设备。部署阶段属于单机使用,云服务器基础配置每三个月内控制在可接受范围内。系统运行之后的维护工作主要是数据库备份和异常日志检查,这部分工作可以由一个人来完成。与每年上百元的授权费用相比,自行开发系统长期使用成本要小得多。商家用户可以直接对房源信息进行管理,减少了第三方平台的订单佣金支出。
操作可行性
系统界面设计以用户日常使用习惯为出发点,普通用户进入首页可以直接浏览民宿列表和搜索入口。预订操作分为选择日期、填写联系信息、确认支付这三个连续的过程,每一个过程都有相应的提示信息来指引用户完成。商家用户登录之后自动跳转到自家房源管理面板,新增房间只需要填写价格、类型、简介等基本信息。管理员后台有表格形式的数据管理界面,增删改查操作使用常见的交互方式。系统对于重要的操作比如订单取消、评价删除等设置了二次确认弹窗,防止用户因为操作失误造成数据丢失。页面加载时间控制在两秒以内,普通用户、商家用户和管理员三类角色的学习成本都比较低。
2.2 功能需求分析
为了设计并实现一款民宿预订管理系统,通过整合房源预订、景点浏览与美食推荐功能,为用户提供完整的住宿体验和便捷的预订服务。本节将从普通用户端、商家用户端与后台管理端三个方面为系统进行功能需求阐述。
普通用户端功能需求分析
普通用户端主要是为住宿旅客提供信息查询、预订和售后服务评价这三个业务阶段的服务。游客未登录状态下只能浏览民宿列表和景点美食信息,在进行预订操作之前必须完成注册登录。注册环节用户填写手机号码并接收验证码完成账户创建,已经注册的用户输入手机号码和密码进入系统。登录状态下用户可以按照区域、价格区间、民宿类型等条件筛选房源列表,然后点击进入详情页查看房间图片轮播、设施标签、真实用户评价摘要等内容。用户选择入住日期和房间数量之后提交预订请求,系统产生待支付订单并跳转到模拟支付网关,用户完成付款之后订单状态变为已预订。用户可以在个人中心查看待支付、已预订、已完成、已取消这四个订单类别,对未入住的订单进行取消操作。住宿结束之后,用户就卫生状况、位置便利性、服务态度、设施设备这四个方面给出自己的满意程度评分,填写完文字评价之后再提交,评价内容由管理员审核之后才会显示在民宿详情页上,方便其他用户查看。用户可以浏览旅游景点的介绍和周边的美食推荐,把感兴趣的内容放到收藏夹里方便查找。留言板功能是给用户留出使用反馈或者提出问题的渠道,管理员在后台回复之后用户就可以在留言列表中查看到回复的内容。异常提醒模块在用户连续取消订单或者支付超时的时候,就会发出提醒通知。
商家用户端功能需求分析
商家用户端主要面向民宿经营者,以房源管理、订单处理、客户评价反馈这三个业务环节为依托。商家注册的时候要填写店铺名称、营业执照照片、联系电话等内容,管理员审核通过之后账户才会生效。登录之后商家进入独立工作台,首页显示今日新增订单、房源浏览量等统计数据。民宿信息管理模块可以实现商家对房间类型、标准价格、可预订数量、房间面积、设施标签、房间图片等信息的新增或者修改,系统会对上传的图片做格式和大小校验来保证展示效果一致。美食信息管理模块可以商家添加店铺特色菜品,填写菜品名称、价格、菜系分类、烹饪方式、图片和简介之后保存。预订信息管理模块显示自家所有的订单记录,商家可以按照订单状态筛选出未确认、已入住、已完成等分类的订单,收到新的订单之后系统会发出通知提醒商家接单或者标记房间已入住。住宿评价管理模块可以获取用户对于自家房源的评分和评论,商家可以就低分评价进行回复,改善服务。商家可以浏览平台内景点信息和其它商家的美食内容,但是没有权利修改别人发布的信息。
后台管理端功能需求分析
后台管理端主要为系统运维人员提供基本数据管理、内容审核和异常检测这三个任务。管理员有系统的最高权限,在单独的后台界面里进行管理操作。景点信息管理模块可以对管理员进行景点条目的添加、修改和删除操作,填写景点名称、位置、票价、开放时间、景点攻略等信息,景点攻略字段支持富文本编辑和图片上传。美食全局管理模块对全平台所有的商家发布的菜品进行审核,下架违规或者过期的内容,驳回不符合要求的申请并说明理由。房间类型管理模块是对系统全局的房间分类字典进行管理,也就是大床房、双床房、套房等。民宿信息管理模块对商家违规时可以强制下架房源,也可以手动将优质民宿设置为推荐房源,在首页置顶展示。预订信息查询模块具有全局订单检索的功能,管理员可以按照用户手机号或者订单编号来找到具体的记录。异常提醒管理模块会把系统发现的异常事件展示出来,包含支付超时、重复预订、用户投诉等等类型,管理员完成问题排查之后就会对它们加以标记并设置处理情况。住宿评价审核模块可以管理员删除带有不良言论、违规内容的评价。新闻资讯发布模块支持管理员对平台公告、旅游攻略、优惠活动等文章进行编辑、发布,可以对富文本进行排版,并且可以上传封面图。
2.3 系统角色分析
普通用户的主要功能有注册登录、民宿浏览查询、预订下单支付、订单管理、住宿评价提交、景点美食查看、留言反馈、收藏管理、新闻资讯阅读等,是系统服务的主要用户。商家用户主要功能为民宿信息管理、美食信息管理、订单处理确认、评价回复管理等,是平台房源和美食内容的提供者。管理员的功能有景点信息维护、美食全局管理、房间类型配置、民宿全局管理、预订信息查询、异常提醒处理、住宿评价审核、新闻资讯发布等,是平台秩序的维护者和基础数据的管理者。
角色定义表如表2-1所示。
表2-1角色定义表
| 普通用户 | 用户注册登录、民宿浏览查询、景点信息查看、美食信息查看、预订下单支付、订单管理、住宿评价提交、留言反馈、新闻资讯阅读、异常提醒推送、收藏管理 |
| 商家用户 | 民宿信息管理、美食信息管理、订单处理确认、评价回复管理、景点美食查看 |
| 管理员 | 景点信息维护、美食全局管理、房间类型配置、民宿信息管理、预订信息查询、异常提醒管理、住宿评价审核、新闻资讯发布 |
2.4 用例分析
管理员用例图如图2-3所示。
图2-3管理员用例图
用例规约分析
民宿浏览查询是民宿预订管理系统的核心功能之一,用户根据区域、价格区间、民宿类型等条件可以筛选房源列表,点击进入详情页查看房间图片轮播图、设施标签列表与真实用户评价摘要。
民宿浏览查询的用例描述表如表2-2所示。
表2-2民宿浏览查询用例描述表
| 用例名称 | 民宿浏览查询 |
| 标识符 | HOM1 |
| 用例描述 | 描述用户按条件筛选并查看民宿详情的过程 |
| 参与者 | 普通用户 |
| 优先级 | 1 |
| 状态 | 进行中 |
| 前置条件 | 用户进入系统首页或民宿列表页面 |
| 后置条件 | 系统展示符合条件的民宿列表或详情页 |
| 正常流程 | 1. 用户进入民宿列表页后可选择区域、价格区间、民宿类型进行筛选 2. 系统根据筛选条件刷新列表展示符合条件的房源 3. 用户点击房源卡片进入详情页面 4. 系统展示房间图片轮播、设施标签、评价摘要与可预订日期日历 |
| 扩展流程 | 1. 用户在搜索框输入店铺名称或目的地关键字进行模糊匹配 2. 用户点击热门推荐模块快速查看平台置顶房源 3. 用户点击收藏按钮将感兴趣房源加入收藏夹 |
预订下单支付的用例描述表如表2-3所示。
表2-3预订下单支付用例描述表
| 用例名称 | 预订下单支付 |
| 标识符 | HOM2 |
| 用例描述 | 描述用户选择日期并提交订单完成支付的过程 |
| 参与者 | 普通用户 |
| 优先级 | 1 |
| 状态 | 进行中 |
| 前置条件 | 用户已登录系统且进入某民宿详情页面 |
| 后置条件 | 订单生成成功且支付状态更新为已预订 |
| 正常流程 | 1. 用户在详情页选择入住日期与房间数量点击立即预订 2. 系统校验所选日期房间余量是否充足 3. 校验通过后跳转至订单确认页面展示入住人信息填写区域 4. 用户确认信息无误后提交订单 5. 系统跳转至支付页面展示订单金额与支付方式选项 6. 用户选择支付方式后调用模拟支付网关完成付款 7. 支付成功后订单状态更新为已预订并扣减房间余量 |
| 扩展流程 | 1. 房间余量不足时系统提示用户更换日期或减少房间数 2. 支付失败时订单保持待支付状态,用户可在个人中心继续支付 |
住宿评价提交的用例描述表如表2-4所示。
表2-4住宿评价提交用例描述表
| 用例名称 | 住宿评价提交 |
| 标识符 | HOM3 |
| 用例描述 | 描述用户完成住宿后填写评分与评语的过程 |
| 参与者 | 普通用户 |
| 优先级 | 2 |
| 状态 | 进行中 |
| 前置条件 | 用户已完成住宿且订单状态为已完成 |
| 后置条件 | 评价提交成功进入待审核状态 |
| 正常流程 | 1. 用户在个人中心已完成订单列表点击评价按钮 2. 系统跳转至评分页面展示卫生状况、位置便利、服务态度、设施设备四个维度 3. 用户选择各维度星级评分并填写文字评价内容 4. 用户点击提交按钮后系统校验评分维度与文字长度 5. 校验通过后评价状态变为待审核并存储至数据库 |
| 扩展流程 | 1. 评分维度未全部选择时系统提示用户完成评分 2. 文字内容长度不足10字符时提示用户补充详细评价 3. 管理员审核不通过时评价被隐藏,用户收到修改通知 |
2.5 系统业务流程分析
民宿预订功能
用户在民宿详情页选择入住日期与房间数量后提交预订请求。系统校验所选日期房间余量是否充足,余量不足时提示用户更换日期或减少房间数。校验通过后系统生成待支付订单并跳转至订单确认页面。用户确认入住人信息与联系无误后提交订单。系统创建订单记录并将状态设置为待支付,同时跳转至支付页面。用户选择支付方式后调用支付网关完成付款,支付成功后系统更新订单状态为已预订并扣减对应日期的房间余量。民宿预订活动图如图2-4所示。
图2-4民宿预订活动图
住宿评价功能
用户在个人中心完成订单列表的评价按钮点击之后,就进入了评分页面。用户对卫生状况、位置便利、服务态度、设施设备这四个方面的评分都用星级来表示。用户填写完文字评价内容之后,单击提交按钮。系统校验评分维度是否全部选择,文字内容长度是否符合要求。校验通过之后,评价状态变更为待审核并存入数据库。管理员登录后台查看待审核的评价列表,审核评价内容中是否有违规信息。审核通过之后,评价就出现在民宿详情页的评价列表里。审核不通过时评价被隐藏,系统提示用户重新提交。住宿评价活动图如下图2-6所示。
图2-6住宿评价活动图
订单处理功能
商家登录管理工作台后进入订单管理页面,系统默认展示待确认订单列表。商家查看订单详情中的用户信息与入住日期后点击确认接单按钮。系统将订单状态更新为已确认并向用户推送预订成功通知。用户入住完成后商家可在订单列表中标记该订单为已完成状态。商家遇到用户取消预订或房间不可接待时可点击拒绝接单按钮。系统将订单状态变更为已取消并自动释放占用的房间余量。订单处理活动图如图2-7所示。
图2-7订单处理活动图
异常提醒处理功能
系统监听预订操作与支付行为持续捕获异常事件。用户连续三次生成订单未支付时系统判定为异常行为。商家超过24小时未确认订单时系统触发超时提醒。系统生成异常记录写入异常提醒日志表并标记处理状态为未处理。管理员登录后台进入异常管理页面查看未处理异常列表。管理员点击日志行展开详情面板查看用户操作轨迹与错误堆栈信息。排查完成后管理员将异常状态更新为已解决,系统记录处理人与处理时间。异常提醒处理活动图如图2-8所示。
图2-8异常提醒处理活动图
2.6 非功能性需求
系统在达到功能需求的同时还要考虑性能表现和用户体验。页面加载响应时间控制在两秒以内,用户执行预订、支付等重要操作的时候,系统反馈延迟时间不大于一秒。并发处理能力上,系统要保证50个用户同时访问首页和民宿列表页面不会出现明显的卡顿。数据存储上订单信息、用户个人资料使用加密的方式保存,密码字段用哈希处理后存入数据库,防止数据库泄露造成用户的隐私被暴露。系统可用性要达到95%以上,计划内的停机维护时间每星期不超过两小时。操作界面坚持一致性的原则,同种类型的按钮和交互控件在系统各个页面上具有相同的配色和布局。浏览器兼容性上系统要能够在Chrome、Firefox、Edge这三个主流浏览器的最新版本里正常渲染和交互。后台管理端对所有的管理员重要操作日志进行记录,包括数据删除、状态变更、内容审核等,可以用于日后审计。
4.5 本章小结
本章主要对民宿预订管理系统的用户需求进行分析。可行性分析从技术、经济、操作三个方面来论证项目的实施是否合理,技术上SpringBoot和Vue框架已经很成熟稳定,经济上开发工具和部署成本都在合理范围内,操作上界面设计满足用户的日常使用习惯。功能需求分析按照普通用户、商家用户、管理员三个角色分别对各自的操作需求和业务边界进行阐述。系统角色分析用角色定义表来确定三类用户所具有的权限。用例分析部分给出普通用户、商家用户、管理员的用例图,选择民宿浏览查询、预订下单支付、住宿评价提交、民宿信息管理、异常提醒处理五个核心功能编写用例规约表。非功能性需求从响应时间、并发能力、数据安全、可用性、界面一致性、浏览器兼容性、操作日志等各方面给出约束要求。本章为后面系统设计阶段功能模块的划分以及数据库结构的设计提供依据。
3 系统设计
系统总体设计是整个系统开发过程中承上启下的关键环节。设计阶段将需求分析阶段确立的功能目标转化为具体的技术实现方案,为后续编码工作提供蓝图指引。本章从系统架构设计入手确立前后端分离的分层结构,通过功能结构图呈现按角色划分的模块全貌,选取五个核心业务流程绘制活动图展示操作流转逻辑,最后完成数据库的概念设计与逻辑设计。
3.1 系统架构设计
系统使用的是前后端分离的B/S架构。前端使用Vue框架创建单页面应用,用户操作产生路由跳转以及组件的更新。后端使用的是SpringBoot框架,用RESTful风格的接口实现房源查询、订单提交、支付回调等功能。前后端之间采用HTTP协议进行JSON格式的数据传输,从而实现接口调用和数据格式的分离。用户浏览器向后端应用发出请求,后端服务收到请求之后对参数进行校验、业务逻辑处理、数据库访问等操作,最后将响应数据返回给前端渲染。数据持久层用MyBatis框架来管理SQL语句和结果集映射,MySQL数据库用来保存用户的个人信息、房源信息、订单记录等主要的业务数据。系统不使用分布式缓存或者消息队列,所有的会话状态都在本地内存中保存。杨开振在Spring Boot 3.x技术书籍中对Spring Boot 3.x技术的实践方式做了详细的说明[17]。系统架构图如下图3-1所示。
图3-1系统架构图
3.2 功能结构设计
系统根据用户的类型分为普通用户、商家用户、管理员三个不同的模块,具有不同的操作权限。普通用户的功能主要有用户注册登陆、民宿浏览查看、景点信息查看、美食信息查看、预订下单支付、订单管理、住宿评价提交、留言反馈、新闻资讯阅读、异常提醒推送。商家用户功能有民宿发布修改、美食信息管理、订单处理确认、评价回复管理,保留景点美食查看权限。管理员的功能有景点信息修改、美食全局设置、房间类型字典设置、民宿信息审核下架、全部平台订单查询、异常提醒日志处理、住宿评价内容审核、新闻资讯发布修改。该系统的功能结构如图3-2所示。
图3-2系统功能结构图
3.3 业务流程设计
系统总体业务流程
用户第一次使用系统的时候处于未登录状态,只能浏览首页上展示的民宿列表和景点美食信息。用户点击注册按钮后输入手机号、密码完成账户创建,登录成功后跳转到个人中心。用户在民宿详情页选择入住日期、入住房数后提交订单,系统生成待付款订单跳转到支付网关。支付成功之后订单状态变为已预订,商家端收到新的订单通知。用户入住之后可以提交住宿评价,管理员审核通过之后才可以在民宿详情页中显示出来。用户可以查看自己所有的订单,有空的时候就取消未入住的订单。商家登录后管理自家房源信息和订单状态,管理员维护平台基础数据和内容审核。系统的总体业务流程如图3-3所示。
图3-3系统总体业务流程图
民宿预订流程
用户在入住日期和房间数上做出选择之后,再点击立即预订按钮,系统就会检验出选中的日期里有没有空房。余量不足时提示用户换日或者减房,校验通过后生成预订订单。订单初始状态为待支付,系统跳转到支付页面显示订单金额和支付方式。用户选择支付渠道之后调用模拟支付接口,支付成功之后回调更新订单状态为已预订。支付失败时订单会处于待支付状态,用户可以在个人中心中继续进行支付。已预订的订单在入住前一日可以取消,取消后订单状态为已取消。民宿预订流程图如图3-4所示。

图3-4民宿预订流程图
民宿信息管理流程
商家登录系统之后进入民宿管理模块,点击新增房间按钮打开信息编辑表单。表单填内容有房间类型、标准价格、可预订量、房间面积、设施标签等。商家上传房间实拍图片之后系统会进行格式和大小的校验,不符合要求的图片提示重新上传。信息填写完毕后点击保存按钮,数据写入数据库并返回成功提示。商家可以在管理列表里对已经发布的房间进行编辑,修改价格或者改变可预订的数量。如果要下架房间,则点击删除按钮,系统二次确认后将该房间设置为不可预订状态。民宿信息管理流程图见图3-5所示。
图3-5民宿信息管理流程图
3.4 数据库设计
数据库设计遵循关系型模型的三范式原则,通过拆分冗余字段降低数据更新异常风险。系统采用MySQL作为存储引擎,表间通过外键约束维护引用完整性。王希与戴靓婕在Web动态网页设计研究中指出MySQL数据库技术在数据存储与查询优化方面具有成熟的应用方案[18]。设计过程中为每个业务表分配独立主键,命名规则统一为表名简写加id后缀。预定信息表中关联普通用户与商家用户,通过用户编号字段建立多对一关系。住宿评价表与异常提醒表均预留来源表与来源ID字段,这种设计支持后续功能扩展时复用现有表结构。数据一致性保障依靠事务机制,预订操作涉及订单写入与房间余量扣减两个步骤,两个操作必须全部成功才算完成。
逻辑设计
将数据库概念设计模型细化成目前数据库管理系统可以支持的逻辑数据模式。根据第三章需求分析阶段确定的业务实体及属性关系,结合MySQL数据库存储特性、约束机制,把实体属性图转化为具体的数据库表结构。每一个实体对应一张数据表,实体属性映射到表中对应的字段列上,实体间的关系用主外键关联来实现。逻辑设计阶段按照三范式规范来保证非主属性完全函数依赖于主键,消除传递依赖和部分依赖。下面是系统的各个主要数据表逻辑结构。
普通用户表(普通用户ID,用户ID,用户姓名,用户性别,用户电话,审核状态,创建用户ID,创建时间,更新时间)。该表记载了注册用户的最基本的身份信息,普通用户的ID为主键来唯一标识每一个记录,用户ID关联到用户账户表的登录凭证。
商家用户表(商家用户ID,商家姓名,商家电话,店铺名称,商家地址,营业资质,审核状态,用户ID,创建用户ID,创建时间,更新时间)。本表保存的是民宿经营者所提交的店铺资料及资质文件,商家用户ID为主键,用户ID字段和用户账户表建立关联完成登录认证,审核状态字段记录管理员对商家入驻申请的审批结果。
(3)民宿信息表(民宿信息ID,商家用户,店铺名称,商家电话,商家地址,民宿类型,房间价格,封面图片,房间简介,点击数,点赞数,收藏数,评论数,智能推荐,预定限制次数,创建时间,创建用户ID,更新时间)。该表存储商家发布房源的基础属性和运营数据,民宿信息ID为主键,商家用户字段为外键引用商家用户表,预定限制次数字段用来控制同一个用户对同一房源的重复预订行为。
(4)预定信息表(预定信息ID,商家用户,店铺名称,商家电话,民宿类型,房间价格,普通用户,用户姓名,用户电话,预定日期,预定备注,支付状态,支付类型,提醒限制次数,评价限制次数,创建时间,创建用户ID,更新时间,额外信息,来源表,来源ID,来源用户)。本表存放用户提交的订单信息以及支付状态记录,预定信息ID为主键,商家用户和普通用户字段分别引用商家用户表和普通用户表,支付状态字段表示订单当前所处环节,评价限制次数字段防止用户对同一个订单重复提交评价。
(5)住宿评价表(住宿评价ID,商家用户,店铺名称,民宿类型,房间价格,普通用户,用户姓名,预定日期,满意程度,评价内容,创建时间,创建用户ID,更新时间,额外信息,来源表,来源ID,来源用户。该表存放用户入住之后的满意度评分和文字反馈内容,住宿评价ID为主键,评价内容字段记载用户撰写的评语,满意程度字段用星级或者等级来量化用户体验。
异常提醒表(异常提醒ID,商家用户,店铺名称,商家电话,民宿类型,房间价格,普通用户,用户姓名,预定日期,提醒内容,创建时间,创建用户ID,更新时间,额外信息,来源表,来源ID,来源用户)。该表保存系统捕捉到的非正常操作事件及问题记载,异常提醒ID为主键,异常提醒内容字段说明异常种类和产生原因,创建时间字段标明异常出现的时间,利于管理员按照时间范围查询。
(7)美食信息表(美食信息ID,商家用户,店铺名称,商家电话,商家地址,烹饪方式,封面图片,美食名称,美食简介,美食菜系,商品价格,点赞数,收藏数,评论数,创建用户ID,创建时间,更新时间)。该表存放商家上传的菜品介绍和价格属性,美食信息ID为主键,商家用户字段引用商家用户表,美食菜系字段区分不同的地域风味,商品价格字段记录菜品售价。
(8)房间类型表(房间类型ID,房间类型,创建用户ID,创建时间,更新时间)。本表存储系统全局的房间分类字典数据,房间类型ID为主键,房间类型字段记录大床房、双床房、套房等分类名称,该表为管理员提供可配置的选项数据源。
(9)景点信息表(景点信息ID,景点评分,景点票价,景点攻略,收藏数,评论数,创建用户ID,景点位置,景点名称,景点图片,点赞数,宣传视频,景点类型,创建时间,更新时间)。该表存放旅游景点的基本数据以及宣传内容,景点信息ID为主键,景点攻略字段可以实现富文本内容的显示游览路线和注意事项,景点评分字段可以汇总出用户对景点的综合评价。
基于上述数据描述设计表结构如下。
普通用户表主要用于存储注册用户的基本身份信息与账户状态。主要包括用户ID、用户姓名、用户性别、用户电话等字段。如表3-6所示。
表3-6普通用户表
| 1 | 普通用户ID | int | 11 | 是 | 是 | 普通用户ID |
| 2 | 用户ID | int | 11 | 是 | 否 | 用户ID |
| 3 | 用户姓名 | varchar | 64 | 否 | 否 | 用户姓名 |
| 4 | 用户性别 | varchar | 64 | 否 | 否 | 用户性别 |
| 5 | 用户电话 | varchar | 64 | 否 | 否 | 用户电话 |
| 6 | 审核状态 | varchar | 16 | 是 | 否 | 审核状态 |
| 7 | 创建时间 | datetime | – | 是 | 否 | 创建时间 |
| 8 | 更新时间 | timestamp | – | 是 | 否 | 更新时间 |
商家用户表主要用于存储民宿经营者提交的店铺信息与资质文件。主要包括商家ID、店铺名称、商家电话、营业资质等字段。如表3-7所示。
表3-7商家用户表
| 1 | 商家用户ID | int | 11 | 是 | 是 | 商家用户ID |
| 2 | 商家姓名 | varchar | 64 | 否 | 否 | 商家姓名 |
| 3 | 商家电话 | varchar | 64 | 否 | 否 | 商家电话 |
| 4 | 店铺名称 | varchar | 64 | 否 | 否 | 店铺名称 |
| 5 | 商家地址 | varchar | 64 | 否 | 否 | 商家地址 |
| 6 | 营业资质 | varchar | 255 | 否 | 否 | 营业资质 |
| 7 | 审核状态 | varchar | 16 | 是 | 否 | 审核状态 |
| 8 | 用户ID | int | 11 | 是 | 否 | 用户ID |
民宿信息表主要用于存储商家发布的房源基础属性与运营数据。主要包括民宿ID、店铺名称、房间价格、房间简介等字段。如表3-8所示。
表3-8民宿信息表
| 1 | 民宿信息ID | int | 11 | 是 | 是 | 民宿信息ID |
| 2 | 商家用户 | int | 11 | 否 | 否 | 商家用户 |
| 3 | 店铺名称 | varchar | 64 | 否 | 否 | 店铺名称 |
| 4 | 商家电话 | varchar | 64 | 否 | 否 | 商家电话 |
| 5 | 民宿类型 | varchar | 64 | 否 | 否 | 民宿类型 |
| 6 | 房间价格 | double | – | 否 | 否 | 房间价格 |
| 7 | 房间简介 | longtext | 4294967295 | 否 | 否 | 房间简介 |
| 8 | 预定限制次数 | int | 11 | 是 | 否 | 预定限制次数 |
预定信息表主要用于存储用户提交的订单数据与支付状态记录。主要包括预定ID、普通用户、商家用户、预定日期、支付状态等字段。如表3-9所示。
表3-9预定信息表
| 1 | 预定信息ID | int | 11 | 是 | 是 | 预定信息ID |
| 2 | 商家用户 | int | 11 | 否 | 否 | 商家用户 |
| 3 | 普通用户 | int | 11 | 否 | 否 | 普通用户 |
| 4 | 用户姓名 | varchar | 64 | 否 | 否 | 用户姓名 |
| 5 | 预定日期 | date | – | 否 | 否 | 预定日期 |
| 6 | 支付状态 | varchar | 16 | 是 | 否 | 支付状态 |
| 7 | 支付类型 | varchar | 16 | 否 | 否 | 支付类型 |
| 8 | 评价限制次数 | int | 11 | 是 | 否 | 评价限制次数 |
住宿评价表主要用于存储用户入住后的满意度评分与文字反馈内容。主要包括评价ID、满意程度、评价内容、预定日期等字段。如表3-10所示。
表3-10住宿评价表
| 1 | 住宿评价ID | int | 11 | 是 | 是 | 住宿评价ID |
| 2 | 商家用户 | int | 11 | 否 | 否 | 商家用户 |
| 3 | 普通用户 | int | 11 | 否 | 否 | 普通用户 |
| 4 | 用户姓名 | varchar | 64 | 否 | 否 | 用户姓名 |
| 5 | 预定日期 | date | – | 否 | 否 | 预定日期 |
| 6 | 满意程度 | varchar | 64 | 否 | 否 | 满意程度 |
| 7 | 评价内容 | text | 65535 | 否 | 否 | 评价内容 |
| 8 | 创建时间 | datetime | – | 是 | 否 | 创建时间 |
异常提醒表主要用于存储系统捕获的非正常操作事件与问题记录。主要包括异常提醒ID、提醒内容、预定日期、商家电话等字段。如表3-11所示。
表3-11异常提醒表
| 1 | 异常提醒ID | int | 11 | 是 | 是 | 异常提醒ID |
| 2 | 商家用户 | int | 11 | 否 | 否 | 商家用户 |
| 3 | 普通用户 | int | 11 | 否 | 否 | 普通用户 |
| 4 | 用户姓名 | varchar | 64 | 否 | 否 | 用户姓名 |
| 5 | 预定日期 | date | – | 否 | 否 | 预定日期 |
| 6 | 提醒内容 | text | 65535 | 否 | 否 | 提醒内容 |
| 7 | 商家电话 | varchar | 64 | 否 | 否 | 商家电话 |
| 8 | 创建时间 | datetime | – | 是 | 否 | 创建时间 |
3.5本章小结
本章完成了民宿预订管理系统的总体设计工作。系统架构采用前后端分离模式,前端Vue框架与后端SpringBoot框架通过HTTP协议交互,MySQL数据库与MyBatis框架承担数据持久化任务。功能结构设计按普通用户、商家用户、管理员三类角色划分模块,通过功能结构图直观呈现系统全貌。业务流程设计选取系统总体业务流程、民宿预订流程、民宿信息管理流程、住宿评价流程、异常提醒流程五个核心功能绘制流程图并编制流程表格。数据库设计遵循三范式原则,完成普通用户、商家用户、民宿信息、预定信息、住宿评价、异常提醒、美食信息、房间类型、景点信息、文章、留言板共十一个核心业务表的结构设计,通过实体属性图与系统E-R图展示概念模型,为后续编码实现阶段提供了详细的设计依据。
4 系统实现
下面将从开发环境开始详细介绍本平台的详细实现过程,各个模块分开细说,挖掘本课题更深层次的逻辑,深度贴合软件工程学,为实现平台打下坚实基础。
4.1 开发环境
系统开发阶段采用IntelliJ IDEA作为后端集成开发环境,该工具提供代码自动补全、依赖管理与调试运行等完整功能。前端开发使用VS Code编辑器,配合Vue官方插件实现组件模板的语法高亮与智能提示。JDK版本选用1.8,利用其稳定的集合框架与流式编程特性简化数据处理逻辑。Maven构建工具管理项目依赖,通过pom.xml文件声明SpringBoot、MyBatis、MySQL连接驱动等组件版本。MySQL数据库版本为5.7,本地安装后使用Navicat图形化工具进行表结构设计与数据浏览。前端项目通过npm安装Vue脚手架与axios网络库,开发阶段使用热加载模式实时预览界面修改效果。部署环境采用Windows操作系统,后端打包为jar文件后通过java -jar命令启动,前端打包为静态资源后放置于Nginx目录下。
4.2 普通用户功能实现
注册登录功能实现
用户注册登录模块通过UserController处理账户创建与身份认证请求。register方法接收用户提交的用户名与密码,查询用户表判断账号是否已存在,不存在则执行插入操作完成注册。login方法接收用户名与密码参数,调用service层验证凭证匹配性,验证通过后生成唯一token存入Redis并设置两小时有效期,同时返回用户信息与token至前端。注册登录界面如图4-1所示。
图4-1注册登录界面
核心代码实现如下:@PostMapping("register")public Map<String, Object> signUp(@RequestBody User user) {Map<String, String> query = new HashMap<>();query.put("username",user.getUsername());List list = service.selectBaseList(service.select(query, new HashMap<>()));if (list.size()>0){return error(30000, "用户已存在");}service.insert(map);}@PostMapping("login")public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {String username = data.get("username");String password = data.get("password");List resultList = service.selectBaseList(service.select(map, new HashMap<>()));AccessToken accessToken = new AccessToken();accessToken.setToken(UUID.randomUUID().toString().replaceAll("-", ""));redisTemplate.opsForValue().set(accessToken.getToken(), accessToken,duration);}
景点信息查看功能实现
景点信息查看功能由AttractionInformationController提供数据查询接口。用户进入景点浏览页面后前端发起get_list请求,控制器根据请求参数构建查询条件,调用service层的select方法执行数据库检索。系统以分页形式返回景点列表数据,每条记录包含景点名称、位置、票价、评分及图片信息。用户点击具体景点时前端携带景点ID调用详情接口获取完整攻略内容。景点信息查看界面如图4-2所示。
图4-2景点信息查看界面
核心代码实现如下:@RequestMapping("/get_list")public Map<String, Object> getList(HttpServletRequest request) {Map<String, String> query = service.readQuery(request);Map<String, String> config = service.readConfig(request);Map<String,Object> map = new HashMap<>();List list = this.service.selectBaseList(this.service.select(query, config));map.put("list",list);map.put("count",this.service.selectBaseCount(this.service.count(query,config)));return success(map);}
美食信息查看功能实现
美食信息查看功能基于FoodInformationController实现数据检索与展示。用户进入美食模块后系统调用get_list接口,控制器从request中解析分页参数与筛选条件,包括美食名称模糊匹配与菜系分类过滤。service层执行SQL查询后返回美食列表,每条记录包含美食名称、店铺名称、价格、封面图片与简介摘要。用户点击美食卡片时前端跳转详情页,调用相同控制器的单个查询接口获取完整美食介绍。美食信息查看界面如图4-3所示。
图4-3美食信息查看界面
核心代码实现如下:@RequestMapping("/get_list")public Map<String, Object> getList(HttpServletRequest request) {Map<String, String> query = service.readQuery(request);Map<String, String> config = service.readConfig(request);Map<String,Object> map = new HashMap<>();List list = this.service.selectBaseList(this.service.select(query, config));map.put("list",list);map.put("count",this.service.selectBaseCount(this.service.count(query,config)));return success(map);}
民宿信息查看功能实现
民宿信息查看功能由GuesthouseInformationController处理房源数据的查询请求。用户进入首页或民宿列表页面时前端调用get_list接口,控制器接收区域、价格区间、民宿类型等筛选参数。service层根据参数动态拼接SQL条件执行查询,返回符合筛选条件的房源列表。用户点击房源卡片后前端携带民宿ID调用详情接口,系统返回房间图片轮播、设施标签、房间简介及可预订日期日历所需数据。民宿信息查看界面如图4-4所示。
图4-4民宿信息查看界面
核心代码实现如下:@RequestMapping("/get_list")public Map<String, Object> getList(HttpServletRequest request) {Map<String, String> query = service.readQuery(request);Map<String, String> config = service.readConfig(request);Map<String,Object> map = new HashMap<>();List list = this.service.selectBaseList(this.service.select(query, config));map.put("list",list);map.put("count",this.service.selectBaseCount(this.service.count(query,config)));return success(map);}
支付订单功能实现
支付订单功能通过ReservationInformationController的updatePayState方法完成订单状态变更。用户在前端完成模拟支付后系统调用该接口,传入订单ID与新的支付状态。控制器校验状态参数合法性后根据ID查询预定信息记录,调用setEntity方法更新数据库中的pay_state字段。更新成功后返回支付成功提示,前端接收到响应后跳转至订单详情页面展示已支付状态。支付订单界面如图4-5所示。
图4-5支付订单界面
核心代码实现如下:@GetMapping("/update_pay_state")public String updatePayState(Long id, String newState) throws IOException {if (!newState.equals("未支付") && !newState.equals("已支付")) {return "非法的支付状态";}ReservationInformation reservation_information = service.findOne(queryMap);reservation_information.setPay_state(newState);this.setEntity(queryMap,new HashMap<>(),reservation_information);return "支付成功";}
留言反馈功能实现
留言反馈功能由MessageController提供留言提交与管理接口。用户在前端填写留言标题与内容后点击提交,前端调用add接口将数据发送至后端。控制器验证标题字段非空后移除自动生成的时间戳字段,调用service.insert方法将留言记录写入数据库。用户进入个人中心留言板页面时前端调用get_list接口,系统返回当前用户的所有留言记录及管理员的回复内容。留言反馈界面如图4-6所示。
图4-6留言反馈界面
核心代码实现如下:@PostMapping("/add")@Transactionalpublic Map<String, Object> add(HttpServletRequest request) throws IOException {Map<String, Object> addMap = service.readBody(request.getReader());validateParameters(addMap);removeUnnecessaryFields(addMap);this.service.insert(addMap);return success(1);}@RequestMapping("/get_list")public Map<String, Object> getList(HttpServletRequest request) {Map<String, String> query = service.readQuery(request);List list = this.service.selectBaseList(this.service.select(query, config));map.put("list",list);return success(map);}
预订信息管理功能实现
预订信息管理功能依托ReservationInformationController实现订单数据的查询与状态跟踪。用户进入个人中心订单列表页面后前端调用get_list接口,控制器根据当前登录用户的ID构建查询条件,筛选出该用户的所有订单记录。系统返回待支付、已预订、已完成、已取消四类订单数据。用户点击取消订单时前端调用set接口传入订单ID与更新后的状态,控制器执行数据库更新操作释放房间余量。预订信息管理界面如图4-7所示。
图4-7预订信息管理界面
核心代码实现如下:@RequestMapping("/get_list")public Map<String, Object> getList(HttpServletRequest request) {Map<String, String> query = service.readQuery(request);Map<String, String> config = service.readConfig(request);List list = this.service.selectBaseList(this.service.select(query, config));map.put("list",list);return success(map);}@PostMapping("/set")@Transactionalpublic Map<String, Object> set(HttpServletRequest request) throws IOException {Map<String,Object> paramMap = service.readBody(request.getReader());ReservationInformation reservation_information = new ReservationInformation();this.setEntity(queryMap,configMap,reservation_information);return success(1);}
住宿评价功能实现
住宿评价功能通过AccommodationResightController处理用户评价的提交与存储。用户在已完成订单列表点击评价按钮后填写评分与评语,前端调用add接口将评价数据提交至后端。控制器接收商家用户ID、普通用户ID、满意度程度、评价内容等参数,校验空值后构建AccommodationResight实体对象。service层执行插入操作将评价记录写入住宿评价表,评价状态默认为待审核。住宿评价界面如图4-8所示。
图4-8住宿评价界面
核心代码实现如下:@PostMapping("/add")@Transactionalpublic Map<String, Object> add(HttpServletRequest request) throws IOException {Map<String,Object> paramMap = service.readBody(request.getReader());paramMap.entrySet().removeIf(entry -> {Object value = entry.getValue();return value instanceof String && ((String) value).isEmpty();});AccommodationResight accommodation_resight = new AccommodationResight();accommodation_resight.setDegree_of_satisfaction(paramMap.get("degree_of_satisfaction")==null?null:String.valueOf(paramMap.get("degree_of_satisfaction")));this.addEntity(accommodation_resight);return success(1);}
新闻资讯查看功能实现
新闻资讯查看功能由ArticleController提供文章数据的查询接口。用户进入资讯页面后前端调用get_list方法,控制器从request中读取分页参数与分类筛选条件。service层执行查询返回文章列表,每条记录包含标题、封面图、发布时间与摘要内容。用户点击文章标题时前端调用详情查询接口,系统返回正文的富文本内容供用户阅读。系统按发布时间倒序排列文章列表,最新公告置顶展示。新闻资讯查看界面如图4-9所示。
图4-9新闻资讯查看界面
核心代码实现如下:@RequestMapping("/get_list")public Map<String, Object> getList(HttpServletRequest request) {Map<String, String> query = service.readQuery(request);Map<String, String> config = service.readConfig(request);Map<String,Object> map = new HashMap<>();List list = this.service.selectBaseList(this.service.select(query, config));map.put("list",list);map.put("count",this.service.selectBaseCount(this.service.count(query,config)));return success(map);}
4.5 本章小结
本章对民宿预订管理系统进行详细的实现过程描述。开发环境采用IntelliJ IDEA与VS Code作为集成开发工具,JDK1.8与MySQL5.7作为基础运行环境。普通用户端实现了注册登录、景点美食民宿信息查看、支付订单、留言反馈、预订信息管理、住宿评价、新闻资讯查看、异常提醒这八个功能模块。商家用户端有景点美食民宿信息查看、美食民宿信息管理、预订信息管理、住宿评价管理这四个功能模块。管理员端实现景点信息管理、美食信息管理、房间类型管理、民宿信息管理、预订信息管理、异常提醒管理、住宿评价管理、新闻资讯管理八个功能模块。每个功能模块都给出了核心代码节选以及界面图,完整的展示了系统的设计和实现技术。
5 总结与展望
5.1 总结
本文设计并实现了一个面向多角色的民宿预订管理系统。民宿行业迅速发展过程中,信息不对称、管理效率低下的问题越来越严重,该系统用角色权限分离、业务模块整合的方式给出数字化的解决办法。系统实现普通用户在线预定、商家自行管理房源、后台统一审核维护的目的。
系统实现的过程是按照软件工程规范来完成需求分析、架构设计、编码实现、测试验证等工作的。后端用SpringBoot搭建RESTful接口,前端使用Vue做组件化开发,MySQL存储业务数据。普通用户可以完成民宿浏览、在线支付、订单管理、住宿评价等完整的操作链路,商家用户有独立的工作台来管理自己的房源和美食信息,管理员维护景点数据、房间类型、新闻资讯等基础内容。经过测试可知各个功能模块可以正常工作,预订过程形成闭环,评价系统也可以起作用。
系统开发中出现的主要技术难题有订单状态同房间余量的一致保证、多角色权限管控下的数据隔绝、评价审核状况的流转处理。为了解决订单数据的一致性问题,用数据库事务来保证订单写入和余量扣减的原子性。权限控制采用用户组配置、接口拦截器的方式对不同的角色进行访问限制。评价审核流程用状态字段来区分待审核、已通过和已驳回三种状态,并且会定时清除超时没有处理过的记录。以上问题的解决方法给系统正常运转提供技术支持。
5.2 展望
系统目前还存在着一些不足,有待以后完善。支付模块使用模拟网关实现,不和真实的第三方支付接口对接,商业运营中要和微信支付、支付宝对接完成交易闭环。房源推荐功能只使用简单的规则排序,没有个性化的推荐算法,用户浏览大量的无关房源之后决策效率低。商家入驻审核流程依靠管理员人工判定,审核速度慢,可以采用OCR技术对营业执照信息进行自动识别以提高审核速度。移动端适配没有做专项优化,在手机浏览器上访问部分页面时会因为布局错位而出现异常,需要开发独立的微信小程序版本来改善移动端的用户体验。
未来的发展方向就是接入真实的支付接口来完成完整的交易闭环。采用协同过滤算法依据用户之前浏览过的房源以及预订记录,对相似的房源展开推荐,进而改善转化率。开发商家端小程序版,使经营者可以随时随地处理订单、回复评价。添加数据可视化看板,给管理员提供预订趋势分析、热门房源排行、用户画像统计等决策支持功能。该系统对中小型民宿群体有推广应用的价值,可以降低经营者的使用技术门槛,提高游客的入住体验,促进住宿服务业信息化的发展。
参考文献
[1] 张婉琳. X乡村民宿营销策略优化研究[D].上海:华东师范大学, 2025.
[2] 刘之禹.成都市青羊区民宿管理的问题与对策研究[D].成都:电子科技大学, 2024.
[3] 刘洁.数字化时代下的旅游民宿平台发展模式研究[J].旅游与摄影, 2023, 0(24): 95-97.
[4] 马元博.基于信任理论和TabNet的共享民宿预订量影响因素实证研究[D].天津:天津财经大学, 2023.
[5] 徐楠.共享住宿平台中房主最优即时预订策略研究[D].天津:天津大学, 2021.
[6] 苏雅婷,石玉.民宿主客互动评论及装饰风格对顾客在线预订意愿的影响[J].海南师范大学学报(自然科学版), 2021, 34(3): 342-348.
[7] 王凯.民宿旅游管理平台V1.0.西安:陕西弈聪软件信息技术股份有限公司, 2021-02-02.
[8] Li W, Zhu Z. Research on theme mining of tourists‘ perception in intangible cultural heritage homestay scene based on LDA model[J]. Business Administration and Management, 2026, 8(1): 1-12.
[9] Sianipar R, Juliana J, Hubner B I, et al. Empowering Local Communities Through Homestay Management: An Innovative Strategy for Sustainable Rural Tourism in Yogyakarta[J]. Societies, 2026, 16(1): 34-34.
[10] Wang C. Exploration of Spatial Design and Sustainable Development Path for Hainan Characteristic Homestays under the Background of Rural Revitalization[J]. Research and Commentary on Humanities and Arts, 2026, 4(1): 1-10.
[11] ForthFocus Announces Dedicated OTA Onboarding Service for Hotels and Homestays[J]. M2 Presswire, 2026, 0(0): 1-5.
[12] Sarina M N, Khairil W A, Aekram F. The Mediating Effect of Smart Technology on the Relationship Between Homestay Management and Collaborative Digital Economy[J]. International Journal of Knowledge Management (IJKM), 2025, 21(1): 1-29.
[13] 温彩玲.基于Vue.js和Spring Boot的开放式实训基地管理平台的设计与开发[J].太原城市职业技术学院学报,2025,23(3):60-62.
[14] 柳伟卫.Vue.js+Spring Boot全栈开发实战[M].北京:人民邮电出版社,2023:484.
[15] 舒蕾,刘均.MySQL数据库应用与维护项目式教程[M].北京:人民邮电出版社,2023:476.
[16] 朱书彪.中职《Java程序设计》项目课程开发与实践[D].桂林:广西师范大学,2025:1-120.
[17] 杨开振.深入浅出Spring Boot 3.x[M].北京:人民邮电出版社,2024:408.
[18] 王希,戴靓婕.MySQL数据库技术在Web动态网页设计中的运用研究[J].软件,2024,45(7):77-79.
[19] 胡劲.数据库信息管理系统的逻辑架构与功能设计探析[J].电脑知识与技术,2023,19(19):96-98.
[20] 窦万峰,蒋锁良,杨俊.软件工程实验教程[M].北京:机械工业出版社,2023:624.
致谢
大学生活即将画上句号,回顾这段求学经历感触颇深。从最初接触编程时面对报错信息的手足无措,到现在能够独立完成一个完整系统的开发,这个过程让我明白了坚持的意义。图书馆靠窗位置的屏幕光亮陪伴过无数个夜晚,那些被bug困扰又逐个击破的时刻构成了最真实的成长轨迹。感谢指导老师在选题阶段帮我理清研究方向,在论文写作过程中逐字逐句指出逻辑漏洞与表述问题,这种严谨态度让我受益良多。每次组会上的讨论都像一面镜子,照出自己思考中的盲区。
室友们在我熬夜调试代码时主动调暗灯光、放轻脚步,这些细微的体谅让集体宿舍多了几分温暖。遇到技术瓶颈时向学长请教,对方总能耐心讲解框架原理与调试技巧,这份毫无保留的帮助我会记在心里。父母从未施加过压力,电话里说得最多的就是注意身体、别太累,这种默默支持是我坚持下去的动力来源。食堂阿姨多打的那勺菜、深夜自习室保安大叔的关门提醒,这些平凡的善意汇聚成安心读书的环境。
完成毕设的过程像是一场自我对话,不断追问自己到底想做出什么样的作品。从需求分析时的无从下笔到测试通过后的如释重负,情绪起伏之间技术能力悄然提升。民宿预订系统虽然还有不完美之处,但每一个功能模块都倾注了心血。未来走上工作岗位后会继续完善它,让这个小项目真正发挥作用。这段经历教会我的不只是编码技巧,更是解决问题的方法论与面对困难时的平常心。
网硕互联帮助中心
![【关注可白嫖源码】--课程设计--毕业设计--springboot高校选课系统[编号:project82776] (案件分析)-网硕互联帮助中心](https://www.wsisp.com/helps/wp-content/uploads/2026/09/20260909041721-6aa0ddd1b1f2f-220x150.png)
-网硕互联帮助中心](https://www.wsisp.com/helps/wp-content/uploads/2026/09/20260909040108-6aa0da04c0ad1-220x150.png)




评论前必须登录!
注册