🙊作者簡介:擁有多年開發工作經驗,分享技術代碼幫助學生學習,獨立完成自己的項目或者畢業設計。
- 代碼可以私聊博主獲取。🌹
- 贈送計算機畢業設計600個選題excel文件,幫助大學選題。
- 贈送開題報告模板,幫助書寫開題報告。
作者完整代碼目錄供你選擇:
- 《Springboot網站項目》400套
- 《ssm網站項目》800套
- 《小程序項目》300套
- 《App項目》500套
- 《python網站項目》600套
?感興趣大家可以點點關注收藏,后續更新更多項目資料。?
項目演示(需要演示視頻可以私信我)
??????????
摘 ?要
現代經濟快節奏發展以及不斷完善升級的信息化技術,讓傳統數據信息的管理升級為軟件存儲,歸納,集中處理數據信息的管理方式。本校園二手物品交易平臺就是在這樣的大環境下誕生,其可以幫助管理者在短時間內處理完畢龐大的數據信息,使用這種軟件工具可以幫助管理人員提高事務處理效率,達到事半功倍的效果。此校園二手物品交易平臺利用當下成熟完善的SSM框架,使用跨平臺的可開發大型商業網站的Java語言,以及最受歡迎的RDBMS應用軟件之一的Mysql數據庫進行程序開發.校園二手物品交易平臺的開發根據操作人員需要設計的界面簡潔美觀,在功能模塊布局上跟同類型網站保持一致,程序在實現基本要求功能時,也為數據信息面臨的安全問題提供了一些實用的解決方案。可以說該程序在幫助管理者高效率地處理工作事務的同時,也實現了數據信息的整體化,規范化與自動化。
關鍵詞:校園二手物品交易平臺;SSM框架;Mysql;自動化
1 緒論
1.1?研究背景
當前社會各行業領域競爭壓力非常大,隨著當前時代的信息化,科學化發展,讓社會各行業領域都爭相使用新的信息技術,對行業內的各種相關數據進行科學化,規范化管理。這樣的大環境讓那些止步不前,不接受信息改革帶來的信息技術的企業隨時面臨被淘汰,被取代的風險。所以當今,各個行業領域,不管是傳統的教育行業,餐飲行業,還是旅游行業,醫療行業等領域都將使用新的信息技術進行信息革命,改變傳統的紙質化,需要人手工處理工作事務的辦公環境。軟件信息技術能夠覆蓋社會各行業領域是時代的發展要求,各種數據以及文件真正實現電子化是信息社會發展的不可逆轉的必然趨勢。本校園二手物品交易平臺也是緊跟科學技術的發展,運用當今一流的軟件技術實現軟件系統的開發,讓醫生管理信息完全通過管理系統實現科學化,規范化,程序化管理。從而幫助信息管理者節省事務處理的時間,降低數據處理的錯誤率,對于基礎數據的管理水平可以起到促進作用,也從一定程度上對隨意的業務管理工作進行了避免,同時,校園二手物品交易平臺的數據庫里面存儲的各種動態信息,也為上層管理人員作出重大決策提供了大量的事實依據。總之,校園二手物品交易平臺是一款可以真正提升管理者的辦公效率的軟件系統。
1.2 目的和意義
信息數據的處理完全依賴人工進行操作,會耗費大量的人工成本,特別是面對大量的數據信息時,傳統人工操作不僅不能對數據的出錯率進行保證,還容易出現各種信息資源的低利用率與低安全性問題。更有甚者,耽誤大量的寶貴時間,尤其是對信息的更新,歸納與統計更是耗財耗力的過程。所以電子化信息管理的出現就能緩解以及改變傳統人工方式面臨的處境,一方面可以確保信息數據在短時間被高效處理,還能節省人力成本,另一方面可以確保信息數據的安全性,可靠性,并可以實現信息數據的快速檢索與修改操作,這些優點是之前的舊操作模式無法比擬的。因此校園二手物品交易平臺為數據信息的管理模式的升級與改革提供了重要的窗口。
1.3 論文結構安排
為了幫助用戶更好的了解和理解程序的開發流程與相關內容,本文將通過六個章節進行內容闡述。
第一章:描述了程序的開發背景,程序運用于現實生活的目的與意義,以及程序文檔的結構安排信息;
第二章:描述了程序的開發環境,包括程序開發涉及到的技術,程序開發使用的數據存儲工具等信息;
第三章:描述了程序著手進行開發時,會面臨的可行性問題,并對程序功能以及性能要求進行描述;
第四章:描述了程序大功能模塊下的功能細分信息,以及存儲程序數據的數據庫表文件結構的設計信息等;
第五章:描述了程序的功能實現界面的內容,也對程序操作人員操作的部分功能進行了描述;
第六章:描述了程序功能的測試內容,并介紹了系統測試的概念與方法。
2?相關技術
2.1 SSM框架介紹
本課題程序開發使用到的框架技術,英文名稱縮寫是SSM,在JavaWeb開發中使用的流行框架有SSH、SSM、SpringMVC等,作為一個課題程序采用SSH框架也可以,SSM框架也可以,SpringMVC也可以。SSH框架是屬于重量級別的框架,配置繁瑣,不夠靈活,修改程序需要修改好多個文件,并且運行起來也占用內存較高,CPU使用率相對也高,SpringMVC是Spring開發的一套MVC架構,更靈活更好用,SSM框架取中間值,既沒有SSH臃腫,也沒有SpringMVC簡化,屬于中間級別的,在配置過程和使用過程中更能編寫和理解。MyBatis框架取代Hibernate框架是因為它更靈活,不需要完全在框架里操作,它在數據操作上可以寫出更靈活的代碼,它的性能也比Hibernate框架更穩定。總的來說,使用SSM框架是通過綜合考慮而使用的,網上有很多的使用教程和心得體會,而且SSM又是這么的流行,用SSM框架開發是順其自然的。
2.2?B/S結構介紹??
在早期,一些使用HTML語言編寫的文件,再集合一些其它資源文件就可以組成一個最簡單的Web程序,了解了Web程序也需要了解Web站點,它們之間的關系就是一個或者多個Web程序可以放在Internet上的一個Web站點(Web服務器)中進行使用。可以說Web應用程序的開發也帶動了B/S這種網絡結構模式的興起。B是Brower(瀏覽器)的首字母,S是Server(服務器)的首字母,兩個首字母進行組合就成了網絡結構模式的簡稱B/S。由于這種結構模式通過安裝在客戶端的瀏覽器進行服務器的訪問,可以把程序的核心功能安排在服務器中進行處理,給程序的開發,后期使用和維護省去了許多工作。圖2.1展示的就是使用這種架構開發的程序的工作原理。
圖2.1 B/S架構的工作原理圖
2.3 Mysql數據庫介紹
開發的程序面向用戶的只是程序的功能界面,讓用戶操作程序界面的各個功能,那么很多人就會問,用戶使用程序功能生成的數據信息放在哪里的?這個就需要涉及到數據庫的知識了,一般來說,程序開發通常就會對常用數據存儲工具的特點進行分析比對,比如Mysql數據庫的特點與優勢,Access數據庫的特點與優勢,Sqlserver數據庫的特點與優勢等,最終看哪個數據庫與需要開發的程序比較匹配,也符合程序功能運行需要的數據存儲要求,比如,需要開發商業級別的程序,存儲的數據對數據庫要求較高,可以選用Oracle,如果只是比較簡單的程序,對數據存儲沒有過多要求,可以選用微軟旗下的Access,當開發程序要求數據庫占用空間小,并能滿足程序數據存儲要求時,就可以考慮Oracle公司從瑞典MySQL AB公司在很早之前就收購過一個關系型數據庫,它是現在的Mysql數據庫。在數據庫工具里面它是最受認可的其中一個應用軟件。需要說明的信息就是,本程序的開發就運用到了此數據庫。它將程序數據通過使用不同的數據表格進行保存,在增加了程序數據的存儲速度的時候,也提高了數據庫的靈活性。?圖2.2展示的就是MySQL的架構圖。
圖2.2 MySQL數據庫架構圖
3 系統分析
當用戶確定開發一款程序時,是需要遵循下面的順序進行工作,概括為:系統分析-->系統設計-->系統開發-->系統測試,無論這個過程是否有變更或者迭代,都是按照這樣的順序開展工作的。系統分析就是分析系統需要做什么的問題,主要目的就是確定系統的功能,這也為接下來的工作做了一個好的開端。
3.1?系統可行性分析
開發一款程序軟件不僅需要時間,也需要人力,物力資源。而進行可行性分析這個環節就是解決用戶這方面的疑問,看看程序在當前的條件下是否可以進行開發。
3.1.1 技術可行性分析
此程序選用的開發語言是Java,這種編程語言有著豐富的數據類型,在指令控制語句上也比較完善,更重要的就是對類與對象的大力支持,這些優點為程序開發者提供了技術保障,尤其是現在代碼都逐漸模塊化,有關系統功能開發的源碼在網絡上都公開展示了,所以讓具備一定計算機開發基礎的開發人員獨立開發系統在技術上也逐漸容易。
3.1.2 經濟可行性分析
開發此程序最關鍵的設備就是一臺電腦,無論是學校計算機室配備的電腦,還是自己入學以來購置的筆記本,都是可以符合開發要求的設備,另外在網絡上,學校本已完全覆蓋了校園網,所以在設備以及網絡上無須考慮經濟問題。
3.1.3 運行可行性分析
隨著電腦軟件以及配套硬件的完善升級,當下的計算機環境是一片大好,尤其是計算機已經廣泛普及到家家戶戶,所以計算機設備現在是隨處可見,由于本次開發的程序占有的資源耗費較小,在一般的電腦或筆記本上都能輕松運轉起來。
通過上面的可行性描述,可以從經濟,技術,運行方面解決程序開發是否可行的問題。因此可以認為該程序軟件是可以進行開發的。
3.2?系統性能分析
系統性能分析也是比較重要的內容,進行系統性能分析就是為了確保系統的功能要能夠在生活中運行使用時,達到規定的指標,因此一個完整的系統軟件,是需要進行系統的性能分析這個步驟的。本次進行性能分析主要從易用性指標,可擴展性指標,系統健壯性指標,系統安全性指標這幾個方面進行分析。
3.2.1 易用性指標
本次程序軟件的開發的目的就是讓使用者可以通過使用該軟件提高信息數據的管理效率,同時該程序軟件也需要針對不同的操作用戶設置對應的功能,因此,此程序的操作流程應該盡量與用戶日常操作軟件的行為習慣相貼合,另外,程序軟件的設計與開發也應考慮非計算機專業用戶的計算機操作水平,要讓大部分使用者都可以輕松操作程序提供的各個功能。
3.2.2 可擴展性指標
當前需要開發的程序軟件是根據當下的用戶需求進行設計開發的,但是隨著時間的推移,社會大環境的改變,開發出的程序也是需要與時俱進的,需要根據用戶不斷變換的需求進行相應的功能內容的擴展,需要注意的就是,當對成型的程序進行功能模塊新增時,仍然需要保證程序原有架構以及功能不能受到影響,新增的功能模塊在系統中也能夠運行正常,該指標達標也就可以保證此程序是可以在滿足信息管理要求下,從容應對市場環境的變化。
3.2.3 健壯性指標
程序軟件的開發就是為了投入使用時,可以一直穩定的處理各種數據信息,程序軟件一旦不穩定,也會給使用者帶來干擾。因此從性能分析的角度,就要要求程序軟件在應對使用者的誤操作,或者是使用者因為各種原因,填寫有誤的數據等情況時,程序要一直保持穩定,并能夠正常讓使用者進行使用。當程序的某個功能模塊出現異常時,程序的其它功能模塊也要能夠確保正常使用。程序的健壯性指標達標可以讓使用者產生良好的用戶體驗。
3.2.4 安全性指標
程序軟件的安全問題是首要問題,畢竟程序對應數據庫里面存放的數據信息是龐大的,里面也包括了許多重要的個人信息,這就對程序要具備一個完善的安全機制提出了要求。因此程序必須要設置登錄功能用以進行用戶身份的檢查,以及身份和權限的匹配,通過對不同用戶身份進行功能約束,絕不容忍用戶越權操作程序。另外,也需要時刻防范計算機病毒,還有黑客,通過采取針對性的辦法進行安全應對,確保程序時刻處于安全的環境,讓使用者放心使用。
3.3?系統流程分析
3.3.1 操作流程分析
程序上交給用戶進行使用時,需要提供程序的操作流程圖(如圖3.1所示),這樣便于用戶容易理解程序的具體工作步驟,現如今程序的操作流程都有一個大致的標準,即先通過登錄頁面提交登錄數據,通過程序驗證正確之后,用戶才能在程序功能操作區頁面操作對應的功能。
圖3.1?程序操作流程圖
3.3.2 登錄流程分析
在這個部分,需要對程序的登錄功能模塊的運行流程(如圖3.2所示),進行單獨說明。程序設置登錄模塊也是為了安全起見,讓用戶使用放心,登錄模塊主要就是讓用戶提交登錄信息,程序進行數據驗證,驗證通過的用戶才能夠成功登錄程序。
圖3.2 程序登錄流程圖
3.3.3 信息添加流程分析
程序的添加功能就是提供給操作者錄入信息的功能,不管是涉及到用戶信息添加,還是其它功能模塊涉及到的信息添加,程序的信息添加流程(如圖3.3所示)都是一致的。程序都是先對操作者錄入的數據進行判定,這個判定規則是一段提前編寫完成的程序代碼,當程序判定數據符合要求時,才會把操作者錄入的數據登記在數據表里面,比如添加的用戶信息,就會把新添加的用戶信息寫入用戶信息的數據表文件里面。
圖3.3?信息添加流程圖
3.3.4 信息刪除流程分析
當從程序里面刪除某種無效數據時,遵循程序的信息刪除流程(如圖3.4所示),先要選中操作者需要刪除的數據,程序為了預防操作者誤刪信息,也會進行提示,當操作者真正確定要刪選中的信息時,該信息就會從數據庫中被永久刪除。
圖3.4?信息刪除流程圖
4?系統設計
校園二手物品交易平臺的設計方案比如功能框架的設計,比如數據庫的設計的好壞也就決定了該系統在開發層面是否高效,以及在系統維護層面是否容易維護和升級,因為在系統實現階段是需要考慮用戶的所有需求,要是在設計階段沒有經過全方位考慮,那么系統實現的部分也就無從下手,所以系統設計部分也是至關重要的一個環節,只有根據用戶需求進行細致全面的考慮,才有希望開發出功能健全穩定的程序軟件。
4.1?系統概要設計
本次擬開發的系統為了節約開發成本,也為了后期在維護和升級上的便利性,打算通過瀏覽器來實現系統功能界面的展示,讓程序軟件的主要事務集中在后臺的服務器端處理,前端部分只用處理少量的事務邏輯。下面使用一張圖(如圖4.1所示)來說明程序的工作原理。
圖4.1 程序工作的原理圖
4.2?系統功能結構設計
在分析并得出使用者對程序的功能要求時,就可以進行程序設計了。如圖4.2展示的就是管理員功能結構圖,管理員主要負責填充圖書和其類別信息,并對已填充的數據進行維護,包括修改與刪除,管理員也需要審核老師注冊信息,發布公告信息,管理自助租房信息等。
圖4.2 系統功能結構圖
4.3?數據庫設計
程序功能操作不管是添加,修改,還是刪除等功能產生的數據都是經由數據庫進行數據保存和更新的,所以一個數據庫設計的好壞也是程序是否好壞的判定標準,因為程序的成功,有一半的功勞都是靠數據庫的優秀設計。數據庫一旦設計得良好是可以減輕開發人員的開發負擔的。
4.3.1?數據庫E-R圖設計
這個部分的設計需要使用到E-R圖繪制工具,常用的工具就是Visio工具來繪制E-R模型圖,這款工具不僅可以快速創建需要的E-R模型圖,而且該工具提供的操作界面很簡單,可以短時間內修改繪圖界面的圖形或者是文字的屬性。在繪制E-R模型圖時,要分清楚各個圖形代表的含義,以免繪制出錯,E-R模型圖由長方形(實體),橢圓形(屬性),菱形(關系)這三部分圖形符號組成,繪制期間要區分開來,用準確的圖形符號代表相應的數據元素。
各個實體之間的聯系用下圖的E-R圖表示。繪制的系統E-R圖見圖4.8。
圖4.8 系統E-R圖
4.3.2 數據庫表結構設計
數據庫系統一旦選定之后,需要根據程序要求在數據庫中建立數據庫文件,并在已經完成創建的數據庫文件里面,為程序運行中產生的數據建立對應的數據表格,數據表結構設計就是對創建的數據表格進行字段設計,字段長度設計,字段類型設計等,當數據表格合理設計完成之后,才能正常存儲相關程序運行產生的數據信息。?
序號 | 列名 | 數據類型 | 說明 | 允許空 |
1 | Id | Int | id | 否 |
2 | addtime | Date | 創建時間 | 是 |
3 | refid | Integer | 關聯表id | 是 |
4 | userid | Integer | 用戶id | 是 |
5 | content | longtext | 評論內容 | 是 |
6 | reply | longtext | 回復內容 | 是 |
表4.2交流回復表
序號 | 列名 | 數據類型 | 說明 | 允許空 |
1 | Id | Int | id | 否 |
7 | addtime | Date | 創建時間 | 是 |
8 | biaoti | String | 標題 | 是 |
9 | yonghuming | String | 用戶名 | 是 |
10 | xingming | String | 姓名 | 是 |
11 | huifuneirong | longtext | 回復內容 | 是 |
12 | huifuriqi | date | 回復日期 | 是 |
13 | zhanghao | String | 賬號 | 是 |
14 | shangjiaxingming | String | 商家姓名 | 是 |
表4.3交流信息表
序號 | 列名 | 數據類型 | 說明 | 允許空 |
1 | Id | Int | id | 否 |
15 | addtime | Date | 創建時間 | 是 |
16 | biaoti | String | 標題 | 是 |
17 | zhanghao | String | 賬號 | 是 |
18 | shangjiaxingming | String | 商家姓名 | 是 |
19 | zixunneirong | longtext | 咨詢內容 | 是 |
20 | riqi | date | 日期 | 是 |
21 | yonghuming | String | 用戶名 | 是 |
22 | xingming | String | 姓名 | 是 |
表4.4留言板表
序號 | 列名 | 數據類型 | 說明 | 允許空 |
1 | Id | Int | id | 否 |
23 | addtime | Date | 創建時間 | 是 |
24 | userid | Integer | 留言人id | 是 |
25 | username | String | 用戶名 | 是 |
26 | content | longtext | 留言內容 | 是 |
27 | reply | longtext | 回復內容 | 是 |
表4.5校園資訊表
序號 | 列名 | 數據類型 | 說明 | 允許空 |
1 | Id | Int | id | 否 |
28 | addtime | Date | 創建時間 | 是 |
29 | title | String | 標題 | 是 |
30 | introduction | longtext | 簡介 | 是 |
31 | picture | String | 圖片 | 是 |
32 | content | longtext | 內容 | 是 |
表4.6商家表
序號 | 列名 | 數據類型 | 說明 | 允許空 |
1 | Id | Int | id | 否 |
33 | addtime | Date | 創建時間 | 是 |
34 | zhanghao | String | 賬號 | 是 |
35 | mima | String | 密碼 | 是 |
36 | shangjiaxingming | String | 商家姓名 | 是 |
37 | xingbie | String | 性別 | 是 |
38 | touxiang | String | 頭像 | 是 |
39 | shenfenzheng | String | 身份證 | 是 |
40 | lianxidianhua | String | 聯系電話 | 是 |
表4.7商品購買表
序號 | 列名 | 數據類型 | 說明 | 允許空 |
1 | Id | Int | id | 否 |
41 | addtime | Date | 創建時間 | 是 |
42 | dingdanbianhao | String | 訂單編號 | 是 |
43 | shangpinmingcheng | String | 商品名稱 | 是 |
44 | shangpinleixing | String | 商品類型 | 是 |
45 | zhanghao | String | 賬號 | 是 |
46 | jiage | Integer | 價格 | 是 |
47 | shuliang | Integer | 數量 | 是 |
48 | zongjiage | String | 總價格 | 是 |
49 | goumaiburiqi | date | 購買部日期 | 是 |
50 | yonghuming | String | 用戶名 | 是 |
51 | xingming | String | 姓名 | 是 |
52 | shouji | String | 手機 | 是 |
53 | dizhi | String | 地址 | 是 |
54 | ispay | String | 是否支付 | 是 |
表4.8商品類型表
序號 | 列名 | 數據類型 | 說明 | 允許空 |
1 | Id | Int | id | 否 |
55 | addtime | Date | 創建時間 | 是 |
56 | shangpinleixing | String | 商品類型 | 是 |
表4.9商品求購表
序號 | 列名 | 數據類型 | 說明 | 允許空 |
1 | Id | Int | id | 否 |
57 | name | String | 求購商品 | 是 |
58 | qgrid | String | 求購人 | 是 |
59 | phoen | String | 聯系方式 | 是 |
60 | money | BigDecimal | 期望價格 | 是 |
表4.10商品信息表
序號 | 列名 | 數據類型 | 說明 | 允許空 |
1 | Id | Int | id | 否 |
61 | addtime | Date | 創建時間 | 是 |
62 | shangpinmingcheng | String | 商品名稱 | 是 |
63 | shangpinleixing | String | 商品類型 | 是 |
64 | tupian | String | 圖片 | 是 |
65 | jiage | Integer | 價格 | 是 |
66 | shuliang | Integer | 數量 | 是 |
67 | faburiqi | date | 發布日期 | 是 |
68 | shangpinxiangqing | longtext | 商品詳情 | 是 |
69 | zhanghao | String | 賬號 | 是 |
70 | shangjiaxingming | String | 商家姓名 | 是 |
71 | lianxidianhua | String | 聯系電話 | 是 |
72 | clicktime | datetime | 最近點擊時間 | 是 |
73 | clicknum | Integer | 點擊次數 | 是 |
表4.11收藏表表
序號 | 列名 | 數據類型 | 說明 | 允許空 |
1 | Id | Int | id | 否 |
74 | addtime | Date | 創建時間 | 是 |
75 | userid | Integer | 用戶id | 是 |
76 | refid | Integer | 收藏id | 是 |
77 | tablename | String | 表名 | 是 |
78 | name | String | 收藏名稱 | 是 |
79 | picture | String | 收藏圖片 | 是 |
表4.12用戶表
序號 | 列名 | 數據類型 | 說明 | 允許空 |
1 | Id | Int | id | 否 |
80 | addtime | Date | 創建時間 | 是 |
81 | yonghuming | String | 用戶名 | 是 |
82 | mima | String | 密碼 | 是 |
83 | xingming | String | 姓名 | 是 |
84 | xingbie | String | 性別 | 是 |
85 | touxiang | String | 頭像 | 是 |
86 | shenfenzheng | String | 身份證 | 是 |
87 | shouji | String | 手機 | 是 |
表4.13用戶表表
序號 | 列名 | 數據類型 | 說明 | 允許空 |
1 | Id | Int | id | 否 |
88 | username | String | 用戶名 | 是 |
89 | password | String | 密碼 | 是 |
90 | role | String | 角色 | 是 |
91 | addtime | Date | 新增時間 | 是 |
5?系統實現
系統實現部分就是將系統分析,系統設計部分的內容通過編碼進行功能實現,以一個實際應用系統的形式展示系統分析與系統設計的結果。前面提到的系統分析,系統設計最主要還是進行功能,系統操作邏輯的設計,也包括了存儲數據的數據庫方面的設計等內容,系統實現就是一個最終的實施階段,將前面的設計成果進行物理轉化,最終出具可以運用于實際的軟件系統。
5.1用戶信息管理
如圖5.1顯示的就是用戶信息管理頁面,此頁面提供給管理員的功能有:用戶信息的查詢管理,可以刪除用戶信息、修改用戶信息、新增用戶信息,
還進行了對客戶名稱的模糊查詢的條件
圖5.1 用戶信息管理頁面
5.2 商家信息管理
如圖5.2顯示的就是商家信息管理頁面,此頁面提供給管理員的功能有:查看已發布的商家信息數據,修改商家信息,商家信息作廢,即可刪除。
圖5.2 商家信息管理頁面
5.3商品類型管理
如圖5.3顯示的就是商品類型管理頁面,此頁面提供給管理員的功能有:根據商品類型進行條件查詢,還可以對商品類型進行新增、修改、查詢操作等等。
圖5.3 商品類型管理頁面
5.1商品購買管理
如圖5.4顯示的就是商品購買管理頁面,此頁面提供給管理員的功能有:根據商品購買進行新增、修改、查詢操作等等。
圖5.4 商品購買管理頁面
6?系統測試
程序軟件一旦被開發完成之后,在真正投入日常生活中進行運行使用之前,是必須要經歷測試這一個重要的操作環節,因為開發期間注重的是每個單獨功能模塊的開發,盡管每次開發完成一個單獨功能模塊時,會通過單元測試進行檢驗,檢驗合格才會讓程序員繼續開發下一個子功能模塊,以此類推,當程序員完成所有的系統子功能模塊的開發時,這個時候就需要引進系統測試,系統測試就是把所有的子功能模塊集成到一起,構建成整個系統,在指定的運行環境下進行運行,主要就是測試系統的所有功能模塊在一起是否良好運行,一旦程序軟件通過了系統測試這一環節,就意味著它可以進行最終的驗收測試了,這個測試步驟的操作用戶是程序面向的客戶或者是最終用戶了。
6.1 系統測試的特點
系統測試也是為了保證系統正式上線后,可以穩定正常運行,給使用者帶來便利。系統測試也有其對應的特點:
(1)系統測試它包括了端到端的完整測試;
(2)系統測試也對程序軟件的架構方面,程序軟件的業務需求等方面進行了測試;
(3)系統測試一旦采用正確的方法進行,這將減少程序正式上線之后產生的各種錯誤;
系統測試一般都是在跟生產環境相似的環境當中運行,程序的功能比如添加功能,刪除功能,修改功能等都會使用同樣的數據在新系統和現有系統中進行比較,這樣做讓用戶對新系統中的添加,修改,刪除等功能能夠更好地理解,也能提升用戶對新系統的滿意度。
6.2 系統功能測試
6.2.1 登錄功能測試
要保障程序安全,首先就要從入門門檻抓起,所以程序的登錄模塊也是很重要的程序入門門檻,務必要保證此功能可以安全運行使用。此次對程序登錄模塊測試選擇管理員角色進行測試(如表6.1所示)。
表6.1 登錄功能測試數據表
登錄賬號 | 登錄密碼 | 操作人 | 最終結果 |
abc | abc | 管理員 | 登錄進入程序 |
123 | abc | 管理員 | 彈出錯誤登錄提示 |
abc | 123 | 管理員 | 彈出錯誤登錄提示 |
6.2.2 添加類別功能測試
校園二手物品交易平臺需要管理員添加類別信息,類別名稱是程序設置的必填數據,而且添加的類別名稱也不能夠是數據庫里面的存在的數據。對添加類別功能測試時,測試數據在下表展示。
表6.2 添加類別功能測試數據表
類別名稱 | 反饋結果 |
類別1 | 失敗 |
類別2 | 失敗 |
類別3 | 成功 |
6.3 測試結果分析
程序經過了上述的測試環節,可以得出的測試結論有:
第一點,可以確定開發出來的校園二手物品交易平臺是符合同類型系統的要求;
第二點,用戶要求校園二手物品交易平臺需要具備的功能都已開發完成并能夠正常使用;
第三點,校園二手物品交易平臺界面簡潔美觀,操作流程清晰明了;
第四點,校園二手物品交易平臺的安全性,以及運行性能符合開發要求。
至此,校園二手物品交易平臺可以確保所有功能能夠按照預期目標進行運行,可以正式投入生活中運行使用!
結 ?論
通過對校園二手物品交易平臺的開發,讓我深刻明白開發一個程序軟件需要經歷的流程,當確定要開發一個校園二手物品交易平臺的程序時,我在開發期間,對其功能進行合理的需求分析,然后才是程序軟件的功能的框架設計,數據庫的實體與數據表設計,程序軟件的功能詳細界面實現,以及程序的功能測試等進行全方位的細致考慮,雖然在此過程中,各個環節都遇到了大大小小的困難,但是通過對這些問題進行反復的分析,深入的思考,借助各種相關文獻資料提供的方法與解決思路成功解決面臨的各個問題,最后成功的讓我開發的校園二手物品交易平臺得以正常運行。
校園二手物品交易平臺在功能上面是基本可以滿足用戶對系統的操作,但是這個程序軟件也有許多方面是不足的,因此,在下一個時間階段,有幾點需要改進的地方需要提出來,它們分別是:
(1)操作頁面可以滿足用戶簡易操作的要求,但是在頁面多樣化設計層面上需要把一些比較豐富的設計結構考慮進來。
(2)程序軟件的總體安全性能需要優化,例如程序的退出安全性,以及程序的并發性等問題都需要進行安全性升級,讓開發的校園二手物品交易平臺與現實中的相關網站更貼合。
(3)需要對程序的數據結構方面,程序的代碼方面等進行優化,讓運行起來的程序可以保持穩定運行,也讓程序能夠保證短時間內處理相關事務,節省處理事務的時間,提高事務處理的效率,同時對服務器上資源占用的比例進行降低。
校園二手物品交易平臺的開發一方面是對自身專業知識技能進行最終考核,另一方面也是讓自己學會獨立解決程序開發過程中所遇到的問題,掌握將理論知識運用于程序開發實踐的方法。校園二手物品交易平臺的開發最終目標就是讓系統更具人性化,同時在邏輯設計上,讓系統能夠更加的嚴謹。
致??謝
大學期間的學習時光對于我來說是美好而短暫的,在這期間我也接觸了許多可愛的大學同學們,以及兢兢業業教學的老師們,在我的畢業論文即將完成之際,我想對那些曾經給予我支持,幫助,還有鼓勵的同學和老師以及家人們表達我內心的無比感激之情。
首先,感謝給予我論文指導的指導老師,從開題報告,任務書,論文大綱的編寫與系統的功能框架設計,到最終的畢業論文,都是指導老師全程參與的悉心指導和幫忙,才能夠讓我的畢業論文可以符合學院要求編寫完成。我的指導老師一絲不茍的教學精神以及在學術上的嚴謹作風,這些優點是值得我不斷去努力學習的。
其次,感謝大學同學的陪伴與幫助,在我獨立編寫畢業論文期間,大學同學的鼓勵與耐心的幫助使得我少走很多彎路,節省畢業論文的編寫時間,也讓我有更多精力去完善我開發的系統。
最后,感謝我最親密的家人帶給我的包容和關愛,我能夠安心學習也是來源于家人們對我的無微不至的照顧,這樣我才可以順順利利完成我的大學學業。
畢業倒計時之際,希望在今后的工作中,在今后的生活中,我會一直謹記老師們帶給我的孜孜不倦的教誨,并通過不懈的努力和追求來改變自己,以此報答那些曾支持過以及幫助過我的人!
參考文獻
[1]寧昭銥,陳靜,張立斌.一個校園二手物品交易平臺平臺的設計[J].科技經濟導刊,2017(01):32+25.
[2]李鑫.淺談信息化校園二手物品交易平臺的設計與實現[J].民營科技,2016(11):74.
[3]宋麗娜.基于JSP的Web開發中文亂碼問題的研究與解決[J].電子技術,2015,42(11):5-7.
[4]汪君宇.基于JSP的Web應用軟件開發技術分析[J].科技創新與應用,2018(16):158-160.
[5]趙鋼.JSP Servlet+EJB的Web模式應用研究[J].電子設計工程,2016,21(13):47-49.
[6]肖英.解決JSP/Servlet開發中的中文亂碼問題[J].科技傳播,2017,(1)11-25.
[7]朱鈞.基于角色的jsp通用權限系統設計與實現[D].山東大學,2014.
[8]康牧.JSP動態網站開發實用教程[M].清華大學出版社,2014.
[9]王建國.數據庫設計在網站開發中的應用[J].山東農業工程學院學報,2017,34(04):158-159+164.
[10]張知青.基于關系數據庫的查詢方法及優化技術分析[J].煤炭技術,2015,31(05):218-220.
[11]陳志譽.Java工具及其調度方法研究[D].華南理工大學,2018.
[12]張孝祥,徐明華.JAVA基礎與案例開發詳解[M].清華大學出版社,2014.
[13]劉亞賓.精通Eclipse--JAVA技術大系[M].電子工業出版社,2015.
[14]曾志明.網站開發技術的比較研究[J].電腦知識與技術,2015,6(05):1075-1078.
[15]衛紅春.信息系統分析與設計[M].北京:清華大學出版社,2014.
[16]于萬波.網站開發與應用案例教程[M].清華大學出版社,2013.
[17]黎連業,王華,李淑春.軟件測試與測試技術[M].清華大學出版社,2014.
[18]Xin-hua YOU. Brief Discuss the Application of Object-oriented in Java Language Programming Course[A]. Advanced Science and Industry Research Center.Proceedings of 2018 3rd International Conference on Automation, Mechanical and Electrical Engineering (AMEE 2018)[C].Advanced Science and Industry Research Center:Science and Engineering Research Center,2018:5.
[19]Menglin Liu. Design and Research of Batch Query System Based on Java[A]. Research Institute of Management Science and Industrial Engineering.Proceedings of 2018 4th World Conference on Control, Electronics and Computer Engineering (WCCECE 2018)[C].Research Institute of Management Science and Industrial Engineering:計算機科學與電子技術國際學會(Computer Science and Electronic Technology International Society),2018:5.
核心代碼展示
/*** 公告通知* 后端接口* @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);}}