——————————DescriptionStart——————————
运行环境
Java≥8、MySQL≥5.7、Node.js≥14
开发工具
后端:eclipse/idea/myeclipse/sts等均可配置运行
前端:WebStorm/VSCode/HBuilderX等均可
❗没学过node.js的不要搞前后端分离项目
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于javaweb的SpringBoot酒店管理系统(java+springboot+mybaits+vue+elementui+mysql)
项目介绍
基于springboot酒店管理系统
本项目分为前后台,前台为顾客登录,后台为管理员登录;
前台功能:
登录、注册、首页、房间预定、个人信息、我的预约、用户留言、退出登录
后台功能:
登录、工作人员管理、角色管理、应用管理、日志管理、客户管理、留言管理、房型管理、房间管理、预约订单管理、入住管理、统计分析管理、退出登录
环境需要
1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。
2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;
3.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS;
4.数据库:MySql 5.7/8.0版本均可;
5.是否Maven项目:是;
技术栈
后端:SpringBoot+Mybaits
前端:AdminLTE+jQuery+vue.js+elementui+jsp
使用说明
项目运行:
使用Navicat或者其它工具,在mysql中创建对应sql文件名称的数据库,并导入项目的sql文件;
使用IDEA/Eclipse/MyEclipse导入项目,导入成功后请执行maven clean;maven install命令;
将项目中application.properties配置文件中的数据库配置改为自己的配置;
运行项目,在浏览器中输入地址:http://localhost:8088/
顾客:zhangsan 密码:123456
管理员:admin 密码:123456
首页展示:
登录页面展示:
房间介绍展示:
后台管理展示:
后台登录展示:
业务管理模块展示:
客户管理展示:
房间管理展示:
统计分析管理展示:
预约订单管理展示:
——————————CodeStart——————————
订单管理控制层:
@RestController
public class OrderController
private final OrderService orderservice;
private final OrderRoomService orderroomservice;
private final RoomidService roomidservice;
private final RoomService roomservice;
private final OrderHistoryService orderHistoryService;
private final FinanceService financeService;
@Autowired
public OrderController(OrderService orderservice,OrderRoomService orderroomservice,RoomidService roomidservice,
RoomService roomservice,OrderHistoryService orderHistoryService,
FinanceService financeService)
this.orderservice=orderservice;
this.orderroomservice=orderroomservice;
this.roomidservice=roomidservice;
this.roomservice=roomservice;
this.orderHistoryService=orderHistoryService;
this.financeService=financeService;
/**
查找所有订单
@return 返回现有的全部订单
*/
@RequestMapping(“/order/orderlist”)
public Result<List
return ResultReturn.success(orderservice.findAll());
/**
根据订单号查找对应订单信息
@param orderno 订单号
@return 返回订单号对应的订单
*/
@RequestMapping(“/order/searchOne/{orderno}”)
public Result
return ResultReturn.success(orderservice.findByOrderNo(orderno));
/**
更新订单信息
@param orderno 订单号
@param name 姓名
@param id 身份证
@param phone 电话号码
@param isenter 是否入住
@return 返回更新后的订单
*/
@RequestMapping(“/order/update/{orderno}”)
public Result
@RequestParam(“id”) String id,@RequestParam(“phone”) String phone,
@RequestParam(“isenter”) int isenter)
Order o=orderservice.findByOrderNo(orderno);
o.setName(name);
o.setId(id);
o.setPhone(phone);
o.setIsenter(isenter);
return ResultReturn.success(orderservice.save(o));
/**
插入订单
@param
@return
*/
@RequestMapping(“/order/insert”)
public Result orderInsert(@RequestParam(“name”) String name,
@RequestParam(“id”) String id, @RequestParam(“phone”) String phone,
@RequestParam(“starttime”) String starttime, @RequestParam(“endtime”) String endtime,
@RequestParam(“isenter”) int isenter, @RequestParam(“ismenber”) int ismenber,
@RequestParam(“roomcount”) int roomcount, @RequestParam(“roomnos”) String roomnos,
@RequestParam(“price”) int price)
Order o = new Order();
o.setName(name);
o.setId(id);
o.setPhone(phone);
// 将String类型格式化为timestamp
SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd HH:mm”);
try {
Date startT = sdf.parse(starttime);
Date endT = sdf.parse(endtime);
o.setStarttime(new Timestamp(startT.getTime()));
o.setEndtime(new Timestamp(endT.getTime()));
} catch (ParseException e) {
e.printStackTrace();
o.setIsenter(isenter);
o.setIsmenber(ismenber);
o.setRoomcount(roomcount);
o.setPrice(price);
Order saveO = orderservice.save(o);
List
Order lastOrder = orderList.get(0);
// 房间号处理
String roomStrArray[] = roomnos.split(“\|”); //“.”和“|”都是转义字符,必须得加”\”;
for (int i=0;i<roomStrArray.length;i++){
System.out.println(roomStrArray[i]);
OrderRoom orderRoom = new OrderRoom();
orderRoom.setOrderno(lastOrder.getOrderno());
orderRoom.setRoomno(Integer.parseInt(roomStrArray[i]));
orderroomservice.save(orderRoom);
return ResultReturn.success(saveO);
/**
删除订单
@param orderno 订单号
@return 返回成功
*/
@RequestMapping(“/order/delete/{orderno}”)
public Result orderDelete(@PathVariable(“orderno”) int orderno)
Order o=orderservice.findByOrderNo(orderno);
orderservice.delete(o);
return ResultReturn.success();
/**
根据订单号查找所有的订单中的所有房间
@param orderno 订单号
@return 返回房间列表
*/
@RequestMapping(“/order/orderroom/{orderno}”)
public Result<List
return ResultReturn.success(orderroomservice.findAll(orderno));
/**
根据订单-房间序号查找对应记录
@param orno 订单-房间表的序号
@return 返回对应的订单-房间信息
*/
@RequestMapping(“/order/orderroom/orderroomSearchOne/{orno}”)
public Result
return ResultReturn.success(orderroomservice.findOne(orno));
/**
OrderRoom表更新
@param orno 编号
@param brand 车牌号
@param roomnoAfter 之前的房间号
@param roomnoBefore 现在重新设定的房间号(计算价格需要)
@param orderno 订单号(保存当前订单的价格需要)
@return 返回保存的orderroom对象
*/
@RequestMapping(“/order/orderroom/update/{orno}”)
public Result orderroomUpdate(@PathVariable(“orno”) int orno,@RequestParam(“brand”) String brand,
@RequestParam(“roomnoAfter”) int roomnoAfter,
@RequestParam(“roomnoBefore”) int roomnoBefore,@RequestParam(“orderno”) int orderno)
OrderRoom or=orderroomservice.findOne(orno);
or.setBrand(brand);
or.setRoomno(roomnoAfter);
List
for (Roomid aRi : ri)
aRi.setRoomno(roomnoAfter);
roomidservice.saveAll(ri);
Order order=orderservice.findByOrderNo(orderno);
Room roomAfter=roomservice.findByRoom(roomnoAfter);
Room roomBefore=roomservice.findByRoom(roomnoBefore);
order.setPrice(order.getPrice()+roomAfter.getPrice()-roomBefore.getPrice());
orderservice.save(order);
return ResultReturn.success(orderroomservice.save(or));
//roomid表查看
@RequestMapping(“/order/orderroom/roomid/list/{roomno}”)
public Result<List
return ResultReturn.success(roomidservice.findAll(roomno));
/**
根据房间-身份证表的序号查找对应信息
@param rino 房间-身份证表的序号
@return 返回对应信息
*/
@RequestMapping(“/order/orderroom/roomid/roomidSearchOne/{rino}”)
public Result
return ResultReturn.success(roomidservice.findByRino(rino));
/**
房间-身份证表更新
@param rino 房间-身份证表的序号
@param name 姓名
@param id 身份证
@return 返回更改后的信息
*/
@RequestMapping(“/order/orderroom/roomid/update/{rino}”)
public Result roomidUpdate(@PathVariable(“rino”) int rino,@RequestParam(“name”) String name,
@RequestParam(“id”) String id)
Roomid ri=roomidservice.findByRino(rino);
ri.setId(id);
ri.setName(name);
return ResultReturn.success(roomidservice.save(ri));
/**
寻找未入住的房间号列表
@return 返回房间号列表
*/
@RequestMapping(“/order/orderroom/roomid/getEmptyRoomno”)
public Result<List
List
List
for (Roomid aRi : ri)
q.add(aRi.getRoomno());
List
List
for (Room aR : r)
sum.add(aR.getRoomno());
return ResultReturn.success(sum);
/**
结算订单
@param orderno 订单号
@return 返回订单结算结果
@throws HotelException 抛出订单未入住异常 code: 601
*/
@RequestMapping(“/order/settle/{orderno}”)
public Result
Order order=orderservice.findByOrderNo(orderno);
if(order.getIsenter()==1)
Order orderTemp=new Order(order);
orderservice.delete(order);
return new OrderHistoryController(orderHistoryService,financeService).orderHistoryInsert(orderTemp);
else
throw new HotelException(ExceptionType.ORDER_ISENTER_ERROR.getCode(),
ExceptionType.ORDER_ISENTER_ERROR.getMsg());
房间信息管理控制层:
@RestController
public class RoomInformationController {
private final StandardService standservice;
private final RoomService roomservice;
@Autowired
public RoomInformationController(StandardService standservice,RoomService roomservice)
this.standservice=standservice;
this.roomservice=roomservice;
//查询房间标准列表
@RequestMapping(“/standard”)
public Result<List
return ResultReturn.success(standservice.getAll());
//添加客房标准
@RequestMapping(“/standard/add”)
public Result standardAdd(@RequestParam(“stdname”) String stdname,
@RequestParam(“roomarea”) int roomarea,@RequestParam(“bedno”) int bedno,
@RequestParam(“equip1”) String equip1,@RequestParam(“equip2”) String equip2) {
Standard standard = saveStandard(stdname,roomarea,bedno,equip1,equip2);
return ResultReturn.success(standservice.save(standard));
//删除客房标准
@RequestMapping(“/standard/deletebystdno”)
public Result deleteByStdNo(@RequestParam(“stdno”) int stdno){
standservice.delete(standservice.findByStandard(stdno));
return ResultReturn.success();
//查询客房信息列表
@RequestMapping(“/room/roomlist”)
public Result<List
return ResultReturn.success(roomservice.getAll()) ;
//添加客房信息
@PostMapping(“/room/add”)
public Result roomAdd(@RequestParam(“roomno”) int roomno,@RequestParam(“type”) int type,
@RequestParam(“price”) int price,@RequestParam(“ifwindow”) int ifwindow,
@RequestParam(“comment”) String comment) {
System.out.println(“qian”+roomno+” “+roomservice.findByRoom(roomno));
//需要做检测
if(roomservice.findByRoom(roomno)==null) {
System.out.println(roomno);
Room r = saveRoom(roomno, type, price, ifwindow, comment);
return ResultReturn.success(roomservice.save(r));
else
return ResultReturn.error(2,”客房编号已存在!”);
//更新已有信息
@RequestMapping(“/room/update/{roomno}”)
public Result roomUpdate(@PathVariable(“roomno”) int roomno,@RequestParam(“type”) int type,
@RequestParam(“price”) int price,@RequestParam(“ifwindow”) int ifwindow,
@RequestParam(“comment”) String comment) {
//需要先查询是否存在
if(roomservice.findByRoom(roomno)==null) {
return ResultReturn.error(1,”cant’t find roomno!”);
else {
Room r = saveRoom(roomno, type, price, ifwindow, comment);
return ResultReturn.success(roomservice.save(r));
@RequestMapping(“/room/searchOne/{roomno}”)
public Result roomSerchOne(@PathVariable(“roomno”) int roomno) {
Room r = roomservice.findByRoom(roomno);
if(r == null) {
return ResultReturn.error(1,”it’s not exist!”);
else {
return ResultReturn.success(r);
@RequestMapping(“/room/delete/{roomno}”)
public Result roomDelete(@PathVariable(“roomno”) int roomno) {
//需要先查询是否存在
Room r = roomservice.findByRoom(roomno);
if(r == null) {
return ResultReturn.error(1,”it’s not exist, you can’t delete!”);
else {
roomservice.delete(r);
return ResultReturn.success(r);
public Room saveRoom(int roomno,int type,int price,int ifwindow,String comment) {
Room r = new Room();
r.setRoomno(roomno);
r.setType(type);
r.setPrice(price);
r.setIfwindow(ifwindow);
r.setComment(comment);
return r;
public Standard saveStandard(String stdname,int roomarea,int bedno,String equip1,String equip2){
Standard s = new Standard();
s.setStdname(stdname);
s.setRoomerea(roomarea);
s.setBedno(bedno);
s.setEquip1(equip1);
s.setEquip2(equip2);
return s;
财务管理控制层:
@RestController
public class FinanceController
private final FinanceService financeService;
@Autowired
public FinanceController(FinanceService financeService)
this.financeService=financeService;
/**
- @return 返回全部财务报表
*/
@RequestMapping(“/finance/getall”)
public Result
return ResultReturn.success(financeService.findAll());
/**
@param year 欲查询日财务报表的年份
@param month 欲查询日财务报表的月份
@param day 欲查询日财务报表的日数
@return 返回日财务报表
*/
@RequestMapping(“/finance/getbyday”)
public Result
@RequestParam(“day”) int day)
return ResultReturn.success(financeService.findByDay(year,month,day));
/**
@param year 欲查询月财务报表的年份
@param month 欲查询月财务报表的月份
@return 返回月财务报表
*/
@RequestMapping(“/finance/getbymonth”)
public Result
return ResultReturn.success(financeService.findByMonth(year,month));
/**
@param year 欲查询年财务报表的年份
@return 返回年财务报表
*/
@RequestMapping(“/finance/getbyyear”)
public Result
return ResultReturn.success(financeService.findByYear(year));
/**
@param object 收入对象
@throws HotelException 抛出异常收入的错误
*/
void insert(Object object) throws HotelException
if(object instanceof OrderHistory)
Finance finance=new Finance();
finance.setMoney(((OrderHistory)object).getPrice());
finance.setTime(((OrderHistory)object).getEndtime());
finance.setType(“订单”);
financeService.save(finance);
else if(object instanceof GarageHistory)
Finance finance=new Finance();
finance.setMoney(((GarageHistory)object).getPrice());
finance.setTime(((GarageHistory)object).getEndtime());
finance.setType(“车库”);
financeService.save(finance);
else
throw new HotelException(ExceptionType.FINANCE_INSERT_TYPE_ERROR.getCode(),
ExceptionType.FINANCE_INSERT_TYPE_ERROR.getMsg());
——————————PayStart——————————
项目链接:
https://javayms.github.io?id=351524522608201pi
https://javayms.pages.dev?id=351524522608201pi