主要是部分代码以及系统截图展示:
后端:
1.登录服务:
1 public class LoginController { 2 3 private LoginService service = new LoginServiceImpl(); 4 5 /** 6 * 主 Login 表格使用 7 * 8 * @param page 页数 9 * @param limit 长度 10 * @param make 状态标志 11 * @param loginId 选中的用户 ID 12 * @return 查询内容 13 */ 14 @RequestMapping("loginTable.do") 15 @ResponseBody 16 public Object loginTable(String page, String limit, String make, String loginId) { 17 18 String code = "0"; //状态码 19 String msg = "数据查询正常"; //状态信息 20 String count; //数据总数 21 List<Login> list; //数据内容 22 23 if (make.equals("4")) { //删除 24 //System.out.println("执行删除操作"); 25 service.deleteLogin(Integer.parseInt(loginId)); 26 } 27 28 list = service.query(Integer.parseInt(page), Integer.parseInt(limit)); 29 count = String.valueOf(service.queryLoginNum()); 30 31 PojotoGson pojotoGson = new PojotoGson(code, msg, count, list); 32 Gson gson = new Gson(); 33 return gson.toJson(pojotoGson); 34 } 35 36 /** 37 * 修改用户密码 38 * 39 * @param loginName 用户名 40 * @param loginPwd 用户密码 41 * @return 0/1 42 */ 43 @RequestMapping("updatePwd.do") 44 @ResponseBody 45 public String updatePwd(String loginName, String loginPwd) { 46 47 String data = "0"; 48 try { 49 Login login = service.queryLogin(loginName); // 查询 50 login.setLoginPwd(loginPwd); // 更改 51 service.updateLogin(login); // 更新 52 return "1"; 53 } catch (Exception e) { 54 e.printStackTrace(); 55 return data; 56 } 57 } 58 59 /** 60 * 导出 Excel 表 61 * 62 * @param response response 63 */ 64 @RequestMapping("toExcel.do") 65 @ResponseBody 66 public void toExcel(HttpServletResponse response) { 67 68 List<Login> loginList; 69 70 loginList = service.query(1, service.queryLoginNum()); 71 72 String[] headers = {"用户ID", "用户登录名", "用户密码", "用户昵称", "用户权限"}; 73 String fileName = "用户信息"; 74 75 ExportExcel<Login> ee = new ExportExcel<>(); 76 ee.exportExcel(headers, loginList, fileName, response); 77 } 78 79 /** 80 * 新增用户 81 * 82 * @param request request 83 * @return 重复 1 、成功 OK 、失败 0 84 */ 85 @RequestMapping("insertLogin.do") 86 @ResponseBody 87 public String insertLogin(HttpServletRequest request) { 88 89 try { 90 91 BufferedReader reader = request.getReader(); // 获取前端传递的json数据 92 String json = reader.readLine(); 93 Gson gson = new Gson(); // 解析json 94 Login login = gson.fromJson(json, Login.class); 95 if (service.queryLogin(login.getLoginName()) != null) 96 return "1"; // 已经存在的用户 97 service.insertLogin(login); 98 System.out.println(login); 99 return "ok"; 100 } catch (Exception e) { 101 return "0"; 102 } 103 104 } 105 106 /** 107 * 登录成功与否的判断 108 * 109 * @param loginName 用户名 110 * @param loginPwd 密码 111 * @param session session 112 * @return 整型 1 -1 0 113 */ 114 @RequestMapping("login.do") 115 @ResponseBody 116 public String toLogin(String loginName, String loginPwd, HttpSession session) { 117 118 String data = String.valueOf(service.queryByName(loginName, loginPwd)); 119 120 if (data.equals("1")) { 121 Login login = service.queryLogin(loginName); 122 session.setAttribute("loginName", loginName); 123 session.setAttribute("loginId", login.getLoginId()); 124 session.setAttribute("loginNickName", login.getLoginNickName()); 125 session.setAttribute("loginAdmin", login.getLoginAdmin()); 126 127 //写入登录记录 128 LogInfo logInfo = new LogInfo("登录", login.getLoginId(), login.getLoginName()); 129 LogInfoService logInfoService = new LogInfoServiceImpl(); 130 logInfoService.insertLogInfo(logInfo); 131 } 132 Gson gson = new Gson(); 133 134 return gson.toJson(data); 135 } 136 137 /** 138 * 退出系统清空 session 139 * 140 * @param session session 141 * @return "" 142 */ 143 @RequestMapping("exitSystem.do") 144 @ResponseBody 145 public String toList(HttpSession session) { 146 int loginId = (int) session.getAttribute("loginId"); 147 String loginName = (String) session.getAttribute("loginName"); 148 149 //写入退出记录 150 LogInfo logInfo = new LogInfo("退出", loginId, loginName); 151 LogInfoService logInfoService = new LogInfoServiceImpl(); 152 logInfoService.insertLogInfo(logInfo); 153 session.removeAttribute("loginId"); 154 session.removeAttribute("loginName"); 155 session.removeAttribute("loginNickPwd"); 156 session.removeAttribute("loginAdmin"); 157 session.invalidate(); 158 159 return ""; 160 } 161 162 163 }
2.客房管理
public class RoomTypeController { private RoomTypeService service = new RoomTypeServiceImpl(); /** * 主表格使用 * * @param page 页数 * @param limit 长度 * @param make 状态标志 * @param logId 选中的用户 ID * @param typeName 选中的用户 typeName * @return 查询内容 */ @RequestMapping("roomTypeTable.do") @ResponseBody public Object RoomTypeTable(String page, String limit, String make, String typeId, String typeName , String price, String splicPrice, String exceedance, String isSplice) { String code = "0"; //状态码 String msg = "数据查询正常"; //状态信息 String count; //数据总数 List<RoomType> list; //数据内容 list = service.queryList(Integer.parseInt(page), Integer.parseInt(limit)); count = String.valueOf(service.queryLoginNum()); if (make.equals("4")) { //删除 service.delete(typeId); list = service.queryList(Integer.parseInt(page), Integer.parseInt(limit)); count = String.valueOf(service.queryLoginNum()); } else if (make.equals("3")) { //搜索 list = service.queryByName(typeName); count = String.valueOf(list.size()); } else if (make.equals("2")) { RoomType roomType = new RoomType(typeId, typeName, price, splicPrice , Integer.parseInt(exceedance), isSplice); service.update(roomType); } PojotoGson pojotoGson = new PojotoGson(code, msg, count, list); Gson gson = new Gson(); return gson.toJson(pojotoGson); } /** * 0:已经存在 1:未存在 2:与自身相同 * * @param newName 新 * @param oldName 旧 * @return 0 1 2 */ @RequestMapping("queryRepeat.do") @ResponseBody public String queryRepeat(String newName, String oldName) { String check = String.valueOf(service.queryRepeat(newName,oldName)); return check; } /** * 导出 Excel 表 * * @param response response */ @RequestMapping("toExcel.do") @ResponseBody public void toExcel(HttpServletResponse response) { List<RoomType> list; list = service.queryList(1, service.queryLoginNum()); String[] headers = {"类型编号", "类型名称", "价格", "拼房价格", "可超预定数", "是否可拼房"}; String fileName = "房间类型信息"; ExportExcel<RoomType> ee = new ExportExcel<>(); ee.exportExcel(headers, list, fileName, response); } /** * 新增 * * @param request request * @return 重复 1 、成功 OK 、失败 0 */ @RequestMapping("insertRoomType.do") @ResponseBody public String insertRoomType(HttpServletRequest request) { try { BufferedReader reader = request.getReader(); // 获取前端传递的json数据 String json = reader.readLine(); Gson gson = new Gson(); // 解析json RoomType roomType = gson.fromJson(json, RoomType.class); if (service.queryRepeat(roomType.getTypeName(), roomType.getTypeName()) == 0) return "1"; // 已经存在的用户 service.insert(roomType); return "ok"; } catch (Exception e) { return "0"; } } }
前端:
<%@ page contentType="text/html;charset=UTF-8" %> <!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" /> <title>酒店管理系统</title> <link rel='Shortcut Icon' type='image/x-icon' href='../img/windows.ico'> <script type="text/javascript" src="./js/jquery-2.2.4.min.js"></script> <link href="css/animate.css" rel="stylesheet"> <script type="text/javascript" src="./component/layer-v3.0.3/layer/layer.js"></script> <link rel="stylesheet" href="component/font-awesome-4.7.0/css/font-awesome.min.css"> <link href="css/default.css" rel="stylesheet"> <script type="text/javascript" src="./js/win10.js"></script> <script type="text/javascript" src="../js/Cookie.js"></script> <style> * { font-family: "Microsoft YaHei", 微软雅黑, "MicrosoftJhengHei", 华文细黑, STHeiti, MingLiu } .layui-layer-title { border-bottom: 1px solid #2b2b33; } /*去除窗体标题栏与主栏的差异,默认的属性是#eee*/ .win10-block-content-text { line-height: 44px; text-align: center; font-size: 16px; } /*磁贴自定义样式*/ </style> <script> if(window.top == window.self) { //alert('页面不是在框架中打开的'); } else { //alert('页面是在框架中打开的'); //所以最简单的方法就是判断主页面是否在框架里,如果在就直接刷新父类界面 parent.location.reload(); } //从cookie读取登录用户 var loginName = getCookie("loginName"); var loginNickName = "<%=session.getAttribute("loginNickName")%>"; setCookie("loginNickName",loginNickName); Win10.onReady(function() { //设置壁纸 Win10.setBgUrl({ main: './img/wallpapers/miaowu.jpg', mobile: './img/wallpapers/mobile.jpg', }); //Animated动画 地址:https://daneden.github.io/animate.css Win10.setAnimated([ 'animated flip', 'animated bounceIn', ], 0.01); //发送一条消息 setTimeout(function() { loginName = getCookie("loginName"); Win10.newMsg('欢迎登录', '欢迎用户 " ' + loginNickName + ' " 的登录。'); }, 2500); }); </script> </head> <body> <div id="win10"> <!--桌面图标--> <div class="desktop"> <div id="win10-shortcuts" class="shortcuts-hidden"> <div class="shortcut win10-open-window" data-area-offset="max" data-url="../webpage/orderInfo/order.jsp"> <img class="icon" src="img/icon/1YuDing.png" /> <div class="title">客房预定</div> </div> <div class="shortcut win10-open-window" data-url="../webpage/auth/auth.jsp"> <img class="icon" src="img/icon/2RuZhu.png" /> <div class="title">客房入住</div> </div> <div class="shortcut win10-open-window" data-url="../webpage/auth/auth.jsp"> <img class="icon" src="img/icon/3FangTai.png" /> <div class="title">房态管理</div> </div> <div class="shortcut win10-open-window" data-url="../webpage/searchTable/searchMain.jsp"> <img class="icon" src="img/icon/4ShuJu.png" /> <div class="title">数据查询</div> </div> <div class="shortcut win10-open-window" data-url="../webpage/billinfo/billInfoMain.jsp"> <img class="icon" src="img/icon/5ZhangDan.png" /> <div class="title">账单管理</div> </div> <div class="shortcut win10-open-window" data-url="../webpage/SystemSetting/SystemMain.jsp"> <img class="icon" src="img/icon/6XiTong.png" /> <div class="title">系统设定</div> </div> <div class="shortcut win10-open-window" data-url="../loginTable.jsp"> <img class="icon" src="img/icon/7YuanGong.png" /> <div class="title">员工管理</div> </div> <div class="shortcut" onclick="Win10.exit()"> <img class="icon" src="img/icon/8AnQuan.png" /> <div class="title">安全退出</div> </div> <div class="shortcut" onclick="window.open('https://github.com/inkss/hotelbook-JavaWeb')"> <img class="icon" src="img/icon/9XiangMu.png" /> <div class="title">项目地址</div> </div> <div class="shortcut win10-open-window" data-url="./plugins/theme_switcher/theme_switcher.html"> <img class="icon" src="img/icon/11pic.png" /> <div class="title">更换壁纸</div> </div> <div class="shortcut win10-open-window" data-url="https://www.baidu.com"> <img class="icon" src="img/icon/10Liulan.png" /> <div class="title">浏览器</div> </div> </div> <div id="win10-desktop-scene"></div> </div> <!--磁贴菜单--> <div id="win10-menu" class="hidden"> <div class="list win10-menu-hidden animated animated-slideOutLeft"> <div class="item" onclick="Win10.exit()"> <i class="black icon fa fa-power-off fa-fw"></i> <span class="title">关闭</span> </div> </div> <div class="blocks"> <div class="menu_group"> <div class="title">Welcome</div> <div class="block" loc="1,1" size="6,4"> <div class="content"> <div style="font-size:100px;line-height: 132px;margin: 0 auto ;display: block" class="fa fa-fw fa-windows win10-block-content-text"></div> <div class="win10-block-content-text" style="font-size: 22px">欢迎使用 酒店管理系统</div> </div> </div> </div> </div> <div id="win10-menu-switcher"></div> </div> <!--通知中心--> <div id="win10_command_center" class="hidden_right"> <div class="title"> <h4 style="float: left">消息中心 </h4> <span id="win10_btn_command_center_clean_all">全部清除</span> </div> <div class="msgs"></div> </div> <!--状态栏--> <div id="win10_task_bar"> <div id="win10_btn_group_left" class="btn_group"> <div id="win10_btn_win" class="btn"> <span class="fa fa-windows"></span> </div> <div class="btn" id="win10-btn-browser"> <span class="fa fa-internet-explorer"></span> </div> </div> <div id="win10_btn_group_middle" class="btn_group"></div> <div id="win10_btn_group_right" class="btn_group"> <div class="btn" id="win10_btn_time"></div> <div class="btn" id="win10_btn_command"> <span id="win10-msg-nof" class="fa fa-comment-o"></span> </div> <div class="btn" id="win10_btn_show_desktop"></div> </div> </div> </div> </body> </html>
截图: