作者主页:夜未央5788

简介:Java领域优质创作者、Java项目、学习资料、技术互助

文末获取源码

项目介绍

系统介绍:

1.1、系统管理
用户管理:对该系统的使用者即用户信息进行维护。
日志管理:为了系统的安全,对前台人员的导致业务数据更新的操作需要记录日志系统管理员可以定期查看和删除日志。
酒店人员权限管理:可对酒店各部门的员工进行权限的统一分配,以及更新操作。
1.2、房客管理
客房预定管理:用户可以通过网上登录注册登录浏览网站点击上面的立即预定,有账号跳到登录界面,否则注册界面,登录成功跳转预定界面,预定界面显示客房类型和客房价格以及需要消费的项目,点击预定,如未完善用户信息,则完善用户预定的信息(预定人,证件类别,证件号码,联系电话,入住时间,离店时间,入住人数等等),否则直接跳转预定成功,显示单号和客户预定信息,并将预定的内容传到后台,后台可以查询。用户亦可自行取消预定。(显示预定状态——包含未预定,已预订)。预定一律到店付,不进行在线支付。客户可以在网上修改自己的预定信息。亦可到店修改。
入住登记管理:客户未预定房间时,酒店前台查询客房状态,在有空房的情况下,填写客户入住信息,如(预定人,证件类别,证件号码,联系电话,入住时间,离店时间,入住人数等等),后台可以查询客房入住列表和人数,也可以修改入住信息。
预定转入住管理(实际上是预定管理后台的一部分):后台查询客户预定信息,如已预订,则办理入住,点击入住按钮,将客户信息传到入住登记界面,按照原预定信息,分配房间类型,房号等等
换房管理(入住登记中修改入住信息的一部分):查询客户入住信息,对房号进行修改,同时原来的客房状态变为空房。
结账管理:客人退房时,接待人员根据客人的房卡,进行退房登记。计算客人入住期间的房费和各种消费总额。客人信息转存到历史客人表中。客房状态由“入住”转为“空房”。
1.4、客房管理
客房信息管理:客房管理是指对客房基本信息(如客房的楼层、类型、价格等)的维护。在预定、入住、换房时,都需要对客房的信息进行查看。客房状态:包括三种空房、已预订、入住、故障。当客人预定后,变为已预定,当客人入住后,变为入住,房间出现故障时,变为故障,其他情况为空房。
1.5、消费管理
查询消费商品信息:如果客人在客房内消费了某些商品,对该商品进行记录管理。
1.6、基础信息管理
客房类型管理:对酒店的客房的类别的信息维护,类型描述了客房的基本自然条件,如单人间还是标准间等。考虑到系统的可扩展性,管理员可以对酒店客房的类型信息进行动态的维护。
楼层管理:对酒店的客房所在的楼层的信息的维护,简单的查询所有楼层信息,新增楼层信息,考虑到系统的可扩展性,管理员可以对酒店客房的楼层信息进行动态的维护。
商品类别管理:对酒店的商品的类别进行维护。考虑到系统的可扩展性,管理员可以对商品类型的状态信息进行动态的维护。
商品管理:对酒店的商品信息进行维护。考虑到系统的可扩展性,管理员可以对商品信息进行动态的维护。
会员管理:对该系统的会员信息进行维护。对于会员,如果达到一定的积 分,会有相应的折扣。
1.7、PA(公共区域)管理:
酒店卫生管理:在客人离店后,对房间进行清洁工作,更换住宿所需的必需品。当客人需连续住宿多天的时候,询问客人是否需要每天打扫,如果需要,则对房间进行清洁工作,如果不需要,则在客人离店后打扫即可.//查询
异常情况管理:若发现下水道堵塞,热水器故障等问题的时候,立即报修,通知设备管理部,并将客房状态改为“故障”。//查询
客户需求管理:如有客户有加床的需求,上报并及时处理。//查询
酒店物品采购管理:对酒店日常所需物品进行采购。//只能增加//查询
设备维修管理:当接到设备维修通知的时候,立即通知维修人员,到相应的地点进行设备维修。维修成功后,将客房状态改为“空房”。//查询
二、项目性能需求
集中数据管理、分布式应用,实现信息的全面共享,为决策者提供最新的人力资源数据。
完全基于浏览器的操作模式,安装简单、操作方便,具有良好的系统扩充能力。
灵活的模块需求设计,可根据实训项目周期灵活裁剪。
严格的安全管理机制。利用 SSL 技术维护网络传输安全,利用安全规则和特权保证基本信息的安全管理,提供日常操作的审计功能,并对重要的安全事件提供报警,对重要数据进行加密。
支持中英文界面切换。
对于系统执行的重要操作自动记录操作人和操作日期。操作人默认为当前登录人员。操作日期默认为当天。

