ssm基于WEB的房屋出租管理系统的设计与实现161620
房屋出租管理系統(tǒng)的設(shè)計與實(shí)現(xiàn)
摘?要
信息化社會內(nèi)需要與之針對性的信息獲取途徑,但是途徑的擴(kuò)展基本上為人們所努力的方向,由于站在的角度存在偏差,人們經(jīng)常能夠獲得不同類型信息,這也是技術(shù)最為難以攻克的課題。針對房屋出租管理等問題,對房屋出租管理進(jìn)行研究分析,然后開發(fā)設(shè)計出房屋出租管理系統(tǒng)以解決問題。
房屋出租管理系統(tǒng)主要功能模塊包括用戶管理、房屋資訊、資訊分類、房型管理、地區(qū)管理、房屋信息、租賃登記、租賃合同、房產(chǎn)信息、房屋咨詢,采取面對對象的開發(fā)模式進(jìn)行軟件的開發(fā)和硬體的架設(shè),能很好的滿足實(shí)際使用的需求,完善了對應(yīng)的軟體架設(shè)以及程序編碼的工作,采取MySQL作為后臺數(shù)據(jù)的主要存儲單元,采用SSM框架、Java技術(shù)、Ajax技術(shù)進(jìn)行業(yè)務(wù)系統(tǒng)的編碼及其開發(fā),實(shí)現(xiàn)了本系統(tǒng)的全部功能。本次報告,首先分析了研究的背景、作用、意義,為研究工作的合理性打下了基礎(chǔ)。針對房屋出租管理系統(tǒng)的各項(xiàng)需求以及技術(shù)問題進(jìn)行分析,證明了系統(tǒng)的必要性和技術(shù)可行性,然后對設(shè)計系統(tǒng)需要使用的技術(shù)軟件以及設(shè)計思想做了基本的介紹,最后來實(shí)現(xiàn)房屋出租管理系統(tǒng)和部署運(yùn)行使用它。
關(guān)鍵詞:房屋出租管理;SSM框架;MySQL數(shù)據(jù)庫
Design and implementation of house rental management systemAbstract
In the information society, there is a need for targeted information access, but the expansion of access is basically the direction of people's efforts. Due to the deviation of the perspective, people can often obtain different types of information, which is also the most difficult subject for technology to overcome. Aiming at the problems of house rental management, this paper studies and analyzes the house rental management, and then develops and designs the house rental management system to solve the problems.
The software development and management mode of housing information, including the development of housing information, the establishment of housing information and the use of housing management system, can meet the needs of users, and the real estate information management system, MySQL is used as the main storage unit of background data, and SSM framework, Java technology and Ajax technology are used to code and develop the business system, which realizes all the functions of the system. This report first analyzes the background, function and significance of the research, which lays a foundation for the rationality of the research work. This paper analyzes the various requirements and technical problems of the house rental management system, proves the necessity and technical feasibility of the system, and then makes a basic introduction to the technical software and design idea required by the design system. Finally, it realizes the house rental management system and deploys it.
Key words:?Housing rental management; SSM framework; Mysql database
目 ?錄
第1章 緒論
1.1?研究背景與意義
1.2?開發(fā)現(xiàn)狀
1.3?研究方法
第2章 相關(guān)技術(shù)介紹
2.1開發(fā)技術(shù)
2.2 MVVM模式
2.3?MySQL數(shù)據(jù)庫
2.4 B/S結(jié)構(gòu)
2.5?SSM框架
2.6?Vue.js主要功能
第3章 系統(tǒng)分析
3.1?可行性分析
3.2?功能需求分析
3.2.1?前臺用戶功能
3.2.2?后臺管理員功能
3.3?非功能需求分析
3.4?安全性需求分析
3.4.1?系統(tǒng)的安全性
3.4.2?數(shù)據(jù)的安全性
3.5?數(shù)據(jù)流程分析
第4章 系統(tǒng)設(shè)計
4.1?系統(tǒng)架構(gòu)設(shè)計
4.2?系統(tǒng)總體設(shè)計
4.3?系統(tǒng)功能設(shè)計
4.4?數(shù)據(jù)庫設(shè)計
4.4.1?數(shù)據(jù)需求分析
4.4.2?數(shù)據(jù)庫概念設(shè)計
4.4.3?數(shù)據(jù)庫表設(shè)計
第5章 系統(tǒng)實(shí)現(xiàn)
5.1?數(shù)據(jù)庫訪問層的實(shí)現(xiàn)
5.2?注冊模塊的實(shí)現(xiàn)
5.3?登錄模塊的實(shí)現(xiàn)
5.4?用戶資料修改模塊的實(shí)現(xiàn)
5.5租賃合同數(shù)據(jù)管理模塊的實(shí)現(xiàn)
5.6房產(chǎn)信息管理模塊的實(shí)現(xiàn)
5.7房屋信息管理模塊的實(shí)現(xiàn)
5.8房型管理模塊的實(shí)現(xiàn)
第6章 系統(tǒng)測試
6.1?測試目的
6.2?功能測試
6.3?性能測試
第7章 總結(jié)與展望
參考文獻(xiàn)
致謝
近年來人民群眾對住房的剛性需求一直處在上升趨勢,政府現(xiàn)在又提倡保障人們?nèi)罕姷膭傂宰》啃枨?#xff0c;所以房地產(chǎn)行業(yè)還是很有前景的。房地產(chǎn)管理部門面臨的工作量日益繁多, 房屋管理中的龐大數(shù)據(jù)量及更新速度快同傳統(tǒng)的手工辦理、紙制檔案管理模式之間的矛盾已經(jīng)越來越突出。如何有效地管理龐大復(fù)雜的房地產(chǎn)信息資源, 科學(xué)地規(guī)范房地產(chǎn)的管理工作, 已經(jīng)成為房地產(chǎn)管理部門提高自身管理以及服務(wù)水平的關(guān)鍵所在。如何讓房屋變成公司的流動資金,是一個公司競爭中的重中之重。在現(xiàn)在網(wǎng)絡(luò)飛速發(fā)展的背景下,設(shè)計房屋出租管理系統(tǒng)來促進(jìn)房產(chǎn)交易也是一個很好的手段。當(dāng)前形勢下,僅僅靠原始的手工管理或簡單的單機(jī)管理是不夠的,部門面對大量的信息,無法有效率地將其中的重要部分提取出來,并做出相應(yīng)的判斷和處理。公司管理者的決策只能依據(jù)報表數(shù)據(jù),在浪費(fèi)大量人力、物力的同時無法做到實(shí)時監(jiān)控,難以保證數(shù)據(jù)的準(zhǔn)確性和及時性。因此,先進(jìn)的管理思想在商業(yè)中實(shí)現(xiàn)就成為了一個可望而不可及的目標(biāo)。公司集團(tuán)非常急需一套既有先進(jìn)管理思想又適合國內(nèi)大小房地產(chǎn)企業(yè)的房屋出租管理系統(tǒng),作為實(shí)現(xiàn)目標(biāo)和提高現(xiàn)有水平的一種重要手段。房屋出租管理系統(tǒng)是一個房屋租賃公司不可缺少的部分,它的執(zhí)行對于公司的決策者和管理者來說是很有幫助的, 隨著科學(xué)技術(shù)的不斷提高,計算機(jī)科學(xué)日漸成熟,其強(qiáng)大的功能已為人們深刻認(rèn)識,它已進(jìn)入人類社會的各個領(lǐng)域并發(fā)揮著越來越重要的作用。
房屋租賃在國內(nèi)外都是一個已經(jīng)發(fā)展了很久的行業(yè),關(guān)于房屋租賃的各種系統(tǒng)也是多樣化的,系統(tǒng)的人性化設(shè)計是加強(qiáng)了客戶和租賃者之間聯(lián)系,使用戶在租賃房屋之前就和租賃方有了溝通,對自己中意的房屋也很了解。由于我國經(jīng)濟(jì)的發(fā)展迅速,帶動了房地產(chǎn)業(yè)的進(jìn)步,對系統(tǒng)的設(shè)計也是向多功能方面發(fā)展。"公正、公平、合理"的商業(yè)管理理念和商業(yè)管理水平的提高,使社會對房屋出租管理系統(tǒng)有了更高的需求;同時由于個人電腦的普及,數(shù)據(jù)庫技術(shù)、客戶/服務(wù)器技術(shù),特別是Internet/Intranet技術(shù)的發(fā)展,使得第三代房屋出租管理系統(tǒng)的出現(xiàn)成為必然。房屋出租管理系統(tǒng)的特點(diǎn)是從房屋租賃管理的角度出發(fā),用集中的數(shù)據(jù)庫將幾乎所有與商品相關(guān)的數(shù)據(jù)統(tǒng)一管理起來,形成了集成的信息源。在國內(nèi)外房屋租賃方面來看,利用好網(wǎng)絡(luò)是公司成功的基石。中國加入WTO后,中國的房地產(chǎn)企業(yè)面臨的服務(wù)領(lǐng)域的競爭壓力更大。如何推進(jìn)房屋租賃管理的現(xiàn)代化、專業(yè)化、市場化是所有房屋公司面臨的緊迫課題。面對激烈的競爭和愈發(fā)挑剔的租房者,房地產(chǎn)發(fā)展商也在不斷的尋找能夠加強(qiáng)自身競爭力的手段。這時一個比較完善高效的房屋出租管理系統(tǒng)就越發(fā)顯得重要了!
首先,通過引擎搜索或者查閱相關(guān)文獻(xiàn)資料,了解了本系統(tǒng)開發(fā)的背景以及設(shè)計系統(tǒng)的意義所在,收集用戶需求信息。其次,在開發(fā)工具上,最終確定選用Java平臺來設(shè)計開發(fā)本系統(tǒng),MySQL作為設(shè)計數(shù)據(jù)庫的工具。即利用Java語言實(shí)現(xiàn)用戶界面,并同數(shù)據(jù)庫連接起來實(shí)現(xiàn)完整的通信功能。之后,設(shè)計出系統(tǒng)大致的功能模塊。主要從方便系統(tǒng)用戶和系統(tǒng)管理員的角度進(jìn)行分析,明確該系統(tǒng)應(yīng)該具有的功能。最終是測試系統(tǒng),通過用例測試發(fā)現(xiàn)存在的問題并找到解決的方案。利用現(xiàn)有的開發(fā)平臺,結(jié)合自己所學(xué)的知識,在老師的指導(dǎo)幫助下來完成該設(shè)計,確保系統(tǒng)的可用性、實(shí)用性。
本系統(tǒng)前端框架采用了比較流行的漸進(jìn)式JavaScript框架Vue.js。使用Vue-Router和Vuex實(shí)現(xiàn)動態(tài)路由和全局狀態(tài)管理,Ajax實(shí)現(xiàn)前后端通信,Element UI組件庫使頁面快速成型。后端部分:采用ssm作為開發(fā)框架,同時集成MyBatis、Redis等相關(guān)技術(shù)。
MVVM是Model-View-ViewModel的簡寫。它本質(zhì)上就是MVVM 的改進(jìn)版。MVVM 就是將其中的View 的狀態(tài)和行為抽象化,讓我們將視圖 UI 和業(yè)務(wù)邏輯分開。當(dāng)然這些事 ViewModel 已經(jīng)幫我們做了,它可以取出 Model 的數(shù)據(jù)同時幫忙處理 View 中由于需要展示內(nèi)容而涉及的業(yè)務(wù)邏輯。微軟的WPF帶來了新的技術(shù)體驗(yàn),如Silverlight、音頻、視頻、3D、動畫……,這導(dǎo)致了軟件UI層更加細(xì)節(jié)化、可定制化。同時,在技術(shù)層面,WPF也帶來了 諸如Binding、Dependency Property、Routed Events、Command、DataTemplate、ControlTemplate等新特性。MVVM(Model-View-ViewModel)框架的由來便是MVP(Model-View-Presenter)模式與WPF結(jié)合的應(yīng)用方式時發(fā)展演變過來的一種新型架構(gòu)框架。它立足于原有MVP框架并且把WPF的新特性糅合進(jìn)去,以應(yīng)對客戶日益復(fù)雜的需求變化。
科技的進(jìn)步,給日常帶來許多便利:教室的投影器用到了虛擬成像技術(shù),數(shù)碼相機(jī)用到了光電檢測技術(shù),比如超市貨物進(jìn)出庫的記錄需要一個信息倉庫.這個信息倉庫就是數(shù)據(jù)庫,而這次的在線電商購物系統(tǒng)設(shè)計也需要這項(xiàng)技術(shù)的支持.
用MySQL這個軟件,是因?yàn)樗芙邮芏鄠€使用者訪問,而且里面存在Archive等.它會先把數(shù)據(jù)進(jìn)行分類,然后分別保存在表里,這樣的特別操作就會提高數(shù)據(jù)管理系統(tǒng)自身的速度,讓數(shù)據(jù)庫能被靈活運(yùn)用.MySQL的代碼是公開的,而且允許別人二次編譯升級.這個特點(diǎn)能夠降低使用者的成本,再搭配合適的軟件后形成一個良好的網(wǎng)站系統(tǒng).雖然它有缺點(diǎn),但是綜合各方面來說,它是使用者的主流運(yùn)用的對象.
B/S(Browser/Server)比前身架構(gòu)更為省事的架構(gòu).它借助Web server完成數(shù)據(jù)的傳遞交流.只需要下載瀏覽器作為客戶端,那么工作就達(dá)到“瘦身”效果, 不需要考慮不停裝軟件的問題.
SSM即SpringMVC+Spring+Mybatis,這三個框架有各自最獨(dú)有的優(yōu)勢,那么將它們組合在一起能夠碰撞出很強(qiáng)的火花.設(shè)計者在不需消耗大量功夫,能做出Web應(yīng)用程序,而且這個程序還具有層次清晰、升級更新操作不影響正常使用的、允許多次使用的特點(diǎn).這個復(fù)合框架形成一個有著結(jié)構(gòu)完整、功能強(qiáng)大和結(jié)構(gòu)良好的體系:SpringMVC使各板塊分離,Spring使開發(fā)更靈活方便,使用Mybatis讓開發(fā)者直接對對象進(jìn)行操縱,各層次分工明細(xì),并實(shí)現(xiàn)各個層次間的解耦,讓代碼更加的靈活精簡.這個框架使程序員能夠規(guī)避在開發(fā)時期避免個別錯誤導(dǎo)致整體被破壞,也能在后期應(yīng)對客戶對產(chǎn)品提出的新需求.
Vue.js是一套構(gòu)建用戶界面的漸進(jìn)式框架。與其他重量級框架不同的是,Vue采用自底向上增量開發(fā)的設(shè)計。Vue 的核心庫只關(guān)注視圖層,并且非常容易學(xué)習(xí),非常容易與其它庫或已有項(xiàng)目整合。另一方面,Vue 完全有能力驅(qū)動采用單文件組件和Vue生態(tài)系統(tǒng)支持的庫開發(fā)的復(fù)雜單頁應(yīng)用。
Vue.js 的目標(biāo)是通過盡可能簡單的 API 實(shí)現(xiàn)響應(yīng)的數(shù)據(jù)綁定和組合的視圖組件。
Vue.js 自身不是一個全能框架——它只聚焦于視圖層。因此它非常容易學(xué)習(xí),非常容易與其它庫或已有項(xiàng)目整合。另一方面,在與相關(guān)工具和支持庫一起使用時,Vue.js 也能驅(qū)動復(fù)雜的單頁應(yīng)用。
技術(shù)性方面,采用當(dāng)前主流的JavaEE框架進(jìn)行系統(tǒng)主體框架的搭建,前臺使用jquery,ajax,實(shí)現(xiàn)前臺頁面的設(shè)計與美觀調(diào)整,以上技術(shù),均由本人經(jīng)過系統(tǒng)學(xué)習(xí),并且都是在課程設(shè)計中實(shí)踐過的,可以使得開發(fā)更加便捷和系統(tǒng)。從技術(shù)角度看,這個系統(tǒng)是完全可以實(shí)現(xiàn)的。
實(shí)用性方面,本次設(shè)計的主要任務(wù)是在房屋出租管理系統(tǒng)內(nèi)用戶管理、房屋資訊、資訊分類、房型管理、地區(qū)管理、房屋信息、租賃登記、租賃合同、房產(chǎn)信息、房屋咨詢等,符合當(dāng)前潮流的發(fā)展。從用戶角度出發(fā),同時也考慮系統(tǒng)運(yùn)營成本和人力資源,采用網(wǎng)絡(luò)上的便捷方式,實(shí)現(xiàn)線上業(yè)務(wù),使得業(yè)務(wù)流程更系統(tǒng),也更方便用戶的體驗(yàn),比較實(shí)用。
經(jīng)濟(jì)性方面,由于本課題中設(shè)計的房屋出租管理系統(tǒng)的主要目的是為了能夠更加方便及快捷的進(jìn)行信息的查詢管理及檢索服務(wù),也就是能夠可以直接投入使用的信息化軟件。系統(tǒng)的主要成本主要是集中在對使用數(shù)據(jù)后期繼續(xù)維護(hù)及其管理更新這個操作上。但是一旦系統(tǒng)投入到實(shí)際的運(yùn)行及使用之后就能夠很好的提高信息查詢檢索的效率,同時也需要有效的保證查詢者的信息方面的安全性,同時這個房屋出租管理系統(tǒng)所帶來的實(shí)際應(yīng)用方面的價值是遠(yuǎn)遠(yuǎn)的超過了實(shí)際系統(tǒng)進(jìn)行開發(fā)與維護(hù)方面的成本,因此,從經(jīng)濟(jì)上來說開發(fā)這個軟件是可行的。
房屋出租管理系統(tǒng)的功能主要分為前臺用戶根據(jù)自己的需求進(jìn)行注冊登錄,瀏覽房源信息并對選中的房源進(jìn)行租賃操作。后臺系統(tǒng)管理員因職責(zé)的不同,分為普通管理員和超級管理員,普通管理員主要對租賃單進(jìn)行處理,處理房源預(yù)約看房單,而超級管理員主要對注冊用戶,用戶管理、房屋資訊、資訊分類、房型管理、地區(qū)管理、房屋信息、租賃登記、租賃合同、房產(chǎn)信息、房屋咨詢進(jìn)行處理。
系統(tǒng)用例圖如下所示。
?
圖3-1 系統(tǒng)用例圖
前臺用戶可分為未注冊用戶需求和已注冊用戶需求。
未注冊用戶的功能如下:
注冊賬號:用戶填寫個人信息,并驗(yàn)證手機(jī)號碼。
瀏覽房屋資訊:用戶可以根據(jù)房屋資訊瀏覽房屋的信息,并選中某個房屋資訊查看詳情。
已注冊用戶的功能如下:
登錄:根據(jù)賬號密碼進(jìn)行登錄操作。
維護(hù)個人信息:用戶因個人信息的變更可以隨時修改自己注冊信息。
房屋信息:用戶根據(jù)自己的需求選中某個房屋信息進(jìn)行查詢操作。
后臺管理員可分為普通管理員和超級管理員。
普通管理員功能如下。
修改密碼:管理員可以隨時修改自己進(jìn)入系統(tǒng)的登錄密碼,以保證系統(tǒng)的安全性。
對租賃登記信息進(jìn)行處理:查看租賃信息,辦理租賃登記審核等。
超級管理員功能如下:
修改密碼:管理員可以隨時修改自己進(jìn)入系統(tǒng)的登錄密碼,以保證系統(tǒng)的安全性。
對租賃合同信息進(jìn)行處理:辦理租賃合同審核等。
管理普通管理員:對普通管理員進(jìn)行管理。調(diào)動相關(guān)工作人員時可以添加或刪除普通管理員。
房產(chǎn)信息管理:對房產(chǎn)信息進(jìn)行維護(hù),添加、刪除、修改信息。
對房屋咨詢信息進(jìn)行處理:辦理房屋咨詢審核等。
租賃合同數(shù)據(jù)信息管理:發(fā)布、刪除相關(guān)的租賃合同數(shù)據(jù)信息。
首先主要考慮的是系統(tǒng)功能軟件,在具體設(shè)計的環(huán)節(jié)上,是不是能夠較好的滿足各類用戶的基本功能需求,如果不能較好的滿足用戶需求,那么這個系統(tǒng)的存在是沒有價值的。軟件系統(tǒng)的非功能性求分析,從7個方面展開,一個是性能分析,針對系統(tǒng);一個是安全分析,針對系統(tǒng),一個是完整度分析,針對系統(tǒng),一個是可維護(hù)分析,針對系統(tǒng),一個是可擴(kuò)展性分析,針對系統(tǒng),一個是適應(yīng)業(yè)務(wù)的性能分析。面對房屋出租管理系統(tǒng)存在的性能、安全、擴(kuò)展、完整度等7個方面性能綜合比對分析后發(fā)現(xiàn),需要相應(yīng)的非功能性需求分析。
安全性對每一個系統(tǒng)來說都是非常重要的。安全性很好的系統(tǒng)可以保護(hù)企業(yè)的信息和用戶的信息不被竊取。提高系統(tǒng)的安全性不僅是對用戶的負(fù)責(zé),更是對企業(yè)的負(fù)責(zé)。尤其針對于房屋出租管理系統(tǒng)來說,必須要有很好的安全性來保障整個系統(tǒng)。
系統(tǒng)具有對使用者有權(quán)限控制,針對角色的不通限制使用者的權(quán)限,以此來確保系統(tǒng)的安全性。
數(shù)據(jù)庫中的數(shù)據(jù)是從外界輸入的,當(dāng)數(shù)據(jù)的輸入時,由于種種原因,輸入的數(shù)據(jù)會無效,或者是臟數(shù)據(jù)。因此,怎樣保證輸入的數(shù)據(jù)符合規(guī)定,成為了數(shù)據(jù)庫系統(tǒng),尤其是多用戶的關(guān)系數(shù)據(jù)庫系統(tǒng)首要關(guān)注的問題。
因此,在寫入數(shù)據(jù)庫時,要保證數(shù)據(jù)完整性、正確性和一致性。
對系統(tǒng)的數(shù)據(jù)流進(jìn)行分析,系統(tǒng)的使用者分為二類,一般用戶,管理員。系統(tǒng)主要對界面信息傳送,登錄信息的驗(yàn)證,注冊信息的接收,用戶各種操作的響應(yīng)做處理。
系統(tǒng)頂層數(shù)據(jù)流圖如下圖所示。
?
圖3-2 頂層數(shù)據(jù)流圖
要判斷用戶是是什么身份,是根據(jù)登錄的數(shù)據(jù)來判斷后,跳轉(zhuǎn)到對應(yīng)的功能界面。在系統(tǒng)的內(nèi)部用戶就可以對數(shù)據(jù)進(jìn)行操作,數(shù)據(jù)庫中心就可以接收到系統(tǒng)傳輸?shù)挠行?shù)據(jù)流來對數(shù)據(jù)sql語句進(jìn)行對應(yīng)操作。
系統(tǒng)底層數(shù)據(jù)流圖如下圖所示。
?圖3-3 底層數(shù)據(jù)流圖
?
系統(tǒng)可以分為前臺和后臺兩部分,每一種操作后系統(tǒng)都返回操作結(jié)果。前臺和后臺的數(shù)據(jù)連接主要通過數(shù)據(jù)庫,既分別對數(shù)據(jù)庫做不同的操作。
本房屋出租管理系統(tǒng)的架構(gòu)設(shè)計主要分為可以3層,主要有Web層,業(yè)務(wù)層,Model層。其中web層還包括View層和Controller層,Model層包括元數(shù)據(jù)擴(kuò)展層和數(shù)據(jù)訪問層。
系統(tǒng)架構(gòu)如下圖所示。
?
圖4-1 系統(tǒng)架構(gòu)
房屋出租管理系統(tǒng)總體分為前臺用戶模塊和后臺管理員模塊。
兩個模塊表現(xiàn)上是分別獨(dú)立存在,但是訪問的數(shù)據(jù)庫是一樣的。每一個模塊的功能都是根據(jù)先前完成的需求分析,并查閱相關(guān)資料后整理制作的。
綜上所述,系統(tǒng)功能結(jié)構(gòu)圖如下圖所示。
?
圖4-2 系統(tǒng)功能結(jié)構(gòu)圖
登錄模塊:登錄模塊是進(jìn)入系統(tǒng)的入口,所有用戶必須登錄后才能訪問系統(tǒng)。登錄需要輸入用戶名和密碼,如果多次嘗試登錄需要輸入驗(yàn)證碼。登錄時需要選擇用戶的角色,是一般用戶還是管理員登錄等。登錄成功后,會通過數(shù)據(jù)庫獲取用戶的權(quán)限,并跳轉(zhuǎn)至用戶的主頁面。
租賃合同數(shù)據(jù)模塊:可分為租賃合同數(shù)據(jù)瀏覽、租賃合同數(shù)據(jù)檢索、租賃合同數(shù)據(jù)維護(hù)三個模塊,管理員對租賃合同數(shù)據(jù)有維護(hù)的權(quán)限,發(fā)布新的租賃合同數(shù)據(jù)、更新已有的租賃合同數(shù)據(jù)等。
房屋管理模塊:房屋管理分為房屋添加、修改和房屋租賃和預(yù)約看房。房屋信息由管理員進(jìn)行修改、添加、刪除操作;房屋租賃、房屋信息查詢由普通用戶來執(zhí)行。
從前面可以分析到數(shù)據(jù)庫中最重要的是房源信息,用戶信息表,房屋信息表,房東表,房租賃合同表,租賃登記表,房產(chǎn)信息表、地區(qū)管理表、房型管理表。分析可以得到如下數(shù)據(jù)描述:
注冊用戶:用于記錄用戶的各種信息,包括用戶名、審核狀態(tài)等數(shù)據(jù)項(xiàng)。
管理員:記錄管理員的登錄信息。包括用戶名,密碼,權(quán)限等數(shù)據(jù)項(xiàng)。
房型管理:存放給房型的內(nèi)容,包括房型等數(shù)據(jù)項(xiàng)。
房產(chǎn)信息:存儲用戶的房產(chǎn)信息。包括房產(chǎn)的房型、地區(qū)、狀態(tài)、每月租金、押金、租賃月數(shù)、開始時間、房東編號等數(shù)據(jù)項(xiàng)。
租賃登記。存儲用戶的租賃登記信息。包括租賃登記的訂單號、標(biāo)題、房型、地區(qū)、租金、房東編號、用戶名、聯(lián)系電話、審核狀態(tài)、審核回復(fù)等數(shù)據(jù)項(xiàng)。
租賃合同:存儲用戶的租賃合同。包括訂單號、標(biāo)題、房型、地區(qū)、租金、用戶名、房東編號、地址、租賃月數(shù)、押金、開始時間、到期時間、合同、租賃須知等數(shù)據(jù)項(xiàng)。
房東:存儲用戶內(nèi)的房東內(nèi)容。包括房東編號、房東姓名、審核狀態(tài)、用戶ID等數(shù)據(jù)項(xiàng)。
房屋信息:存儲用戶的房屋信息。包括標(biāo)題、房型、地區(qū)、照片、租金、房東編號、便利設(shè)施、交通指南、房屋展示、點(diǎn)擊數(shù)、點(diǎn)贊數(shù)等數(shù)據(jù)項(xiàng)。
根據(jù)前面的數(shù)據(jù)流程圖,結(jié)合系統(tǒng)的功能模塊設(shè)計,設(shè)計出符合系統(tǒng)的各信息實(shí)體。
系統(tǒng)ER圖如下圖所示。
?
圖4-3 系統(tǒng)ER圖
房屋出租管理系統(tǒng)所擁有的數(shù)據(jù)表有以下:用戶信息表,房屋信息表,房東表,房租賃合同表,租賃登記表,房產(chǎn)信息表、地區(qū)管理表、房型管理表。
由于數(shù)據(jù)表較多,只展示系統(tǒng)主要數(shù)據(jù)表,如下表所示。
room_type_management表:
| 名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
| room_type_management_id | int | 11 | 是 | 是 | 房型管理ID |
| layout_of_a_house_or_an_apartment | varchar | 64 | 否 | 否 | 房型 |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| create_time | datetime | 0 | 是 | 否 | 創(chuàng)建時間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時間 |
| registered_user表: | |||||
| 名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
| registered_user_id | int | 11 | 是 | 是 | 注冊用戶ID |
| user_name | varchar | 64 | 是 | 否 | 用戶名 |
| examine_state | varchar | 16 | 是 | 否 | 審核狀態(tài) |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| user_id | int | 11 | 是 | 否 | 用戶ID |
| create_time | datetime | 0 | 是 | 否 | 創(chuàng)建時間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時間 |
| regional_management表: | |||||
| 名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
| regional_management_id | int | 11 | 是 | 是 | 地區(qū)管理ID |
| region | varchar | 64 | 否 | 否 | 地區(qū) |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| create_time | datetime | 0 | 是 | 否 | 創(chuàng)建時間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時間 |
| real_estate_information_表: | |||||
| 名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
| real_estate_information_id | int | 11 | 是 | 是 | 房產(chǎn)信息ID |
| layout_of_a_house_or_an_apartment | varchar | 64 | 否 | 否 | 房型 |
| region | varchar | 64 | 否 | 否 | 地區(qū) |
| state | varchar | 64 | 否 | 否 | 狀態(tài) |
| monthly_rent | varchar | 64 | 否 | 否 | 每月租金 |
| deposit | varchar | 64 | 否 | 否 | 押金 |
| months_of_lease | varchar | 64 | 否 | 否 | 租賃月數(shù) |
| start_time | date | 0 | 否 | 否 | 開始時間 |
| landlord_number | int | 11 | 否 | 否 | 房東編號 |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| create_time | datetime | 0 | 是 | 否 | 創(chuàng)建時間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時間 |
| lease_registration表: | |||||
| 名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
| lease_registration_id | int | 11 | 是 | 是 | 租賃登記ID |
| order_number | varchar | 64 | 否 | 否 | 訂單號 |
| title | varchar | 64 | 否 | 否 | 標(biāo)題 |
| layout_of_a_house_or_an_apartment | varchar | 64 | 否 | 否 | 房型 |
| region | varchar | 64 | 否 | 否 | 地區(qū) |
| rent | varchar | 64 | 否 | 否 | 租金 |
| landlord_number | int | 11 | 否 | 否 | 房東編號 |
| user_name | int | 11 | 否 | 否 | 用戶名 |
| contact_number | varchar | 64 | 否 | 否 | 聯(lián)系電話 |
| examine_state | varchar | 16 | 是 | 否 | 審核狀態(tài) |
| examine_reply | varchar | 16 | 否 | 否 | 審核回復(fù) |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| create_time | datetime | 0 | 是 | 否 | 創(chuàng)建時間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時間 |
| lease_contract表: | |||||
| 名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
| lease_contract_id | int | 11 | 是 | 是 | 租賃合同ID |
| order_number | varchar | 64 | 否 | 否 | 訂單號 |
| title | varchar | 64 | 否 | 否 | 標(biāo)題 |
| layout_of_a_house_or_an_apartment | varchar | 64 | 否 | 否 | 房型 |
| region | varchar | 64 | 否 | 否 | 地區(qū) |
| rent | varchar | 64 | 否 | 否 | 租金 |
| user_name | int | 11 | 否 | 否 | 用戶名 |
| landlord_number | int | 11 | 否 | 否 | 房東編號 |
| address | varchar | 64 | 否 | 否 | 地址 |
| months_of_lease | int | 11 | 否 | 否 | 租賃月數(shù) |
| deposit | int | 11 | 否 | 否 | 押金 |
| start_time | date | 0 | 否 | 否 | 開始時間 |
| expiration_time | date | 0 | 否 | 否 | 到期時間 |
| contract | varchar | 255 | 否 | 否 | 合同 |
| lease_notice | text | 0 | 否 | 否 | 租賃須知 |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| create_time | datetime | 0 | 是 | 否 | 創(chuàng)建時間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時間 |
| landlord_or_landlady表: | |||||
| 名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
| landlord_or_landlady_id | int | 11 | 是 | 是 | 房東ID |
| landlord_number | varchar | 64 | 是 | 否 | 房東編號 |
| landlord_name | varchar | 64 | 否 | 否 | 房東姓名 |
| examine_state | varchar | 16 | 是 | 否 | 審核狀態(tài) |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| user_id | int | 11 | 是 | 否 | 用戶ID |
| create_time | datetime | 0 | 是 | 否 | 創(chuàng)建時間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時間 |
| house_information表: | |||||
| 名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
| house_information_id | int | 11 | 是 | 是 | 房屋信息ID |
| title | varchar | 64 | 否 | 否 | 標(biāo)題 |
| layout_of_a_house_or_an_apartment | varchar | 64 | 否 | 否 | 房型 |
| region | varchar | 64 | 否 | 否 | 地區(qū) |
| photo | varchar | 255 | 否 | 否 | 照片 |
| address | varchar | 64 | 否 | 否 | 地址 |
| rent | int | 11 | 否 | 否 | 租金 |
| landlord_number | int | 11 | 否 | 否 | 房東編號 |
| amenities | text | 0 | 否 | 否 | 便利設(shè)施 |
| traffic_guide | text | 0 | 否 | 否 | 交通指南 |
| house_display | longtext | 0 | 否 | 否 | 房屋展示 |
| hits | int | 11 | 是 | 否 | 點(diǎn)擊數(shù) |
| praise_len | int | 11 | 是 | 否 | 點(diǎn)贊數(shù) |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| create_time | datetime | 0 | 是 | 否 | 創(chuàng)建時間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時間 |
該系統(tǒng)是通過jdbc和MySQL達(dá)成連接的,新建一個jdbc.properties文件來填寫與數(shù)據(jù)庫連接所需要的驅(qū)動和參數(shù)。
jdbc.driverClass=com.MySQL.jdbc.Driver
jdbc.url=jdbc:MySQL://localhost:3306/tsi
jdbc.username=root
jdbc.password=123
第一個參數(shù)代表MySQL數(shù)據(jù)庫的驅(qū)動,第二個參數(shù)代表要連接的數(shù)據(jù)庫,第三個和第四個參數(shù)代表數(shù)據(jù)庫連接名和密碼。
后臺與數(shù)據(jù)庫訪問主要是通過HQL語句來進(jìn)行查詢的,查詢語句中的表名是表格的實(shí)體類名,在這種查詢語句中*是不允許使用的,除非適合聚合函數(shù)一起使用才可以。
用戶在填寫數(shù)據(jù)的時候必須與注冊頁面上的驗(yàn)證相匹配否則會注冊失敗,注冊頁面的表單驗(yàn)證是通過JavaScript進(jìn)行驗(yàn)證的,用戶名的長度必須在6到18之間,郵箱必須帶有@符號,密碼和密碼確認(rèn)必須相同,你輸入的密碼,系統(tǒng)會根據(jù)你輸入密碼的強(qiáng)度給出指定的值,電話號碼和身份證號碼必須要求輸入格式與生活相符合,當(dāng)你前臺驗(yàn)證通過的時候你點(diǎn)擊注冊,表單會將你輸入的值通過name值傳遞給后臺并保存到數(shù)據(jù)庫中。
用戶注冊流程圖如下圖所示。
?
圖5-1用戶注冊流程圖
用戶注冊界面如下圖所示。
?
圖5-2用戶注冊界面
用戶注冊的關(guān)鍵代碼如下。
/**
?????* 注冊
?????* @return
?????*/
????@PostMapping("register")
????public Map<String, Object> signUp(HttpServletRequest request) throws IOException {
????????// 查詢用戶
????????Map<String, String> query = new HashMap<>();
????????Map<String,Object> map = service.readBody(request.getReader());
????????query.put("username",String.valueOf(map.get("username")));
????????List list = service.selectBaseList(service.select(query, new HashMap<>()));
????????if (list.size()>0){
????????????return error(30000, "用戶已存在");
????????}
????????map.put("password",service.encryption(String.valueOf(map.get("password"))));
????????service.insert(map);
????????return success(1);
}
????public Map<String,Object> readBody(BufferedReader reader){
????????BufferedReader br = null;
????????StringBuilder sb = new StringBuilder("");
????????try{
????????????br = reader;
????????????String str;
????????????while ((str = br.readLine()) != null){
????????????????sb.append(str);
????????????}
????????????br.close();
????????????String json = sb.toString();
????????????return JSONObject.parseObject(json, Map.class);
????????}catch (IOException e){
????????????e.printStackTrace();
????????}finally{
????????????if (null != br){
????????????????try{
????????????????????br.close();
????????????????}catch (IOException e){
????????????????????e.printStackTrace();
????????????????}
????????????}
????????}
????????return null;
????}
????public void insert(Map<String,Object> body){
????????E entity = JSON.parseObject(JSON.toJSONString(body),eClass);
????????baseMapper.insert(entity);
????????log.info("[{}] - 插入操作:{}",entity);
}
主要由兩部分組成,登錄前的登錄界面以及登錄后的用戶功能界面。登錄界面,要求用戶輸入用戶名和密碼,當(dāng)用戶名和密碼其中一個輸入為空時,給出提示“用戶名,密碼不能為空”。獲取用戶名和密碼后到數(shù)據(jù)庫中查找,如果用戶名存在,以及對應(yīng)的密碼正確,則登錄成功,否則登錄失敗。登錄失敗后給出提示,并把焦點(diǎn)停在文本框中。登錄成功后將該次會話的全局變量username設(shè)置為用戶名。登錄成功后進(jìn)入會員的功能模塊,主要有會員基本信息修改,已經(jīng)發(fā)布房源信息管理,發(fā)布信息,和退出功能。退出功能是清除全局變量username的值,并跳回到首頁。
登錄流程圖如下圖所示。
?
圖5-4登錄流程圖
用戶登錄界面如下圖所示。
?
圖5-5用戶登錄界面
用戶登錄的關(guān)鍵代碼如下。
/**
?????* 登錄
?????* @param data
?????* @param httpServletRequest
?????* @return
?????*/
????@PostMapping("login")
????public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {
????????log.info("[執(zhí)行登錄接口]");
????????String username = data.get("username");
????????String email = data.get("email");
????????String phone = data.get("phone");
????????String password = data.get("password");
????????List resultList = null;
????????QueryWrapper wrapper = new QueryWrapper<User>();
????????Map<String, String> map = new HashMap<>();
????????if(username != null && "".equals(username) == false){
????????????map.put("username", username);
????????????resultList = service.selectBaseList(service.select(map, new HashMap<>()));
????????}
????????else if(email != null && "".equals(email) == false){
????????????map.put("email", email);
????????????resultList = service.selectBaseList(service.select(map, new HashMap<>()));
????????}
????????else if(phone != null && "".equals(phone) == false){
????????????map.put("phone", phone);
????????????resultList = service.selectBaseList(service.select(map, new HashMap<>()));
????????}else{
????????????return error(30000, "賬號或密碼不能為空");
????????}
????????if (resultList == null || password == null) {
????????????return error(30000, "賬號或密碼不能為空");
????????}
????????//判斷是否有這個用戶
????????if (resultList.size()<=0){
????????????return error(30000,"用戶不存在");
????????}
????????User byUsername = (User) resultList.get(0);
????????Map<String, String> groupMap = new HashMap<>();
????????groupMap.put("name",byUsername.getUserGroup());
????????List groupList = userGroupService.selectBaseList(userGroupService.select(groupMap, new HashMap<>()));
????????if (groupList.size()<1){
????????????return error(30000,"用戶組不存在");
????????}
????????UserGroup userGroup = (UserGroup) groupList.get(0);
????????//查詢用戶審核狀態(tài)
????????if (!StringUtils.isEmpty(userGroup.getSourceTable())){
????????????String res = service.selectExamineState(userGroup.getSourceTable(),byUsername.getUserId());
????????????if (res==null){
????????????????return error(30000,"用戶不存在");
????????????}
????????????if (!res.equals("已通過")){
????????????????return error(30000,"該用戶審核未通過");
????????????}
????????}
????????//查詢用戶狀態(tài)
????????if (byUsername.getState()!=1){
????????????return error(30000,"用戶非可用狀態(tài),不能登錄");
????????}
????????String md5password = service.encryption(password);
????????if (byUsername.getPassword().equals(md5password)) {
????????????// 存儲Token到數(shù)據(jù)庫
????????????AccessToken accessToken = new AccessToken();
????????????accessToken.setToken(UUID.randomUUID().toString().replaceAll("-", ""));
????????????accessToken.setUser_id(byUsername.getUserId());
????????????tokenService.save(accessToken);
????????????// 返回用戶信息
????????????JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(byUsername));
????????????user.put("token", accessToken.getToken());
????????????JSONObject ret = new JSONObject();
????????????ret.put("obj",user);
????????????return success(ret);
????????} else {
????????????return error(30000, "賬號或密碼不正確");
????????}
}
????public String select(Map<String,String> query,Map<String,String> config){
????????StringBuffer sql = new StringBuffer("select ");
????????sql.append(config.get(FindConfig.FIELD) == null || "".equals(config.get(FindConfig.FIELD)) ? "*" : config.get(FindConfig.FIELD)).append(" ");
????????sql.append("from ").append("`").append(table).append("`").append(toWhereSql(query, "0".equals(config.get(FindConfig.LIKE))));
????????if (config.get(FindConfig.GROUP_BY) != null && !"".equals(config.get(FindConfig.GROUP_BY))){
????????????sql.append("group by ").append(config.get(FindConfig.GROUP_BY)).append(" ");
????????}
????????if (config.get(FindConfig.ORDER_BY) != null && !"".equals(config.get(FindConfig.ORDER_BY))){
????????????sql.append("order by ").append(config.get(FindConfig.ORDER_BY)).append(" ");
????????}
????????if (config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE))){
????????????int page = config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE)) ? Integer.parseInt(config.get(FindConfig.PAGE)) : 1;
????????????int limit = config.get(FindConfig.SIZE) != null && !"".equals(config.get(FindConfig.SIZE)) ? Integer.parseInt(config.get(FindConfig.SIZE)) : 10;
????????????sql.append(" limit ").append( (page-1)*limit ).append(" , ").append(limit);
????????}
????????log.info("[{}] - 查詢操作,sql: {}",table,sql);
????????return sql.toString();
}
????public List selectBaseList(String select) {
????????List<Map<String,Object>> mapList = baseMapper.selectBaseList(select);
????????List<E> list = new ArrayList<>();
????????for (Map<String,Object> map:mapList) {
????????????list.add(JSON.parseObject(JSON.toJSONString(map),eClass));
????????}
????????return list;
}
用戶登錄/注冊成功之后可以修改自己的基本信息。修改頁面的表單中每一個input的name值都要與實(shí)體類中的參數(shù)相匹配,在用戶點(diǎn)擊修改頁面的時候,如果改后用戶名與數(shù)據(jù)庫里面重復(fù)了,頁面會提示該用戶名已經(jīng)存在了,否則通過Id來查詢用戶,并將用戶的信息修改為表單提交的數(shù)據(jù)。
如果租賃合同數(shù)據(jù)的信息需要修改,管理員可以通過查詢租賃合同數(shù)據(jù)的基本信息來查詢租賃合同數(shù)據(jù),查詢租賃合同數(shù)據(jù)是通過ajax技術(shù)來進(jìn)行查詢的,需要傳遞租賃合同數(shù)據(jù)的標(biāo)題、編號等參數(shù)然后在返回到該頁面中,可以選中要修改或刪除的那條信息,如果選中了超過一條數(shù)據(jù),頁面會挑一個窗口提醒只能選擇一條數(shù),如果沒有選中數(shù)據(jù)會挑一個窗口題型必須選擇一條數(shù)據(jù)。當(dāng)選擇確認(rèn)修改的時候,后臺會根據(jù)傳過來的id到數(shù)據(jù)庫查詢,并將結(jié)果返回到修改頁面中,可以在修改頁面中修改剛剛選中的信息當(dāng)點(diǎn)擊確認(rèn)的時候from表單會將修改的數(shù)據(jù)提交到后臺并保存到數(shù)據(jù)庫中,就是說如果提交的數(shù)據(jù)數(shù)據(jù)庫中存在就修改,否則就保存。
租賃合同數(shù)據(jù)展示界面如下圖所示。
?
圖5-6租賃合同數(shù)據(jù)展示界面
用戶房產(chǎn)信息后后臺會自動生成房產(chǎn)信息列表。從session中取出該用戶信息,前臺發(fā)起請求,將對應(yīng)的用戶信息、baozhangpId參數(shù)信息從前臺傳遞BaozhangController類里,匹配到create()方法,create()方法調(diào)用BaozhangServiceImpl類的createBaozhang()方法獲取數(shù)據(jù),調(diào)用本類的getCartBaozhangItem()方法得到房產(chǎn)信息列表。
房產(chǎn)信息界面如下所示。
?
圖5-1房產(chǎn)信息界面
房屋信息功能整體流程:用戶瀏覽房屋信息時,同時會顯示房屋源的狀態(tài),系統(tǒng)會在其顯示詳細(xì)信息的頁面時便會判斷房屋的狀態(tài),若房源狀態(tài)為可房屋信息,則會顯示房屋信息的鏈接按鈕。在用戶點(diǎn)擊房屋信息按鈕時,會先通過攔截器判斷用戶是否登錄,若未登錄,會跳轉(zhuǎn)至登錄頁面,提示用戶先登錄,若為登錄用戶就會跳轉(zhuǎn)至填寫房屋信息信息的頁面,填寫好房屋信息信息之后,點(diǎn)擊提交按鈕,房屋信息成功之后返回提示信息,告知用戶房屋信息成功。
房屋信息流程圖如下圖所示。
?
圖5-12房屋信息流程圖
房屋信息界面如下圖所示。
?
圖5-15房屋信息界面
此頁面的關(guān)鍵是編寫房型信息,包括房型編號,名稱,詳情等。單擊提交按鈕以完成信息的添加。如果未寫入完整的房型信息,例如,如果未寫入房型編號,系統(tǒng)將給出相應(yīng)的錯誤提示,并且無法成功輸入。數(shù)據(jù)以概念的形式以onsubmit =“return checkForm()”的形式寫入以進(jìn)行檢查,checkForm()函數(shù)是一種用于寫入數(shù)據(jù)的不同類型的校對方法,是不是為空也是經(jīng)過form表單中的οnsubmit=”return checkForm()來檢查。
管理員點(diǎn)擊左側(cè)菜單“房型信息管理”,頁面跳轉(zhuǎn)到房型信息管理外觀,調(diào)用后臺房型查詢所有房型信息。并將信息密封到數(shù)據(jù)集合List,綁定到請求對象,然后頁面跳轉(zhuǎn)到相應(yīng)的jsp,顯示出房型信息,單擊刪除按鈕完成房型信息的刪除。
房型管理流程圖如下圖所示。
?
圖5-17房型管理流程圖
房型添加界面如下圖所示。
?
圖5-18房型添加界面
房型管理界面如下圖所示。
?
圖5-19房型管理界面
房型發(fā)布的關(guān)鍵代碼如下。
@RequestMapping("/get_list")
????public Map<String, Object> getList(HttpServletRequest request) {
????????Map<String, Object> map = service.selectToPage(service.readQuery(request), service.readConfig(request));
????????return success(map);
????}
對任何系統(tǒng)而言,測試都是必不可少的環(huán)節(jié),測試可以發(fā)現(xiàn)系統(tǒng)存在的很多問題,所有的軟件上線之前,都應(yīng)該進(jìn)行充足的測試之后才能保證上線后不會Bug頻發(fā),或者是功能不滿足需求等問題的發(fā)生。下面分別從單元測試,功能測試和用例測試來對系統(tǒng)進(jìn)行測試以保證系統(tǒng)的穩(wěn)定性和可靠性。
下表是系統(tǒng)登錄功能測試用例,檢測了用戶名和密碼的不同的輸入情況,觀察系統(tǒng)的響應(yīng)情況。得出該功能達(dá)到了設(shè)計目標(biāo)。
表6-1 系統(tǒng)登錄功能測試用例
| 功能描述 | 用于系統(tǒng)登錄 | |
| 測試目的 | 檢測登錄時的合法性檢查 | |
| 測試數(shù)據(jù)以及操作 | 預(yù)期結(jié)果 | 實(shí)際結(jié)果 |
| 輸入的用戶名和密碼帶有非法字符 | 提示用戶名或者密碼錯誤 | 與預(yù)期結(jié)果一致 |
| 輸入的用戶名或者密碼為空 | 提示用戶名或者密碼錯誤 | 與預(yù)期結(jié)果一致 |
| 輸入的用戶名和密碼不存在 | 提示用戶名或者密碼錯誤 | 與預(yù)期結(jié)果一致 |
| 輸入正確的用戶名和密碼 | 登錄成功 | 與預(yù)期結(jié)果一致 |
下表是注冊功能測試用例,檢測了各種數(shù)據(jù)的輸入情況,觀察系統(tǒng)的響應(yīng)情況。得出該功能達(dá)到了設(shè)計目標(biāo)。
表6-2 注冊功能測試用例
| 功能描述 | 用于用戶注冊 | |
| 測試目的 | 檢測用戶注冊時的合法性檢查 | |
| 測試數(shù)據(jù)以及操作 | 預(yù)期結(jié)果 | 實(shí)際結(jié)果 |
| 輸入的手機(jī)號不合法 | 提示請輸入正確的手機(jī)號碼 | 與預(yù)期結(jié)果一致 |
| 輸入的字段為空 | 提示必填項(xiàng)不能為空 | 與預(yù)期結(jié)果一致 |
| 輸入的密碼少于6位 | 提示密碼必須為6-12位 | 與預(yù)期結(jié)果一致 |
| 輸入的密碼大于12位 | 提示密碼必須為6-12位 | 與預(yù)期結(jié)果一致 |
下表是房型管理功能的測試用例,檢測了房型管理中對房型信息的增加,刪除,修改,查詢操作是否成功運(yùn)行。觀察系統(tǒng)的響應(yīng)情況,得出該功能也達(dá)到了設(shè)計目標(biāo),系統(tǒng)運(yùn)行正確。
前置條件;用戶登錄系統(tǒng)。
表6-3 房型管理的測試用例
| 功能描述 | 用于房型管理 | |
| 測試目的 | 檢測房型管理時的各種操作的運(yùn)行情況 | |
| 測試數(shù)據(jù)以及操作 | 預(yù)期結(jié)果 | 實(shí)際結(jié)果 |
| 點(diǎn)擊添加房型,必填項(xiàng)合法輸入,點(diǎn)擊保存 | 提示添加成功 | 與預(yù)期結(jié)果一致 |
| 點(diǎn)擊添加房型,必填項(xiàng)輸入不合法,點(diǎn)擊保存 | 提示必填項(xiàng)不能為空 | 與預(yù)期結(jié)果一致 |
| 點(diǎn)擊修改房型,必填項(xiàng)修改為空,點(diǎn)擊保存 | 提示必填項(xiàng)不能為空 | 與預(yù)期結(jié)果一致 |
| 點(diǎn)擊修改房型,必填項(xiàng)輸入不合法,點(diǎn)擊保存 | 提示必填項(xiàng)不能為空 | 與預(yù)期結(jié)果一致 |
| 點(diǎn)擊刪除房型,選擇房型刪除 | 提示刪除成功 | 與預(yù)期結(jié)果一致 |
| 點(diǎn)擊搜索房型,輸入存在的房型名 | 查找出房型 | 與預(yù)期結(jié)果一致 |
| 點(diǎn)擊搜索房型,輸入不存在的房型名 | 不顯示房源 | 與預(yù)期結(jié)果一致 |
下表是租賃管理功能的測試用例,檢測了租賃管理中租賃單的操作是否成功運(yùn)行。觀察系統(tǒng)的響應(yīng)情況,得出該功能也達(dá)到了設(shè)計目標(biāo),系統(tǒng)運(yùn)行正確。
前置條件;用戶登錄系統(tǒng)。
表6-5 租賃管理的測試用例
| 功能描述 | 用于租賃管理 | |
| 測試目的 | 檢測租賃管理時各種操作的情況 | |
| 測試數(shù)據(jù)以及操作 | 預(yù)期結(jié)果 | 實(shí)際結(jié)果 |
| 未選擇房源,點(diǎn)擊提交 | 提示請選擇房源 | 與預(yù)期結(jié)果一致 |
| 未輸入時間,點(diǎn)擊提交 | 提示請輸入時間 | 與預(yù)期結(jié)果一致 |
使用阿里云PTS(Performance Testing Service)性能測試服務(wù)對線上系統(tǒng)進(jìn)行壓力測試。線上服務(wù)器環(huán)境為:1核心CPU,1G內(nèi)存,1Mbps公網(wǎng)帶寬,Centos7.0操作系統(tǒng)。
壓測過程中使用了2臺并發(fā)機(jī)器,每臺機(jī)器20個用戶并發(fā),對系統(tǒng)主頁,登錄,數(shù)據(jù)查詢和數(shù)據(jù)維護(hù)等模塊進(jìn)行并發(fā)訪問,測試結(jié)果是有40個用戶并發(fā)時,數(shù)據(jù)管理相關(guān)頁面的響應(yīng)時間甚至達(dá)到了7s,通過查看服務(wù)器出網(wǎng)流量發(fā)現(xiàn)已經(jīng)達(dá)到1381kb/s,可以看出服務(wù)器的帶寬已經(jīng)達(dá)到峰值,如果系統(tǒng)使用5Mbps的帶寬,系統(tǒng)的響應(yīng)時間和TPS將會大大增加。在整個測試的過程中,CPU的使用率占用僅8%,也提現(xiàn)出帶寬瓶頸對系統(tǒng)的影響非常嚴(yán)重。
隨著計算機(jī)互聯(lián)網(wǎng)技術(shù)的迅猛發(fā)展,各行各業(yè)都已經(jīng)實(shí)現(xiàn)采用計算機(jī)相關(guān)技術(shù)對日益放大的數(shù)據(jù)進(jìn)行管理。該課題是房屋出租管理系統(tǒng)為核心展開的,主要是為了實(shí)現(xiàn)租房信息化管理和用戶在線預(yù)訂房源的需求。
房屋出租管理系統(tǒng)的開發(fā)是以Java編程語言作為基礎(chǔ),在Eclipse平臺上完成編碼工作,系統(tǒng)整體為B/S架構(gòu),數(shù)據(jù)庫系統(tǒng)使用MySQL。文中詳細(xì)分析了房屋出租管理系統(tǒng)的研究背景、研究目的和意義、開發(fā)工具和相關(guān)技術(shù)以及系統(tǒng)需求、系統(tǒng)詳細(xì)設(shè)計和系統(tǒng)測試等等一系列內(nèi)容。系統(tǒng)實(shí)現(xiàn)了房屋出租管理系統(tǒng)所需的一些基本功能,并通過測試對這些實(shí)現(xiàn)的功能進(jìn)行了完善,進(jìn)而提高了系統(tǒng)整體的實(shí)用性。整個系統(tǒng)的開發(fā)過程中大量使用了Java相關(guān)的知識以及前端開發(fā)使用的html和javascript等,同時涉及到了很多開源框架和組件,例如后臺系統(tǒng)中運(yùn)用的MVC架構(gòu)、Freemarker模板引擎等,前端運(yùn)用的UI框架等。
系統(tǒng)投入運(yùn)行時,各功能均運(yùn)行正常。系統(tǒng)的每個界面的操作符合常規(guī)邏輯,對使用者來說操作簡單,界面友好。整個系統(tǒng)的各個功能設(shè)計合理,體現(xiàn)了人性化。
但是由于自己在系統(tǒng)開發(fā)過程中對一些用到的相關(guān)知識和技術(shù)掌握不夠牢固,再加上自身開發(fā)經(jīng)驗(yàn)欠缺,因此系統(tǒng)在有些方面的功能還不夠完善,考慮的不夠全面,因此整個系統(tǒng)還有待日后逐步完善。
參考文獻(xiàn)
[1]李艷杰.基于JAVA與MySQL數(shù)據(jù)庫的移動端題庫練習(xí)系統(tǒng)的設(shè)計與實(shí)現(xiàn)[J].黑龍江科學(xué),2022,13(02):56-57.
[2]郭楊, 人口管理 出租房屋管理創(chuàng)新. 操太盛 主編,北京昌平年鑒,新華出版社,2021,330,年鑒.
[3]張杰, 人口管理 出租房屋管理整治. 操太盛 主編,北京昌平年鑒,新華出版社,2021,330,年鑒.
[4]姜海.亭林派出所的出租屋管理“方程式”[J].派出所工作,2022(01):43-44.
[5]馮凱.“MySQL數(shù)據(jù)庫”課程教學(xué)中常見問題探析[J].無線互聯(lián)科技,2021,18(24):158-159.
[6]陳潔.“MySQL數(shù)據(jù)庫安全”課程教學(xué)方法優(yōu)化分析[J].無線互聯(lián)科技,2021,18(24):160-161.
[7]郭璨,方文暉.高校房屋出租出借分類管理探析[J].高校后勤研究,2021(12):46-50.
[8]舒雯,萬曉霞. 村委會當(dāng)“中介” 破解出租屋管理難題[N]. 南昌日報,2021-12-19(001).DOI:10.28591/n.cnki.nncrb.2021.003575.
[9]不公告發(fā)明人. 一種基于區(qū)塊鏈的房屋租賃系統(tǒng)及方法[P]. 江蘇省:CN112365031B,2021-11-16.
[10]吳志明. 房屋出租托管 小心變脫管[N]. 泉州晚報,2021-11-05(005).
[11]He Xinbin,Bai Yongbin,Yue Lisen,Wang Haixiao,Liu Yi. Design and Implementation of Information System Based on Java Technology Platform[J]. Journal of Physics: Conference Series,2021,2033(1).
[12]安國祥,張佳.后疫情時代如何做好水利事業(yè)單位房屋出租管理[J].當(dāng)代會計,2020(24):104-105.
[13]熊雨治.企業(yè)出租自有房屋全流程管理研究[J].廣西質(zhì)量監(jiān)督導(dǎo)報,2020(12):177-178.
[14]楊昭. 個人出租房屋稅收征管問題研究[D].江西財經(jīng)大學(xué),2020.
[15]Lei Yu,Cheng Li,Lei Wei,Hu WenYa. Marine biological monitoring and managing system based on Java technology[J]. MIPPR 2019: REMOTE SENSING IMAGE PROCESSING, GEOGRAPHIC INFORMATION SYSTEMS, AND OTHER APPLICATIONS,2020,11432.
[16]Xuchun Chen. Design and Implementation of University Art Education Management System Based on JAVA Technology[J]. International Journal of Emerging Technologies in Learning (iJET),2018,13(10).
致謝
本次設(shè)計歷時3個月。在這個畢業(yè)設(shè)計中,它離不開指導(dǎo)教師的指導(dǎo),使事情基本順利。指導(dǎo)老師無論是在畢業(yè)設(shè)計歷經(jīng)中,還是在論文做完中都給了了我特別大的助益。另1個方面,教師認(rèn)真負(fù)責(zé)的工作姿態(tài),謹(jǐn)慎的教學(xué)精神厚重的理論水準(zhǔn)都使我獲益匪淺。他勤懇謹(jǐn)慎的教學(xué)育人學(xué)習(xí)姿態(tài)也給我留下了特別特別深的感覺。我從老師那里學(xué)到了很多東西。在理論和實(shí)踐中,我的技能得到了特別大的提高。在此,特向教師表示由衷的感激。
經(jīng)過對該畢業(yè)設(shè)計的全部研究和開發(fā),我的系統(tǒng)研發(fā)經(jīng)歷了從需求分析到實(shí)現(xiàn)詳細(xì)功能,再到最終測試和維護(hù)的特殊進(jìn)展。讓我對系統(tǒng)研發(fā)有了更深層次的認(rèn)識。如今我的動手本領(lǐng)單獨(dú)處理疑惑的本領(lǐng)也獲取到了特別大的演練學(xué)習(xí)增多,這是這次畢業(yè)設(shè)計最好的收獲。
最后,在整個系統(tǒng)開發(fā)過程中,我周圍的同學(xué)和朋友給了我很多意見,所以我很快就確認(rèn)了系統(tǒng)的商業(yè)思想。在次,我由衷的向他們表示感激。
免費(fèi)領(lǐng)取本源代碼,請關(guān)注點(diǎn)贊+私信
總結(jié)
以上是生活随笔為你收集整理的ssm基于WEB的房屋出租管理系统的设计与实现161620的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: @postconstruct注解方法没有
- 下一篇: kb4023057安装失败_微软向旧版W