版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第一章緒論基于JAVA的財(cái)務(wù)管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)目錄TOC\o"1-2"\h\u4906第一章緒論 1139681.1研究工作的背景與意義 1319811.2國內(nèi)外研究現(xiàn)狀 2151921.3本文主要研究的問題 287041.4本論文的結(jié)構(gòu)安排 317666第二章相關(guān)理論與技術(shù)介紹 4248292.1Java語言 482462.2Spring及其后端技術(shù) 56432.3Vue框架與前端技術(shù) 6121292.4數(shù)據(jù)庫相關(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ù)庫設(shè)計(jì) 14191064.3本章小結(jié) 1612057第五章系統(tǒng)具體實(shí)現(xiàn) 17163175.1系統(tǒng)開發(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),收入與支出的賬單越來越復(fù)雜,而且賬單的種類也變得越來越多,所以合理的規(guī)劃和進(jìn)行適當(dāng)?shù)睦碡?cái)會(huì)變得比之前困難了許多。而且隨著這種現(xiàn)象的不斷發(fā)展,以后人們依靠傳統(tǒng)的管理方法的難度越來越大。在這種背景之下,急需一個(gè)好的家庭財(cái)務(wù)管理系統(tǒng),來解決上述問題和對(duì)家庭內(nèi)部的財(cái)務(wù)狀況進(jìn)行管理。另一方面雖然當(dāng)前很多人的收入水平有了顯著的提升,卻出現(xiàn)了不知如何理財(cái)?shù)那闆r。錯(cuò)誤的投資與消費(fèi)行為可能會(huì)導(dǎo)致無法維持生計(jì),這是因?yàn)槿藗儗?duì)于他們的消費(fèi)記錄完全沒有了解。為了解決這個(gè)重要的問題,財(cái)務(wù)管理系統(tǒng)就出現(xiàn)了。因此,開發(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國內(nèi)外研究現(xiàn)狀家庭財(cái)務(wù)管理系統(tǒng)以計(jì)算機(jī)技術(shù)為支撐,讓當(dāng)前的管理系統(tǒng)可以小巧易用的形式出現(xiàn)的人們的視線內(nèi),而且這就為每個(gè)家庭成員通過終端來隨時(shí)訪問系統(tǒng)提供了基礎(chǔ)。家庭財(cái)務(wù)管理系統(tǒng)在國內(nèi)外很多地方都得到了廣泛的應(yīng)用。另一方面國外在很早以前就意識(shí)到了開發(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)。由于國外起步較早,所以家庭理財(cái)系統(tǒng)已經(jīng)發(fā)展得比較成熟。隨著計(jì)算機(jī)在我國的日益普及,當(dāng)前國內(nèi)也出現(xiàn)了很多流行的財(cái)務(wù)管理平臺(tái),如金碟、用友軟件。但是對(duì)于家庭管理這方面來說,并不能完全滿足家庭財(cái)務(wù)管理的需要?,F(xiàn)在家庭的記賬方式已經(jīng)由傳統(tǒng)的手工記賬變成了信息化記賬方式,為普通的家庭成員提供了極大的便利。但是隨著現(xiàn)在收入與生活水平的提高,出現(xiàn)了很多新的消費(fèi)與支出的種類,賬單內(nèi)容也越來越多樣化。當(dāng)前的家庭財(cái)務(wù)管理系統(tǒng),許多實(shí)用且便捷的功能并沒有得到實(shí)現(xiàn),現(xiàn)在還只是停留在管理家庭財(cái)務(wù)收支的基礎(chǔ)層面。沒有達(dá)到財(cái)務(wù)優(yōu)化、提出理財(cái)建議的水平。1.3本文主要研究的問題本文主要研究的是如何開發(fā)出一個(gè)易用的家庭財(cái)務(wù)管理系統(tǒng),使用后可以有效地解決手工賬務(wù)管理效率低、不準(zhǔn)確、保密性差等問題,使家庭成員可以隨時(shí)隨地利用信息化手段方便地記賬、理財(cái),了解家庭財(cái)務(wù)狀況,更好地合理規(guī)劃財(cái)務(wù),節(jié)省開支。首先在設(shè)計(jì)程序時(shí)就要先做好詳細(xì)的界面設(shè)計(jì)和概要設(shè)計(jì),然后根據(jù)界面設(shè)計(jì)來使用相關(guān)的UI庫來進(jìn)行構(gòu)建前端,然后要約定相應(yīng)的接口來使得前后端進(jìn)行交互。后端可以根據(jù)用戶的權(quán)限和前端的傳入的數(shù)據(jù)來進(jìn)行操作,編寫相應(yīng)的業(yè)務(wù)邏輯,比如查詢、添加、刪除各類財(cái)務(wù)信息,然后進(jìn)行對(duì)應(yīng)的數(shù)據(jù)庫操作,實(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ù)介紹:這部分主要說明的是本系統(tǒng)所采用的技術(shù)以及相關(guān)介紹。3. 系統(tǒng)需求分析:這部分根據(jù)實(shí)際情況具體的分析本系統(tǒng)需要實(shí)現(xiàn)的功能,以及詳細(xì)的說明需求分析。4. 系統(tǒng)詳細(xì)設(shè)計(jì):這部分就是進(jìn)行詳細(xì)的系統(tǒng)設(shè)計(jì),包括數(shù)據(jù)庫表和功能的設(shè)計(jì)。5. 系統(tǒng)編碼與實(shí)現(xiàn):這部分就是系統(tǒng)具體的編碼細(xì)節(jié)以及實(shí)現(xiàn)原理。6. 全文總結(jié)與展望:最后進(jìn)行了總結(jié),總結(jié)了研究工作的內(nèi)容以及還存在的問題與不足。第二章相關(guān)理論與技術(shù)介紹第二章相關(guān)理論與技術(shù)介紹2.1Java語言當(dāng)前市場(chǎng)已經(jīng)出現(xiàn)了許多后端語言,如Java、Go、PHP等技術(shù),但是本項(xiàng)目選擇了Java作為后端語言。因?yàn)镴ava具有良好的跨平臺(tái)能力,這說明編譯后的Java代碼可以在所有支持JVM的平臺(tái)上進(jìn)行運(yùn)行,而且無需重新編譯。Java代碼是運(yùn)行在虛擬機(jī)上的,虛擬機(jī)與平臺(tái)架構(gòu)無關(guān),所以它可以在一般的服務(wù)器平臺(tái)上使用。而且Java作為一門在后端出現(xiàn)的最多的語言,本質(zhì)上是由于Java經(jīng)過了多年的發(fā)展,已經(jīng)制定出了一套非常成熟的解決方案,從處理請(qǐng)求到處理數(shù)據(jù)、訪問數(shù)據(jù)庫都已經(jīng)有組織或者公司來制定了一套標(biāo)準(zhǔn)化的規(guī)則或者是已經(jīng)有了相應(yīng)的工具來處理這個(gè)問題。這就可以讓我們?cè)诰帉懞蠖藭r(shí),當(dāng)遇到什么問題,現(xiàn)有的方案一般都可以解決,所以本項(xiàng)目使用的開發(fā)語言首選是Java語言。本項(xiàng)目采用的開發(fā)版本是JDK11,這是最流行JDK1.8的第一個(gè)后續(xù)LTS版本,它相較于之前增加了非常多的新功能,如全新的Lambda表達(dá)式、StreamAPI等,而且對(duì)于JVM也提供了更多的優(yōu)化,提升了Java的運(yùn)行速度。JVM采用了很多技術(shù)來提升運(yùn)行效率,比如虛擬機(jī)使用了垃圾收集算法,這可以讓Java和其他編程語言不同,自動(dòng)進(jìn)行對(duì)象內(nèi)存的回收可以不用讓開發(fā)者來手動(dòng)釋放內(nèi)存,他可以極大的避免內(nèi)存泄漏,當(dāng)一個(gè)線程結(jié)束之后相應(yīng)的對(duì)象內(nèi)存就會(huì)被釋放,所以Java的內(nèi)存管理十分適用于后端開發(fā)。而且Java最近的版本還支持了JIT即時(shí)編譯,把Java指令直接轉(zhuǎn)成了處理器指令,直接提升了運(yùn)行效率,避免了因?yàn)樘摂M機(jī)導(dǎo)致的效率問題。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),包含了許多在后端開發(fā)時(shí)遇到的問題的解決方案,但是隨著技術(shù)的發(fā)展,為了解決JavaEE困難的使用方式,Spring這個(gè)框架便出現(xiàn)了,Spring框架是Java平臺(tái)上一個(gè)非常常用的企業(yè)級(jí)框架,因?yàn)镾pring是開源的、免費(fèi)的,所以Spring框架所以在網(wǎng)站后端開發(fā)中非常受歡迎,本項(xiàng)目也認(rèn)同并采用了這項(xiàng)技術(shù)。Spring的核心為IOC(控制反轉(zhuǎn))和AOP(面向切面編程),IOC可以使傳統(tǒng)的手動(dòng)new一個(gè)對(duì)象變成由IOC容器來提供這個(gè)對(duì)象,因?yàn)橐蕾嚨膶?shí)例化交給了容器,所以減少了實(shí)例化模版代碼。而且由容器來實(shí)例化也大大的降低了代碼之間的耦合性。AOP的出現(xiàn)是為了解決在很多接口中都出現(xiàn)的重復(fù)代碼,如:權(quán)限驗(yàn)證、log日志記錄,簡化這些代碼。利用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開發(fā)框架之一,用于創(chuàng)建方便擴(kuò)展的程序。Spring在不斷地發(fā)展過程中又出現(xiàn)了SpringBoot,這是為了解決Spring復(fù)雜的配置以及部署而出現(xiàn)的。SpringBoot提倡習(xí)慣大于約定,一般是為代碼和注釋配置提供默認(rèn)值,這可以直接快速的新建一個(gè)Spring項(xiàng)目,省去復(fù)雜的配置環(huán)節(jié),提高開發(fā)的整體效率。SpringBoot的使用可以讓本項(xiàng)目的搭建更加簡單,其中大量的工具包也為開發(fā)提供了許多幫助,而且SpringBoot還解決依賴包之間的版本沖突問題,它引入了大量的包的時(shí)候會(huì)附加說明當(dāng)前包的兼容版本說明,這樣直接解決了包與包之間的兼容問題。而且Spring家族中還提供了很多非常實(shí)用的框架,比如SpringDataJPA這個(gè)ORM框架,可以更加方便的操作數(shù)據(jù)庫,通過對(duì)象關(guān)系映射可以把數(shù)據(jù)轉(zhuǎn)為對(duì)象進(jìn)行操作,操作實(shí)體對(duì)象來執(zhí)行CRUD操作,而且它不是直接使用SQL語句,而是建立對(duì)象與對(duì)象之間的聯(lián)系避免了程序的SQL語句緊密耦合。還提供了一個(gè)很實(shí)用的權(quán)限管理框架——SpringSecurity,它可以和SpringBoot非常緊密的結(jié)合起來提供服務(wù),SpringSecurity的本質(zhì)上是基于攔截器來實(shí)現(xiàn)的,所有訪問的用戶都必須經(jīng)過授權(quán)過濾器,由框架來判定是否擁有權(quán)限訪問。SpringSecurity可以選擇基于身份進(jìn)行認(rèn)證還可基于權(quán)限認(rèn)證,而且他支持使用注解來控制方法權(quán)限,只需要在需要認(rèn)證的方法上加上注解就可以直接對(duì)訪問者進(jìn)行權(quán)限檢查。2.3Vue框架與前端技術(shù)Vue.js是一個(gè)開源的前端JavaScript框架,用于快速構(gòu)建用戶界面和單頁應(yīng)用。它作為本項(xiàng)目的前端框架,可以通過Axios等插件來使用Json與后端進(jìn)行交互,然后動(dòng)態(tài)的生成頁面和傳輸輸入數(shù)據(jù)。而且本項(xiàng)目的前端使用SPA這種設(shè)計(jì)方法來編寫的,帶來了了更好的使用體驗(yàn)。現(xiàn)在SPA(單頁應(yīng)用)正變得越來越流行。其中每個(gè)新頁面的內(nèi)容不是通過加載一個(gè)新的HTML頁面來提供,而是通過JavaScript對(duì)現(xiàn)有頁面本身的DOM元素進(jìn)行處理,然后動(dòng)態(tài)生成新的頁面。在傳統(tǒng)的網(wǎng)絡(luò)架構(gòu)中,一個(gè)頁面可能會(huì)轉(zhuǎn)到另一個(gè)HTML頁面,瀏覽器會(huì)從頭下載并顯示它。而現(xiàn)在SPA允許用戶在更新或獲取新元素的同時(shí)繼續(xù)瀏覽頁面,然后可以直接生成新的頁面,帶來更快的內(nèi)容重載。使用SPA應(yīng)用程序可以通過AJAX請(qǐng)求動(dòng)態(tài)地從服務(wù)器獲取內(nèi)容。這不僅允許瀏覽器保持當(dāng)前頁面的顯示,而且還可以在后臺(tái)向服務(wù)器發(fā)送請(qǐng)求,以獲得額外的內(nèi)容或直接生成一個(gè)新的頁面。此外,HTML5允許我們?cè)诓恢匦录虞d頁面的情況下改變頁面的URL,并允許我們?cè)诓煌捻撁媸褂貌煌腢RL。其中,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è)完全圖形化的用戶界面,使用戶能夠快速開始編寫項(xiàng)目,而不必關(guān)注復(fù)雜的配置。2.4數(shù)據(jù)庫相關(guān)技術(shù)當(dāng)前的市場(chǎng)上使用的比較多的就是SQLServer、OracleDatabase和MySQL,在評(píng)估之下項(xiàng)目采用了MySQL這個(gè)數(shù)據(jù)庫,因?yàn)樗情_源免費(fèi)的且功能強(qiáng)大,本項(xiàng)目使用的Spring也支持直接對(duì)該數(shù)據(jù)庫進(jìn)行此操作。MySQL是一個(gè)的關(guān)系型數(shù)據(jù)庫。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ù)之間使用外鍵來建立關(guān)系,表與表之間可能存在聯(lián)系。MySQL還具有事務(wù)的功能,每個(gè)事務(wù)都是原子性的,所以如果一個(gè)操作在任何階段失敗,在事務(wù)中發(fā)生的整個(gè)修改都會(huì)回滾,比如在存入財(cái)務(wù)數(shù)據(jù)時(shí)出現(xiàn)了問題,那么數(shù)據(jù)會(huì)回滾,并不會(huì)存入數(shù)據(jù)庫。MySQL通過這一點(diǎn)來保證數(shù)據(jù)的完整性。MySQL是為滿足高性能應(yīng)用的要求而設(shè)計(jì)的,滿足了本項(xiàng)目對(duì)于性能的需求。2.5本章小結(jié)本章對(duì)家庭財(cái)務(wù)管理系統(tǒng)編寫所需要使用到的技術(shù)進(jìn)行一些簡單的介紹,主要是介紹Java技術(shù),前后端技術(shù),數(shù)據(jù)庫等,為之后系統(tǒng)的設(shè)計(jì)與詳細(xì)編寫提供了堅(jiān)實(shí)的基礎(chǔ)與準(zhǔn)備。第三章系統(tǒng)需求分析第三章系統(tǒng)需求分析3.1需求分析概述需求分析,是為正在構(gòu)建或修改的新軟件定義用戶期望的過程。需求分析包括確定一個(gè)新的項(xiàng)目需要完成所要滿足的需求或者功能,再考慮到可行性以及有可能會(huì)出現(xiàn)的沖突的情況下,分析和確定軟件需求的任務(wù)。任何一個(gè)項(xiàng)目的開始,都是從需求分析開始的,因?yàn)樗绊懙巾?xiàng)目開發(fā)工作的所有階段。如果沒有做好詳細(xì)的需求分析,很可能會(huì)在后面的階段出現(xiàn)不可預(yù)料的問題。當(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)通過了理論與實(shí)踐的研究提出了一個(gè)實(shí)用的系統(tǒng)。在技術(shù)上因?yàn)楫?dāng)前我國互聯(lián)網(wǎng)技術(shù)經(jīng)過了飛速的發(fā)展,現(xiàn)在使用寬帶與移動(dòng)上網(wǎng)的人數(shù)已經(jīng)非常龐大,接入網(wǎng)絡(luò)的基礎(chǔ)設(shè)施建設(shè)已經(jīng)非常完善,所以云端技術(shù)已經(jīng)得到了廣泛的運(yùn)用,未來的應(yīng)用趨向于上手即用,給用戶帶來更便利的操作作為核心。而具體的技術(shù)上使用Java作為開發(fā)語言使整個(gè)系統(tǒng)的開發(fā)變得更加的簡便,因?yàn)楝F(xiàn)在的Java已經(jīng)經(jīng)過了很久的發(fā)展,成熟的技術(shù)以及活躍的開發(fā)者可以讓項(xiàng)目的開發(fā)得到強(qiáng)大的技術(shù)支持。在現(xiàn)在JavaEE平臺(tái)出現(xiàn)的Spring大大提升了后端開發(fā)的效率,已經(jīng)成為了Java企業(yè)開發(fā)中不可缺少的框架技術(shù),而且還有很多具有強(qiáng)大功能的開發(fā)工具來幫助開發(fā)人員。前端技術(shù)本就是一門日新月異的技術(shù),不斷推出的新框架和新工具就是為了讓構(gòu)建頁面更加容易,種類繁多的前端框架讓簡單設(shè)計(jì)出一個(gè)美觀大方的前端界面成為了現(xiàn)實(shí)。在經(jīng)濟(jì)上,人們的生活質(zhì)量有了明顯的提高,購買和使用手機(jī)或電腦變得越來越普遍,這時(shí)就完全可以實(shí)現(xiàn)每人一臺(tái)終端設(shè)備。同時(shí),我國正在不斷加大通信行業(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)的成員簡單的注冊(cè)便可以使用,所以這個(gè)過程不僅方便,而且管理系統(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ì)于普通人來說是非常重要的,這讓每一個(gè)家庭成員都可以簡單的操作系統(tǒng)。因?yàn)楸鞠到y(tǒng)部署在云端上,所以每個(gè)家庭成員只需要一臺(tái)可以上網(wǎng)的終端就能夠直接簡單、便捷地進(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è)模塊,模塊之間相互依賴來進(jìn)行工作。首先是用戶管理模塊,它提供了使用這個(gè)系統(tǒng)的普通用戶,一般使用者開始時(shí)都是先注冊(cè)用戶,然后使用這個(gè)身份來使用系統(tǒng)。然后接下來就是可以往系統(tǒng)內(nèi)錄入財(cái)務(wù)數(shù)據(jù)了,一般這個(gè)財(cái)務(wù)數(shù)據(jù)就是用戶的某筆收入,如工資,或者是某筆支出,類似購買東西等消費(fèi)。然后在系統(tǒng)內(nèi)部有數(shù)據(jù)后可以方便的查看之前的數(shù)據(jù),調(diào)用報(bào)表統(tǒng)計(jì)管理模塊來直觀的了解當(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ì)于用戶收入或支出信息的分類,比如說這條支出信息屬于伙食或娛樂等類別,用戶可以根據(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í)間的問題,報(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)普通用戶沒有的操作界面,這個(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ì),顯示出誰的收入最多或支出最多。這樣就對(duì)家庭內(nèi)部的財(cái)務(wù)一目了然,方便制定以后的消費(fèi)計(jì)劃。最后提供了一個(gè)通知家庭成員的公告功能,管理員可以利用這個(gè)功能把需要給家庭成員的信息發(fā)布在公告系統(tǒng)上,如可以發(fā)布一些接來下花費(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ù)庫上,而且用戶的密碼不能使用明文存儲(chǔ),必須經(jīng)過加密才可以存在數(shù)據(jù)庫上。當(dāng)新一個(gè)新的用戶注冊(cè)了本系統(tǒng)之后,后端會(huì)采用Bcrypt加密密碼,然后把它存到數(shù)據(jù)庫中。這個(gè)加密完的數(shù)據(jù)并無法解密,而下次登錄是通過處理傳入的密碼,使用相同的加密方法來進(jìn)行加密,然后比對(duì)這兩串密鑰,如果相同那就代表輸入的密碼正確。前端在訪問后端數(shù)據(jù)的時(shí)候必須要有相應(yīng)的用戶身份與權(quán)限驗(yàn)證模塊,來保證數(shù)據(jù)訪問的安全。在用戶沒有登錄或者登錄用戶的權(quán)限錯(cuò)誤時(shí)拒絕訪問,在對(duì)數(shù)據(jù)庫進(jìn)行讀取和寫入信息的時(shí)候必須保持?jǐn)?shù)據(jù)的隔離性和獨(dú)立性,以防出現(xiàn)數(shù)據(jù)錯(cuò)誤。3.4.2性能需求性能需求是最能影響用戶體驗(yàn)的需求,越好的性能可以帶給用戶越好的體驗(yàn)。如果系統(tǒng)響應(yīng)過慢,就帶來了較大的使用問題。一般系統(tǒng)的響應(yīng)時(shí)間不能超過3秒,在系統(tǒng)運(yùn)行的過程中必須一直保持及時(shí)的響應(yīng),在處理較多數(shù)據(jù)時(shí)盡量不卡頓。3.4.3易用性與健壯性需求系統(tǒng)的易用性主要包括了系統(tǒng)在與用戶進(jìn)行交互的過程中,用戶可以快速上手和了解系統(tǒng)使用方法。最常用的交互方法是使用視窗交互,可以進(jìn)行的數(shù)據(jù)操作,采用比較簡潔的界面,不但富有人性化,而且操作不會(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í)間,減少一些不必要的輸入來提升效率。還應(yīng)該一些限制機(jī)制來處理非法數(shù)據(jù),當(dāng)系統(tǒng)接受到了非法數(shù)據(jù)之后,可以有相應(yīng)的處理機(jī)制來處理這個(gè)非法錯(cuò)誤,來提高系統(tǒng)的健壯性,系統(tǒng)不會(huì)輕易的產(chǎn)生崩潰。3.4.4可擴(kuò)展性需求系統(tǒng)還有可能在后期進(jìn)行不斷地開發(fā)和維護(hù),所以可擴(kuò)展性也十分重要,系統(tǒng)的架構(gòu)如果直接獨(dú)立為多個(gè)模塊,各個(gè)模塊之間相對(duì)獨(dú)立,模塊實(shí)現(xiàn)隱蔽、高內(nèi)聚、低耦合等的特點(diǎn),那么維護(hù)和擴(kuò)展就比較簡單了。在需要新功能時(shí)可以直接增加新的模塊,其中如果有哪個(gè)模塊出現(xiàn)了問題也只需要修改那個(gè)模塊,這時(shí)系統(tǒng)就具有了可擴(kuò)展性。3.5本章小結(jié)本章對(duì)于家庭財(cái)務(wù)管理系統(tǒng)的需求分析做了詳細(xì)的敘述,分析了家庭財(cái)務(wù)信息平臺(tái)的基本要求,為系統(tǒng)的編寫奠定了基礎(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é)渲染頁面和提供用戶操作,后端進(jìn)行處理和存儲(chǔ)數(shù)據(jù),之間采用Json來傳遞數(shù)據(jù),各個(gè)部分各不干擾,相互獨(dú)立,然后通過工具將前端和后端的各自成果結(jié)合起來。最終實(shí)現(xiàn)開發(fā)效率的最大化。是現(xiàn)在非常流行的架構(gòu)。1. 前端作為View層,提供了與用戶進(jìn)行交互的操作頁面,可以顯示需求的數(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ù)庫中的數(shù)據(jù)并且進(jìn)行相應(yīng)的處理,然后把處理的結(jié)果返回給上層。它就是Controller層與Dao層之間的連接,屬于整個(gè)系統(tǒng)非常重要的一部分。4. Dao層一般是與數(shù)據(jù)庫進(jìn)行交互的模塊,包括對(duì)于數(shù)據(jù)庫的增刪查改。這部分一般會(huì)由ORM框架來實(shí)現(xiàn),它會(huì)提供功能強(qiáng)大、使用簡單的操作數(shù)據(jù)庫的方式??傮w架構(gòu)如下圖所示:圖4-1系統(tǒng)的總體架構(gòu)4.1.2系統(tǒng)流程設(shè)計(jì)本系統(tǒng)的流程是:用戶進(jìn)入系統(tǒng)后會(huì)跳轉(zhuǎn)到登錄頁面,然后輸入用戶名和密碼,用戶在系統(tǒng)驗(yàn)證通過之后就會(huì)跳轉(zhuǎn)到主界面。系統(tǒng)會(huì)根據(jù)用戶的身份權(quán)限不同,顯示不同身份權(quán)限的操作界面。用戶可以使用相應(yīng)的功能模塊,包括賬戶管理、收支項(xiàng)目管理、分類管理、報(bào)表統(tǒng)計(jì)等。接下來使用流程圖描述系統(tǒng)的流程設(shè)計(jì),流程圖是一個(gè)使用圖形來表示步驟的方法。它使用圖形和箭頭顯示每一步步驟,可以在展示算法、系統(tǒng)工作的流程中發(fā)揮巨大的作用。通常情況下,流程圖將步驟顯示為各種類型的框圖,并通過箭頭按順序來連接它們。具體系統(tǒng)流程如下圖所示:圖4-2系統(tǒng)的流程圖4.2數(shù)據(jù)庫設(shè)計(jì)數(shù)據(jù)庫的設(shè)計(jì)對(duì)于系統(tǒng)的詳細(xì)設(shè)計(jì)是非常重要的。本系統(tǒng)數(shù)據(jù)庫設(shè)計(jì)的目標(biāo)是通過對(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ù)訪問操作的同時(shí),數(shù)據(jù)冗余度要盡可能小,管理要更簡單、更清晰、更容易操作。數(shù)據(jù)庫是有效組織系統(tǒng)數(shù)據(jù)的有力工具,所以要想設(shè)計(jì)好數(shù)據(jù)庫,需要詳細(xì)分析系統(tǒng)中的各個(gè)模塊功能和這些模塊需要的數(shù)據(jù)儲(chǔ)存的要求,然后設(shè)計(jì)相應(yīng)的數(shù)據(jù)表結(jié)構(gòu)。接下來是數(shù)據(jù)庫總體的設(shè)計(jì)與各個(gè)數(shù)據(jù)庫之間的關(guān)聯(lián),在數(shù)據(jù)庫之中涉及了五張表,分別為Data、Member、Asset、Type、News五張表,這五張表分別代表了財(cái)務(wù)信息表,用戶表,資產(chǎn)表,財(cái)務(wù)類型表,公告信息表。圖4-3數(shù)據(jù)庫的設(shè)計(jì)圖接下來進(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ù)庫總體的設(shè)計(jì)原則等方面進(jìn)行介紹,為下一章具體的實(shí)現(xiàn)奠定了基礎(chǔ)。第五章系統(tǒng)具體實(shí)現(xiàn)第五章系統(tǒng)具體實(shí)現(xiàn)5.1系統(tǒng)開發(fā)環(huán)境操作系統(tǒng):Windows10軟件開發(fā)平臺(tái):IDEA2021.1開發(fā)語言:JDK11后端服務(wù)器:SpringBoot2.4.1數(shù)據(jù)庫:MySql8.05.2賬戶管理模塊這個(gè)模塊屬于所有權(quán)限用戶都可以使用的模塊,賬戶管理模塊包括以下的功能,分別是:注冊(cè)用戶,用戶登錄。然后在用戶登錄之后可以查看當(dāng)前用戶的信息,然后提供了修改這些信息的功能,還可以修改用戶的密碼。模塊圖如下所示:圖5-1模塊圖子模塊介紹:(1)注冊(cè)用戶一個(gè)新的用戶在開始使用本系統(tǒng)的時(shí)候需要先注冊(cè),注冊(cè)完畢之后就可以使用該用戶的身份使用該系統(tǒng),在注冊(cè)的時(shí)候前端需要提供幾個(gè)輸入框,在輸入框輸入用戶名密碼等用戶信息。而且有一些輸入框必須設(shè)置為不為空,以防止存入無效數(shù)據(jù)。前端傳入注冊(cè)信息到后端之后,后端要新建一個(gè)對(duì)象,然后必須要進(jìn)行適當(dāng)?shù)某跏蓟?,比如需要給每一個(gè)新用戶分配默認(rèn)的類別信息,之后就可以使用前端傳入的新用戶數(shù)據(jù)來初始化對(duì)象,最后存入數(shù)據(jù)庫。(2)用戶登錄用戶輸入正確的賬號(hào)密碼,后端接收到之后會(huì)先去查找這個(gè)用戶,因?yàn)榘踩缘木壒仕詳?shù)據(jù)庫存的密碼都是經(jīng)過加密算法計(jì)算后得到的。所以當(dāng)系統(tǒng)得到一個(gè)密碼之后要使用相同的加密算法來進(jìn)行加密,然后對(duì)比和數(shù)據(jù)庫之中密碼是否相同,如果相同則代表用戶輸入了正確的密碼,就算身份認(rèn)證成功了。本系統(tǒng)的用戶驗(yàn)證是采用Oauth2來實(shí)現(xiàn)的,Oauth2是一種開放的授權(quán)標(biāo)準(zhǔn),它可以讓用戶獲得認(rèn)證服務(wù)器的認(rèn)證,然后來獲取放在資源服務(wù)器上的用戶資源。如果用戶在登錄成功之后,后端會(huì)給前端發(fā)送JWT,前端會(huì)把JWT存入本地,JWT作為用戶登錄之后的憑證,用戶之后訪問數(shù)據(jù)必須帶上JWT,這樣服務(wù)器就可以知道用戶的身份以及進(jìn)行授權(quán)。系統(tǒng)把登錄判斷函數(shù)放置到Vuex中,在用戶每次訪問系統(tǒng)時(shí),Vuex的函數(shù)就會(huì)來判斷當(dāng)前登錄狀態(tài),如果個(gè)人信息狀態(tài)為空的就是未登錄狀態(tài),這個(gè)時(shí)候就會(huì)跳轉(zhuǎn)到登錄頁面,否則登錄的話就會(huì)去后端請(qǐng)求當(dāng)前這個(gè)用戶的個(gè)人信息與權(quán)限信息,然后根據(jù)用戶權(quán)限加載路由和功能按鈕,這樣就完成了用戶登錄之后的系統(tǒng)初始化,讓登錄用戶可以開始使用系統(tǒng)了。當(dāng)進(jìn)入主界面之后,會(huì)提供個(gè)人中心來查看當(dāng)前用戶的信息,還可以修改這些用戶信息和修改密碼,修改完密碼以后會(huì)自動(dòng)退出系統(tǒng),需要用戶使用新的用戶信息來重新登錄系統(tǒng)。用戶注冊(cè)登錄流程圖:圖5-2流程圖(3)查看用戶信息在登陸完成之后,就可以獲取當(dāng)前用戶的信息,后端首先驗(yàn)證當(dāng)前用戶是否登錄,在登錄之后會(huì)從對(duì)應(yīng)的用戶信息表中取出數(shù)據(jù),然后通過后端接口返回,在前端顯示。前端只需要設(shè)計(jì)幾個(gè)對(duì)應(yīng)的字段來顯示個(gè)人信息就足夠了。程序運(yùn)行截圖:圖5-3運(yùn)行截圖(4)修改用戶信息首先這個(gè)頁面在載入的時(shí)候就調(diào)用Axios函數(shù)獲取當(dāng)前用戶原來的個(gè)人信息,然后這個(gè)頁面放置幾個(gè)輸入框,把原有的個(gè)人信息放置到這個(gè)輸入框內(nèi),如果是不需要的字段就可以不去修改它,方便了用戶。然后在要修改的輸入框下輸入新的信息,提交之后后端就會(huì)去數(shù)據(jù)庫內(nèi)寫入新的數(shù)據(jù)。(5)修改密碼在這個(gè)頁面下有一個(gè)輸入密碼的輸入框,這個(gè)輸入框被有關(guān)的函數(shù)所控制,如果這個(gè)時(shí)候輸入的密碼強(qiáng)度不夠,那么就會(huì)在旁邊的密碼強(qiáng)度提示顯示密碼強(qiáng)度不足,而且不可以提交修改。輸入正確密碼之后,后端也會(huì)像注冊(cè)時(shí)一樣把密碼經(jīng)過加密后再放入數(shù)據(jù)庫,放置如果有人真的非法入侵?jǐn)?shù)據(jù)庫之后,會(huì)直接看到明文的密碼。當(dāng)后端返回密碼修改成功之后前端會(huì)清空存入的JWT信息,然后直接調(diào)用注銷函數(shù),通過這樣讓用戶以新的密碼登錄,保持系統(tǒng)的安全性。5.3財(cái)務(wù)類別模塊這個(gè)模塊主要是用來管理用戶的財(cái)務(wù)類別的。財(cái)務(wù)類別分為收入類別與支出類別,兩個(gè)類別公用相同的數(shù)據(jù)結(jié)構(gòu),使用其中的一個(gè)字段來進(jìn)行區(qū)分,然后在用戶需要獲取的時(shí)候可以直接通過篩選返回相應(yīng)數(shù)據(jù)。還可以通過特定的id來獲取數(shù)據(jù),添加、刪除類別信息。下面是模塊圖:圖5-4模塊圖子模塊介紹:(1)查看類別查看類別信息主要是加載從后端獲取來的類別信息,因?yàn)槊恳粋€(gè)用戶他們的類別信息都是不同的,所以當(dāng)用戶直接從后端的某個(gè)端口請(qǐng)求數(shù)據(jù)時(shí),后端找到當(dāng)前登錄用戶,驗(yàn)證無誤后得到對(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è)輸入框,通過提交按鈕就可以把輸入的名稱提交,前后端交互是采用Axios這個(gè)插件來實(shí)現(xiàn)的,他可以把信息轉(zhuǎn)換為JSON格式,后端同時(shí)也支持接收這種格式的信息。后端把信息存到數(shù)據(jù)庫的Type表中,它作為財(cái)務(wù)信息錄入時(shí)財(cái)務(wù)分類選擇的來源,十分重要。(3)修改類別這個(gè)頁面同樣也需要先從后端獲取原來的數(shù)據(jù),一般是在查看類別頁面下的表格選擇查看相應(yīng)的某條數(shù)據(jù),然后前端點(diǎn)擊修改時(shí)會(huì)跳到修改頁面,而且在跳轉(zhuǎn)到修改頁面之前會(huì)把這條要修改的數(shù)據(jù)的ID暫存下來,然后在修改頁面下從后端加載這條類別信息放置到輸入框內(nèi),最后在修改完之后又發(fā)回后端同步到數(shù)據(jù)庫。在Vue中暫存這些數(shù)據(jù)采用了Vuex,這個(gè)官方提供的插件可以記錄頁面狀態(tài),常用于記錄頁面狀態(tài)和頁面之間傳遞信息。5.4收入支出項(xiàng)目模塊這個(gè)模塊負(fù)責(zé)系統(tǒng)的收入與支出信息的管理??梢员凰杏脩羰褂?。首先用戶必須去數(shù)據(jù)錄入的選項(xiàng)中錄入每筆財(cái)務(wù)數(shù)據(jù),只要填入相應(yīng)的金額、選擇財(cái)務(wù)類型和日期,還可以填入備注來記錄這筆交易。接來下就可以去財(cái)務(wù)管理相應(yīng)的類別去查看管理數(shù)據(jù)了。下面是模塊圖:圖5-6模塊圖在查看收入支出的數(shù)據(jù)頁面中,如果全部返回所有數(shù)據(jù),那么當(dāng)數(shù)據(jù)量很大的時(shí)候生成的表格會(huì)很長,影響頁面的美觀?,F(xiàn)在前端和后端相互配合是可以實(shí)現(xiàn)分頁的功能的。前端的表格在數(shù)據(jù)量小的情況下不會(huì)啟動(dòng)分頁,但是在數(shù)據(jù)量過大的時(shí)候前端是會(huì)通過返回當(dāng)前頁和每頁最大的顯示數(shù)目給后端來分頁的。前端會(huì)返回當(dāng)前是第幾頁和每頁大小,后端使用PagedListHolder這個(gè)分頁類把查詢結(jié)果的List分成幾個(gè)小List,然后把這些數(shù)據(jù)返回給前端,它還提供上一頁、下一頁等功能可以方便的實(shí)現(xiàn)分頁功能,本系統(tǒng)把它進(jìn)行了簡單的封裝更便于使用。分頁工具類相關(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ù)信息主要是加載從后端獲取來的類別信息,因?yàn)槊恳粋€(gè)用戶他們的類別信息都是不同的,所以當(dāng)用戶直接從后端的某個(gè)端口請(qǐng)求數(shù)據(jù)時(shí),后端找到當(dāng)前登錄用戶,驗(yàn)證無誤后得到對(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ù)用戶自己新建的各種類別的來選擇的,錄入數(shù)據(jù)是系統(tǒng)中最重要的財(cái)務(wù)數(shù)據(jù)的唯一輸入方式。界面當(dāng)然就是設(shè)計(jì)輸入框來要求用戶提供相應(yīng)的字段,而且比如日期選擇字段只讓輸入當(dāng)前及之前的時(shí)間,符合實(shí)際。各個(gè)輸入框在前端設(shè)計(jì)了是否可以為空,避免輸入空數(shù)據(jù)。把財(cái)務(wù)數(shù)據(jù)所需要的信息,如金額、詳情等輸入之后通過Json把數(shù)據(jù)傳給后端,后端找到當(dāng)前登錄用戶,驗(yàn)證數(shù)據(jù)合法后存到對(duì)應(yīng)用戶持有的財(cái)務(wù)數(shù)據(jù)內(nèi)。前端跳到結(jié)果頁,顯示最終添加結(jié)果。錄入財(cái)務(wù)數(shù)據(jù)流程圖:圖5-8流程圖(3)修改數(shù)據(jù)這個(gè)頁面需要先從后端獲取原來的數(shù)據(jù),包括當(dāng)前的財(cái)務(wù)分類數(shù)據(jù),這些分類信息會(huì)讓用戶來進(jìn)行選擇,而且在輸入欄中也要相應(yīng)的限制,比如不為空,在日期選擇欄中只能選擇當(dāng)前和之前的日期等。之后通過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à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)的頁面上有一個(gè)選擇框與輸入框,選擇框可以輸入的數(shù)據(jù)是增加到存款還是負(fù)債上,然后輸入相應(yīng)的數(shù)據(jù),最后通過按鈕提交數(shù)據(jù)會(huì)返回到后臺(tái)處理。后端找到當(dāng)前登錄用戶,驗(yàn)證數(shù)據(jù)合法后會(huì)在原來資產(chǎn)的基礎(chǔ)上加上新的金額,前端會(huì)根據(jù)后端返回的信息跳到結(jié)果頁顯示結(jié)果(2)錄入資產(chǎn)本系統(tǒng)設(shè)定的是注冊(cè)的新用戶的資產(chǎn)會(huì)被先寫入0,代表一個(gè)新的用戶在這時(shí)候既沒有存款也沒有負(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)證無誤后得到對(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ù)就可以開始計(jì)算了,凈資產(chǎn)是系統(tǒng)根據(jù)現(xiàn)在的存款、負(fù)債、收入、花費(fèi)四項(xiàng)數(shù)據(jù)來計(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ì),并且最后通過繪制圖表顯示出來。下面是這個(gè)模塊的模塊圖:圖5-11模塊圖子模塊介紹:(1)查看表報(bào)首先要根據(jù)前端傳來的參數(shù)確定統(tǒng)計(jì)的時(shí)間跨度,有一個(gè)星期、一個(gè)月、一年可以選擇。然后根據(jù)這個(gè)時(shí)間跨度來篩選掉不在這個(gè)時(shí)間段之內(nèi)的數(shù)據(jù),然后再遍歷這些數(shù)據(jù)統(tǒng)計(jì)。統(tǒng)計(jì)的時(shí)候必須要先根據(jù)不同的時(shí)間跨度來創(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è)星期來統(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ù)返回。接下來前端就會(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)過任何的篩選,然后前端獲取到了所有數(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è)模塊就是用來查看與管理某個(gè)用戶的數(shù)據(jù)的,所以應(yīng)該展示一個(gè)表格,顯示系統(tǒng)中除了管理員以外的任何用戶,選擇之后會(huì)展示出這個(gè)用戶的數(shù)據(jù),同樣是生成一個(gè)表格來顯示所有數(shù)據(jù)。選擇了某一個(gè)用戶之后是通過Vuex來臨時(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è)人信息,刪除功能必須注意在刪除的過程中必須把這個(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)的所有用戶來說,可以看到每個(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ù)前端傳入的過濾條件來過濾這些數(shù)據(jù),過濾完之后的數(shù)據(jù)就可以直接用來統(tǒng)計(jì)了,統(tǒng)計(jì)時(shí)一般是根據(jù)不同的用戶來統(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è)普通用戶在打開公告模塊之后都可以查看到。公告系統(tǒng)模塊基本就是提供增加、刪除公告的功能,公告的增加刪除和財(cái)務(wù)數(shù)據(jù)的邏輯相類似,但是公告數(shù)據(jù)是單獨(dú)存到一張數(shù)據(jù)表,這樣系統(tǒng)內(nèi)的所有人都可以讀取到當(dāng)前的公告信息。圖5-21運(yùn)行截圖普通用戶查看公告頁面的截圖:圖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),模塊化的開發(fā)可以提升系統(tǒng)開發(fā)流程的規(guī)范性。第六章系統(tǒng)測(cè)試第六章系統(tǒng)測(cè)試6.1測(cè)試方法在現(xiàn)在,進(jìn)行軟件的測(cè)試方法變得越來越多樣化,而一般的測(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è)試來對(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)的界面有無錯(cuò)誤,按鈕是否可以點(diǎn)擊,是否有錯(cuò)別字,顯示是否正常。(4)測(cè)試家庭財(cái)務(wù)管理系統(tǒng)的穩(wěn)定性和安全性。6.3具體測(cè)試情況6.3.1賬戶管理測(cè)試下面的表格詳細(xì)的展示了賬戶管理模塊的測(cè)試結(jié)果:功
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 新高考背景下構(gòu)建高中物理實(shí)驗(yàn)教學(xué) 高效課堂的實(shí)踐研究
- 2026廣西南寧職業(yè)技術(shù)大學(xué)招聘博士研究生備考題庫及參考答案詳解
- 2026云南曲靖經(jīng)濟(jì)技術(shù)開發(fā)區(qū)黨政辦公室招聘城鎮(zhèn)公益性崗位工作人員的備考題庫及答案詳解(考點(diǎn)梳理)
- 2025浙江金華市教育局直屬學(xué)校招聘教師24人備考題庫及一套答案詳解
- 2025廣東江門市人民醫(yī)院招聘高層次人才1人備考題庫及答案詳解(新)
- 2026年麗水學(xué)院公開招聘(引進(jìn))高層次人才71人備考題庫及1套完整答案詳解
- 2025年企業(yè)內(nèi)部控制制度咨詢與服務(wù)手冊(cè)
- 2026中國資源循環(huán)集團(tuán)電池有限公司招聘4人備考題庫及答案詳解(奪冠系列)
- 2026江西省江鹽科技有限公司一批次招聘2人備考題庫及完整答案詳解一套
- 2026新疆博爾塔拉州博樂數(shù)字博州建設(shè)運(yùn)營有限公司招聘3人備考題庫帶答案詳解
- CJ/T 120-2016給水涂塑復(fù)合鋼管
- 抹灰層陰陽角方正度控制技術(shù)
- 中國特色社會(huì)主義知識(shí)點(diǎn)總結(jié)中職高考政治一輪復(fù)習(xí)
- 五年級(jí)數(shù)學(xué)下冊(cè)寒假作業(yè)每日一練
- 企業(yè)管理的基礎(chǔ)工作包括哪些內(nèi)容
- 學(xué)?!?530”安全教育記錄表(2024年秋季全學(xué)期)
- 鋁合金門窗工程技術(shù)規(guī)范
- 食材配送服務(wù)方案投標(biāo)文件(技術(shù)標(biāo))
- 室性心律失常
- 《2024消費(fèi)者金融知識(shí)學(xué)習(xí)偏好及行業(yè)宣教洞察報(bào)告》
- 橫穿公路管道施工方案
評(píng)論
0/150
提交評(píng)論