由于本程序规模不大,可供课程设计,毕业设计学习演示之用

环境需要

1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。
2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;
3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可
4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS; 
5.数据库:MySql 5.7/8.0版本均可;

6.是否Maven项目: 否;

技术栈

1. 后端:Spring+struts+Hibernate

2. 前端:JSP+css+javascript+bootstrap+jquery+echarts

使用说明

1. 使用Navicat或者其它工具,在mysql中创建数据库,库名hotel,并导入项目的sql文件;
2. 使用IDEA/Eclipse/MyEclipse导入项目,注意hotel与hotelManage两个源码需分别导入;
3. 将项目中config/jdbc.properties配置文件中的数据库配置改为自己的配置;
4. 分别运行hotel与hotelManage项目,http://localhost:8081/hotel/login_index.do   前台首页
普通管理员账号密码:zhangsan/123
http://localhost:8080/hotelManage/manage_index.do 后台首页

超级管理员账号密码:admin/admin

运行截图

前台界面

后台界面

相关代码

BookAction

package com.hotel.action;import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;import javax.servlet.http.HttpSession;import org.apache.struts2.ServletActionContext;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;import com.hotel.model.Book;
import com.hotel.model.Item;
import com.hotel.model.Item_cat;
import com.hotel.model.Room;
import com.hotel.model.Room_cat;
import com.hotel.model.User;
import com.hotel.model.UserItem;
import com.hotel.model.UserRoom;
import com.hotel.service.BookService;
import com.hotel.service.ItemCatService;
import com.hotel.service.ItemService;
import com.hotel.service.LogService;
import com.hotel.service.RoomCatService;
import com.hotel.service.RoomService;
import com.hotel.service.UserRoomService;
import com.hotel.service.UserService;
import com.hotel.service.UserItemService;
import com.hotel.utils.Pager;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;@Controller("bookAction")
@Scope("prototype")
public class BookAction extends ActionSupport implements ModelDriven<Book>{private Book book;private Room room;public Room getRoom() {return room;
}public void setRoom(Room room) {this.room = room;
}private int userId;private int bookId;private int roomId;private int itemId;public int getRoomId() {return roomId;
}public void setRoomId(int roomId) {this.roomId = roomId;
}public int getUserId() {return userId;}public void setUserId(int userId) {this.userId = userId;}public int getBookId() {return bookId;}public void setBookId(int bookId) {this.bookId = bookId;}public int getItemId() {return itemId;}public void setItemId(int itemId) {this.itemId = itemId;}@Overridepublic Book getModel() {if(book==null) book = new Book();return book;}@Autowiredprivate LogService  logService;@Autowiredprivate RoomService roomService;@Autowiredprivate RoomCatService  roomCatService;@Autowiredprivate BookService bookService;@Autowiredprivate UserService userService;@Autowiredprivate ItemService itemSerivce;@Autowiredprivate ItemCatService itemCatService;@Autowiredprivate UserItemService userItemService;@Autowiredprivate UserRoomService userRoomService;/*** 获取用户预订房间信息列表* @return*/public String bookList(){Pager<Book> pagers = bookService.listAll();ActionContext.getContext().put("pagers", pagers);return SUCCESS;}/*** 获取取消预定信息详情* @Description (TODO这里用一句话描述这个方法的作用)* @return*/public String updateBook(){Book book =bookService.bookDetail(bookId);ActionContext.getContext().put("book", book);return "success";}/*** 后台管理员取消预定* @Description (TODO这里用一句话描述这个方法的作用)* @return*/public String cancelBook(){Book book =bookService.bookDetail(bookId);//删除订单表bookService.delBook(bookId);//修改房间状态Room room=roomService.roomDetail(book.getRoom().getId());room.setIsLive(1);roomService.update(room);//修改房间类别数量Room_cat room_cat=roomCatService.load(room.getRoom_cat().getId());room_cat.setNum(room_cat.getNum()+1);roomCatService.update(room_cat);String content="取消预定";HttpSession session =ServletActionContext.getRequest().getSession();int userId = Integer.parseInt( session.getAttribute("userId").toString());//插入日志logService.addLog(content,userId);ActionContext.getContext().put("url", "/book_bookList.do");return "redirect";}/*** 获取用户已入住信息列表* @return*/public String liveList(){Pager<Book> pagers = bookService.listAll();ActionContext.getContext().put("pagers", pagers);return SUCCESS;}/*** 获取入住详情信息列表* @Description (TODO这里用一句话描述这个方法的作用)* @return*/public String liveRoom(){Book book =bookService.bookDetail(bookId);ActionContext.getContext().put("book", book);return "success";}/*** 后台管理员立即入住* @Description (TODO这里用一句话描述这个方法的作用)* @return*/public String live(){Book book =bookService.bookDetail(bookId);book.setStatus(2);//更新预定表bookService.updateBook(book);//修改房间状态Room room=roomService.roomDetail(book.getRoom().getId());room.setIsLive(3);roomService.update(room);String content="办理入住";HttpSession session =ServletActionContext.getRequest().getSession();int userId = Integer.parseInt( session.getAttribute("userId").toString());//插入日志logService.addLog(content,userId);ActionContext.getContext().put("url", "/book_bookList.do");return "redirect";}/*** 获取更换房间信息列表* @return*/public String changeRoomList(){Pager<Book> pagers = bookService.listAllLive();ActionContext.getContext().put("pagers", pagers);return SUCCESS;}/*** 获取更换房间信息详情* @return*/public String changeRoom(){Book book =bookService.bookDetail(bookId);ActionContext.getContext().put("book", book);return SUCCESS;}/*** 获取更换房间信息修改页面* @return*/public String roomChange(){Book book =bookService.bookDetail(bookId);List<Room_cat> roomCatList=roomCatService.list();ActionContext.getContext().put("roomCatList", roomCatList);ActionContext.getContext().put("book", book);return SUCCESS;}/*** 后台管理员更换房间* @Description (TODO这里用一句话描述这个方法的作用)* @return*/public String change(){Book book =bookService.bookDetail(bookId);book.setStatus(2);//更新预定表bookService.updateBook(book);//修改房间状态Room room=roomService.roomDetail(book.getRoom().getId());room.setIsLive(3);roomService.update(room);String content="办理入住";HttpSession session =ServletActionContext.getRequest().getSession();int userId = Integer.parseInt( session.getAttribute("userId").toString());//插入日志logService.addLog(content,userId);ActionContext.getContext().put("url", "/book_bookList.do");return "redirect";}/*** 前台预定房间* @return*/public String bookRoom(){HttpSession session =ServletActionContext.getRequest().getSession();int userId=0;if(session.getAttribute("userId")!=null){userId = Integer.parseInt( session.getAttribute("userId").toString());}else{return "login";}//更改房间状态变为预定Room room =roomService.load(roomId);room.setIsLive(2);roomService.update(room);//修改房间类别数量减一Room_cat room_cat=roomCatService.load(room.getRoom_cat().getId());room_cat.setNum(room_cat.getNum()-1);roomCatService.update(room_cat);//插入订单表Book book1=new Book();book1.setBookTime(new Date());SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");String reachTime=sdf.format(book.getReachTime());String leaveTime=sdf.format(book.getLeaveTime());Date rTime=new Date();Date lTime=new Date();try {rTime=sdf.parse(reachTime);lTime=sdf.parse(leaveTime);} catch (ParseException e) {// TODO Auto-generated catch blocke.printStackTrace();}    book1.setLeaveTime(lTime);book1.setReachTime(rTime);book1.setStatus(1);book1.setRoomNumber(1);User user=userService.load(userId);book1.setBookUser(user);book1.setRoom(room);bookService.add(book1);//插入房间和人关联的表UserRoom userRoom=new UserRoom();userRoom.setRoom(room);userRoom.setUser(user);userRoomService.add(userRoom);ActionContext.getContext().put("url", "/login_index.do");return "redirect";}/*** 前台购买商品* @return*/public String bookItem(){HttpSession session =ServletActionContext.getRequest().getSession();int userId=0;if(session.getAttribute("userId")!=null){userId = Integer.parseInt( session.getAttribute("userId").toString());}else{return "login";}Item item =itemSerivce.load(itemId);//修改商品类别数量减一Item_cat item_cat=itemCatService.load(item.getItem_cat().getCid());item_cat.setNum(item_cat.getNum()-1);itemCatService.update(item_cat);User user=userService.load(userId);//插入商品和人关联的表UserItem userItem =new UserItem();userItem.setItem(item);userItem.setUser(user);userItemService.add(userItem);ActionContext.getContext().put("url", "/login_index.do");return "redirect";}
}

ItemAction

package com.hotel.action;import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.lang.reflect.InvocationTargetException;
import java.util.List;import javax.servlet.http.HttpSession;import org.apache.struts2.ServletActionContext;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;import com.hotel.model.Item;
import com.hotel.model.Item_cat;
import com.hotel.model.Room;
import com.hotel.service.ItemCatService;
import com.hotel.service.ItemService;
import com.hotel.service.LogService;
import com.hotel.utils.Pager;
import com.hotel.utils.UUIDUtils;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;@Controller("itemAction")
@Scope("prototype")
public class ItemAction extends ActionSupport implements ModelDriven<Item>{private Item item;private int itemId;private int itemCatId;public int getItemCatId() {return itemCatId;}public void setItemCatId(int itemCatId) {this.itemCatId = itemCatId;}public int getItemId() {return itemId;}public void setItemId(int itemId) {this.itemId = itemId;}@Overridepublic Item getModel() {if(item==null) item = new Item();return item;}@Autowiredprivate ItemCatService itemCatService;@Autowiredprivate ItemService itemService;@Autowiredprivate LogService logService;//========================图片上传private File file;//提交过来的file的名字private String fileFileName;//提交过来的file的MIME类型private String fileContentType;public File getFile() {return file;}public void setFile(File file) {this.file = file;}public String getFileFileName() {return fileFileName;}public void setFileFileName(String fileFileName) {this.fileFileName = fileFileName;}public String getFileContentType() {return fileContentType;}public void setFileContentType(String fileContentType) {this.fileContentType = fileContentType;}//========================图片上传/*** 获取商品信息列表* @return* @throws InvocationTargetException * @throws IllegalAccessException */public String itemList() {Pager<Item> pagers = itemService.listAll();ActionContext.getContext().put("pagers", pagers);return SUCCESS;}/*** 初始化商品新增页面* @return*/public String addItem(){List<Item_cat> itemCatList=itemCatService.list();ActionContext.getContext().put("itemCatList", itemCatList);return SUCCESS;}/*** 新增商品* @return*/public String itemAdd()throws Exception{//图片上传String root  = "D:/my/upload";InputStream is = new FileInputStream(file);fileFileName = UUIDUtils.create()+fileFileName;OutputStream os = new FileOutputStream(new File(root, fileFileName));System.out.println("fileFileName: " + fileFileName);System.out.println("file: " + file.getName());System.out.println("file: " + file.getPath());byte[] buffer = new byte[500];int length = 0;while(-1 != (length = is.read(buffer, 0, buffer.length))){os.write(buffer);}os.close();is.close();item.setImage("\\upload\\"+fileFileName);itemService.add(item);Item_cat item_cat=itemCatService.load(item.getItem_cat().getCid());item_cat.setNum(item_cat.getNum()+1);itemCatService.update(item_cat);String content="新增商品";HttpSession session =ServletActionContext.getRequest().getSession();int userId = Integer.parseInt( session.getAttribute("userId").toString());//插入日志logService.addLog(content,userId);ActionContext.getContext().put("url", "/item_itemList.do");return "redirect";}/*** 删除商品* @return*/public String delItem(){Item item =itemService.itemDetail(itemId);itemService.delItem(itemId);Item_cat  item_cat=itemCatService.load(item.getItem_cat().getCid());item_cat.setNum(item_cat.getNum()-1);itemCatService.update(item_cat);String content="删除商品";HttpSession session =ServletActionContext.getRequest().getSession();int userId = Integer.parseInt( session.getAttribute("userId").toString());//插入日志logService.addLog(content,userId);ActionContext.getContext().put("url", "/item_itemList.do");return "redirect";}/*** 初始化修改页面* @Description (TODO这里用一句话描述这个方法的作用)* @return*/public String updateItem(){Item  item =itemService.itemDetail(itemId);List<Item_cat> itemCatList=itemCatService.list();ActionContext.getContext().put("itemCatList", itemCatList);ActionContext.getContext().put("item", item);return "success";}/*** 修改商品* @return*/public String itemUpdate()throws Exception{if(file!=null){//图片上传String root  = "D:/my/upload";InputStream is = new FileInputStream(file);fileFileName = UUIDUtils.create()+fileFileName;OutputStream os = new FileOutputStream(new File(root, fileFileName));System.out.println("fileFileName: " + fileFileName);System.out.println("file: " + file.getName());System.out.println("file: " + file.getPath());byte[] buffer = new byte[500];int length = 0;while(-1 != (length = is.read(buffer, 0, buffer.length))){os.write(buffer);}os.close();is.close();item.setImage("\\upload\\"+fileFileName);}else{Item  i =itemService.itemDetail(item.getId());item.setImage(i.getImage());}itemService.update(item);String content="修改商品";HttpSession session =ServletActionContext.getRequest().getSession();int userId = Integer.parseInt( session.getAttribute("userId").toString());//插入日志logService.addLog(content,userId);ActionContext.getContext().put("url", "/item_itemList.do");return "redirect";}//前端页面点击商品的页面public String itemIndex(){Pager<Item> pagers = itemService.queryItems(itemCatId);ActionContext.getContext().put("pagers", pagers);return SUCCESS;}
}

如果也想学习本系统,下面领取。关注并回复:135ssh

135ssh酒店管理系统前台+后台两套源码相关推荐

