mysql基于SpringBoot的“1818小酒馆”商城网站的设计与实现毕业设计源码192004
目 ?錄
摘要
1 緒論
1.1研究背景與意義
1.2開發現狀
1.3系統開發技術的特色
1.4論文結構與章節安排
2?1818小酒館商城分析
2.1 可行性分析
2.2 系統流程分析
2.2.1數據增加流程
2.3.2數據修改流程
2.3.3數據刪除流程
2.3 系統功能分析
2.3.1 功能性分析
2.3.2 非功能性分析
2.4 系統用例分析
2.5本章小結
3 1818小酒館商城總體設計
3.1 系統架構設計
3.2 系統功能模塊設計
3.2.1整體功能模塊設計
3.2.2用戶模塊設計
3.2.3評論管理模塊設計
3.2.3商城管理模塊設計
3.2.5訂單管理模塊設計
3.3 數據庫設計
3.3.1 數據庫概念結構設計
3.3.2 數據庫邏輯結構設計
3.4本章小結
4?1818小酒館商城詳細設計與實現
4.1用戶功能模塊
4.1.1 前臺首頁界面
4.1.2 用戶登錄界面
4.1.3用戶注冊界面 23
4.1.4商品詳情界面 24
4.1.5 收貨地址界面
4.1.6 我的訂單界面
4.2管理員功能模塊
4.2.1 用戶管理界面
4.2.2 酒品資訊界面
4.2.3 站點管理界面
4.2.4 商城管理界面
4.2.5更多管理界面
5系統測試 31
5.1測試的目的 31
5.2 功能測試 31
5.3 性能測試 32
結論 33
參考文獻 34
致??謝
摘要
信息化社會內需要與之針對性的信息獲取途徑,但是途徑的擴展基本上為人們所努力的方向,由于站在的角度存在偏差,人們經常能夠獲得不同類型信息,這也是技術最為難以攻克的課題。針對1818小酒館商城等問題,對1818小酒館商城進行研究分析,然后開發設計出1818小酒館商城以解決問題。
1818小酒館商城主要功能模塊包括用戶管理、酒品商城、分類列表、訂單列表、訂單信息、退單申請,采取面對對象的開發模式進行軟件的開發和硬體的架設,能很好的滿足實際使用的需求,完善了對應的軟體架設以及程序編碼的工作,采取MySQL作為后臺數據的主要存儲單元,采用springboot框架、Java技術、Ajax技術進行業務系統的編碼及其開發,實現了本系統的全部功能。本次報告,首先分析了研究的背景、作用、意義,為研究工作的合理性打下了基礎。針對1818小酒館商城的各項需求以及技術問題進行分析,證明了系統的必要性和技術可行性,然后對設計系統需要使用的技術軟件以及設計思想做了基本的介紹,最后來實現1818小酒館商城和部署運行使用它。
關鍵詞:springboot技術;MYSQL;1818小酒館商城
Abstract
In the information society, there is a need for targeted information access, but the expansion of access is basically the direction of people's efforts. Due to the deviation of the perspective, people can often obtain different types of information, which is also the most difficult subject for technology to overcome. Aiming at the problems of "1818 tavern" mall, this paper studies and analyzes the "1818 tavern" mall, and then develops and designs the "1818 tavern" mall to solve the problems.
The main functional modules of "1818 tavern" mall include user management, wine mall, classification list, order list, order information and refund application. 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 erection and program coding, take MySQL as the main storage unit of background data, and adopt springboot framework Java technology and Ajax technology encode and develop the business system, and realize all the functions of the system. 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 "1818 tavern" mall, proves the necessity and technical feasibility of the system, and then makes a basic introduction to the technical software and design ideas needed to design the system. Finally, it realizes the "1818 tavern" mall and deploys it.
Keywords:Springboot technology; MYSQL; "1818 tavern" mall
1 緒論
1.1研究背景與意義
近年來,隨著移動互聯網的迅速發展,除了傳統的網頁瀏覽、資料搜索、發送電子郵件等基本應用外,國內大多數網民已經漸漸習慣了通過網絡接受購物、通訊、旅游、娛樂等傳統功能之外的新服務模式,其中利用網絡購物也日益成為人們生活中一種重要的購物形式。互聯網的快速發展為1818小酒館商城發展提供了強大保障和支撐,另外,在線網上購物的外部環境也逐漸得到了改善,移動互聯網終端(手機、平板)使得網民結構變得越來越大眾化,網上支付結算手段越來越便捷,快遞物流越來越暢通,相應的法規政策也越來越完善。現如今,在線網上購物對人們的吸引力越來越大,人們對網上購物的看法也從一開始的不了解到了解,從懷疑到逐漸信任,從拒絕到慢慢接受并習慣。在線網上購物的觀念已經越來越深入人心,促使人們在線網上購物的主要因素有:
(1)方便快捷。網上購物可全天 24 小時營業,人們不需要奔赴到商店就可進行購物,購買的美酒也可以直接送達到家。這樣就使得消費者即使足不出戶,也能買到來自世界各地得喜愛美酒。
(2)信息量大。相比于傳統的購物的方式,電子商務所能容納的信息量非常大,既包括現實產品也包括虛擬產品。另外,還可以提供一些比較特殊的產品,既能保護消費者的個人隱私,又能滿足消費者不同的心理需求。
(3)私密性強。消費者有時候在購買一些不愿意讓別人知道的美酒時,利用網上購物,賣家和快遞物流都可以保護好用戶的隱私,這樣就可以避免一些不必要的麻煩。
1.2開發現狀
由于近年來在線銷售行業的興起,也了解了一些相關信息。在中國,以前的銷售只是傳統銷售,而在線銷售似乎滿足了市場需求。到目前為止,有一些家喻戶曉的名字,如淘寶和天貓。然而,這種在線銷售也有一些缺點:用戶不能在下訂單并付款后立即提貨,他們還應該考慮貨物是否受損。該系統是根據美酒網絡上的銷售情況開發的。
經過幾年的發展,許多被消費者認可的網上購物中心已經出現在國內外。這些網上購物中心的內容是多樣化的,它們包含的功能相對完善,包括注冊用戶、搜索美酒、管理訂單、介紹美酒細節以及在線留言。如今,互聯網的廣泛使用在一定程度上導致了國內外在線購物中心的發展,只要企業通過這個平臺在線打字,就可以隨時管理系統的內容。通過展示美酒內容和發布公告,鼓勵消費者購買和進行在線交易。
1.3系統開發技術的特色
(1)1818小酒館商城中的web后臺管理中的后端不再使用古老的jsp+javabean+servlet技術,而是使用當前主流的springboot框架,它減少java配置代碼,簡化編程代碼,目前springboot框架也是很多企業選擇的框架之一。
(2)1818小酒館商城中的web后臺管理中的前端使用的是JavaScript框架,它配合ajax[8]和jquery可以美化頁面設計。
(3)1818小酒館商城中數據庫用的mysql5.7,它執行效率高。
1.4論文結構與章節安排
論文將分層次經行編排,除去論文摘要致謝文獻參考部分,正文部分還會對網站需求做出分析,以及闡述大體的設計和實現的功能,最后羅列部分調測記錄,論文主要架構如下:
第一章:引言。第一章主要介紹了課題研究的背景,系統開發的現狀和本文的開發現狀與主要工作。
第二章:系統需求分析。第二章主要從系統的用戶、功能等方面進行需求分析。
第三章:系統設計。第三章主要對系統框架、系統功能模塊、數據庫進行功能設計。
第四章:系統實現。第四章主要介紹了系統框架搭建、系統界面的實現。
第五章:系統測試。第五章主要對系統的部分界面進行測試并對主要功能進行測試
第六章:總結。
2?1818小酒館商城分析
系統分析是開發一個項目的先決條件,通過系統分析可以很好的了解系統的主體用戶的基本需求情況,同時這也是項目的開發的原因。進而對系統開發進行可行性分析,通常包括技術可行性、經濟可行性等,可行性分析同時也是從項目整體角度進行的分析。然后就是對項目的具體需求進行分析,分析的手段一般都是通過用戶的用例圖來實現。下面是詳細的介紹。
2.1 可行性分析
(1)經濟可行性:
在項目上使用的工具大部分都是是當下流行開源免費的,所以在開發前期,開發時用于項目的經費將會大大降低,不會讓開發該軟件在項目啟動期受到經費的影響,所以經濟上還是可行的。盡量用最少的花費去滿足用戶的需求。省下經費用于人工費,以及設備費用。將在無紙化,高效率的道路上越走越遠。
所以經濟可行性沒有問題。
(2)操作可行性:
此次項目設計參考了幾個該模式下網站的開發案例,對他們的操作界面分析,將眾多案例結合在一起,突出以人為本簡化操作,所以具有基本計算機知識的人都會操作本項目。
因此操作可行性也沒有問題。
(3)技術可行性:
技術可行性指的是對于搭建框架的可行性,以及有更優秀的技術出現時系統的技術更新換代的納新性如何,開發時間成本費用比如何。
現有的springboot技術能夠迎合所有電子商務系統的搭建。開發這個1818小酒館商城的時候我采用了springboot+MYSQL用以運行整體程序。
綜上所述技術可行性也沒有問題。
(4)法律可行性:
從開發者角度來看,springboot和MYSQL是網上開源且免費的,在知識產權方面不會產生任何法律糾紛。
從用戶使用角度來看,只要不再系統上販賣違禁品,對系統做出條約協議,杜絕非法支付即可。
綜上所述法律可行性也沒有問題。
2.2系統流程分析
業務流程是用一些特定的符合和線條來進行演示用戶在使用系統時的過程,在進行系統分析的時候,業務流程可以幫助開發人員更好的理解業務,發現錯誤,完善系統。
2.2.1 數據增加流程
用戶成功登入系統后就能夠實現增加數據的操作,增加數據的編號是特定的,系統生成,用戶不能隨意填寫,除了編號以外,其他增加信息用戶自己填寫,填寫后的信息經過系統驗證,驗證合法通過就顯示增加數據成功了,相反的話,就沒有增加成功,圖2-1顯示的就是在增加數據時的流程。
?
圖2-1 ?數據增加流程圖
2.2.2 數據修改流程
數據修改時的流程和上面介紹的數據增加時的流程差不多,如圖2-2所示。
?
圖2-2 ?數據修改流程圖
2.2.3 數據刪除流程
如果系統里面存在一些沒有用的數據的話,相關的管理人員還可以對這些數據進行刪除,圖2-3就是數據刪除時的流程圖。
?
圖2-3 ?數據刪除流程圖
2.3?系統功能分析
2.3.1 功能性分析
按照1818小酒館商城的角色,我劃分為了普通用戶管理模塊和管理員管理模塊這兩大部分。
普通用戶管理模塊:
(1)用戶注冊登錄:用戶注冊為用戶并登錄1818小酒館商城;普通用戶對個人信息的增刪改查,比如個人資料,密碼修改。
(2)查看1818小酒館商城的首頁信息:1818小酒館商城的首頁信息包含了首頁、酒品資訊、公告消息酒品商城、我的收藏、我的賬戶、個人中心等。
(3)公告消息:當用戶當點“公告消息”這一菜單,會顯示管理員在后臺發布的所有的公告消息,可以查看詳情;
(4)酒品資訊:當用戶點擊“酒品資訊”這一菜單,會顯示管理員在后臺發布的所有的酒品資訊,可以查看詳情,進行收藏、點贊、評論等;
(5)我的收藏:在“我的”下可以查看管理“我的收藏”信息,可以查看收藏,也可以對不喜歡的信息進行刪除收藏;
管理員管理模塊:
(1)登錄:管理員的賬號是在數據表表中直接設置生成的,不需要進行注冊;
(2)站點管理:當點擊“站點管理”這一菜單的時候,會出現輪播圖+公告欄兩個子菜單,可以對這兩個模塊進行增刪改查操作;
(3)用戶管理:當點擊“用戶管理”這一菜單的時候,會出現管理員+普通用戶兩個子菜單,可以對這兩個模塊進行增刪改查操作;
(4)內容管理:當點擊“內容管理”這一菜單的時候,會出現酒品資訊+酒品資訊分類這兩個子菜單,能夠對用戶在前臺提交的酒品資訊進行管理,同時對前臺展示的酒品商城進行增刪改查操作;
(5)商城管理:當點擊“商城管理”這一菜單的時候,會出現酒品商城+分類列表+訂單列表這三個子菜單,能夠對這三個模塊進行增刪改查操作;
(6)更多管理:當點擊“更多管理”這一菜單的時候,會出現訂單列表+退單申請這兩個子菜單,能夠對這兩個模塊進行增刪改查操作;
2.3.2 非功能性分析
1818小酒館商城的非功能性需求比如1818小酒館商城的安全性怎么樣,可靠性怎么樣,性能怎么樣,可拓展性怎么樣等。具體可以表示在如下3-1表格中:
表3-11818小酒館商城非功能需求表
| 安全性 | 主要指1818小酒館商城數據庫的安裝,數據庫的使用和密碼的設定必須合乎規范。 |
| 可靠性 | 可靠性是指1818小酒館商城能夠安裝用戶的指示進行操作,經過測試,可靠性90%以上。 |
| 性能 | 性能是影響1818小酒館商城占據市場的必要條件,所以性能最好要佳才好。 |
| 可擴展性 | 比如數據庫預留多個屬性,比如接口的使用等確保了系統的非功能性需求。 |
| 易用性 | 用戶只要跟著1818小酒館商城?的頁面展示內容進行操作,就可以了。 |
| 可維護性 | 1818小酒館商城?開發的可維護性是非常重要的,經過測試,可維護性沒有問題 |
2.4?系統用例分析
通過2.3功能的分析,得出了本1818小酒館商城的用例圖:
用戶角色用例如圖2-3所示。
?
圖2-3?1818小酒館商城普通用戶角色用例圖
web后臺管理上的管理員是維護整個1818小酒館商城中所有數據信息的。管理員角色用例如圖2-4所示。
?
圖2-5?1818小酒館商城管理員角色用例圖
2.5本章小結
本章主要通過對1818小酒館商城?的可行性分析、流程分析、功能需求分析、系統用例分析,確定整個1818小酒館商城?要實現的功能。同時也為1818小酒館商城?的代碼實現和測試提供了標準。
3 1818小酒館商城?總體設計
本章主要討論的內容包括1818小酒館商城的功能模塊設計、數據庫系統設計。
3.1 系統架構設計
本1818小酒館商城?從架構上分為三層:表現層(UI)、業務邏輯層(BLL)以及數據層(DL)。
圖3-11818小酒館商城架構設計圖
?
表現層(UI):又稱UI層,主要完成本1818小酒館商城的UI交互功能,一個良好的UI可以打打提高用戶的用戶體驗,增強用戶使用本1818小酒館商城時的舒適度。UI的界面設計也要適應不同版本的1818小酒館商城?以及不同尺寸的分辨率,以做到良好的兼容性。UI交互功能要求合理,用戶進行交互操作時必須要得到與之相符的交互結果,這就要求表現層要與業務邏輯層進行良好的對接。
業務邏輯層(BLL):主要完成本1818小酒館商城的數據處理功能。用戶從表現層傳輸過來的數據經過業務邏輯層進行處理交付給數據層,系統從數據層讀取的數據經過業務邏輯層進行處理交付給表現層。
數據層(DL):由于本1818小酒館商城的數據是放在服務端的mysql數據庫中,因此本屬于服務層的部分可以直接整合在業務邏輯層中,所以數據層中只有數據庫,其主要完成本1818小酒館商城?的數據存儲和管理功能。
3.2?系統功能模塊設計
3.2.1整體功能模塊設計
在上一章節中主要對系統的功能性需求和非功能性需求進行分析,并且根據需求分析了本1818小酒館商城中的用例。那么接下來就要開始對本1818小酒館商城的架構、主要功能和數據庫開始進行設計。1818小酒館商城根據前面章節的需求分析得出,其總體設計模塊圖如圖3-2所示。
圖3-2?1818小酒館商城功能模塊圖
?
3.2.2用戶模塊設計
后臺管理者能夠實現對前臺注冊的用戶增刪改查操作,用戶模塊結構圖如下圖:
?
圖3-3用戶模塊結構圖
3.2.3評論管理模塊設計
1818小酒館商城是一個交流性質的公開平臺,用戶用戶和管理人員用戶可以對平臺上信息進行評論,增加用戶之間的互動性。但是同時也為了更好的規范評論的內容,給予管理員刪除不合適的言論的功能,所以需要專門設計一個評論管理模塊,具體的結構圖如下:
?
圖3-4評論模塊結構圖
3.2.4商城管理模塊設計
1818小酒館商城是中需要存儲不少商品信息,其模塊功能結構,具體的結構圖如下:
?
圖3-5商城模塊結構圖
3.2.5訂單管理模塊設計
1818小酒館商城最重要的一個功能就是購買,其模塊功能結構,具體的結構圖如下:
?
圖3-5訂單模塊結構圖
3.3 數據庫設計
數據庫設計一般包括需求分析、概念模型設計、數據庫表建立三大過程,其中需求分析前面章節已經闡述,概念模型設計有概念模型和邏輯結構設計兩部分。
3.3.1 數據庫概念結構設計
下面是整個1818小酒館商城?中主要的數據庫表總E-R實體關系圖。
圖3-6?1818小酒館商城?總E-R關系圖
?
下面根據1818小酒館商城?的數據庫總E-R關系圖可以得出1818小酒館商城需要很多E-R圖,在此羅列出來一些主要的數據庫E-R模型圖。
?
圖3-7普通用戶E-R關系圖
?
圖3-8?退單申請E-R關系圖
?
圖3-9商品商城E-R關系圖
?
圖3-10訂單信息E-R關系圖
3.3.2 數據庫邏輯結構設計
通過上一小節中1818小酒館商城?中總E-R關系圖上得出一共需要創建很多個數據表。在此我主要羅列幾個主要的數據庫表結構設計。
ordinary_users表:
| 名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
| ordinary_users_id | int | 11 | 是 | 是 | 普通用戶ID |
| user_name | varchar | 64 | 是 | 否 | 用戶姓名 |
| user_gender | varchar | 64 | 否 | 否 | 用戶性別 |
| user_age | varchar | 64 | 否 | 否 | 用戶年齡 |
| examine_state | varchar | 16 | 是 | 否 | 審核狀態 |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| user_id | int | 11 | 是 | 否 | 用戶ID |
| create_time | datetime | 0 | 是 | 否 | 創建時間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時間 |
| order_information表: | |||||
| 名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
| order_information_id | int | 11 | 是 | 是 | 訂單信息ID |
| order_number | varchar | 64 | 否 | 否 | 訂單編號 |
| wine_name | varchar | 64 | 否 | 否 | 酒品名稱 |
| wine_type | varchar | 64 | 否 | 否 | 酒品類型 |
| wine_unit_price | varchar | 64 | 否 | 否 | 酒品單價 |
| purchase_user | int | 11 | 否 | 否 | 購買用戶 |
| purchase_time | datetime | 0 | 否 | 否 | 購買時間 |
| purchase_quantity | varchar | 64 | 否 | 否 | 購買數量 |
| receiving_address | varchar | 64 | 否 | 否 | 收貨地址 |
| total_purchases | varchar | 64 | 否 | 否 | 購買總數 |
| total_purchase_price | varchar | 64 | 否 | 否 | 購買總價 |
| logistics_status | varchar | 64 | 否 | 否 | 物流狀態 |
| sign_in_status | varchar | 64 | 否 | 否 | 簽收狀態 |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| create_time | datetime | 0 | 是 | 否 | 創建時間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時間 |
| hotel_mall表: | |||||
| 名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
| hotel_mall_id | int | 11 | 是 | 是 | 酒品商城ID |
| remarks | varchar | 64 | 否 | 否 | 備注 |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| cart_title | varchar | 125 | 否 | 否 | 標題 |
| cart_img | text | 0 | 否 | 否 | 封面圖 |
| cart_description | varchar | 255 | 否 | 否 | 描述 |
| cart_price_ago | double | 8 | 是 | 否 | 原價 |
| cart_price | double | 8 | 是 | 否 | 賣價 |
| cart_inventory | int | 11 | 是 | 否 | 商品庫存 |
| cart_type | varchar | 64 | 是 | 否 | 商品分類 |
| cart_content | longtext | 0 | 否 | 否 | 正文 |
| cart_img_1 | text | 0 | 否 | 否 | 主圖1 |
| cart_img_2 | text | 0 | 否 | 否 | 主圖2 |
| cart_img_3 | text | 0 | 否 | 否 | 主圖3 |
| cart_img_4 | text | 0 | 否 | 否 | 主圖4 |
| cart_img_5 | text | 0 | 否 | 否 | 主圖5 |
| create_time | datetime | 0 | 是 | 否 | 創建時間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時間 |
| chargeback_request表; | |||||
| 名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
| chargeback_request_id | int | 11 | 是 | 是 | 退單申請ID |
| order_number | varchar | 64 | 否 | 否 | 訂單編號 |
| wine_name | varchar | 64 | 否 | 否 | 酒品名稱 |
| wine_type | varchar | 64 | 否 | 否 | 酒品類型 |
| wine_unit_price | varchar | 64 | 否 | 否 | 酒品單價 |
| purchase_user | int | 11 | 否 | 否 | 購買用戶 |
| purchase_time | datetime | 0 | 否 | 否 | 購買時間 |
| purchase_quantity | varchar | 64 | 否 | 否 | 購買數量 |
| receiving_address | varchar | 64 | 否 | 否 | 收貨地址 |
| total_purchases | varchar | 64 | 否 | 否 | 購買總數 |
| total_purchase_price | varchar | 64 | 否 | 否 | 購買總價 |
| application_status | varchar | 64 | 否 | 否 | 申請狀態 |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| create_time | datetime | 0 | 是 | 否 | 創建時間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時間 |
| comment表: | |||||
| 名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
| comment_id | int | 11 | 是 | 是 | 評論ID |
| user_id | int | 11 | 是 | 否 | 評論人ID |
| reply_to_id | int | 11 | 是 | 否 | 回復評論ID:空為0 |
| content | longtext | 0 | 否 | 否 | 內容 |
| nickname | varchar | 255 | 否 | 否 | 昵稱 |
| avatar | varchar | 255 | 否 | 否 | 頭像地址 |
| create_time | timestamp | 0 | 是 | 否 | 創建時間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時間 |
| source_table | varchar | 255 | 否 | 否 | 來源表 |
| source_field | varchar | 255 | 否 | 否 | 來源字段 |
| source_id | int | 10 | 是 | 否 | 來源ID |
3.4本章小結
整個1818小酒館商城的需求分析主要對系統總體架構以及功能模塊的設計,通過建立E-R模型和數據庫邏輯系統設計完成了數據庫系統設計。
4?1818小酒館商城?詳細設計與實現
1818小酒館商城?的詳細設計與實現主要是根據前面的1818小酒館商城?的需求分析和1818小酒館商城?的總體設計來設計頁面并實現業務邏輯。主要從1818小酒館商城?界面實現、業務邏輯實現這兩部分進行介紹。
4.1用戶功能模塊
4.1.1 前臺首頁界面
當進入1818小酒館商城的時候,首先映入眼簾的是系統的導航欄,下面是輪播圖以及系統內容,其主界面展示如下圖4-1所示。
?
圖4-1?前臺首頁界面圖
4.1.2用戶登錄界面
1818小酒館商城中的前臺上注冊后的學生是可以通過自己的賬戶名和密碼進行登錄的,當用戶輸入完整的自己的賬戶名和密碼信息并點擊“登錄”按鈕后,將會首先驗證輸入的有沒有空數據,再次驗證輸入的賬戶名+密碼和數據庫中當前保存的用戶信息是否一致,只有在一致后將會登錄成功并自動跳轉到1818小酒館商城的首頁中;否則將會提示相應錯誤信息,用戶登錄界面如下圖4-2所示。
?
圖4-2用戶登錄界面圖
登錄關鍵代碼如下所示。
/**
?????* 登錄
?????* @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;
????????Map<String, String> map = new HashMap<>();
????????if(username != null && "".equals(username) == false){
????????????map.put("username", username);
????????????resultList = service.select(map, new HashMap<>()).getResultList();
????????}
????????else if(email != null && "".equals(email) == false){
????????????map.put("email", email);
????????????resultList = service.select(map, new HashMap<>()).getResultList();
????????}
????????else if(phone != null && "".equals(phone) == false){
????????????map.put("phone", phone);
????????????resultList = service.select(map, new HashMap<>()).getResultList();
????????}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.select(groupMap, new HashMap<>()).getResultList();
????????if (groupList.size()<1){
????????????return error(30000,"用戶組不存在");
????????}
????????UserGroup userGroup = (UserGroup) groupList.get(0);
????????//查詢用戶審核狀態
????????if (!StringUtils.isEmpty(userGroup.getSourceTable())){
????????????String sql = "select examine_state from "+ userGroup.getSourceTable() +" WHERE user_id = " + byUsername.getUserId();
????????????String res = String.valueOf(service.runCountSql(sql).getSingleResult());
????????????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, "賬號或密碼不正確");
????????}
}
4.1.3用戶注冊界面
不是1818小酒館商城中正式用戶的是可以在線進行注冊的,如果你沒有本1818小酒館商城的賬號的話,添加“注冊”,當填寫上自己的賬號+密碼+確認密碼+昵稱+郵箱+手機號等后再點擊“注冊”按鈕后將會先驗證輸入的有沒有空數據,再次驗證密碼和確認密碼是否是一樣的,最后驗證輸入的賬戶名和數據庫表中已經注冊的賬戶名是否重復,只有都驗證沒問題后即可用戶注冊成功。其用用戶注冊界面展示如下圖4-3所示。
?
圖4-2用戶注冊界面圖
注冊關鍵代碼如下所示。
/**
?????* 注冊
?????* @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.1.4商品詳情界面
當訪客點擊了任意商品后將會進入該款商品的詳情界面,可以了解到該商品的圖片信息、商品信息、價錢信息等,同時可以對該商品進行加購+立即購買+收藏+點贊+評論,商品詳情展示頁面如圖4-4所示。
?
圖4-4商品詳情界面圖
4.1.5收貨地址界面
當用戶點擊“收貨地址”右后,就回去顯示出目前現有的地址,也可以添加新的地址,界面如下圖4-5所示。
?
圖4-5收貨地址界面圖
4.1.6我的訂單界面
當用戶點擊“我的訂單”鏈接后就進入自己購買的訂單的界面展示,界面如下圖4-6所示。
?
圖4-6我的訂單界面圖
4.2管理員功能模塊
4.2.1 用戶管理界面
1818小酒館商城中的管理人員是可以對前臺注冊的學生用戶、司機用戶進行管理的,也可以對管理員進行管控。界面如下圖4-7所示。
?
圖4-7用戶管理界面圖
用戶管理關鍵代碼如下所示。
public String encryption(String plainText) {
????????String re_md5 = new String();
????????try {
????????????MessageDigest md = MessageDigest.getInstance("MD5");
????????????md.update(plainText.getBytes());
????????????byte b[] = md.digest();
????????????int i;
????????????StringBuffer buf = new StringBuffer("");
????????????for (int offset = 0; offset < b.length; offset++) {
????????????????i = b[offset];
????????????????if (i < 0)
????????????????????i += 256;
????????????????if (i < 16)
????????????????????buf.append("0");
????????????????buf.append(Integer.toHexString(i));
????????????}
????????????re_md5 = buf.toString();
????????} catch (Exception e) {
????????????e.printStackTrace();
????????}
????????return re_md5;
????}
4.2.2酒品資訊界面
1818小酒館商城的管理人員是可以對1818小酒館商城內的資訊信息進行維護和管理的。酒品資訊界面如下圖4-8所示。
?
圖4-8酒品資訊界面圖
4.3.3站點管理界面
1818小酒館商城中的管理人員在“站點管理”這一菜單中是可以對前臺顯示的輪播圖以及公告欄進行管控。界面如下圖4-9所示。
?
圖4-9站點管理界面圖
站點管理關鍵代碼如下所示。
??@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.2.4商城管理界面
1818小酒館商城中的管理人員是可以對1818小酒館商城內的管理員發布的酒品進行維護和管理的,支持增刪改查操作。界面如下圖4-10所示。
?
圖4-10商城管理界面圖
商城管理關鍵代碼如下所示。
@RequestMapping(value = "/del")
????@Transactional
????public Map<String, Object> del(HttpServletRequest request) {
????????service.delete(service.readQuery(request), service.readConfig(request));
????????return success(1);
}
????@Transactional
????public void delete(Map<String,String> query,Map<String,String> config){
????????StringBuffer sql = new StringBuffer("DELETE FROM ").append("`").append(table).append("`").append(" ");
????????sql.append(toWhereSql(query, "0".equals(config.get(FindConfig.GROUP_BY))));
????????log.info("[{}] - 刪除操作:{}",table,sql);
????????Query query1 = runCountSql(sql.toString());
????????query1.executeUpdate();
????}
4.3.5更多管理界面
1818小酒館商城中的管理人員在“更多管理”這一菜單下是可以對1818小酒館商城內的訂單信息、退單申請進行管控的,其管理界面如下圖4-11所示。
?
圖4-11更多管理界面圖
5系統測試
5.1測試目的
對任何系統而言,測試都是必不可少的環節,測試可以發現系統存在的很多問題,所有的軟件上線之前,都應該進行充足的測試之后才能保證上線后不會Bug頻發,或者是功能不滿足需求等問題的發生。下面分別從單元測試,功能測試和用例測試來對系統進行測試以保證系統的穩定性和可靠性。
5.2功能測試
下表是訂單信息管理功能的測試用例,檢測了訂單信息管理中對訂單信息信息的增加,刪除,修改,查詢操作是否成功運行。觀察系統的響應情況,得出該功能也達到了設計目標,系統運行正確。
前置條件;用戶登錄系統。
表5-1 訂單信息管理的測試用例
| 功能描述 | 用于訂單信息管理 | |
| 測試目的 | 檢測訂單信息管理時的各種操作的運行情況 | |
| 測試數據以及操作 | 預期結果 | 實際結果 |
| 點擊添加訂單信息,必填項合法輸入,點擊保存 | 提示添加成功 | 與預期結果一致 |
| 點擊添加訂單信息,必填項輸入不合法,點擊保存 | 提示必填項不能為空 | 與預期結果一致 |
| 點擊修改訂單信息,必填項修改為空,點擊保存 | 提示必填項不能為空 | 與預期結果一致 |
| 點擊修改訂單信息,必填項輸入不合法,點擊保存 | 提示必填項不能為空 | 與預期結果一致 |
| 點擊刪除訂單信息,選擇訂單信息刪除 | 提示刪除成功 | 與預期結果一致 |
| 點擊搜索訂單信息,輸入存在的訂單信息名 | 查找出訂單信息 | 與預期結果一致 |
| 點擊搜索訂單信息,輸入不存在的訂單信息名 | 不顯示訂單信息 | 與預期結果一致 |
下表是退單申請管理功能的測試用例,檢測了退單申請管理中對退單申請信息的增加,刪除,修改,查詢操作是否成功運行。觀察系統的響應情況,得出該功能也達到了設計目標,系統運行正確。
前置條件;用戶登錄系統。
表5-2 退單申請管理的測試用例
| 功能描述 | 用于退單申請管理 | |
| 測試目的 | 檢測退單申請管理時的各種操作的運行情況 | |
| 測試數據以及操作 | 預期結果 | 實際結果 |
| 點擊添加退單申請,必填項合法輸入,點擊保存 | 提示添加成功 | 與預期結果一致 |
| 點擊添加退單申請,必填項輸入不合法,點擊保存 | 提示必填項不能為空 | 與預期結果一致 |
| 點擊修改退單申請,必填項修改為空,點擊保存 | 提示必填項不能為空 | 與預期結果一致 |
| 點擊修改退單申請,必填項輸入不合法,點擊保存 | 提示必填項不能為空 | 與預期結果一致 |
| 點擊刪除退單申請,選擇退單申請刪除 | 提示刪除成功 | 與預期結果一致 |
| 點擊搜索退單申請,輸入存在的退單申請名 | 查找出退單申請 | 與預期結果一致 |
| 點擊搜索退單申請,輸入不存在的退單申請名 | 不顯示退單申請 | 與預期結果一致 |
下表是訂單列表管理功能的測試用例,檢測了訂單列表管理中分類列表的操作是否成功運行。觀察系統的響應情況,得出該功能也達到了設計目標,系統運行正確。
前置條件;用戶登錄系統。
表5-3 訂單列表管理的測試用例
| 功能描述 | 用于訂單列表管理 | |
| 測試目的 | 檢測訂單列表管理時各種操作的情況 | |
| 測試數據以及操作 | 預期結果 | 實際結果 |
| 未選擇分類,點擊提交 | 提示請選擇分類 | 與預期結果一致 |
| 未選擇列表,點擊提交 | 提示請選擇列表 | 與預期結果一致 |
5.3性能測試
使用阿里云PTS(Performance Testing Service)性能測試服務對線上系統進行壓力測試。線上服務器環境為:1核心CPU,1G內存,1Mbps公網帶寬,Centos7.0操作系統。
壓測過程中使用了2臺并發機器,每臺機器20個用戶并發,對系統主頁,登錄,數據查詢和數據維護等模塊進行并發訪問,測試結果是有40個用戶并發時,數據管理相關頁面的響應時間甚至達到了7s,通過查看服務器出網流量發現已經達到1381kb/s,可以看出服務器的帶寬已經達到峰值,如果系統使用5Mbps的帶寬,系統的響應時間和TPS將會大大增加。在整個測試的過程中,CPU的使用率占用僅8%,也提現出帶寬瓶頸對系統的影響非常嚴重。
結論
至此,1818小酒館商城已經結束,在開發前做了許多的準備,在本系統的設計和開發過程中閱覽和學習了許多文獻資料,從中我也收獲了很多寶貴的方法和設計思路,對系統的開發也起到了很重要的作用,系統的開發技術選用的都是自己比較熟悉的,比如Web、springboot技術、MYSQL,這些技術都是在以前的學習中學到了,其中許多的設計思路和方法都是在以前不斷地學習中摸索出來的經驗,其實對于我們來說工作量還是比較大的,但是正是由于之前的積累與準備,才能順利的完成這個項目,由此看來,積累經驗跟做好準備是十分重要的事情。
當然在該系統的設計與實現的過程中也離不開老師以及同學們的幫助,正是因為他們的指導與幫助,我才能夠成功的在預期內完成了這個系統。同時在這個過程當中我也收獲了很多東西,此系統也有需要改進的地方,但是由于專業知識的淺薄,并不能做到十分完美,希望以后有機會可以讓其真正的投入到使用之中。
參考文獻
[1]曾勁濤,斯恩昊,龍滿生,付青.基于Spring Boot框架的井岡蜜柚管理系統設計與實現[J].井岡山大學學報(自然科學版),2022,43(02):82-87+102.
[2]常兵,薛楨一,陳德徐,孫誠彬,阮瑩瑩. 一種基于JAVA技術實現數據結構化導入導出的方法[P]. 江蘇省:CN114063989A,2022-02-18.
[3]熊勇.基于Java技術的后臺服務程序設計分析[J].信息記錄材料,2022,23(02):80-82.DOI:10.16009/j.cnki.cn13-1295/tq.2022.02.002.
[4]馮凱.“MySQL數據庫”課程教學中常見問題探析[J].無線互聯科技,2021,18(24):158-159.
[5]陳潔.“MySQL數據庫安全”課程教學方法優化分析[J].無線互聯科技,2021,18(24):160-161.
[6]尚鵬. 一種基于Spring boot框架的數據處理方法及裝置[P]. 北京市:CN113641700A,2021-11-12.
[7]He Xinbin,Bai Yongbin,Yue Lisen,Wang Haixiao,Liu Yi. Design and Implementation of Information System Based on Java Technology Platform[J]. Journal of Physics: Conference Series,2021,2033(1).
[8]白楊. 基于JAVA的電力公司安監管理系統的設計與實現[D].電子科技大學,2021.DOI:10.27005/d.cnki.gdzku.2021.002572.
[9]Qu Xiaona. Application of Java Technology in Dynamic Web Database Technology[J]. Journal of Physics: Conference Series,2021,1744(4).
[10]楊超智. 基于Spring boot框架的預警監測平臺[C]//.中國移動5G天線產業技術研討會論文集.,2020:90-92.DOI:10.26914/c.cnkihy.2020.065469.
[11], 專科(678人) 軟件技術(Java方向)(225人). 朱金瑞 主編,河南財經政法大學年鑒,中州古籍出版社,2018,525-526,年鑒.DOI:10.38722/y.cnki.ycjzf.2020.001067.
[12]張懷勇. 基于Spring Boot框架的車輛寄售后臺系統的設計與實現[D].北京郵電大學,2020.DOI:10.26969/d.cnki.gbydu.2020.002108.
[13]Lei Yu,Cheng Li,Lei Wei,Hu WenYa. Marine biological monitoring and managing system based on Java technology[J]. MIPPR 2019: REMOTE SENSING IMAGE PROCESSING, GEOGRAPHIC INFORMATION SYSTEMS, AND OTHER APPLICATIONS,2020,11432.
[14]張倩,王蕾,史述紅,呂經緯. 基于JAVA并行計算技術的電力直接交易集中撮合交易算法[C]//.中國電機工程學會電力市場專業委員會2018年學術年會暨全國電力交易機構聯盟論壇論文集.,2018:373-377.
[15]袁梅冷,李斌,肖正興. Java應用開發技術實例教程[M].人民郵電出版社:, 201708.253.
[16]SJ/T 11683-2017, Java語言源代碼缺陷控制與測試指南[S].
致 ?謝
逝者如斯夫,不舍晝夜。轉眼間,大用戶用戶活便已經接近尾聲,人面對著離別與結束,總是充滿著不舍與茫然,我亦如此,仍記得那年秋天,我迫不及待的提前一天到了學校,面對學校巍峨的大門,我心里充滿了期待:這里,就是我新生活的起點嗎?那天,陽光明媚,學校的歡迎儀式很熱烈,我面對著一個個對著我微笑的同學,仿佛一縷縷陽光透過胸口照進了我心里,同時,在那天我認識可愛的室友,我們攜手共同度過了這難忘的兩年。如今,我望著這篇論文的致謝,不禁又要問自己:現在,我們就要說再見了嗎?
感慨莫名,不知所言。遙想當初剛來學校的時候,心里總是想著工科學校會過于板正,會缺乏一些柔情,當時心里甚至有一點點排斥,但是隨著我對學校的慢慢認識與了解,我才認識到了她的美麗,她的柔情,并且慢慢的喜歡上了這個校園,但是時間太快了,快到我還沒有好好體會她的美麗便要離開了,但是她帶給我的回憶,永遠不會離開我,也許真正離開那天我的眼里會滿含淚水,我不是因為難過,我只是想將她的樣子映在我的淚水里,刻在我的心里。最后,感謝我的老師們,是你們教授了我們知識與做人的道理;感謝我的室友們,是你們陪伴了我如此之久;感謝每位關心與支持我的人。
少年,追風趕月莫停留,平荒盡處是春山。
免費領取本源代碼,請關注點贊+私信
總結
以上是生活随笔為你收集整理的mysql基于SpringBoot的“1818小酒馆”商城网站的设计与实现毕业设计源码192004的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据库系统工程师怎么备考?
- 下一篇: 计算机四级数据库教程,全国计算机等级考试