背景

大学生租房系统设计的目的是建立一个高效的平台,采用简洁高效的Java语言与Mysql数据库等技术,设计和开发了本大学生租房系统设计。该系统主要实现了用户和房主通过系统注册用户,登录系统后能够编辑自己的个人信息、查看首页,房屋信息,房屋评价,公告资讯,个人中心,后台管理,意见反馈等,还可以对后台进行操作,以及管理员可以进行首页,个人中心,房主管理,用户管理,房屋类型管理,房屋信息管理,预约看房管理,定金留房管理,租赁订单管理,房屋评价管理等功能的管理。计算机技术在现代管理中的应用,使计算机成为用户应用现代技术的重要工具,能够有效的解决获取信息便捷化、全面化的问题,提高效率。

系统主要包括首页,个人中心,房主管理,用户管理,房屋类型管理,房屋信息管理,预约看房管理,定金留房管理,租赁订单管理,房屋评价管理等功能的操作系统,管理员是整个系统的核心。而用户登录到系统前台,可以对首页,房屋信息,房屋评价,公告资讯,个人中心,后台管理,意见反馈等进行查看以及其他的操作。

相关技术

SpringBoot

SpringBoot是一个全新开源的轻量级框架。基于Spring4.0设计,其不仅继承了Spring框架原来有的优秀特性,而且还通过简化配置文件来进一步简化了Spring应用的整个搭建以及开发过程。另外在原本的Spring中由于随着项目的扩大导入的jar包数量越来越大,随之出现了jar包版本之间的兼容性问题,而此时SpringBoot通过集成大量的框架使得依赖包的版本冲突,以及引用的不稳定性问题得到了很好的解决。

SpringBoot可以看做是Spring的加强版本,但实质上都是Spring的相关技术,有了这些优秀的开源框架,程序员在开发过程中将事半功倍。

vue

Vue是一套用于构建用户界面的渐进式的js框架,发布于2014年2月。与其它大型框架不同的是,Vue被设计为可以自底向上逐层应用。Vue的核心库只关注视图层,不仅易于上手,还便于与第三方库( 如: vue-router,vue-resource,vuex)或既有项目整合。

系统设计

根据大学生租房系统的功能需求,进行系统设计。

前台功能:进入系统可以实现首页,房屋信息,房屋评价,公告资讯,个人中心,后台管理,意见反馈等功能进行操作;
后台主要是管理员,房主和用户,主要功能包括首页,个人中心,房主管理,用户管理,房屋类型管理,房屋信息管理,预约看房管理,定金留房管理,租赁订单管理,房屋评价管理等。

系统对这些功能进行整合,产生的功能结构图如下:

数据库设计

ER图是由实体及其关系构成的图,通过E/R图可以清楚地描述系统涉及到的实体之间的相互关系。在系统中对一些主要的几个关键实体如下图:

1.用户注册实体
用户注册实体包括用户名,密码,确认密码,姓名,手机,身份证等属性。用户注册实体图如图4-2所示:


2.房屋信息实体
房屋信息实体包括房屋类型,地区,位置,朝向,楼层,楼号,房屋面积,房屋设施,房屋状态,房屋租金,房主账号,房主姓名等属性。房屋信息实体图如图4-3所示:


数据库概念结构设计后,可以数据库概念转化实际的数据模型,这是一种数据库的逻辑结构,就是将概念结构与支持数据库管理系统的模型相符合。具体的表设计如下所示。此处只展示部分表。

系统详细设计

系统功能模块

大学生租房系统,在系统首页可以查看首页,房屋信息,房屋评价,公告资讯,个人中心,后台管理,意见反馈等内容,并进行详细操作。

房屋信息,在房屋信息页面可以查看房屋类型,地区,位置,朝向,楼层,楼号,房屋面积,房屋设施,房屋状态,房屋租金,房主账号,房主姓名等内容,并可以进行预约看房,定金留房等操作。

管理员模块

管理员登录系统后,可以对首页,个人中心,房主管理,用户管理,房屋类型管理,房屋信息管理,预约看房管理,定金留房管理,租赁订单管理,房屋评价管理等功能进行相应的操作。