  1. krita源码提供了Tarball 和KDE Repository两套源码的区别

    krita系列文章目录 文章目录 krita系列文章目录 前言 一.Tarball 和KDE Repository区别是什么? 二.使用步骤 前言 krita官方主页 krita官方下载界面 krit ...

  2. PHP表白墙(前台+后台+mysql)源码下载

    PHP表白墙源码(前端+后台) 前端页面以及代码展示 一.表白信息展示 二.添加表白信息 三.删除表白信息 四.修改表白信息 五.表白信息模糊查询 后台页面以及代码展示 一.注册登录 二.表白信息列表 ...

  3. html后台管理模板(源码)

    文章目录 1.后台管理模板风格1 1.1 界面效果展示 1.1.1 登录界面 1.1.2 主界面 1.1.3 左侧菜单隐藏 1.1.4 右侧功能菜单 1.1.5 顶部隐藏功能 1.1.6 进度条 1. ...

  4. SpringBoot+Mysql+小程序实现的美团外卖美食小程序系统附带前台和后台代码整套源码包运行(问题解答)

            博主介绍:✌在职Java研发工程师.专注于程序设计.源码分享.技术交流.专注于Java技术领域和毕业设计✌ 项目名称 SpringBoot+Mysql+小程序实现的美团外卖美食小程序系 ...

