Bootstrap

基于java+springboot+vue的酒店管理系统

项目介绍

时代的发展带来了巨大的生活改变,很多事务从传统手工管理转变为自动管理。自动管理是利用科技的发展开发的新型管理系统,这类管理系统可以帮助人完成基本的繁琐的反复工作。酒店是出门的必需品,无论出差还是旅游都需要酒店的服务。由于在旺季预定酒店的人数太多,需要提前预定才不会影响行程。使用传统方式来管理酒店需要多人、多时间,开发酒店管理系统则可以有效的提高管理效率。

本酒店管理系统采用SpringBoot框架进行开发,数据库采用MySQL设计,运行环境为Idea。本系统包括前台界面、用户界面和管理员界面、员工界面。在前台界面里游客和用户可以浏览客房信息、公告信息等,用户可以预定客房,在用户中心界面里,用户可以管理预定信息,管理员负责用户预定的审核以及客房的发布、用户的入住等。员工也可以安排用户的入住以及管理客户的预定。本系统实现酒店客房的管理以及用户预定管理,以此来保证酒店的正常运行。

4.1系统功能结构设计
功能结构为系统功能的展示,一般采用树形图进行系统功能的结构描述。第一层为系统的名称,第二层为划分的功能界面,第三层为功能界面里的详细功能。本系统的功能结构图第一层为酒店管理系统,第二层为前台、用户、管理员、员工,第三层为相对应的具体功能。本系统的功能结构图如下图4.1所示:
在这里插入图片描述

开发环境

编程语言:Java
数据库 :Mysql
系统架构:B/S
后端框架:SpringBoot
编译工具:idea或者eclipse,jdk1.8,maven
支持定做:java/php/python/android/小程序vue/爬虫/c#/asp.net

系统实现

5.1前台功能模块的界面实现
系统在运行后进入的第一个页面就是前台首页,前台里的信息可以让任意身份的人员浏览。没有登录的游客也可以使用搜索功能进行信息的搜索。在前台里展示公告信息、客房信息、酒店简介信息以及用户中心功能,后台管理功能、用户登录功能等。前台功能界面实现如下图5.1所示:
在这里插入图片描述

图5.1系统前台功能模块的实现界面

5.1.1客房信息功能模块的界面实现
点击客房信息功能后可以进入客房界面,客房界面里展示了查询框,客房信息列表。在查询框里按要求填写关键字点击查询就可以展现相对应的客房信息。客房信息功能的实现界面如下图5.2所示:
在这里插入图片描述

图5.2客房信息界面的实现效果

5.1.2客房详情界面实现
本界面是用户点击具体的客房后跳转进入的界面,在客房详情界面里,用户可以预定。客房详情信息的实现界面如下图5.3所示:
在这里插入图片描述

图5.3客房详情界面

5.1.3用户登录功能的界面实现
此功能设置在前台的上方,游客通过登录后可以成为用户,在登录时需要选择权限并输入用户名和密码。在此功能里输入的每一种信息都会自动判断,在用户登录时需要三种信息都核对正确才可以登录成功。用户登录功能的实现界面如下图5.4所示:
在这里插入图片描述

图5.4用户登录功能的实现界面

5.1.4客房预定功能模块的界面实现
用户登录成功后可以预定客房,客房预定功能的实现界面如下图5.5所示:
在这里插入图片描述

图5.5用户预定客房的实现界面

5.1.5酒店简介功能的界面实现
用户通过此功能可以了解酒店信息,酒店简介信息的设计运行界面如下图5.6所示:
在这里插入图片描述

图5.6酒店简介信息展现界面

5.1.6在线评价功能的实现
用户可以评价酒店客房。用户在线评价的实现界面如下图5.7所示:
在这里插入图片描述

图5.7用户在线评价功能的实现界面

5.1.7用户中心功能的实现
在用户中心里可以修改个人资料和查询客房预定的申请结果以及管理入住安排。用户中心的实现界面如下图5.8所示:
在这里插入图片描述

图5.8用户中心功能的实现界面

5.2后台管理员角色的功能界面实现
管理员在后台里可以更新前台的信息,如公告信息、客房分类信息、客房信息,还可以管理用户信息、审核客房预定信息和安排用户的入住,进行酒店简介设置等。后台管理员角色的功能实现界面如下图5.9所示:
在这里插入图片描述

