基于javaweb的SSM酒店预定管理系统(前台、后台)(java+java+jsp+ssm+javabean+mysql)

运行环境

Java≥8、MySQL≥5.7、Tomcat≥8

开发工具

eclipse/idea/myeclipse/sts等均可配置运行

适用

课程设计,大作业,毕业设计,项目练习,学习演示等

功能说明

(1)用户在线浏览客房,管理自己的个人信息,预订客房。

(2)管理员对酒店的客房信息、活动信息进行管理,同时对客房评论进行管理。

350123182502

340123182502

前台

180123182502

190123182502

200123182502

210123182502

220123182502

后台:

230123182502

240123182502

250123182502

260123182502

280123182502

290123182502

300123182502

310123182502

320123182502

330123182502

技术框架

JavaBean MVC JSP SSM(Spring SpringMVC MyBatis) MySQL EasyUI JavaScript

基于javaweb的SSM酒店预定管理系统(前台、后台)(java+java+jsp+ssm+javabean+mysql)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
}
if(StringUtils.isEmpty(bookOrder.getArriveDate())){
ret.put("type", "error");
ret.put("msg", "到达时间不能为空!");
return ret;
}
if(StringUtils.isEmpty(bookOrder.getLeaveDate())){
ret.put("type", "error");
ret.put("msg", "离店时间不能为空!");
return ret;
}
BookOrder existBookOrder = bookOrderService.find(bookOrder.getId());
if(existBookOrder == null){
ret.put("type", "error");
ret.put("msg", "请选择正确的数据进行编辑!");
return ret;
}
if(bookOrderService.edit(bookOrder) <= 0){
ret.put("type", "error");
ret.put("msg", "编辑失败,请联系管理员!");
return ret;
}
//判断房型是否发生变化
if(existBookOrder.getRoomTypeId().longValue() != bookOrder.getRoomTypeId().longValue()){
//房型发生了变化
//首先恢复原来房型的预定数及可用数
RoomType oldRoomType = roomTypeService.find(existBookOrder.getRoomTypeId());
oldRoomType.setAvilableNum(oldRoomType.getAvilableNum() + 1);
oldRoomType.setBookNum(oldRoomType.getBookNum() - 1);
roomTypeService.updateNum(oldRoomType);
if(oldRoomType.getStatus() == 0){
//旧的房间原来是满房,现在不满房的话,恢复状态
if(oldRoomType.getAvilableNum() > 0){
//设置成状态可用
oldRoomType.setStatus(1);
roomTypeService.edit(oldRoomType);
}
}
//修改新的房型的可用数和预定数
RoomType newRoomType = roomTypeService.find(bookOrder.getRoomTypeId());
newRoomType.setAvilableNum(newRoomType.getAvilableNum() - 1);
newRoomType.setBookNum(newRoomType.getBookNum() + 1);
roomTypeService.updateNum(newRoomType);
if(newRoomType.getAvilableNum() <= 0){
//没有可用房间数
newRoomType.setStatus(0);//设置成满房
roomTypeService.edit(newRoomType);
}
}
ret.put("type", "success");
ret.put("msg", "修改成功!");
return ret;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
	queryMap.put("content", content);
queryMap.put("offset", page.getOffset());
queryMap.put("pageSize", page.getRows());
ret.put("rows", logService.findList(queryMap));
ret.put("total", logService.getTotal(queryMap));
return ret;
}

/**
* 添加日志
* @param user
* @return
*/
@RequestMapping(value="/add",method=RequestMethod.POST)
@ResponseBody
public Map<String, String> add(Log log){
Map<String, String> ret = new HashMap<String, String>();
if(log == null){
ret.put("type", "error");
ret.put("msg", "请填写正确的日志信息!");
return ret;
}
if(StringUtils.isEmpty(log.getContent())){
ret.put("type", "error");
ret.put("msg", "请填写日志内容!");
return ret;
}
log.setCreateTime(new Date());
if(logService.add(log) <= 0){
ret.put("type", "error");
ret.put("msg", "日志添加失败,请联系管理员!");
return ret;
}
ret.put("type", "success");
ret.put("msg", "日志添加成功!");
return ret;
}



