張 文,方 巍,2,賈雪磊
(1.南京信息工程大學 計算機與軟件學院,江蘇 南京 210044;2.蘇州大學 江蘇省計算機信息處理技術重點實驗室,江蘇 蘇州 215006)
在信息發達的當下,隨著科技的發展和時代的進步,互聯網在國內始終保持著一種迅猛發展的態勢,互聯網代替和完善傳統模式順應了時代發展的潮流,計算機應用技術的發展帶來的便利已經在生活的方方面面得到了直觀的體現。
由于國內有著相對較高的住房自有率和流動人口量,住房問題是當前一項嚴重的社會問題。而經過數年的租賃市場情況可以發現,傳統中介式租屋模式已無法滿足人們對高效實時信息資源的需求,房屋租賃管理系統也在不斷研究開發并在實際應用中得以體現。然而,目前實現的房屋租賃系統大多還依賴于中介,但中介這一角色在很多地區都普遍存在著服務不規范,合租者之間租賃關系不穩定,市場上房源信息虛假有隱瞞等一系列問題,這在很大程度上影響了租賃市場的發展,造成交易成本較高,風險較大,中間商賺取差價過高,作息不能磨合的合租人毀約等嚴重后果。針對以上問題,該系統在實現了房屋租賃系統基本功能的基礎之上,不再過多依賴于中介角色,為用戶直接上傳房源信息提供平臺,并增加了為用戶個性化推薦房源和作息喜好相似舍友的功能。文中旨在開發一款功能完善、操作簡單的智能化合租系統,順應當代人們的需求。近年來,開發出可以使得租房流程自主化、透明化、高效化的在線個性化推薦合租系統具有一定的研究價值和意義。
文中基于SSM的在線合租系統的設計與實現展開論述,主要介紹了系統總體設計、數據庫設計、系統功能設計實現和系統測試設計等。
該系統采用B/S結構和SSM框架設計[1-4],主要分為四個層次:視圖層、控制層、服務層、數據持久層。系統架構[5]如圖1所示。

圖1 系統架構
(1)視圖層:主要用于系統界面的顯示。主要采用Bootstrap框架進行開發,系統所有功能模塊直接面向用戶,是用戶對系統最直接的感受。
(2)控制層:在調用修改數據時,涉及到form表單中字段信息變化通過Controller函數寫JavaBean對象,Spring框架自動對其封裝。
(3)服務層:它是數據庫訪問接口,用于從數據源處獲取數據。業務邏輯層與訪問數據庫代碼之間的耦合度可以通過服務層降低。
(4)數據持久層:主要是將系統采集到的數據存儲到數據庫中,或者用于從數據源處獲取數據,Mybatis創建的SqlSessionFactory實例可以在配置文件中得到Sqlsession對象,該對象包含數據庫語句執行方法。
該系統主要是為上傳房源的戶主以及想找房找人合租用戶之間的信息流通和交易提供平臺。該系統設置了前臺客戶端和后臺管理端兩種訪問子系統[6],登錄后權限也不同,分別具有與登錄身份對應的功能模塊[7]。其中,客戶端只可以進行個人權限范圍內的相關操作,而管理員從后臺登錄后可獲取系統中全部用戶、房源、需求信息、房源預訂單信息的管理權限。圖2為系統總功能模塊結構[8]。

圖2 系統總功能結構
在實現系統功能流程中,數據庫起著至關重要的作用,數據庫的設計直接影響了整個系統的運行效率[9-11]。針對房屋合租流程的實際情況,需要對所有在系統中注冊的用戶信息、上傳的房源信息、尋求同居舍友需求信息、預訂單信息、登錄用戶收藏的舍友信息等分別進行存儲。在項目運行過程中,調用相關業務所需的數據信息。
用戶信息表主要記錄所有在系統中注冊過的用戶信息,包括用戶名、用戶id、密碼、性別、年齡、聯系方式等相關屬性;房源信息表主要為了保存房源相關信息,包括房源id、房型、所在街區、出租狀態、房屋組成、所在地區、戶主id、面積、報價、房源圖片等具體屬性;尋友需求表主要包括尋友需求id、尋友性別要求、尋友年齡范圍、房源所在地區、房屋組成要求、價格范圍、房型、生活模式、用戶id、是否接受寵物等具體屬性;房源預訂單表主要包含預約用戶id、預約單id、房源id、訂單狀態以及預約時間等具體屬性;舍友收藏數據表主要是記錄登錄用戶收藏的所有舍友信息,主要包括收藏id、用戶id以及被收藏的舍友id等具體屬性。
整個系統流轉過程中,各表之間相互關聯進行信息交互,系統的E-R圖如圖3所示。