图5.9后台管理员的功能实现界面

5.3员工角色功能的实现界面
员工可以管理个人资料和酒店客房预定信息以及对用户安排入住。员工角色功能的实现界面如下图5.10所示:
在这里插入图片描述

图5.10员工角色功能的实现界面

核心代码

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.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.KefangyudingEntity;
import com.entity.view.KefangyudingView;

import com.service.KefangyudingService;
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;

/**
 * 客房预定
 * 后端接口
 * @author 
 * @email 
 * @date 
 */
@RestController
@RequestMapping("/kefangyuding")
public class KefangyudingController {
    @Autowired
    private KefangyudingService kefangyudingService;


    


    /**
     * 后端列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,KefangyudingEntity kefangyuding,
		HttpServletRequest request){
		String tableName = request.getSession().getAttribute("tableName").toString();
		if(tableName.equals("yonghu")) {
			kefangyuding.setYonghuming((String)request.getSession().getAttribute("username"));
		}
        EntityWrapper<KefangyudingEntity> ew = new EntityWrapper<KefangyudingEntity>();
		PageUtils page = kefangyudingService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, kefangyuding), params), params));

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

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

	 /**
     * 查询
     */
    @RequestMapping("/query")
    public R query(KefangyudingEntity kefangyuding){
        EntityWrapper< KefangyudingEntity> ew = new EntityWrapper< KefangyudingEntity>();
 		ew.allEq(MPUtil.allEQMapPre( kefangyuding, "kefangyuding")); 
		KefangyudingView kefangyudingView =  kefangyudingService.selectView(ew);
		return R.ok("查询客房预定成功").put("data", kefangyudingView);
    }
	
    /**
     * 后端详情
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        KefangyudingEntity kefangyuding = kefangyudingService.selectById(id);
        return R.ok().put("data", kefangyuding);
    }

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



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

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

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        kefangyudingService.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<KefangyudingEntity> wrapper = new EntityWrapper<KefangyudingEntity>();
		if(map.get("remindstart")!=null) {
			wrapper.ge(columnName, map.get("remindstart"));
		}
		if(map.get("remindend")!=null) {
			wrapper.le(columnName, map.get("remindend"));
		}

		String tableName = request.getSession().getAttribute("tableName").toString();
		if(tableName.equals("yonghu")) {
			wrapper.eq("yonghuming", (String)request.getSession().getAttribute("username"));
		}

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







}

论文参考

在这里插入图片描述
目 录
摘 要 1
Abstract 2
第1章 绪论 5
1.1课题背景与问题来源 5
1.2课题现状和研究意义 6
1.3课题研究内容 6
1.4论文结构安排 6
第2章 系统开发的核心技术和运行环境选择 7
2.1技术、环境对比 7
2.2 SpringBoot框架介绍 7
2.3 Tomcat服务器介绍 8
2.4 Mysql数据库介绍 8
2.5 B/S架构介绍 9
第3章 系统分析 9
3.1系统需求分析 9
3.2系统可行性分析 9
3.2.1经济可行性分析 10
3.2.2 技术可行性分析 10
3.2.3 法律可行性 10
3.3系统性能分析 10
3.4系统功能分析 11
3.5系统操作流程分析 11
3.6角色用例分析 12
第4章 系统设计 14
4.1系统功能结构设计 14
4.2数据库设计 15
4.2.1数据ER图设计 15
4.2.2数据库表设计 17
第5章 系统详细实现 23
5.1前台功能模块的界面实现 24
5.1.1客房信息功能模块的界面实现 24
5.1.2客房详情界面实现 25
5.1.3用户登录功能的界面实现 25
5.1.4客房预定功能模块的界面实现 26
5.1.5酒店简介功能的界面实现 27
5.1.6在线评价功能的实现 28
5.1.7用户中心功能的实现 29
5.2后台管理员角色的功能界面实现 29
5.3员工角色功能的实现界面 30
第6章 系统测试 31
6.1系统测试的目的 31
6.2系统测试的步骤 31
6.3具体测试过程 31
6.3.1用户登录功能的测试 32
6.3.2修改密码功能的测试 32
6.3.3客房预定功能的测试 33
6.3.4客房信息管理功能的测试 33
6.4测试总结 33
总 结 34
参考文献 35
致 谢 37

;