




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第一章緒論基于JAVA的財(cái)務(wù)管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)目錄TOC\o"1-2"\h\u4906第一章緒論 1139681.1研究工作的背景與意義 1319811.2國(guó)內(nèi)外研究現(xiàn)狀 2151921.3本文主要研究的問(wèn)題 287041.4本論文的結(jié)構(gòu)安排 317666第二章相關(guān)理論與技術(shù)介紹 4248292.1Java語(yǔ)言 482462.2Spring及其后端技術(shù) 56432.3Vue框架與前端技術(shù) 6121292.4數(shù)據(jù)庫(kù)相關(guān)技術(shù) 7210972.5本章小結(jié) 715768第三章系統(tǒng)需求分析 8193623.1需求分析概述 834413.2需求可行性分析 8133603.3系統(tǒng)功能需求分析 9111603.4非功能需求分析 11127693.5本章小結(jié) 122869第四章系統(tǒng)詳細(xì)設(shè)計(jì) 13260164.1系統(tǒng)總體設(shè)計(jì) 13251794.2數(shù)據(jù)庫(kù)設(shè)計(jì) 14191064.3本章小結(jié) 1612057第五章系統(tǒng)具體實(shí)現(xiàn) 17163175.1系統(tǒng)開(kāi)發(fā)環(huán)境 17209655.2賬戶管理模塊 1752835.3財(cái)務(wù)類別模塊 20205935.4收入支出項(xiàng)目模塊 224825.5資產(chǎn)管理模塊 25113145.6報(bào)表統(tǒng)計(jì)管理模塊 27270815.7后臺(tái)管理模塊 29210265.8本章小結(jié) 3429099第六章系統(tǒng)測(cè)試 3555066.1測(cè)試方法 35159006.2測(cè)試目標(biāo) 35301116.3具體測(cè)試情況 35128176.4測(cè)試結(jié)論 37120206.5本章小結(jié) 3720498第七章全文總結(jié)與展望 38230647.1全文總結(jié) 3855917.2后續(xù)工作展望 38第一章緒論1.1研究工作的背景與意義隨著社會(huì)的不斷進(jìn)步和發(fā)展,家庭財(cái)務(wù)的管理面臨了巨大的挑戰(zhàn),收入與支出的賬單越來(lái)越復(fù)雜,而且賬單的種類也變得越來(lái)越多,所以合理的規(guī)劃和進(jìn)行適當(dāng)?shù)睦碡?cái)會(huì)變得比之前困難了許多。而且隨著這種現(xiàn)象的不斷發(fā)展,以后人們依靠傳統(tǒng)的管理方法的難度越來(lái)越大。在這種背景之下,急需一個(gè)好的家庭財(cái)務(wù)管理系統(tǒng),來(lái)解決上述問(wèn)題和對(duì)家庭內(nèi)部的財(cái)務(wù)狀況進(jìn)行管理。另一方面雖然當(dāng)前很多人的收入水平有了顯著的提升,卻出現(xiàn)了不知如何理財(cái)?shù)那闆r。錯(cuò)誤的投資與消費(fèi)行為可能會(huì)導(dǎo)致無(wú)法維持生計(jì),這是因?yàn)槿藗儗?duì)于他們的消費(fèi)記錄完全沒(méi)有了解。為了解決這個(gè)重要的問(wèn)題,財(cái)務(wù)管理系統(tǒng)就出現(xiàn)了。因此,開(kāi)發(fā)一個(gè)可以快捷便利管理家庭各種財(cái)務(wù)數(shù)據(jù)的家庭財(cái)務(wù)管理系統(tǒng)是有必要且必不可少的。家庭財(cái)務(wù)管理的實(shí)質(zhì)是指一個(gè)家庭如何精心規(guī)劃,優(yōu)化資源配置,使有限的資金發(fā)揮最大的作用,使家庭財(cái)務(wù)的情況保持在一個(gè)健康的狀態(tài),以滿足家庭對(duì)金錢控制的經(jīng)濟(jì)行為。1.2國(guó)內(nèi)外研究現(xiàn)狀家庭財(cái)務(wù)管理系統(tǒng)以計(jì)算機(jī)技術(shù)為支撐,讓當(dāng)前的管理系統(tǒng)可以小巧易用的形式出現(xiàn)的人們的視線內(nèi),而且這就為每個(gè)家庭成員通過(guò)終端來(lái)隨時(shí)訪問(wèn)系統(tǒng)提供了基礎(chǔ)。家庭財(cái)務(wù)管理系統(tǒng)在國(guó)內(nèi)外很多地方都得到了廣泛的應(yīng)用。另一方面國(guó)外在很早以前就意識(shí)到了開(kāi)發(fā)和使用財(cái)務(wù)管理系統(tǒng),并推動(dòng)相關(guān)技術(shù)的發(fā)展,這些系統(tǒng)管理方便、智能化程度高,它們已經(jīng)實(shí)現(xiàn)了家庭財(cái)務(wù)的合理分配和管理,同時(shí)在一定程度上減少了金錢的浪費(fèi)。由于國(guó)外起步較早,所以家庭理財(cái)系統(tǒng)已經(jīng)發(fā)展得比較成熟。隨著計(jì)算機(jī)在我國(guó)的日益普及,當(dāng)前國(guó)內(nèi)也出現(xiàn)了很多流行的財(cái)務(wù)管理平臺(tái),如金碟、用友軟件。但是對(duì)于家庭管理這方面來(lái)說(shuō),并不能完全滿足家庭財(cái)務(wù)管理的需要?,F(xiàn)在家庭的記賬方式已經(jīng)由傳統(tǒng)的手工記賬變成了信息化記賬方式,為普通的家庭成員提供了極大的便利。但是隨著現(xiàn)在收入與生活水平的提高,出現(xiàn)了很多新的消費(fèi)與支出的種類,賬單內(nèi)容也越來(lái)越多樣化。當(dāng)前的家庭財(cái)務(wù)管理系統(tǒng),許多實(shí)用且便捷的功能并沒(méi)有得到實(shí)現(xiàn),現(xiàn)在還只是停留在管理家庭財(cái)務(wù)收支的基礎(chǔ)層面。沒(méi)有達(dá)到財(cái)務(wù)優(yōu)化、提出理財(cái)建議的水平。1.3本文主要研究的問(wèn)題本文主要研究的是如何開(kāi)發(fā)出一個(gè)易用的家庭財(cái)務(wù)管理系統(tǒng),使用后可以有效地解決手工賬務(wù)管理效率低、不準(zhǔn)確、保密性差等問(wèn)題,使家庭成員可以隨時(shí)隨地利用信息化手段方便地記賬、理財(cái),了解家庭財(cái)務(wù)狀況,更好地合理規(guī)劃財(cái)務(wù),節(jié)省開(kāi)支。首先在設(shè)計(jì)程序時(shí)就要先做好詳細(xì)的界面設(shè)計(jì)和概要設(shè)計(jì),然后根據(jù)界面設(shè)計(jì)來(lái)使用相關(guān)的UI庫(kù)來(lái)進(jìn)行構(gòu)建前端,然后要約定相應(yīng)的接口來(lái)使得前后端進(jìn)行交互。后端可以根據(jù)用戶的權(quán)限和前端的傳入的數(shù)據(jù)來(lái)進(jìn)行操作,編寫(xiě)相應(yīng)的業(yè)務(wù)邏輯,比如查詢、添加、刪除各類財(cái)務(wù)信息,然后進(jìn)行對(duì)應(yīng)的數(shù)據(jù)庫(kù)操作,實(shí)現(xiàn)出一個(gè)完整的系統(tǒng),并且最后做好測(cè)試工作。1.4本論文的結(jié)構(gòu)安排本論文的結(jié)構(gòu)安排如下:1. 緒論:這部分介紹了當(dāng)前財(cái)務(wù)管理系統(tǒng)的研究背景和意義。2. 相關(guān)理論與技術(shù)介紹:這部分主要說(shuō)明的是本系統(tǒng)所采用的技術(shù)以及相關(guān)介紹。3. 系統(tǒng)需求分析:這部分根據(jù)實(shí)際情況具體的分析本系統(tǒng)需要實(shí)現(xiàn)的功能,以及詳細(xì)的說(shuō)明需求分析。4. 系統(tǒng)詳細(xì)設(shè)計(jì):這部分就是進(jìn)行詳細(xì)的系統(tǒng)設(shè)計(jì),包括數(shù)據(jù)庫(kù)表和功能的設(shè)計(jì)。5. 系統(tǒng)編碼與實(shí)現(xiàn):這部分就是系統(tǒng)具體的編碼細(xì)節(jié)以及實(shí)現(xiàn)原理。6. 全文總結(jié)與展望:最后進(jìn)行了總結(jié),總結(jié)了研究工作的內(nèi)容以及還存在的問(wèn)題與不足。第二章相關(guān)理論與技術(shù)介紹第二章相關(guān)理論與技術(shù)介紹2.1Java語(yǔ)言當(dāng)前市場(chǎng)已經(jīng)出現(xiàn)了許多后端語(yǔ)言,如Java、Go、PHP等技術(shù),但是本項(xiàng)目選擇了Java作為后端語(yǔ)言。因?yàn)镴ava具有良好的跨平臺(tái)能力,這說(shuō)明編譯后的Java代碼可以在所有支持JVM的平臺(tái)上進(jìn)行運(yùn)行,而且無(wú)需重新編譯。Java代碼是運(yùn)行在虛擬機(jī)上的,虛擬機(jī)與平臺(tái)架構(gòu)無(wú)關(guān),所以它可以在一般的服務(wù)器平臺(tái)上使用。而且Java作為一門在后端出現(xiàn)的最多的語(yǔ)言,本質(zhì)上是由于Java經(jīng)過(guò)了多年的發(fā)展,已經(jīng)制定出了一套非常成熟的解決方案,從處理請(qǐng)求到處理數(shù)據(jù)、訪問(wèn)數(shù)據(jù)庫(kù)都已經(jīng)有組織或者公司來(lái)制定了一套標(biāo)準(zhǔn)化的規(guī)則或者是已經(jīng)有了相應(yīng)的工具來(lái)處理這個(gè)問(wèn)題。這就可以讓我們?cè)诰帉?xiě)后端時(shí),當(dāng)遇到什么問(wèn)題,現(xiàn)有的方案一般都可以解決,所以本項(xiàng)目使用的開(kāi)發(fā)語(yǔ)言首選是Java語(yǔ)言。本項(xiàng)目采用的開(kāi)發(fā)版本是JDK11,這是最流行JDK1.8的第一個(gè)后續(xù)LTS版本,它相較于之前增加了非常多的新功能,如全新的Lambda表達(dá)式、StreamAPI等,而且對(duì)于JVM也提供了更多的優(yōu)化,提升了Java的運(yùn)行速度。JVM采用了很多技術(shù)來(lái)提升運(yùn)行效率,比如虛擬機(jī)使用了垃圾收集算法,這可以讓Java和其他編程語(yǔ)言不同,自動(dòng)進(jìn)行對(duì)象內(nèi)存的回收可以不用讓開(kāi)發(fā)者來(lái)手動(dòng)釋放內(nèi)存,他可以極大的避免內(nèi)存泄漏,當(dāng)一個(gè)線程結(jié)束之后相應(yīng)的對(duì)象內(nèi)存就會(huì)被釋放,所以Java的內(nèi)存管理十分適用于后端開(kāi)發(fā)。而且Java最近的版本還支持了JIT即時(shí)編譯,把Java指令直接轉(zhuǎn)成了處理器指令,直接提升了運(yùn)行效率,避免了因?yàn)樘摂M機(jī)導(dǎo)致的效率問(wèn)題。JVM作為Java代碼運(yùn)行的環(huán)境,分為了程序計(jì)數(shù)器、虛擬機(jī)棧、本地方法棧、堆、方法區(qū)等區(qū)域。下圖是JVM運(yùn)行時(shí)的數(shù)據(jù)結(jié)構(gòu):圖2-1JVM運(yùn)行時(shí)的數(shù)據(jù)結(jié)構(gòu)2.2Spring及其后端技術(shù)在之前,JavaEE是一個(gè)標(biāo)準(zhǔn),包含了許多在后端開(kāi)發(fā)時(shí)遇到的問(wèn)題的解決方案,但是隨著技術(shù)的發(fā)展,為了解決JavaEE困難的使用方式,Spring這個(gè)框架便出現(xiàn)了,Spring框架是Java平臺(tái)上一個(gè)非常常用的企業(yè)級(jí)框架,因?yàn)镾pring是開(kāi)源的、免費(fèi)的,所以Spring框架所以在網(wǎng)站后端開(kāi)發(fā)中非常受歡迎,本項(xiàng)目也認(rèn)同并采用了這項(xiàng)技術(shù)。Spring的核心為IOC(控制反轉(zhuǎn))和AOP(面向切面編程),IOC可以使傳統(tǒng)的手動(dòng)new一個(gè)對(duì)象變成由IOC容器來(lái)提供這個(gè)對(duì)象,因?yàn)橐蕾嚨膶?shí)例化交給了容器,所以減少了實(shí)例化模版代碼。而且由容器來(lái)實(shí)例化也大大的降低了代碼之間的耦合性。AOP的出現(xiàn)是為了解決在很多接口中都出現(xiàn)的重復(fù)代碼,如:權(quán)限驗(yàn)證、log日志記錄,簡(jiǎn)化這些代碼。利用AOP可以分離業(yè)務(wù)邏輯,讓不相關(guān)的邏輯代碼盡量不要放在一起,這樣就可以有效地解耦相關(guān)業(yè)務(wù)邏輯,提高代碼的可重用性。SpringMVC的目的是構(gòu)建出一個(gè)完整的Web后端的架構(gòu)。MVC的意思是模型-視圖-控制器。這種架構(gòu)將后端程序分為三大部分:模型、視圖和控制器。模型部分就是代表在系統(tǒng)中所有存在的數(shù)據(jù)的抽象,它可以作為視圖和控制器組件之間的連接。視圖組件用于顯示應(yīng)用程序的UI,控制器處理所有的傳入請(qǐng)求,然后使用模型操作和處理數(shù)據(jù),并反饋到視圖,這時(shí)視圖就會(huì)有最后的顯示內(nèi)容。MVC是最常用的Web開(kāi)發(fā)框架之一,用于創(chuàng)建方便擴(kuò)展的程序。Spring在不斷地發(fā)展過(guò)程中又出現(xiàn)了SpringBoot,這是為了解決Spring復(fù)雜的配置以及部署而出現(xiàn)的。SpringBoot提倡習(xí)慣大于約定,一般是為代碼和注釋配置提供默認(rèn)值,這可以直接快速的新建一個(gè)Spring項(xiàng)目,省去復(fù)雜的配置環(huán)節(jié),提高開(kāi)發(fā)的整體效率。SpringBoot的使用可以讓本項(xiàng)目的搭建更加簡(jiǎn)單,其中大量的工具包也為開(kāi)發(fā)提供了許多幫助,而且SpringBoot還解決依賴包之間的版本沖突問(wèn)題,它引入了大量的包的時(shí)候會(huì)附加說(shuō)明當(dāng)前包的兼容版本說(shuō)明,這樣直接解決了包與包之間的兼容問(wèn)題。而且Spring家族中還提供了很多非常實(shí)用的框架,比如SpringDataJPA這個(gè)ORM框架,可以更加方便的操作數(shù)據(jù)庫(kù),通過(guò)對(duì)象關(guān)系映射可以把數(shù)據(jù)轉(zhuǎn)為對(duì)象進(jìn)行操作,操作實(shí)體對(duì)象來(lái)執(zhí)行CRUD操作,而且它不是直接使用SQL語(yǔ)句,而是建立對(duì)象與對(duì)象之間的聯(lián)系避免了程序的SQL語(yǔ)句緊密耦合。還提供了一個(gè)很實(shí)用的權(quán)限管理框架——SpringSecurity,它可以和SpringBoot非常緊密的結(jié)合起來(lái)提供服務(wù),SpringSecurity的本質(zhì)上是基于攔截器來(lái)實(shí)現(xiàn)的,所有訪問(wèn)的用戶都必須經(jīng)過(guò)授權(quán)過(guò)濾器,由框架來(lái)判定是否擁有權(quán)限訪問(wèn)。SpringSecurity可以選擇基于身份進(jìn)行認(rèn)證還可基于權(quán)限認(rèn)證,而且他支持使用注解來(lái)控制方法權(quán)限,只需要在需要認(rèn)證的方法上加上注解就可以直接對(duì)訪問(wèn)者進(jìn)行權(quán)限檢查。2.3Vue框架與前端技術(shù)Vue.js是一個(gè)開(kāi)源的前端JavaScript框架,用于快速構(gòu)建用戶界面和單頁(yè)應(yīng)用。它作為本項(xiàng)目的前端框架,可以通過(guò)Axios等插件來(lái)使用Json與后端進(jìn)行交互,然后動(dòng)態(tài)的生成頁(yè)面和傳輸輸入數(shù)據(jù)。而且本項(xiàng)目的前端使用SPA這種設(shè)計(jì)方法來(lái)編寫(xiě)的,帶來(lái)了了更好的使用體驗(yàn)。現(xiàn)在SPA(單頁(yè)應(yīng)用)正變得越來(lái)越流行。其中每個(gè)新頁(yè)面的內(nèi)容不是通過(guò)加載一個(gè)新的HTML頁(yè)面來(lái)提供,而是通過(guò)JavaScript對(duì)現(xiàn)有頁(yè)面本身的DOM元素進(jìn)行處理,然后動(dòng)態(tài)生成新的頁(yè)面。在傳統(tǒng)的網(wǎng)絡(luò)架構(gòu)中,一個(gè)頁(yè)面可能會(huì)轉(zhuǎn)到另一個(gè)HTML頁(yè)面,瀏覽器會(huì)從頭下載并顯示它。而現(xiàn)在SPA允許用戶在更新或獲取新元素的同時(shí)繼續(xù)瀏覽頁(yè)面,然后可以直接生成新的頁(yè)面,帶來(lái)更快的內(nèi)容重載。使用SPA應(yīng)用程序可以通過(guò)AJAX請(qǐng)求動(dòng)態(tài)地從服務(wù)器獲取內(nèi)容。這不僅允許瀏覽器保持當(dāng)前頁(yè)面的顯示,而且還可以在后臺(tái)向服務(wù)器發(fā)送請(qǐng)求,以獲得額外的內(nèi)容或直接生成一個(gè)新的頁(yè)面。此外,HTML5允許我們?cè)诓恢匦录虞d頁(yè)面的情況下改變頁(yè)面的URL,并允許我們?cè)诓煌捻?yè)面使用不同的URL。其中,Vue優(yōu)點(diǎn)還有官方提供了VueCLI這個(gè)可以快速構(gòu)建一個(gè)完整的Vue項(xiàng)目的構(gòu)建工具。這個(gè)工具可以很容易地使用webpack打包,并且?guī)в泻侠淼哪J(rèn)配置。它還提供了一個(gè)非常通用和豐富的插件系統(tǒng),可以很容易地?cái)U(kuò)展當(dāng)前的項(xiàng)目。最重要的是,它為創(chuàng)建和管理Vue.js項(xiàng)目提供了一個(gè)完全圖形化的用戶界面,使用戶能夠快速開(kāi)始編寫(xiě)項(xiàng)目,而不必關(guān)注復(fù)雜的配置。2.4數(shù)據(jù)庫(kù)相關(guān)技術(shù)當(dāng)前的市場(chǎng)上使用的比較多的就是SQLServer、OracleDatabase和MySQL,在評(píng)估之下項(xiàng)目采用了MySQL這個(gè)數(shù)據(jù)庫(kù),因?yàn)樗情_(kāi)源免費(fèi)的且功能強(qiáng)大,本項(xiàng)目使用的Spring也支持直接對(duì)該數(shù)據(jù)庫(kù)進(jìn)行此操作。MySQL是一個(gè)的關(guān)系型數(shù)據(jù)庫(kù)。MySQL中數(shù)據(jù)的組織方式是相同類型的數(shù)據(jù)放到同一個(gè)表之中,表中的每一列包含相同類型的數(shù)據(jù),每一行代表每一條數(shù)據(jù)。每塊數(shù)據(jù)都有自己的主鍵。主鍵是唯一的,一個(gè)表中的鍵值不能出現(xiàn)兩次。那么存儲(chǔ)相應(yīng)的數(shù)據(jù)時(shí),比如需要存入財(cái)務(wù)記錄,只需要建立一個(gè)相應(yīng)的表專門存儲(chǔ)財(cái)務(wù)數(shù)據(jù)。而且數(shù)據(jù)之間使用外鍵來(lái)建立關(guān)系,表與表之間可能存在聯(lián)系。MySQL還具有事務(wù)的功能,每個(gè)事務(wù)都是原子性的,所以如果一個(gè)操作在任何階段失敗,在事務(wù)中發(fā)生的整個(gè)修改都會(huì)回滾,比如在存入財(cái)務(wù)數(shù)據(jù)時(shí)出現(xiàn)了問(wèn)題,那么數(shù)據(jù)會(huì)回滾,并不會(huì)存入數(shù)據(jù)庫(kù)。MySQL通過(guò)這一點(diǎn)來(lái)保證數(shù)據(jù)的完整性。MySQL是為滿足高性能應(yīng)用的要求而設(shè)計(jì)的,滿足了本項(xiàng)目對(duì)于性能的需求。2.5本章小結(jié)本章對(duì)家庭財(cái)務(wù)管理系統(tǒng)編寫(xiě)所需要使用到的技術(shù)進(jìn)行一些簡(jiǎn)單的介紹,主要是介紹Java技術(shù),前后端技術(shù),數(shù)據(jù)庫(kù)等,為之后系統(tǒng)的設(shè)計(jì)與詳細(xì)編寫(xiě)提供了堅(jiān)實(shí)的基礎(chǔ)與準(zhǔn)備。第三章系統(tǒng)需求分析第三章系統(tǒng)需求分析3.1需求分析概述需求分析,是為正在構(gòu)建或修改的新軟件定義用戶期望的過(guò)程。需求分析包括確定一個(gè)新的項(xiàng)目需要完成所要滿足的需求或者功能,再考慮到可行性以及有可能會(huì)出現(xiàn)的沖突的情況下,分析和確定軟件需求的任務(wù)。任何一個(gè)項(xiàng)目的開(kāi)始,都是從需求分析開(kāi)始的,因?yàn)樗绊懙巾?xiàng)目開(kāi)發(fā)工作的所有階段。如果沒(méi)有做好詳細(xì)的需求分析,很可能會(huì)在后面的階段出現(xiàn)不可預(yù)料的問(wèn)題。當(dāng)然可能會(huì)時(shí)常遇到模糊、不確定的需求,在這種情況下,最重要的就是要準(zhǔn)確的分析和定義需求。在本項(xiàng)目,我們必須首先要確定這個(gè)系統(tǒng)中每一個(gè)模塊的具體工作,總結(jié)出相應(yīng)負(fù)責(zé)的功能,并規(guī)劃出各個(gè)子功能,將總的功能劃分為互不影響的子功能。并根據(jù)模塊的難度和工作量劃分工作時(shí)間和進(jìn)度,從而提高工作效率,減少不必要的成本。由于現(xiàn)在許多家庭財(cái)務(wù)管理制度的不完善,所以一些做的比較出色的管理系統(tǒng)也值得被借鑒。3.2需求可行性分析本課題是在現(xiàn)在網(wǎng)絡(luò)技術(shù)已經(jīng)相當(dāng)成熟的基礎(chǔ)上提出的,但是市面上的家庭財(cái)務(wù)管理系統(tǒng)可能還有一些地方做的并不是這么好,需要進(jìn)一步的改進(jìn),本系統(tǒng)通過(guò)了理論與實(shí)踐的研究提出了一個(gè)實(shí)用的系統(tǒng)。在技術(shù)上因?yàn)楫?dāng)前我國(guó)互聯(lián)網(wǎng)技術(shù)經(jīng)過(guò)了飛速的發(fā)展,現(xiàn)在使用寬帶與移動(dòng)上網(wǎng)的人數(shù)已經(jīng)非常龐大,接入網(wǎng)絡(luò)的基礎(chǔ)設(shè)施建設(shè)已經(jīng)非常完善,所以云端技術(shù)已經(jīng)得到了廣泛的運(yùn)用,未來(lái)的應(yīng)用趨向于上手即用,給用戶帶來(lái)更便利的操作作為核心。而具體的技術(shù)上使用Java作為開(kāi)發(fā)語(yǔ)言使整個(gè)系統(tǒng)的開(kāi)發(fā)變得更加的簡(jiǎn)便,因?yàn)楝F(xiàn)在的Java已經(jīng)經(jīng)過(guò)了很久的發(fā)展,成熟的技術(shù)以及活躍的開(kāi)發(fā)者可以讓項(xiàng)目的開(kāi)發(fā)得到強(qiáng)大的技術(shù)支持。在現(xiàn)在JavaEE平臺(tái)出現(xiàn)的Spring大大提升了后端開(kāi)發(fā)的效率,已經(jīng)成為了Java企業(yè)開(kāi)發(fā)中不可缺少的框架技術(shù),而且還有很多具有強(qiáng)大功能的開(kāi)發(fā)工具來(lái)幫助開(kāi)發(fā)人員。前端技術(shù)本就是一門日新月異的技術(shù),不斷推出的新框架和新工具就是為了讓構(gòu)建頁(yè)面更加容易,種類繁多的前端框架讓簡(jiǎn)單設(shè)計(jì)出一個(gè)美觀大方的前端界面成為了現(xiàn)實(shí)。在經(jīng)濟(jì)上,人們的生活質(zhì)量有了明顯的提高,購(gòu)買和使用手機(jī)或電腦變得越來(lái)越普遍,這時(shí)就完全可以實(shí)現(xiàn)每人一臺(tái)終端設(shè)備。同時(shí),我國(guó)正在不斷加大通信行業(yè)的發(fā)展力度,因此,基礎(chǔ)設(shè)施的保證和網(wǎng)絡(luò)傳輸質(zhì)量的逐步優(yōu)化和提升,是云端程序發(fā)展的基礎(chǔ)。因?yàn)楸鞠到y(tǒng)設(shè)計(jì)時(shí)的目標(biāo)是面向家庭內(nèi)部,所以只需要家庭內(nèi)的成員簡(jiǎn)單的注冊(cè)便可以使用,所以這個(gè)過(guò)程不僅方便,而且管理系統(tǒng)中的功能非常全面。這種系統(tǒng)可以更快、更好地處理當(dāng)前家庭的家庭財(cái)務(wù)信息。用戶需要的隨時(shí)掌握和了解當(dāng)前家庭財(cái)務(wù)狀況是本程序一個(gè)重要的需求點(diǎn)。而且設(shè)計(jì)程序時(shí)另一個(gè)要考慮的目標(biāo)就是易用,易用對(duì)于普通人來(lái)說(shuō)是非常重要的,這讓每一個(gè)家庭成員都可以簡(jiǎn)單的操作系統(tǒng)。因?yàn)楸鞠到y(tǒng)部署在云端上,所以每個(gè)家庭成員只需要一臺(tái)可以上網(wǎng)的終端就能夠直接簡(jiǎn)單、便捷地進(jìn)行財(cái)務(wù)數(shù)據(jù)管理。3.3系統(tǒng)功能需求分析3.3.1總體需求分析本系統(tǒng)作為家庭財(cái)務(wù)管理系統(tǒng),其中最為主要的目的就是進(jìn)行財(cái)務(wù)管理,而管理系統(tǒng)的核心功能就是對(duì)日常消費(fèi)和收入的記錄與統(tǒng)計(jì)。系統(tǒng)分為了多個(gè)模塊,模塊之間相互依賴來(lái)進(jìn)行工作。首先是用戶管理模塊,它提供了使用這個(gè)系統(tǒng)的普通用戶,一般使用者開(kāi)始時(shí)都是先注冊(cè)用戶,然后使用這個(gè)身份來(lái)使用系統(tǒng)。然后接下來(lái)就是可以往系統(tǒng)內(nèi)錄入財(cái)務(wù)數(shù)據(jù)了,一般這個(gè)財(cái)務(wù)數(shù)據(jù)就是用戶的某筆收入,如工資,或者是某筆支出,類似購(gòu)買東西等消費(fèi)。然后在系統(tǒng)內(nèi)部有數(shù)據(jù)后可以方便的查看之前的數(shù)據(jù),調(diào)用報(bào)表統(tǒng)計(jì)管理模塊來(lái)直觀的了解當(dāng)前的經(jīng)濟(jì)狀況。而且還可以使用資產(chǎn)管理記錄當(dāng)前的存款或負(fù)債情況。在系統(tǒng)中還有一個(gè)特殊的用戶,就是管理員,設(shè)置管理員的目的就是查看管理普通用戶的數(shù)據(jù)和了解整個(gè)家庭的財(cái)務(wù)狀況。3.3.2用戶管理在本系統(tǒng)中,定義了兩種用戶的角色,分別為普通用戶以及管理員。當(dāng)一個(gè)新的家庭成員第一次使用本系統(tǒng)的時(shí)候,他首先必須注冊(cè)一個(gè)新的用戶,之后他就可以使用系統(tǒng)了。每一個(gè)用戶都提供了查看自身信息、修改自身信息、修改密碼的功能。查看信息可以知道自己的名稱、身份、電話號(hào)等信息,修改信息可以對(duì)這些相關(guān)信息進(jìn)行修改,然后用戶可以進(jìn)行密碼修改。管理也可以像普通用戶一樣的使用系統(tǒng),但是兩種用戶的身份在系統(tǒng)之中所起到的作用不同,管理員還有查看用戶信息的功能和權(quán)限。3.3.3財(cái)務(wù)管理財(cái)務(wù)管理提供的功能有數(shù)據(jù)管理、財(cái)務(wù)類別這兩塊內(nèi)容,財(cái)務(wù)類別是對(duì)于用戶收入或支出信息的分類,比如說(shuō)這條支出信息屬于伙食或娛樂(lè)等類別,用戶可以根據(jù)自己的情況新增自己需要的類別,這樣就可以給每一條信息進(jìn)行分類,方便管理。然后財(cái)務(wù)數(shù)據(jù)管理就是具體進(jìn)行錄入和查看某條信息的功能,錄入時(shí)需要輸入這筆收入或支出的金額、日期,還可以補(bǔ)充詳細(xì)的描述信息,然后可以把這條記錄歸類到某個(gè)類別上。這樣就相當(dāng)于可以把用戶在生活中各方面的收入支出都記錄到了系統(tǒng)之中,之后還提供了查看和刪除這些信息的功能。這些數(shù)據(jù)為下一步的歸納統(tǒng)計(jì)起到了鋪墊。3.3.4報(bào)表統(tǒng)計(jì)管理為了解決統(tǒng)計(jì)數(shù)據(jù)時(shí)需要花費(fèi)大量時(shí)間的問(wèn)題,報(bào)表統(tǒng)計(jì)管理提供了報(bào)表生成和導(dǎo)出數(shù)據(jù)的功能。報(bào)表生成根據(jù)每周、每月、每年不同的時(shí)間段的統(tǒng)計(jì),然后根據(jù)這個(gè)時(shí)間段的數(shù)據(jù)生成了相應(yīng)的報(bào)表,這些報(bào)表的內(nèi)容包括這個(gè)時(shí)間段的總收入和總支出,然后還生成條形統(tǒng)計(jì)圖顯示每周、每月、每年的數(shù)據(jù)與一個(gè)數(shù)據(jù)排行榜,排行榜顯示金額最大的幾條數(shù)據(jù)。而且還根據(jù)了不同的類別統(tǒng)計(jì)了這些消費(fèi)的各自占比,形象的展示了整個(gè)家庭收入與支出的趨勢(shì),是了解財(cái)務(wù)情況的重要工具。還有一個(gè)實(shí)用的功能,就是直接把這個(gè)用戶的數(shù)據(jù)導(dǎo)出到Excel,讓用戶可以自行下載保存。3.3.5資產(chǎn)管理資產(chǎn)管理的功能是記錄當(dāng)前用戶的存款以及負(fù)債的情況,使用這個(gè)功能時(shí),需要先設(shè)置相關(guān)的存款負(fù)債記錄,當(dāng)用戶有新的存款或負(fù)債數(shù)據(jù)就可以直接修改,這時(shí)相當(dāng)于在原有的基礎(chǔ)上進(jìn)行增加。當(dāng)然也提供資產(chǎn)查詢功能,顯示當(dāng)前資產(chǎn)數(shù)據(jù)以及凈資產(chǎn)凈資產(chǎn)。這就達(dá)到了資產(chǎn),包括存款和負(fù)債的管理。3.3.6后臺(tái)管理因?yàn)楣芾韱T必須要管理整個(gè)家庭系統(tǒng)的數(shù)據(jù),所以在使用管理員登陸了系統(tǒng)之后,會(huì)出現(xiàn)普通用戶沒(méi)有的操作界面,這個(gè)界面下提供了管理功能。管理員的管理功能分為操作用戶數(shù)據(jù)和查看家庭統(tǒng)計(jì)報(bào)表兩個(gè)大類。在操作用戶數(shù)據(jù)下可以查看到本系統(tǒng)下的所有用戶,可以直接刪除某個(gè)用戶和查看這個(gè)用戶財(cái)務(wù)信息,選擇查看用戶財(cái)務(wù)信息時(shí)可以查看該用戶具體的身份信息和他錄入的財(cái)務(wù)信息,當(dāng)然也可以對(duì)這些財(cái)務(wù)信息修改與刪除。管理員還擁有查看本系統(tǒng)統(tǒng)計(jì)報(bào)表的功能,所有用戶的財(cái)務(wù)數(shù)據(jù)構(gòu)成了系統(tǒng)統(tǒng)計(jì)報(bào)表,在這個(gè)報(bào)表下需要顯示所有用戶的總收入與總支出,還有對(duì)每個(gè)用戶數(shù)據(jù)在總數(shù)據(jù)中的占比進(jìn)行統(tǒng)計(jì),顯示出誰(shuí)的收入最多或支出最多。這樣就對(duì)家庭內(nèi)部的財(cái)務(wù)一目了然,方便制定以后的消費(fèi)計(jì)劃。最后提供了一個(gè)通知家庭成員的公告功能,管理員可以利用這個(gè)功能把需要給家庭成員的信息發(fā)布在公告系統(tǒng)上,如可以發(fā)布一些接來(lái)下花費(fèi)的建議。當(dāng)普通成員登錄系統(tǒng)時(shí)就可以查看到相應(yīng)的公告,這就起到了通知的作用。3.4非功能需求分析為了使整個(gè)系統(tǒng)更加的穩(wěn)定和用戶有更好的體驗(yàn),非功能需求的分析是必不可少的,一般的非功能需求有以下幾點(diǎn)。3.4.1安全需求每個(gè)用戶的數(shù)據(jù)存在數(shù)據(jù)庫(kù)上,而且用戶的密碼不能使用明文存儲(chǔ),必須經(jīng)過(guò)加密才可以存在數(shù)據(jù)庫(kù)上。當(dāng)新一個(gè)新的用戶注冊(cè)了本系統(tǒng)之后,后端會(huì)采用Bcrypt加密密碼,然后把它存到數(shù)據(jù)庫(kù)中。這個(gè)加密完的數(shù)據(jù)并無(wú)法解密,而下次登錄是通過(guò)處理傳入的密碼,使用相同的加密方法來(lái)進(jìn)行加密,然后比對(duì)這兩串密鑰,如果相同那就代表輸入的密碼正確。前端在訪問(wèn)后端數(shù)據(jù)的時(shí)候必須要有相應(yīng)的用戶身份與權(quán)限驗(yàn)證模塊,來(lái)保證數(shù)據(jù)訪問(wèn)的安全。在用戶沒(méi)有登錄或者登錄用戶的權(quán)限錯(cuò)誤時(shí)拒絕訪問(wèn),在對(duì)數(shù)據(jù)庫(kù)進(jìn)行讀取和寫(xiě)入信息的時(shí)候必須保持?jǐn)?shù)據(jù)的隔離性和獨(dú)立性,以防出現(xiàn)數(shù)據(jù)錯(cuò)誤。3.4.2性能需求性能需求是最能影響用戶體驗(yàn)的需求,越好的性能可以帶給用戶越好的體驗(yàn)。如果系統(tǒng)響應(yīng)過(guò)慢,就帶來(lái)了較大的使用問(wèn)題。一般系統(tǒng)的響應(yīng)時(shí)間不能超過(guò)3秒,在系統(tǒng)運(yùn)行的過(guò)程中必須一直保持及時(shí)的響應(yīng),在處理較多數(shù)據(jù)時(shí)盡量不卡頓。3.4.3易用性與健壯性需求系統(tǒng)的易用性主要包括了系統(tǒng)在與用戶進(jìn)行交互的過(guò)程中,用戶可以快速上手和了解系統(tǒng)使用方法。最常用的交互方法是使用視窗交互,可以進(jìn)行的數(shù)據(jù)操作,采用比較簡(jiǎn)潔的界面,不但富有人性化,而且操作不會(huì)很復(fù)雜。在使用時(shí)只需要進(jìn)行點(diǎn)擊和確認(rèn),把數(shù)據(jù)輸入在輸入欄中就可以錄入信息。系統(tǒng)設(shè)計(jì)規(guī)范、清晰,盡可能滿足一般人的使用習(xí)慣,符合實(shí)際應(yīng)用。系統(tǒng)內(nèi)容需要清晰明了,相關(guān)信息方便管理者查看。同時(shí)一些限定字段應(yīng)該直接讓用戶選擇,節(jié)省用戶的時(shí)間,減少一些不必要的輸入來(lái)提升效率。還應(yīng)該一些限制機(jī)制來(lái)處理非法數(shù)據(jù),當(dāng)系統(tǒng)接受到了非法數(shù)據(jù)之后,可以有相應(yīng)的處理機(jī)制來(lái)處理這個(gè)非法錯(cuò)誤,來(lái)提高系統(tǒng)的健壯性,系統(tǒng)不會(huì)輕易的產(chǎn)生崩潰。3.4.4可擴(kuò)展性需求系統(tǒng)還有可能在后期進(jìn)行不斷地開(kāi)發(fā)和維護(hù),所以可擴(kuò)展性也十分重要,系統(tǒng)的架構(gòu)如果直接獨(dú)立為多個(gè)模塊,各個(gè)模塊之間相對(duì)獨(dú)立,模塊實(shí)現(xiàn)隱蔽、高內(nèi)聚、低耦合等的特點(diǎn),那么維護(hù)和擴(kuò)展就比較簡(jiǎn)單了。在需要新功能時(shí)可以直接增加新的模塊,其中如果有哪個(gè)模塊出現(xiàn)了問(wèn)題也只需要修改那個(gè)模塊,這時(shí)系統(tǒng)就具有了可擴(kuò)展性。3.5本章小結(jié)本章對(duì)于家庭財(cái)務(wù)管理系統(tǒng)的需求分析做了詳細(xì)的敘述,分析了家庭財(cái)務(wù)信息平臺(tái)的基本要求,為系統(tǒng)的編寫(xiě)奠定了基礎(chǔ)。第四章系統(tǒng)詳細(xì)設(shè)計(jì)第四章系統(tǒng)詳細(xì)設(shè)計(jì)4.1系統(tǒng)總體設(shè)計(jì)4.1.1系統(tǒng)架構(gòu)設(shè)計(jì)本系統(tǒng)采用了前后端分離的架構(gòu),這個(gè)架構(gòu)把前后端進(jìn)行分離,前端完全負(fù)責(zé)渲染頁(yè)面和提供用戶操作,后端進(jìn)行處理和存儲(chǔ)數(shù)據(jù),之間采用Json來(lái)傳遞數(shù)據(jù),各個(gè)部分各不干擾,相互獨(dú)立,然后通過(guò)工具將前端和后端的各自成果結(jié)合起來(lái)。最終實(shí)現(xiàn)開(kāi)發(fā)效率的最大化。是現(xiàn)在非常流行的架構(gòu)。1. 前端作為View層,提供了與用戶進(jìn)行交互的操作頁(yè)面,可以顯示需求的數(shù)據(jù),獲得當(dāng)前用戶輸入的數(shù)據(jù)并轉(zhuǎn)發(fā)給后端,完成了人與系統(tǒng)之間的交互。2. Controller層接收與轉(zhuǎn)發(fā)用戶請(qǐng)求,然后再把這個(gè)請(qǐng)求轉(zhuǎn)到具體的業(yè)務(wù)處理函數(shù)去進(jìn)行操作,當(dāng)處理完數(shù)據(jù)之后就會(huì)把請(qǐng)求的數(shù)據(jù)重新返回給前端。3. Service層就是系統(tǒng)的業(yè)務(wù)邏輯部分,這部分一般是獲取數(shù)據(jù)庫(kù)中的數(shù)據(jù)并且進(jìn)行相應(yīng)的處理,然后把處理的結(jié)果返回給上層。它就是Controller層與Dao層之間的連接,屬于整個(gè)系統(tǒng)非常重要的一部分。4. Dao層一般是與數(shù)據(jù)庫(kù)進(jìn)行交互的模塊,包括對(duì)于數(shù)據(jù)庫(kù)的增刪查改。這部分一般會(huì)由ORM框架來(lái)實(shí)現(xiàn),它會(huì)提供功能強(qiáng)大、使用簡(jiǎn)單的操作數(shù)據(jù)庫(kù)的方式。總體架構(gòu)如下圖所示:圖4-1系統(tǒng)的總體架構(gòu)4.1.2系統(tǒng)流程設(shè)計(jì)本系統(tǒng)的流程是:用戶進(jìn)入系統(tǒng)后會(huì)跳轉(zhuǎn)到登錄頁(yè)面,然后輸入用戶名和密碼,用戶在系統(tǒng)驗(yàn)證通過(guò)之后就會(huì)跳轉(zhuǎn)到主界面。系統(tǒng)會(huì)根據(jù)用戶的身份權(quán)限不同,顯示不同身份權(quán)限的操作界面。用戶可以使用相應(yīng)的功能模塊,包括賬戶管理、收支項(xiàng)目管理、分類管理、報(bào)表統(tǒng)計(jì)等。接下來(lái)使用流程圖描述系統(tǒng)的流程設(shè)計(jì),流程圖是一個(gè)使用圖形來(lái)表示步驟的方法。它使用圖形和箭頭顯示每一步步驟,可以在展示算法、系統(tǒng)工作的流程中發(fā)揮巨大的作用。通常情況下,流程圖將步驟顯示為各種類型的框圖,并通過(guò)箭頭按順序來(lái)連接它們。具體系統(tǒng)流程如下圖所示:圖4-2系統(tǒng)的流程圖4.2數(shù)據(jù)庫(kù)設(shè)計(jì)數(shù)據(jù)庫(kù)的設(shè)計(jì)對(duì)于系統(tǒng)的詳細(xì)設(shè)計(jì)是非常重要的。本系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)的目標(biāo)是通過(guò)對(duì)數(shù)據(jù)表各個(gè)字段的設(shè)計(jì)和構(gòu)建出合理的表結(jié)構(gòu),有效管理系統(tǒng)的數(shù)據(jù)流,方便用戶對(duì)系統(tǒng)的管理。最終達(dá)到的設(shè)計(jì)目標(biāo)就是可以讓數(shù)據(jù)的存儲(chǔ)和組織井井有條。在保證數(shù)據(jù)完整性和方便數(shù)據(jù)訪問(wèn)操作的同時(shí),數(shù)據(jù)冗余度要盡可能小,管理要更簡(jiǎn)單、更清晰、更容易操作。數(shù)據(jù)庫(kù)是有效組織系統(tǒng)數(shù)據(jù)的有力工具,所以要想設(shè)計(jì)好數(shù)據(jù)庫(kù),需要詳細(xì)分析系統(tǒng)中的各個(gè)模塊功能和這些模塊需要的數(shù)據(jù)儲(chǔ)存的要求,然后設(shè)計(jì)相應(yīng)的數(shù)據(jù)表結(jié)構(gòu)。接下來(lái)是數(shù)據(jù)庫(kù)總體的設(shè)計(jì)與各個(gè)數(shù)據(jù)庫(kù)之間的關(guān)聯(lián),在數(shù)據(jù)庫(kù)之中涉及了五張表,分別為Data、Member、Asset、Type、News五張表,這五張表分別代表了財(cái)務(wù)信息表,用戶表,資產(chǎn)表,財(cái)務(wù)類型表,公告信息表。圖4-3數(shù)據(jù)庫(kù)的設(shè)計(jì)圖接下來(lái)進(jìn)行各張表的詳細(xì)介紹:Member表:這個(gè)表用于存儲(chǔ)每一位用戶的個(gè)人信息字段名數(shù)據(jù)類型約束描述Id(主鍵)BigintNotnull用戶的唯一標(biāo)識(shí)符UsernameVarcharNotnull用戶名NameVarcharNotnull昵稱PasswordVarcharNotnull密碼AgeBigintNotnull年齡SexVarcharNotnull性別TelephoneVarcharNotnull電話RoleVarcharNotnull用戶權(quán)限身份Data表:這個(gè)表用于存儲(chǔ)每一條財(cái)務(wù)信息字段名數(shù)據(jù)類型約束描述Id(主鍵)BigintNotnull數(shù)據(jù)的唯一標(biāo)識(shí)符DateDateNotnull日期DescriptionVarcharNotnull財(cái)務(wù)數(shù)據(jù)的信息描述FormIntNotnull收入類型或支出類型MoneyBigintNotnull金額TypeVarcharNotnull財(cái)務(wù)類別Asset表:這個(gè)表用于存儲(chǔ)每一位用戶的資產(chǎn)信息字段名數(shù)據(jù)類型約束描述Id(主鍵)BigintNotnull數(shù)據(jù)的唯一標(biāo)識(shí)符FormIntNotnull收入類型或支出類型MoneyBigintNotnull資產(chǎn)金額Type表:這個(gè)表用于存儲(chǔ)財(cái)務(wù)類型字段名數(shù)據(jù)類型約束描述Id(主鍵)BigintNotnull數(shù)據(jù)的唯一標(biāo)識(shí)符DataVarcharNotnull財(cái)務(wù)類型信息FormIntNotnull收入類型或支出類型News表:這個(gè)表用于存儲(chǔ)公告信息字段名數(shù)據(jù)類型約束描述Id(主鍵)BigintNotnull數(shù)據(jù)的唯一標(biāo)識(shí)符DataIntNotnull公告信息FormBigintNotnull收入類型或支出類型DateDateNotnull日期4.3本章小結(jié)本章是系統(tǒng)的詳細(xì)設(shè)計(jì)部分,所以著重介紹了系統(tǒng)的整體架構(gòu),主要從網(wǎng)站的架構(gòu)、系統(tǒng)運(yùn)行時(shí)的流程還有數(shù)據(jù)庫(kù)總體的設(shè)計(jì)原則等方面進(jìn)行介紹,為下一章具體的實(shí)現(xiàn)奠定了基礎(chǔ)。第五章系統(tǒng)具體實(shí)現(xiàn)第五章系統(tǒng)具體實(shí)現(xiàn)5.1系統(tǒng)開(kāi)發(fā)環(huán)境操作系統(tǒng):Windows10軟件開(kāi)發(fā)平臺(tái):IDEA2021.1開(kāi)發(fā)語(yǔ)言:JDK11后端服務(wù)器:SpringBoot2.4.1數(shù)據(jù)庫(kù):MySql8.05.2賬戶管理模塊這個(gè)模塊屬于所有權(quán)限用戶都可以使用的模塊,賬戶管理模塊包括以下的功能,分別是:注冊(cè)用戶,用戶登錄。然后在用戶登錄之后可以查看當(dāng)前用戶的信息,然后提供了修改這些信息的功能,還可以修改用戶的密碼。模塊圖如下所示:圖5-1模塊圖子模塊介紹:(1)注冊(cè)用戶一個(gè)新的用戶在開(kāi)始使用本系統(tǒng)的時(shí)候需要先注冊(cè),注冊(cè)完畢之后就可以使用該用戶的身份使用該系統(tǒng),在注冊(cè)的時(shí)候前端需要提供幾個(gè)輸入框,在輸入框輸入用戶名密碼等用戶信息。而且有一些輸入框必須設(shè)置為不為空,以防止存入無(wú)效數(shù)據(jù)。前端傳入注冊(cè)信息到后端之后,后端要新建一個(gè)對(duì)象,然后必須要進(jìn)行適當(dāng)?shù)某跏蓟?,比如需要給每一個(gè)新用戶分配默認(rèn)的類別信息,之后就可以使用前端傳入的新用戶數(shù)據(jù)來(lái)初始化對(duì)象,最后存入數(shù)據(jù)庫(kù)。(2)用戶登錄用戶輸入正確的賬號(hào)密碼,后端接收到之后會(huì)先去查找這個(gè)用戶,因?yàn)榘踩缘木壒仕詳?shù)據(jù)庫(kù)存的密碼都是經(jīng)過(guò)加密算法計(jì)算后得到的。所以當(dāng)系統(tǒng)得到一個(gè)密碼之后要使用相同的加密算法來(lái)進(jìn)行加密,然后對(duì)比和數(shù)據(jù)庫(kù)之中密碼是否相同,如果相同則代表用戶輸入了正確的密碼,就算身份認(rèn)證成功了。本系統(tǒng)的用戶驗(yàn)證是采用Oauth2來(lái)實(shí)現(xiàn)的,Oauth2是一種開(kāi)放的授權(quán)標(biāo)準(zhǔn),它可以讓用戶獲得認(rèn)證服務(wù)器的認(rèn)證,然后來(lái)獲取放在資源服務(wù)器上的用戶資源。如果用戶在登錄成功之后,后端會(huì)給前端發(fā)送JWT,前端會(huì)把JWT存入本地,JWT作為用戶登錄之后的憑證,用戶之后訪問(wèn)數(shù)據(jù)必須帶上JWT,這樣服務(wù)器就可以知道用戶的身份以及進(jìn)行授權(quán)。系統(tǒng)把登錄判斷函數(shù)放置到Vuex中,在用戶每次訪問(wèn)系統(tǒng)時(shí),Vuex的函數(shù)就會(huì)來(lái)判斷當(dāng)前登錄狀態(tài),如果個(gè)人信息狀態(tài)為空的就是未登錄狀態(tài),這個(gè)時(shí)候就會(huì)跳轉(zhuǎn)到登錄頁(yè)面,否則登錄的話就會(huì)去后端請(qǐng)求當(dāng)前這個(gè)用戶的個(gè)人信息與權(quán)限信息,然后根據(jù)用戶權(quán)限加載路由和功能按鈕,這樣就完成了用戶登錄之后的系統(tǒng)初始化,讓登錄用戶可以開(kāi)始使用系統(tǒng)了。當(dāng)進(jìn)入主界面之后,會(huì)提供個(gè)人中心來(lái)查看當(dāng)前用戶的信息,還可以修改這些用戶信息和修改密碼,修改完密碼以后會(huì)自動(dòng)退出系統(tǒng),需要用戶使用新的用戶信息來(lái)重新登錄系統(tǒng)。用戶注冊(cè)登錄流程圖:圖5-2流程圖(3)查看用戶信息在登陸完成之后,就可以獲取當(dāng)前用戶的信息,后端首先驗(yàn)證當(dāng)前用戶是否登錄,在登錄之后會(huì)從對(duì)應(yīng)的用戶信息表中取出數(shù)據(jù),然后通過(guò)后端接口返回,在前端顯示。前端只需要設(shè)計(jì)幾個(gè)對(duì)應(yīng)的字段來(lái)顯示個(gè)人信息就足夠了。程序運(yùn)行截圖:圖5-3運(yùn)行截圖(4)修改用戶信息首先這個(gè)頁(yè)面在載入的時(shí)候就調(diào)用Axios函數(shù)獲取當(dāng)前用戶原來(lái)的個(gè)人信息,然后這個(gè)頁(yè)面放置幾個(gè)輸入框,把原有的個(gè)人信息放置到這個(gè)輸入框內(nèi),如果是不需要的字段就可以不去修改它,方便了用戶。然后在要修改的輸入框下輸入新的信息,提交之后后端就會(huì)去數(shù)據(jù)庫(kù)內(nèi)寫(xiě)入新的數(shù)據(jù)。(5)修改密碼在這個(gè)頁(yè)面下有一個(gè)輸入密碼的輸入框,這個(gè)輸入框被有關(guān)的函數(shù)所控制,如果這個(gè)時(shí)候輸入的密碼強(qiáng)度不夠,那么就會(huì)在旁邊的密碼強(qiáng)度提示顯示密碼強(qiáng)度不足,而且不可以提交修改。輸入正確密碼之后,后端也會(huì)像注冊(cè)時(shí)一樣把密碼經(jīng)過(guò)加密后再放入數(shù)據(jù)庫(kù),放置如果有人真的非法入侵?jǐn)?shù)據(jù)庫(kù)之后,會(huì)直接看到明文的密碼。當(dāng)后端返回密碼修改成功之后前端會(huì)清空存入的JWT信息,然后直接調(diào)用注銷函數(shù),通過(guò)這樣讓用戶以新的密碼登錄,保持系統(tǒng)的安全性。5.3財(cái)務(wù)類別模塊這個(gè)模塊主要是用來(lái)管理用戶的財(cái)務(wù)類別的。財(cái)務(wù)類別分為收入類別與支出類別,兩個(gè)類別公用相同的數(shù)據(jù)結(jié)構(gòu),使用其中的一個(gè)字段來(lái)進(jìn)行區(qū)分,然后在用戶需要獲取的時(shí)候可以直接通過(guò)篩選返回相應(yīng)數(shù)據(jù)。還可以通過(guò)特定的id來(lái)獲取數(shù)據(jù),添加、刪除類別信息。下面是模塊圖:圖5-4模塊圖子模塊介紹:(1)查看類別查看類別信息主要是加載從后端獲取來(lái)的類別信息,因?yàn)槊恳粋€(gè)用戶他們的類別信息都是不同的,所以當(dāng)用戶直接從后端的某個(gè)端口請(qǐng)求數(shù)據(jù)時(shí),后端找到當(dāng)前登錄用戶,驗(yàn)證無(wú)誤后得到對(duì)應(yīng)用戶持有的類別數(shù)據(jù)內(nèi),然后直接返回給前端。前端提供了表格的功能組件,只需要相應(yīng)的數(shù)據(jù)就可以生成一個(gè)表格,所以在獲取完數(shù)據(jù)之后就可以直接生成表格。圖5-5運(yùn)行截圖(2)添加類別這個(gè)模塊的目標(biāo)就是添加相關(guān)的類別信息,前端放置一個(gè)輸入框,通過(guò)提交按鈕就可以把輸入的名稱提交,前后端交互是采用Axios這個(gè)插件來(lái)實(shí)現(xiàn)的,他可以把信息轉(zhuǎn)換為JSON格式,后端同時(shí)也支持接收這種格式的信息。后端把信息存到數(shù)據(jù)庫(kù)的Type表中,它作為財(cái)務(wù)信息錄入時(shí)財(cái)務(wù)分類選擇的來(lái)源,十分重要。(3)修改類別這個(gè)頁(yè)面同樣也需要先從后端獲取原來(lái)的數(shù)據(jù),一般是在查看類別頁(yè)面下的表格選擇查看相應(yīng)的某條數(shù)據(jù),然后前端點(diǎn)擊修改時(shí)會(huì)跳到修改頁(yè)面,而且在跳轉(zhuǎn)到修改頁(yè)面之前會(huì)把這條要修改的數(shù)據(jù)的ID暫存下來(lái),然后在修改頁(yè)面下從后端加載這條類別信息放置到輸入框內(nèi),最后在修改完之后又發(fā)回后端同步到數(shù)據(jù)庫(kù)。在Vue中暫存這些數(shù)據(jù)采用了Vuex,這個(gè)官方提供的插件可以記錄頁(yè)面狀態(tài),常用于記錄頁(yè)面狀態(tài)和頁(yè)面之間傳遞信息。5.4收入支出項(xiàng)目模塊這個(gè)模塊負(fù)責(zé)系統(tǒng)的收入與支出信息的管理??梢员凰杏脩羰褂?。首先用戶必須去數(shù)據(jù)錄入的選項(xiàng)中錄入每筆財(cái)務(wù)數(shù)據(jù),只要填入相應(yīng)的金額、選擇財(cái)務(wù)類型和日期,還可以填入備注來(lái)記錄這筆交易。接來(lái)下就可以去財(cái)務(wù)管理相應(yīng)的類別去查看管理數(shù)據(jù)了。下面是模塊圖:圖5-6模塊圖在查看收入支出的數(shù)據(jù)頁(yè)面中,如果全部返回所有數(shù)據(jù),那么當(dāng)數(shù)據(jù)量很大的時(shí)候生成的表格會(huì)很長(zhǎng),影響頁(yè)面的美觀。現(xiàn)在前端和后端相互配合是可以實(shí)現(xiàn)分頁(yè)的功能的。前端的表格在數(shù)據(jù)量小的情況下不會(huì)啟動(dòng)分頁(yè),但是在數(shù)據(jù)量過(guò)大的時(shí)候前端是會(huì)通過(guò)返回當(dāng)前頁(yè)和每頁(yè)最大的顯示數(shù)目給后端來(lái)分頁(yè)的。前端會(huì)返回當(dāng)前是第幾頁(yè)和每頁(yè)大小,后端使用PagedListHolder這個(gè)分頁(yè)類把查詢結(jié)果的List分成幾個(gè)小List,然后把這些數(shù)據(jù)返回給前端,它還提供上一頁(yè)、下一頁(yè)等功能可以方便的實(shí)現(xiàn)分頁(yè)功能,本系統(tǒng)把它進(jìn)行了簡(jiǎn)單的封裝更便于使用。分頁(yè)工具類相關(guān)代碼:publicclassPageUtil<T>{
privatefinalList<T>list;
privatefinalPagedListHolder<T>data;
publicPageUtil(List<T>list){
this.list=list;
this.data=newPagedListHolder<>(this.list);
}
publicPage<T>getPage(intpageNo,intpageSize){
data.setPage(pageNo);
data.setPageSize(pageSize);
Pagepage=newPageImpl(data.getPageList(),PageRequest.of(data.getPage(),data.getPageSize()),list.size());
returnpage;
}
}子模塊介紹:(1)查看數(shù)據(jù)查看數(shù)據(jù)信息主要是加載從后端獲取來(lái)的類別信息,因?yàn)槊恳粋€(gè)用戶他們的類別信息都是不同的,所以當(dāng)用戶直接從后端的某個(gè)端口請(qǐng)求數(shù)據(jù)時(shí),后端找到當(dāng)前登錄用戶,驗(yàn)證無(wú)誤后得到對(duì)應(yīng)用戶持有的類別數(shù)據(jù)內(nèi),然后直接返回給前端。前端提供了表格的功能組件,只需要相應(yīng)的數(shù)據(jù)就可以生成一個(gè)表格,所以在獲取完數(shù)據(jù)之后就可以直接生成表格。運(yùn)行截圖:圖5-7運(yùn)行截圖(2)錄入數(shù)據(jù)錄入數(shù)據(jù)在一定程度上依賴財(cái)務(wù)分類,因?yàn)樨?cái)務(wù)數(shù)據(jù)的類別是根據(jù)用戶自己新建的各種類別的來(lái)選擇的,錄入數(shù)據(jù)是系統(tǒng)中最重要的財(cái)務(wù)數(shù)據(jù)的唯一輸入方式。界面當(dāng)然就是設(shè)計(jì)輸入框來(lái)要求用戶提供相應(yīng)的字段,而且比如日期選擇字段只讓輸入當(dāng)前及之前的時(shí)間,符合實(shí)際。各個(gè)輸入框在前端設(shè)計(jì)了是否可以為空,避免輸入空數(shù)據(jù)。把財(cái)務(wù)數(shù)據(jù)所需要的信息,如金額、詳情等輸入之后通過(guò)Json把數(shù)據(jù)傳給后端,后端找到當(dāng)前登錄用戶,驗(yàn)證數(shù)據(jù)合法后存到對(duì)應(yīng)用戶持有的財(cái)務(wù)數(shù)據(jù)內(nèi)。前端跳到結(jié)果頁(yè),顯示最終添加結(jié)果。錄入財(cái)務(wù)數(shù)據(jù)流程圖:圖5-8流程圖(3)修改數(shù)據(jù)這個(gè)頁(yè)面需要先從后端獲取原來(lái)的數(shù)據(jù),包括當(dāng)前的財(cái)務(wù)分類數(shù)據(jù),這些分類信息會(huì)讓用戶來(lái)進(jìn)行選擇,而且在輸入欄中也要相應(yīng)的限制,比如不為空,在日期選擇欄中只能選擇當(dāng)前和之前的日期等。之后通過(guò)Json把數(shù)據(jù)傳給后端,后端找到當(dāng)前登錄用戶,驗(yàn)證數(shù)據(jù)合法后存到對(duì)應(yīng)用戶持有的財(cái)務(wù)數(shù)據(jù)內(nèi),找到對(duì)應(yīng)的某條數(shù)據(jù)然后修改。前端會(huì)直接回到所有數(shù)據(jù)表格中,表格數(shù)據(jù)更新到最新?tīng)顟B(tài)。5.5資產(chǎn)管理模塊資產(chǎn)管理模塊的提供了用戶管理資產(chǎn)的功能,這個(gè)模塊面向的是所有用戶,資產(chǎn)分為存款以及負(fù)債,用戶可以去資產(chǎn)管理下直接更改資產(chǎn),可以在數(shù)據(jù)錄入增加資產(chǎn),增加資產(chǎn)就會(huì)在相應(yīng)的存款或負(fù)債上增加數(shù)據(jù)。還提供了資產(chǎn)查看的功能,可以清楚地顯示現(xiàn)在存款以及負(fù)債的功能。下面是資產(chǎn)模塊的模塊圖:圖5-9模塊圖子模塊介紹:(1)增加資產(chǎn)在增加資產(chǎn)的頁(yè)面上有一個(gè)選擇框與輸入框,選擇框可以輸入的數(shù)據(jù)是增加到存款還是負(fù)債上,然后輸入相應(yīng)的數(shù)據(jù),最后通過(guò)按鈕提交數(shù)據(jù)會(huì)返回到后臺(tái)處理。后端找到當(dāng)前登錄用戶,驗(yàn)證數(shù)據(jù)合法后會(huì)在原來(lái)資產(chǎn)的基礎(chǔ)上加上新的金額,前端會(huì)根據(jù)后端返回的信息跳到結(jié)果頁(yè)顯示結(jié)果(2)錄入資產(chǎn)本系統(tǒng)設(shè)定的是注冊(cè)的新用戶的資產(chǎn)會(huì)被先寫(xiě)入0,代表一個(gè)新的用戶在這時(shí)候既沒(méi)有存款也沒(méi)有負(fù)債,但是如果需要直接更改自己現(xiàn)在的存款負(fù)債情況需要使用到這個(gè)模塊,這個(gè)模塊可以直接修改存款負(fù)債的值為用戶輸入的新的值,這樣就可以方便之后的增加資產(chǎn)。然后界面同樣由一個(gè)選擇框與輸入框構(gòu)成,與增加資產(chǎn)模塊類似,不同的就是可以直接覆蓋舊的值,替換為新的資產(chǎn)數(shù)據(jù)。(3)查看資產(chǎn)前端先向后端請(qǐng)求,后端找到當(dāng)前登錄用戶,驗(yàn)證無(wú)誤后得到對(duì)應(yīng)用戶持有的資產(chǎn)數(shù)據(jù),前端會(huì)顯示當(dāng)前的資產(chǎn)信息,包括存款和負(fù)債。然后系統(tǒng)會(huì)計(jì)算當(dāng)前用戶的凈資產(chǎn),存款和負(fù)債會(huì)直接從后端的數(shù)據(jù)進(jìn)行獲取,同時(shí)還會(huì)讓后端計(jì)算現(xiàn)在所有數(shù)據(jù)的總收入和總支出,獲得了這四項(xiàng)數(shù)據(jù)就可以開(kāi)始計(jì)算了,凈資產(chǎn)是系統(tǒng)根據(jù)現(xiàn)在的存款、負(fù)債、收入、花費(fèi)四項(xiàng)數(shù)據(jù)來(lái)計(jì)算得到的。運(yùn)行截圖:圖5-10運(yùn)行截圖5.6報(bào)表統(tǒng)計(jì)管理模塊報(bào)表統(tǒng)計(jì)模塊負(fù)責(zé)統(tǒng)計(jì)數(shù)據(jù)和導(dǎo)出數(shù)據(jù),這個(gè)模塊面向的是所有用戶,這個(gè)模塊可以讓用戶方便快速的了解到當(dāng)前用戶的財(cái)務(wù)信息??梢赃M(jìn)行相關(guān)數(shù)據(jù)的統(tǒng)計(jì),并且最后通過(guò)繪制圖表顯示出來(lái)。下面是這個(gè)模塊的模塊圖:圖5-11模塊圖子模塊介紹:(1)查看表報(bào)首先要根據(jù)前端傳來(lái)的參數(shù)確定統(tǒng)計(jì)的時(shí)間跨度,有一個(gè)星期、一個(gè)月、一年可以選擇。然后根據(jù)這個(gè)時(shí)間跨度來(lái)篩選掉不在這個(gè)時(shí)間段之內(nèi)的數(shù)據(jù),然后再遍歷這些數(shù)據(jù)統(tǒng)計(jì)。統(tǒng)計(jì)的時(shí)候必須要先根據(jù)不同的時(shí)間跨度來(lái)創(chuàng)建一個(gè)初始數(shù)據(jù)為0的數(shù)據(jù)暫存容器。統(tǒng)計(jì)一個(gè)星期時(shí)會(huì)分別統(tǒng)計(jì)七天各天的數(shù)據(jù),統(tǒng)計(jì)一個(gè)月時(shí)會(huì)分為四個(gè)星期來(lái)統(tǒng)計(jì),統(tǒng)計(jì)一年時(shí)會(huì)統(tǒng)計(jì)分為12個(gè)月統(tǒng)計(jì),最后修改各項(xiàng)的名稱,如:星期一、星期二……。然后完成的數(shù)據(jù)就可以返回前端了。統(tǒng)計(jì)還有顯示當(dāng)前金額最大的幾筆交易的功能,首先也要先進(jìn)行篩選數(shù)據(jù),篩選出是收入還是支出信息,然后根據(jù)金額進(jìn)行排序,最后截取最前面的幾條數(shù)據(jù)返回。接下來(lái)前端就會(huì)繪制出基于時(shí)間的收入支出條形圖還有基于類別的餅狀圖,還會(huì)顯示當(dāng)前金額最大的幾筆交易,用戶就可以一目了然的看到當(dāng)前的數(shù)據(jù)與財(cái)務(wù)情況。如果需要不同時(shí)間段的結(jié)果,只需要重新按下按鈕之后會(huì)重新請(qǐng)求數(shù)據(jù),后端也會(huì)重新計(jì)算相關(guān)的數(shù)據(jù)給前端重新繪圖。視圖相關(guān)流程圖:圖5-12流程圖運(yùn)行截圖:圖5-13運(yùn)行截圖圖5-14運(yùn)行截圖(2)導(dǎo)出數(shù)據(jù)普通用戶選擇了導(dǎo)出數(shù)據(jù)之后,后端會(huì)先收集這個(gè)用戶的所有財(cái)務(wù)數(shù)據(jù),其中是包括了收入支出與支出數(shù)據(jù),然后直接返回給前端,不經(jīng)過(guò)任何的篩選,然后前端獲取到了所有數(shù)據(jù)之后,會(huì)使用js-xlsx這個(gè)插件把這一些Json數(shù)據(jù)全部轉(zhuǎn)換為Excel文件,而且這個(gè)插件也有配置Excel各列的內(nèi)容和順序的功能,讓系統(tǒng)可以直接定義生成Excel的格式。5.7后臺(tái)管理模塊后臺(tái)管理模塊可以對(duì)系統(tǒng)內(nèi)的數(shù)據(jù)進(jìn)行管理,這個(gè)模塊只有管理員權(quán)限的用戶用戶可以使用。這個(gè)模塊主要提供修改系統(tǒng)內(nèi)用戶數(shù)據(jù)的功能,可以把系統(tǒng)內(nèi)部所有的數(shù)據(jù)進(jìn)行統(tǒng)計(jì)并生成統(tǒng)計(jì)報(bào)表,還可以直接導(dǎo)出系統(tǒng)內(nèi)所有的數(shù)據(jù)到Excel,便于保存數(shù)據(jù)。下面展示的是其中的模塊圖:圖5-15模塊圖因?yàn)檫@個(gè)模塊只讓管理員使用,所以最好的實(shí)現(xiàn)方法就是在前端根據(jù)不同的權(quán)限生成不同的側(cè)邊欄,側(cè)邊欄會(huì)顯示不同的功能模塊,而且前端會(huì)根部權(quán)限不同加載不同的路由,前端已經(jīng)預(yù)設(shè)了普通用戶和管理員需要加載的路由,如果普通用戶就不會(huì)加載管理模塊的路由,這樣就可以有效地實(shí)現(xiàn)了權(quán)限管理。子模塊介紹:(1)查看用戶數(shù)據(jù)這個(gè)模塊就是用來(lái)查看與管理某個(gè)用戶的數(shù)據(jù)的,所以應(yīng)該展示一個(gè)表格,顯示系統(tǒng)中除了管理員以外的任何用戶,選擇之后會(huì)展示出這個(gè)用戶的數(shù)據(jù),同樣是生成一個(gè)表格來(lái)顯示所有數(shù)據(jù)。選擇了某一個(gè)用戶之后是通過(guò)Vuex來(lái)臨時(shí)保存用戶的信息,達(dá)到傳輸參數(shù)的目的。在管理用戶數(shù)據(jù)的時(shí)候,首先前端會(huì)先傳要管理用戶的用戶名到后端,后端收到參數(shù)之后就可以得到對(duì)應(yīng)的數(shù)據(jù),然后就可以對(duì)這些數(shù)據(jù)進(jìn)行操作,而且普通用戶與管理員的權(quán)限不同,本系統(tǒng)使用的SpringSecurity可以保證權(quán)限控制,讓一般用戶不能修改數(shù)據(jù)。這個(gè)時(shí)候查看用戶詳細(xì)信息的功能就可以查看到該用戶所有的財(cái)務(wù)信息和個(gè)人信息,刪除功能必須注意在刪除的過(guò)程中必須把這個(gè)用戶關(guān)聯(lián)的所有數(shù)據(jù)都刪除,防止出現(xiàn)了用戶已刪除但這個(gè)用戶的財(cái)務(wù)信息還存在的情況。其中比如添加數(shù)據(jù)、刪除數(shù)據(jù)可以直接調(diào)用普通用戶模塊的添加刪除相關(guān)代碼,避免重復(fù)代碼,降低代碼冗余。后臺(tái)管理數(shù)據(jù)流程圖:圖5-16流程圖運(yùn)行截圖:圖5-17運(yùn)行截圖圖5-18運(yùn)行截圖(2)查看報(bào)表本模塊和普通用戶的統(tǒng)計(jì)模塊有所不同,這個(gè)模塊統(tǒng)計(jì)的對(duì)象是整個(gè)系統(tǒng)內(nèi)所有的數(shù)據(jù),而普通用戶單純只統(tǒng)計(jì)了自己存儲(chǔ)的數(shù)據(jù)。管理員提供的報(bào)表統(tǒng)計(jì)功能是對(duì)于整個(gè)系統(tǒng)的所有用戶來(lái)說(shuō),可以看到每個(gè)用戶的支出和收入在系統(tǒng)中占的比重。處理這些數(shù)據(jù)時(shí)首先必須在后臺(tái)匯總所有用戶的全部數(shù)據(jù),然后就可以類似普通用戶處理統(tǒng)計(jì)代碼的邏輯一樣處理數(shù)據(jù)。后臺(tái)在收到請(qǐng)求之后,會(huì)嘗試匯總系統(tǒng)中所有用戶的所有數(shù)據(jù),然后在根據(jù)前端傳入的過(guò)濾條件來(lái)過(guò)濾這些數(shù)據(jù),過(guò)濾完之后的數(shù)據(jù)就可以直接用來(lái)統(tǒng)計(jì)了,統(tǒng)計(jì)時(shí)一般是根據(jù)不同的用戶來(lái)統(tǒng)計(jì)出相應(yīng)的比例,最后生成前端繪制圖標(biāo)需要的參數(shù),前端就可以根據(jù)參數(shù)進(jìn)行繪制了。運(yùn)行截圖:圖5-19運(yùn)行截圖圖5-20運(yùn)行截圖(2) 管理公告系統(tǒng)也給管理員提供了公告的功能,管理員可以在公告管理系統(tǒng)上發(fā)布公告,這個(gè)公告信息每一個(gè)普通用戶在打開(kāi)公告模塊之后都可以查看到。公告系統(tǒng)模塊基本就是提供增加、刪除公告的功能,公告的增加刪除和財(cái)務(wù)數(shù)據(jù)的邏輯相類似,但是公告數(shù)據(jù)是單獨(dú)存到一張數(shù)據(jù)表,這樣系統(tǒng)內(nèi)的所有人都可以讀取到當(dāng)前的公告信息。圖5-21運(yùn)行截圖普通用戶查看公告頁(yè)面的截圖:圖5-22運(yùn)行截圖5.8本章小結(jié)本章主要介紹了家庭財(cái)務(wù)管理系統(tǒng)的具體實(shí)現(xiàn)原理和編碼,并在此基礎(chǔ)上對(duì)家庭財(cái)務(wù)管理系統(tǒng)實(shí)現(xiàn)的各個(gè)模塊,如賬戶管理模塊、財(cái)務(wù)類別模塊、收入支出項(xiàng)目模塊等功能模塊進(jìn)行詳細(xì)的介紹,并介紹了各個(gè)模塊之間的關(guān)聯(lián),模塊化的開(kāi)發(fā)可以提升系統(tǒng)開(kāi)發(fā)流程的規(guī)范性。第六章系統(tǒng)測(cè)試第六章系統(tǒng)測(cè)試6.1測(cè)試方法在現(xiàn)在,進(jìn)行軟件的測(cè)試方法變得越來(lái)越多樣化,而一般的測(cè)試分為黑盒測(cè)試和白盒測(cè)試,本系統(tǒng)采用的測(cè)試方法是黑盒測(cè)試,黑盒測(cè)試是一種軟件測(cè)試方法,在不了解內(nèi)部代碼結(jié)構(gòu)和實(shí)現(xiàn)細(xì)節(jié)的情況下測(cè)試軟件的功能。黑盒測(cè)試主要關(guān)注軟件的輸入和輸出,它完全基于軟件需求和規(guī)范,所以它也被稱為“行為測(cè)試”。本系統(tǒng)使用黑盒測(cè)試來(lái)對(duì)這個(gè)系統(tǒng)中各個(gè)模塊的功能進(jìn)行測(cè)試,然后觀察他的輸出是否符合當(dāng)前系統(tǒng)的需求。6.2測(cè)試目標(biāo)(1)測(cè)試家庭財(cái)務(wù)管理系統(tǒng)的各個(gè)模塊功能是否可以正常工作。(2)測(cè)試家庭財(cái)務(wù)管理系統(tǒng)的可用性,各個(gè)模塊之間的協(xié)同工作是否正常。(3)測(cè)試家庭財(cái)務(wù)管理系統(tǒng)的界面有無(wú)錯(cuò)誤,按鈕是否可以點(diǎn)擊,是否有錯(cuò)別字,顯示是否正常。(4)測(cè)試家庭財(cái)務(wù)管理系統(tǒng)的穩(wěn)定性和安全性。6.3具體測(cè)試情況6.3.1賬戶管理測(cè)試下面的表格詳細(xì)的展示了賬戶管理模塊的測(cè)試結(jié)果:功
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 校醫(yī)聘用合同范本
- 工程合同抵押貸款合同范本
- 2025江蘇蘇州獅山商務(wù)創(chuàng)新發(fā)展集團(tuán)有限公司及下屬板塊公司招聘10人筆試參考題庫(kù)附帶答案詳解
- Maytansine-derivative-M24-生命科學(xué)試劑-MCE
- Enzyme-IN-3-disodium-生命科學(xué)試劑-MCE
- 科技短視頻創(chuàng)新技術(shù)傳播策略
- 電子俱樂(lè)部合同范本
- 東莞廣東東莞市自然資源局黃江分局自主(公開(kāi))招聘聘用人員筆試歷年參考題庫(kù)附帶答案詳解
- 上海2025年上海市青浦區(qū)教育系統(tǒng)招聘教師488人筆試歷年參考題庫(kù)附帶答案詳解
- 修房建筑合同范本
- 綠化養(yǎng)護(hù)工作計(jì)劃15篇
- 防災(zāi)減災(zāi)工程學(xué)第六章火災(zāi)害課件
- DB11 938-2022 綠色建筑設(shè)計(jì)標(biāo)準(zhǔn)
- 部編版語(yǔ)文八年級(jí)下冊(cè)第六單元名著導(dǎo)讀《鋼鐵是怎樣煉成的》問(wèn)答題 (含答案)
- 2022譯林版新教材高一英語(yǔ)必修二單詞表及默寫(xiě)表
- 全國(guó)青少年機(jī)器人技術(shù)等級(jí)考試:二級(jí)培訓(xùn)全套課件
- 九種中醫(yī)體質(zhì)辨識(shí)概述課件
- 小學(xué)數(shù)學(xué)計(jì)算能力大賽實(shí)施方案
- 古詩(shī)詞誦讀《虞美人》課件-統(tǒng)編版高中語(yǔ)文必修上冊(cè)
- 文物學(xué)概論-中國(guó)古代青銅器(上)
- 制作拉線課件
評(píng)論
0/150
提交評(píng)論