(附源码)spring boot校园购物网站 毕业设计041037
springboot校園購物網站APP
摘要
21世紀的今天,隨著社會的不斷發展與進步,人們對于信息科學化的認識,已由低層次向高層次發展,由原來的感性認識向理性認識提高,管理工作的重要性已逐漸被人們所認識,科學化的管理,使信息存儲達到準確、快速、完善,并能提高工作管理效率,促進其發展。
論文主要是對校園購物網站APP進行了介紹,包括研究的現狀,還有涉及的開發背景,然后還對系統的設計目標進行了論述,還有系統的需求,以及整個的設計方案,對系統的設計以及實現,也都論述的比較細致,最后對校園購物網站APP 進行了一些具體測試。
本文以springboot為開發技術,實現了一個校園購物網站APP。校園購物網站APP的主要使用者分為用戶、管理員;管理員功能包括有:購物資訊、用戶管理、商品管理、分類列表、訂單列表、售后服務;前臺首頁功能包括有:首頁、訂單、購物車、購物資訊、我的等功能。通過這些功能模塊的設計,基本上實現了整個校園購物網站APP 的過程。
具體在系統設計上,采用了springboot的結構,后臺上采用Mysql數據庫,是一個非常優秀的校園購物網站APP 。
關鍵詞:校園購物網站;Spring boot框架;
Springboot campus shopping website app
Abstract
Today in the 21st century, with the continuous development and progress of society, people's scientific understanding of information has developed from low-level to high-level, and from the original perceptual understanding to rational understanding. The importance of management has been gradually recognized by people. Scientific management can make information storage accurate, fast and perfect, improve work management efficiency and promote its development.
This paper mainly introduces the campus shopping website app, including the research status and the development background involved, then discusses the design objectives of the system, the requirements of the system and the whole design scheme, and discusses the design and implementation of the system in detail. Finally, it makes some specific tests on the campus shopping website app.
Taking springboot as the development technology, this paper realizes a campus shopping website app. The main users of campus shopping website app are divided into users and administrators; Administrator functions include: shopping information, user management, commodity management, classification list, order list and after-sales service; The front page functions include: home page, order, shopping cart, shopping information, my, etc. Through the design of these functional modules, the whole process of campus shopping website app is basically realized.
Specifically, in the system design, it adopts the structure of springboot and MySQL database in the background. It is a very excellent campus shopping website app.
Key words:Campus shopping website; Spring boot framework;
目 錄
第1章 緒論 1
1.1 研究意義 1
1.2 國內外研究現狀 1
1.3 論文組成結構 2
第2章 開發工具及相關技術介紹 3
2.1開發技術 3
2.2 Android技術介紹 3
2.3 B/S結構 3
2.4 Spring Boot框架 4
2.5 Mysql數據庫 5
第3章 系統分析 6
3.1 可行性分析 6
3.1.1 經濟可行性 6
3.1.2 技術可行性 6
3.1.3 操作可行性 6
3.2 性能分析 6
3.3 系統操作流程 9
3.3.1用戶登錄流程 9
3.3.2信息添加流程 10
3.3.3信息刪除流程 10
第4章 系統設計 11
4.1系統架構設計 11
4.2開發流程設計 11
4.3數據庫設計 12
4.3.1實體ER圖 13
4.3.2數據表 13
第5章 系統實現 17
5.1用戶前臺功能模塊 17
5.2管理員功能模塊 27
第6章 系統測試 35
6.1 測試目的 35
6.2 測試方案設計 35
6.2.1 測試策略 35
6.2.2 測試分析 35
6.3 測試結果 36
第7章 總結與展望 37
參考文獻 38
致謝 40
- 緒論
1.1研究意義
校園購物網站是指在校園范圍內利用基礎網絡、計算機硬件、軟件和電子通訊手段構建,為校園內師生提供網絡購物的站點。校園購物網站的建立有其深遠的實踐意義:
(1)校園購物網站能為電子商務、物流及相關專業的特長生提供實踐的機會。校園購物網站為學生提供電子商務的實踐環境, 為電子商務理論教學提供了實習基地,為培養電子商務合格人才創造了條件,為新世紀電子商務的全面開展打下基礎,同時也可以增加學生勤工助學的機會。
(2)校園購物網站解決電子商務中物流配送、信用與安全支付等關鍵問題。校園購物網站的物流可以采取買賣雙方通過E-mail或電話聯系,共同商討供貨方式。而支付除了現金支付外,還可通過校園網利用校園卡轉賬功能進行安全、快捷的資金網上支付。
(3)校園購物網站培養學生的創業理念。校園購物網站是一個開放的網站,任何人都可以成為買者或者賣者,無需任何費用,可以在網上開-一個店鋪,這些都是大學生的就業實踐,對于大學生將來走上工作崗位是一個很好的鍛煉機會 。
(4)校園購物網站提供二手市場流通學生的閑置物品,避免資源的浪費。每年畢業生離校時都要進行舊物交易,并且在日常學習生活中學生們也常出現一些閑置物品待交易,這些都能在網上二手交易市場中實現。在校園購物網站中,通過發布供求信息,就可以很好地解決二手市場的供求關系。
1.2國內外研究現狀
隨著計算機網絡的不斷滲透,人們的生活與工作、學習的方式也在慢慢發生變化。傳統的用戶相關信息管理方式一般都采取人工的方式,信息的獲取、整理、修改、存儲等工作還停留在人工階段。這種方式一方面需要花費大量的人力、物力和金錢,交互起來比較困難,而且會浪費時間;另一方面對用戶等信息的管理,特別是隨著用戶數量的遞增,查詢、修改起來特別困難;最后由于用戶等其他信息的不斷增加,信息的存儲也成為了難題。
一些發達國家,網絡發展比較快,已經很大程度上完成了從人工到計算機管理的轉變。我國計算機應用起步比較晚,而且發展區域不平衡,還有很多地區或單位使用傳統的方式進行管理,但是目前計算機發展較快,包括網絡也已經普及,很多單位和用戶也開始慢慢接觸網絡管理系統。縱觀這些系統主要有以下幾個特點:
(1)先進性:實現網絡化管理。
(2)通用性:同一行業基本都能使用。
(3)方便性:通過網絡就能完成管理工作。
(4)及時性:信息更新及時。
(5)可擴展性:可根據需要進行模塊的增加。
(6)安全性:對單位、用戶等信息進行加密。
截至如今,互聯網已經深入人們的生活,智能手機、筆記本電腦等已經是人們獲取信息的主要工具,這是一個溝通無限的時代,因此,利用網絡來進行校園購物網站APP的管理也成為大勢所趨,所以,開發一個校園購物網站APP是必須的。
1.3論文組成結構
根據市場調研得到的信息數據,結合國內外前沿研究,利用相關系統開發和設計方法,最終設計出校園購物網站APP系統 。
本文共有七章,如下所示。
第一章概述了校園購物網站APP系統的研究目的和意義;精煉地總結了國內外在內的領域研究情況和未來的研究趨勢,最后給出了論文的組成結構。
第二章簡要概述了本文所用的開發技術和工具。
第三章簡要對系統各業務流程進行需求分析、可行性分析。
第四章對校園購物網站APP進行設計。
第五章對校園購物網站APP進行實現,并貼出相關頁面截圖,語言描述出具體功能實現的操作方法。
第六章對校園購物網站APP采用測試用例的方式來對一些主要功能模塊測試,最后得出測試結果。
第七章總結全文并對未來的研究做出展望。
- 開發工具及相關技術介紹
2.1開發技術
本系統前端框架采用了比較流行的漸進式JavaScript框架Vue.js。使用Vue-Router和Vuex實現動態路由和全局狀態管理,Ajax實現前后端通信,Element UI組件庫使頁面快速成型。后端部分:采用springboot作為開發框架,同時集成MyBatis、Redis等相關技術。
- 2.2 Android技術
Android是基于Linux內核的操作系統,早期由Google開發,后由開放手機聯盟開發。它采用了軟件堆的架構,主要分為三部分。底層以Linux內核工作為基礎,只提供基本功能;其他的應用軟件則由各公司自行開發,以Java作為編寫程序的一部分。另外,為了推廣此技術,Google和其它幾十個手機公司建立了開放手機聯盟。Android在未公開之前常被傳聞為GPhone。
它采用了軟件堆層(software stack,又名軟件疊層)的架構,主要分為三部分:底層以Linux核心為基礎,由c語言開發,只提供基本功能。中間層包括函數庫Library和虛擬機Virtual Machine,由C++開發。最上層是各種應用軟件,包括通話程序,短信程序等,應用軟件則由各公司自行開發,以Java編寫。
2.3B/S結構
B/S(瀏覽器/服務器)結構是目前主流的網絡化的結構模式,它能夠把系統核心功能集中在服務器上面,可以幫助系統開發人員簡化操作,便于維護和使用。只需要用戶在客戶端安裝360瀏覽器、谷歌瀏覽器、QQ瀏覽器等當前大眾瀏覽器,在電腦里面安裝sqlserver、mysql數據庫等數據庫。安裝好的瀏覽器與服務器端的數據庫進行信息數據的交互。很多專門軟件能夠做到的事情,采用B/S結構模式也能實現,它能夠結合Web瀏覽器技術,ActiveX技術以及多種腳本語言等技術。幫助程序開發者節約了不少開發成本。目前B/S結構成為程序開發主流結構,它最好的地方就是沒有地點限制還不用專門安裝軟件,筆記本或者電腦能夠上網就能訪問系統。系統使用B/S進行開發在后期系統維護上面就會很省事,不用什么問題都在服務器上面操作,簡單的客戶端處理就解決部分問題,開發出來的程序跟用戶交互性上面也會增強,還可以實時刷新瀏覽器進行程序局部的數據信息更新。
圖1-1 B/S模式三層結構圖
2.4Spring Boot框架
Spring框架是Java系統上的一種開源應用框架,提供具有控制反轉特性的容器。盡管Spring框架自身對編程模型沒有限制,但其在Java應用中的頻繁使用讓它備受青睞,以至于后來讓它作為EJB(EnterpriseJavaBeans)模型的補充,甚至是替補。Spring框架為開發提供了一系列的解決方案,比如利用控制反轉的核心特性,并通過依賴注入實現控制反轉來實現管理對象生命周期容器化,利用面向切面編程進行聲明式的事務管理,整合多種持久化技術管理數據訪問,提供大量優秀的Web框架方便開發等等。Spring框架具有控制反轉(IOC)特性,IOC旨在方便項目維護和測試,它提供了一種通過Java的反射機制對Java對象進行統一的配置和管理的方法。Spring框架利用容器管理對象的生命周期,容器可以通過掃描XML文件或類上特定Java注解來配置對象,開發者可以通過依賴查找或依賴注入來獲得對象。Spring框架具有面向切面編程(AOP)框架,SpringAOP框架基于代理模式,同時運行時可配置;AOP框架主要針對模塊之間的交叉關注點進行模塊化。Spring框架的AOP框架僅提供基本的AOP特性,雖無法與AspectJ框架相比,但通過與AspectJ的集成,也可以滿足基本需求。Spring框架下的事務管理、遠程訪問等功能均可以通過使用SpringAOP技術實現。Spring的事務管理框架為Java系統帶來了一種抽象機制,使本地和全局事務以及嵌套事務能夠與保存點一起工作,并且幾乎可以在Java系統的任何環境中工作。
2.5Mysql數據庫
數據庫是系統開發過程中不可或缺的一部分。在WEB應用方面,MySQL AB開發了一個具有很大優勢的MySQL關系數據庫管理系統。 MySQL可以將數據存儲在不同的表中,這非常靈活,并且還可以提高系統在實際應用中的速度。 數據庫訪問最常用于標準SQL語言,MySQL用于SQL語言,因此它具有高度兼容性。數據庫的操作是必不可少的,包括對數據庫表的增加、刪除、修改、查詢等功能。現如今,數據庫可以分為關系型數據庫和非關系型數據庫,Mysql屬于關系性數據庫,Mysql數據庫是一款小型的關系型數據庫,它以其自身特點:體積小、速度快、成本低等,Mysql數據庫是目前最受歡迎的開源數據庫。
在WEB應用技術中, Mysql數據庫支持不同的操作系統系統,雖然在不同系統下的安裝和配置都不相同,但是差別也不是很大,Mysql在Windows系統下兩種安裝方式,二進制版和免安裝版。安裝完Mysql數據庫之后,需要啟動服務進程,相應的客戶端就可以連接數據庫,客戶端可通過命令行或者圖形界面工具登錄數據庫。
- 系統分析
3.1可行性分析
本系統將在經濟、技術、操作這三個角度上進行可行性分析。
- 經濟可行性
整個系統從設計到開發以及測試過程嚴謹步驟齊全,所有工作任務全部由本人完成,并未獲取外部技術支持,節約了一切服務成本開銷以及人工成本,在硬件方面,為節約成本使用一臺二手移動工作站作為項目部署服務器以及數據庫服務器,成本在一萬元一下,真個網絡部署也是由本人獨立完成不涉及到其他人工費用,整個開發過程本著低成本,低消耗的原則。
- 技術可行性
技術可行性分析的目的是確認該系統能否利用現有技術實現,并評估開發效率和完成情況。技術的可行性是指在當前的技術條件下,計算機軟件和硬件的開發是否能夠滿足發展的要求。因為該系統的開發基于springboot語言,所以開發該系統所需的軟件和硬件條件可以在普通計算機上滿足。因為它占用的內存相對較少,所以用Mysql數據庫開發和設計軟件理論上沒有問題,因為它占用的內存太少。上述技術可以有效地保證系統的成功和高效開發。
- 操作可行性
校園購物網站APP的使用界面簡單易于操作,采用常見的界面窗口來登錄界面,通過電腦進行訪問操作,用戶只要平時使用過電腦都能進行訪問操作。此系統的開發采用springboot技術開發,人性化和完善化是B/S結構開發比較顯要的特點使得用戶操作相比較其他更加簡潔方便。易操作、易管理、交互性好在本系統操作上體現得淋漓盡致。
3.2性能分析
對于性能分析,與傳統的管理方式相比,傳統的管理方式是使用人工通過用紙和筆進行數據信息的統計和管理,并且這種方式對于存儲和查找某一數據信息都比較麻煩,隨著計算機網絡的到來,這種傳統的方法很難適應當下社會的發展,不僅降低人們的辦事效率,而且還需要很多的人力和物力,對于使用的時間和所要花費的費用都是比較高的,為了降低成本費用,提高用戶的工作效率,進行開發一套基于計算機和網絡技術的校園購物網站APP。
校園購物網站APP系統的開發設計時一個獨立的系統,以流行數據庫進行數據的存儲開發,主要是為了實現校園購物網站APP的用戶角色及相對應的功能模塊,讓校園購物網站APP的管理不會存在管理差異、低效率,而是跟傳統的管理信息恰好相反,校園購物網站APP的實現可以節約資源,并且對于業務的處理速度也提高,速度快、效率高,功能性強大。
3.3系統操作流程
3.3.1用戶登錄流程
對于系統的安全性的第一關,就是用戶想要進入系統,必須通過登錄窗口,輸入自己的登錄信息才可以進行登錄,用戶輸入的信息準確無誤后才可以進入到操作系統界面,進行功能模塊的相對應操作,如果用戶輸入的信息不正確,則窗口出現提示框,用戶登錄失敗,返回到第一步進行重新輸入,如圖3-1所示。
圖3-1登錄操作流程圖
3.3.2信息添加流程
對于校園購物網站APP,需要隨時添加所需要的數據信息,對于用戶添加信息,需要根據添加界面,根據選框的內容進行填寫所要添加的數據信息,信息輸入完成后判斷數據信息是否符合要求,符合要求則添加完成,用戶所添加的信息不符合要求,則需要返回到第一步,重新輸入數據信息,再進行判斷操作,如圖3-2所示。
圖3-2 信息添加流程圖
3.3.3信息刪除流程
不管是哪個用戶角色進入到不通的系統操作界面,都可以進行不同的信息內容的操作功能,對用系統數據信息的刪除,用戶一旦將信息刪除,那么該刪除的數據信息將無法恢復,所以用戶在對數據刪除事,一定判斷刪除的內容是否是確定要刪除的,確定無誤后選擇確定刪除操作,如圖3-3所示。
圖3-3 信息刪除流程圖
- 系統設計
4.1系統架構設計
校園購物網站APP的系統項目的概述設計分析,主要內容流浪寵物救助系統信息的具體分析,進行數據庫的是設計,數據采用mysql數據庫,并且對于系統的設計采用比較人性化的操作設計,對于系統出現的錯誤信息可以及時做出處理及反饋。
校園購物網站APP的設計基于現有的手機,可以實現管理員:后臺首頁、用戶管理、購物資訊、資訊分類列表、商品管理、分類列表、訂單列表、售后服務等詳細的了解及統計分析。根據系統功能需求建立的模塊關系圖如下圖:
圖4-1管理員功能模塊圖
4.2開發流程設計
校園購物網站APP的開發對管理模塊和系統使用的數據庫進行分析,編寫代開發,規劃和操作是構建信息管理應用程序的必要三步曲,它決定了系統是否能夠真正實現預設功能以及是否可以在成功設計后實施。在開發過程中,每個階段必須嚴格按照線性順序進行開發,并且在相應階段生成的每個工作都可以通過技術進行驗證和檢查。確保一個階段完成后是正確的,不會造成下一階段拖拽現象,使系統完成設計功能后得到保證。
從校園購物網站APP系統的成功開發經驗來看,上述方法效果最為明顯,最大程度地降低了系統開發的復雜性。如圖4-2所示。
圖4-2開發系統流程圖
4.3數據庫設計
數據庫是信息系統的基礎和核心。數據庫設計的好壞直接影響到信息系統開發的成敗。創建數據庫表首先確定實體的屬性和實體之間的關系。根據關系創建一個數據表。4.3.1實體ER圖
數據庫是整個軟件編程中最重要的一個步驟,對于數據庫問題主要是判定數據庫的數量和結構公式的創建。展示系統使用的是Mysql進行對數據庫進行管理,進行保證數據的安全性、穩定性等。
概念模型的設計是為了抽象真實世界的信息,并對信息世界進行建模。它是數據庫設計的強大工具。數據庫概念模型設計可以通過E-R圖描述現實世界的概念模型。系統的E-R圖顯示了系統中實體之間的鏈接。而且Mysql數據庫是自我保護能力比較強的數據庫,下圖主要是對數據庫實體的E-R圖:
(1) 評論管理E-R圖,如圖4-3所示:
圖4-3 評論體屬性圖
(2) 售后服務信息E-R圖如圖4-4所示:
圖4-4售后服務信息實體圖
(3)購物車E-R圖如圖4-5所示:
圖4-5購物車實體圖
這些功能可以充分滿足校園購物網站APP系統的需求。此系統功能較為全面如下圖系統功能結構如圖4-5所示。
圖4-5系統功能結構圖
4.3.2數據表
我們可以根據數據結構的詳細分析要求,我們根據輸入和輸出數據量的要求進行分析,確定什么表表,結構之間的關系,我們可以驗證,調整和完善,查詢和瀏覽過程,可以實現數據庫,以使用戶對數據和功能有更多要求。
基于系統使用的數據庫管理系統的特點,對數據庫的概念模型進行了轉換和構建。但是,這個系統只需要充分考慮校園購物網站APP系統的功能,而且組織比較清晰。
member_user表
名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
member_user_id | int | 11 | 是 | 是 | 會員用戶ID |
user_name | varchar | 64 | 是 | 否 | 用戶名 |
full_name | varchar | 64 | 否 | 否 | 姓名 |
gender | varchar | 64 | 否 | 否 | 性別 |
personal_introduction | varchar | 64 | 否 | 否 | 個人介紹 |
examine_state | varchar | 16 | 是 | 否 | 審核狀態 |
recommend | int | 11 | 是 | 否 | 智能推薦 |
user_id | int | 11 | 是 | 否 | 用戶ID |
create_time | datetime | 0 | 是 | 否 | 創建時間 |
update_time | timestamp | 0 | 是 | 否 | 更新時間 |
commodity_management表
名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
commodity_management_id | int | 11 | 是 | 是 | 商品管理ID |
remarks | text | 0 | 否 | 否 | 備注 |
hits | int | 11 | 是 | 否 | 點擊數 |
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 | 是 | 否 | 更新時間 |
comment表
名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
comment_id | int | 11 | 是 | 是 | 評論ID |
user_id | int | 11 | 是 | 否 | 評論人ID |
reply_to_id | int | 11 | 是 | 否 | 回復評論ID |
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 |
after_sale_service表
名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
after_sale_service_id | int | 11 | 是 | 是 | 售后服務ID |
order_number | varchar | 64 | 否 | 否 | 訂單號 |
trade_name | varchar | 64 | 否 | 否 | 商品名稱 |
number | varchar | 64 | 否 | 否 | 數量 |
after_sales_type | varchar | 64 | 否 | 否 | 售后類型 |
applicant | int | 11 | 否 | 否 | 申請人 |
full_name | varchar | 64 | 否 | 否 | 姓名 |
commodity_certificate | varchar | 255 | 否 | 否 | 商品憑證 |
after_sales_status | varchar | 64 | 否 | 否 | 售后狀態 |
describe_the_reason | text | 0 | 否 | 否 | 描述原因 |
after_sales_reply | text | 0 | 否 | 否 | 售后回復 |
recommend | int | 11 | 是 | 否 | 智能推薦 |
create_time | datetime | 0 | 是 | 否 | 創建時間 |
update_time | timestamp | 0 | 是 | 否 | 更新時間 |
order表
名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
order_id | int | 11 | 是 | 是 | 訂單ID |
order_number | varchar | 64 | 否 | 否 | 訂單號 |
goods_id | mediumint | 8 | 是 | 否 | 商品id |
title | varchar | 32 | 否 | 否 | 商品標題 |
img | varchar | 255 | 否 | 否 | 商品圖片 |
price | double | 10 | 是 | 否 | 價格 |
price_ago | double | 10 | 是 | 否 | 原價 |
num | int | 8 | 是 | 否 | 數量 |
price_count | double | 8 | 是 | 否 | 總價 |
norms | varchar | 255 | 否 | 否 | 規格 |
type | varchar | 64 | 是 | 否 | 商品分類 |
contact_name | varchar | 32 | 否 | 否 | 聯系人姓名 |
contact_email | varchar | 125 | 否 | 否 | 聯系人郵箱 |
contact_phone | varchar | 11 | 否 | 否 | 聯系人手機 |
contact_address | varchar | 255 | 否 | 否 | 收件地址 |
postal_code | varchar | 9 | 否 | 否 | 郵政編碼 |
user_id | int | 10 | 是 | 否 | 買家ID |
merchant_id | mediumint | 8 | 是 | 否 | 商家ID |
create_time | timestamp | 0 | 是 | 否 | 創建時間 |
update_time | timestamp | 0 | 是 | 否 | 更新時間: |
description | varchar | 255 | 否 | 否 | 描述 |
state | varchar | 16 | 是 | 否 | 訂單狀態 |
cart表
名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
cart_id | int | 11 | 是 | 是 | 購物車ID |
title | varchar | 64 | 否 | 否 | 標題 |
img | varchar | 255 | 是 | 否 | 圖片 |
user_id | int | 10 | 是 | 否 | 用戶ID |
create_time | timestamp | 0 | 是 | 否 | 創建時間 |
update_time | timestamp | 0 | 是 | 否 | 更新時間 |
state | int | 1 | 是 | 否 | 狀態 |
price | double | 8 | 是 | 否 | 單價 |
price_ago | double | 8 | 是 | 否 | 原價 |
price_count | double | 10 | 是 | 否 | 總價 |
num | int | 8 | 是 | 否 | 數量 |
goods_id | mediumint | 8 | 是 | 否 | 商品id |
type | varchar | 64 | 是 | 否 | 商品分類 |
description | varchar | 255 | 否 | 否 | 描述 |
- 系統實現
5.1用戶前臺功能模塊
校園購物網站APP,在系統首頁可以查看首頁、交流論壇、公告欄、學習計劃、課程信息等內容,如圖5-1所示。
圖5-1首頁界面圖
登錄,在登錄頁面通過填寫賬號、密碼等信息完成登錄,如圖5-3所示。
圖5-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, "賬號或密碼不正確");
}
}
用戶注冊,在用戶注冊頁面可以填寫賬號、密碼、昵稱、郵箱、手機號碼、身份、性別、身份證號碼等詳細內容進行注冊,如圖5-3所示。
圖5-3用戶注冊界面
用戶注冊關鍵代碼如下所示。
/**
* 注冊
* @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;
}
我的頁面通過填寫基本信息、頭像、昵稱、修改頭像、修改昵稱、修改密碼等信息,并可以進行修改信息,如圖5-4所示。
圖5-4我的界面圖
收貨地址管理,在收貨地址頁面通過填寫收貨人、手機號、詳細地址等信息進行填寫,如圖5-5所示。
圖5-5收貨地址界面圖
- 管理員功能模塊
管理員登錄,通過填寫注冊時輸入的用戶名、密碼、進行登錄,如圖5-6所示。
圖5-6管理員登錄界面圖
管理員登錄進入校園購物網站APP后的主要功能是:后臺首頁、站點管理(公告欄、輪播圖)用戶管理(管理員、會員用戶)內容管理(購物資訊、資訊分類列表)商城管理(商品管理、分類列表、訂單列表)更多管理(售后服務)等信息。還可以對校園購物網站等進行管理操作,如圖5-7所示。
圖5-7校園購物網站首頁界面圖
購物資訊管理,在購物資訊管理頁面中可以查看標題、封面圖、文章分類、標簽等信息,并可根據需要對已有購物資訊管理進行查看評論、修改或刪除等詳細操作,如圖5-8所示。
圖5-8購物資訊界面圖
購物資訊關鍵代碼如下所示。
@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();
}
商品管理,在商品信息頁面中可以查看標題、封面圖、賣價、原價、商品庫存、產品分類、描述、備注等內容,并且可以對商品信息進行編輯,修改或刪除等詳細操作,如圖5-9所示。
圖5-9商品管理界面圖
商品管理關鍵代碼如下所示。
@PostMapping("/set")
@Transactional
public Map<String, Object> set(HttpServletRequest request) throws IOException {
service.update(service.readQuery(request), service.readConfig(request), service.readBody(request.getReader()));
return success(1);
}
public Map<String,String> readConfig(HttpServletRequest request){
Map<String,String> map = new HashMap<>();
map.put(FindConfig.PAGE,request.getParameter(FindConfig.PAGE));
map.put(FindConfig.SIZE,request.getParameter(FindConfig.SIZE));
map.put(FindConfig.LIKE,request.getParameter(FindConfig.LIKE));
map.put(FindConfig.ORDER_BY,request.getParameter(FindConfig.ORDER_BY));
map.put(FindConfig.FIELD,request.getParameter(FindConfig.FIELD));
map.put(FindConfig.GROUP_BY,request.getParameter(FindConfig.GROUP_BY));
map.put(FindConfig.MAX_,request.getParameter(FindConfig.MAX_));
map.put(FindConfig.MIN_,request.getParameter(FindConfig.MIN_));
return map;
}
public Map<String,String> readQuery(HttpServletRequest request){
String queryString = request.getQueryString();
if (queryString != null && !"".equals(queryString)) {
String[] querys = queryString.split("&");
Map<String, String> map = new HashMap<>();
for (String query : querys) {
String[] q = query.split("=");
map.put(q[0], q[1]);
}
map.remove(FindConfig.PAGE);
map.remove(FindConfig.SIZE);
map.remove(FindConfig.LIKE);
map.remove(FindConfig.ORDER_BY);
map.remove(FindConfig.FIELD);
map.remove(FindConfig.GROUP_BY);
map.remove(FindConfig.MAX_);
map.remove(FindConfig.MIN_);
return map;
}else {
return new HashMap<>();
}
}
@Transactional
public void update(Map<String,String> query,Map<String,String> config,Map<String,Object> body){
StringBuffer sql = new StringBuffer("UPDATE ").append("`").append(table).append("`").append(" SET ");
for (Map.Entry<String,Object> entry:body.entrySet()){
Object value = entry.getValue();
if (value instanceof String){
sql.append("`"+humpToLine(entry.getKey())+"`").append("=").append("'").append(value).append("'").append(",");
}else {
sql.append("`"+humpToLine(entry.getKey())+"`").append("=").append(value).append(",");
}
}
sql.deleteCharAt(sql.length()-1);
sql.append(toWhereSql(query,"0".equals(config.get(FindConfig.LIKE))));
log.info("[{}] - 更新操作:{}",table,sql);
Query query1 = runCountSql(sql.toString());
query1.executeUpdate();
}
public String toWhereSql(Map<String,String> query, Boolean like) {
if (query.size() > 0) {
try {
StringBuilder sql = new StringBuilder(" WHERE ");
for (Map.Entry<String, String> entry : query.entrySet()) {
if (entry.getKey().contains(FindConfig.MIN_)) {
String min = humpToLine(entry.getKey()).replace("_min", "");
sql.append("`"+min+"`").append(" >= '").append(URLDecoder.decode(entry.getValue(), "UTF-8")).append("' and ");
continue;
}
if (entry.getKey().contains(FindConfig.MAX_)) {
String max = humpToLine(entry.getKey()).replace("_max", "");
sql.append("`"+max+"`").append(" <= '").append(URLDecoder.decode(entry.getValue(), "UTF-8")).append("' and ");
continue;
}
if (like == true) {
sql.append("`"+humpToLine(entry.getKey())+"`").append(" LIKE '%").append(URLDecoder.decode(entry.getValue(), "UTF-8")).append("%'").append(" and ");
} else {
sql.append("`"+humpToLine(entry.getKey())+"`").append(" = '").append(URLDecoder.decode(entry.getValue(), "UTF-8")).append("'").append(" and ");
}
}
sql.delete(sql.length() - 4, sql.length());
sql.append(" ");
return sql.toString();
} catch (UnsupportedEncodingException e) {
log.info("拼接sql 失敗:{}", e.getMessage());
}
}
return "";
}
訂單列表管理,在訂單列表管理頁面中可以查看商品名稱、訂單號、商品圖片、價格、原價、購買數量、總價、聯系人名稱、聯系人地址、訂單狀態、買家等內容,并且根據需要對已有訂單列表管理進行詳情,修改或刪除等詳細操作,如圖5-10所示。
圖5-10訂單列表管理界面圖
訂單列表管理關鍵代碼如下所示。
@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();
}
售后服務,在售后服務頁面中可以查看訂單號、商品名稱、數量、售后類型、申請人、姓名、商品憑證、售后狀態等內容,并且根據需要對已有售后服務進行詳情,修改或刪除等詳細操作,如圖5-11所示。
圖5-11售后服務界面
售后服務管理關鍵代碼如下所示。
@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);
}
- 系統測試
6.1測試目的
程序設計不能保證沒有錯誤,這是一個開發過程,在錯誤或錯誤的過程中難以避免,這是不可避免的,但我們不能使這些錯誤始終存在于系統中,錯誤可能會造成無法估量的后果如系統崩潰,安全信息,系統無法正常啟動,導致安裝用戶手機屏幕等,為了避免這些問題,我們需要測試程序,并發現這些問題,并糾正它們,并使系統更長時間穩定成熟,本章的作用是發現這些問題,并對其進行修改,雖然耗時費力,但長期非常重要和必要系統的開發。
軟件測試與開發過程是一樣的,都必須按照軟件工程的正規原理進行,遵守管理學理論。不過,目前國內的軟件測試已經積累了大量經驗和方法,步驟相對成熟,軟件測試的效率也越來越高。
校園購物網站APP系統的實現,對于系統中功能模塊的實現及操作都必須通過測試進行來評判系統是否可以準確的實現。在校園購物網站APP系統正式上傳使用之前必須做的一步就是系統測試,對于測試發現的錯誤及時修改處理,保證系統準確無誤的供給用戶使用。
6.2測試方案設計
6.2.1 測試策略
1、功能測試
從用戶的角度來看,測試時不了解新開發軟件的內部結構,因此可以將系統與黑匣子進行比較,盲目輸入后可以查看系統給出的反饋。這種測試屬于黑盒測試,在測試中如果輸入錯誤信息系統會報錯。
2、性能測試
測試軟件程序的整體狀況(稱為性能測試)通常使用自動化測試工具來檢測系統的整體功能,在負載測試和壓力測試之間進行分配,在某些情況下,將這兩種情況結合起來。雖然壓力測試可以檢測到系統可以提供的最高級別的服務,但負載測試可以測試系統如何響應增加的負載。
6.2.2 測試分析
測試評估系統質量的方法不局限于系統編碼和過程,應該與軟件設計工作和歷史需求分析密切相關。
軟件測試應遵循以下原則:
(1)軟件測試應盡快進行,整個測試部分應在軟件開發和設計的整個過程中進行。如發現錯誤,立即處理,將大大減少軟件開發的時間,并提高軟件的質量。
(2)在軟件的各種測試中,測試過程中使用的計劃、報告等應妥善處理和存儲。其主要目的是為了便于以后系統的維護。
(3)軟件測試整個過程中的聚類現象應優先考慮。
(4)對于軟件測試,我們應該盡量不去和自己設計的系統進行參考,而是要測試對方的程序,以確保軟件測試結果的客觀性和公平性。
(5)整個測試計劃嚴格按照軟件測試的具體實施細則進行。
(6)對整個測試結果進行綜合檢查,盡量避免重復錯誤。
本校園購物網站APP系統滿足用戶的要求和需求,本校園購物網站APP系統的使用能夠有效的提高用戶的使用率。
6.3 測試結果
測試后得到的性能和用例,系統具有足夠的正確性、可靠性、穩定性,并且可以對輸入數據進行準確的點擊操作處理和響應測試用戶的體驗也得到了很好的反饋和響應時間。合理的范圍,可以兼容所有主流瀏覽器,設計所需的效果。
- 總結與展望
通過校園購物網站APP系統的開發,本人鞏固了之前學過的知識,如今將平時所學到的知識融合在設計中,在設計過程中,做了很多的準備,首先,在數據庫系統的設計過程中,尤其是在數據庫的工作原理、工作特點,對其深刻的討論,與此同時,對于小型站點來說,最好服務器的選擇,其次,利用所學的知識點分析所做的系統,并在此基礎上設計。
目前本系統已經上線,正在試運行階段,用戶反饋良好,基本完成用戶所需,試運行過程中沒有出現阻斷性問題,有一些不足和小問題也及時予以修正,系統上線后,為了保證數據的安全性,對系統進行了備份操作,系統備份是每兩個月備份一次,數據庫備份為每周備份一次,系統部署在租賃的云系統服務器中。
本次系統上線成功后,得到了用戶的高度認可,但是在功能上和性能上還需做進一步的研究處理,使其有更高的性能和更好的用戶體驗。
系統在以后的升級過程中,需要解決一系列用戶所提出的問題,例如打印過程中如何避免瀏覽器的兼容性問題,大量用戶訪問時,如何保持較高的響應速度,在系統今后的升級過程中將著重解決這些安全性問題。
參考文獻
[1]劉在英,楊磊. 一種基于SpringBoot框架的企業進存銷系統的設計方法[P]. 山東省:CN114003204A,2022-02-01.
[2]陳碧勇,方敏,申志奎. 基于springboot actuator的監控組件擴展方法[P]. 福建省:CN113961417A,2022-01-21.
[3]熊柏祥.基于Springboot和Vue框架的考試資源服務平臺的設計與實現[J].信息與電腦(理論版),2022,34(01):97-99+103.
[4]霍福華,韓慧.基于SpringBoot微服務架構下前后端分離的MVVM模型[J].電子技術與軟件工程,2022(01):73-76.
[5]陳曉華. 一種基于springboot框架校友信息管理系統[P]. 重慶市:CN113641510A,2021-11-12.
[6]蘇文強,劉紫陽,苗玉恒.基于SpringBoot的缺陷管理系統設計與實現[J].大眾科技,2021,23(10):4-6+10.
[7]王萍.SpringBoot項目中EhCache緩存技術的實現[J].電腦知識與技術,2021,17(29):79-81.
[8]吳思瑩,張坤濤,王世華.基于Android的校園購物系統的設計與實現[J].電子技術與軟件工程,2021(14):45-47.
[9]Fuyuan Cheng. Talent Recruitment Management System for Small and Micro Enterprises Based on Springboot Framework[J]. Advances in Educational Technology and Psychology,2021,5(2).
[10]劉欣,李亮亮,牛聰. 基于Vue和SpringBoot框架的流域監管平臺的研究和應用[C]//.第十一屆防汛抗旱信息化論壇論文集.,2021:118-122.
[11]Guanhong Chen,Jiangming Xu. Design and implementation of efficient Learning platform based on SpringBoot Framework[J]. Journal of Electronics and Information Science,2020,6(1).
[12]Jian Chen,Chen Jian,Pan Hailan. Design of Man Hour Management Information System on SpringBoot Framework[J]. Journal of Physics: Conference Series,2020,1646(1).
[13]羅業丁,楊振南,賀英健.基于WEB前端技術的校園購物網站的設計與實現[J].信息記錄材料,2020,21(08):209-210.
[14]不公告發明人. 一種基于校園的網絡超市購物系統[P]. 湖南:CN108280665A,2018-07-13.
[15]郭峰,麻強.基于敏捷方法的校園拼單購物系統分析與設計[J].中國新技術新產品,2018(02):28-30.
[16]賈峰.校園電商平臺中購物車的設計與實現[J].河北軟件職業技術學院學報,2017,19(02):63-64.
[17]劉利琴.校園購物網站下用戶體驗模型設計與實現[J].赤峰學院學報(自然科學版),2017,33(06):20-21.
致謝
時光飛逝,轉眼間我在學校的這些年生活即將結束,回顧這幾年的學習生活,收獲良多,既有幸福也有難過,學校生活的結束對于我來說也是一個新的開始。論文即將完成,在此,我心中有許多想要感謝的人。首先感謝我的導師,不僅在學習研究方面加以指導,也在生活和為人處世上給予幫助。還要感謝授課老師,你們嚴謹的學術精神和積極向上的工作態度都在激勵我的成長和進步。感謝多年來一直生活在一起的室友,謝謝你們多年來的陪伴和照顧。最后,要感謝各位論文評審老師,感謝您們在百忙之中抽空評閱本論文并給出寶貴的意見和建議
免費領取項目源碼,請關注點贊+私聊
總結
以上是生活随笔為你收集整理的(附源码)spring boot校园购物网站 毕业设计041037的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql杀掉sql语句,Mysql使用
- 下一篇: 深度解析UG二次开发装配的部件事件、部件