房主管理,在房主管理页面可以对索引,房主账号,房主姓名,性别,照片,联系电话,身份证等内容进行详情,修改和删除等操作。

代码实现

由于代码较多,此处只展示部分代码。

房屋信息接口

/*** 房屋信息* 后端接口* @author * @email * @date 2022-04-10 15:56:44*/
@RestController
@RequestMapping("/fangwuxinxi")
public class FangwuxinxiController {@Autowiredprivate FangwuxinxiService fangwuxinxiService;@Autowiredprivate StoreupService storeupService;/*** 后端列表*/@RequestMapping("/page")public R page(@RequestParam Map<String, Object> params,FangwuxinxiEntity fangwuxinxi,HttpServletRequest request){String tableName = request.getSession().getAttribute("tableName").toString();if(tableName.equals("fangzhu")) {fangwuxinxi.setFangzhuzhanghao((String)request.getSession().getAttribute("username"));}EntityWrapper<FangwuxinxiEntity> ew = new EntityWrapper<FangwuxinxiEntity>();PageUtils page = fangwuxinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, fangwuxinxi), params), params));return R.ok().put("data", page);}/*** 前端列表*/@IgnoreAuth@RequestMapping("/list")public R list(@RequestParam Map<String, Object> params,FangwuxinxiEntity fangwuxinxi, HttpServletRequest request){EntityWrapper<FangwuxinxiEntity> ew = new EntityWrapper<FangwuxinxiEntity>();PageUtils page = fangwuxinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, fangwuxinxi), params), params));return R.ok().put("data", page);}/*** 列表*/@RequestMapping("/lists")public R list( FangwuxinxiEntity fangwuxinxi){EntityWrapper<FangwuxinxiEntity> ew = new EntityWrapper<FangwuxinxiEntity>();ew.allEq(MPUtil.allEQMapPre( fangwuxinxi, "fangwuxinxi")); return R.ok().put("data", fangwuxinxiService.selectListView(ew));}/*** 查询*/@RequestMapping("/query")public R query(FangwuxinxiEntity fangwuxinxi){EntityWrapper< FangwuxinxiEntity> ew = new EntityWrapper< FangwuxinxiEntity>();ew.allEq(MPUtil.allEQMapPre( fangwuxinxi, "fangwuxinxi")); FangwuxinxiView fangwuxinxiView =  fangwuxinxiService.selectView(ew);return R.ok("查询房屋信息成功").put("data", fangwuxinxiView);}/*** 后端详情*/@RequestMapping("/info/{id}")public R info(@PathVariable("id") Long id){FangwuxinxiEntity fangwuxinxi = fangwuxinxiService.selectById(id);fangwuxinxi.setClicktime(new Date());fangwuxinxiService.updateById(fangwuxinxi);return R.ok().put("data", fangwuxinxi);}/*** 前端详情*/@IgnoreAuth@RequestMapping("/detail/{id}")public R detail(@PathVariable("id") Long id){FangwuxinxiEntity fangwuxinxi = fangwuxinxiService.selectById(id);fangwuxinxi.setClicktime(new Date());fangwuxinxiService.updateById(fangwuxinxi);return R.ok().put("data", fangwuxinxi);}/*** 后端保存*/@RequestMapping("/save")public R save(@RequestBody FangwuxinxiEntity fangwuxinxi, HttpServletRequest request){fangwuxinxi.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());//ValidatorUtils.validateEntity(fangwuxinxi);fangwuxinxiService.insert(fangwuxinxi);return R.ok();}/*** 前端保存*/@RequestMapping("/add")public R add(@RequestBody FangwuxinxiEntity fangwuxinxi, HttpServletRequest request){fangwuxinxi.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());//ValidatorUtils.validateEntity(fangwuxinxi);fangwuxinxiService.insert(fangwuxinxi);return R.ok();}/*** 修改*/@RequestMapping("/update")public R update(@RequestBody FangwuxinxiEntity fangwuxinxi, HttpServletRequest request){//ValidatorUtils.validateEntity(fangwuxinxi);fangwuxinxiService.updateById(fangwuxinxi);//全部更新return R.ok();}/*** 删除*/@RequestMapping("/delete")public R delete(@RequestBody Long[] ids){fangwuxinxiService.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<FangwuxinxiEntity> wrapper = new EntityWrapper<FangwuxinxiEntity>();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("fangzhu")) {wrapper.eq("fangzhuzhanghao", (String)request.getSession().getAttribute("username"));}int count = fangwuxinxiService.selectCount(wrapper);return R.ok().put("count", count);}/*** 前端智能排序*/@IgnoreAuth@RequestMapping("/autoSort")public R autoSort(@RequestParam Map<String, Object> params,FangwuxinxiEntity fangwuxinxi, HttpServletRequest request,String pre){EntityWrapper<FangwuxinxiEntity> ew = new EntityWrapper<FangwuxinxiEntity>();Map<String, Object> newMap = new HashMap<String, Object>();Map<String, Object> param = new HashMap<String, Object>();Iterator<Map.Entry<String, Object>> it = param.entrySet().iterator();while (it.hasNext()) {Map.Entry<String, Object> entry = it.next();String key = entry.getKey();String newKey = entry.getKey();if (pre.endsWith(".")) {newMap.put(pre + newKey, entry.getValue());} else if (StringUtils.isEmpty(pre)) {newMap.put(newKey, entry.getValue());} else {newMap.put(pre + "." + newKey, entry.getValue());}}params.put("sort", "clicktime");params.put("order", "desc");PageUtils page = fangwuxinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, fangwuxinxi), params), params));return R.ok().put("data", page);}/*** 协同算法(按收藏推荐)*/@RequestMapping("/autoSort2")public R autoSort2(@RequestParam Map<String, Object> params,FangwuxinxiEntity fangwuxinxi, HttpServletRequest request){String userId = request.getSession().getAttribute("userId").toString();String inteltypeColumn = "fangwuleixing";List<StoreupEntity> storeups = storeupService.selectList(new EntityWrapper<StoreupEntity>().eq("type", 1).eq("userid", userId).eq("tablename", "fangwuxinxi").orderBy("addtime", false));List<String> inteltypes = new ArrayList<String>();Integer limit = params.get("limit")==null?10:Integer.parseInt(params.get("limit").toString());List<FangwuxinxiEntity> fangwuxinxiList = new ArrayList<FangwuxinxiEntity>();//去重if(storeups!=null && storeups.size()>0) {for(StoreupEntity s : storeups) {fangwuxinxiList.addAll(fangwuxinxiService.selectList(new EntityWrapper<FangwuxinxiEntity>().eq(inteltypeColumn, s.getInteltype())));}}EntityWrapper<FangwuxinxiEntity> ew = new EntityWrapper<FangwuxinxiEntity>();params.put("sort", "id");params.put("order", "desc");PageUtils page = fangwuxinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, fangwuxinxi), params), params));List<FangwuxinxiEntity> pageList = (List<FangwuxinxiEntity>)page.getList();if(fangwuxinxiList.size()<limit) {int toAddNum = (limit-fangwuxinxiList.size())<=pageList.size()?(limit-fangwuxinxiList.size()):pageList.size();for(FangwuxinxiEntity o1 : pageList) {boolean addFlag = true;for(FangwuxinxiEntity o2 : fangwuxinxiList) {if(o1.getId().intValue()==o2.getId().intValue()) {addFlag = false;break;}}if(addFlag) {fangwuxinxiList.add(o1);if(--toAddNum==0) break;}}}page.setList(fangwuxinxiList);return R.ok().put("data", page);}}

