JavaWeb酒店管理系统

  酒店管理系统   

一、项目介绍

1、项目用到的技术栈

  • 开发工具:idea
  • 语言:java、js、html+ajax
  • 数据库:MySQL
  • 服务器:Tomcat
  • 框架:mybatis、jQuery

2、项目实现功能

  • 管理员和用户登录和退出功能以及用户注册功能(根据不同的账号密码进入不同的页面,注册页面以及登录都有校验)
  • 用户可以预定房间,可以查看预定完房间的基本信息
  • 管理员和用户可以查看个人信息,并且可以修改个人信息(修改时支持信息回显)
  • 管理员和用户可以通过模糊查询和多条件查询
  • 管理员可以对房间进行增删改查(增删房型,增删改查房间)
  • 所有删除均使用逻辑删除(修改字段即可)

二、项目展示

1、用户和管理员登录界面以及用户注册界面

(1)用户登录

(2)管理员登录界面

 (3)用户注册界面

 2、用户可实现功能

(1)用户界面首页

 (2)用户预定房间

 (3)用户个人订单(房间预定时间过期显示已超时)

(4)用户个人信息以及修改个人信息(修改时信息回显)

 

 3、管理员可实现功能   

(1)管理员界面首页           

(2)管理员增加新房型

 (3)管理员查看顾客信息   

 (4)管理员查看顾客预定房间信息

(5)管理员个人信息及修改个人信息(修改时信息回显)

                                                                                                                   三、项目代码 

(1)项目基本结构

(2)数据库表

(3)Servlet层中loginServlet代码                                                                                 

package com.servlet;

import com.alibaba.fastjson.JSON;
import com.bean.Admin;
import com.bean.Customer;
import com.service.AdminService;
import com.service.CustomerService;
import com.util.CheckCodeUtil;

import javax.servlet.ServletOutputStream;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.nio.charset.StandardCharsets;
import java.util.Enumeration;
import java.util.List;

@WebServlet("/login/*")
public class LoginServlet extends BaseServlet {

    private CustomerService serviceCustomer = new CustomerService();
    private AdminService serviceAdmin = new AdminService();

    /**
     * 顾客/用户登录
     *
     * @param req
     * @param res
     * @throws Exception
     */
    public void logCustomer(HttpServletRequest req, HttpServletResponse res) throws Exception {

        // 解决 get 中文乱码问题
        String username = req.getParameter("username");
        username = new String(username.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8);
        // 获取用户名和密码
        String password = req.getParameter("password");
        // 调用 service 注册
        Customer customer = serviceCustomer.login(username, password);
        if (customer != null) {
            // 将登录成功后的user对象存储到session中
            HttpSession session = req.getSession();
            session.setAttribute("customer", customer);
            res.sendRedirect("/room/customerRoomOperate");
        } else {
            req.setAttribute("login_msg", "用户名或密码错误");
            req.getRequestDispatcher("/userLogin.jsp").forward(req, res);
        }


    }

    /**
     * 管理员登录
     *
     * @param req
     * @param res
     * @throws Exception
     */

    public void logAdmin(HttpServletRequest req, HttpServletResponse res) throws Exception {
        // 获取用户名和密码
        String username = req.getParameter("username");
        String password = req.getParameter("password");
        // 调用 service 注册
        Admin admin = serviceAdmin.login(username, password);

        if (admin != null) {
            HttpSession session = req.getSession();
            session.setAttribute("admin", admin);
            res.sendRedirect("/room/adminRoomOperate");
        } else {
            req.setAttribute("login_msg", "用户名或密码错误");
            req.getRequestDispatcher("/adminLogin.jsp").forward(req, res);
        }
    }

    /**
     * 顾客/用户注册
     *
     * @param req
     * @param res
     * @throws Exception
     */

    public void registerCustomer(HttpServletRequest req, HttpServletResponse res) throws Exception {
        // 解决乱码问题: POST
        req.setCharacterEncoding("UTF-8"); // 设置字符输入流的编码
        // 解决乱码问题: GET
        // String username = req.getParameter("username");
        // new String(username.getBytes(StandardCharsets.ISO_8859_1),StandardCharsets.UTF_8);

        // 获取用户名、密码、性别、电话号、身份证号
        String username = req.getParameter("username");
        String password = req.getParameter("password");
        String gender = req.getParameter("gender");
        String telephone = req.getParameter("telephone");
        String identity = req.getParameter("identity");

        // 调用 service 注册
        Customer customer = new Customer();
        customer.setUsername(username);
        customer.setPassword(password);
        customer.setGender(gender);
        customer.setTelephone(telephone);
        customer.setIdentity(identity);

        // 获取用户输入的验证码
        String checkCode = req.getParameter("checkCode");

        // 获取程序生成的验证码,从 Session 中获取
        HttpSession session = req.getSession();
        String checkCodeGen = (String) session.getAttribute("checkCodeGen");

        // 比对客户输入的验证码和程序生成的验证码
        if (!checkCodeGen.equalsIgnoreCase(checkCode)) { // 不相等时,不允许注册,直接 return ,如果相等,向下执行、
            // 如果比对不成功,返回到注册页面
            req.setAttribute("register_msg", "验证码错误");
            req.getRequestDispatcher("/register.jsp").forward(req, res);
            // 不允许注册
            return;
        }
        boolean flag = serviceCustomer.register(customer);

        //  判断注册成功与否
        if (flag && username != "" && password != "" && telephone != "" && identity != "" && gender != "") {
            // 注册成功,跳转登录页面
            req.setAttribute("register_msg", "注册成功,请登录");
            req.getRequestDispatcher("/userLogin.jsp").forward(req, res);
        } else {
            // 注册失败,跳转注册页面
            req.setAttribute("register_msg", "用户名已存在或者信息没有全部填写");
            req.getRequestDispatcher("/register.jsp").forward(req, res);
        }
    }

