文末联系获取源码
开发语言:Java
框架:ssm
JDK版本:JDK1.8
服务器:tomcat7
数据库:mysql 5.7/8.0
数据库工具:Navicat11
开发软件:eclipse/myeclipse/idea
Maven包:Maven3.3.9
浏览器:谷歌浏览器
小程序框架:uniapp
小程序开发软件:HBuilder X
小程序运行软件:微信开发者
一、前言介绍
随着社会的发展,出差、旅游成为常态,也就造成民宿短租市场的兴起。人们新到陌生的环境里找民宿一般都是通过中介。中介虽然可以快速找到合适的民宿但会收取大量的中介费用,这对刚到新环境里的人们来说是一笔大的资金支出。也有一些人通过自己去物业找民宿,但这种民宿出租信息非常有限,不能快速的找到合适的民宿。还有一部分会去网上平台找民宿,这种方式里的民宿大多都是中介。随着网络的快速发展,网上平台成为新的途径。本基于微信小程序民宿短租系统减少中间商,并且民宿信息齐全,价格透明,更受人们喜爱。
本基于微信小程序民宿短租系统采用Java语言进行开发,数据库采用Mysql,小型轻便,使系统中的数据更为安全,技术采用微信小程序。本系统实现了民宿信息的网上宣传,用户可以随时浏览和预订。管理员可以管理民宿信息和订单信息。房主可以管理自己的民宿和订单。本系统提高了用户预订民宿的效率,同时也帮助房主更快的找到租客。
二、数据库设计
2.1数据E-R图
数据ER图就是把抽象的数据进行建模,通过不同的图形来清晰化的表示数据。数据库设计的第一步就是数据ER图的设计。本系统中主要的数据为管理员信息、用户信息、民宿信息.和预订信息等。
(1)管理员信息为管理员身份的资料,包括编号和密码、账号。管理员信息ER图如下图所示:
(2)民宿信息可由房主进行发布,民宿信息包括面积、价格,装修等,民宿信息ER图如下图所示:
(3)预订信息也是由用户产生,管理员审核,房主管理。预订信息包括类型、民宿户型、民宿面积等。预订信息.ER图如下图所示:
(5)系统全局EER图如下图所示:
三、小程序端
3.1用户登录功能模块的实现界面
本系统需要登录才可以使用相关功能。用户登录功能的操作步骤为,用户点击用户登录功能,可以跳转到用户登录的窗口界面里,在用户登录的窗口界面里输入账号和密码,然后点击登录按钮。用户登录窗口的界面实现如下图所示:
3.2用户注册模块功能的实现
用户注册功能可以实现成为本系统用户的作用。当用户点击用户注册功能时界面会进入新的注册界面。注册的流程为用户填写注册信息,数据库先进行判断数据是否正确,如果正确可以在数据库中插入用户信息,如果信息错误,则会提示注册失败。用户注册功能的流程如下图所示:
用户注册的实现界面如下图所示:
3.3评价功能模块的界面实现
用户评价的流程为用户点击评价功能,然后输入评价信息,当评价信息为有效时,可以评价成功,当评价信息为无效时,需要重新评价。用户评价的流程如下图所示:
用户评价的实现界面如下图所示:
3.4新闻公告功能模块的实现界面
公告信息是由管理员负责管理的,用户可以在前台看到公告的详细信息,在公告功能里,公告可以由列表进行标题、时间的展示。当想了解具体的公告信息时,可以点击标题进入公告详情界面。公告功能的实现界面如下图所示:
3.5民宿详情的功能实现界面
在民宿详情界面里可以看到详细的民宿信息,包括类型、户型、面积、价格等。民宿详情里有联系方式,用户可以实现在线预订。民宿详情的实现界面如下图所示:
3.6在线预订功能模块的实现界面
用户在预订民宿时需要填写入住日期、入住天数和订单备注。在线预订信息的实现界面如下图所示:
3.7民宿预订管理功能界面的实现
用户预订成功后可以管理预订信息。民宿预订管理功能的实现果面如下图所示:
3.8我的管理功能界面的实现
四、系统后台管理员功能实现
4.1管理员功能的实现界面
管理员的功能为用户管理、房主管理、民宿管理、房间类型管理、预订管理和系统管理等。实现界面如下图所示:
五、系统后台房主功能实现
5.1房主注册功能的实现界面
房主也可以通过注册实现系统的使用。实现界面如下图所示:
5.2房主功能界面的实现
本界面分为图片、文字、标题、按键、列表等。房主可以发布民宿和管理预订信息以及个人信息。房主界面的实现效果如下图所示:
六、部分核心代码
6.1登录系统主要代码
/**
* 登录
*/
@IgnoreAuth
@RequestMapping(value = "/login")
public R login(String username, String password, String captcha, HttpServletRequest request) {
YonghuEntity user = yonghuService.selectOne(new EntityWrapper<YonghuEntity>().eq("yonghuzhanghao", username));
if(user==null || !user.getMima().equals(password)) {
return R.error("账号或密码不正确");
}
String token = tokenService.generateToken(user.getId(), username,"yonghu", "用户" );
return R.ok().put("token", token);
}
6.2上传文件关键代码
@RequestMapping("/upload")
public R upload(@RequestParam("file") MultipartFile file,String type) throws Exception {
if (file.isEmpty()) {
throw new EIException("上传文件不能为空");
}
String fileExt = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")+1);
File path = new File(ResourceUtils.getURL("classpath:static").getPath());
if(!path.exists()) {
path = new File("");
}
File upload = new File(path.getAbsolutePath(),"/upload/");
if(!upload.exists()) {
upload.mkdirs();
}
String fileName = new Date().getTime()+"."+fileExt;
File dest = new File(upload.getAbsolutePath()+"/"+fileName);
file.transferTo(dest);
/**
* 如果使用idea或者eclipse重启项目,发现之前上传的图片或者文件丢失,将下面一行代码注释打开
* 请将以下的"D:\\springbootq33sd\\src\\main\\resources\\static\\upload"替换成你本地项目的upload路径,
* 并且项目路径不能存在中文、空格等特殊字符
*/
// FileUtils.copyFile(dest, new File("D:\\springbootq33sd\\src\\main\\resources\\static\\upload"+"/"+fileName)); /**修改了路径以后请将该行最前面的//注释去掉**/
if(StringUtils.isNotBlank(type) && type.equals("1")) {
ConfigEntity configEntity = configService.selectOne(new EntityWrapper<ConfigEntity>().eq("name", "faceFile"));
if(configEntity==null) {
configEntity = new ConfigEntity();
configEntity.setName("faceFile");
configEntity.setValue(fileName);
} else {
configEntity.setValue(fileName);
}
configService.insertOrUpdate(configEntity);
}
return R.ok().put("file", fileName);
}