预约看房

/*** 预约看房* 后端接口* @author * @email * @date 2022-04-10 15:56:44*/
@RestController
@RequestMapping("/yuyuekanfang")
public class YuyuekanfangController {@Autowiredprivate YuyuekanfangService yuyuekanfangService;/*** 后端列表*/@RequestMapping("/page")public R page(@RequestParam Map<String, Object> params,YuyuekanfangEntity yuyuekanfang,HttpServletRequest request){String tableName = request.getSession().getAttribute("tableName").toString();if(tableName.equals("fangzhu")) {yuyuekanfang.setFangzhuzhanghao((String)request.getSession().getAttribute("username"));}if(tableName.equals("yonghu")) {yuyuekanfang.setYonghuming((String)request.getSession().getAttribute("username"));}EntityWrapper<YuyuekanfangEntity> ew = new EntityWrapper<YuyuekanfangEntity>();PageUtils page = yuyuekanfangService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, yuyuekanfang), params), params));return R.ok().put("data", page);}/*** 前端列表*/@IgnoreAuth@RequestMapping("/list")public R list(@RequestParam Map<String, Object> params,YuyuekanfangEntity yuyuekanfang, HttpServletRequest request){EntityWrapper<YuyuekanfangEntity> ew = new EntityWrapper<YuyuekanfangEntity>();PageUtils page = yuyuekanfangService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, yuyuekanfang), params), params));return R.ok().put("data", page);}/*** 列表*/@RequestMapping("/lists")public R list( YuyuekanfangEntity yuyuekanfang){EntityWrapper<YuyuekanfangEntity> ew = new EntityWrapper<YuyuekanfangEntity>();ew.allEq(MPUtil.allEQMapPre( yuyuekanfang, "yuyuekanfang")); return R.ok().put("data", yuyuekanfangService.selectListView(ew));}/*** 查询*/@RequestMapping("/query")public R query(YuyuekanfangEntity yuyuekanfang){EntityWrapper< YuyuekanfangEntity> ew = new EntityWrapper< YuyuekanfangEntity>();ew.allEq(MPUtil.allEQMapPre( yuyuekanfang, "yuyuekanfang")); YuyuekanfangView yuyuekanfangView =  yuyuekanfangService.selectView(ew);return R.ok("查询预约看房成功").put("data", yuyuekanfangView);}/*** 后端详情*/@RequestMapping("/info/{id}")public R info(@PathVariable("id") Long id){YuyuekanfangEntity yuyuekanfang = yuyuekanfangService.selectById(id);return R.ok().put("data", yuyuekanfang);}/*** 前端详情*/@IgnoreAuth@RequestMapping("/detail/{id}")public R detail(@PathVariable("id") Long id){YuyuekanfangEntity yuyuekanfang = yuyuekanfangService.selectById(id);return R.ok().put("data", yuyuekanfang);}/*** 后端保存*/@RequestMapping("/save")public R save(@RequestBody YuyuekanfangEntity yuyuekanfang, HttpServletRequest request){yuyuekanfang.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());//ValidatorUtils.validateEntity(yuyuekanfang);yuyuekanfangService.insert(yuyuekanfang);return R.ok();}/*** 前端保存*/@RequestMapping("/add")public R add(@RequestBody YuyuekanfangEntity yuyuekanfang, HttpServletRequest request){yuyuekanfang.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());//ValidatorUtils.validateEntity(yuyuekanfang);yuyuekanfangService.insert(yuyuekanfang);return R.ok();}/*** 修改*/@RequestMapping("/update")public R update(@RequestBody YuyuekanfangEntity yuyuekanfang, HttpServletRequest request){//ValidatorUtils.validateEntity(yuyuekanfang);yuyuekanfangService.updateById(yuyuekanfang);//全部更新return R.ok();}/*** 删除*/@RequestMapping("/delete")public R delete(@RequestBody Long[] ids){yuyuekanfangService.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<YuyuekanfangEntity> wrapper = new EntityWrapper<YuyuekanfangEntity>();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("fangzhu")) {wrapper.eq("fangzhuzhanghao", (String)request.getSession().getAttribute("username"));}if(tableName.equals("yonghu")) {wrapper.eq("yonghuming", (String)request.getSession().getAttribute("username"));}int count = yuyuekanfangService.selectCount(wrapper);return R.ok().put("count", count);}}