    /**
     * 顾客/用户注册时生成验证码
     *
     * @param req
     * @param res
     * @throws Exception
     */

    public void CheckCode(HttpServletRequest req, HttpServletResponse res) throws Exception {

        // 生成验证码
        ServletOutputStream os = res.getOutputStream(); // res 的字节输出流
        String checkCode = CheckCodeUtil.outputVerifyImage(100, 50, os, 4);

        // 存入 Session 中
        HttpSession session = req.getSession();
        session.setAttribute("checkCodeGen", checkCode);


    }


    /**
     * 查询顾客的个人信息
     *
     * @param req
     * @param res
     * @throws Exception
     */
    public void customerInformation(HttpServletRequest req, HttpServletResponse res) throws Exception {
        int id = Integer.parseInt(req.getParameter("id"));
        Customer customer = serviceCustomer.selectAll(id);
        res.setContentType("text/json;charset=utf-8");
        String jsonString = JSON.toJSONString(customer);
        res.getWriter().write(jsonString);
    }

    /**
     * 查询管理员的个人信息
     *
     * @param req
     * @param res
     * @throws Exception
     */
    public void adminInformation(HttpServletRequest req, HttpServletResponse res) throws Exception {
        int id = Integer.parseInt(req.getParameter("id"));
        Admin admin = serviceAdmin.selectAll(id);
        res.setContentType("text/json;charset=utf-8");
        String jsonString = JSON.toJSONString(admin);
        res.getWriter().write(jsonString);
    }



    /**
     * 修改顾客个人信息
     *
     * @param req
     * @param res
     * @throws Exception
     */
    public void customerRevise(HttpServletRequest req, HttpServletResponse res) throws Exception {

        // 解决乱码问题: GET
        String gender = req.getParameter("gender");
        gender = new String(gender.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8);

        String username = req.getParameter("username");
        username = new String(username.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8);
        String password = req.getParameter("password");
        String telephone = req.getParameter("telephone");
        String identity = req.getParameter("identity");
        int Id = Integer.parseInt(req.getParameter("id"));

        serviceCustomer.revise(username, password, telephone, identity, gender, Id);

        res.setContentType("text/json;charset=utf-8");
        res.getWriter().write("修改成功~");
        res.sendRedirect("http://localhost:8080/userLogin.jsp");
    }


    /**
     * 修改顾客个人信息
     * @param req
     * @param res
     * @throws Exception
     */
    public void adminRevise(HttpServletRequest req, HttpServletResponse res) throws Exception {

        // 解决乱码问题: GET
        String username = req.getParameter("username");
        username = new String(username.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8);
        String password = req.getParameter("password");
        int Id = Integer.parseInt(req.getParameter("id"));

        serviceAdmin.revise(username,password,Id);

        res.setContentType("text/json;charset=utf-8");
        res.getWriter().write("修改成功~");
        res.sendRedirect("http://localhost:8080/adminLogin.jsp");
    }


    /**
     * 管理员查询所有顾客信息
     * @param req
     * @param res
     * @throws Exception
     */
    public void selectAllCustomer(HttpServletRequest req, HttpServletResponse res) throws Exception {
        List<Customer> customers = serviceCustomer.selectAllCustomer();
        res.setContentType("text/json;charset=utf-8");
        String jsonString = JSON.toJSONString(customers);
        res.getWriter().write(jsonString);
    }


    /**
     * 逻辑删除顾客全部信息
     * @param req
     * @param res
     * @throws Exception
     */
    public void deleteCustomerInformation(HttpServletRequest req, HttpServletResponse res) throws Exception{
        int id = Integer.parseInt(req.getParameter("id"));
        serviceCustomer.deleteCustomerInformation(id);
        res.setContentType("text/json;charset=utf-8");
        res.getWriter().write("删除成功~");
    }


    /**
     * 顾客退出登录
     * @param req
     * @param res
     * @throws Exception
     */
    public void customerLogOut(HttpServletRequest req, HttpServletResponse res) throws Exception{
//        System.out.println(req.getSession().getAttribute("customer").toString());
        req.getSession().removeAttribute("customer");
        res.sendRedirect("/userLogin.jsp");
    }


