《基于SSM和SpringBoot商鋪系統設計與實現》16000字_第1頁
《基于SSM和SpringBoot商鋪系統設計與實現》16000字_第2頁
《基于SSM和SpringBoot商鋪系統設計與實現》16000字_第3頁
《基于SSM和SpringBoot商鋪系統設計與實現》16000字_第4頁
《基于SSM和SpringBoot商鋪系統設計與實現》16000字_第5頁
已閱讀5頁,還剩36頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

共3頁第1頁基于SSM和SpringBoot商鋪系統設計與實現[摘要]隨著社會經濟的發展,市場活力的上升,以及互聯網信息技術廣泛、深入地應用到人類社會的各個領域并發揮著越來越重要的作用。居家經濟成為了一種新的經濟模式。人們在任意時間地點就可以通過網購進行所需物品的交易。電子商城是居家經濟模式的一個重要組成部分,依托于分布式開發技術,集合了商品展示、商品挑選、購買支付等功能,為人們提供了一站式的網絡購物服務。系統搭建使用基于SSM框架,通過項目管理工具Maven將三個框架整合在一起進行項目構建和依賴管理;系統同時使用面向服務的分布式技術。項目運用SSM快速迭代出商鋪1.0,再結合SSM轉型成SpringBoot的思路,切換到商鋪2.0。云部署等實用技術點。本系統使用Eclipse開發工具進行開發調試,前臺使用Html、Css、JavaScript以及SUIMobile快速實現響應式頁面,數據使用Redis緩存,后臺使用Spring、SpringMVC、Mybatis框架進行初步開發,使用SpringBoot進行升級改造。本系統使用MySQL來存取數據并實現相應的增刪改查的功能。[關鍵字]:SSM框架,SpringBoot框架,商城。目錄1.引言 31.1項目開發目的 31.2.項目開發意義 31.3研究現狀 41.3.1國內研究現狀 41.3.2國外研究現狀 42.系統需求分析 52.1系統需求概述 52.2系統需求分析 52.2.1登錄注冊功能需求分析 52.2.2商品搜索功能需求分析 62.2.3購物車功能需求分析 72.2.4訂單功能需求分析 82.2.5支付功能需求分析 92.2.6商品管理功能需求分析 102.2.7內容管理功能需求分析 102.3系統非功能需求分析 113.系統概要設計 123.1系統邏輯架構概要設計 123.2系統功能概要設計 133.2.1登錄功能概要設計 133.2.2注冊功能概要設計 133.2.3商品搜索功能概要設計 133.2.4購物車功能概要設計 133.2.5訂單功能概要設計 153.2.6商品管理功能概要設計 153.2.7內容管理功能概要設計 153.3系統使用框架和技術 153.3.1MVC設計模式 163.3.2Spring+SpringMVC+MyBatis框架 163.4其他技術 223.4.1系統管理工具Maven 223.4.2數據庫緩存Redis 234.數據庫設計 234.1數據庫設計原則 234.2數據庫E-R圖設計 244.3數據庫表的設計 245.詳細設計 305.1系統的基本流程 305.2店鋪信息界面 325.3商品管理界面 325.4類別管理界面 335.5消費記錄頁面 345.6授權管理界面 345.7商城首頁 356.功能測試 366.1注冊登錄功能測試 366.2店鋪管理功能測試 366.3商品管理功能測試 376.4搜索功能測試 386.5綁定本地賬號密碼功能測試 396.6店員信息錄入測試 396.7地區查詢測試 397.總結與展望 397.1總結 397.2展望 40參考文獻 411.引言1.1項目開發目的 由于網絡信息技術日益發展壯大,逐漸廣泛、深入地應用到人類社會的各個階層領域并發揮著相當重要的作用。因此計算機軟件技術應用于日常生活中是發展的必然。網上購物作為一種新的購物形式,正逐漸取代實體店購物,成為人們日常購買商品的方式和習慣。而消費能力巨大的網購市場正催生著線上商城的發展。電子商城不斷改進自身的架構,順應用戶對于商城的要求。作為計算機應用不可或缺的一部分,將大量復雜的數據交給計算機來處理,有著手工處理所無法企及的特點。這些特點能夠極大程度的減少人工任務量從而提升信息管理的速度及質量,是真正意義上的合理利用資源。1.2.項目開發意義網絡商城是指通過計算機互聯網技術搭建而成的電子交易平臺。用戶通過網絡商城進行網上下單和網上交易。在電子商城,人們可以享受同在實體店一樣的服務。通過瀏覽商品詳情了解商品的信息,獲取商品的價格、圖片甚至商品規格;通過購物車功能,像實體店的購物車一樣,將心儀的商品放入購物車;通過虛擬支付,在線支付商品訂單,無需花費多余的路程、時間和金錢,隨時可以進行交易;可以通過一鍵退款,將不合適的商品退貨,避免了人工的交流成本;通過瀏覽店鋪的信譽指數、開店年限和商品的評價詳情,獲得欲購買商品更多有價值的信息,使得選購的商品擁有更加可靠的來源和放心的品質。因此在全球經濟飛速發展,經濟一體化的大背景下,人們消費的需求逐年上升,對消費的便捷性和快速性也有著越來越高的要求。人們通過足不出戶的方式任意時刻地點的進行消費購物。在家收取貨品、一鍵下單、一鍵支付、一鍵退款成了人們習慣的消費方式。用戶的大規模網購需求使電子商城在服務體驗等環節中加速發展的同時,也對電子商城的硬件架構提出了更高的要求。一方面在大數據時代,網站需要對大量的數據進行存儲、分析和處理。比如面對不斷增長的用戶,網站的用戶管理功能需要存儲用戶的個人信息,存儲用戶的行為信息用于網站對特定用戶進行特定化的服務;商城規模的增加,使得商品種類和商品數量也在增加,這些都需要網站進行合理化的存儲分配,來保證數據存儲的安全性、訪問的及時性、可靠性和可擴展性。另一方面,網站本身需要根據業務的需求時時更新,靈活的架構不僅要支撐當前的業務,也需要應對未來的挑戰,而健壯的架構需要保證不停歇的為消費者提供服務,不出現無法訪問、頁面錯誤、丟失數據甚至宕機的情況。鑒于互聯網的優勢,我決定以使用SSM框架和SpringBoot框架做出一個百貨商鋪系統。1.3研究現狀1.3.1國內研究現狀我國的網絡購物的背景不長,第一筆成功交易的訂單是1998年3月6日下午3:20,隨后中國的網絡購物才逐步出現在大眾的視野中。1999年底,互聯網開始沸騰,國內開始有300多家網絡公司從事B2C這個行業。2000年,遞增至700余家,但讓人熟知的卻僅三四家。直至SARS的出現,人們才開始熱愛上了足不出戶的購物方式,于是,購物網站開始逐漸的成功,從而到發展了今天。如今的購物網站主要有以下幾個發展優勢:(1)商品送貨上門、購買快捷方便。(2)價格低廉、優勢明顯。(3)商品種類齊全、可購買到當地沒有的商品。(4)節約時間、提高效率。(5)交易透明、信息公開。1.3.2國外研究現狀在歐美等信息化程度較高的國家和地區,相較于國內有著更完善的產權保護和物流配送流程。這使得國外的網絡購物得以安全飛速的成長。調查表明,美國的家庭已經習慣于在網上購物。互聯網信息量大,傳播迅速,而且信息傳遞不受時空的限制,可以不限時間地點且不需要人力就可以提供銷售服務。在法、德等歐洲國家,就二手類交易平臺對于整個電子商務所產生的營業額可占電子商務總額的1/8,在美國則已高達1/6以上,而歐美國家網上電子商務的開展也不過才十幾年的時間。2.系統需求分析2.1系統需求概述系統分為前臺和后臺兩個子類系統,用戶分為普通用戶和系統管理員。前臺系統為商城操作系統,用于向用戶展示商品頁面,提供搜索工具。前臺頁面包括地區分類、商品分類、商品圖片、商品價格等基本信息,搜索工具提供地區和商品的搜索服務。前臺系統對普通用戶進行服務:普通用戶區分為注冊和未注冊用戶。未注冊的用戶僅僅可以搜索瀏覽商品、查看店鋪;注冊用戶且已登錄的用戶可以瀏覽添加商品、店鋪、查看購物車和訂單信息、支付購買商品;注冊但未登錄用戶在使用購物車、訂單功能時需要先進性登錄;登陸時需要輸入賬號密碼;下訂單時需要填寫提交相關收貨信息才能進行支付操作。后臺系統為管理系統。系統管理員登錄后臺管理系統,可以選擇相關選項對系統進行管理,不同選項按鈕提供不同的功能,包括提供地區分類管理、商品管理、商品分類管理等功能。具體系統功能劃分如圖2-1所示。圖2-1系統功能劃分2.2系統需求分析2.2.1登錄注冊功能需求分析登錄注冊功能是商城基本功能,商城通過保存注冊用戶的信息管理用戶,為用戶提供完整的服務,同時可以通過統計用戶的注冊量和訪問量來判斷用戶行為,根據用戶行為對商城進行改進,促使商城不斷的發展。未登錄的用戶屬于游客,可以使用的功能是:系統的瀏覽功能,部分的購物車功能,訂單和支付功能無法使用;已登錄用戶成為該系統的會員,前臺全部的功能都對會員進行開放。(1)游客輸入網站地址進入商城首頁,選擇“注冊”按鈕,隨后系統跳轉到注冊管理頁面,用戶填寫相關個人信息進行注冊,如果信息合法則提示“注冊成功”,并跳轉到登錄頁面;反之提示“注冊失敗”,顯示非法數據位置,引導用戶重新注冊。(2)已注冊用戶點擊“登錄”進行系統登錄,并跳轉到登錄頁面,用戶填寫賬號密碼登錄,填寫正確提示“登錄成功”;反之提示“登錄失敗”,用戶重新登錄。用例圖如圖2-2所示。圖2-2注冊登錄用例圖2.2.2商品搜索功能需求分析搜索功能為用戶提供快速便捷的查找商品的服務,在搜索框中輸入名稱或關鍵字即可獲得目標商品的信息。搜索后系統直接顯示出符合搜索條件的商品,向用戶展示商品的詳情頁面;用戶搜索商品的關鍵字,系統顯示模糊查找到的相關商品列表,用戶在列表中選擇目標商品。搜索功能一般提供給有特定目標的人群,并且不受登錄注冊的限制,游客也可以使用。用戶在商城首頁的搜索框輸入想購買商品的名稱或關鍵字,系統在數據庫中迅速查詢該商品。如果存在,則返回商品詳情頁;如果查詢失敗,系統則返回沒有找到商品的提示信息。用例圖如圖2-3所示。圖2-3搜索用例圖2.2.3購物車功能需求分析購物車是用戶保存欲購買商品和喜愛商品的一個表單。如果用戶在瀏覽過程中有需要購買的商品或者不確定是否需要購買的商品,可以將其先行保存在購物車中。購物車可為未進行登錄的用戶在一定時間內提供保存商品的服務,為登錄的用戶永久提供商品保存服務。未登錄用戶可以將商品添加到購物車,查看購物車信息,但無法進行提交訂單的操作,若需使用,則需登錄。(1)用戶在商品詳情頁點擊添加至購物車選項,即可將當前商品添加至購物車。(2)當用戶不需要改商品時可在購物車頁面內選擇移除該商品。(3)用戶在購物車頁面內點擊對應商品旁邊的“加號”則可增加該商品的數量,總價則根據所增加的商品價格進行同步更改,反之同理。(4)用戶在瀏覽商品頁面時可以點擊右下角的購物車圖標進入購物車頁面,查看已添加的商品詳情。(5)未登錄的用戶在購物車頁面點擊“去結算”按鈕,系統引導用戶先進行登錄操作,并跳轉至相應界面;若已登錄,則跳轉到購物車商品列表頁面。用例圖如圖2-4所示。圖2-4購物車用例2.2.4訂單功能需求分析訂單展示用戶最終需要購買的商品,商品價格,同時生成用戶的收件地址等收貨信息。用戶通過訂單功能,查看購買商品的種類、數量和價格是否有錯誤;通過填寫或在已有的收貨地址中選擇,確保可以準確的收到商品;通過訂單功能,可進入支付頁面進行支付操作。(1)用戶通過點擊購物車中的“結算”按鈕,進入訂單頁面;如未登錄,則系統引導用戶進行登錄操作;反之則跳轉到訂單頁面。(2)用戶在訂單中查看購買物品的信息,如果信息錯誤或者用戶希望返回購物車修改有購買欲望的商品,則用戶點擊返回購物車按鈕可返回到購物車頁面。(3)初次使用訂單功能的用戶需要填寫收貨地址、收貨電話等信息,點擊“保存”,收貨信息保存到數據庫中,用戶再次登錄可選擇已經填寫的信息,無需再次填寫。(4)用戶填寫收貨信息,系統獲取數據庫中當前賬號以往收貨信息列表,用戶在列表中選擇之前的收貨信息或新增收貨信息。(5)用戶確認無誤后,點擊“結算”按鈕,跳轉進入支付頁面。如圖2-5所示。圖2-5訂單用例圖2.2.5支付功能需求分析系統為用戶提供第三方的在線支付功能,對接支付寶,微信系統。(1)用戶在訂單頁面點擊“提交”按鈕從而跳轉到支付頁面,點擊“返回”則返回至購物車頁面。(2)用戶在支付頁面選擇自己需要的第三方支付方式,點擊“支付”按鈕,系統彈出第三方支付平臺,引導用戶完成商品支付流程。(3)支付頁面商品價格信息、用戶的購買數量和需要付款的金額大小。用例圖如圖2-6所示。