基于SpringBoot的大学生租房系统相关推荐

  1. 基于springboot实现大学生租房系统演示【附项目源码】

    基于springboot实现大学生租房系统演示 开发语言:Java 框架:springboot JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7 数据库工具:Navicat ...

  2. 基于springboot实现大学生租房系统演示【附项目源码】分享

    基于springboot实现大学生租房系统演示 开发语言:Java 框架:springboot JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7 数据库工具:Navicat ...

  3. 基于springboot的大学生租房系统源码论文数据库

    3.1系统功能 现在无论是在PC上还是在手机上,相信全国所有地方都在进行大学生租房管理.随着经济的不断发展,系统管理也在不断增多,大学生租房系统就是其中一种,很多人会登录到相关的租房系统查看租房信息, ...

  4. 计算机毕业设计之java+springboot基于vue的大学生租房系统-房屋租赁系统

    项目介绍 伴随着全球信息化发展,行行业业都与计算机技术相衔接,计算机技术普遍运用于各大行业,大学生租房系统便是其中一种.实施计算机系统来管理可以降低大学生租房管理的成本,使整个大学生租房的发展和服务水 ...

  5. (Java毕业设计)大学生租房系统(基于java+springboot)

    您好!我是岛上程序猿,感谢您阅读本文,欢迎一键三连哦. 开发环境 开发语言:Java 框架:springboot JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7(一定要5 ...

  6. 基于python+django+vue的大学生租房系统pycharm源码

    功能介绍 本大学生租房系统使用简洁的框架结构,专门用于用户浏览首页,房屋信息,房屋评价,公告资讯,个人中心,后台管理,意见反馈等信息,对个人信息进行修改等,以及系统管理员对首页,个人中心,房主管理,用 ...

  7. 基于javaweb的大学生兼职系统(java+springboot+jsp+mysql)

    基于javaweb的大学生兼职系统(java+springboot+jsp+mysql) 运行环境 Java≥8.MySQL≥5.7 开发工具 eclipse/idea/myeclipse/sts等均 ...

  8. springboot毕设项目大学生租房系统s9331(java+VUE+Mybatis+Maven+Mysql)

    springboot毕设项目大学生租房系统s9331(java+VUE+Mybatis+Maven+Mysql) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBu ...

  9. Springboot毕设项目大学生租房系统s9331java+VUE+Mybatis+Maven+Mysql+sprnig)

    Springboot毕设项目大学生租房系统s9331java+VUE+Mybatis+Maven+Mysql+sprnig) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql ...

