基於Java+SpringBoot+vue+element實現前後端分離房屋租賃系統詳細設計

語言: CN / TW / HK

theme: github

前言介紹:

2021年處於資訊科技高速發展的大背景之下。在今天,缺少手機和電腦幾乎已經成為不可能的事情,人們生活中已經難以離開手機和電腦。針對增加的成本管理和操作,各大商家非常有必要建立自己的網上房屋租賃平臺系統,這既可以讓更多的人體驗到網路所帶來的方便,也有助於提高房屋的租賃。在經過幾十年的高速發展後,網際網路已成為最流行、最普及的媒體,每天的資訊流量甚至能比得上過去十年。其以便捷的資訊交換、快速的溝通速度,悄然地改變著會員的消費方式。簡單、快捷、成本較低是網際網路的特點,在網際網路中,買家賣家不需要謀面也可以進行各種各樣的交易活動,網際網路商業化已經是當代經濟的新趨勢。 “電子商務”(電子商務或電子商務)的概念是在1996年前後在美國學術界提出的。經過數十年的經營,這個概念已經被廣泛接受。B2B、C2C、C2B和B2C是電子商務的四型別型,但目前佔據主流的是B2B和B2C兩種。其中面向商家的管理模式稱為B2B,它對商務系統的效能、安全和服務質量都要求十分嚴格;而直接面向消費者的模式稱為B2C,也是我們所普遍接觸的。到目前為止,電子商務的發展經歷十餘年仍然活力十足,電商應用就像雨後春筍一樣冒出。

我國已經成為世界第二大經濟體,經濟實力高速發展以及百姓生活水平的普遍提高,因此對房屋租賃也提出了更加嚴格的要求,如管理更加妥當、服務更加舒適等。而現在我們所能看到的房屋租賃數量也越來越多,資訊量巨大,房屋租賃平臺系統快速發展使得管理成本不斷擴大。然而,傳統的手工統計方式有許多缺點:實際時間差異、超負荷、高成本和資訊0共享。而在網上房屋租賃平臺系統正是當下各大商家為了適應時代發展所推出的網際網路服務,以其方便高效的服務,在降低工作人員的勞動強度,也減少了很多繁瑣的事情。

本文所設計的線上房屋租賃平臺系統就是在這種客觀條件下進行的,是一項利民利國的、非常有價值的工作。在房屋租賃平臺系統管理方面,傳統的管理方式顯然無法與線上房屋租賃平臺系統相比,線上房屋租賃平臺系統正發揮著越來越重要的作用。線上房屋租賃平臺系統的速度快、資訊量大、安全、簡單都是傳統模式難以企及的優點,正在發揮著越來越重要的作用。在本文中的線上房屋租賃平臺系統是一個基於MySQL資料庫和Java語言的。

功能設計:

主要功能實現:首頁、個人中心、房屋型別管理、房屋租賃管理、會員管理、訂單資訊管理、合同資訊管理、退房評價管理、管理員管理,系統管理等基本功能

系統結構設計: 整個系統是由多個功能模組組合而成的,要將所有的功能模組都一一列舉出來,然後進行逐個的功能設計,使得每一個模組都有相對應的功能設計,然後進行系統整體的設計

本房屋租賃平臺系統選擇B/S結構(Browser/Server,瀏覽器/伺服器結構)和基於Web服務兩種模式。適合在網際網路上進行操作,只要會員能連網,任何時間、任何地點都可以進行系統的操作使用。系統工作原理圖如圖所示: 

功能截圖:

系統首頁: 在系統首頁可以檢視首頁、房屋租賃、公告資訊、個人中心、後臺管理、客服中心等內容

房租租賃: 在房屋租賃頁面通過填寫房屋名稱、型別、圖片、城市、地區、位置、朝向、樓層、樓號、設施、租金、押金、點選次數等資訊進行提交

租賃詳情:

公告資訊:

個人中心:

客服管理:

訂單資訊:

合同資訊:

後臺管理員: 管理員登入進入房屋租賃平臺系統可以檢視首頁、個人中心、房屋型別管理、房屋租賃管理、會員管理、訂單資訊管理、合同資訊管理、退房評價管理、管理員管理,系統管理等資訊

房屋型別: 在房屋型別管理頁面中可以通過填寫型別等內容進行修改

房屋租賃:

會員管理: 在會員管理頁面中可以檢視使用者名稱、密碼、姓名、性別、頭像、手機、郵箱、身份證等資訊,並可根據需要對已有會員管理進行修改或刪除等操作

訂單管理: 訂單資訊管理,在訂單資訊管理頁面中可以檢視訂單編號、房屋名稱、型別、圖片、位置、朝向、樓層、樓號、租金、押金、總價格、租房日期、租房時長、資訊備註、使用者名稱、姓名、手機、身份證等資訊,並可根據需要對已有訂單資訊管理進行修改或刪除等詳細操作

​\

合同管理: 合同資訊管理,在合同資訊管理頁面中可以檢視合同編號、房屋名稱、型別、圖片、位置、樓號、租金、押金、租房日期、租房時長、合同日期、使用者名稱、姓名、手機、身份證等內容,並且根據需要對已有合同資訊管理進行詳情,修改或刪除等詳細操作

系統資訊:

​\ 客服輪播圖等

資料設計:

將資料庫概念設計的E-R圖轉換為關係資料庫。在關係資料庫中,資料關係由資料表組成,但是表的結構表現在表的欄位上。

表4-1 allusers表

| | | | | | -------- | ------- | -- | ------------- | | 列名 | 資料型別 | 長度 | 約束 | | id | int | 11 | NOT NULL | | username | varchar | 50 |  default NULL | | pwd | varchar | 50 |  default NULL | | cx | varchar | 50 |  default NULL |

表4-2dingdanxinxi表

| | | | | | --------------- | ------- | -- | ------------ | | 列名 | 資料型別 | 長度 | 約束 | | 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表

| | | | | | ------- | ------- | -- | ------------ | | 列名 | 資料型別 | 長度 | 約束 | | id |  int | 11 | NOT NULL | | addtime | varchar | 50 | default NULL | | leixing | varchar | 50 | default NULL |

表4-4:huiyuan表

| | | | | | ------------ | ------- | -- | ------------ | | 列名 | 資料型別 | 長度 | 約束 | | 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 |

程式碼實現:

```java

/* * 房屋租賃 * 後端介面 * @author * @email * @date 2022-01-30 08:44:55 / @RestController @RequestMapping("/fangwuzulin") public class FangwuzulinController { @Autowired private 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 開發工具及技術

1.4 國內外現狀

第2章 系統分析

2.1 可行性分析

2.2總體設計原則

2.3系統需求分析

2.4 業務流程分析

2.5 資料流圖

第3章 系統設計

3.1 系統功能設計

3.2 資料庫設計

第4章 系統實現

4.1前臺首頁功能模組

4.2管理員功能模組

4.3會員功能模組

第5章 軟體測試

5.1軟體測試的重要性

5.2測試例項的研究與選擇

5.3測試環境與測試條件

5.4系統執行情況

5.5系統評價

第6章 總結

參考文獻:

致謝

獲取原始碼:

大家點贊、收藏、關注、評論啦 、檢視主頁獲取聯絡方式

打卡 文章 更新 251/  365天

「其他文章」