基于ssm的酒店预定管理系统9(含源码+sql+视频导入教程+文档+PPT)

本文介绍了基于SSM架构的酒店预定管理系统,包括管理员和用户角色功能,使用JSP前端,MySQL数据库,以及后端接口详细代码示例。系统解决了传统酒店管理的问题,提升了运营效率。
摘要由CSDN通过智能技术生成

👉文末查看项目功能视频演示+获取源码+sql脚本+视频导入教程视频

1 、功能描述

  
基于ssm的酒店预定管理系统9有两种角色

管理员:客房管理、用户管理、预定管理、开房管理、退房结账等

用户:登录注册、订房退房、评论等

项目架构

1.1 背景描述

  酒店管理系统是为了解决传统酒店管理方式中存在的信息管理不便和效率低下的问题而设计的一种软件系统。传统的酒店管理方式往往依赖手工记录和人工处理,容易出现客房预订混乱、客户信息管理不精准等问题,同时,酒店的运营也相对较为困难。而酒店管理系统的出现能够有效地解决这些问题。该系统提供了客房管理、预订管理、客户管理、订单管理等功能,可以实时记录和管理客房的预订情况,方便酒店工作人员进行客房安排和客户查询。同时,系统还能够帮助酒店进行客房资源管理和业务统计,提高了酒店的运营效率。采用酒店管理系统可以提供更好的客房预订体验,提高酒店的管理水平,为客户提供更便捷、高效的入住服务。

2、项目技术

后端框架:SSM(Spring、SpringMVC、Mybatis)

前端技术:jsp

2.1 SSM

  SSM(Spring+SpringMVC+MyBatis)是目前比较主流的Java EE企业级框架,适用于搭建各种大型的企业级应用系统。其中,Spring就像是整个项目中的粘合剂,负责装配bean并管理其生命周期,实现控制反转(IoC)的功能。SpringMVC负责拦截用户请求,通过DispatcherServlet将请求匹配到相应的Controller并执行。而MyBatis则是对JDBC的封装,让数据库底层操作变得透明,通过配置文件关联到各实体类的Mapper文件,实现了SQL语句映射。

2.2 mysql

  MySQL是一款Relational Database Management System,直译过来的意思就是关系型数据库管理系统,MySQL有着它独特的特点,这些特点使他成为目前最流行的RDBMS之一,MySQL想比与其他数据库如ORACLE、DB2等,它属于一款体积小、速度快的数据库,重点是它符合本次毕业设计的真实租赁环境,拥有成本低,开发源码这些特点,这也是选择它的主要原因。

3、开发环境

  • JAVA版本:JDK1.8(最佳)
  • IDE类型:IDEA、Eclipse都可运行
  • 数据库类型:MySql(5.7、8.x版本都可)
  • tomcat版本:Tomcat 7-10版本均可
  • maven版本:无限制
  • 硬件环境:Windows

4、功能截图+视频演示+文档目录

4.1 登录

登录

4.2 管理员模块

管理员-用户管理

管理员-退房结账

管理员-客房预定管理

管理员-客房管理

管理员-房屋类型管理

4.3 用户模块

用户-预定客房管理

用户-退房结账

4.4 前端

前端-客房列表

前端-客房详情

前端-系统公告

用户-个人中心

4.5文档目录

文档目录

5 、核心代码实现

5.1 配置代码

validationQuery=SELECT 1

jdbc_url=jdbc:mysql://127.0.0.1:3306/jspmi59uz?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&allowPublicKeyRetrieval=true
jdbc_username=root
jdbc_password=root

#jdbc_url=jdbc:sqlserver://127.0.0.1:1433;DatabaseName=jspmi59uz
#jdbc_username=sa
#jdbc_password=123456


5.2 其它核心代码

package com.controller;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Map;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;

import com.utils.ValidatorUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.annotation.IgnoreAuth;

import com.entity.JiudiankefangEntity;
import com.entity.view.JiudiankefangView;

import com.service.JiudiankefangService;
import com.service.TokenService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.CommonUtil;
import java.io.IOException;
import com.service.StoreupService;
import com.entity.StoreupEntity;

/**
 * 酒店客房
 * 后端接口
 * @author 
 * @email 
 * @date 2022-04-25 14:54:56
 */