最新文章

  1. 前端问题多行点点点的问题
  2. [网络安全自学篇] 六十五.Vulnhub靶机渗透之环境搭建及JIS-CTF入门和蚁剑提权示例(一)
  3. 斯坦福大学教育学院院长:学习本身就是一门学问
  4. mysql 查看root_Mysql的Root密码忘记,查看或修改的解决方法(图文介绍)
  5. 资深架构专家聊架构之道:灵活、稳定、高可用15点精要
  6. linux下的C语言开发(进程等待)
  7. 添加七牛云存储_3月1日七牛云存储割韭菜的应对方法
  8. 系统逻辑架构图_如何画好一张架构图?(内含知识图谱)
  9. 基于STM32设计的健康检测设备(测温心率计步)
  10. 高效办公 1.2 用Python新建Excel文件
  11. 黑客租用阿里云平台攻击淘宝,9900万账户信息遭窃取
  12. Plane(Fixed Wing) ——ArduPilot——飞行模式
  13. python实现crc16校验
  14. SVD(奇异值矩阵分解) 转载(+师兄ppt)
  15. win11更新后,edge浏览器闪屏掉帧
  16. Prolific USB-to-Serial Comm Port驱动
  17. Arch Linux 添加 BlackArch 镜像源
  18. ExtJs6入门-使用SenchaCmd命令创建第一个ExtJs6的HelloWorld项目
  19. ORACLE 统计各个部门 工资级别为小于2000,2000-3000,3000+的分别为多少
  20. WWDC21 - App Store Server API 实践总结

热门文章

  1. 江财计算机排名,江西财经大学排名
  2. 对python课程的建议_python听课的感悟与建议
  3. matlab画最小二乘线,matlab非线性最小二乘法求解 - 计算模拟 - 小木虫 - 学术 科研 互动社区...
  4. 探查 JDBC 故障【转载】
  5. 头盔检测数据集和论文
  6. 机器学习---之量纲与无量纲
  7. 多接口调用,使用Promise.all、Promise.race和Promise.any
  8. 《推荐系统实践》读书笔记-1.什么是推荐系统
  9. 如何做网站推广-外链为皇
  10. 【一起入门MachineLearning】中科院机器学习第*课-线性鉴别分析:Fisher判别