    /**
     * 管理员退出登录
     * @param req
     * @param res
     * @throws Exception
     */
    public void adminLogOut(HttpServletRequest req, HttpServletResponse res) throws Exception{
//        System.out.println(req.getSession().getAttribute("admin").toString());
        req.getSession().removeAttribute("admin");
        res.sendRedirect("/adminLogin.jsp");
    }



}

下面附上源码,有需要的小伙伴可以下载

链接: https://pan.baidu.com/s/18Nd_HU4GUY4_kito_Mdf7Q?pwd=dzma

提取码: dzma 

也可以直接去我 GitHub 上面进行下载

https://github.com/Memory159/hotel

  • 66
    点赞
  • 488
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 58
    评论
酒店管理系统使用说明书 主要功能 本系统中包含如下6大功能模块: q 前台服务:该模块主要包括开台点菜、维护菜品、签单、结账等功能,其中维护菜品功能包括添加和取消菜品,能够取消菜品的前提条件是尚未签单,即处于开单状态,结账时则要求所有商品都要签单,否则不允许结账。 q 后台管理:该模块主要包括台号管理、菜系管理和菜品管理功能,其中菜系用来对菜品进行分类。 q 销售统计:该模块用来分段统计营业额,可以按日、月和年进行统计,其中日统计是按消费单和销售的商品统计销售额,月统计是按日期和每日的销售额统计销售额,年统计是按日期和月份统计销售额。 q 系统安全:该模块主要包括交接班、锁定系统和修改密码功能,其中交接班功能在操作员换岗时使用,锁定系统在操作员临时离开时使用。 q 人员管理:该模块主要包括档案管理、管理员管理和操作权限管理功能,其中管理员管理功能用来管理系统的操作员,权限管理功能用来管理系统操作员具有的操作权限。 q 初始化系统:该功能用来对系统进行初始化,初始化后系统数据将全部被删除。 操作注意事项 用户在使用《酒店管理系统》之前,应注意以下事项: (1)管理员用户名和密码为:mr、mrsoft。 (2)当鼠标经过主界面右下角时,会弹出菜单,在这里可以对本系统的信息进行管理。 业务流程 要想运行本系统,请按照以下流程操作: (1)在“人员管理”中添加操作员及其档案信息。 (2)在“系统维护”中添加台号、菜系及菜品信息。 (3)在“台号”下拉列表中选择台号、在商品文本框中输入商品助记码或编号及商品数量,然后单击“开台”按钮。可添加多个商品。 (4)顾完单完菜后,单击“签单”按钮,表示确认该订单,此时可以执行结账操作,否则不可进行结账。 如果操作临时离开,可单击“锁定系统”按钮,输入登录密码可解锁。 (5)在“销售统计”中可对日销售、月销售及年销售额进行统计。
酒店管理系统分为前台和后台两个部分,其中后台供管理员管理系统之用,包括客房类型设置模块、客房设置模块以及操作员设置三个子模块,具体的功能模块如下。 客房类型设置模块:该模块用来管理酒店的所有客房类型,包括新增客房类型、编辑已有客房类型、删除客房类型等功能。 客房设置模块:该模块用来管理酒店的所有客房信息,包括新增客房、编辑已有客房、删除客房等功能。 操作员设置模块:该模块用来管理酒店的操作员信息,包括新增操作员、编辑已有操作员信息、删除操作信息等功能。 系统前台供酒店所有工作人员使用,包括入住登记模块、结账模块、预定模块、客户管理模块以及业务统计五个模块。具体的功能模块如下。 入住登记模块:该模块用来登记客户的入住信息,其中入住信息包括登记信息、客人信息以及费用信息三部分。 结账模块:该模块用来处理客户的退房信息,只需要知道客户所住的房间号码,就能进行退房结账。 预定模块:该模块用来处理客户的预定信息,除了可以新增预定信息外,还可以对已有的预定信息进行管理。 客户管理模块:该模块用来管理客户的登记信息,包括新增客户信息、编译已有客户信息、删除客户信息等功能。 业务统计模块:该模块用来统计酒店的客房出租率,并且已图形报表的形式来显示出租率信息。 本系统的开发工具具体如下。 系统开发平台:MyEclipse 6.5。 数据库管理系统软件:MySQL 5.0。 java开发包:JDK 5.0以上。 Web服务器:Tomcat 6.0。 本系统采用MVC架构模式开发,具体技术如下。 AJAX框架:使用ExtJS技术开发 显示层:使用JSP技术开发 数据访问层:使用DAO模式开发 持久层:使用Hibernate框架开发 首页访问地址 :http://localhost:8080/JavaPrj_9/首页配置 页面 修改 打开web.xml 修改 即可 /WEB-INF/pages/userLogin.jsp 复制代码 数据库配置 为hotel-hibernate.xml 文件 测试了将近2个小时 系统跑的还不错 一下小细节 bug 大家可以自己去调整下
评论 58
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

M_emory_

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

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

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

打赏作者

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

抵扣说明:

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

余额充值