系統合集跳轉
源碼獲取鏈接
一、系統環境
運行環境: 最好是java jdk 1.8,我們在這個平臺上運行的。其他版本理論上也可以。
IDE環境: Eclipse,Myeclipse,IDEA或者Spring Tool Suite都可以
tomcat環境: Tomcat 7.x,8.x,9.x版本均可
操作系統環境: Windows XP/7/8//8.1/10/11或者Linux或者MacOS,2G內存以上,推薦4G,4G以上更好
用了技術框架: HTML+CSS+JavaScript+jsp+mysql+Spring+SpringMVC+mybatis+Spring boot
數據庫: Mysql數據庫,任意版本均可,也可使用各種數據庫工具,例如Navicat等。
二、摘要
互聯網技術的快速發展,促進了人們各行各業的進步。傳統行業逐步向線上進行轉變,電商行業得到快速的發展,線上交易數量逐年攀升,網上購物給人們帶來了極大的便利。近年來,越來越多的人開始飼養寵物,寵物用品需求急劇增長,但是電商平臺寵物用品模塊占比還不到15%,這就對用戶購買寵物用品造成了極大的不便,為了解決這一情況,開發一款寵物用品商城極為重要。
本文以寵物用品為背景設計并開發出一款基于SSM框架的寵物用品商城系統,本系統基于B/S架構的Web端系統,數據存儲在MySql數據庫中,系統根據不同角色使用劃分為前后臺兩個界面,前臺由普通用戶使用,功能主要包括寵物用品購買,信息查詢,添加購物車和查看個人訂單等功能,后臺由管理員角色使用,主要是對系統所有信息進行維護管理。系統采用協同過濾算法來進行推薦,收集其他用戶的購物信息進行建模,通過余弦公式計算出推薦值,為顧客進行商品推薦。
【關鍵詞】 寵物用品; SSM框架;協同過濾;MySql
三、目錄
1緒論 1
1.1研究背景 1
1.2 研究意義 1
1.3研究現狀 1
1.3.1國外研究現狀 1
1.3.2國內研究現狀 2
1.4 論文主要結構 2
2 開發工具及核心技術 3
2.1 開發工具 3
2.1.1 Navicat 3
2.1.2 IntelliJ IDEA 3
2.1.3 Tomcat7 3
2.2 開發技術 3
2.2.1 Spring框架 3
2.2.2 SpringMVC框架 4
2.2.3 Mybatis框架 4
2.2.4 協同過濾算法 5
2.3 本章小結 5
3可行性分析與需求分析 7
3.1 可行性分析 7
3.1.1 技術可行性 7
3.1.2 經濟可行性 7
3.1.3 操作可行性 7
3.2 需求分析 8
3.2.1功能性需求 8
3.2.2非功能需求 10
3.3本章小結 10
4系統的總體設計 11
4.1功能結構設計 11
4.1.1 后臺功能模塊 11
4.1.2 前臺功能模塊 12
4.2數據庫分析與設計 12
4.2.1數據庫概念設計 12
4.2.2數據庫表設計 15
4.3 業務流程設計 18
4.3.1 用戶流程設計 18
4.3.2 管理員流程設計 20
4.4本章小結 21
5寵物用品商城系統實現 22
5.1后臺功能實現 22
5.1.1 用戶管理模塊 22
5.1.2 商品管理模塊 24
5.1.3 評論模塊 25
5.1.4 訂單管理模塊 27
5.1.5 銷量統計模塊 29
5.1.6 角色管理模塊 31
5.2 前臺業務實現 31
5.2.1登錄注冊模塊 32
5.2.2搜索模塊 34
5.2.3評論模塊 35
5.2.4 用戶充值模塊 36
5.2.5 購物模塊 37
5.3 核心功能實現 39
5.4本章小結 40
6系統測試 42
6.1 軟件測試的基本概念 42
6.2 測試用例 42
6.3 測試結果 44
總 結 45
致 謝 46
參考文獻 47
四、內容
1.1研究背景
隨著經濟水平的不斷攀升,人們生活質量不斷提高,越來越多的家庭開始飼養寵物,寵物相關行業得到了飛速的發展,寵物也越來越受到年輕人的喜愛,但是國內寵物行業中寵物用品所占不比重不足20%,國內市場的需求以及人們對寵物用品有了越來越高的要求,這就造成了人們不局限于在線下寵物店進行挑選商品,把目光轉移到了網絡平臺,電商平臺中寵物用品商家如雨后春筍般涌現,寵物用品商之間的競爭也逐漸拉開了序幕[1]。同時,物流行業的飛速進步,讓快遞、閃送越來越快,極大程度上提高了人們網購的體驗,在同城的商鋪配送速度甚至高于到店購買的速度,給消費者帶來的極大的便利。但由于國內互聯網電商平臺起步晚,存在著技術含金量相對較低、缺乏創新性等問題。基于這個背景下,開發出一款功能完善且創新性十足的寵物用品商城系統迫在眉睫[2]。
1.2 研究意義
開發一款寵物用品商城系統可以代替線下寵物用品銷售的弊端,對于消費者來說,再也不需要跑到線下寵物店去進行購買,節省了大量的時間,并且線上寵物用品商城可以將大量的商家信息進行整合,讓消費者擁有更多的選擇貨比三家,從而得到最大程度上的優惠。對于商家來說,線上寵物用品商城可以給商家提供出更多的平臺來進行售賣,商家可以解決店面位置不好導致生意差的問題,同時可以為自己的店鋪發布廣告信息,增加商家收入。對于管理者來說,集成互聯網技術讓管理更加便利,即使面對龐大的數據量也能輕松應對,大大提高了管理者的管理效率,并且最大程度上的減少人力的投入成本,節省開支。因此,開發一款線上寵物商城系統可以最大程度上利用互聯網帶來優勢,讓消費者、商家以及管理者三方受益。
1.3研究現狀
1.3.1國外研究現狀
對于國外來說,互聯網技術發展較早,并且美國是Java語言以及Spring框架的發源地,JavaWeb系統擁有著極長的發展時間。MVC設計思想也是最早提出并得以運用的,采用MVC設計思想極大程度上提高了之前開發系統的速度與質量,讓JavaWeb系統得到了飛速的發展,讓現在可以擁有大量優秀的系統,截至目前為止,國外已經擁有了非常完善的電商系統和產業鏈,例如,沃爾瑪商超旗下的系統,以及國外最大的電商系統亞馬遜電商網站,都是非常不錯的例子。
但是對于寵物產業來說,國外雖然擁有巨大的市場份額,但是對于寵物用品來說絕大多數還是附屬在其他電商平臺下的一個板塊,沒有單獨成為一個系統,這跟國外昂貴的運輸成本密不可分,國外沒有中國高效且實惠的快遞運輸方式,同等距離下的運輸價格,美國是中國的3倍以上,且時效性相差較多,對于寵物用品本身的價格可能并不是很高,如果付出巨大的運費,很多人寧愿選擇到線下進行購物,這就導致了寵物用品市場量巨大,但是寵物用品商城發展較慢的現狀。
1.3.2國內研究現狀
對于國內來說,互聯網技術雖然起步較為緩慢,但是因為國家的重點扶持和培養,讓互聯網技術在短短的30年間得到了突飛猛進的發展,特別是針對JavaWeb系統來說更是如此,截至目前,國內采用Spring框架延申的系統已經非常多,可以在市面上找到非常多優秀的系統來進行參考。同時,近年來電商發展飛速,京東、淘寶、拼多多等一系列優秀的電商平臺占據了市場,這些優良的系統可以給我們開發電商平臺提高非常大的幫助,對于寵物用品商城來說,寵物用品在電商平臺中占比還不到10%,這就導致了巨大的消費市場和低銷售配比之間的矛盾,同時,物流行業的飛速進步,讓快遞、閃送越來越快,極大程度上提高了人們網購的體驗,在同城的商鋪配送速度甚至高于到店購買的速度,給消費者帶來的極大的便利。這些原因都加劇了寵物用品市場應該獨立出來占據電商平臺的進度,基于這個背景下,國內現階段寵物用品商城正在蓬勃發展。
2 開發工具及核心技術
2.1 開發工具
2.1.1 Navicat
Navicat 能在琳瑯滿目的數據庫管理工具中獨樹一幟,是由于他的高效、便捷、易于上手、輕巧、支持中文等特點[4]。本系統開發選取采用Navicat的原因是因為它是一款輕量級的可視化軟件,沒有厚重的環境要求,可隨時進行變更以及替換版本。其次,它支持多個不同數據庫的連接,除常用的MySql外,還支持Oracle、PostgreSQL以及SQL Server等不同類型的數據庫,方便系統更換數據庫類型時不需要再替換軟件,同時對于國內開發人員來說,Navicat是為數不多支持中文的數據庫可視化軟件,方便國內開發人員上手開發,最后對于設計表格來說非常便利,提供手動設計表格與修改表字段類型的界面,方便修改數據庫表格,基于以上原因,本系統開發選用Navicat軟件進行管理數據庫。
2.1.2 IntelliJ IDEA
IntelliJ IDEA簡稱Idea,是Java編程語言開發的集成環境,本系統選取Idea軟件進行開發帶來了非常大的便利,首先,IntelliJ IDEA軟件頁面比較優美,開發體驗良好,支持多語言多種顏色選擇,十分人性化。其次,IntelliJ IDEA可以集成多個插件,比如Mybatis的Plus插件,支持自動生成增刪改查配置文件,支持lombok插件,免去生成實體類Get、Set方法,為開發系統提供了極大的便利。最后,IntelliJ IDEA軟件支持編碼輔助和智能編輯等重要功能,可以在代碼輸入過程中,自動補充方法或類,極大程度上減少開發人員重復工作,非常適用于本系統的開發。基于以上原因,本系統代碼的開發采用IntelliJ IDEA軟件進行。
2.1.3 Tomcat7
Tomcat 服務器是一個免費的開放源代碼的Web 應用服務器,屬于輕量級應用服務器,在中小型系統和并發訪問用戶不是很多的場合下被普遍使用,是開發和調試JSP 程序的首選。本系統開發就是部署在Tomcat服務器上,本系統選取Tomcat作為部署容器是因為它具有非常便捷的部署操作,并且架構屬于輕量級,不需要占用大量的內存空間,這樣確保了項目的快速部署和啟動。并且Tomcat屬于開源的項目,不需要額外支付費用。基于以上原因,本系統部署容器選擇Tomcat服務器上。
2.2 開發技術
2.2.1 Spring框架
Spring框架一大特性就是控制反轉和依賴注入,美食系統中依賴注入部分就是利用到該特性,后臺之間模塊關聯的調用就是靠依賴注入直接引用,不需要每次都進行新建對象,比如在用戶管理中,只需要在服務層注入一個用戶對象,每個方法都可以調用,不需要每個方法重新新建一遍,可以釋放系統內存,并且Spring框架會對該Bean的生命周期進行管理,在不使用的時候還會自動Kill掉,釋放內存。
Spring框架另外一大優勢就是進行解耦,本系統集合了框架解耦的特性,將用戶管理模塊、商品管理模塊、分類管理模塊等等模塊解耦出來,各個模塊之間關聯較少,在一個模塊出現問題后最小程度上減少對系統的影響性,同時繼承了Spring框架輕量級的優點,整個系統打完War包部署到服務器上只有40兆大小,不占用內存空間。
此外,SpringAOP也是該框架的核心,SpringAOP為面向切面編程,將維度劃分為切面和點,采用該模塊可以對日志和事務進行很好的集成,非常方便進行日志管理,本系統日志管理就是基于SpringAOP的基礎上實現的。Spring框架擁有這些良好的框架和特性,為本系統的開發提供了諸多的便利,這也是本系統后端開發采用Spring框架的原因之一。
2.2.2 SpringMVC框架
SpringMVC框架是一款基于MVC設計思想的Web框架,它本身是屬于Spring框架的一個模塊,所以它能無間隔的集成Spring框架,在本系統中,采用SpringMVC框架可以更好的實現Web端的系統,本系統在前端發起用戶請求后,SpringMVC框架可以配置攔截器將請求進行攔截,然后通過控制器將用戶請求進行處理分發到對應的服務層中進行業務處理,然后對接MyBatis框架來進行數據持久化,通過SpringMVC框架讓系統分層明確,最大程度上實現了解耦,并且讓對應的層級來處理各自的任務,互相不干涉,對于程序開發十分便利,前后端控制器的實現,讓數據以及業務處理流程變得井然有序,同時也方便開發人員去進行跟蹤和調試。基于以上的優點,本系統采用SpringMVC框架來進行開發。
2.2.3 Mybatis框架
MyBatis 本是apache的一個開源項目iBatis,Mybatis框架主要是用于系統和數據庫之間交互使用,Mybatis框架同Spring框架進行集成,主要原理是采用了ORM的思想,將數據庫字段和實體類字段進行一一映射,系統操作實體類數據,然后通過映射來傳入到數據庫中進行修改,本系統中在resource目錄下配置好Mapper.xml映射,將實體類和系統的持久層代碼結合起來,這樣系統可以通過改變實體類的賦值來傳遞到數據庫中,完成數據庫的讀寫查操作。
Mybatis框架解決了Hibernate框架全局映射的問題,采用單獨編寫Sql語句進行控制,這樣改變字段只需要對改動的Sql進行修改,不需要再進行全局修改。在本系統中利用Mybatis框架的特性將字段拆分開來,這樣做的好處是,既可以方便字段的變更操作帶來的代碼改動,又可以提高數據庫的查詢速度。
2.2.4 協同過濾算法
基于用戶的協同算法主要是將用戶看作分析的主體,計算每個用戶的相似度,對相似度高的用戶進行該組用戶中物品的推薦。在普通的基于用戶算法中,會將每個用戶所對應的某些物品直接組成矩陣的形式來生成數據矩陣,這樣做的壞處是存在大量的用戶之間關聯的物品本身是沒有聯系的,會造成計算后的相似度數據過大或過小,并且不利于代碼級別的海量計算。所以將用戶與物品的關系通過倒數的方式形成稀疏矩陣,便于計算。
圖2-1 物品推薦度計算過程
3.2 需求分析
需求分析是指通過詳細的調研和研究后,將用戶非形式的需求轉換為明確需求的過程,本系統的需求分析通過對使用人員進行抽樣調查的形式進行,通過分發設計問卷來采集用戶需求,并且對市面上成熟的系統進行參考和研究后得出。分別從功能性需求和非功能性需求兩方面進行分析。
3.2.1功能性需求
功能性需求是說有具體的完成內容的需求,根據功能不同系統將角色分為普通用戶和管理員兩種角色。普通用戶為本系統前臺的使用者,主要功能與寵物用品購買有關,管理員角色為本系統后臺的使用者,功能主要和信息管理有關。系統通過用例圖分析來對功能性需求進行概述。
管理員的用例圖如圖3-1所示:
圖3-1管理員用例圖
面向管理員的用例的主要功能模塊有:
1.登錄:管理員進行后臺登錄,獲取管理員專屬權限,進行后臺管理。
2.用戶管理:對用戶信息進行維護。
3.商品分類管理:維護商品分類信息,屬于商品信息中的一種。
4.商品管理:對商品信息進行管理,方便用戶購物。
5.客戶管理:對客戶信息進行維護。
6.訂單管理:對客戶產生的訂單信息進行核對。
7.評論管理:管理用戶產生的評論信息。
8.銷售統計:對商家銷售量進行統計。
9.充值管理:對用戶充值進行審核。
10.系統設置:對系統信息進行管理。
顧客的用例圖如圖3-2所示:
圖3-2顧客用例圖
面向用戶的用例的主要功能模塊有:
1.注冊:注冊賬戶來獲取個人賬號。
2.登錄:登錄前臺來獲取購買商品等功能權限。
3.個人中心:查看個人信息以及賬戶信息。
4.商品收藏:對心儀的商品信息進行收藏,可以在收藏夾中查看。
5.添加購物車:將購買的物品存放到購物車中。
6.用戶充值:申請充值,付款后提交到后臺進行審核。
7.訂單管理:對訂單信息進行查看。
8.商品評價:購買后對商品信息進行評論。
4系統的總體設計
4.1功能結構設計
本系統前臺由普通用戶進行使用,進行寵物用品購買業務,后臺由管理員進行統一管理,前臺操作后臺管理。
4.1.1 后臺功能模塊
管理員主要是本系統的后臺使用者,系統后臺功能模塊圖如圖4-1所示:
圖4-1管理員功能模塊圖
(1)用戶管理:用戶管理包括用戶查詢以及用戶添加等功能,主要是對用戶信息進行統一管理和維護的地方,并且可以對失效的用戶進行刪除。
(2)商品管理:該模塊是對商品信息進行維護,主要功能和商品信息修改和添加有關,主要作用是對前臺用戶查看到的商品信息進行更改,方便用戶來進行購物,提高店家銷量。
(3)商品分類管理:該模塊是對商品的分類信息進行管理,主要作用是為了讓商品以類別的形式整理,方便用戶查找,同時也方便商家管理。
(4)銷售統計:對商家銷售信息進行統計,并且通過圖表的形式呈現出來,將數據可視化。
(5)訂單管理:對用戶產生的訂單信息進行維護,方便商家核對。
(6)充值管理:查詢并審核用戶提交的充值信息。
(7)評價管理:對用戶評價信息進行維護,可以對其進行刪除、修改和查詢操作。
(8)系統管理:對系統信息進行管理。包括修改管理員密碼和退出系統清除緩存等功能。
4.1.2 前臺功能模塊
系統前臺功能模塊圖如圖4-2所示:
圖4-2 顧客功能模塊圖
(1)商品模塊:商品模塊是前臺主要展示的模塊,對商品信息以及商品分類信息進行展示,并且點擊圖片后還能查看到商品詳情,在商品詳情中可以進行購買操作。
(2)個人中心:在個人中心中可以查看到自己的信息以及對個人信息進行修改,并且可以對賬戶信息進行管理,提交充值請求等功能。
(3)訂單管理:訂單管理主要是對購買商品后產生的訂單信息進行查看。
(4)購物車:將商品信息添加到購物車中,并且支持一鍵清空購物車的操作。
(5)收藏評論:對商品信息進行收藏和評論等功能。
數據庫表結構設計
5 系統功能頁面展示
6 代碼片段
if(comment == null){ret.put("type", "error");ret.put("msg", "請填寫正確的評論信息");return ret;}if(StringUtils.isEmpty(comment.getContent())){ret.put("type", "error");ret.put("msg", "請填寫評論內容");return ret;}if(commentService.edit(comment) <= 0){ret.put("type", "error");ret.put("msg", "編輯失敗,請聯系管理員!");return ret;}
if(!StringUtils.isEmpty(username)){Account account = accountService.findByName(username);if(account != null){queryMap.put("userId", account.getId());}}
if(moneyMin != null){queryMap.put("moneyMin", moneyMin);}if(moneyMax != null){queryMap.put("moneyMax", moneyMax);}if(status != null){queryMap.put("status", status);}queryMap.put("offset", page.getOffset());queryMap.put("pageSize", page.getRows());ret.put("rows", orderService.findList(queryMap));ret.put("total", orderService.getTotal(queryMap));
/*** 查詢訂單列表* @param sn* @param page
*/
@RequestMapping(value="/list",method=RequestMethod.GET)public ModelAndView list(ModelAndView model){model.setViewName("order/list");model.addObject("accountList",
JSONArray.fromObject(accountService.findList(new HashMap<String, Object>())));return model;}
一鍵三連+關注+評論留下你的郵箱 獲取源碼,主動獲取 看主頁置頂
一鍵三連+關注+評論留下你的郵箱 獲取源碼,主動獲取 看主頁置頂
一鍵三連+關注+評論留下你的郵箱 獲取源碼,主動獲取 看主頁置頂