(附源码)ssm财务管理系统 毕业设计 282251
SSM財務管理系統的設計與實現
摘要
現實生活中,許多人風險意識不足,對個人財務風險管理的認識就更少。在進行財務決策時,更多依靠的是以往經驗和個人判斷,對決策對象缺乏細致的認知、分析和推斷,更不用提風險防范與控制了。然而,財務風險是客觀存在的,如何減少個人財務風險損失,增加個人財務風險收益,值得探討。
財務管理系統主要功能模塊包括用戶管理、理財產品管理、財務支出、分類信息管理等,采取面對對象的開發模式進行軟件的開發和硬體的架設,能很好的滿足實際使用的需求,完善了對應的軟體架設以及程序編碼的工作,采取MySQL作為后臺數據的主要存儲單元,采用SSM框架、JSP技術、Ajax技術進行業務系統的編碼及其開發,實現了小程序的全部功能。本次報告,首先分析了研究的背景、作用、意義,為研究工作的合理性打下了基礎。針對財務管理系統的各項需求以及技術問題進行分析,證明了系統的必要性和技術可行性,然后對設計系統需要使用的技術軟件以及設計思想做了基本的介紹,最后來實現財務管理系統的部署與運行。
關鍵詞:財務管理,SSM,數據庫
Design and implementation of SSM financial management system ???????????????????abstract
In real life, many people lack risk awareness and have less understanding of personal financial risk management. When making financial decisions, they rely more on past experience and personal judgment, and lack detailed cognition, analysis and inference of the decision-making object, let alone risk prevention and control. However, financial risk exists objectively. How to reduce personal financial risk loss and increase personal financial risk income is worth discussing.
The main functional modules of the financial management system include user management, financial product management, financial expenditure, classified information management, etc. the object-oriented development mode is adopted for software development and hardware erection, which can well meet the needs of actual use, improve the corresponding software architecture and program coding, take MySQL as the main storage unit of background data, adopt SSM framework, JSP technology Ajax technology encodes and develops the business system, and realizes all the functions of the applet. 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 financial management system, proves the necessity and technical feasibility of the system, then makes a basic introduction to the technical software and design ideas needed to design the system, and finally realizes the deployment and operation of the financial management system.
Key words:?financial management, SSM, database
目 ?錄
第1章?緒???論
1.1課題背景
1.2 研究內容
1.3 開發工具及技術 3
第2章 系統分析 7
2.1 可行性分析 7
2.2總體設計原則 7
2.3 系統需求分析 8
2.4 業務流程分析 8
第3章 系統設計 11
3.1 系統概要設計 11
3.2系統結構設計 11
3.3 數據庫設計 12
第4章系統實現
4.1系統功能模塊
4.2管理員功能模塊 22
4.3用戶功能模塊 24
第5章軟件測試
5.1軟件測試的重要性
5.2測試實例的研究與選擇
5.3測試環境與測試條件
5.4系統運行情況
5.5系統評價
第6章?總結 30
參考文獻: 31
致謝 33
1.1課題背景
財務經營目標與財務能力不協調。當今耳熟能詳的一句話就是,“你不理財,財不理你”,很多人在不具備相應的財務能力時,將財務經營目標定得很高,把自己的血汗錢放到了收益率很高的理財產品上,認為這些理財產品是有保障的,比炒股收益穩定又保險。但是,在理財的選擇上,選擇的是非保本型的產品,結果賠得一塌糊涂。
在個人財務活動中,對收益的追求無可厚非,但是由于財務風險存在的客觀性、財務環境和財務活動本身的復雜性、人們對風險認識的滯后性等原因,個人財務活動中的風險損失和風險收益很難平衡,這就需要進行財務管理。
1.2 研究內容
財務管理系統的開發及實現,所需要的工作內容:
(1)首先是確定選題,確定好所要做的系統,并對系統的背景及現在面臨的一些問題等進行系統的初步確認。
(2)系統確認完成后,結合系統開發的需求進行確認系統開發所使用的技術,財務管理系統的開發使用SSM框架,數據庫進行平臺的搭建開發,確認好使用的技術進行技術分析,所使用的技術是否可以完成系統的實現。
(3)確定好系統使用的技術,進行在線確認系統所劃分的用戶角色,并且根據用戶角色劃分確定所要設計的功能模塊,對財務管理系統的設計主要劃分別為管理員和用戶角色,并所使用的功能模塊也相應不同,但是系統的數據庫實現的內容是交互的,用戶可以隨時根據自己的需求進行信息查詢,對于系統工作人員可以根據自己的分管內容進行在線信息的處理及操作,管理員獲取到所有用戶的詳細數據信息,并根據需求進行第一時間處理解決。
(4)系統的功能模塊確認完成后進行程序及界面的設計,設計完成后,并且通過測試來判斷程序是否完善,對于系統測試,需要不同的用戶進行不同的內容編輯及提交,及使用不同的測試方式找出程序中存在的漏洞,并對程序出現的漏洞問題進行在線解決處理,如果測試系統沒有任何問題時,可以將系統上傳進行正式操作使用。
1.3 開發技術
本系統前端部分基于MVVM模式進行開發,采用B/S模式,后端部分基于Java的ssm框架進行開發。
前端部分:前端框架采用了比較流行的漸進式JavaScript框架Vue.js。使用Vue-Router和Vuex實現動態路由和全局狀態管理,Ajax實現前后端通信,Element UI組件庫使頁面快速成型,項目前端通過柵格布局實現響應式,可適應PC端、平板端、手機端等不同屏幕大小尺寸的完美布局展示。
后端部分:采用ssm作為開發框架,同時集成MyBatis、Redis等相關技術。
1.3.1ssm框架介紹
SSM(Spring+SpringMVC+MyBatis)框架集由Spring、MyBatis兩個開源框架整合而成(SpringMVC是Spring中的部分內容)。常作為數據源較簡單的web項目的框架。
1.1 Spring
Spring就像是整個項目中裝配bean的大工廠,在配置文件中可以指定使用特定的參數去調用實體類的構造方法來實例化對象。也可以稱之為項目中的粘合劑。
Spring的核心思想是IoC(控制反轉),即不再需要程序員去顯式地`new`一個對象,而是讓Spring框架幫你來完成這一切。
1.2 SpringMVC
SpringMVC在項目中攔截用戶請求,它的核心Servlet即DispatcherServlet承擔中介或是前臺這樣的職責,將用戶請求通過HandlerMapping去匹配Controller,Controller就是具體對應請求所執行的操作。SpringMVC相當于SSH框架中struts。
1.3 mybatis
mybatis是對jdbc的封裝,它讓數據庫底層操作變的透明。mybatis的操作都是圍繞一個sqlSessionFactory實例展開的。mybatis通過配置文件關聯到各實體類的Mapper文件,Mapper文件中配置了每個類對數據庫所需進行的sql語句映射。在每次與數據庫交互時,通過sqlSessionFactory拿到一個sqlSession,再執行sql命令。
頁面發送請求給控制器,控制器調用業務層處理邏輯,邏輯層向持久層發送請求,持久層與數據庫交互,后將結果返回給業務層,業務層將處理邏輯發送給控制器,控制器再調用視圖展現數據。
?
1.3.2?MySQL數據庫
科技的進步,給日常帶來許多便利:教室的投影器用到了虛擬成像技術,數碼相機用到了光電檢測技術,比如超市貨物進出庫的記錄需要一個信息倉庫。這個信息倉庫就是數據庫,而這次的財務管理系統也需要這項技術的支持。
用MySQL這個軟件,是因為它能接受多個使用者訪問,而且里面存在Archive等。它會先把數據進行分類,然后分別保存在表里,這樣的特別操作就會提高數據管理系統自身的速度,讓數據庫能被靈活運用。MySQL的代碼是公開的,而且允許別人二次編譯升級。這個特點能夠降低使用者的成本,再搭配合適的軟件后形成一個良好的網站系統。雖然它有缺點,但是綜合各方面來說,它是使用者的主流運用的對象。
1.3.3?B/S結構
BROWSER/SERVER程序架構方式是使用電腦中安裝的各種瀏覽器來進行訪問和使用的,相比C/S的程序結構不需要進行程序的安裝就可以直接使用。BROWSER/SERVER架構的運行方式是在遠程的服務器上進行安裝一個,然后在任何接入互聯網的電腦上訪問和使用。BROWSER/SERVER架構的開發方式給用戶帶來了極大的便利,在任何時間和地點都可以使用開發的程序系統。
在B/S的結構中,用戶可以在任何可以上網的地方訪問和使用系統網站的功能,沒有地域和時間等方面的限制,B/S結構是把程序完整放置到計算機網絡的服務器上,通過計算機互聯網給用戶提供遠程的網絡服務。在三層體系結構的B/S系統中,通過瀏覽器,會員可以對很多服務器發出請求, B/S系統會很大程度的降低工作量,用戶只需要安裝運行較少的用戶端即可,大量的工作將由服務器承擔,另外,服務器也完成包括訪問數據庫,執行應用程序的工作等等。
B/S結構主要有三層,分別為數據層、控制邏輯層和視圖層。用戶通過視圖層,讓控制層調用數據層的數據,從而達到整個訪問過程。三層相互獨立,維護方便,使用安全,三層有互相調用,提高效率。
1.3.4?B/S體系工作原理
B/S架構采取瀏覽器請求,服務器響應的工作模式。
用戶可以通過瀏覽器去訪問Internet上由Web服務器產生的文本、數據、圖片、動畫、視頻點播和聲音等信息;
而每一個Web服務器又可以通過各種方式與數據庫服務器連接,大量的數據實際存放在數據庫服務器中;
從Web服務器上下載程序到本地來執行,在下載過程中若遇到與數據庫有關的指令,由Web服務器交給數據庫服務器來解釋執行,并返回給Web服務器,Web服務器又返回給用戶。在這種結構中,將許許多多的網連接到一塊,形成一個巨大的網,即全球網。而各個企業可以在此結構的基礎上建立自己的Internet。
在 B/S 模式中,用戶是通過瀏覽器針對許多分布于網絡上的服務器進行請求訪問的,瀏覽器的請求通過服務器進行處理,并將處理結果以及相應的信息返回給瀏覽器,其他的數據加工、請求全部都是由Web Server完成的。通過該框架結構以及植入于操作系統內部的瀏覽器,該結構已經成為了當今軟件應用的主流結構模式。
1.3.5 ?ssm框架各層關系
DAO層、Service層這兩個層次都可以單獨開發,互相的耦合度很低,完全可以獨立進行,這樣的一種模式在開發大項目的過程中尤其有優勢。
Controller,View層因為耦合度比較高,因而要結合在一起開發,但是也可以看作一個整體獨立于前兩個層進行開發。這樣,在層與層之前只需要知道接口的定義,調用接口即可完成所需要的邏輯單元應用,一切顯得非常清晰簡單。
1.JavaScript 運行模式:
JavaScript是一種屬于網絡的高級腳本語言,已經被廣泛用于Web應用開發,常用來為網頁添加各式各樣的動態功能,為用戶提供更流暢美觀的瀏覽效果。通常JavaScript腳本是通過嵌入在HTML中來實現自身的功能的。
1.1是一種解釋性腳本語言(代碼不進行預編譯)。
1.2主要用來向HTML(標準通用標記語言下的一個應用)頁面添加交互行為。
1.3可以直接嵌入HTML頁面,但寫成單獨的js文件有利于結構和行為的分離。
1.4跨平臺特性,在絕大多數瀏覽器的支持下,可以在多種平臺下運行(如Windows、Linux、Mac、Android、iOS等)。
1.5 JavaScript腳本語言同其他語言一樣,有它自身的基本數據類型,表達式和算術運算符及程序的基本程序框架。JavaScript提供了四種基本的數據類型和兩種特殊數據類型用來處理數據和文字。而變量提供存放信息的地方,表達式則可以完成較復雜的信息處理。
系統分析
2.1?可行性分析
可行性分析的目的是確定一個系統是否有必要開發、確定系統是否能以最小的代價實現。其工作主要有三個方面,分別是技術、經濟和社會三方面的可行性。我會從這三個方面對財務管理系統進行詳細的分析。
2.1.1技術可行性
該系統主要使用SSM框架啊和MySQL數據庫進行開發,Java易于學習和使用靈活。在校期間也接觸過SSM和MySQL數據庫的課程,對此有一定的開發經驗,因此開發難度不高,所以從技術上來說是可行的。
2.1.2經濟可行性
本系統設計所選擇的開發工具和服務器都是免費的開源軟件,又或者是適合學生使用的免費版本,并不需要支付費用,而且由作者本人單獨完成,也不存在團隊費用,幾乎沒有經濟成本,具備經濟可行性。
2.1.3社會可行性
社會可行性主要包括法律和用戶兩個方面,下面將從這兩方面進行分析。
(1)法律因素
本系統是學習開發所制作的程序,并不用作商業用途,是在根據實際調研的結果結合現有的考研互助系統后得出的,而且系統制作的全部過程都是在個人的工作電腦中完成的,使用的都是開源和免費的開發環境、分析軟件和數據庫,不存在侵權問題。
(2)用戶可行性
操作人員或者客戶只需要具備一定的windows電腦操作常識,不需要精通計算機技能。此外系統管理人員,只需要在windows常識之上再熟悉下使用Tomcat服務器的操作流程,只要掌握一定的計算機知識即可,在正式上線運營之前,僅需要對操作人員進行簡單的熟悉流程培訓即可。所以從用戶可行性上也是可行的。
2.2總體設計原則
一個系統要在開發和維護的過程中方便使用,必須采取一定的設計原則,其主要設計原則有:
簡單性:系統功能簡單易懂,只需要掌握基本的計算機操作能力即可使用。
針對性:針對特定的用戶,沒有多余的其他功能,使用戶可以專心使用。
實用性:能夠滿足用戶查看理財產品等方面的需求。
先進性:本系統的代碼采用讀取數據的方式,方便后續開發、拓展。
2.3 系統需求分析
財務管理系統需要滿足的需求有以下幾個:
1.信息獲取方便,用戶可在網頁上快速瀏覽到新的信息
2.查看理財產品信息,單獨查看理財產品信息等。
3.注冊登錄,需要吸引用戶,即通過注冊來提高用戶的存留率。
4.歷史記錄,用戶可以查看自己歷史搜索信息以及其他操作。
5.修改用戶信息,可以修改用戶密碼或者用戶名等一些個性化操作。
6.管理員功能,管理員可以對用戶或者財務收入信息、財務支出信息、理財產品等進行管理。
7.系統安全,操作簡便,不過于復雜。
8.系統可以穩定運行,不存在卡頓等問題造成用戶反感。
2.4 業務流程分析
2.4.1登錄流程
登錄模塊主要滿足管理員以及用戶的權限登錄,用戶登錄流程圖如圖2-1所示。
?
圖2-1?登錄流程圖
2.4.2注冊流程
未有賬號的用戶可進入注冊界面進行注冊操作,用戶注冊流程圖如圖2-2所示。
?
圖2-2?注冊流程圖
2.4.3添加信息流程
用戶在添加信息時,信息編號自動生成,系統會對添加的信息進行驗證,驗證通過則添加至數據庫,添加信息成功,反之添加失敗。添加信息流程如圖2-3所示。
?
圖2-3?添加信息流程圖
2.4.4刪除信息流程
用戶可選擇要刪除的信息進行信息刪除操作,在刪除信息時系統提示是否確定刪除信息,是則刪除信息成功,系統數據庫將信息進行刪除。刪除信息流程圖如圖2-4所示。
?
圖2-4刪除信息流程圖
3.1 系統概要設計
本財務管理系統選擇B/S結構(Browser/Server,瀏覽器/服務器結構)和基于Web服務兩種模式。適合在互聯網上進行操作,只要用戶能連網,任何時間、任何地點都可以進行系統的操作使用。系統工作原理圖如圖3-1所示:
?
圖3-1 系統工作原理圖
3.2系統結構設計
整個系統是由多個功能模塊組合而成的,要將所有的功能模塊都一一列舉出來,然后進行逐個的功能設計,使得每一個模塊都有相對應的功能設計,然后進行系統整體的設計。
本財務管理系統結構圖如圖3-2所示。
?
圖3-2?財務管理系統結構圖
3.3 數據庫設計
數據庫可以說是所有軟件的根本,如果數據庫存在缺陷,那么會導致系統開發的不順利、維護困難、用戶使用不順暢等一系列問題,嚴重時將會直接損害企業的利益,同時在開發完成后,數據庫缺陷也更加難以解決。所以必須要對數據庫設計重點把握,做到認真細致。因此,數據庫設計是這個財務管理系統的重點要素。
3.3.1概念結構設計
(1)管理員實體屬性圖如下圖3-3所示
?
圖3-3管理員實體屬性圖
(2)?財務支出實體屬性如下圖3-4所示
?
圖3-4財務支出實體屬性圖
(3)?人情賬本實體屬性如下圖3-5所示
?
圖3-5人情賬本實體屬性圖
3.3.2數據庫表設計
將數據庫概念設計的E-R圖轉換為關系數據庫。在關系數據庫中,數據關系是由數據表組成,但是表的結構表現在表的字段上。
| 名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
| user_account_id | int | 11 | 是 | 是 | 用戶賬戶ID |
| user_number | varchar | 64 | 否 | 否 | 用戶編號 |
| user_name | varchar | 64 | 否 | 否 | 用戶姓名 |
| gender | varchar | 64 | 否 | 否 | 性別 |
| age | varchar | 64 | 否 | 否 | 年齡 |
| personal_signature | varchar | 64 | 否 | 否 | 個性簽名 |
| total_balance | varchar | 64 | 否 | 否 | 總余額 |
| consumption_suggestions | text | 0 | 否 | 否 | 消費建議 |
| examine_state | varchar | 16 | 是 | 否 | 審核狀態 |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| user_id | int | 11 | 是 | 否 | 用戶ID |
| create_time | datetime | 0 | 是 | 否 | 創建時間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時間 |
| 名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
| personal_ledger_id | int | 11 | 是 | 是 | 人情賬本ID |
| bill_no | varchar | 64 | 否 | 否 | 賬單編號 |
| bill_type | varchar | 64 | 否 | 否 | 賬單類型 |
| bill_amount | varchar | 64 | 否 | 否 | 賬單金額 |
| billing_object | varchar | 64 | 否 | 否 | 賬單對象 |
| statement_date_ | date | 0 | 否 | 否 | 賬單日期 |
| user_number | int | 11 | 否 | 否 | 用戶編號 |
| user_name | varchar | 64 | 否 | 否 | 用戶姓名 |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| create_time | datetime | 0 | 是 | 否 | 創建時間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時間 |
| 名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
| financial_products_id | int | 11 | 是 | 是 | 理財產品ID |
| product_name | varchar | 64 | 否 | 否 | 產品名稱 |
| registration_code | varchar | 64 | 否 | 否 | 登記編碼 |
| issuer | varchar | 64 | 否 | 否 | 發行機構 |
| operation_pattern_ | varchar | 64 | 否 | 否 | 運作模式 |
| raising_method | varchar | 64 | 否 | 否 | 募集方式 |
| term_type | varchar | 64 | 否 | 否 | 期限類型 |
| raised_currency | varchar | 64 | 否 | 否 | 募集幣種 |
| nature_of_investment | varchar | 64 | 否 | 否 | 投資性質 |
| risk_level | varchar | 64 | 否 | 否 | 風險等級 |
| start_date_of_raising | date | 0 | 否 | 否 | 募集起始日期 |
| end_date_of_raising | date | 0 | 否 | 否 | 募集結束日期 |
| product_start_date | date | 0 | 否 | 否 | 產品起始日期 |
| product_end_date | date | 0 | 否 | 否 | 產品結束日期 |
| actual_days | int | 11 | 否 | 否 | 實際天數 |
| regional_sale | varchar | 64 | 否 | 否 | 發售地區 |
| hits | int | 11 | 是 | 否 | 點擊數 |
| praise_len | int | 11 | 是 | 否 | 點贊數 |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| create_time | datetime | 0 | 是 | 否 | 創建時間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時間 |
| 名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
| financial_income_id | int | 11 | 是 | 是 | 財務收入ID |
| month | varchar | 64 | 否 | 否 | 月份 |
| revenue_number | varchar | 64 | 否 | 否 | 收入編號 |
| income_type | varchar | 64 | 否 | 否 | 收入類型 |
| revenue_amount | varchar | 64 | 否 | 否 | 收入金額 |
| income_time | date | 0 | 否 | 否 | 收入時間 |
| user_number | int | 11 | 否 | 否 | 用戶編號 |
| user_name | varchar | 64 | 否 | 否 | 用戶姓名 |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| create_time | datetime | 0 | 是 | 否 | 創建時間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時間 |
| 名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
| financial_expenditure_id | int | 11 | 是 | 是 | 財務支出ID |
| month | varchar | 64 | 否 | 否 | 月份 |
| expenditure_number | varchar | 64 | 否 | 否 | 支出編號 |
| expenditure_type | varchar | 64 | 否 | 否 | 支出類型 |
| expenditure_amount | varchar | 64 | 否 | 否 | 支出金額 |
| expenditure_time | date | 0 | 否 | 否 | 支出時間 |
| user_number | int | 11 | 否 | 否 | 用戶編號 |
| user_name | varchar | 64 | 否 | 否 | 用戶姓名 |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| create_time | datetime | 0 | 是 | 否 | 創建時間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時間 |
| 名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
| announcement_information_id | int | 11 | 是 | 是 | 公告信息ID |
| title_name | varchar | 64 | 否 | 否 | 標題名稱 |
| publisher | varchar | 64 | 否 | 否 | 發布人 |
| announcement_annex | varchar | 255 | 否 | 否 | 公告附件 |
| announcement_content | text | 0 | 否 | 否 | 公告內容 |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| create_time | datetime | 0 | 是 | 否 | 創建時間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時間 |
| 名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
| feedback_id | int | 11 | 是 | 是 | 意見反饋ID |
| feedback_title | varchar | 64 | 否 | 否 | 反饋標題 |
| feedback_type | varchar | 64 | 否 | 否 | 反饋類型 |
| user_number | int | 11 | 否 | 否 | 用戶編號 |
| user_name | varchar | 64 | 否 | 否 | 用戶姓名 |
| feedback_content | text | 0 | 否 | 否 | 反饋內容 |
| feedback_reply | text | 0 | 否 | 否 | 反饋回復 |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| create_time | datetime | 0 | 是 | 否 | 創建時間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時間 |
| 名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
| classification_information_id | int | 11 | 是 | 是 | 分類信息ID |
| income_type | varchar | 64 | 否 | 否 | 收入類型 |
| expenditure_type | varchar | 64 | 否 | 否 | 支出類型 |
| term_type | varchar | 64 | 否 | 否 | 期限類型 |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| create_time | datetime | 0 | 是 | 否 | 創建時間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時間 |
第4章系統實現
4.1系統功能模塊
財務管理系統,在用戶首頁可以查看公告消息內容,如圖4-1所示。
????????? ? ? ? ? ? ? ? ? ? ? ? ?
?
圖4-1公告消息界面圖
??理財產品推薦,在此用戶可以查看理財產品推薦信息等,如圖4-2所示。
?
圖4-2理財產品推薦界面圖
理財產品推薦的邏輯代碼如下:
?@PostMapping("/add")
????@Transactional
????public Map<String, Object> add(HttpServletRequest request) throws IOException {
????????service.insert(service.readBody(request.getReader()));
????????return success(1);
????}
????@Transactional
????public Map<String, Object> addMap(Map<String,Object> map){
????????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){
????????StringBuffer sql = new StringBuffer("INSERT INTO ");
????????sql.append("`").append(table).append("`").append(" (");
????????for (Map.Entry<String,Object> entry:body.entrySet()){
????????????sql.append("`"+humpToLine(entry.getKey())+"`").append(",");
????????}
????????sql.deleteCharAt(sql.length()-1);
????????sql.append(") VALUES (");
????????for (Map.Entry<String,Object> entry:body.entrySet()){
????????????Object value = entry.getValue();
????????????if (value instanceof String){
????????????????sql.append("'").append(entry.getValue()).append("'").append(",");
????????????}else {
????????????????sql.append(entry.getValue()).append(",");
????????????}
????????}
????????sql.deleteCharAt(sql.length() - 1);
????????sql.append(")");
????????log.info("[{}] - 插入操作:{}",table,sql);
????????Query query = runCountSql(sql.toString());
????????query.executeUpdate();
????}
理財產品列表欄,在此頁面可以查看:產品名稱、登記編碼、發行機構、運作模式等,如圖4-3所示。在注冊頁面通過填寫工號、用戶賬號、密碼、用戶姓名、手機等信息完成用戶注冊,如圖4-4所示。
?
圖4-3理財產品列表界面圖
?
圖4-4注冊界面圖
用戶注冊邏輯代碼如下:
/**
?????* 注冊
?????* @param user
?????* @return
?????*/
????@PostMapping("register")
????public Map<String, Object> signUp(@RequestBody User user) {
????????// 查詢用戶
????????Map<String, String> query = new HashMap<>();
????????query.put("username",user.getUsername());
????????List list = service.select(query, new HashMap<>()).getResultList();
????????if (list.size()>0){
????????????return error(30000, "用戶已存在");
????????}
????????user.setUserId(null);
????????user.setPassword(service.encryption(user.getPassword()));
????????service.save(user);
????????return success(1);
}
/**
?????* 用戶ID:[0,8388607]用戶獲取其他與用戶相關的數據
?????*/
????@Id
????@GeneratedValue(strategy = GenerationType.IDENTITY)
????@Column(name = "user_id")
????private Integer userId;
????/**
?????* 賬戶狀態:[0,10](1可用|2異常|3已凍結|4已注銷)
?????*/
????@Basic
????@Column(name = "state")
????private Integer state;
????/**
?????* 所在用戶組:[0,32767]決定用戶身份和權限
?????*/
????@Basic
????@Column(name = "user_group")
????private String userGroup;
????/**
?????* 上次登錄時間:
?????*/
????@Basic
????@Column(name = "login_time")
????private Timestamp loginTime;
????/**
?????* 手機號碼:[0,11]用戶的手機號碼,用于找回密碼時或登錄時
?????*/
????@Basic
????@Column(name = "phone")
????private String phone;
????/**
?????* 手機認證:[0,1](0未認證|1審核中|2已認證)
?????*/
????@Basic
????@Column(name = "phone_state")
????private Integer phoneState;
????/**
?????* 用戶名:[0,16]用戶登錄時所用的賬戶名稱
?????*/
????@Basic
????@Column(name = "username")
????private String username;
????/**
?????* 昵稱:[0,16]
?????*/
????@Basic
????@Column(name = "nickname")
????private String nickname;
????/**
?????* 密碼:[0,32]用戶登錄所需的密碼,由6-16位數字或英文組成
?????*/
????@Basic
????@Column(name = "password")
????private String password;
????/**
?????* 郵箱:[0,64]用戶的郵箱,用于找回密碼時或登錄時
?????*/
????@Basic
????@Column(name = "email")
????private String email;
????/**
?????* 郵箱認證:[0,1](0未認證|1審核中|2已認證)
?????*/
????@Basic
????@Column(name = "email_state")
????private Integer emailState;
????/**
?????* 頭像地址:[0,255]
?????*/
????@Basic
????@Column(name = "avatar")
????private String avatar;
????/**
?????* 創建時間:
?????*/
????@Basic
????@Column(name = "create_time")
????@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
????private Timestamp createTime;
????@Basic
????@Transient
????private String code;
}
4.2管理員功能模塊
管理員登錄,通過填寫注冊時輸入的用戶名、密碼、權限進行登錄,如圖4-5所示。
?
圖4-5管理員登錄界面圖
管理員登錄的關鍵代碼如下。
?????* 登錄
?????* @param data
?????* @param httpServletRequest
?????* @return
?????*/
????@PostMapping("login")
????public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {
????????log.info("[執行登錄接口]");
????????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);
????????//查詢用戶審核狀態
????????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,"該用戶審核未通過");
????????????}
????????}
????????//查詢用戶狀態
????????if (byUsername.getState()!=1){
????????????return error(30000,"用戶非可用狀態,不能登錄");
????????}
????????String md5password = service.encryption(password);
????????if (byUsername.getPassword().equals(md5password)) {
????????????// 存儲Token到數據庫
????????????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;
}
管理員登錄進入財務管理系統,具體功能:用戶管理(管理員、用戶)財務收入管理、財務支出管理、理財產品管理、留言反饋管理等,如圖4-6所示。
?
圖4-6管理員功能界面圖
管理員功能界面邏輯代碼如下:
@RequestMapping(value = {"/avg_group", "/avg"})
public Map<String, Object> avg(HttpServletRequest request) {
????????Query count = service.avg(service.readQuery(request), service.readConfig(request));
????????return success(count.getResultList());
}
財務支出管理,在管理列表中對支出編號、支出類型、支出金額、支出時間、用戶編號等內容維護管理,還可以對信息進行修改或刪除操作,如圖4-7所示。
?
圖4-7財務支出管理界面圖
財務支出管理界面邏輯代碼如下:
@RequestMapping(value = {"/avg_group", "/avg"})
public Map<String, Object> avg(HttpServletRequest request) {
????????Query count = service.avg(service.readQuery(request), service.readConfig(request));
????????return success(count.getResultList());
}
人情賬本管理,在人情賬本管理中可以對賬單編號、賬單類型、賬單金額、賬單對象等信息進行維護管理,并可根據需求進行修改或刪除操作,如圖4-8所示。
?
圖4-8人情賬本管理界面圖
人情賬本管理界面邏輯代碼如下:
@PostMapping("/add")
????@Transactional
????public Map<String, Object> add(HttpServletRequest request) throws IOException {
????????service.insert(service.readBody(request.getReader()));
????????return success(1);
????}
????@Transactional
????public Map<String, Object> addMap(Map<String,Object> map){
????????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){
????????StringBuffer sql = new StringBuffer("INSERT INTO ");
????????sql.append("`").append(table).append("`").append(" (");
????????for (Map.Entry<String,Object> entry:body.entrySet()){
????????????sql.append("`"+humpToLine(entry.getKey())+"`").append(",");
????????}
????????sql.deleteCharAt(sql.length()-1);
????????sql.append(") VALUES (");
????????for (Map.Entry<String,Object> entry:body.entrySet()){
????????????Object value = entry.getValue();
????????????if (value instanceof String){
????????????????sql.append("'").append(entry.getValue()).append("'").append(",");
????????????}else {
????????????????sql.append(entry.getValue()).append(",");
????????????}
????????}
????????sql.deleteCharAt(sql.length() - 1);
????????sql.append(")");
????????log.info("[{}] - 插入操作:{}",table,sql);
????????Query query = runCountSql(sql.toString());
????????query.executeUpdate();
????}
留言管理,管理員可以對用戶的留言信息進行維護管理,如圖4-9所示。
?
圖4-9留言管理界面圖
留言管理界面邏輯代碼如下:
?@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);
}
財務支出管理,在財務支出管理列表中可以對月份、支出編號、支出類型、支出時間、用戶姓名等信息進行管理,并且根據需要進行修改或刪除操作,如圖4-10所示。
?
圖4-10財務支出管理界面圖
4.3用戶功能模塊
用戶登錄進入財務管理系統可以查看公告信息,如圖4-11所示。
?
圖4-11公告信息界面圖
意見反饋,在反饋信息列表中通過填寫反饋標題、用戶編號、反饋類型、反饋內容等信息進行提交,如圖4-12所示。
?
圖4-12意見反饋界面圖
理財產品信息,在列表中用戶可以查看產品名稱、登記編號、發行機構、期限類型、投資性質、風險登記西悉尼等,如圖4-13所示。
?
圖4-13理財產品信息界面圖
理財產品信息界面關鍵代碼如下:
@RestController
@RequestMapping("auth")
public class AuthController extends BaseController<Auth, AuthService> {
????/**
?????* 服務對象
?????*/
????@Autowired
????public AuthController(AuthService service) {
????????setService(service);
????}
??????????????????第5章軟件測試
測試存在于軟件開發進程中的最后一個階段,它可以保證一個軟件的開發質量是否符合設計者的初衷,也為程序的正式上線做了最后一道質量檢測的工序。軟件測試主要是控制各種條件、包括軟件輸出方式,使用模式和運行環境等,來評估一個系統或應用是否符合設計標準。在軟件測試過程中,我們一般刻意的去制造錯誤和極端條件,不能僅依照正常模式允許,而是多去嘗試那些意外的情況。
5.1軟件測試的重要性
只有在運行和維護階段之前經歷大量的測試的軟件,才能說明它的質量是經得起檢驗的。最近計算機業界也都一致認為,測試應該存在于軟件設計的每個階段,因為越早發現錯誤,修復起來就越容易。
實際上,對于一個軟件應用,錯誤是必然存在的,無論使用何種技術或手段,都不可能絕對的排除軟件漏洞。測試是隨著軟件開發一同誕生的,兩者是共同發展進步的。實際上,測試可以大幅度的降低維護的成本,如果一個漏洞在開發的早期就被發現,那么修復它的成本遠比上線后再修復的成本要低得多。
5.2測試實例的研究與選擇
測試有白盒測試和黑盒測試兩種方式。
其中,白盒測試是將軟件看成一個透明的白盒子,按照程序的內部控制結構和處理技術邏輯來選定測試用例、軟件系統測試的邏輯路徑及過程需要進行管理測試,又稱玻璃盒測試。因此白盒測試需要選擇足夠多的測試用例,覆蓋盡可能多的代碼來發現程序中的錯誤。
黑盒測試,也稱為功能測試。它將需軟件看作一個黑盒,像一個普通用戶一樣來模擬軟件的使用流程。黑盒測試通過大量的輸入邊界值或錯誤數據,來檢查是否可產生正確的輸出。
本系統測試 主要選擇黑盒測試,少量采用白盒測試。通過測試達到以下測試目的:
1.檢查各大功能模塊的運行,確保其能夠正確運行,并檢查各頁面的完整性,保證頁面完整。
2.檢查各個接口是否可以正確地輸入和輸出,保證數據流通穩定可行。
3.檢查數據結構,保證其和外部接口沒有訪問錯誤,訪問順利。
4.檢查原計劃的性能需求有沒有完成,運行流暢。
本系統的測試用例(部分):
| 登錄部分測試用例 | |||||
| 編號 | 對象 | 項目 | 操作 | 預期結果 | 結果 |
| 1 | 登錄 | 登錄提示 | 使用正確的賬號密碼登錄 | 成功登錄 | 預期結果 |
| 2 | 登錄提示 | 使用正確的賬號但錯誤的密碼登錄 | 提示密碼錯誤 | 預期結果 | |
| 3 | 登錄提示 | 使用錯誤的賬號登錄 | 提示不存在賬戶 | 預期結果 | |
| 4 | 登錄提示 | 不輸入賬號,點擊登錄 | 提示輸入賬號 | 預期結果 | |
| 5 | 登錄提示 | 輸入賬號但不輸入密碼點擊登錄 | 提示輸入密碼 | 預期結果 | |
| 6 | 登錄入口 | 已登錄賬號,查看登錄入口 | 不顯示登錄入口 | 預期結果 | |
5.3測試環境與測試條件
處理器:Inter Core I7-4710MQ四核處理器
內存:4GB
硬盤:1T
操作系統:Windows 10
數據庫:MySQL
5.4系統運行情況
全部測試用例都已通過(包括但不限于以上測試用例),且不存在漏洞,實現了論文開始時所作要求。本系統運行穩定,使用流暢,可以滿足客戶需求。
5.5系統評價
5.5.1系統功能評價
試運行后進行系統評估,可以認為該系統達到預定的目標要求,可以滿足用戶的需求,也滿足了系統開發前所作目標。
5.5.2系統技術評價
系統在經過大量重復測試后運行十分穩定,安全實用,功能模塊已經達到預定目標所需。
5.5.3系統經濟評價
在規定的時間內實現系統的大部分功能,且滿足要求,節省開發成本,有助于提高科學管理水平,符合本人經濟情況。
第6章 總結
隨著計算機互聯網技術的迅猛發展,各行各業都已經實現采用計算機相關技術對日益放大的數據進行管理。該課題是理財管理為核心展開的。本研究針對財務管理需求建模,數據建模及過程建模分析設計并實現程序研究的過程。給出系統應用架構并分析優劣勢,通過功能分解圖,系統組件圖描述功能需求。設計建立了數據庫,給出系統關鍵數據結構的定義。通過類關系圖描述組件間的協作關系,給出各個類的定義方法。通過描述每一個類的字段,屬性及方法實現系統的前后端代碼。最終給出系統集成整合方法,完成財務管理系統的設計與實現。投入運行時,各功能均運行正常。系統的每個界面的操作符合常規邏輯,對使用者來說操作簡單,界面友好。整個系統的各個功能設計合理,體現了人性化。
但是由于自己在系統開發過程中對一些用到的相關知識和技術掌握不夠牢固,再加上自身開發經驗欠缺,因此系統在有些方面的功能還不夠完善,考慮的不夠全面,因此整個系統還有待日后逐步完善。。
參考文獻:
[1]陳敏強.新形勢下優化工程施工企業財務管理的相關措施[J].中國市場,2022(06):90-91.DOI:10.13939/j.cnki.zgsc.2022.06.090.
[2]張暄妍.企業財務管理和內部控制的提升路徑探究[J].中國市場,2022(06):126-127.DOI:10.13939/j.cnki.zgsc.2022.06.126.
[3]劉玲.新時期背景下企業財務管理內控制度建設及財務風險規避[J].中國市場,2022(06):139-140.DOI:10.13939/j.cnki.zgsc.2022.06.139.
[4]黃英.大數據背景下企業財務管理的挑戰與變革[J].中國市場,2022(06):184-185.DOI:10.13939/j.cnki.zgsc.2022.06.184.
[5]徐祥升.現代酒店業財務管理發展問題探究[J].中國市場,2022(05):84-87.DOI:10.13939/j.cnki.zgsc.2022.05.084.
[6]黃明海.制造業企業財務管理信息化建設研究[J].中國市場,2022(05):197-198.DOI:10.13939/j.cnki.zgsc.2022.05.197.
[7]周穎.混合所有制改革背景下國有企業財務管理探究[J].財會通訊,2022(04):103-107.DOI:10.16144/j.cnki.issn1002-8072.2022.04.012.
[8]朱艷.供應鏈現代化下跨企業財務管理研究[J].財會通訊,2022(04):119-123+169.DOI:10.16144/j.cnki.issn1002-8072.2022.04.009.
[9]陳楠.財務管理課程協同混合式教學模式改革研究[J].陜西教育(高教),2022(02):45-46.DOI:10.16773/j.cnki.1002-2058.2022.02.020.
[10]謝惠芳.探討如何培養財務管理人才財務大數據分析處理能力[J].中國鄉鎮企業會計,2022(02):187-189.
[11]宿倩.農業股份有限公司財務管理目標與研究[J].中國集體經濟,2022(04):158-159.
[12]吳鴻嬌.大數據時代信息化在財務管理中的重要性和應用[J].中國集體經濟,2022(04):154-155.
[13]夏茜.“互聯網”背景下煙草商業企業財務管理創新研究[J].現代商業,2022(03):162-164.DOI:10.14097/j.cnki.5392/2022.03.051.
[14]方芳.數字經濟背景下企業財務管理模式創新探討[J].產業與科技論壇,2022,21(03):193-194.
[15]周宇.內部控制用于疾控中心財務管理的效果分析[J].當代醫學,2022,28(03):125-127.
致???謝
大學生活在這個時候即將劃上一個句號,但是對于我的人生道路來說,這僅僅是一個逗號,我將面對的是又一次征程的開始。
回憶過去,許許多多的事情浮現在腦海:剛上大學時歡樂心情和興奮的場景還歷歷在目。一切都是那么新鮮,那么富有吸引力。有快樂也有艱辛,有收獲也有失落。衷心感謝信息學院所有支持幫助過我的老師,謝謝你們多年來的關心和愛護。同窗的友情同樣難忘,你們與我共同走過了人生中不平凡的道路,給我留下了值得珍藏的美好記憶。
最后,我要特別感謝指導財務管理系統設計的老師。本論文是在他的悉心指導和熱情幫助下完成的,老師認真負責的工作態度,嚴謹的治學精神和精深的理論水平都使我受益匪淺。老師無論在理論上還是在實踐中,都給予我很大的幫助,使我專業技能的應用水平得到很大提高,這對于我以后的工作和學習都有益處。值此論文完成之際,特別向老師表示衷心的感謝和崇高的敬意,謝謝他細心而又耐心地輔導,使得我得以順利的完成畢業設計開發工作,同時也要感謝其他幫助過我的老師和同學,他們在我成長過程中給予了我很大的幫助,在此一并表示感謝。
由于本人水平有限,加上時間緊促,本文一定有不少缺點和不足,懇請各位老師給予幫助和指正。
免費領取本源代碼,請關注點贊+私信
總結
以上是生活随笔為你收集整理的(附源码)ssm财务管理系统 毕业设计 282251的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ios+html+音频播放器代码,音频播
- 下一篇: Exception:must imple