圖2-6支付用例圖2.2.6商品管理功能需求分析商品管理由系統管理員通過后臺管理界面對商品進行操作,包括新增商品、查詢已有的商品列表。(1)管理員在瀏覽器輸入后臺管理系統的網址進入后臺主頁,點擊“新增商品”選項,系統彈出商品信息輸入框,管理員輸入商品名稱、商品類別、價格以及對應積分等信息并提交,系統對輸入的信息進行核驗,如果核驗成功,則返回新增商品成功。(2)管理員通過點擊查詢選項,系統顯示查詢出的商品列表,每頁顯示部分商品,管理員通過下拉列表欄來查看完整商品列表。用例圖如圖2-7所示。圖2-7商品管理用例圖2.2.7內容管理功能需求分析網站內容的管理是對網站前端展示內容的管理。(1)管理員點擊“分類管理”按鈕,系統按照商品分類的樹形結構進行展示,包括父節點和子節點。(2)管理員點擊“新增”按鈕,跳轉到新增頁面,管理員輸入新增的分類名稱、權重、所屬區域,系統新增相應的內容分類。(3)管理員點擊“新增商品”按鈕,系統顯示商品分類列表,管理員選擇將要添加分類的節點,如果選中的不是分類樹的葉子節點,系統提示無法在該節點添加商品,管理員需要重新選擇;如果選中的是分類樹的葉子節點,系統彈出商品內容輸入框,管理員填寫商品內容信息并提交,系統返回“添加商品內容成功”的提示信息。用例圖如圖2-8所示。圖2-8內容管理用例圖2.3系統非功能需求分析易使用性:系統的用戶大多數為未受過專業培訓的普通人,系統的頁面設計需要美觀大方,布局分配合理,突出商城的熱銷商品和推薦購買商品,根據不同的節日更換不同的主題頁面。系統的操作流程不能繁瑣,符合用戶購買商品的思維習慣。安全性:由于用戶在購買商品時,向商城提供了個人私密信息,系統需要保證用戶的信息不外泄。用戶填寫的登錄密碼,系統應加密保存,防止除用戶以外的其他使用者登錄該用戶的賬號,進行非法操作,造成用戶的經濟損失。即時響應:用戶進行操作時,系統的響應速度應在1秒以內。系統使用異步更新的方式,用戶填寫信息,系統實時驗證并反饋,無需用戶提交等待。可靠性:系統應具有健壯性,除系統維護階段,應24小時保證用戶可以正常使用系統功能。在對系統更新、系統業務擴充時,不影響用戶正常使用原有功能。并發性:在商城進行特殊的促銷活動時,或者特定的時間段和特定的節假日,商城的在線人數將是平時的幾十倍甚至幾百倍,系統需要有應對高并發的能力,保證系統在用戶高并發量訪問時正常工作,不宕機。系統在高并發的時間段無需保證非重要數據的實時同步,相對不重要的數據可在系統相對空閑時再進行數據同步。擴展性:為應對不斷擴大的業務,系統架構應靈活,具備可擴展性,在設計時滿足高內聚低耦合的要求。面向接口設計,擴展功能,添加新的模塊只需在原有系統中引入接口,更改特定模塊功能時只更換該模塊,不影響其他模塊的正常工作。3.系統概要設計3.1系統邏輯架構概要設計系統基于MVC的設計模式和面向服務的分布式架構,基于MVC的設計模式使系統分為Controller層,Service層和Dao層。Controller層構成面向服務架構的表現層,Service層和Dao層構成面向服務架構的服務層。系統邏輯架構圖如圖3-1所示。圖3-1系統邏輯架構Controller層:負責控制業務模塊的流程,以及視圖的轉換。Controller的目的是用于接收瀏覽器的請求并根據請求的不同調用不同的業務邏輯處理模塊進行隨后的操作處理。Service層:業務邏輯層,負責業務具體的邏輯處理模塊。Dao層:數據訪問層,可以與數據庫進行訪問以及增刪改的操作;當請求是查詢數據庫中的信息時,返回的是數據表中的數據對象;當請求為增加、刪除和修改時,返回結果為是否成功的布爾值。3.2系統功能概要設計3.2.1登錄功能概要設計用戶在登錄頁面輸入用戶名和密碼,系統首先校驗通過比對數據庫中的數據來判斷輸入的用戶名和密碼是否正確,如若不正確,則用戶需要重新輸入正確的信息;反之,將用戶名和密碼存入Session中。系統生成的令牌作為Session的鍵,用戶信息作為Session的值,將該鍵值對存儲在Redis的緩存中,保存用戶信息同時設置Session的過期時間,系統向用戶顯示登錄成功,將Session放入Cookie中,由用戶的瀏覽器攜帶,用戶再次登錄時,服務器讀取Cookie,取出SessionID,判斷兩次登錄是否為同一用戶。3.2.2注冊功能概要設計在登錄頁面的表單里填寫用戶名、密碼、郵箱和驗證手機號的基本信息,填寫后完成點擊注冊按鈕,將表單提交給后臺進行驗證。系統校驗用戶名、密碼或手機號任何一項是否為空或非法。如果為空,則提示“不能為空”;判斷輸入密碼和確認密碼是否相同,如果不同,則提示“重新輸入”。判斷輸入的信息是否符合要求,如不符合則提示“非法輸入”。如果以上校驗通過,則注冊頁面向后端發送請求,驗證用戶名、郵箱和手機號等個人專屬信息是否已經在數據庫中存在。如果用戶不存在,則注冊成功,系統將用戶信息存入數據庫;如果用戶的任意一項或多項信息存在,則返回給用戶提示信息“注冊失敗”,用戶重新填寫。3.2.3商品搜索功能概要設計用戶進行搜索時,首先在搜索框中輸入查詢條件,系統根據查詢條件查詢索引庫中是否有符合該條件的數據,如果搜索到商品列表,則將該商品列表及總頁數返回,并根據設置的每頁可顯示商品數顯示商品;如果沒有搜索到商品列表,則系統向用戶返回沒有查詢到相關商品的提示信息。3.2.4購物車功能概要設計登錄判斷購物車分為未登錄狀態下的購物車和登錄狀態下的購物車,用戶是否進行了登錄操作決定著系統將用戶個人的購物信息暫時存儲到哪個位置。當用戶使用購物車時,系統首先區分用戶是否進行了登錄操作,通過登錄系統從用戶的Cookie中獲取的登錄信息Session中的token,如果token沒有值,說明用戶暫未登錄,則購物車信息保存在Cookie中;如果取到token信息,但調用登錄系統判斷token已過期,說明用戶登錄過期,則購物車信息保存在Cookie中;反之未過期,則說明用戶是登錄狀態,則將購物車中的相關商品信息保存于Redis中;如果用戶先在未登錄時添加了購物車,然后進行登錄操作,則系統將Cookie和Redis中的購物車合并為一個購物車,將其信息存儲在Redis中。未登錄狀態的購物車功能1.添加商品功能添加商品到購物車時,從Cookie中取出購物車的列表,判斷該列表是否存在。如果存在,則將相應商品的數量相加;如果列表不存在,則根據取到的商品ID查詢商品的信息,把商品添加到商品列表,向用戶返回商品已經成功添加到購物車的提示信息。2.查看購物車列表功能用戶點擊“去結算”按鈕,系統會跳轉到購物車列表頁面,展示用戶添加進去的商品信息,系統從用戶的Cookie中獲得對應的商品列表,3.刪除商品功能用戶如若需要刪除商品,則系統從用戶的Cookies中獲得購物車列表相關信息,并遍歷該列表,找到用戶要刪除的商品項,隨后將該商品的相關信息全部刪除,最后將新的購物車列表寫回到Cookie里,刪除成功,系統返回新的購物車列表。登錄狀態的購物車功能1.添加商品功能當用戶在登錄狀態下進行操作向購物車添加商品信息時,是向Redis中添加購物車的信息進行存儲,Redis中存放數據的形式以鍵為用戶ID,值為哈希值。哈希值的鍵為商品ID,值為商品信息。添加時分兩種情況,如果商品的ID存在,則將相同商品的數量進行累加;反之不存在,則根據商品ID從數據庫中取出商品的信息并存入在Redis中。2.展示購物車列表用戶點擊“去購物車結算”后,系統接收url請求跳轉到購物車列表展示頁。如果用戶登錄前并沒有向購物車中添加任何商品,則用戶Cookie中的商品信息部分為空,系統從Redis緩存中取出用戶登錄后保存的購物車信息并展示;如果用戶在登陸前和登陸后均向購物車添加商品,然后點擊“去購物車結算”按鈕,則系統會從用戶的Cookie中和Redis緩存中取出購物車信息并將其合并展示。3.刪除商品功能用戶點擊“刪除商品”,系統將緩存中存放的商品數據刪除。3.2.5訂單功能概要設計用戶在購物車頁面點擊“去結算”時,系統首先使用攔截器攔截用戶的申請,其次判斷用戶是否已經登錄;如果用戶還未登錄,則系統跳轉到登錄界面引導用戶進行登錄操作,登錄完成后自動跳轉到訂單頁面;如果已登錄,則系統直接跳轉到訂單頁面。展示收貨地址和購物車中商品的列表。3.2.6商品管理功能概要設計1.商品添加店家管理員在后臺管理系統內點擊添加按鈕會跳轉到添加商品頁面,隨后填寫商品價格、圖片、對應積分、所屬分類等相關信息,點擊提交按鈕進行提交操作給系統,系統根據表單生成商品的ID,并在表單對象中插入創建時間、更新時間等屬性并存入到數據庫中。2.商品查詢管理員在后臺管理系統中輸入相關信息并點擊“查詢商品”按鈕,系統會查詢數據庫獲得商品列表并展示出來,并利用分頁插件PageHelper,將查詢到的列表分頁顯示。顯示的頁面中包括查詢到的商品列表、總頁數、當前頁數、每頁記錄數。3.2.7內容管理功能概要設計1.內容分類管理系統管理員點擊“內容分類管理”按鈕,系統根據請求加載和顯示內容分類的樹形列表,如果管理員選擇父節點,則系統無需加載葉子節點;如果管理員選擇葉子節點,則系統根據父節點ID查找葉子節點并顯示。管理員點擊相應節點添加分類信息,隨后系統進行接收分類信息并將其添加到數據庫中保存,返回成功的提示信息。2.內容管理系統管理員點擊“內容管理”按鈕后,系統開始加載出內容分類的列表,根據管理員點擊的分類按鈕進行相關的判斷;如果管理員點擊的是父節點,則系統根據父節點ID查找子節點并顯示;反之如果點擊的是子節點,則系統根據子節點ID查找數據庫中屬于該子節點的商品列表并顯示。管理員在顯示出的列表中新增商品后,系統接收新增商品的數據并插入到相應數據表中,返回添加內容成功提示信息。3.3系統使用框架和技術基于JavaEE的企業級開源框架數量眾多,選用合適的框架可以在節約人力物力成本的同時最大化滿足系統對于功能和性能的要求。合適的框架可以事半功倍,而不合適的框架可能給系統帶來不可預期的負面效果,甚至拖垮整個系統。3.3.1MVC設計模式MVC設計模式是目前互聯網系統常用的架構設計模式,其中的M指模型,包含了系統中的各種數據;V指視圖,負責將模型的數據包裝成頁面展現給用戶;C指控制器,負責接收用戶請求并控制業務層處理請求。MVC設計模式的優點是將系統解耦成單一功能的模塊,方便增加刪除和替換。當業務增加時,不用重構原有系統,只需在原有系統中添加接口即可實現功能的變動。其結構如圖3-2所示:圖3-2MVC設計模式圖3.3.2Spring+SpringMVC+MyBatis框架Spring框架Spring是一個分層的應用輕量級開源框架。擁有web層、業務層和持久層的一站式解決方案.兩大核心為控制反轉和面向切面。Spring容器在系統中負責自動裝載和創建Java資源,Java資源也稱JavaBean。同時通過在JavaBean的配置文件中配置類與類依賴關系描述的方式,使對象關系解耦,達到簡化開發,方便集成其他開源框架和第三方類庫的目的。Spring框架結構圖如圖3-3所示。圖3-3Spring框架結構圖SpringMVC框架SpringMVC是一種基于MVC設計模式,使用Java語言實現的請求驅動類型的輕量級Web框架,將web層進行職責解耦。SpringMVC框架各模塊之間協調運作,處理用戶發送的請求,并將處理后的結果,返回給用戶使用。SpringMVC的6個組件具體如下:DispatcherServlet前端控制器:用在接收用戶發送的請求的情況下。當用戶在瀏覽器輸入url訪問地址時,訪問請求會最先到達DispatcherServlet,再通過DispatcherServlet調用其他的SpringMVC組件來完成其它工作,前端控制器的存在極大的降低了模塊之間的耦合。HandlerMapping處理器映射器:用于接受前端控制器的調用,并且根據需要請求的url找到對應于該url的處理器,生成處理器Contrller和處理器適配器HandlerAdapter的對象,返回給前端控制器。HandlerAdapter處理器適配器:該適配器是設計模式中適配器模式的應用,其功能是對處理器Controller進行執行。Controller處理器:Controller處理器接受HandlerAdapter處理器映射器的調用,并返回ModelAndView。ViewResolver視圖解析器:ViewResolver負責view視圖的解析,并將視圖進行渲染,渲染后的結果以頁面的形式發送返回瀏覽器,然后瀏覽器將該頁面展示給用戶使用。View視圖:View視圖是一個接口,它通過頁面模板技術或頁面標簽將模型數據以前端頁面的方式展示給用戶使用,具體的頁面根據需要的不同需求進行開發。SpringMVC的框架結構圖如圖3-4所示。圖3-4SpringMVC框架結構圖MyBatis框架MyBatis的框架結構分別是如下幾個部分:配置加載:MyBatis的配置來源于配置文件和Java的注解,MyBatis通過傳入參數的映射配置的方式,執行相關的SQL語句和結果映射配置,將SQL語句的配置信息加載成一個MappedStatement對象并存儲在內存中。SQL解析:API接口層接收傳入的SQL語句ID和可以包括基本類型、JavaBean的對象,MyBatis可以根據ID找到對應期望的MappedStatement,再參考傳入參數的對象對后者進行解析,之后得到要執行的SQL語句和參數。SQL執行:先將經過SQL解析得到的SQL語句和參數放入數據庫中執行,最后得到相關結果。結果映射:將SQL語句執行后的結果按照映射的配置的方式轉換成對應的JavaBean或者基本數據類型,最后將得到的最終結果返回。框架結構圖如圖3-5所示。圖3-5MyBatis框架結構圖SpringBoot簡介用微服務框架Springboot對平臺進行二次開發,采用服務化的組件開發模式,實現了復雜的業務功能。SpringBoot首先繼承了原有Spring框架的長處,全新型微服務系統基礎架構。該框架使用了自己特定的方式進行配置,不需要定義樣版化配置,內部含有Tomcat的應用服務,優化了Maven的配置減少了開發人員的工作量,還提供了startPOM來進行包管理,同時快速啟動一個web容器,內部含有servlet容器,因此降低了其對環境的要求,可以使用命令直接執行項目。在開發完整功能的微服務時,會遇到所有繁瑣的事情。采用SpringBoot可以在很大程度上來簡化開發模式,開發人員想要集成自己習慣的常用框架時它都有對應的組件支持。它具有以下特點:(1)使用Spring項目引導頁面可以在幾秒構建一個項目,方便快捷。(2)創建后就可使用,無代碼生成,也無需配置XML文件,也可以修改相關默認值進而來滿足特定的需求。(3)方便對外輸出各種形式的服務,如RESTAPI、WebSocket、Web、Streaming、Tasks。(4)非常簡潔的安全策略集成。(5)支持關系數據庫和非關系數據庫。(6)內部包含了一些大型項目中常見的非功能性特性,支持運行期內嵌容器,如Tomcat、Jetty。(7)SpringBoot自動管理相關依賴,自帶應用的監控。(8)強大的開發包,支持熱啟動。MySQL數據庫簡介MySQL數據庫原本是由瑞典的名為MySQLAB公司開發的中小型數據庫管理系統,但在2009年被甲骨文公司收購,現在是其旗下的一個成熟的開源產品。它是世界范圍內使用非常廣泛的數據庫之一,根據數據庫權威網站DB-Engines(/)的數據統計,截止2021年5月為止,MySQL位于排行榜第二名的位置,具體如圖3-6所示圖3-6數據庫排行榜MySQL使用者人數眾多,在其發展歷程中,經過原始開發者以及社區愛好者不斷增強與改進,目前MySQL運行穩定,架構清楚,源代碼質量高。其特點如下:(1)支持多線程,繼而可以充分利用數據庫所在操作系統平臺下的CPU資源。通過服務器/多客戶端的形式支持多進程,即支持多用戶同一時間連接一個MySQL數據庫服務器。(2)自身攜帶的優化器在很多時候可以極大程度優化用戶編寫的SQL查詢語句,提高查詢速度。(3)為了提高通用性,MySQL提供了許多國家語言的編碼支持,現在通常使用utf-8編碼,該編碼能夠支持世界上幾乎所有的語言。(4)提供TCP/IP、ODBC等多種途徑進行客戶端與服務器的通信。(5)可以快速處理擁有上千萬條記錄的數據表,每一記錄代表一行數據。(6)日志系統確保機器故障之后能夠快速恢復。圖3-7MySQL結構圖3.4其他技術3.4.1系統管理工具MavenMaven是一個使用在Java項目管理的跨平臺的自動化構建工具,在系統中的職責包括三大模塊分別是如下:項目構建:Maven的特點導致主動免除了手動搭建項目的繁瑣流程,提供了項目清理、初始化、編譯、測試、打包、部署等主要構建步驟,這些步驟由Maven內置插件完成,無需手工編寫腳本文件,減少了程序員的任務量。依賴管理:由于java應用中包含的大量第三方類庫,這些類庫因為相互依賴而可能導致版本沖突和依賴臃腫。通過在Maven的配置文件pom中加入依賴,即一個標識構件名字、版本、倉庫中所在位置的坐標,Maven自動在本地或中央倉庫尋找構件。由于其具有傳遞性依賴的機制,模塊只需要配置直接依賴,間接依賴從上一層模塊繼承。項目信息管理:Maven的pom配置文件中集中配置了模塊所依賴的其他模塊以及插件信息,通過修改查看pom文件就可以完成項目信息的管理。在系統中,因為系統被拆解成了許多獨立的Maven項目,項目之間協調運行,因此使用Maven的聚合特性將各個項目聚合在一起構建,提取出父Maven項目,用于管理子項目依賴信息,子項目在父項目中選取所需依賴進行配置。3.4.2數據庫緩存RedisRedis是一個高性能的key-value非關系型的數據庫,也稱為數據結構存儲服務器。Redis是基于內存運行的,查詢效率高于關系型數據庫且具有良好的容災性。有五種數據結構:字符串、列表、哈希、集合、有序集合,這五種數據結構都是以鍵值對的方式存在,使得Redis具有良好的靈活性。因此本系統使用Redis作為數據庫的緩存,Redis介于服務層與持久層之間,存儲前臺訪問量高的數據。查詢數據時,先在緩存中查詢,若命中,則Redis直接將數據返回給用戶;反之,通過Redis訪問后端MySQL數據庫,再返回數據。4.數據庫設計4.1數據庫設計原則本系統用到高性能的數據庫MySQL和Redis,兩種不同類型數據庫的結合有效優化了數據讀取的性能,使系統能快速響應請求。對于MySQL數據庫,主要存儲各類用戶信息在硬盤上。MySQL對表的設計要求遵循基本范式標準,每個基本項屬性不可再分,非主鍵字段依賴主鍵,非主鍵字段之間不能互相依賴。數據類型越小運行的越快,因此數據類型的設計要盡可能簡單,從而減少需要的CPU周期和CPU緩存。在索引的使用方面不要過度,當MySQL在對表進行增加、刪除、修改等操作時,索引需要一起更新,索引的創建和維護等均對時間空間有影響,降低查詢效率。對于Redis數據庫,主要存儲商品信息在內存中。使用非關系型數據庫可以最大程度提高查詢速度。通過Redis將不常變化的數據存儲在內存中,數據信息有變更時刷新到硬盤中,Redis數據庫的使用可以減少訪問磁盤數據庫的次數,需注意每個key所對應的數據不能過大。4.2數據庫E-R圖設計E-R圖描述了系統數據庫中數據表之間的關系。E-R圖如圖4-1所示。圖4-1E-R圖4.3數據庫表的設計本系統數據表分為地區表、獎品信息表、銷售記錄表、商品分類表、頭條輪播等表。每個表的設計包括表的字段、類型、字段大小、約束和注釋。地區表:tb_area字段數據類型字段大小約束注釋area_idint10非空、主鍵地區編號area_namevarchar200非空地區名priorityint10非空權重create_timedatetime默認空創建時間last_edit_timedatetime默認空最后編輯時間獎品信息表:tb_award字段數據類型字段大小約束注釋award_idint10非空、主鍵獎品編號award_namevarchar256非空獎品名award_descvarchar1024默認空獎品描述award_imgvarchar1024默認空獎品圖pointint20非空積分priorityint101默認空權重create_timedatetime默認空創建時間last_edit_timedatetime默認空最后編輯時間enable_statusint非空狀態shop_idint10默認空、外鍵店鋪編號銷售記錄表:tb_product_sell_daily字段數據類型字段大小約束注釋product_idint10非空、主鍵、商品圖編號shop_idint10非空、外鍵圖片路徑create_timedatetime默認空圖片描述totalint10非空權重頭條輪播表:tb_head_line字段數據類型字段大小約束注釋line_idint10非空、主鍵頭條編號line_namevarchar1000非空頭條名稱line_linkvarchar2000非空頭條鏈接line_imgvarchar2000非空頭條圖片priorityint10非空權重enable_statusint2非空狀態create_timedatetime默認空創建時間last_edit_timedatetime默認空最后編輯時間商品分類表:tb_product_category字段數據類型字段大小約束注釋product_category_idint10非空、主鍵商品分類編號product_category_namevarchar100非空商品分類名priorityint10默認空權重create_timedatetime默認空創建時間shop_idint10非空、外鍵店鋪編號用戶信息表:tb_person_info字段數據類型字段大小約束注釋user_idint10非空、主鍵用戶編號namevarchar32非空用戶名profile_imgvarchar1024默認空簡介圖emailvarchar1024默認空郵箱gendervarchar2非空性別enable_statusint2非空狀態user_typeint10非空用戶類型create_timedatetime默認空創建時間last_edit_timedatetime默認空最后編輯時間用戶本地登錄信息:tb_local_auth字段數據類型字段大小約束注釋local_auth_idint10非空、主鍵用戶本地登錄編號user_idint10非空、外鍵用戶編號usernamevarchar128非空賬號passwordvarchar128非空密碼create_timedatetime默認空創建時間last_edit_timedatetime默認空最后編輯時間商品表:tb_product字段數據類型字段大小約束注釋product_idint10非空、主鍵商品編號product_namevarchar100非空用戶名product_descvarchar2000默認空簡介圖img_addrvarchar2000默認空郵箱normal_pricevarchar100默認空性別promotion_pricevarchar100默認空狀態priorityint10非空用戶類型create_timedatetime默認空創建時間last_edit_timedatetime默認空最后編輯時間enable_statusint2非空狀態product_category_idint10默認空商品分類編號pointint10默認空積分shop_idint10非空店鋪編號商品圖片表:tb_product_img字段數據類型字段大小約束注釋product_img_idint10非空、主鍵商品圖編號img_addrvarchar2000非空圖片路徑img_descvarchar2000默認空圖片描述priorityint10默認空權重create_timedatetime默認空創建時間product_idint10非空、外鍵商品編號店鋪信息表:tb_shop字段數據類型字段大小約束注釋shop_idint10非空、主鍵店鋪編號owner_idint10非空、外鍵擁有者編號area_idint10非空、外鍵區域編號shop_category_idint10非空、外鍵店鋪分類編號shop_namevarchar256非空店鋪名稱shop_descvarchar1024默認空店鋪描述shop_addrvarchar200默認空店鋪地址phonevarchar128默認空電話shop_imgvarchar1024默認空圖片地址priorityint10默認空權重create_timedatetime默認空創建時間last_edit_timedatetime默認空最后編輯時間enable_statusint10非空狀態advicevarchar255默認空狀態提示用戶店鋪信息表:tb_user_shop_map字段數據類型字段大小約束注釋user_shop_idint10非空、主鍵用戶店鋪編號user_idint10非空、外鍵用戶編號shop_idint10非空、外鍵商店編號create_timedatetime10默認空創建時間pointint10非空積分店鋪成員信息表:tb_shop_auth_map字段數據類型字段大小約束注釋shop_auth_idint10非空、主鍵店家編號employee_idint10非空、外鍵雇員編號shop_idint10非空、外鍵店鋪編號titlevarchar255默認空頭銜title_flagint10非空頭銜權限create_timedatetime默認空創建時間last_edit_timedatetime默認空最后編輯時間enable_statusint10非空狀態店鋪分類表:tb_shop_category字段數據類型字段大小約束注釋shop_category_idint10非空、主鍵店鋪編號shop_category_namevarchar100非空擁有者編號shop_category_descvarchar1000默認空區域編號shop_category_imgvarchar2000默認空店鋪分類編號priorityint10非空店鋪名稱create_timedatetime默認空店鋪描述last_edit_timedatetime默認空店鋪地址parent_idint10非空、外鍵父級店鋪編號獎品領取表:tb_user_award_map字段數據類型字段大小約束注釋user_award_idint10非空、主鍵用戶獎品編號user_idint100非空、外鍵用戶編號award_idint1000非空、外鍵獎品編號shop_idint2000非空、外鍵店鋪編號operator_idint10非空、外鍵上級編號create_timedatetime默認空創建時間used_statusint10非空狀態pointint10非空積分店家產品表:tb_user_product_map字段數據類型字段大小約束注釋user_product_idint10非空、主鍵店家產品編號user_idint10非空、外鍵店家編號product_idint10非空、外鍵商品編號shop_idint10非空、外鍵店鋪編號operator_idint10非空、外鍵上級編號create_timedatetime默認空創建時間pointint10非空積分用戶微信信息表:tb_wechat_auth字段數據類型字段大小約束注釋wechat_auth_idint10非空、主鍵用戶微信編號user_idint10非空、外鍵用戶編號open_idvarchar255非空開啟編號create_timedatetime默認空創建時間5.詳細設計5.1系統的基本流程 O2O商城的基本歷程如下,先瀏覽器中輸入網址則會跳轉到登錄界面,在登陸界面則輸入用戶名密碼進行登陸操作。如圖5-1所示:圖5-1輸入用戶名和登陸密碼后,系統判斷用戶身份信息并跳轉至特定頁面,例如本次身份信息為管理員,則顯示所有的店鋪相關信息,點擊進入則可以對相關店鋪進行編輯操作。如圖5-2、5-3所示。圖5-2圖5-3if(data.success){varshopCategoryList=data.shopCategoryList;varhtml='';html+='<ahref="#"class="button"data-category-id="">全部類別</a>';shopCategoryList.map(function(item,index){html+='<ahref="#"class="button"data-category-id=' +item.shopCategoryId+'>'+item.shopCategoryName+'</a>';});5.2店鋪信息界面在店鋪信息頁面可以填寫修改表單信息,填寫修改商鋪名稱、商鋪分類、所屬區域、地址電話、以及聯系方式,填寫完成點擊提交,將表單提交。系統校驗用戶名、或手機號任何一項是否為空。如果為空,則提交失敗;校驗輸入驗證碼碼和確認驗證碼碼是否一致,如果不一致,則提示“驗證碼錯誤”。如果以上校驗通過,則頁面向后端發送請求,提交修改信息。如圖5-4。圖5-4。varshopId=getQueryString('shopId');varisEdit=shopId?true:false;varinitUrl='/o2o/shopadmin/getshopinitinfo';varregisterShopUrl='/o2o/shopadmin/registershop';varshopInfoUrl="/o2o/shopadmin/getshopbyid?shopId="+shopId;vareditShopUrl='/o2o/shopadmin/modifyshop';5.3商品管理界面在商品管理頁面可以修改商品所對應的積分額度,點擊編輯進行修改商品名稱、排序優先級、商品、商品展示圖以及描述,填寫完成點擊提交,將表單提交。系統驗證輸入的驗證碼與期望的是否相同,如不同,則提示“驗證碼錯誤”。如果校驗通過,則頁面向后端發送請求,提交修改信息。如圖5-5、圖5-6。圖5-5圖5-6varproductList=ductList;vartempHtml='';productList.map(function(item,index){vartextOp="下架";varcontraryStatus=0;if(item.enableStatus==0){textOp="上架";contraryStatus=1;}else{contraryStatus=0;}5.4類別管理界面在類別管理頁面可以修改類別所對應的權重優先級,也可對某類商品進行下架刪除。也可以點擊新增從而增加類別,并設置優先級。編輯完畢后,點擊提交則頁面向后端發送請求,提交信息。如圖5-7。圖5-75.5消費記錄頁面在消費記錄頁面可以查看用戶在某時刻的購物記錄,以及商品所對應的積分和操作的店員信息。如圖5-8。圖5-85.6授權管理界面在授權管理界面可以刪除店員信息,也可通過微信掃碼向來添加員工。如圖5-9。圖5-9if(item.enableStatus==1){textOp="刪除";contraryStatus=0;}else{contraryStatus=1;}5.7商城首頁顧客在商城首頁頁面可以查看所有商店,也可以根據商店分類來進行查看。如圖5-10、圖5-11。圖5-10圖5-116.功能測試功能測試也叫黑盒測試,不考慮系統的內部架構和邏輯代碼,只考慮需要測試的各個功能,輸入輸出結果與期待是否相同。通過對注冊登錄功能、地區查詢、商品店鋪信息增刪改查、員工信息錄入、支付功能、后臺管理等功能設計測試用例,執行系統測試。6.1注冊登錄功能測試注冊登錄測試用例表如表6-1所示。編號測試用例測試流程預期結果實際結果是否通過1注冊微信掃碼進行注冊注冊成功注冊成功是2登錄填寫登錄信息并點擊“登錄”返回“登錄成功”的提示信息,主頁顯示登錄者用戶名返回“登錄成功”的提示信息,主頁顯示登錄者用戶名是注冊登錄功能測試表6-16.2店鋪管理功能測試店鋪管理功能模塊的測試用例包括新增店鋪、查看店鋪列表、店鋪分類展示、新增店鋪分類和新增店鋪。店鋪管理測試用例表如表6-2所示。編號測試用例測試流程預期結果實際結果是否通過3新增店鋪點擊“新增店鋪”按鈕填寫店鋪信息并提交彈出店鋪信息輸入頁面,管理員填寫完畢點擊“提交”后,返回新增店鋪成功彈出店鋪信息輸入頁面,管理員填寫完畢點擊“提交”后,返回新增店鋪成功是4查看店鋪點擊“查看店鋪”按鈕顯示店鋪列表信息,并分頁顯示顯示店鋪列表信息,并分頁顯示是5店鋪分類列表展示點擊“類別分類”按鈕顯示店鋪分類列表,列表節點根據用戶點擊依次展開顯示店鋪分類列表,列表節點根據用戶點擊依次展開是6新增店鋪分類輸入新增店鋪分類系統返回新增店鋪分類成功提示信息系統返回新增店鋪分類成功提示信息是7新增店鋪輸入店鋪信息系統返回新增店鋪成功提示信息系統返回新增店鋪成功提示信息是店鋪管理功能測試6-26.3商品管理功能測試商品管理功能模塊的測試用例包括新增商品、查看商品列表、商品分類列表展示、新增分類以及新增商品。商品管理測試用例表如表6-3所示。編號測試用例測試流程預期結果實際結果是否通過8新增商品點擊“新增商品”按鈕填寫商品信息并提交彈出商品信息輸入頁面,管理員填寫完畢點擊“提交”后,返回新增商品成功彈出商品信息輸入頁面,管理員填寫完畢點擊“提交”后,返回新增商品成功是9查看商品點擊“查看商品”按鈕顯示商品列表信息顯示商品列表信息是10商品分類列表展示點擊“類別分類”按鈕顯示商品分類列表,列表節點根據用戶點擊依次展開顯示商品分類列表,列表節點根據用戶點擊依次展開是11新增商品分類輸入新增商品分類系統返回新增商品分類成功信息系統返回新增商品分類成功信息是12新增商品輸入商品信息系統返回新增商品成功提示信息系統返回新增商品成功提示信息是商品管理測試表6-36.4搜索功能測試搜索模塊的測試用例是商品搜索。搜索測試用例表如表6-4所示。

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論