圖3 系統E-R圖
考慮到成本、效率、時間等多方面因素,本系統選擇開源數據庫服務器MySQL作為網站的信息存儲工具[12-14],MySQL數據庫體積小、速度快、總體成本較低,是小型網站系統開發的優先選擇。
本系統的設計遵循SSM框架設計,將視圖層、數據層和業務邏輯層分開,嚴格遵循模型(model)-視圖(view)-控制器(controller)模式[15-16]。視圖層采用XML文件進行設計,主要包含注冊頁面、登錄頁面、房源列表頁、房源信息上傳頁,根據登錄權限用戶訪問個人已預約房源頁面、舍友收藏頁面等,后臺管理端管理員可以訪問全部用戶信息界面、房源信息列表頁面、尋友需求列表頁面等。業務邏輯層實現數據的傳輸和操作主要是通過消息——活動機制(intent-activity)。數據層主要是在系統運行過程中,通過Service方式調用MySQL數據庫中存儲的相關業務所需要的數據[17]。
訪問在線合租系統時,用戶和管理員擁有不同的登錄界面,成功登錄后也將進入不同的子系統。成功登錄的用戶具有查看系統中所有已上傳的房源信息和尋友需求信息的權限,對自己個人上傳的一切信息具有隨時修改的權限。而成功登錄的管理員擁有對系統中上傳的絕大多數信息的管理權限。
房源信息模塊的功能針對成功登錄系統網站的用戶,可進行上傳最新房源信息,了解房源詳情,預約看房時間,與房源戶主聯系等權限范圍內的操作,系統客戶端查找房源部分效果如圖4所示。

圖4 客戶端房源列表界面
在尋友需求模塊,可以感受到系統為不同用戶提供的個性化服務。系統通過加入協同過濾推薦算法和基于內容的推薦算法,根據用戶歷史行為和搜索記錄,為當前用戶推送可能感興趣的信息。基于用戶的協同過濾算法是按照用戶的偏好信息找到他的相鄰鄰居用戶,根據鄰居的相似度權重和對物品信息的偏好,將相似度最高的k條信息返回給當前用戶。
用戶所有預約的房源和收藏的舍友信息都可以在個人中心模塊進行查看,已預約的房源實時狀態變化將直接在個人中心列表中顯示。已租的房源將不能被選擇進入預約及之后流程中去,個人中心模塊預約房源界面如圖5所示。

圖5 個人中心模塊預約房源界面
為了方便管理員對系統中全部信息的準確度能及時進行核對更改,經過登錄驗證成功進入后臺管理系統的管理員具有對系統中所有上傳的用戶、房源、尋友需求等進行增刪改查的權限。
后臺管理端的設計同樣采用了MVC框架[18]。視圖層是面向管理員的界面顯示層,將數據庫中的數據信息可視化,借助Bootstrap框架界面設計布局規范,可視化效果更好。業務邏輯層中,將Servlet作為控制器接受前端傳送過來的請求,并根據請求生成Bean實例,對數據庫中的數據進行查詢和處理[19]。操作數據庫采用的是JDBC技術實現,系統中所有對數據庫的操作都在數據層完成,當Servlet接收到瀏覽器端傳送的HTTP數據請求后,根據JDBC提供的標準API對MySQL數據庫進行數據處理,執行XML文件中相應的SQL語句,并將處理結果返回給管理員[20]。
后臺管理端主要可以分為用戶管理模塊、房源信息管理模塊、尋友需求信息管理模塊以及房源預訂單管理模塊。管理員后臺用戶管理頁面如圖6所示;后臺用戶信息更新界面如圖7所示。

圖6 管理員后臺用戶管理界面

圖7 管理員后臺更新用戶信息界面
系統測試一般包括功能測試、性能測試、安全測試等等,目前常用的測試方法有黑盒測試、白盒測試和灰盒測試等,這套流程可以發現系統分析和設計實現中的錯誤,是一個完善項目的重要組成部分。
該系統進行的測試也包含了多個方面。首先對用戶界面進行測試,檢驗用戶界面設計是否人性化,文字圖片內容是否顯示正常,系統總體效果是否美觀等。又采用白盒測試方法,白盒測試不關注系統的功能,根據系統內部工作邏輯思路,對整個項目進行檢查,檢驗內部結構是否都按照預期要求在工作。
黑盒測試是系統測試中的重要環節。一般包含任務測試、臨界測試、中斷測試等。基于整個系統需求說明書的要求,對各個模塊的不同功能寫出相應的用例進行測試,將測試結果與預期結果進行對比,檢測是否一致,確認功能實現效果是否達到預期效果,對于存在較多缺陷的程序塊,進行更深入的測試,從而實現對程序的改正與完善。相關功能測試以預約房源流程為例,測試用例設計與結果分析如圖8所示。
本系統的設計與實現順應了社會發展的趨勢,更符合如今的信息化時代。網站前端采用的Bootstrap框架支持各種瀏覽設備,使項目兼容不同分辨率的設備,響應式布局在方便快捷的同時也為用戶提供極佳的視覺效果。后端采用的是SSM框架技術,節省了大量的編碼時間,一定程度上也提高了程序的可擴展性和可維護性,提升了系統性能,近年來被廣泛使用。為了在傳統租賃系統基礎功能上進一步滿足用戶需求,系統中加入了推薦算法,為不同用戶提供個性化服務,根據不同用戶的歷史操作記錄和偏好選擇,自動為用戶進行信息的篩選,按照相似度的排序為用戶推薦當前偏好里未收藏但有可能感興趣的內容。