@RestController
@RequestMapping("/jiudiankefang")
public class JiudiankefangController {
    @Autowired
    private JiudiankefangService jiudiankefangService;


    @Autowired
    private StoreupService storeupService;

    


    /**
     * 后端列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,JiudiankefangEntity jiudiankefang, 
		HttpServletRequest request){

        EntityWrapper<JiudiankefangEntity> ew = new EntityWrapper<JiudiankefangEntity>();
    	PageUtils page = jiudiankefangService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, jiudiankefang), params), params));
		request.setAttribute("data", page);
        return R.ok().put("data", page);
    }
    
    /**
     * 前端列表
     */
	@IgnoreAuth
    @RequestMapping("/list")
    public R list(@RequestParam Map<String, Object> params,JiudiankefangEntity jiudiankefang, 
		HttpServletRequest request){
        EntityWrapper<JiudiankefangEntity> ew = new EntityWrapper<JiudiankefangEntity>();
    	PageUtils page = jiudiankefangService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, jiudiankefang), params), params));
		request.setAttribute("data", page);
        return R.ok().put("data", page);
    }

	/**
     * 列表
     */
    @RequestMapping("/lists")
    public R list( JiudiankefangEntity jiudiankefang){
       	EntityWrapper<JiudiankefangEntity> ew = new EntityWrapper<JiudiankefangEntity>();
      	ew.allEq(MPUtil.allEQMapPre( jiudiankefang, "jiudiankefang")); 
        return R.ok().put("data", jiudiankefangService.selectListView(ew));
    }

	 /**
     * 查询
     */
    @RequestMapping("/query")
    public R query(JiudiankefangEntity jiudiankefang){
        EntityWrapper< JiudiankefangEntity> ew = new EntityWrapper< JiudiankefangEntity>();
 		ew.allEq(MPUtil.allEQMapPre( jiudiankefang, "jiudiankefang")); 
		JiudiankefangView jiudiankefangView =  jiudiankefangService.selectView(ew);
		return R.ok("查询酒店客房成功").put("data", jiudiankefangView);
    }
	
    /**
     * 后端详情
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        JiudiankefangEntity jiudiankefang = jiudiankefangService.selectById(id);
        return R.ok().put("data", jiudiankefang);
    }

    /**
     * 前端详情
     */
	@IgnoreAuth
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") Long id){
        JiudiankefangEntity jiudiankefang = jiudiankefangService.selectById(id);
        return R.ok().put("data", jiudiankefang);
    }
    



    /**
     * 后端保存
     */
    @RequestMapping("/save")
    public R save(@RequestBody JiudiankefangEntity jiudiankefang, HttpServletRequest request){
    	jiudiankefang.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(jiudiankefang);

        jiudiankefangService.insert(jiudiankefang);
        return R.ok();
    }
    
    /**
     * 前端保存
     */
    @RequestMapping("/add")
    public R add(@RequestBody JiudiankefangEntity jiudiankefang, HttpServletRequest request){
    	jiudiankefang.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(jiudiankefang);

        jiudiankefangService.insert(jiudiankefang);
        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    @Transactional
    public R update(@RequestBody JiudiankefangEntity jiudiankefang, HttpServletRequest request){
        //ValidatorUtils.validateEntity(jiudiankefang);
        jiudiankefangService.updateById(jiudiankefang);//全部更新
        return R.ok();
    }
    

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        jiudiankefangService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
    
    /**
     * 提醒接口
     */
	@RequestMapping("/remind/{columnName}/{type}")
	public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request, 
						 @PathVariable("type") String type,@RequestParam Map<String, Object> map) {
		map.put("column", columnName);
		map.put("type", type);
		
		if(type.equals("2")) {
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
			Calendar c = Calendar.getInstance();
			Date remindStartDate = null;
			Date remindEndDate = null;
			if(map.get("remindstart")!=null) {
				Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
				c.setTime(new Date()); 
				c.add(Calendar.DAY_OF_MONTH,remindStart);
				remindStartDate = c.getTime();
				map.put("remindstart", sdf.format(remindStartDate));
			}
			if(map.get("remindend")!=null) {
				Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
				c.setTime(new Date());
				c.add(Calendar.DAY_OF_MONTH,remindEnd);
				remindEndDate = c.getTime();
				map.put("remindend", sdf.format(remindEndDate));
			}
		}
		
		Wrapper<JiudiankefangEntity> wrapper = new EntityWrapper<JiudiankefangEntity>();
		if(map.get("remindstart")!=null) {
			wrapper.ge(columnName, map.get("remindstart"));
		}
		if(map.get("remindend")!=null) {
			wrapper.le(columnName, map.get("remindend"));
		}


		int count = jiudiankefangService.selectCount(wrapper);
		return R.ok().put("count", count);
	}
	
	





    /**
     * (按值统计)
     */
    @RequestMapping("/value/{xColumnName}/{yColumnName}")
    public R value(@PathVariable("yColumnName") String yColumnName, @PathVariable("xColumnName") String xColumnName,HttpServletRequest request) {
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("xColumn", xColumnName);
        params.put("yColumn", yColumnName);
        EntityWrapper<JiudiankefangEntity> ew = new EntityWrapper<JiudiankefangEntity>();
        List<Map<String, Object>> result = jiudiankefangService.selectValue(params, ew);
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        for(Map<String, Object> m : result) {
            for(String k : m.keySet()) {
                if(m.get(k) instanceof Date) {
                    m.put(k, sdf.format((Date)m.get(k)));
                }
            }
        }
        return R.ok().put("data", result);
    }

    /**
     * (按值统计)时间统计类型
     */
    @RequestMapping("/value/{xColumnName}/{yColumnName}/{timeStatType}")
    public R valueDay(@PathVariable("yColumnName") String yColumnName, @PathVariable("xColumnName") String xColumnName, @PathVariable("timeStatType") String timeStatType,HttpServletRequest request) {
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("xColumn", xColumnName);
        params.put("yColumn", yColumnName);
        params.put("timeStatType", timeStatType);
        EntityWrapper<JiudiankefangEntity> ew = new EntityWrapper<JiudiankefangEntity>();
        List<Map<String, Object>> result = jiudiankefangService.selectTimeStatValue(params, ew);
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        for(Map<String, Object> m : result) {
            for(String k : m.keySet()) {
                if(m.get(k) instanceof Date) {
                    m.put(k, sdf.format((Date)m.get(k)));
                }
            }
        }
        return R.ok().put("data", result);
    }
    
    /**
     * 分组统计
     */
    @RequestMapping("/group/{columnName}")
    public R group(@PathVariable("columnName") String columnName,HttpServletRequest request) {
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("column", columnName);
        EntityWrapper<JiudiankefangEntity> ew = new EntityWrapper<JiudiankefangEntity>();
        List<Map<String, Object>> result = jiudiankefangService.selectGroup(params, ew);
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        for(Map<String, Object> m : result) {
            for(String k : m.keySet()) {
                if(m.get(k) instanceof Date) {
                    m.put(k, sdf.format((Date)m.get(k)));
                }
            }
        }
        return R.ok().put("data", result);
    }
}