  5. 【JAVA】书店管理系统(附带前后端源码及资源)

    [JAVA_Web]书店管理系统(附带前后端源码及资源) 一.项目的目的和意义 1.1目的 在"互联网+"的大趋势下,线上销售以其简单.便捷.高效的特点受到人们的青睐.网上书店不受 ...

  6. 计算机毕业设计Python+uniapp校友会管理系统小程序(小程序+源码+LW)

    计算机毕业设计Python+uniapp校友会管理系统小程序(小程序+源码+LW) 该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程 项目运行 环境配置: Pychram社区版+ pyt ...

  7. java web学习项目20套源码完整版

    java web学习项目20套源码完整版 自己收集的各行各业的都有,这一套源码吃遍所有作业项目! 1.BBS论坛系统(jsp+sql) 2.ERP管理系统(jsp+servlet) 3.OA办公自动化 ...

  8. 2014年最新810多套源码2.46GB免费一次性打包下载

    http://www.eoeandroid.com/thread-497046-1-1.html 之前发过一个帖子,但是那个帖子有点问题我就重新发一个吧,下面的源码是我从今年3月份开始不断整理源码区和 ...

  9. 2014年最新720多套源码2.0GB免费一次性打包下载

    安卓例子源码,目前总共有720套左右,根据实现的功能被我分成了100多个类,总共2G多,还在不断更新.初学者可以快速方便的找到自己想要的例子,大神也可以看一下别人的方法实现.虽然的例子都是我一个人辛辛 ...

最新文章

