Java项目:酒店管理系统(java+SSM+jsp+mysql+maven)
源码获取:博客首页 "资源" 里下载!
主要技术:java springmvc mybatis mysql tomcat js jauery jsp log4j等一些常见基本技术适用于Java毕设和学习使用
主要实现:
前台:登录、注册、酒店信息浏览、搜索酒店信息、查看房间、预定房间、等
后台:部门管理、房间管理、楼层管理、订单管理、入住管理、营业额报表、承担控制权限、员工管理、角色管理、预定报表等
主要功能截图如下:
前端登陆注册和一些基本信息查看等
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>酒店管理系统</title><%pageContext.setAttribute("APP_PATH", request.getContextPath());%><link rel="icon" href="${App_PATH}/statics/layui/images/favicon.ico"><link rel="stylesheet" href="${APP_PATH}/statics/layui/lib/layui-v2.5.5/css/layui.css" media="all"><![endif]--><style>html, body {width: 100%;height: 100%;overflow: hidden}body {background: #1E9FFF;}body:after {content:'';background-repeat:no-repeat;background-size:cover;-webkit-filter:blur(3px);-moz-filter:blur(3px);-o-filter:blur(3px);-ms-filter:blur(3px);filter:blur(3px);position:absolute;top:0;left:0;right:0;bottom:0;z-index:-1;}.layui-container {width: 100%;height: 100%;overflow: hidden}.admin-login-background {width:360px;height:300px;position:absolute;left:50%;top:40%;margin-left:-180px;margin-top:-100px;}.logo-title {text-align:center;letter-spacing:2px;padding:14px 0;}.logo-title h1 {color:#1E9FFF;font-size:25px;font-weight:bold;}.login-form {background-color:#fff;border:1px solid #fff;border-radius:3px;padding:14px 20px;box-shadow:0 0 8px #eeeeee;}.login-form .layui-form-item {position:relative;}.login-form .layui-form-item label {position:absolute;left:1px;top:1px;width:38px;line-height:36px;text-align:center;color:#d2d2d2;}.login-form .layui-form-item input {padding-left:36px;}.captcha {width:60%;display:inline-block;}.captcha-img {display:inline-block;width:34%;float:right;}.captcha-img img {height:34px;border:1px solid #e6e6e6;height:36px;width:100%;}</style>
</head>
<body>
<div class="layui-container"><div class="admin-login-background"><div class="layui-form login-form"><form class="layui-form" action="login"><div class="layui-form-item logo-title"><h1>酒店管理系统</h1></div><div class="layui-form-item"><label class="layui-icon layui-icon-username"></label><input type="text" name="userName" lay-verify="required|account" placeholder="请填写账号" autocomplete="off" class="layui-input" ></div><div class="layui-form-item"><label class="layui-icon layui-icon-password"></label><input type="password" name="password" lay-verify="required|password" placeholder="密码" autocomplete="off" class="layui-input" ></div><div class="layui-form-item"><button class="layui-btn layui-btn layui-btn-normal layui-btn-fluid" lay-submit="" lay-filter="login" id="submitBtn">登 入</button></div></form></div></div>
</div>
<script src="${APP_PATH}/statics/layui/lib/jquery-3.4.1/jquery-3.4.1.min.js" charset="utf-8"></script>
<script src="${APP_PATH}/statics/layui/lib/layui-v2.5.5/layui.js" charset="utf-8"></script>
<script src="${APP_PATH}/statics/layui/lib/jq-module/jquery.particleground.min.js" charset="utf-8"></script>
<script>layui.use(['form','layer','jquery'], function () {var form = layui.form,layer = layui.layer,$=layui.jquery;// 粒子线条背景$(document).ready(function(){$('.layui-container').particleground({dotColor:'#7ec7fd',lineColor:'#7ec7fd'});});// 进行登录操作form.on('submit(login)', function (data) {console.log(data);//发送请求$.post("/admin/employee/login",data.field,function (result) {if (result.success){location.href="home.html";}else {layer.msg(result.message);}},"json")return false;});});
</script>
</body>
</html>
首页:
房间的预定:
房间的介绍
面积:15-18㎡ | 床型:大床1.8米 | 可住: | 网络: 包含无线、宽带 | 楼层:7层-8层
客房设施:空调
媒体科技:电视机
食品饮品:瓶装水
浴室:室内卫生间、室内洗浴间
预定房间录入相关信息:
酒店后台管理:
酒店后台具体功能比较多:
部门信息管理:
房间信息管理:
楼层信息管理:
房间型号管理:
订单信息管理:
入住管理:
图表:
菜单信息管理:
员工管理:
角色分配菜单:
源码结构和表ER图:
商品业务控制层:
/*** <p>* 前端控制器* </p>**/
@RestController
@RequestMapping("/goods")
public class GoodsController {@Autowiredprivate GoodsService goodsService;@Autowiredprivate ProviderService providerService;@Autowiredprivate CategoryService categoryService;/*** 商品模糊查询** @param* @return*/@SysLog("商品查询操作")@RequestMapping("/goodsList")public DataGridViewResult goodsList(GoodsVO goodsVO) {//创建分页信息 参数1 当前页 参数2 每页显示条数IPage<Goods> page = new Page<>(goodsVO.getPage(), goodsVO.getLimit());QueryWrapper<Goods> queryWrapper = new QueryWrapper<>();queryWrapper.eq(goodsVO.getProviderid() != null && goodsVO.getProviderid() != 0, "providerid", goodsVO.getProviderid());queryWrapper.like(!StringUtils.isEmpty(goodsVO.getGname()), "gname", goodsVO.getGname());IPage<Goods> goodsIPage = goodsService.page(page, queryWrapper);List<Goods> records = goodsIPage.getRecords();for (Goods goods : records) {Provider provider = providerService.getById(goods.getProviderid());if (null != provider) {goods.setProvidername(provider.getProvidername());}}return new DataGridViewResult(goodsIPage.getTotal(), records);}/*** 添加商品信息** @param goods* @return*/@SysLog("商品添加操作")@PostMapping("/addgoods")public Result addGoods(Goods goods) {String id = RandomStringUtils.randomAlphanumeric(8);if (goods.getGoodsimg()!=null&&goods.getGoodsimg().endsWith("_temp")){String newName = AppFileUtils.renameFile(goods.getGoodsimg());goods.setGoodsimg(newName);}goods.setGnumbering(id);boolean bool = goodsService.save(goods);if (bool) {return Result.success(true, "200", "添加成功!");}return Result.error(false, null, "添加失败!");}/*** 修改商品信息** @param goods* @return*/@SysLog("商品修改操作")@PostMapping("/updategoods")public Result updateGoods(Goods goods) {//商品图片不是默认图片if (!(goods.getGoodsimg()!=null&&goods.getGoodsimg().equals(Constast.DEFAULT_IMG))){if (goods.getGoodsimg().endsWith("_temp")){String newName = AppFileUtils.renameFile(goods.getGoodsimg());goods.setGoodsimg(newName);//删除原先的图片String oldPath = goodsService.getById(goods.getGid()).getGoodsimg();AppFileUtils.removeFileByPath(oldPath);}}boolean bool = goodsService.updateById(goods);if (bool) {return Result.success(true, "200", "修改成功!");}return Result.error(false, null, "修改失败!");}/*** 删除单条数据** @param id* @return*/@SysLog("商品删除操作")@RequestMapping("/deleteOne")public Result deleteOne(int id) {boolean bool = goodsService.removeById(id);if (bool) {return Result.success(true, "200", "删除成功!");}return Result.error(false, null, "删除失败!");}/*** 根据id查询当前商品拥有的类别** @param id* @return*/@RequestMapping("/initGoodsByCategoryId")public DataGridViewResult initGoodsByCategoryId(int id) {List<Map<String, Object>> mapList = null;try {//查询所有类别列表mapList = categoryService.listMaps();//根据商品id查询商品拥有的类别Set<Integer> cateIdList = categoryService.findGoodsByCategoryId(id);for (Map<String, Object> map : mapList) {//定义标记 默认不选中boolean flag = false;int cateId = (int) map.get("cateid");for (Integer cid : cateIdList) {if (cid == cateId) {flag = true;break;}}map.put("LAY_CHECKED", flag);}} catch (Exception e) {e.printStackTrace();}return new DataGridViewResult(Long.valueOf(mapList.size()), mapList);}/*** 根据商品id加载商品信息* @param goodsid* @return*/@GetMapping("/loadGoodsById")public DataGridViewResult loadGoodsById(int goodsid) {QueryWrapper<Goods> goodsQueryWrapper = new QueryWrapper<>();goodsQueryWrapper.eq(goodsid != 0, "gid", goodsid);Goods goods = goodsService.getById(goodsid);return new DataGridViewResult(goods);}/*** 为商品分配类别** @param categoryids* @param goodsid* @return*/@SysLog("类别添加操作")@RequestMapping("/saveGoodsCategory")public Result saveGoodsCategory(String categoryids, int goodsid) {try {if (goodsService.saveGoodsCategory(goodsid, categoryids)) {return Result.success(true, null, "分配成功");}} catch (Exception e) {e.printStackTrace();}return Result.error(false, null, "分配失败");}/*** 加载下拉框** @return*/@RequestMapping("/loadAllGoods")public DataGridViewResult loadAllGoods() {QueryWrapper<Goods> queryWrapper = new QueryWrapper<>();List<Goods> list = goodsService.list(queryWrapper);return new DataGridViewResult(list);}/*** 根据供应商查商品下拉框** @param providerid* @return*/@RequestMapping("/loadGoodsByProvidreId")public DataGridViewResult loadGoodsByProvidreId(Integer providerid) {QueryWrapper<Goods> goodsQueryWrapper = new QueryWrapper<>();goodsQueryWrapper.eq(providerid != null, "providerid", providerid);List<Goods> list = goodsService.list(goodsQueryWrapper);for (Goods goods : list) {Provider provider = providerService.getById(goods.getProviderid());if (null != provider) {goods.setProvidername(provider.getProvidername());}}return new DataGridViewResult(list);}
}
源码获取:博客首页 "资源" 里下载!
相关文章:

设计模式之装饰模式(Java实现)
“怎么了,鱼哥?” “唉,别提了,网购了一件衣服,结果发现和商家描述的差太多了,有色差就算了,质量还不好,质量不好就算了,竟然大小也不行,说好的3个Xÿ…

ueditor与七牛云存储结合
2019独角兽企业重金招聘Python工程师标准>>> 摘要: ueditor与七牛云存储结合,主要是表单api. ueditor上传图片到七牛云存储 ueditor结合七牛传图片 传统上,图片是存在自己的服务器上(图片->自己服务器),如果使用…

微服务网关从零搭建——(七)更改存储方式为oracle
资源准备: 下载开源项目 新建oracle表: -- ---------------------------- -- Table structure for OcelotGlobalConfiguration -- ----------------------------CREATE TABLE OcelotGlobalConfiguration (Id NUMBER(11) NOT NULL ,GatewayName NVARCHAR2…

Rocksdb 的优秀代码(一) -- 工业级分桶算法实现分位数p50,p99,p9999
文章目录基本概念普通的分位数计算Rocksdb中的应用rocksdb中的分桶算法结果展示rocksdb 分桶算法实现一些总结 和 相关论文我们知道一个完整的监控系统必须存在p99/p999等分位数指标,作为系统可用性的评判标准之一。而像开源监控系统中做的很不错的grafana和prometh…

Java项目:前后端分离疫情防疫平台设计和实现(java+springmvc+VUE+node.js+mybatis+mysql+springboot+redis+jsp)
源码获取:博客首页 "资源" 里下载! 主要技术:Java、springmvc、VUE、node.js、mybatis、mysql、tomcat、jquery、layui、bootstarp、JavaScript、html、css、jsp、log4j等一些常见的基本技术。 主要模块功能有: 管理员…

js里的匿名函数 数组排序
// 匿名函数:其实就是函数的简写形式 var method function(){ alert("123"); } method(); // 匿名函数可以用于事件的处理 function func(){ alert("456"); } window.οnlοadfunc; window.οnlοadfunction(){ alert("加载完成࿰…

oracle监听器动态注册于静态注册的区别
2019独角兽企业重金招聘Python工程师标准>>> 1, oracle 10g 用netca方式建立的都默认为动态注册方式 2,如果想改为静态注册的方式则在listener.ora 中加入如下内容即可 SID_LIST_LISTENER (SID_LIST (SID_DESC (SID_NAME PLSExtProc) (ORACLE_HOME …

什么是Singleton?
Singleton:在Java中即指单例设计模式,它是软件开发中最常用的设计模式之一。 单:指唯一 例:指实例 单例设计模式,即某个类在整个系统中只能有一个实例对象可被获取和使用的代码模式。 要点: 一、单例类只能…

磁盘I:O 性能指标 以及 如何通过 fio 对nvme ssd,optane ssd, pmem 性能摸底
文章目录1. 磁盘I/O性能指标1.1 性能指标1.2 I/O 观测1.2.1 磁盘I/O 观测1.2.2 进程I/O观测2. Fio 性能测试2.1 环境准备2.2 测试维度选择2.3 测试2.3.1 optane ssd和nvme ssd性能测试2.3.2 aep性能测试(intel persistent memory)真正测试之前 我们需要清楚 评判磁盘I/O性能 是…

Java项目:旅游网站管理系统设计和实现(java+springboot+jsp+mysql+spring)
源码获取:博客首页 "资源" 里下载! 运行环境: java jdk 1.8 IDE环境: IDEA tomcat环境: Tomcat 7.x,8.x,9.x版本均可 主要功能说明: 管理员角色包含以下功能:管理员登录,用户管理,旅游路线管理,…

稀疏矩阵十字链表表示
类型定义 #include<stdio.h> #include<malloc.h> #include<stdlib.h> #define MAX 100 /*稀疏矩阵的十字链表表示:非零元素节点与表头节点公用一种类型 */ typedef struct matrixnode {int row,col;struct matrixnode *right,*down;union{int val…

thrift框架使用C++
2019独角兽企业重金招聘Python工程师标准>>> 1. 编写thrift接口文件student.thrift struct Student{1: i32 sno,2: string sname,3: bool ssex,4: i16 sage, } service Serv{i32 put(1: Student s), } 2. 用“thrift -r --gen cpp student.thrift”在gen-cpp文件夹中…

shell编程:实现shell字符串连接功能
功能:实现shell字符串连接功能 a0 s1test. s2.wav s3.mp3 s40 s500str"sox ./${s1}${a}${s2} ./${a}${s3}"./tts -c bcgirl.0.0.4.bin -b 1 -i input.txt -s 1.0 -speed 1.0 $str rm ./*.wav转载于:https://www.cnblogs.com/kay2018/p/10673110.html

一文运维zookeeper
文章目录1. zookeeper生产环境的安装配置1.1 软件配置1.2 硬件配置1.3 日志配置文件1.4 配置三节点的zookeeper集群2. zookeeper的监控方法2.1 four letters命令2.2 JMX 监控方式3. 通过zookeeper observer实现跨地域部署3.1 什么是observer3.2 observer 提升 写性能3.3 observ…

Java项目:电商书城平台系统设计和实现(java+springboot+mysql+spring+jsp)
源码获取:博客首页 "资源" 里下载! JAVA springboot 电商书城平台系统(已调试) 主要实现了书城网站的浏览、加入购物车操作、订单操作、支付操作、分类查看、搜索、以及后台上传图书信息以及订单管理和一些基本操作功能 主要功能截图如下&…

(周三赛)FATE
//题意 打怪的经验值 ,消耗忍耐度 看升级后还能保留的最大忍耐度 用 背包去做,不是很会啊 T T Description 最近xhd正在玩一款叫做FATE的游戏,为了得到极品装备,xhd在不停的杀怪做任务。久而久之xhd开始对杀怪产生的厌恶感&#…

ASP.NET MVC 3中ViewBag, ViewData和 TempData
ViewBag, ViewData十分类似,都可用于把数据从controller传递到view。 ViewBag是WebViewPage中的一个属性,它的类型是dynamic。dynamic类型可以理解为,编译器在编译到这种类型时,会跳过类型检查,而在运行时做这些事情。…

如何在指定文件夹下进入jupyter notebook
第一步: 打开 Anaconda Prompt 第二步: 查看文件夹所在路径 例如:你有个jupyterwork文件夹在 D:\ 路径下 第三步: 在Anaconda Prompt依次输入一下命令: d:cd jupyterworkjupyter notebook完成。转载于:https://www.cnb…

Go 分布式学习利器(16) -- go中可复用的package构建
通过本文,你将了解go 语言中如何将自己的package构建到项目中 以及如何将远程(github)的package构建到项目中。 1. 构建本地的package package 是可复用模块的基本单元,以首字母大写的函数实现来表明可被包外代码访问代码的pack…

JQuery UI
//拖拽插件 draggable <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns"http://www.w3.org/1999/xhtml"><head><title>拖曳…

Java项目:房屋租赁系统设计和实现(java+ssm+mysql+spring+jsp)
源码获取:博客首页 "资源" 里下载! 主要功能描述: 1.登录管理:主要有管理员登录和租客登录 2.房源列表以及添加房源功能: 3.租赁合同管理以及在租房源和已退租房源信息管理: 4.看房申请和退租申请管理&a…

学习网页制作中如何在正确选取和使用 CSS 单位
在 CSS 测量系统中,有好几种单位,如像素、百分比、英寸、厘米等等,Web 开发人员很难了解哪些单位在何处使用,如何使用。很多人习惯了总是使用同一种单位,但这一决定可能会严重限制你的设计的执行。 这里推荐的《Which …

SPOJ GSS3-Can you answer these queries III-分治+线段树区间合并
Can you answer these queries III SPOJ - GSS3 这道题和洛谷的小白逛公园一样的题目。 传送门: 洛谷 P4513 小白逛公园-区间最大子段和-分治线段树区间合并(单点更新、区间查询) 代码: 1 #include<bits/stdc.h>2 using namespace std;3 typedef long long l…

Zookeeper ZAB协议原理浅析
文章目录前言1. 基本角色和概念2. Leader Election3. Discovery4. Synchronization5. BroadCast后记前言 DTCC 要在下周一到周三要在北京举办,身边有不少人都去参加了,领略中国最为领先的一些公司的自研存储技术。 阿里自研polardb,polardb-…

Java项目:仓库管理系统设计和实现(java+ssm+springboot+layui)
源码获取:博客首页 "资源" 里下载! 主要功能模块 1.用户模块管理:用户登录、用户注册、用户的查询、添加、删除操作、 2.客户信息管理:.客户列表的展示、添加、修改、删除操作、 3.供应商管理:供应商详情…

Java Web 中的一些问题
http://localhost:8080/struts2demo/online/userLogin.jsp 请求模式 :// 主机名名称(或者服务器名称) : 端口 / Servlet容器的名称(通常为项目名称) / 自定义的网页文件夹名或者映射中的文件包名 / 网页名称及其后缀或者响应动作…

《零成本实现Web自动化测试--基于Selenium》第一章 自动化测试基础
第一篇 Selenium 和WebDriver工具篇 第一章 自动化测试基础 1.1 初识自动化测试 自动化测试有两种常见方式 1.1.1 代码驱动测试,又叫测试驱动开发(TDD) 1.1.2 图形用户接口测试: 测试框架产生用户接口事件(例如键盘敲击&#x…

第11章 AOF持久化
AOF持久化在硬盘上保存的是对Redis进行的逻辑操作,类似InnoDB中的bin log。说白了就是你对一个Redis输入了哪些语句,AOF文件都会原封不动的保存起来,等到需要回复Redis的时候再把这些语句执行一遍。 11.1 AOF持久化的实现 AOF简单的理解是把执…

Go 语言实现字符串匹配算法 -- BF(Brute Force) 和 RK(Rabin Karp)
今天介绍两种基础的字符串匹配算法,当然核心还是熟悉一下Go的语法,巩固一下基础知识 BF(Brute Force)RK(Rabin Karp) 源字符串:src, 目标字符串:dest; 确认dest是否是src 的一部分。 BF算法很简单暴力,维护两个下标…

Java项目:前后端分离网上手机商城平台系统设计和实现(java+vue+redis+springboot+mysql+ssm)
源码获取:博客首页 "资源" 里下载! 主要模块设计如下: 前后端主要技术:Java springboot springMVC mybatis mysql vue jquery node.js redis 1) 用户注册和登录功能:。 2) 用户信息的管理以及角色的…