6 、获取方式

👇 👇🏻下方点开,扫一扫,关注后,后台回复关键词:酒店👇🏻

  • 14
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
基于ssm+jsp的物流管理系统设计与实现 Java;SSM;JSP;SqlServer 结合计算机系统的结构、概念、模型、原理、方法,在计算机各种优势的情况下,采用目前jsp中最流行SSM框架和myeclipse编辑器、sqlserver数据库设计并实现的 。本物流管理系统管理系统主要包括系统用户管理模块、司机信息模块、车辆信息管理、货物库存管理、货物入库管理、登录模块、和退出模块等多个模块。它帮助物流管理系统管理实现了信息化、网络化,通过测试,实现了系统设计目标,相比传统的管理模式,本系统合理的利用了物流管理系统管理数据资源,有效的减少了物流管理系统管理的经济投入,大大提高了物流管理系统管理的效率。 本系统主要包了等系统用户管理、车辆信息管理、货物库存管理、货物入库管理多个功能模块。下面分别简单阐述一下这几个功能模块需求。 (1)管理员的登录模块:管理员登录系统对本系统其他管理模块进行管理。 (2)用户的登录模块:用户登录本系统,对个人的信息等进行查询,操作可使用的功能。 (3)用户添加模块:游客用户可以进行用户添加,系统会反馈是否注册成功。 (4)添加管理员模块:向本系统中添加更多的管理人员,管理员包括普通管理员和超级管理员。 (5)车辆信息管理模块: 车辆信息列表:将数据库的商品表以列表的形式呈现给管理员。 添加车辆信息:实现管理员添加车辆信息,应该包括车辆信息。 修改车辆信息:实现管理员修改车辆信息,包括修改车辆信息。 (6)货物库存管理模块: 货物库存列表:进行货物库存列表显示。 (7)货物入库管理模块: 货物入库列表:显示系统的所有货物入库,可以通过关键字查询。 货物入库删除:对输入错误或过期的货物入库删除。 (8)货物出库管理模块: 货物出库列表:显示系统的所有货物出库,可以通过关键字查询。 货物出库删除:对输入错误或过期的货物出库删除。 (9)用户模块: 资料管理:用户登录本系统。可以对自己的个人主页进行查看。 系统信息:用户可以查看自己的系统提示信息。 修改资料:用户可以修改自己的账号密码。 信息搜索:用户可以通过关键字搜索站内信息。 密码修改:用户可以修改个人登录密码。 (10)系统管理模块:包括数据备份。 (11)退出模块: 管理员退出:管理员用来退出系统。 用户退出:用户用来退出系统。
数据库导入可用;包括管理员和用户两个模块; 其中管理员模块的主要功能有: (1)登录:管理员可通过该模块进入系统。 (2)搜索订单:管理员可以通过下单人、预订房间的类型、住店时间、离店时间进行单条件或任意组合的多条件查询订单。 (3)处理订单:管理员可对订单做出处理。例如有客人预订的资源,可以将订单处理为成功预订。 (4)搜索会员:管理员可以通过会员名、手机号进行单条件查询或组合多条件查询会员。 (5)查看会员信息:管理员可以查看会员的详细信息但不能修改。 (6)查看房间信息:管理员可以查看房间的状态以及描述等详细信息。 (7)修改房间信息:管理员可以修改房间状态、修改房间的价格等详细信息。 会员模块的主要功能包括: (1)注册登录:游客可以进行注册升级为会员便于登录系统预订房间。 (2)修改信息:登录后会员可以修改自己的基本信息,例如联系方式、邮箱、昵称等,同时还可以修改登录密码。 (3)浏览预订房间:会员登录后可以浏览房间信息,查看房间的类型及、描述以及价格并根据自己的需要下订单。 (4)查看订单处理结果:会员登录后可以查看自己已提交订单的处理情况。 (5)查看历史订单:会员登录后可以查看过去的订单的详细信息。
主要功能模块如下: 1.客房标准模块所要实现的功能: 有关客房标准的制定、标准信息输入、标准名称、房间面积、床位数量、住房单价、是否有空调、电视机、电话以及单独卫生间。 客房标准信息的输入、修改、和查询。 2.客房基本信息模块所要实现的功能: 客房基本信息的输入,包括客房编号、客房类型、客房位置、客房单价、备注信息。 客房基本信息的查询、修改,包括客房编号、客房类型、客房位置、客房单价、备注信息。 客房基本信息的删除。 3.订房信息模块所要实现的功能: 剩余客房信息的查询。 订房信息的输入,包括客房编号、客房种类、客房位置、客房单价、顾客姓名、顾客身份证号码、入住日期、折扣和备注信息。 订房信息的查询和修改,包括客房编号、客房种类、客房位置、客房单价、顾客姓名、顾客身份证号码、入住日期、折扣和备注信息。 订房信息的删除。 4.结算信息模块所要实现的功能: 结算信息的输入,包括客房编号、种类、位置、单价,顾客姓名、顾客身份证号码,入住日期,折扣,结算日期,备注信息。 结算信息的查询,包括客房编号、种类、位置、单价,顾客姓名、顾客身份证号码,入住日期,折扣,结算日期,备注信息。 5.用户管理模块: 添加、查询和删除用户。 6.帮助模块: 包括此系统的一些版本信息等。 7.系统设置模块: 锁定系统。 重新登录系统。 退出系统。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

java王不二

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

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

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

打赏作者

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

抵扣说明:

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

余额充值