  1. 机械爪的带有压力反馈的控制实验
  2. Hadoop hdfs文件块信息获取/文件重命名/修改文件的副本数量代码示例
  3. 汉字我在计算机中的处理过程,详细说明汉字在计算机中的处理流程以及汉字编码在处理过程中的转化关系...
  4. Qt笔记-windows下拷贝文件夹中所有文件
  5. STM32使用PWM输入模式测试频率和占空比
  6. 一个简单的微服务项目带你上手spring cloud 全家桶
  7. 网易公开课“Programming Paradigms” 笔记
  8. 2015计算机基础知识,计算机基础知识题库【2015版】
  9. python爬虫利用线程池下载视频
  10. linux文件目录基本操作实验结论,实验 Linux文件和目录操作
  11. 总算有人讲明白了什么是特性阻抗什么是阻抗匹配
  12. 复选框弹出确认框,点取消,仍会打钩或者把钩消掉
  13. MYSQL查询选修三门以上课程_SQL高级查询的练习题
  14. 齐鲁工业大学计算机应用技术研究生专业,研究生培养
  15. C/OSⅡ内核的车载影音系统设计
  16. 关于QQ2009聊天消息获取原理说明 .
  17. 又一AI神器!3行代码5秒抠图,根本无需PS
  18. allpairspy一款高效的正交实验法生成用例工具
  19. TA 文件系统错误导致设备启动失败处理
  20. (附源码)计算机毕业设计SSM智慧门诊综合管理系统

热门文章

  1. 进程等待(原理+接口调用)及进程状态
  2. 笔记本副盘掉盘的一种解决办法
  3. 设计原则之单一职责原则详解
  4. “配置系统未能初始化” 解决方法
  5. redis scan 命令底层原理(为什么会重复扫描?)
  6. sourceTree设置OpenSSH快捷连接阿里云code仓库
  7. Android实现计步器功能,适配Android10,隔天步数清零,查看历史运动纪录_附源码
  8. Android Studio Genymotion模拟器
  9. c语言比特和字节,详解 比特(位,bit),字节(Byte),字符的区别 *(转)
  10. 分享给大家一些优秀的网站简历模板