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

作者主页:夜未央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;
	}

	@Override
	public Book getModel() {
		if(book==null) book = new Book();
		return book;
	}
	@Autowired
    private LogService  logService;
	
	@Autowired
	private RoomService roomService;
	
	@Autowired
	private RoomCatService  roomCatService;
	
	@Autowired
	private BookService bookService;
	
	@Autowired
	private UserService userService;
	
	@Autowired
	private ItemService itemSerivce;
	
	@Autowired
	private ItemCatService itemCatService;
	
	@Autowired
	private UserItemService userItemService;
	
	@Autowired
	private 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 block
  				e.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;
    }
    @Override
     public Item getModel() {
         if(item==null) item = new Item();
         return item;
     }
     
     @Autowired
     private ItemCatService itemCatService;
     
     @Autowired
     private ItemService itemService;
     
     @Autowired
     private 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 

酒店管理系统使用说明书 主要功能 本系统中包含如下6大功能模块: q 前台服务:该模块主要包括开台点菜、维护菜品、签单、结账等功能,其中维护菜品功能包括添加和取消菜品,能够取消菜品的前提条件是尚未签单,即处于开单状态,结账时则要求所有商品都要签单,否则不允许结账。 q 后台管理:该模块主要包括台号管理、菜系管理和菜品管理功能,其中菜系用来对菜品进行分类。 q 销售统计:该模块用来分段统计营业额,可以按日、月和年进行统计,其中日统计是按消费单和销售的商品统计销售额,月统计是按日期和每日的销售额统计销售额,年统计是按日期和月份统计销售额。 q 系统安全:该模块主要包括交接班、锁定系统和修改密码功能,其中交接班功能在操作换岗时使用,锁定系统在操作临时离开时使用。 q 人管理:该模块主要包括档案管理、管理管理和操作权限管理功能,其中管理管理功能用来管理系统的操作,权限管理功能用来管理系统操作具有的操作权限。 q 初始化系统:该功能用来对系统进行初始化,初始化后系统数据将全部被删除。 操作注意事项 用户在使用《酒店管理系统》之前,应注意以下事项: (1)管理用户名和密码为:mr、mrsoft。 (2)当鼠标经过主界面右下角时,会弹出菜单,在这里可以对本系统的信息进行管理。 业务流程 要想运行本系统,请按照以下流程操作: (1)在“人管理”中添加操作及其档案信息。 (2)在“系统维护”中添加台号、菜系及菜品信息。 (3)在“台号”下拉列表中选择台号、在商品文本框中输入商品助记码或编号及商品数量,然后单击“开台”按钮。可添加多个商品。 (4)顾完单完菜后,单击“签单”按钮,表示确认该订单,此时可以执行结账操作,否则不可进行结账。 如果操作临时离开,可单击“锁定系统”按钮,输入登录密码可解锁。 (5)在“销售统计”中可对日销售、月销售及年销售额进行统计。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夜未央5788

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值