基于JavaSpringboot+Vue实现前后端分离房屋租赁系统
前言介紹:
? ? ? ?2021年處于信息科技高速發(fā)展的大背景之下。在今天,缺少手機(jī)和電腦幾乎已經(jīng)成為不可能的事情,人們生活中已經(jīng)難以離開手機(jī)和電腦。針對(duì)增加的成本管理和操作,各大商家非常有必要建立自己的網(wǎng)上房屋租賃平臺(tái)系統(tǒng),這既可以讓更多的人體驗(yàn)到網(wǎng)絡(luò)所帶來的方便,也有助于提高房屋的租賃。在經(jīng)過幾十年的高速發(fā)展后,互聯(lián)網(wǎng)已成為最流行、最普及的媒體,每天的信息流量甚至能比得上過去十年。其以便捷的信息交換、快速的溝通速度,悄然地改變著會(huì)員的消費(fèi)方式。簡(jiǎn)單、快捷、成本較低是互聯(lián)網(wǎng)的特點(diǎn),在互聯(lián)網(wǎng)中,買家賣家不需要謀面也可以進(jìn)行各種各樣的交易活動(dòng),互聯(lián)網(wǎng)商業(yè)化已經(jīng)是當(dāng)代經(jīng)濟(jì)的新趨勢(shì)。 “電子商務(wù)”(電子商務(wù)或電子商務(wù))的概念是在1996年前后在美國學(xué)術(shù)界提出的。經(jīng)過數(shù)十年的經(jīng)營,這個(gè)概念已經(jīng)被廣泛接受。B2B、C2C、C2B和B2C是電子商務(wù)的四類型型,但目前占據(jù)主流的是B2B和B2C兩種。其中面向商家的管理模式稱為B2B,它對(duì)商務(wù)系統(tǒng)的性能、安全和服務(wù)質(zhì)量都要求十分嚴(yán)格;而直接面向消費(fèi)者的模式稱為B2C,也是我們所普遍接觸的。到目前為止,電子商務(wù)的發(fā)展經(jīng)歷十余年仍然活力十足,電商應(yīng)用就像雨后春筍一樣冒出。
功能設(shè)計(jì):
主要功能實(shí)現(xiàn):首頁、個(gè)人中心、房屋類型管理、房屋租賃管理、會(huì)員管理、訂單信息管理、合同信息管理、退房評(píng)價(jià)管理、管理員管理,系統(tǒng)管理等基本功能
系統(tǒng)結(jié)構(gòu)設(shè)計(jì):?整個(gè)系統(tǒng)是由多個(gè)功能模塊組合而成的,要將所有的功能模塊都一一列舉出來,然后進(jìn)行逐個(gè)的功能設(shè)計(jì),使得每一個(gè)模塊都有相對(duì)應(yīng)的功能設(shè)計(jì),然后進(jìn)行系統(tǒng)整體的設(shè)計(jì)
功能截圖:
系統(tǒng)首頁:在系統(tǒng)首頁可以查看首頁、房屋租賃、公告信息、個(gè)人中心、后臺(tái)管理、客服中心等內(nèi)容
房租租賃:在房屋租賃頁面通過填寫房屋名稱、類型、圖片、城市、地區(qū)、位置、朝向、樓層、樓號(hào)、設(shè)施、租金、押金、點(diǎn)擊次數(shù)等信息進(jìn)行提交
租賃詳情:
公告信息:
個(gè)人中心:
客服管理:
訂單信息:
合同信息:
后臺(tái)管理員:管理員登錄進(jìn)入房屋租賃平臺(tái)系統(tǒng)可以查看首頁、個(gè)人中心、房屋類型管理、房屋租賃管理、會(huì)員管理、訂單信息管理、合同信息管理、退房評(píng)價(jià)管理、管理員管理,系統(tǒng)管理等信息
房屋類型:在房屋類型管理頁面中可以通過填寫類型等內(nèi)容進(jìn)行修改
房屋租賃:
會(huì)員管理:在會(huì)員管理頁面中可以查看用戶名、密碼、姓名、性別、頭像、手機(jī)、郵箱、身份證等信息,并可根據(jù)需要對(duì)已有會(huì)員管理進(jìn)行修改或刪除等操作
訂單管理:訂單信息管理,在訂單信息管理頁面中可以查看訂單編號(hào)、房屋名稱、類型、圖片、位置、朝向、樓層、樓號(hào)、租金、押金、總價(jià)格、租房日期、租房時(shí)長(zhǎng)、信息備注、用戶名、姓名、手機(jī)、身份證等信息,并可根據(jù)需要對(duì)已有訂單信息管理進(jìn)行修改或刪除等詳細(xì)操作
合同管理:合同信息管理,在合同信息管理頁面中可以查看合同編號(hào)、房屋名稱、類型、圖片、位置、樓號(hào)、租金、押金、租房日期、租房時(shí)長(zhǎng)、合同日期、用戶名、姓名、手機(jī)、身份證等內(nèi)容,并且根據(jù)需要對(duì)已有合同信息管理進(jìn)行詳情,修改或刪除等詳細(xì)操作
系統(tǒng)資訊:
客服輪播圖等
數(shù)據(jù)設(shè)計(jì):
將數(shù)據(jù)庫概念設(shè)計(jì)的E-R圖轉(zhuǎn)換為關(guān)系數(shù)據(jù)庫。在關(guān)系數(shù)據(jù)庫中,數(shù)據(jù)關(guān)系由數(shù)據(jù)表組成,但是表的結(jié)構(gòu)表現(xiàn)在表的字段上。
表4-1 allusers表
| 列名 | 數(shù)據(jù)類型 | 長(zhǎng)度 | 約束 |
| id | int | 11 | NOT NULL |
| username | varchar | 50 | ?default NULL |
| pwd | varchar | 50 | ?default NULL |
| cx | varchar | 50 | ?default NULL |
表4-2dingdanxinxi表
| 列名 | 數(shù)據(jù)類型 | 長(zhǎng)度 | 約束 |
| id | int | 11 | NOT NULL |
| addtime | varchar | 50 | default NULL |
| dingdanbianhao | varchar | 50 | default NULL |
| fangwumingcheng | varchar | 50 | default NULL |
| leixing | varchar | 50 | default NULL |
| tupian | varchar | 50 | default NULL |
| weizhi | varchar | 50 | default NULL |
| chaoxiang | varchar | 50 | default NULL |
| louceng | varchar | 50 | default NULL |
| louhao | varchar | 50 | default NULL |
| zujin | varchar | 50 | default NULL |
| yajin | varchar | 50 | default NULL |
| zongjiage | varchar | 50 | default NULL |
| zufangriqi | varchar | 50 | default NULL |
| zufangshizhang | varchar | 50 | default NULL |
| xinxibeizhu | varchar | 50 | default NULL |
| yonghuming | varchar | 50 | default NULL |
| xingming | varchar | 50 | default NULL |
| shouji | varchar | 50 | default NULL |
| shenfenzheng | varchar | 50 | default NULL |
| sfsh | varchar | 50 | default NULL |
| shhf | varchar | 50 | default NULL |
表4-3:fangwuleixing表
| 列名 | 數(shù)據(jù)類型 | 長(zhǎng)度 | 約束 |
| id | ?int | 11 | NOT NULL |
| addtime | varchar | 50 | default NULL |
| leixing | varchar | 50 | default NULL |
表4-4:huiyuan表
| 列名 | 數(shù)據(jù)類型 | 長(zhǎng)度 | 約束 |
| id | ?int | 11 | NOT NULL |
| addtime | varchar | 50 | default NULL |
| yonghuming | varchar | 50 | default NULL |
| mima | varchar | 50 | default NULL |
| xingming | varchar | 50 | default NULL |
| xingbie | varchar | 50 | default NULL |
| touxiang | varchar | 50 | default NULL |
| shouji | varchar | 50 | default NULL |
| youxiang | varchar | 50 | default NULL |
| shenfenzheng | varchar | 50 | default NULL |
代碼實(shí)現(xiàn):
/*** 房屋租賃* 后端接口* @author * @email * @date 2022-01-30 08:44:55*/ @RestController @RequestMapping("/fangwuzulin") public class FangwuzulinController {@Autowiredprivate FangwuzulinService fangwuzulinService;/*** 后端列表*/@RequestMapping("/page")public R page(@RequestParam Map<String, Object> params,FangwuzulinEntity fangwuzulin, HttpServletRequest request){EntityWrapper<FangwuzulinEntity> ew = new EntityWrapper<FangwuzulinEntity>();PageUtils page = fangwuzulinService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, fangwuzulin), params), params));return R.ok().put("data", page);}/*** 前端列表*/@IgnoreAuth@RequestMapping("/list")public R list(@RequestParam Map<String, Object> params,FangwuzulinEntity fangwuzulin, HttpServletRequest request){EntityWrapper<FangwuzulinEntity> ew = new EntityWrapper<FangwuzulinEntity>();PageUtils page = fangwuzulinService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, fangwuzulin), params), params));return R.ok().put("data", page);}/*** 列表*/@RequestMapping("/lists")public R list( FangwuzulinEntity fangwuzulin){EntityWrapper<FangwuzulinEntity> ew = new EntityWrapper<FangwuzulinEntity>();ew.allEq(MPUtil.allEQMapPre( fangwuzulin, "fangwuzulin")); return R.ok().put("data", fangwuzulinService.selectListView(ew));}/*** 查詢*/@RequestMapping("/query")public R query(FangwuzulinEntity fangwuzulin){EntityWrapper< FangwuzulinEntity> ew = new EntityWrapper< FangwuzulinEntity>();ew.allEq(MPUtil.allEQMapPre( fangwuzulin, "fangwuzulin")); FangwuzulinView fangwuzulinView = fangwuzulinService.selectView(ew);return R.ok("查詢房屋租賃成功").put("data", fangwuzulinView);}/*** 后端詳情*/@RequestMapping("/info/{id}")public R info(@PathVariable("id") Long id){FangwuzulinEntity fangwuzulin = fangwuzulinService.selectById(id);fangwuzulin.setClicknum(fangwuzulin.getClicknum()+1);fangwuzulin.setClicktime(new Date());fangwuzulinService.updateById(fangwuzulin);return R.ok().put("data", fangwuzulin);}/*** 前端詳情*/@IgnoreAuth@RequestMapping("/detail/{id}")public R detail(@PathVariable("id") Long id){FangwuzulinEntity fangwuzulin = fangwuzulinService.selectById(id);fangwuzulin.setClicknum(fangwuzulin.getClicknum()+1);fangwuzulin.setClicktime(new Date());fangwuzulinService.updateById(fangwuzulin);return R.ok().put("data", fangwuzulin);}/*** 后端保存*/@RequestMapping("/save")public R save(@RequestBody FangwuzulinEntity fangwuzulin, HttpServletRequest request){fangwuzulin.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());//ValidatorUtils.validateEntity(fangwuzulin);fangwuzulinService.insert(fangwuzulin);return R.ok();}/*** 前端保存*/@RequestMapping("/add")public R add(@RequestBody FangwuzulinEntity fangwuzulin, HttpServletRequest request){fangwuzulin.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());//ValidatorUtils.validateEntity(fangwuzulin);fangwuzulinService.insert(fangwuzulin);return R.ok();}/*** 修改*/@RequestMapping("/update")public R update(@RequestBody FangwuzulinEntity fangwuzulin, HttpServletRequest request){//ValidatorUtils.validateEntity(fangwuzulin);fangwuzulinService.updateById(fangwuzulin);//全部更新return R.ok();}/*** 刪除*/@RequestMapping("/delete")public R delete(@RequestBody Long[] ids){fangwuzulinService.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<FangwuzulinEntity> wrapper = new EntityWrapper<FangwuzulinEntity>();if(map.get("remindstart")!=null) {wrapper.ge(columnName, map.get("remindstart"));}if(map.get("remindend")!=null) {wrapper.le(columnName, map.get("remindend"));}int count = fangwuzulinService.selectCount(wrapper);return R.ok().put("count", count);}/*** 前端智能排序*/@IgnoreAuth@RequestMapping("/autoSort")public R autoSort(@RequestParam Map<String, Object> params,FangwuzulinEntity fangwuzulin, HttpServletRequest request,String pre){EntityWrapper<FangwuzulinEntity> ew = new EntityWrapper<FangwuzulinEntity>();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", "clicknum");params.put("order", "desc");PageUtils page = fangwuzulinService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, fangwuzulin), params), params));return R.ok().put("data", page);}}論文參考:
第1章?緒???論
1.1課題背景
1.2 課題意義
1.3 開發(fā)工具及技術(shù)
1.4 國內(nèi)外現(xiàn)狀
第2章 系統(tǒng)分析
2.1 可行性分析
2.2總體設(shè)計(jì)原則
2.3系統(tǒng)需求分析
2.4?業(yè)務(wù)流程分析
2.5?數(shù)據(jù)流圖
第3章 系統(tǒng)設(shè)計(jì)
3.1 系統(tǒng)功能設(shè)計(jì)
3.2 數(shù)據(jù)庫設(shè)計(jì)
第4章 系統(tǒng)實(shí)現(xiàn)
4.1前臺(tái)首頁功能模塊
4.2管理員功能模塊
4.3會(huì)員功能模塊
第5章?軟件測(cè)試
5.1軟件測(cè)試的重要性
5.2測(cè)試實(shí)例的研究與選擇
5.3測(cè)試環(huán)境與測(cè)試條件
5.4系統(tǒng)運(yùn)行情況
5.5系統(tǒng)評(píng)價(jià)
第6章?總結(jié)
參考文獻(xiàn):
致謝
總結(jié)
以上是生活随笔為你收集整理的基于JavaSpringboot+Vue实现前后端分离房屋租赁系统的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 工业互联网智能智造-工业企业大数据汇聚通
- 下一篇: html5倒计时秒杀怎么做,vue 设