🙊作者簡介:擁有多年開發工作經驗,分享技術代碼幫助學生學習,獨立完成自己的項目或者畢業設計。
- 代碼可以私聊博主獲取。🌹
- 贈送計算機畢業設計600個選題excel文件,幫助大學選題。
- 贈送開題報告模板,幫助書寫開題報告。
作者完整代碼目錄供你選擇:
- 《Springboot網站項目》400套
- 《ssm網站項目》800套
- 《小程序項目》300套
- 《App項目》500套
- 《python網站項目》600套
?感興趣大家可以點點關注收藏,后續更新更多項目資料。?
項目演示(需要演示視頻可以私信我)


摘 ?要
網絡技術和計算機技術發展至今,已經擁有了深厚的理論基礎,并在現實中進行了充分運用,尤其是基于計算機運行的軟件更是受到各界的關注。加上現在人們已經步入信息時代,所以對于信息的宣傳和管理就很關鍵。因此固定資產信息的管理計算機化,系統化是必要的。設計開發固定資產管理系統不僅會節約人力和管理成本,還會安全保存龐大的數據量,對于固定資產信息的維護和檢索也不需要花費很多時間,非常的便利。
固定資產管理系統是在MySQL中建立數據表保存信息,運用SSM框架和Java語言編寫。并按照軟件設計開發流程進行設計實現。系統具備友好性且功能完善。管理員管理資產,資產折舊,資產維修,資產報廢等信息。員工查詢資產,查詢資產折舊,資產維修,資產報廢信息。
固定資產管理系統在讓固定資產信息規范化的同時,也能及時通過數據輸入的有效性規則檢測出錯誤數據,讓數據的錄入達到準確性的目的,進而提升固定資產管理系統提供的數據的可靠性,讓系統數據的錯誤率降至最低。
關鍵詞:固定資產管理系統;MySQL;SSM框架
1 緒論
1.1?選題背景
網絡技術和計算機技術發展至今,已經擁有了深厚的理論基礎,并在現實中進行了充分運用,尤其是基于計算機運行的軟件更是受到各界的關注。計算機軟件可以針對不同行業的營業特點以及管理需求,設置不同的功能,可以符合各個行業的實際運營要求,其快速便捷的信息處理模式已經可以讓信息的管理者從繁瑣的工作中得到解脫,還可以實現數據的易維護和安全性。加上現在人們已經步入信息時代,所以對于信息的宣傳和管理就很關鍵。因此信息化管理模式也是當今的管理趨勢。對于固定資產信息管理,如果仍使用舊辦法進行,將會影響其在行業中的競爭力,也很容易被時代淘汰,所以固定資產信息的管理計算機化,系統化是必要的。設計開發固定資產管理系統不僅會節約人力和管理成本,還會安全保存龐大的數據量,對于固定資產信息的維護和檢索也不需要花費很多時間,非常的便利。
1.2 選題意義
固定資產管理系統在實際運用中,對管理員的綜合素質的提升也有幫助。因為固定資產管理系統在減輕了固定資產信息管理人員的工作量的同時,還可以讓他們把節省出來的時間用來充實自己,提升個人能力,這樣才可以充分發揮固定資產管理系統提供的服務,讓固定資產管理系統顯示數據信息的同時,也可以快速完成數據處理,提升服務水平。而且固定資產管理系統開發需要投入的成本較低,但是后期運用中,會產生大量效益,尤其是固定資產管理系統在進行高負荷運轉時,還可以保證數據處理的質量與數據安全,通過對處理工作的流程的優化,可以節省傳統模式需要投入的人力和資金,從而降低信息管理的成本。另外,固定資產管理系統在讓固定資產信息規范化的同時,也能及時通過數據輸入的有效性規則檢測出錯誤數據,讓數據的錄入達到準確性的目的,進而提升固定資產管理系統提供的數據的可靠性,讓系統數據的錯誤率降至最低。
1.3 研究內容
按照設計開發一個系統的常用流程來描述系統,可以把系統分成分析階段,設計階段,實現階段,測試階段。所以在編寫系統的說明文檔時,根據系統所處的階段來描述系統的內容。
緒論:這是對選題的背景,意義等內容做出介紹。
系統開發技術:這是對系統即將使用的技術,包括使用的工具,編程的語言等做出介紹。
系統分析:這是對系統做出分析,包括投資前期必備的可行性分析,包括對用戶調研獲取的需求,包括系統運行具備的性能等內容做出介紹。
系統設計:這是對系統進行設計,包括運用繪圖工具設計的系統功能結構,包括設計的在數據庫中要創建的數據表的存儲結構等內容做出介紹。
系統實現:這是對系統進行編碼實現。包括實現的系統各個模塊的運行效果等內容做出介紹。
系統測試:這是對編制的系統進行測試。包括功能的測試等內容做出介紹。
2?系統開發技術
這部分內容主要介紹本系統使用的技術,包括使用的工具,編程的語言等內容。
2.1 Java語言
Java語言自公元1995年至今,已經超過25年了,依然在軟件開發上面有很大的市場占有率。當年Sun公司發明Java就是為了發展一門跨平臺的高級編程語言,讓程序開發人員專注于程序開發過程,不需要關注服務器是屬于哪個平臺,因為跨平臺的特性讓語言發展的很迅速。Java的發展,吸收了C++這些語言的優點,因為新生事物一般就是解決老舊事物一些痛點的,雖然Java也有很多缺點,但是起碼也算是一種發展方向。學習Java不需要太多的指針這些理念,也不用學習太過復雜的數據結構理論,比如什么堆棧這些概念,除非某些特殊行業對這些要求相當嚴謹之外,一般用Java開發程序是不用考慮各種各樣的數據結構的。因為Java屬于一種強類型語言,已經對各種數據定義了各種相應的類型。Java對數據類型定義分為兩大種,一種是基本類型,含有8個基本屬性,另一個是包裝類。基本類和包裝類從根本的定義上,都有很明顯的區分,計算機運行也會有很明顯的差別,如果用錯了會編譯錯誤還會影響運行效果的,Java的各種優點只需要按部就班的學習使用即可。
2.2 SSM框架
本課題開發的應用程序主要采用的框架技術是SSM,是Java語言的一種框架集合的簡稱,目前在Java語言方面,主要有兩大分支,一個是主攻Java語言,學習了Java基礎之后,會有很多Java進階框架進行學習,主要是針對應用程序后臺進行開發設計,另一方面是轉行去學習安卓語言,主要是做安卓的前端設計方面,雖然也是Java語言,但是主要去學習安卓平臺的各種架構和框架了。但是不管前端應用如何,SSM框架主要是針對服務端方面進行開發的一個主流框架集合。針對于傳統的SSH框架的臃腫,配置繁瑣,不管是開發還是二次開發都會造成時間上大量的浪費,并且學習上面也不能有效銜接,需要去適應框架的各種設計,而框架設計比較死板,容易出錯。SSM框架是當前最流行的,告別了繁瑣的配置,讓配置更加靈活,讓數據操作更加方便,選擇SSM框架進行開發感覺是很合適的。
2.3 MYSQL數據庫
關系型數據庫設計,對于數據庫字段類型的設計以及字段長度的設計,都無時無刻的影響著后續程序開發后大量數據操作的運行效率。關系型數據庫對不同的字段類型都有解釋,本著課題所需的應用程序開發,尋找最適合的關系型數據庫,基本上都有考慮。關系型數據庫發展至今也有幾十年了,優勝劣汰導致到現在還依然存在的關系型數據庫其實并不多,基本上也都能滿足應用程序的功能所需,所以要從其他方面來進行考慮數據庫的選擇。從安裝維護上面考慮,SQL Server數據庫有好幾個G的安裝包,并且安裝過程中會安裝很多不需要的功能,非常占用資源。Oracle數據庫不比SQL Server安裝包小,并且安裝也會出現很多問題,對于課題所需來講,沒必要這么麻煩,并且安裝還需要各種激活,只有MySQL數據庫完全適合,幾十兆大小的安裝包,運行起來壓力不大,畢竟開發電腦上還有很多其他有用的東西,而且完全免費,所以選擇了MySQL數據庫作為首選數據庫。
3 系統分析
這部分內容雖然在開發流程中處于最開始的環節,但是它對接下來的設計和實現起著重要的作用,因為系統分析結果的好壞,將直接影響后面環節的開展。
3.1可行性研究
影響系統開發的因素有很多,比如開發成本高就不適合開展,或者是開發時間超過了預期,也不適合開展等等。所以,在正式作出開發決策前,研究系統可行性問題,從經濟,時間,操作等角度論證系統是否可以開展。
3.1.1經濟可行性
固定資產管理系統可以簡化工作流程,提供信息處理功能,并可以長期保存數據,在后期的數據查詢與編輯中耗時少,提升信息管理效率,其帶來的收益比較可觀。對于本系統開發,無論是開發需要使用的計算機,還是開發工具等投入的成本很低,計算機是機房的電腦,開發工具是從網上下載安裝的,并沒有收取費用。
3.1.2時間可行性
固定資產管理系統是作為本人畢設項目的一個作品,學院也充分預留了制作時間,并且在每個時間段,都安排了相應的任務,所以根據這個時間安排開展工作,是可以對本系統進行設計完成的。
3.1.3操作可行性
隨著電腦的普及,已經有很多人可以獨立操作電腦了。而本系統就是在配置了運行環境的電腦上運行,其功能簡單,省去了很多繁瑣的操作邏輯,使用者通過頁面導航可以直接進入功能操作區,所以稍微懂點電腦的人,都可以輕松完成系統的使用。
綜上所述,本系統可以開展接下來的工作了。
3.2系統性能分析
為了降低本系統在實際使用中的出錯率,就需要分析系統具備的性能。常見的可以評估系統的性能的指標有安全性,易用性,健壯性等。
3.2.1系統易用性
系統提供的信息和服務都有特定的用戶群,所以,一個容易操作的系統相比一個不方便使用的系統來講,用戶還是更加青睞于使用方便的系統。所以系統具備易用性就顯得非常重要。
3.2.2系統健壯性
系統在與用戶進行交互過程中,面對用戶的誤操作行為,系統應該有相應的處理這種問題的反饋機制,而不是進入系統崩潰狀態。系統中設置了很多的功能,在應對系統中某個功能出現異常情況時,系統的其它功能還是可以讓用戶使用。這就是系統健壯性的體現。
3.2.3系統安全性
保存在系統里面的數據,都是比較重要的系統資源,一旦這些資源泄露,不僅會有財產損失,還會喪失很多客戶。所以,系統里面的數據要隨時都處于安全的環境中,因此就需要采取措施保證數據安全,比如設置登錄功能,使用安全驗證技術引導條件用戶進入指定頁面,而讓非條件用戶停留在登錄頁面,不能訪問系統。
3.3?系統流程分析
軟件開發設計的思想始終貫穿本系統,其開發流程見下圖。前期需要進行功能分析,功能設計,還有對系統后臺支持數據庫的設計,利用編碼技術對設計的系統進行實現,然后檢測和完善。
圖3.1系統開發流程圖
訪問者操作系統,前提是需要驗證身份,而登錄功能的設置就是把本系統的用戶引導進入后臺操作區,把不是本系統的用戶拒之門外。其流程見下圖。
圖3.2?登錄流程圖
3.4系統功能分析
在明確系統的用途,以及系統的目標用戶群后,可以對本系統的功能進行設置,可以獲取調研用戶對功能的要求,也可以對市場上同類系統進行分析和總結,得出本系統的功能。
固定資產管理系統設置了管理員權限,其用例圖見下圖。管理員登錄進入本人后臺之后,管理資產,資產折舊,資產維修,資產報廢等信息。
圖3.4 管理員用例圖
固定資產管理系統設置了員工權限,其用例圖見下圖。員工查詢資產,查詢資產折舊,資產維修,資產報廢信息。
圖3.5 員工用例圖
當前,系統的類型有很多,從系統呈現的內容來看,系統的類型有社交類,有商業類,有政府類,有新聞類等。那么,在眾多系統類型中,先明確將要設計的系統的類型才是系統設計的首要工作,然后在此基礎上明確系統的用戶群,功能等,針對這些信息設計出具有獨特體驗和視覺的系統。如此才能讓系統比較具有特色,也能夠在眾多相似系統中給用戶留下深刻印象。
4.1系統目標
本系統在功能制定上,嚴格參照用戶的要求,但是在設計本系統時,也要滿足易操作,使用便利的設計要求。由此,設計出一個規范化并且符合用戶需求的系統,一定要達到下述系統目標。
第一個系統目標:用戶與系統之間的操作方式是基于人機對話,可視化界面的設計除了美觀性之外,也具備友好性。可視化界面提供的各類信息符合準確性,可靠性的要求,并能夠方便用戶靈活查看。
第二個系統目標:用戶與系統交互產生的數據,要嚴格規范的保存在數據庫里,無論是后期管理人員查找與管理,都要確保數據安全。
第三個系統目標:實現用戶需求的功能。根據對用戶的調查得出的功能需求,完成固定資產管理系統的設計與實現。
第四個系統目標:在必要環節,對用戶登記的數據進行檢查,包括數據長度,以及數據輸入類型等的檢查,發現錯誤及時反饋,引導用戶規范登記數據。常見的有密碼修改,注冊登錄,用戶資料填寫等環節的數據核驗。
第五個系統目標:設計開發本系統,需要盡最大努力,在系統具備易操作的特點外,也要求系統于后期使用中,維護方便,讓系統具備易維護的特點。
第六個系統目標:本系統在交付用戶使用時,可以達到運行穩定的目標,另外,系統具備安全性,也符合可靠性的條件,用戶可以放心使用。
4.2功能結構設計
前面所做的功能分析,只是本系統的一個大概功能,這部分需要在此基礎上進行各個模塊的詳細設計。
設計的管理員的詳細功能見下圖,管理員登錄進入本人后臺之后,管理資產,資產折舊,資產維修,資產報廢等信息。
圖4.1 管理員功能結構圖
設計的員工的詳細功能見下圖,員工查詢資產,查詢資產折舊,資產維修,資產報廢信息。
圖4.2 員工功能結構圖
4.3數據庫設計
相比非關系型數據庫來說,目前市場上使用率比較高,并且易于維護的數據庫,當數關系型數據庫了。這個數據庫主要是基于關系模型的方式來對數據信息進行組織。也就是常見的二維表模型。可以說二維表和二維表之間的相互聯系就構成了關系型數據庫。
4.3.1數據庫E-R圖
為了更好地保存固定資產管理系統產生的數據,就需要在數據庫的設計階段對E-R模型進行建立,以及完成數據庫中的表結構的創建。之所以要單獨完成數據庫的設計,主要有以下幾點原因:
第一點:防止代碼冗余;
第二點:防止占用過多內存;
第三點:提升數據庫的整體性能,方便程序開發以及數據更新;
第四點:保證數據的完整性;
本部分內容主要在于建立本系統的E-R模型,需要先收集數據,然后根據數據庫實現的思路,對用戶的需求進行分析,這期間需要對實體,屬性,還有關系進行標識,為繪制E-R模型做好充足準備。同時,在作圖中,也要注意作圖規范,注意每個符號的正確使用。
(1)設計的資產折舊實體,其具備的屬性見下圖。
圖4.4 資產折舊實體屬性圖
(2)設計的管理員實體,其具備的屬性見下圖。
圖4.5?管理員實體屬性圖
(3)設計的員工實體,其具備的屬性見下圖。
圖4.6?員工實體屬性圖
(4)設計的資產維修實體,其具備的屬性見下圖。
圖4.7?資產維修實體屬性圖
(5)設計的各實體間關系見下圖。
圖4.8 實體間關系E-R圖
4.3.2 數據庫表結構
為了設計出結構合理,性能優良的數據庫,在設計數據庫時,需要遵循三大范式:
第一范式:確保數據表當中的每列所代表的字段值都不能再進行分解了;
第二范式:在滿足第一范式基礎上,讓數據表中每列與主鍵相關;
第三范式:在滿足第二范式基礎上,確保每列數據直接與主鍵相關,不是間接相關。
從上面的表述中可以看出,這三大范式,在等級上還是有區分的,最低等級的就數第一范式,最高等級的就是第三范式,趨于兩者中間的是第二范式。總之,數據庫設計按照這三大范式進行,可以簡化設計過程,并且還會減少數據冗余,對于數據檢索效率的提升也很有幫助。
表4.1 資產報廢信息表
字段 | 類型 | 空 | 默認 | 注釋 |
id?(主鍵) | int(11) | 否 | 主鍵 | |
zichan_name | varchar(255) | 是 | NULL | 報廢資產 |
insert_time | timestamp | 是 | NULL | 報廢時間 |
create_time | timestamp | 是 | NULL | 創建時間 |
表4. 2管理員信息表
字段 | 類型 | 空 | 默認 | 注釋 |
id?(主鍵) | bigint(20) | 否 | 主鍵 | |
username | varchar(100) | 否 | 用戶名 | |
password | varchar(100) | 否 | 密碼 | |
role | varchar(100) | 是 | 管理員 | 角色 |
addtime | timestamp | 否 | CURRENT_TIMESTAMP | 新增時間 |
表4. 3資產維修信息表
字段 | 類型 | 空 | 默認 | 注釋 |
id?(主鍵) | int(11) | 否 | 主鍵 | |
zichan_id | int(11) | 是 | NULL | 維修資產 |
yonghu_id | int(11) | 是 | NULL | 負責員工 |
weixiu_money | decimal(10,4) | 是 | NULL | 維修費用 |
insert_time | timestamp | 是 | NULL | 維修時間 |
create_time | timestamp | 是 | NULL | 創建時間 |
表4.4 員工信息表
字段 | 類型 | 空 | 默認 | 注釋 |
id?(主鍵) | int(11) | 否 | 主鍵 | |
username | varchar(200) | 是 | NULL | 賬戶 |
password | varchar(200) | 是 | NULL | 密碼 |
yonghu_name | varchar(200) | 是 | NULL | 姓名? |
sex_types | int(11) | 是 | NULL | 性別 |
bumen_types | int(11) | 是 | NULL | 所屬部門名稱 |
yonghu_id_number | varchar(200) | 是 | NULL | 身份證號? |
yonghu_phone | varchar(200) | 是 | NULL | 手機號? |
yonghu_photo | varchar(200) | 是 | NULL | 照片 |
create_time | timestamp | 是 | NULL | 創建時間 |
表4.5 資產折舊信息表
字段 | 類型 | 空 | 默認 | 注釋 |
id?(主鍵) | int(11) | 否 | 主鍵 | |
zichan_id | int(11) | 是 | NULL | 資產名稱 |
weixiu_zhejiu | varchar(255) | 是 | NULL | 折舊程度 |
weixiu_content | varchar(200) | 是 | NULL | 詳細信息 |
create_time | timestamp | 是 | NULL | 創建時間 |
表4.6 資產信息表
字段 | 類型 | 空 | 默認 | 注釋 |
id?(主鍵) | int(11) | 否 | 主鍵 | |
zichan_name | varchar(255) | 是 | NULL | 資產名稱? |
zichan_types | int(11) | 是 | NULL | 資產分類? |
bumen_types | int(11) | 是 | NULL | 所屬部門? |
zichan_guige | varchar(255) | 是 | NULL | 規格型號 |
zichan_changjia | varchar(255) | 是 | NULL | 生產廠家 |
zichan_baoyang | varchar(255) | 是 | NULL | 保養周期 |
zichan_money | decimal(10,4) | 是 | NULL | 購買價格 |
zichan_content | varchar(200) | 是 | NULL | 詳細信息 |
create_time | timestamp | 是 | NULL | 創建時間 |
5 系統實現
在此部分內容中,主要通過系統功能的運行效果圖展示前面設計的最終結果。系統實現對編制人員的技術能力有較高要求,因為需要他們使用編程的方式去實現系統設計的方案。
5.1 管理員功能實現
5.1.1 資產維修管理
管理員權限中的資產維修管理,其運行效果見下圖。管理員對資產維修信息進行添加,包括維修費用,負責員工等資料,在本頁面,管理員對資產維修信息進行更改或查詢。
圖5.1?資產維修管理頁面
5.1.2 資產折舊管理
管理員權限中的資產折舊管理,其運行效果見下圖。資產折舊信息需要管理員登記,在本頁面,管理員可以查詢,修改資產折舊信息。
圖5.2 資產折舊管理頁面
5.1.3 資產管理
管理員權限中的資產管理,其運行效果見下圖。管理員管理資產信息,對報廢資產進行報廢登記。
圖5.3 資產管理頁面
5.1.4 員工管理
管理員權限中的員工管理,其運行效果見下圖。管理員添加員工,包括其所屬部門,照片,身份證等資料都需要一一登記,同時,管理員還負責更改員工資料。
圖5.4?員工管理頁面
5.2 員工功能實現
5.2.1 查詢資產維修
員工權限中的查詢資產維修,其運行效果見下圖。員工查看自己負責的資產維修信息。
圖5.5?查詢資產維修頁面
5.2.2 查詢資產折舊
員工權限中的查詢資產折舊,其運行效果見下圖。員工根據資產名稱可以獲取對應的資產折舊信息。
圖5.6 查詢資產折舊頁面
5.2.3 查詢資產
員工權限中的查詢資產,其運行效果見下圖。員工根據資產所屬部門查詢資產,根據資產分類查詢資產等。
圖5.7?查詢資產頁面
6系統測試
這部分內容主要是把前期編碼完成的系統,當成是計算機系統的一部分,并結合一些數據,計算機硬件和支持的軟件進行集成測試和確認測試。之所以要進行最后的測試步驟,原因在于檢查制作的系統與需求說明書的比較中,存在的差異問題。進一步確認制作的系統在功能與性能上跟需求說明書當中的要求相符。
6.1 系統測試的類型
檢測系統是否合格,需要用到很多的測試類型。接下來就對這部分內容進行描述。
功能測試:這是系統測試中,首先進行的測試內容,其屬于黑盒測試。主要檢驗制作的系統與需求說明文檔的相符程度,還有它們之間存在的差異問題。
性能測試:主要測試制作的系統,在同時面對很多的用戶請求時,該系統的應對能力。同時也是檢查制作的系統跟事先預定的系統性能存在的差距問題。這樣的方法通常在實時系統中,或者是嵌入式系統中運用得比較多。
容量測試:這種方法針對數據。檢查正常運行的系統對數據處理的容量值。
安全性測試:這種方法常用于檢驗系統中設置的安全保護機制對來自非法用戶的攻擊時是否有效。而檢測系統中的信息保護機制就需要使用常見安全測試中的保護測試來驗證。
健壯性測試:這種測試還有一個別稱是容錯測試,通常運用故障插入法來檢測系統的容錯能力,看系統是否可以忽略故障保持繼續運行,或者是檢測系統應對故障時的自動恢復能力。
兼容性測試:面對計算機的各種軟硬件環境,檢測本系統是否可以兼容。
易用性測試:這種方法主要是面向用戶,檢測用戶是否很容易理解和使用系統。
6.2 功能測試
固定資產管理系統在經歷最后的測試環節,需要檢驗本系統的功能安全性,功能適用性等內容,最終得出測試結論。
表6.1 功能測試數據表
測試內容 | 測試結果 |
系統功能的適用性 | 符合要求 |
系統功能的依從性 | 符合要求 |
系統功能的安全性 | 符合要求 |
系統功能的準確性 | 符合要求 |
系統功能的可操作性 | 符合要求 |
6.3 可用性測試
通常來說,一個布局合理,顯示的內容無錯別字,并具備合理正常的操作邏輯的系統往往很受歡迎,而且可以提升訪問者的使用時間以及訪問率。
表6.2?可用性測試數據表
測試內容 | 測試結果 |
檢查系統的操作邏輯合不合理 | 合理 |
檢查系統的功能布局合不合理 | 合理 |
檢查系統能否支持鼠標和鍵盤 | 能 |
檢查系統反饋的提示有無錯別字 | 無 |
檢查系統功能有無友好性 | 有 |
檢查系統頁面能否正常關閉 | 能 |
檢查系統各數據項有無錯誤 | 無 |
檢查系統有無提供幫助信息 | 有 |
6.4 測試結果分析
固定資產管理系統經過了編碼階段的單元測試,和最后的系統整體測試等測試后,對于用戶要求的功能,本系統都進行了實現,各個模塊都運行正常。在面對一些故障性問題時,本系統也有相應的應對辦法,并且本系統可以保持24小時正常運轉。因此,固定資產管理系統可以交付用戶使用。
結 ?論
固定資產管理系統的開發設計并不是一件輕松事,因為畢設制作都是依照一定流程進行的。最開始是選擇題目,然后通過各種方式查閱資料,以及對使用用戶的需求進行調研,確定本系統的功能,為了降低系統編碼的出錯率,在設計階段也需要下功夫,認真設計功能模塊,使用大學所學的數據庫知識,設計數據庫。這樣一來,對系統編碼時,就會根據設計方案進行。編碼完成,進行測試就能對合格的系統進行驗收了。
借助身邊同學還有導師提供的幫助,本人也順利完成本系統的制作工作。對固定資產管理系統的分析與總結,發現固定資產管理系統具有如下特點:
(1)固定資產管理系統有著詳細的功能設計,所以編碼時,基本依照設計的功能進行開發,因此具備較完善的功能;
(2)固定資產管理系統在界面設計與布局時,參考了很多系統的界面設計風格,也從圖書館查閱了關于系統界面設計方面的資料,并把對本系統有用的知識做好筆記,有了這些知識積累,所以我在開發系統時,注重頁面文字的排版,以及精確定位各頁面元素,合理使用顏色搭配技巧,讓本系統在不影響瀏覽效果的同時,讓訪問者產生一種簡潔干凈的視覺效果;
(3)固定資產管理系統為了讓用戶易于使用,在能夠直觀表達系統內容的同時,也把頁面的導航放在了頁面中最關鍵的位置,這個位置也是充分考慮了用戶的瀏覽習慣。所以用戶操作系統,可以在短時間內找到需要的內容。
由于本人并不是專門從事開發工作的技術人員,目前在校學習的開發類知識處于初級階段,只是對開發類技術有著簡單了解和使用,加上日常完成的作業,也只是局限在某個系統的某個功能模塊上,因此,完成一個功能完善的整個系統,對于我來說,還是有一定的壓力。所以這也確定了我開發的系統具有缺陷。
(1)對于固定資產管理系統的編碼并沒有完全依照編碼規范,整個系統存在代碼冗余的缺陷;
(2)固定資產管理系統在數據輸入上,對數據有效性檢測還不夠嚴格;
(3)對固定資產管理系統的誤操作提示,只是對部分功能進行了設計,還有很多功能都沒有設計報錯提示。
綜上所述,本人仍需花費時間去學習編程知識,在后期,我將會學習代碼模塊化,將一些通用的函數,變量等進行單獨設置,然后直接在需要的頁面上進行調用,這樣可以降低代碼冗余率,同時也會多學習針對程序易出錯地方的解決方案等知識。學習這些知識除了完善本系統之外,也是彌補自身編程能力不足的缺陷。
參考文獻
- 任金林.基于B/S模式的固定資產管理系統的設計[J].電子世界,2021(01):130-131.
[2]楊軍.高校固定資產管理系統設計與實現研究[J].無線互聯科技,2021,18(01):62-63.
[3]王明昊.醫院固定資產管理系統設計及應用[J].營銷界,2021(02):99-100.
[4]王子虎,胡麗珍.基于計算機軟件安全開發的Java編程語言研究[J].數字技術與應用,2019,37(12):133-134.
[5]謝懿.計算機軟件Java編程特點及其技術分析[J].農家參謀,2020(01):166.
[6]歐陽桂秀.Java語言存取文本文件的研究[J].科技傳播,2019,11(24):128-129+162.
[7]左兆豐.Java嵌入式數據庫程序的開發[J].電腦編程技巧與維護,2020(01):101-103.
[8]黃守濤.基于Java語言的異常處理探討分析[J].自動化技術與應用,2020,39(02):30-32+107.
[9]鄒紅霆.基于SSM框架的Web系統研究與應用[J].湖南理工學院學報(自然科學版),2017,30(01):39-43.
[10]汪維,胡帥.MySQL數據庫有關數據的備份方法分析[J].信息技術與信息化,2020(07):36-37.
[11]丁佳.基于JSP+MySQL的用戶登錄系統SQL注入實例及防范[J].網絡安全技術與應用,2020(09):49-51.
[12]曾志明.網站開發技術的比較研究[J].電腦知識與技術,2015,6(05):1075-1078.
[13]衛紅春.信息系統分析與設計[M].北京:清華大學出版社,2015.
[14]Oscar Rodriguez-Prieto,Francisco Ortin,Donna O’Shea. Efficient runtime aspect weaving for Java?applications[J]. Information and Software Technology,2018,100.
[15]Raffi Khatchadourian. Automated refactoring of legacy Java?software to enumerated types[J]. Automated Software Engineering,2017,24(4).
致??謝
伴隨著畢設項目的制作完成,也就意味著我們即將離開校園。回想幾年的大學時光,不由得想起身邊常伴的同學,授課的老師,還有畢設指導的老師們。
大學這幾年,身邊的同學為我提供了很多的幫助,不管是生活上,還是學習上,每次遇到問題,這些同學們都會耐心解答,有時為了避免我再次犯錯,他們也會時不時提醒我。本次畢設制作期間,這些老同學也是互相分享開發經驗,還有文檔編寫的技巧,從開題報告,還有任務書以及最后的論文等文檔上,大家都是互相提出建議,互相參考一些編寫經驗和技巧。如此,我們才會進展得比較順利。此刻,真心感謝這些老同學!
唯一不能忘記的是導師,平均每個導師都帶了很多個畢業生,所以能夠想象他們非常忙,因為一到畢業季,他們需要指導學生們畢業,還需要正常授課。作為本屆畢業生,我也能夠體會導師的辛苦和不容易。畢設制作的環節有很多,但是我的導師在進行的每個環節都嚴格要求我認真努力對待本項目,也對我編程技術上提出了很多至關重要的建議,還對一些比較細微但是也比較關鍵的部分向我進行了多次強調,讓我少走彎路,可以如期實現本系統。此刻,真心感謝導師!
校園里的授課老師不僅有本專業的老師,也有其他專業的老師們,他們都教過我們課程,向我們傳授知識,有了這些知識積累,我在本次畢設制作中,才知道有些問題該如何運用知識處理,此刻,感謝那些授課老師。
最后時刻,我要感謝校園,祝愿校園更加強大!
核心代碼展示
/*** 公告通知* 后端接口* @author * @email * @date 2021-03-09 11:33:59*/
@RestController
@RequestMapping("/news")
public class NewsController {@Autowiredprivate NewsService newsService;/*** 后端列表*/@RequestMapping("/page")public R page(@RequestParam Map<String, Object> params,NewsEntity news, HttpServletRequest request){EntityWrapper<NewsEntity> ew = new EntityWrapper<NewsEntity>();PageUtils page = newsService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, news), params), params));return R.ok().put("data", page);}/*** 前端列表*/@IgnoreAuth@RequestMapping("/list")public R list(@RequestParam Map<String, Object> params,NewsEntity news, HttpServletRequest request){EntityWrapper<NewsEntity> ew = new EntityWrapper<NewsEntity>();PageUtils page = newsService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, news), params), params));return R.ok().put("data", page);}/*** 列表*/@RequestMapping("/lists")public R list( NewsEntity news){EntityWrapper<NewsEntity> ew = new EntityWrapper<NewsEntity>();ew.allEq(MPUtil.allEQMapPre( news, "news")); return R.ok().put("data", newsService.selectListView(ew));}/*** 查詢*/@RequestMapping("/query")public R query(NewsEntity news){EntityWrapper< NewsEntity> ew = new EntityWrapper< NewsEntity>();ew.allEq(MPUtil.allEQMapPre( news, "news")); NewsView newsView = newsService.selectView(ew);return R.ok("查詢公告通知成功").put("data", newsView);}/*** 后端詳情*/@RequestMapping("/info/{id}")public R info(@PathVariable("id") Long id){NewsEntity news = newsService.selectById(id);return R.ok().put("data", news);}/*** 前端詳情*/@IgnoreAuth@RequestMapping("/detail/{id}")public R detail(@PathVariable("id") Long id){NewsEntity news = newsService.selectById(id);return R.ok().put("data", news);}/*** 后端保存*/@RequestMapping("/save")public R save(@RequestBody NewsEntity news, HttpServletRequest request){news.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());//ValidatorUtils.validateEntity(news);newsService.insert(news);return R.ok();}/*** 前端保存*/@RequestMapping("/add")public R add(@RequestBody NewsEntity news, HttpServletRequest request){news.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());//ValidatorUtils.validateEntity(news);newsService.insert(news);return R.ok();}/*** 修改*/@RequestMapping("/update")public R update(@RequestBody NewsEntity news, HttpServletRequest request){//ValidatorUtils.validateEntity(news);newsService.updateById(news);//全部更新return R.ok();}/*** 刪除*/@RequestMapping("/delete")public R delete(@RequestBody Long[] ids){newsService.deleteBatchIds(Arrays.asList(ids));return R.ok();}/*** 提醒接口*/@RequestMapping("/remind/{columnName}/{type}")public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request, @PathVariable("type") String type,@RequestParam Map<String, Object> map) {map.put("column", columnName);map.put("type", type);if(type.equals("2")) {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");Calendar c = Calendar.getInstance();Date remindStartDate = null;Date remindEndDate = null;if(map.get("remindstart")!=null) {Integer remindStart = Integer.parseInt(map.get("remindstart").toString());c.setTime(new Date()); c.add(Calendar.DAY_OF_MONTH,remindStart);remindStartDate = c.getTime();map.put("remindstart", sdf.format(remindStartDate));}if(map.get("remindend")!=null) {Integer remindEnd = Integer.parseInt(map.get("remindend").toString());c.setTime(new Date());c.add(Calendar.DAY_OF_MONTH,remindEnd);remindEndDate = c.getTime();map.put("remindend", sdf.format(remindEndDate));}}Wrapper<NewsEntity> wrapper = new EntityWrapper<NewsEntity>();if(map.get("remindstart")!=null) {wrapper.ge(columnName, map.get("remindstart"));}if(map.get("remindend")!=null) {wrapper.le(columnName, map.get("remindend"));}int count = newsService.selectCount(wrapper);return R.ok().put("count", count);}}