基于javaweb的SpringBoot酒店管理系统(java+springboot+mybaits+vue+elementui+mysql)

运行环境

Java≥8、MySQL≥5.7、Node.js≥14

开发工具

后端:eclipse/idea/myeclipse/sts等均可配置运行
前端:WebStorm/VSCode/HBuilderX等均可

❗没学过node.js的不要搞前后端分离项目

适用

课程设计,大作业,毕业设计,项目练习,学习演示等

功能说明

191524372608

201524372608

211524372608

221524372608

231524372608

241524372608

251524372608

261524372608

271524372608

281524372608

基于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

使用说明

项目运行:

  1. 使用Navicat或者其它工具,在mysql中创建对应sql文件名称的数据库,并导入项目的sql文件;

  2. 使用IDEA/Eclipse/MyEclipse导入项目,导入成功后请执行maven clean;maven install命令;

  3. 将项目中application.properties配置文件中的数据库配置改为自己的配置;

  4. 运行项目,在浏览器中输入地址:http://localhost:8088/

顾客:zhangsan 密码:123456

管理员:admin 密码:123456

首页展示:

登录页面展示:

房间介绍展示:

后台管理展示:

后台登录展示:

业务管理模块展示:

客户管理展示:

房间管理展示:

统计分析管理展示: 

预约订单管理展示:

订单管理控制层:

@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> orderList()

return ResultReturn.success(orderservice.findAll());

/**

  • 根据订单号查找对应订单信息

  • @param orderno 订单号

  • @return 返回订单号对应的订单

*/

@RequestMapping(“/order/searchOne/{orderno}”)

public Result orderSearchOne(@PathVariable(“orderno”) int orderno)

return ResultReturn.success(orderservice.findByOrderNo(orderno));

/**

  • 更新订单信息

  • @param orderno 订单号

  • @param name 姓名

  • @param id 身份证

  • @param phone 电话号码

  • @param isenter 是否入住

  • @return 返回更新后的订单

*/

@RequestMapping(“/order/update/{orderno}”)

public Result orderUpdate(@PathVariable(“orderno”) int orderno,@RequestParam(“name”) String name,

@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 orderList = orderservice.findAllSortByOrderNo();

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> orderroomList(@PathVariable(“orderno”) int orderno)

return ResultReturn.success(orderroomservice.findAll(orderno));

/**

  • 根据订单-房间序号查找对应记录

  • @param orno 订单-房间表的序号

  • @return 返回对应的订单-房间信息

*/

@RequestMapping(“/order/orderroom/orderroomSearchOne/{orno}”)

public Result orderroomSearchOne(@PathVariable(“orno”) int orno)

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 ri=roomidservice.findAll(roomnoBefore);

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> roomidList(@PathVariable(“roomno”) int roomno)

return ResultReturn.success(roomidservice.findAll(roomno));

/**

  • 根据房间-身份证表的序号查找对应信息

  • @param rino 房间-身份证表的序号

  • @return 返回对应信息

*/

@RequestMapping(“/order/orderroom/roomid/roomidSearchOne/{rino}”)

public Result roomidSearchOne(@PathVariable(“rino”) int rino)

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> getEmptyRoomno()

List ri=roomidservice.findAllWithoutparam();

List q=new ArrayList<>(ri.size());

for (Roomid aRi : ri)

q.add(aRi.getRoomno());

List r=roomservice.getEmpty(q);

List sum=new ArrayList<>();

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 orderSettle(@PathVariable(“orderno”) int orderno) throws HotelException

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> standardList() {

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> roomList() {

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 getAll()

return ResultReturn.success(financeService.findAll());

/**

  • @param year 欲查询日财务报表的年份

  • @param month 欲查询日财务报表的月份

  • @param day 欲查询日财务报表的日数

  • @return 返回日财务报表

*/

@RequestMapping(“/finance/getbyday”)

public Result getByDay(@RequestParam(“year”) int year,@RequestParam(“month”) int month,

@RequestParam(“day”) int day)

return ResultReturn.success(financeService.findByDay(year,month,day));

/**

  • @param year 欲查询月财务报表的年份

  • @param month 欲查询月财务报表的月份

  • @return 返回月财务报表

*/

@RequestMapping(“/finance/getbymonth”)

public Result getByDay(@RequestParam(“year”) int year,@RequestParam(“month”) int month)

return ResultReturn.success(financeService.findByMonth(year,month));

/**

  • @param year 欲查询年财务报表的年份

  • @return 返回年财务报表

*/

@RequestMapping(“/finance/getbyyear”)

public Result getByDay(@RequestParam(“year”) int year)

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());


项目链接:
https://javayms.github.io?id=351524522608201pi
https://javayms.pages.dev?id=351524522608201pi