/**
* 批量删除日志
* @param ids
* @return
*/
@RequestMapping(value="/delete",method=RequestMethod.POST)
@ResponseBody
public Map<String, String> delete(String ids){
Map<String, String> ret = new HashMap<String, String>();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
	 * @param statsValue
* @return
*/
private Map<String, Object> getStatsValue(List<Map> statsValue){
Map<String, Object> ret = new HashMap<String, Object>();
List<String> keyList = new ArrayList<String>();
List<Float> valueList = new ArrayList<Float>();
for(Map m:statsValue){
keyList.add(m.get("stats_date").toString());
valueList.add(Float.valueOf(m.get("money").toString()));
}
ret.put("keyList", keyList);
ret.put("valueList", valueList);
return ret;
}
}
package com.demo.interceptor.admin;





/**
* 后台登录拦截器
*
*/
public class LoginInterceptor implements HandlerInterceptor {

@Override
public void afterCompletion(HttpServletRequest arg0,
HttpServletResponse arg1, Object arg2, Exception arg3)
throws Exception {
// TODO Auto-generated method stub

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
		Page page
){
Map<String,Object> ret = new HashMap<String, Object>();
Map<String,Object> queryMap = new HashMap<String, Object>();
queryMap.put("name", name);
queryMap.put("status", status);
queryMap.put("offset", page.getOffset());
queryMap.put("pageSize", page.getRows());
ret.put("rows", roomTypeService.findList(queryMap));
ret.put("total", roomTypeService.getTotal(queryMap));
return ret;
}

/**
* 房间类型信息删除操作
* @param id
* @return
*/
@RequestMapping(value="/delete",method=RequestMethod.POST)
@ResponseBody
public Map<String, String> delete(Long id){
Map<String, String> ret = new HashMap<String, String>();
if(id == null){
ret.put("type", "error");
ret.put("msg", "请选择要删除的信息!");
return ret;
}
try {
if(roomTypeService.delete(id) <= 0){
ret.put("type", "error");
ret.put("msg", "删除失败,请联系管理员!");
return ret;
}
} catch (Exception e) {
// TODO: handle exception
ret.put("type", "error");
ret.put("msg", "该房间类型下存在房间信息,请先删除该房间类型下的所有房间信息!");
return ret;
}
ret.put("type", "success");
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
		User user = (User)request.getSession().getAttribute("admin");
if(!user.getPassword().equals(oldpassword)){
ret.put("type", "error");
ret.put("msg", "原密码错误!");
return ret;
}
user.setPassword(newpassword);
if(userService.editPassword(user) <= 0){
ret.put("type", "error");
ret.put("msg", "密码修改失败,请联系管理员!");
return ret;
}
ret.put("type", "success");
ret.put("msg", "密码修改成功!");
logService.add("用户名为{"+user.getUsername()+"},的用户成功修改密码!");
return ret;
}

/**
* 本系统所有的验证码均采用此方法
* @param vcodeLen
* @param width
* @param height
* @param cpachaType:用来区别验证码的类型,传入字符串
* @param request
* @param response
*/
@RequestMapping(value="/get_cpacha",method=RequestMethod.GET)
public void generateCpacha(
@RequestParam(name="vl",required=false,defaultValue="4") Integer vcodeLen,
@RequestParam(name="w",required=false,defaultValue="100") Integer width,
@RequestParam(name="h",required=false,defaultValue="30") Integer height,
@RequestParam(name="type",required=true,defaultValue="loginCpacha") String cpachaType,
HttpServletRequest request,
HttpServletResponse response){
CpachaUtil cpachaUtil = new CpachaUtil(vcodeLen, width, height);
String generatorVCode = cpachaUtil.generatorVCode();
request.getSession().setAttribute(cpachaType, generatorVCode);
BufferedImage generatorRotateVCodeImage = cpachaUtil.generatorRotateVCodeImage(generatorVCode, true);
try {
ImageIO.write(generatorRotateVCodeImage, "gif", response.getOutputStream());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
package com.demo.controller.admin;


项目链接:
https://javayms.github.io?id=282021331705103an
https://javayms.pages.dev?id=282021331705103an