javascript
Springboot美妆网站的设计与实现毕业设计-附源码211539
摘 要
近年來,隨著移動(dòng)互聯(lián)網(wǎng)的快速發(fā)展,電子商務(wù)越來越受到網(wǎng)民們的歡迎,電子商務(wù)對(duì)國(guó)家經(jīng)濟(jì)的發(fā)展也起著越來越重要的作用。簡(jiǎn)單的流程、便捷可靠的支付方式、快捷暢通的物流快遞、安全的信息保護(hù)都使得電子商務(wù)越來越贏得網(wǎng)民們的青睞。現(xiàn)今,大量的計(jì)算機(jī)技術(shù)應(yīng)用于商業(yè)領(lǐng)域,包括軟件技術(shù)、網(wǎng)絡(luò)技術(shù)、硬件技術(shù)等。越來越多的企業(yè)使用計(jì)算機(jī)來開展業(yè)務(wù)、銷售、購(gòu)買和宣傳各種商品。各種商業(yè)系統(tǒng)和軟件已經(jīng)解放了企業(yè)的雙手,并使企業(yè)能夠最大限度地獲得利益。因此,計(jì)算機(jī)技術(shù)在商業(yè)領(lǐng)域占有非常重要的地位。
本文主要通過對(duì)系統(tǒng)的前臺(tái)系統(tǒng)和后臺(tái)管理系統(tǒng)進(jìn)行了功能性需求分析,對(duì)系統(tǒng)的安全性和可擴(kuò)展性進(jìn)行了非功能性需求分析。在詳細(xì)的需求分析的基礎(chǔ)上,根據(jù)系統(tǒng)的功能設(shè)計(jì)確定了數(shù)據(jù)庫(kù)結(jié)構(gòu),實(shí)現(xiàn)完整的代碼編寫。美妝網(wǎng)站采取Mysql作為后臺(tái)數(shù)據(jù)的主要存儲(chǔ)單元,運(yùn)用軟件工程原理和開發(fā)方法,采用Java的Springboot框架構(gòu)建的一個(gè)管理系統(tǒng),實(shí)現(xiàn)了本系統(tǒng)的全部功能。完成系統(tǒng)的主要模塊的頁(yè)面設(shè)計(jì)和功能實(shí)現(xiàn)。本文展示了首頁(yè)頁(yè)面的實(shí)現(xiàn)效果圖,并通過代碼和頁(yè)面介紹了用戶注冊(cè)功能、美妝咨詢、商城管理、商品購(gòu)買和查看我的訂單功能、在線付款功能的實(shí)現(xiàn)過程。
關(guān)鍵詞:美妝產(chǎn)品; Springboot;商品搜索
Design and implementation of springboot beauty website
Abstract
In recent years, with the rapid development of mobile Internet, e-commerce is more and more welcomed by Internet users. E-commerce also plays a more and more important role in the development of national economy. Simple process, convenient and reliable payment method, fast and smooth logistics express delivery and safe information protection all make e-commerce more and more popular among Internet users. Nowadays, a large number of computer technologies are used in commercial fields, including software technology, network technology, hardware technology and so on. More and more enterprises use computers to carry out business, sell, buy and publicize all kinds of goods. Various business systems and software have liberated the hands of enterprises and enabled enterprises to maximize benefits. Therefore, computer technology plays a very important role in the commercial field.
This paper mainly analyzes the functional requirements of the foreground system and background management system, and analyzes the non functional requirements of the security and scalability of the system. Based on the detailed demand analysis, the database structure is determined according to the functional design of the system to realize the complete coding. The beauty website takes MySQL as the main storage unit of background data, uses the principles and development methods of software engineering, and uses the springboot framework of Java to build a management system to realize all the functions of the system. Complete the page design and function realization of the main modules of the system. This paper shows the implementation effect diagram of the home page, and introduces the implementation process of user registration function, beauty consulting, mall management, commodity purchase and view my order function and online payment function through the code and page.
Key words:Beauty products; Springboot; Product search
目 ?錄
第1章 緒論
1.1?研究背景與意義
1.2?開發(fā)現(xiàn)狀
1.3?論文組成結(jié)構(gòu)
第2章 相關(guān)技術(shù)介紹
2.1?相關(guān)技術(shù)說明
2.2 B/S體系工作原理
2.3 Springboot框架介紹
2.4?MySQL簡(jiǎn)介
2.5?JavaScript運(yùn)行模式
第3章 系統(tǒng)分析
3.1?可行性分析
3.1.1?經(jīng)濟(jì)可行性
3.1.2?技術(shù)可行性
3.1.3?操作可行性
3.2?功能性需求分析
3.3?非功能性需求分析
第4章 系統(tǒng)設(shè)計(jì)
4.1?功能模塊設(shè)計(jì)
4.2?數(shù)據(jù)庫(kù)設(shè)計(jì)
4.2.1?概念模型設(shè)計(jì)
4.2.2?數(shù)據(jù)庫(kù)邏輯設(shè)計(jì)
4.2.3?數(shù)據(jù)庫(kù)表設(shè)計(jì)
第5章 系統(tǒng)實(shí)現(xiàn)
5.1?用戶登錄的實(shí)現(xiàn)
5.2?系統(tǒng)前臺(tái)主要功能實(shí)現(xiàn)
5.2.1?首頁(yè)的實(shí)現(xiàn)
5.2.2?用戶注冊(cè)的實(shí)現(xiàn)
5.2.3?美妝商城的實(shí)現(xiàn)
5.2.4?商品搜索的實(shí)現(xiàn)
5.2.5?商品購(gòu)買的實(shí)現(xiàn)
5.3?系統(tǒng)后臺(tái)主要功能實(shí)現(xiàn)
5.3.1?用戶管理的實(shí)現(xiàn)
5.3.2?商城管理的實(shí)現(xiàn)
5.3.3?訂單列表管理的實(shí)現(xiàn)
第6章 系統(tǒng)測(cè)試
6.1?系統(tǒng)可靠性測(cè)試
6.2?系統(tǒng)功能性測(cè)試
6.3?系統(tǒng)合格性測(cè)試
6.4?測(cè)試結(jié)果
第7章 總結(jié)與展望
參考文獻(xiàn)
致謝
隨著中國(guó)經(jīng)濟(jì)的快速增長(zhǎng),人均收入的提高,人們的生活水平隨之一步步地提高,人們把自己的吃穿住行等基本問題解決之后,開始慢慢注意自己的形象問題,對(duì)于美也有自己的看法,開始注意自己的皮膚和外表。美妝行業(yè)隨之快速發(fā)展起來并且不斷壯大。
隨著移動(dòng)互聯(lián)網(wǎng)的迅速發(fā)展,除了傳統(tǒng)的網(wǎng)頁(yè)瀏覽、資料搜索、發(fā)送電子郵件等基本應(yīng)用外,國(guó)內(nèi)大多數(shù)網(wǎng)民已經(jīng)漸漸習(xí)慣了通過網(wǎng)絡(luò)接受購(gòu)物、通訊、旅游、娛樂等傳統(tǒng)功能之外的新服務(wù)模式,其中利用網(wǎng)絡(luò)購(gòu)物也日益成為人們生活中一種重要的購(gòu)物形式。互聯(lián)網(wǎng)的快速發(fā)展為美妝商城系統(tǒng)發(fā)展提供了強(qiáng)大保障和支撐,另外,在線網(wǎng)上購(gòu)物的外部環(huán)境也逐漸得到了改善,移動(dòng)互聯(lián)網(wǎng)終端(手機(jī)、平板)使得網(wǎng)民結(jié)構(gòu)變得越來越大眾化,網(wǎng)上支付結(jié)算手段越來越便捷,快遞物流越來越暢通,相應(yīng)的法規(guī)政策也越來越完善。現(xiàn)如今,在線網(wǎng)上購(gòu)物對(duì)人們的吸引力越來越大,人們對(duì)網(wǎng)上購(gòu)物的看法也從一開始的不了解到了解,從懷疑到逐漸信任,從拒絕到慢慢接受并習(xí)慣。在線網(wǎng)上購(gòu)物的觀念已經(jīng)越來越深入人心,促使人們?cè)诰€網(wǎng)上購(gòu)物的主要因素有:
(1)方便快捷。網(wǎng)上購(gòu)物可全天 24 小時(shí)營(yíng)業(yè),人們不需要奔赴到商店就可進(jìn)行購(gòu)物,購(gòu)買的商品也可以直接送達(dá)到家。這樣就使得消費(fèi)者即使足不出戶,也能買到來自世界各地得喜愛商品。
(2)信息量大。相比于傳統(tǒng)的購(gòu)物的方式,電子商務(wù)所能容納的信息量非常大,既包括現(xiàn)實(shí)產(chǎn)品也包括虛擬產(chǎn)品。另外,還可以提供一些比較特殊的產(chǎn)品,既能保護(hù)消費(fèi)者的個(gè)人隱私,又能滿足消費(fèi)者不同的心理需求。
(3)私密性強(qiáng)。消費(fèi)者有時(shí)候在購(gòu)買一些不愿意讓別人知道的商品時(shí),利用網(wǎng)上購(gòu)物,賣家和快遞物流都可以保護(hù)好用戶的隱私,這樣就可以避免一些不必要的麻煩。
由于近年來在線銷售行業(yè)的興起,也了解了一些相關(guān)信息。在中國(guó),以前的銷售只是傳統(tǒng)銷售,而在線銷售似乎滿足了市場(chǎng)需求。到目前為止,有一些家喻戶曉的名字,如淘寶和天貓。然而,這種在線銷售也有一些缺點(diǎn):用戶不能在下訂單并付款后立即提貨,他們還應(yīng)該考慮貨物是否受損。該系統(tǒng)是根據(jù)商品網(wǎng)絡(luò)上的銷售情況開發(fā)的。
經(jīng)過幾年的發(fā)展,許多被消費(fèi)者認(rèn)可的網(wǎng)上購(gòu)物中心已經(jīng)出現(xiàn)在國(guó)內(nèi)外。這些網(wǎng)上購(gòu)物中心的內(nèi)容是多樣化的,它們包含的功能相對(duì)完善,包括注冊(cè)用戶、搜索商品、管理訂單、介紹商品細(xì)節(jié)以及在線留言。如今,互聯(lián)網(wǎng)的廣泛使用在一定程度上導(dǎo)致了國(guó)內(nèi)外在線購(gòu)物中心的發(fā)展,只要企業(yè)通過這個(gè)平臺(tái)在線打字,就可以隨時(shí)管理系統(tǒng)的內(nèi)容。通過展示商品內(nèi)容和發(fā)布公告,鼓勵(lì)消費(fèi)者購(gòu)買和進(jìn)行在線交易。
根據(jù)市場(chǎng)調(diào)研得到的信息數(shù)據(jù),結(jié)合國(guó)內(nèi)外前沿研究,利用相關(guān)系統(tǒng)開發(fā)和設(shè)計(jì)方法,最終設(shè)計(jì)出美妝網(wǎng)站。
本文共有七章,如下所示。
第一章概述了美妝網(wǎng)站的研究目的和意義;精煉地總結(jié)了國(guó)內(nèi)外在內(nèi)的領(lǐng)域研究情況和未來的研究趨勢(shì),最后給出了論文的組成結(jié)構(gòu)。
第二章簡(jiǎn)要概述了本文所用的開發(fā)技術(shù)和工具。
第三章簡(jiǎn)要對(duì)系統(tǒng)各業(yè)務(wù)流程進(jìn)行需求分析、可行性分析。
第四章對(duì)美妝網(wǎng)站進(jìn)行設(shè)計(jì)。
第五章對(duì)美妝網(wǎng)站進(jìn)行實(shí)現(xiàn),并貼出相關(guān)頁(yè)面截圖,語(yǔ)言描述出具體功能實(shí)現(xiàn)的操作方法。
第六章對(duì)美妝網(wǎng)站采用測(cè)試用例的方式來對(duì)一些主要功能模塊測(cè)試,最后得出測(cè)試結(jié)果。
第七章總結(jié)全文并對(duì)未來的研究做出展望。
本系統(tǒng)前端部分基于MVVM模式進(jìn)行開發(fā),采用B/S模式,后端部分基于Java的springboot框架進(jìn)行開發(fā)。
前端部分:前端框架采用了比較流行的漸進(jìn)式JavaScript框架Springboot.js。使用Springboot-Router和Springbootx實(shí)現(xiàn)動(dòng)態(tài)路由和全局狀態(tài)管理,Ajax實(shí)現(xiàn)前后端通信,Element UI組件庫(kù)使頁(yè)面快速成型,項(xiàng)目前端通過柵格布局實(shí)現(xiàn)響應(yīng)式,可適應(yīng)PC端、平板端、手機(jī)端等不同屏幕大小尺寸的完美布局展示。
后端部分:采用springboot作為開發(fā)框架,同時(shí)集成MyBatis、Redis等相關(guān)技術(shù)。
B/S架構(gòu)采取瀏覽器請(qǐng)求,服務(wù)器響應(yīng)的工作模式。
用戶可以通過瀏覽器去訪問Internet上由Web服務(wù)器產(chǎn)生的文本、數(shù)據(jù)、圖片、動(dòng)畫、視頻點(diǎn)播和聲音等信息;
而每一個(gè)Web服務(wù)器又可以通過各種方式與數(shù)據(jù)庫(kù)服務(wù)器連接,大量的數(shù)據(jù)實(shí)際存放在數(shù)據(jù)庫(kù)服務(wù)器中;
從Web服務(wù)器上下載程序到本地來執(zhí)行,在下載過程中若遇到與數(shù)據(jù)庫(kù)有關(guān)的指令,由Web服務(wù)器交給數(shù)據(jù)庫(kù)服務(wù)器來解釋執(zhí)行,并返回給Web服務(wù)器,Web服務(wù)器又返回給用戶。在這種結(jié)構(gòu)中,將許許多多的網(wǎng)連接到一塊,形成一個(gè)巨大的網(wǎng),即全球網(wǎng)。而各個(gè)企業(yè)可以在此結(jié)構(gòu)的基礎(chǔ)上建立自己的Internet。
在 B/S 模式中,用戶是通過瀏覽器針對(duì)許多分布于網(wǎng)絡(luò)上的服務(wù)器進(jìn)行請(qǐng)求訪問的,瀏覽器的請(qǐng)求通過服務(wù)器進(jìn)行處理,并將處理結(jié)果以及相應(yīng)的信息返回給瀏覽器,其他的數(shù)據(jù)加工、請(qǐng)求全部都是由Web Server完成的。通過該框架結(jié)構(gòu)以及植入于操作系統(tǒng)內(nèi)部的瀏覽器,該結(jié)構(gòu)已經(jīng)成為了當(dāng)今軟件應(yīng)用的主流結(jié)構(gòu)模式。
Spring框架是Java平臺(tái)上的一種開源應(yīng)用框架,提供具有控制反轉(zhuǎn)特性的容器。盡管Spring框架自身對(duì)編程模型沒有限制,但其在Java應(yīng)用中的頻繁使用讓它備受青睞,以至于后來讓它作為EJB(EnterpriseJavaBeans)模型的補(bǔ)充,甚至是替補(bǔ)。Spring框架為開發(fā)提供了一系列的解決方案,比如利用控制反轉(zhuǎn)的核心特性,并通過依賴注入實(shí)現(xiàn)控制反轉(zhuǎn)來實(shí)現(xiàn)管理對(duì)象生命周期容器化,利用面向切面編程進(jìn)行聲明式的事務(wù)管理,整合多種持久化技術(shù)管理數(shù)據(jù)訪問,提供大量?jī)?yōu)秀的Web框架方便開發(fā)等等。Spring框架具有控制反轉(zhuǎn)(IOC)特性,IOC旨在方便項(xiàng)目維護(hù)和測(cè)試,它提供了一種通過Java的反射機(jī)制對(duì)Java對(duì)象進(jìn)行統(tǒng)一的配置和管理的方法。Spring框架利用容器管理對(duì)象的生命周期,容器可以通過掃描XML文件或類上特定Java注解來配置對(duì)象,開發(fā)者可以通過依賴查找或依賴注入來獲得對(duì)象。Spring框架具有面向切面編程(AOP)框架,SpringAOP框架基于代理模式,同時(shí)運(yùn)行時(shí)可配置;AOP框架主要針對(duì)模塊之間的交叉關(guān)注點(diǎn)進(jìn)行模塊化。Spring框架的AOP框架僅提供基本的AOP特性,雖無法與AspectJ框架相比,但通過與AspectJ的集成,也可以滿足基本需求。Spring框架下的事務(wù)管理、遠(yuǎn)程訪問等功能均可以通過使用SpringAOP技術(shù)實(shí)現(xiàn)。Spring的事務(wù)管理框架為Java平臺(tái)帶來了一種抽象機(jī)制,使本地和全局事務(wù)以及嵌套事務(wù)能夠與保存點(diǎn)一起工作,并且?guī)缀蹩梢栽贘ava平臺(tái)的任何環(huán)境中工作。Spring集成多種事務(wù)模板,系統(tǒng)可以通過事務(wù)模板、XML或Java注解進(jìn)行事務(wù)配置,并且事務(wù)框架集成了消息傳遞和緩存等功能。Spring的數(shù)據(jù)訪問框架解決了開發(fā)人員在應(yīng)用程序中使用數(shù)據(jù)庫(kù)時(shí)遇到的常見困難。它不僅對(duì)Java:JDBC、iBATS/MyBATIs、Hibernate、Java數(shù)據(jù)對(duì)象(JDO)、ApacheOJB和ApacheCayne等所有流行的數(shù)據(jù)訪問框架中提供支持,同時(shí)還可以與Spring的事務(wù)管理一起使用,為數(shù)據(jù)訪問提供了靈活的抽象。Spring框架最初是沒有打算構(gòu)建一個(gè)自己的WebMVC框架,其開發(fā)人員在開發(fā)過程中認(rèn)為現(xiàn)有的StrutsWeb框架的呈現(xiàn)層和請(qǐng)求處理層之間以及請(qǐng)求處理層和模型之間的分離不夠,于是創(chuàng)建了SpringMVC。
MySQL是一個(gè)開放的、快速的、多線程的SQL關(guān)系型數(shù)據(jù)庫(kù)服務(wù)器。由于其體積小、免費(fèi)、運(yùn)行速度快以及可以通過相關(guān)免費(fèi)的軟件來對(duì)MySql數(shù)據(jù)庫(kù)中的相關(guān)數(shù)據(jù)結(jié)構(gòu)信息等等優(yōu)點(diǎn)。受廣大中等、小型企業(yè)所喜愛并占據(jù)了很大地位。本系統(tǒng)在數(shù)據(jù)庫(kù)方面選用MySQL,并通過Nacivat來進(jìn)行MySql數(shù)據(jù)庫(kù)的管理。在Mysql的安裝過程中,最需要注意的就是數(shù)據(jù)庫(kù)的編碼問題,所以在安裝數(shù)據(jù)庫(kù)時(shí)需要設(shè)置數(shù)據(jù)庫(kù)的編碼為Utf-8,與前臺(tái)頁(yè)面和服務(wù)器的編碼相一致。
JavaScript是一種屬于網(wǎng)絡(luò)的高級(jí)腳本語(yǔ)言,已經(jīng)被廣泛用于Web應(yīng)用開發(fā),常用來為網(wǎng)頁(yè)添加各式各樣的動(dòng)態(tài)功能,為用戶提供更流暢美觀的瀏覽效果。通常JavaScript腳本是通過嵌入在HTML中來實(shí)現(xiàn)自身的功能的。
1.1是一種解釋性腳本語(yǔ)言(代碼不進(jìn)行預(yù)編譯)。
1.2主要用來向HTML(標(biāo)準(zhǔn)通用標(biāo)記語(yǔ)言下的一個(gè)應(yīng)用)頁(yè)面添加交互行為。
1.3可以直接嵌入HTML頁(yè)面,但寫成單獨(dú)的js文件有利于結(jié)構(gòu)和行為的分離。
1.4跨平臺(tái)特性,在絕大多數(shù)瀏覽器的支持下,可以在多種平臺(tái)下運(yùn)行(如Windows、Linux、Mac、Android、iOS等)。
1.5 JavaScript腳本語(yǔ)言同其他語(yǔ)言一樣,有它自身的基本數(shù)據(jù)類型,表達(dá)式和算術(shù)運(yùn)算符及程序的基本程序框架。JavaScript提供了四種基本的數(shù)據(jù)類型和兩種特殊數(shù)據(jù)類型用來處理數(shù)據(jù)和文字。而變量提供存放信息的地方,表達(dá)式則可以完成較復(fù)雜的信息處理。
本系統(tǒng)將在經(jīng)濟(jì)、技術(shù)、操作這三個(gè)角度上進(jìn)行可行性分析。
整個(gè)系統(tǒng)從設(shè)計(jì)到開發(fā)以及測(cè)試過程嚴(yán)謹(jǐn)步驟齊全,所有工作任務(wù)全部由本人完成,并未獲取外部技術(shù)支持,節(jié)約了一切服務(wù)成本開銷以及人工成本,在硬件方面,為節(jié)約成本使用一臺(tái)二手移動(dòng)工作站作為項(xiàng)目部署服務(wù)器以及數(shù)據(jù)庫(kù)服務(wù)器,成本在一萬元一下,真?zhèn)€網(wǎng)絡(luò)部署也是由本人獨(dú)立完成不涉及到其他人工費(fèi)用,整個(gè)開發(fā)過程本著低成本,低消耗的原則。
技術(shù)可行性分析的目的是確認(rèn)該系統(tǒng)能否利用現(xiàn)有技術(shù)實(shí)現(xiàn),并評(píng)估開發(fā)效率和完成情況。技術(shù)的可行性是指在當(dāng)前的技術(shù)條件下,計(jì)算機(jī)軟件和硬件的開發(fā)是否能夠滿足發(fā)展的要求。因?yàn)樵撓到y(tǒng)的開發(fā)基于Springboot框架,所以開發(fā)該系統(tǒng)所需的軟件和硬件條件可以在普通計(jì)算機(jī)上滿足。因?yàn)樗加玫膬?nèi)存相對(duì)較少,所以用Mysql數(shù)據(jù)庫(kù)開發(fā)和設(shè)計(jì)軟件理論上沒有問題,因?yàn)樗加玫膬?nèi)存太少。上述技術(shù)可以有效地保證系統(tǒng)的成功和高效開發(fā)。
美妝網(wǎng)站的使用界面簡(jiǎn)單易于操作,采用常見的界面窗口來登錄界面,通過電腦進(jìn)行訪問操作,用戶只要平時(shí)使用過電腦都能進(jìn)行訪問操作。此系統(tǒng)的開發(fā)采用Springboot框架開發(fā),人性化和完善化是B/S結(jié)構(gòu)開發(fā)比較顯要的特點(diǎn)使得用戶操作相比較其他更加簡(jiǎn)潔方便。易操作、易管理、交互性好在本系統(tǒng)操作上體現(xiàn)得淋漓盡致。
前臺(tái)需求:
(1)用戶模塊:主要包括用戶的注冊(cè)和登陸、用戶個(gè)人信息管理和用戶帳單查詢等功能。
(2)商品模塊:主要包括商品瀏覽、商品信息展示、商品搜索、商品收藏、商品購(gòu)買等功能。
(3)購(gòu)買訂單模塊:主要包括生成訂單、我的訂單、查看訂單詳細(xì)信息、在線支付等功能。
(4)美妝資訊模塊:主要展示系統(tǒng)最新的美妝資訊信息。
后臺(tái)需求:
(1)用戶管理:主要包括用戶列表、用戶數(shù)據(jù)管理等功能。
(2)商品管理:主要包括商品列表、商品類目管理、商品添加、商品信息管理等功能。
(3)訂單管理:主要包括訂單審核、訂單確認(rèn)、訂單刪除等功能。
(4)物流配送管理:用戶訂單的物流配送信息維護(hù)管理。
系統(tǒng)用例圖如下所示。
圖3-1系統(tǒng)用例圖
商品添加用例描述如下表所示。
表3-1商品添加用例描述
| 用例名稱 | 添加新商品 | |
| 參與者 | 管理員 | |
| 用例概述 | 本用例用于管理員進(jìn)行添加新商品操作 | |
| 前置條件 | 管理員添加新商品前必須登錄系統(tǒng) | |
| 后置條件 | 系統(tǒng)中添加一個(gè)新商品 | |
| 基本事件流 | 參與者動(dòng)作 | 系統(tǒng)響應(yīng) |
| 4、管理員填寫新商品信息,點(diǎn)擊“添加”按鈕。 | 2、系統(tǒng)打開添加新商品界面。 3、系統(tǒng)檢查管理員輸入的商品信息是正確有效的。 5、系統(tǒng)將商品添加到數(shù)據(jù)庫(kù)中。 6、系統(tǒng)提示“操作成功”。 7、系統(tǒng)跳轉(zhuǎn)到商品管理界面。 | |
| 其他事件流 | 1、系統(tǒng)驗(yàn)證管理員輸入的商品名為空,則提示“*請(qǐng)?zhí)顚懮唐访Q!”。 2、系統(tǒng)驗(yàn)證管理員輸入的價(jià)格不是貨幣格式,則提示“*價(jià)格必須是貨幣格式!” | |
商品刪除用例描述如下表所示。
表3-2商品刪除用例描述
| 用例名稱 | 刪除商品 | |
| 參與者 | 管理員 | |
| 用例概述 | 本用例用于管理員進(jìn)行刪除商品操作 | |
| 前置條件 | 管理員刪除商品前必須登錄系統(tǒng) | |
| 后置條件 | 系統(tǒng)中刪除一個(gè)商品 | |
| 基本事件流 | 參與者動(dòng)作 | 系統(tǒng)響應(yīng) |
| 1、管理員在后臺(tái)主界面選擇“商品管理”。 4、管理員選擇一個(gè)商品,點(diǎn)擊“刪除”按鈕。 6、管理員點(diǎn)擊“確定”按鈕。 | 2、系統(tǒng)從數(shù)據(jù)庫(kù)中獲取商品信息列表 3、系統(tǒng)打開商品列表界面。 5、系統(tǒng)提示“你確定要?jiǎng)h除嗎?”。 7、系統(tǒng)將商品從數(shù)據(jù)庫(kù)中刪除。 8、系統(tǒng)提示“刪除成功”。 9、系統(tǒng)跳轉(zhuǎn)到商品管理界面。 | |
| 其他事件流 | 無 | |
商城分類用例描述如下表所示。
表3-2商城分類用例描述
| 用例名稱 | 分類商品 | |
| 參與者 | 管理員 | |
| 用例概述 | 本用例用于管理員進(jìn)行分類商品操作 | |
| 前置條件 | 管理員分類商品前必須登錄系統(tǒng) | |
| 后置條件 | 系統(tǒng)中分類一個(gè)商品 | |
| 基本事件流 | 參與者動(dòng)作 | 系統(tǒng)響應(yīng) |
| 1、管理員在后臺(tái)主界面選擇“商品管理”。 4、管理員選擇一個(gè)商品,點(diǎn)擊“分類”按鈕。 6、管理員點(diǎn)擊“確定”按鈕。 | 2、系統(tǒng)從數(shù)據(jù)庫(kù)中獲取商品信息列表 3、系統(tǒng)打開商品列表界面。 5、系統(tǒng)提示“你確定要分類嗎?”。 7、系統(tǒng)將商品從數(shù)據(jù)庫(kù)中分類。 8、系統(tǒng)提示“分類成功”。 9、系統(tǒng)跳轉(zhuǎn)到商品管理界面。 | |
| 其他事件流 | 無 | |
用戶編輯用例描述如下表所示。
表3-3用戶編輯用例描述
| 用例名稱 | 修改用戶 | |
| 參與者 | 管理員 | |
| 用例概述 | 本用例用于管理員進(jìn)行修改用戶信息操作 | |
| 前置條件 | 管理員已經(jīng)登錄系統(tǒng) | |
| 后置條件 | 系統(tǒng)中更新一條用戶記錄 | |
| 基本事件流 | 參與者動(dòng)作 | 系統(tǒng)響應(yīng) |
| 1、管理員在后臺(tái)主界面選擇“用戶管理”。 4、管理員在用戶列表中選擇一個(gè)用戶,點(diǎn)擊“編輯”按鈕。 6、管理員填寫用戶信息,點(diǎn)擊“保存修改”按鈕。 | 2、系統(tǒng)從數(shù)據(jù)庫(kù)中獲取用戶信息。 3、系統(tǒng)打開用戶列表界面。 5、系統(tǒng)打開修改用戶信息界面。 7、系統(tǒng)將更改后的添加到數(shù)據(jù)庫(kù)中。 8、系統(tǒng)提示“操作成功”。 9、系統(tǒng)跳轉(zhuǎn)到用戶管理界面。 | |
| 其他事件流 | 無 | |
商品購(gòu)買用例描述如下表所示。
表3-5商品購(gòu)買用例描述
| 用例名稱 | 商品購(gòu)買 | |
| 參與者 | 用戶 | |
| 用例概述 | 本用例用于用戶進(jìn)行對(duì)商品購(gòu)買操作 | |
| 前置條件 | 用戶已經(jīng)登錄系統(tǒng) | |
| 后置條件 | 系統(tǒng)中增加一條用戶購(gòu)買記錄 | |
| 基本事件流 | 參與者動(dòng)作 | 系統(tǒng)響應(yīng) |
| 1、用戶在前臺(tái)首頁(yè)選擇任意一個(gè)商品分類。 4、管理員在用戶列表中選擇一個(gè)商品。 7、用戶填寫購(gòu)買訂單,點(diǎn)擊“購(gòu)買”按鈕。 | 2、系統(tǒng)從數(shù)據(jù)庫(kù)中獲取商品列表信息。 3、系統(tǒng)打開商品列表界面。 5、系統(tǒng)從數(shù)據(jù)庫(kù)中獲取商品信息。 6、系統(tǒng)打開商品信息及購(gòu)買界面。 8、系統(tǒng)檢查用戶輸入的信息是正確有效的。 9、系統(tǒng)將購(gòu)買記錄添加到數(shù)據(jù)庫(kù)中。 | |
| 其他事件流 | 1、系統(tǒng)驗(yàn)證用戶輸入的字段為空,則提示“*購(gòu)買數(shù)量不能為空!”。 | |
隨著用戶量的增加,系統(tǒng)可能會(huì)需要同時(shí)服務(wù)上千、上萬個(gè)頁(yè)面,服務(wù)器需要同時(shí)響應(yīng)大量用戶的操作,這就要求系統(tǒng)需要有良好的可擴(kuò)展性,否則系統(tǒng)會(huì)出現(xiàn)延遲,卡頓甚至服務(wù)器崩潰的問題。高擴(kuò)展性可以使軟件保持旺盛的生命力,同時(shí)也能夠使系統(tǒng)更好的適應(yīng)用戶增加、提高性能需求、增加應(yīng)用功能等改變。
系統(tǒng)中保存了大量用戶和管理員的個(gè)人信息,因此,保證系統(tǒng)服務(wù)器和數(shù)據(jù)安全是在開發(fā)過程中需要考慮的重要問題。安全性包括服務(wù)器安全、操作系統(tǒng)安全、數(shù)據(jù)庫(kù)安全、程序代碼安全以及用戶個(gè)人信息和支付安全等,系統(tǒng)可以通過采用防火墻技術(shù)、加密技術(shù)、認(rèn)證技術(shù)等來增強(qiáng)其安全性,只有一個(gè)健壯安全的系統(tǒng)才能具有長(zhǎng)久的生命力。
通過軟件的需求分析已經(jīng)獲得了系統(tǒng)的基本功能需求。根據(jù)各大功能模塊的不同,將系統(tǒng)分為各種功能大塊。系統(tǒng)功能結(jié)構(gòu)如下圖所示。
圖4-2系統(tǒng)功能結(jié)構(gòu)圖
注冊(cè)/登錄
游客(未進(jìn)行注冊(cè)或登陸的用戶)可以瀏覽、搜索商品,但不能進(jìn)行收藏和購(gòu)買。用戶注冊(cè)首先需要進(jìn)行表單驗(yàn)證,來驗(yàn)證用戶名和手機(jī)號(hào)碼是否合法,然后驗(yàn)證用戶名和手機(jī)號(hào)是否已經(jīng)存在,驗(yàn)證通過即可注冊(cè)。
注冊(cè)成功后,用戶可以通過輸入用戶名來登錄系統(tǒng),輸入密碼后進(jìn)行驗(yàn)證。登錄成功后,用戶可以使用商品收藏、商品購(gòu)買、查看我的訂單、個(gè)人信息管理等功能。
個(gè)人信息管理
用戶登錄系統(tǒng)后,在賬戶設(shè)置中,可以修改昵稱、頭像、手機(jī)號(hào)、登陸密碼、收貨地址等個(gè)人基本信息。
商品搜索
系統(tǒng)首頁(yè)展示了商品搜索輸入框,用戶在輸入框內(nèi)輸入與商品名稱相關(guān)的關(guān)鍵字,系統(tǒng)通過模糊查詢搜索到用戶需要的商品并展示。
商品信息展示
用戶在瀏覽商品時(shí),點(diǎn)擊某一個(gè)商品,跳轉(zhuǎn)到該商品的信息展示頁(yè)。在商品信息頁(yè)面展示了商品的詳情信息,比如商品介紹,商品詳情等,用戶通過瀏覽信息了解商品的主要功能和用途,最終決定是否購(gòu)買。
商品購(gòu)買
在商品信息頁(yè)面,用戶可以通過點(diǎn)擊“購(gòu)買”進(jìn)行購(gòu)買商品,點(diǎn)擊后跳轉(zhuǎn)到訂單生成頁(yè)面。訂單生成頁(yè)面會(huì)展示商品信息,收貨地址,優(yōu)惠信息等,用戶確認(rèn)后信息無誤點(diǎn)擊“提交”生成訂單,訂單生成后跳轉(zhuǎn)到支付頁(yè)面,支付完成則購(gòu)買成功。
生成訂單
用戶在購(gòu)買商品時(shí),點(diǎn)擊商品信息頁(yè)面的“立即購(gòu)買”或購(gòu)買記錄頁(yè)面的“去結(jié)算”,跳轉(zhuǎn)到訂單生成頁(yè)面,在訂單生成頁(yè)面用戶需要確認(rèn)收貨地址、收貨人手機(jī)號(hào)、收貨人姓名等信息,確認(rèn)無誤后點(diǎn)擊“提交訂單”,訂單提交成功,生成一條訂單信息。
查看訂單詳情
用戶在查看我的訂單列表時(shí),可以點(diǎn)擊某一個(gè)訂單來查看該訂單的詳細(xì)信息,主要包括訂單編號(hào)、訂單狀態(tài)、訂單日期、訂單中的商品、交易金額等。訂單詳情還可以查看商品物流信息,用戶通過能夠物流信息了解所購(gòu)買商品的發(fā)貨狀態(tài)。
商品列表
管理員可以在“商品列表”中展示商城中需要銷售的商品,包含商品名稱,商品屬性以及類目等商品信息。管理員可以對(duì)商品進(jìn)行搜索,按分類查詢商品。
商品添加
添加商品首先需要輸入商品基本信息,如商品名稱、商品數(shù)量、商品分類等;然后需要編輯商品信息詳情,如商品規(guī)格,商品描述,商品圖片等。管理員也可以刪除已添加的商品。
商品管理
用戶在購(gòu)買商品時(shí)需要選擇商品規(guī)格,管理員可以設(shè)置商品規(guī)格的名稱以及展示的順序等。管理員還可以給商品規(guī)格添加屬性值,也可以刪除不需要的屬性值。同時(shí),管理員可以編輯商品信息,如商品介紹、商品展示圖片等,方便用戶瀏覽。
訂單管理
管理員根據(jù)訂單號(hào)、收貨人姓名、收貨地址、收貨人手機(jī)號(hào)碼等基本訂單信息進(jìn)行發(fā)貨配送。
美妝資訊管理
系統(tǒng)首頁(yè)可以發(fā)布美妝資訊。管理員可以添加、修改資訊的信息。
概念設(shè)計(jì)包括實(shí)體和聯(lián)系兩部分,如該系統(tǒng)中,用戶是一個(gè)實(shí)體,其屬性包括用戶 ID 標(biāo)識(shí)、用戶名、密碼、電話、地址等屬性。聯(lián)系是指實(shí)體之間有意義的關(guān)聯(lián),包括一對(duì)一、一對(duì)多、多對(duì)多三種類型。
系統(tǒng)E-R圖如下所示。
圖4-3系統(tǒng)E-R圖
在圖中,用戶購(gòu)買商品,關(guān)系為1:N,管理員管理商品的關(guān)系為1:N,用戶和訂單的關(guān)系為1:N。
針對(duì)系統(tǒng)的實(shí)體和屬性,結(jié)合數(shù)據(jù)設(shè)計(jì)思想,對(duì)系統(tǒng)的邏輯設(shè)計(jì)的內(nèi)容進(jìn)行如下描述。
商品(商品編號(hào)、商品名稱、商品圖片、價(jià)格、類目、庫(kù)存數(shù)量、介紹)。
訂單(訂單編號(hào)、用戶名、訂單內(nèi)容、總金額、手機(jī)號(hào)、收貨地址、是否支付、當(dāng)前狀態(tài))。
美妝資訊(資訊編號(hào)、標(biāo)題、類別、內(nèi)容、圖片)。
數(shù)據(jù)庫(kù)表是設(shè)計(jì)和實(shí)現(xiàn)系統(tǒng)的一個(gè)重要基礎(chǔ)。以下列出了該購(gòu)物系統(tǒng)幾個(gè)重要的數(shù)據(jù)庫(kù)表。
| 名稱 | 類型 | 長(zhǎng)度 | 不是null | 主鍵 | 注釋 |
| user_registration_id | int | 11 | 是 | 是 | 用戶注冊(cè)ID |
| gender | varchar | 64 | 否 | 否 | 性別 |
| date_of_birth | varchar | 64 | 否 | 否 | 出生日期 |
| examine_state | varchar | 16 | 是 | 否 | 審核狀態(tài) |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| user_id | int | 11 | 是 | 否 | 用戶ID |
| create_time | datetime | 0 | 是 | 否 | 創(chuàng)建時(shí)間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時(shí)間 |
??
| 名稱 | 類型 | 長(zhǎng)度 | 不是null | 主鍵 | 注釋 |
| shopping_mall_id | int | 11 | 是 | 是 | 商城ID |
| seller | int | 11 | 否 | 否 | 賣家 |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| cart_title | varchar | 125 | 否 | 否 | 標(biāo)題: |
| cart_img | text | 0 | 否 | 否 | 封面圖 |
| cart_description | varchar | 255 | 否 | 否 | 描述 |
| cart_price_ago | double | 8 | 是 | 否 | 原價(jià) |
| cart_price | double | 8 | 是 | 否 | 賣價(jià) |
| cart_inventory | int | 11 | 是 | 否 | 商品庫(kù)存 |
| 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 | 是 | 否 | 創(chuàng)建時(shí)間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時(shí)間 |
| 名稱 | 類型 | 長(zhǎng)度 | 不是null | 主鍵 | 注釋 |
| type_id | int | 11 | 是 | 是 | 商品分類ID: |
| father_id | smallint | 5 | 是 | 否 | 上級(jí)分類 |
| name | varchar | 255 | 否 | 否 | 商品名稱: |
| desc | varchar | 255 | 否 | 否 | 描述: |
| icon | varchar | 255 | 否 | 否 | 圖標(biāo): |
| source_table | varchar | 255 | 否 | 否 | 來源表: |
| source_field | varchar | 255 | 否 | 否 | 來源字段: |
| create_time | timestamp | 0 | 是 | 否 | 創(chuàng)建時(shí)間: |
| update_time | timestamp | 0 | 是 | 否 | 更新時(shí)間: |
| 名稱 | 類型 | 長(zhǎng)度 | 不是null | 主鍵 | 注釋 |
| order_id | int | 11 | 是 | 是 | 訂單ID: |
| order_number | varchar | 64 | 否 | 否 | 訂單號(hào): |
| goods_id | mediumint | 8 | 是 | 否 | 商品id |
| title | varchar | 32 | 否 | 否 | 商品標(biāo)題: |
| img | varchar | 255 | 否 | 否 | 商品圖片: |
| price | double | 10 | 是 | 否 | 價(jià)格: |
| price_ago | double | 10 | 是 | 否 | 原價(jià): |
| num | int | 8 | 是 | 否 | 數(shù)量: |
| price_count | double | 8 | 是 | 否 | 總價(jià): |
| norms | varchar | 255 | 否 | 否 | 規(guī)格: |
| type | varchar | 64 | 是 | 否 | 商品分類: |
| contact_name | varchar | 32 | 否 | 否 | 聯(lián)系人姓名: |
| contact_email | varchar | 125 | 否 | 否 | 聯(lián)系人郵箱: |
| contact_phone | varchar | 11 | 否 | 否 | 聯(lián)系人手機(jī): |
| contact_address | varchar | 255 | 否 | 否 | 收件地址: |
| postal_code | varchar | 9 | 否 | 否 | 郵政編碼: |
| merchant_id | mediumint | 8 | 是 | 否 | 商家ID: |
| create_time | timestamp | 0 | 是 | 否 | 創(chuàng)建時(shí)間: |
| update_time | timestamp | 0 | 是 | 否 | 更新時(shí)間: |
| description | varchar | 255 | 否 | 否 | 描述 |
| state | varchar | 16 | 是 | 否 | 訂單狀態(tài) |
| 名稱 | 類型 | 長(zhǎng)度 | 不是null | 主鍵 | 注釋 |
| Beautyinformation_id | int | 11 | 是 | 是 | 美妝資訊ID |
| title | varchar | 64 | 否 | 否 | 標(biāo)題 |
| title_number | varchar | 64 | 否 | 否 | 標(biāo)題編號(hào) |
| publisher | int | 11 | 否 | 否 | 發(fā)布人 |
| title_picture | varchar | 255 | 否 | 否 | 標(biāo)題圖片 |
| release_date | date | 0 | 否 | 否 | 發(fā)布日期 |
| content | longtext | 0 | 否 | 否 | 資訊內(nèi)容 |
| hits | int | 11 | 是 | 否 | 點(diǎn)擊數(shù) |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| create_time | datetime | 0 | 是 | 否 | 創(chuàng)建時(shí)間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時(shí)間 |
financial_data表:
| 名稱 | 類型 | 長(zhǎng)度 | 不是null | 主鍵 | 注釋 |
| financial_data__id | int | 11 | 是 | 是 | 財(cái)務(wù)數(shù)據(jù)ID |
| date | date | 0 | 否 | 否 | 日期 |
| trade_name | varchar | 64 | 否 | 否 | 商品名稱 |
| revenue_amount | int | 11 | 否 | 否 | 收入金額 |
| merchant_store | int | 11 | 否 | 否 | 商家店鋪 |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| create_time | datetime | 0 | 是 | 否 | 創(chuàng)建時(shí)間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時(shí)間 |
用戶注冊(cè)完成后,點(diǎn)擊“登陸”進(jìn)入到登陸頁(yè)面,輸入用戶名和密碼,點(diǎn)擊“登陸”按鈕,對(duì)用戶名和密碼進(jìn)行驗(yàn)證,根據(jù)傳入的用戶名和密碼在數(shù)據(jù)庫(kù)中是否能查詢到一條用戶信息,若不能返回用戶信息則登陸失敗,頁(yè)面提示用戶名或密碼錯(cuò)誤。
登錄界面如下圖所示。
圖5-1登錄界面
登錄界面關(guān)鍵代碼如下所示。
/**
?????* 登錄
?????* @param data
?????* @param httpServletRequest
?????* @return
?????*/
????@PostMapping("login")
????public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {
????????log.info("[執(zhí)行登錄接口]");
????????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, "賬號(hào)或密碼不能為空");
????????}
????????if (resultList == null || password == null) {
????????????return error(30000, "賬號(hào)或密碼不能為空");
????????}
????????//判斷是否有這個(gè)用戶
????????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);
????????//查詢用戶審核狀態(tài)
????????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,"該用戶審核未通過");
????????????}
????????}
????????//查詢用戶狀態(tài)
????????if (byUsername.getState()!=1){
????????????return error(30000,"用戶非可用狀態(tài),不能登錄");
????????}
????????String md5password = service.encryption(password);
????????if (byUsername.getPassword().equals(md5password)) {
????????????// 存儲(chǔ)Token到數(shù)據(jù)庫(kù)
????????????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, "賬號(hào)或密碼不正確");
????????}
}
用戶界面要盡量簡(jiǎn)潔大方,使用戶能夠方便找到需要的功能入口,瀏覽、購(gòu)買商品,且要易于修改和維護(hù),同時(shí)還要保證用戶合法和系統(tǒng)安全。
首頁(yè)界面如下圖所示。
圖5-2首頁(yè)界面
用戶進(jìn)入系統(tǒng)首頁(yè)后,點(diǎn)擊“注冊(cè)”鏈接進(jìn)入到注冊(cè)頁(yè)面,按照頁(yè)面提示輸入用戶名、密碼和手機(jī)號(hào),頁(yè)面進(jìn)行表單驗(yàn)證,驗(yàn)證輸入的用戶名和手機(jī)號(hào)是否合法,表單驗(yàn)證通過后,點(diǎn)擊“立即注冊(cè)”按鈕,利用 Ajax 技術(shù),對(duì)用戶名和手機(jī)號(hào)實(shí)現(xiàn)頁(yè)面無刷新驗(yàn)證,檢測(cè)數(shù)據(jù)庫(kù)中是否已經(jīng)存在該用戶名或手機(jī)號(hào),若數(shù)據(jù)庫(kù)中不存在,則注冊(cè)成功,注冊(cè)成功后,自動(dòng)跳轉(zhuǎn)到登錄頁(yè)面。
用戶注冊(cè)界面如下所示。
圖5-3用戶注冊(cè)界面
用戶注冊(cè)關(guān)鍵代碼如下所示。
/**
?????* 注冊(cè)
?????* @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]用戶獲取其他與用戶相關(guān)的數(shù)據(jù)
?????*/
????@Id
????@GeneratedValue(strategy = GenerationType.IDENTITY)
????@Column(name = "user_id")
????private Integer userId;
????/**
?????* 賬戶狀態(tài):[0,10](1可用|2異常|3已凍結(jié)|4已注銷)
?????*/
????@Basic
????@Column(name = "state")
????private Integer state;
????/**
?????* 所在用戶組:[0,32767]決定用戶身份和權(quán)限
?????*/
????@Basic
????@Column(name = "user_group")
????private String userGroup;
????/**
?????* 上次登錄時(shí)間:
?????*/
????@Basic
????@Column(name = "login_time")
????private Timestamp loginTime;
????/**
?????* 手機(jī)號(hào)碼:[0,11]用戶的手機(jī)號(hào)碼,用于找回密碼時(shí)或登錄時(shí)
?????*/
????@Basic
????@Column(name = "phone")
????private String phone;
????/**
?????* 手機(jī)認(rèn)證:[0,1](0未認(rèn)證|1審核中|2已認(rèn)證)
?????*/
????@Basic
????@Column(name = "phone_state")
????private Integer phoneState;
????/**
?????* 用戶名:[0,16]用戶登錄時(shí)所用的賬戶名稱
?????*/
????@Basic
????@Column(name = "username")
????private String username;
????/**
?????* 昵稱:[0,16]
?????*/
????@Basic
????@Column(name = "nickname")
????private String nickname;
????/**
?????* 密碼:[0,32]用戶登錄所需的密碼,由6-16位數(shù)字或英文組成
?????*/
????@Basic
????@Column(name = "password")
????private String password;
????/**
?????* 郵箱:[0,64]用戶的郵箱,用于找回密碼時(shí)或登錄時(shí)
?????*/
????@Basic
????@Column(name = "email")
????private String email;
????/**
?????* 郵箱認(rèn)證:[0,1](0未認(rèn)證|1審核中|2已認(rèn)證)
?????*/
????@Basic
????@Column(name = "email_state")
????private Integer emailState;
????/**
?????* 頭像地址:[0,255]
?????*/
????@Basic
????@Column(name = "avatar")
????private String avatar;
????/**
?????* 創(chuàng)建時(shí)間:
?????*/
????@Basic
????@Column(name = "create_time")
????@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
????private Timestamp createTime;
????@Basic
????@Transient
????private String code;
}
美妝商城頁(yè)是展示美妝商品的頁(yè)面,通過sql語(yǔ)句:"select shangpinxinximingcheng,id,tupian,jiage,addtime from shangpinxinxi order by addtime desc",將所有是商品按商品編號(hào)降序排列。
美妝商城頁(yè)面,如下圖所示。
圖5-4美妝商城頁(yè)面
系統(tǒng)首頁(yè)提供了搜索商品的輸入框,用戶在輸入框內(nèi)輸入想要查找商品的關(guān)鍵字,點(diǎn)擊搜索按鈕,系統(tǒng)將用戶輸入的關(guān)鍵字傳遞到后臺(tái)。首先創(chuàng)建一個(gè)實(shí)體類 PageBean,該實(shí)體類的屬性包括頁(yè)碼 pageCode、每頁(yè)記錄數(shù) pageSize、總記錄數(shù) totalRecord 和一個(gè) List 集合 beanList,利用輸入的關(guān)鍵字對(duì)數(shù)據(jù)庫(kù)進(jìn)行模糊查詢,將得到的結(jié)果存入 PageBean 中,返回PageBean 跳轉(zhuǎn)到 goodList.Java?頁(yè)面,在 goodList.java?頁(yè)面,使用循環(huán)將搜索到的結(jié)果分頁(yè)展示。
商品搜索界面如下圖所示。
圖5-5商品搜索界面
商品搜索的關(guān)鍵代碼如下。
??@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();
????}
用戶在瀏覽商品時(shí),對(duì)于心儀的想要購(gòu)買的商品,可以將該商品添加到購(gòu)買記錄中。點(diǎn)擊“添加購(gòu)買記錄”按鈕,頁(yè)面將該商品的數(shù)據(jù)傳遞到后臺(tái),首先查詢數(shù)據(jù)庫(kù)購(gòu)買記錄表中是否已經(jīng)存在該商品,若存在直接將商品數(shù)量加一,若不存在則創(chuàng)建一個(gè)新的購(gòu)買記錄對(duì)象,添加購(gòu)買記錄成功,數(shù)據(jù)庫(kù)中的購(gòu)買記錄表添加一條信息。用戶還可以點(diǎn)擊“我的購(gòu)買記錄”查看添加到購(gòu)買記錄的商品,系統(tǒng)通過讀取 session獲取到用戶 ID,將用戶 ID 傳遞到后臺(tái),在購(gòu)買記錄表中查詢?cè)撚脩舻乃匈?gòu)買記錄信息,返回?cái)?shù)據(jù)到我的購(gòu)買記錄頁(yè)面。
商品購(gòu)買界面如下圖所示。
圖5-6商品購(gòu)買界面
個(gè)人支付界面如下圖所示。
圖5-7個(gè)人支付界面
管理員對(duì)系統(tǒng)用戶的管理,在yhzhgl.Java實(shí)現(xiàn)管理員用戶的管理,包括錄入、刪除、修改,修改密碼通過SESSION獲取用戶名,然后輸入新密碼,提交到mod.java中,使用sql命令更新密碼。
管理員可以獲取系統(tǒng)中所有商城的列表并對(duì)其進(jìn)行編輯。管理員在添加商城時(shí),需要輸入商城基本信息,如標(biāo)題、商品分類、原價(jià)、庫(kù)存、描述等,還需要輸入商城詳情描述,包括對(duì)商城功能的描述以及展示圖片等。添加商城完成,數(shù)據(jù)庫(kù)商城表添加一條信息。管理員可以對(duì)商城信息進(jìn)行編輯。
商城管理界面如下圖所示。
圖5-8商城管理界面
管理員在后臺(tái)管理界面點(diǎn)擊到所有訂單列表界面dingdan_list.java,向控制層dingdanAction發(fā)送請(qǐng)求,搜索當(dāng)前所有訂單列表信息,dingdanAction向訂單列表數(shù)據(jù)訪問層調(diào)用搜索全部訂單列表的請(qǐng)求,向數(shù)據(jù)庫(kù)的訂單列表搜索當(dāng)前所有訂單列表并將訂單列表信息以對(duì)象的形式層層返回到dingdan_list.java界面,顯示出當(dāng)前所有訂單列表信息。同時(shí)可以刪除過期訂單列表,確認(rèn)已有訂單列表,進(jìn)行發(fā)貨處理。
訂單列表管理界面如下圖所示。
圖5-9訂單列表管理界面
訂單列表管理界面邏輯代碼如下:
@RequestMapping(value = {"/avg_group", "/avg"})
public Map<String, Object> avg(HttpServletRequest request) {
????????Query count = service.avg(service.readQuery(request), service.readConfig(request));
????????return success(count.getResultList());
}
以進(jìn)入系統(tǒng)首頁(yè)的訪問速度為例展示系統(tǒng)的性能測(cè)試;系統(tǒng)的主要用戶群體是購(gòu)物理念較為先進(jìn)的消費(fèi)者,系統(tǒng)要在3秒鐘內(nèi)響應(yīng);需要完成頁(yè)面的菜單欄、首頁(yè)輪播圖片、類目及商品列表、商品評(píng)價(jià)以及各功能模塊入口等元素的顯示。
功能性測(cè)試是指執(zhí)行指定的工作流程,通過對(duì)一個(gè)系統(tǒng)的所有特性和功能都進(jìn)行測(cè)試確保符合需求和規(guī)范。
系統(tǒng)功能性測(cè)試表如下表所示。
表6-1系統(tǒng)功能性測(cè)試表
| 編號(hào) | 測(cè)試功能 | 測(cè)試內(nèi)容 | 測(cè)試結(jié)果 |
| 1 | 用戶登錄 | 1.驗(yàn)證用戶名與密碼的正確性。 2.驗(yàn)證密碼是否可見。 | 通過 |
| 2 | 首頁(yè)展示 | 1.首頁(yè)數(shù)據(jù)是否成功加載。 2.驗(yàn)證搜索功能的準(zhǔn)確性。 3.驗(yàn)證是否可以異步加載。 4.驗(yàn)證導(dǎo)航欄按鈕。 | 通過 |
| 3 | 個(gè)人信息修改 | 1.驗(yàn)證登錄名是否可以正常更改。 2.驗(yàn)證聯(lián)系方式是否可以更改。 3.驗(yàn)證收貨地址可以正常修改。 4.驗(yàn)證密碼是否可以修改。 | 通過 |
| 7 | 商品分類管理 | 1.驗(yàn)證類目新增是否可以成功。 2.驗(yàn)證類目刪除是否可以成功。 | 通過 |
| 8 | 商品管理 | 1.商品信息是否與上傳一致。 2.是否能完成價(jià)格修改。 3.驗(yàn)證庫(kù)存信息修改。 | 通過 |
| 9 | 訂單處理 | 1.能否正常上傳單號(hào)完成發(fā)貨。 2.驗(yàn)證數(shù)據(jù)準(zhǔn)確性。 | 通過 |
| 10 | 添加商品 | 1.上傳商品是否添加驗(yàn)證。 2.圖片是否成功上傳。 3.驗(yàn)證表單是否提交成功。 | 通過 |
| 11 | 用戶管理 | 1.驗(yàn)證用戶錄入功能。 2.驗(yàn)證用戶違規(guī)清理功能。 | 通過 |
集成測(cè)試后,所有的模塊已經(jīng)全部連接完畢,形成了一個(gè)完整的系統(tǒng)。合格性測(cè)試是在集成測(cè)試完畢后,進(jìn)一步對(duì)系統(tǒng)進(jìn)行綜合性的檢測(cè)。經(jīng)過合格性測(cè)試,可以檢查出系統(tǒng)是否符合系統(tǒng)的設(shè)計(jì),能夠完成需求的所有功能。本系統(tǒng)經(jīng)過最后的測(cè)試,所有模塊功能都能按預(yù)定要求工作。
在實(shí)際測(cè)試中,經(jīng)過一系列系統(tǒng)性的測(cè)試,使我們能夠及時(shí)發(fā)現(xiàn)一些系統(tǒng)在設(shè)計(jì)中出現(xiàn)的疏忽和漏洞。經(jīng)過嚴(yán)密的測(cè)試,不僅發(fā)現(xiàn)了模塊內(nèi)部的錯(cuò)誤,也查找到模塊連接后產(chǎn)生的錯(cuò)誤。經(jīng)過測(cè)試,對(duì)系統(tǒng)產(chǎn)生錯(cuò)誤的地方進(jìn)行優(yōu)化、修改和完善,使得系統(tǒng)能夠?qū)崿F(xiàn)最初設(shè)計(jì)的基本功能。
此時(shí)項(xiàng)目已經(jīng)完成,即使實(shí)施的時(shí)間不是很長(zhǎng),但是這個(gè)過程中需要準(zhǔn)備很長(zhǎng)的一段時(shí)間去對(duì)系統(tǒng)設(shè)計(jì)開發(fā)所實(shí)際到的技術(shù)進(jìn)行學(xué)習(xí)。在學(xué)習(xí)的過程中,我逐漸認(rèn)識(shí)得到了我自身存在的一些不足。對(duì)于一些控制是必要的應(yīng)用技能,能夠理解,整個(gè)過程中僅僅是一個(gè)掌握了常用的性能和控制方法,我覺得挺容易的。從該系統(tǒng)中,系統(tǒng)的分析和設(shè)計(jì)的調(diào)查數(shù)據(jù),并且已經(jīng)經(jīng)歷了幾個(gè)月,并努力幾個(gè)月,該系統(tǒng)已經(jīng)完成。很顯然,該系統(tǒng)仍有很多不成熟,在系統(tǒng)設(shè)計(jì)過程中有許多技術(shù)缺陷存在。在設(shè)計(jì)的過程中也涉及到了很多自己無法解決的問題,主要通過找專業(yè)的網(wǎng)站和論壇來解決這些問題,對(duì)于圓滿完成我的畢業(yè)設(shè)計(jì),他們也貢獻(xiàn)了很大一部分力量。系統(tǒng)的開發(fā)環(huán)境和配置都是可以自行安裝的,系統(tǒng)使用Springboot開發(fā)框架,使用比較成熟的Mysql數(shù)據(jù)庫(kù)進(jìn)行對(duì)系統(tǒng)前臺(tái)及后臺(tái)的數(shù)據(jù)交互,根據(jù)技術(shù)語(yǔ)言對(duì)數(shù)據(jù)庫(kù),結(jié)合需求進(jìn)行修改維護(hù),可以使得系統(tǒng)運(yùn)行更具有穩(wěn)定性和安全性,從而完成實(shí)現(xiàn)系統(tǒng)的開發(fā)。
系統(tǒng)投入運(yùn)行時(shí),各功能均運(yùn)行正常。系統(tǒng)的每個(gè)界面的操作符合常規(guī)邏輯,對(duì)使用者來說操作簡(jiǎn)單,界面友好。整個(gè)系統(tǒng)的各個(gè)功能設(shè)計(jì)合理,體現(xiàn)了人性化。
美妝網(wǎng)站的主要特點(diǎn)有:
(1)簡(jiǎn)單大方,易于操作的 Web 頁(yè)面;
(2)利用 Ajax 技術(shù)使頁(yè)面進(jìn)行無刷新更新;
(3)根據(jù)用戶的瀏覽和購(gòu)買記錄,向用戶推薦可能感興趣的商品;
(4)系統(tǒng)具有商品搜索功能,使用戶能夠簡(jiǎn)單方便的找到自己心儀的商品;
(5)商品評(píng)論功能可以幫助用戶更全面的了解商品信息,用戶可以發(fā)表自己對(duì)已購(gòu)買商品的評(píng)價(jià);
(6)有良好的安全性和可擴(kuò)展性,增強(qiáng)了系統(tǒng)的可靠性,使系統(tǒng)保持持久的生命力。
由于時(shí)間限制和本人能力條件有限,該系統(tǒng)還存在一些不足,今后也會(huì)出現(xiàn)許多新的開發(fā)技術(shù),未來還可以對(duì)系統(tǒng)做出如下改進(jìn):
(1)優(yōu)化系統(tǒng)頁(yè)面,使頁(yè)面更加美觀且方便操作;
(2)優(yōu)化商品搜索功能,提供多條件選擇查詢搜索;
(3)優(yōu)化商品推薦功能,提高商品推薦的精準(zhǔn)度;
(4)優(yōu)化在線支付功能,提供更多支付接口,使用戶付款更加方便;
(5)進(jìn)一步提高系統(tǒng)的安全性,使系統(tǒng)更加健壯;
(6)優(yōu)化數(shù)據(jù)和代碼,提升軟件效率,方便系統(tǒng)維護(hù)和擴(kuò)展。
參考文獻(xiàn)
[1]《化妝品生產(chǎn)質(zhì)量管理規(guī)范》公布[J].日用化學(xué)品科學(xué),2022,45(01):42.
[2]化妝品行業(yè)邁入“變革時(shí)代”[J].國(guó)際品牌觀察,2021(32):23.
[3]康勇. 加強(qiáng)網(wǎng)售化妝品監(jiān)管勢(shì)在必行[N]. 中國(guó)醫(yī)藥報(bào),2021-11-02(005).
[4]張欣茹,王鈺祺.變革進(jìn)行時(shí),化妝品行業(yè)邁入“中國(guó)時(shí)間”[J].國(guó)際品牌觀察,2021(29):65-67.
[5]王道平,郭文璇.網(wǎng)絡(luò)購(gòu)物節(jié)期間在線零售商定價(jià)策略——基于電商平臺(tái)銷售大數(shù)據(jù)的分析[J].中國(guó)流通經(jīng)濟(jì),2021,35(09):95-106.
[6]徐蕾.基于消費(fèi)者體驗(yàn)需求的高端化妝品新零售經(jīng)營(yíng)策略[J].玉林師范學(xué)院學(xué)報(bào),2021,42(03):117-122.
[7]鄭曉紅,楊圣黨. 打造化妝品網(wǎng)絡(luò)銷售監(jiān)管新格局[N]. 中國(guó)醫(yī)藥報(bào),2021-04-20(006).
[8]尹蓓珮.個(gè)性化定制化妝品發(fā)展現(xiàn)狀及問題分析[J].上海醫(yī)藥,2020,41(19):70-72.
[9]李晶晶.微信公眾號(hào)在化妝品營(yíng)銷中的應(yīng)用探討[J].今日財(cái)富(中國(guó)知識(shí)產(chǎn)權(quán)),2020(08):63-64.
[10]陳靜. 基于云計(jì)算的新零售化妝品企業(yè)ERP系統(tǒng)的設(shè)計(jì)與實(shí)施[D].山東大學(xué),2020.
[11]陳德旭,朱文龍.“新零售+”電商模式的探索與設(shè)計(jì)[J].經(jīng)濟(jì)師,2020(05):223-224.
[12]戴雯婕,宋劍奇.“互聯(lián)網(wǎng)+”化妝品營(yíng)銷中《電子商務(wù)法》監(jiān)管問題研究[J].時(shí)代金融,2020(06):123-124.
[13]徐連霞,李建.淺議化妝品網(wǎng)上銷售系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].明日風(fēng)尚,2019(13):57.
[14]林勤花.基于.NET的某美妝網(wǎng)站的分析與設(shè)計(jì)[J].河北軟件職業(yè)技術(shù)學(xué)院學(xué)報(bào),2019,14(04):55-57.
[15]丁鐳. ERP系統(tǒng)銷售管理子系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].北京郵電大學(xué),20189
[20]WojciechowskiJ,SakowiczB,DuraK,etal.MVCmodel,strutsframeworkandfileuploadissuesinwebapplicationsbasedonJ2EEplatform[C]//ModernProblemsofRadioEngineering,Telecommunications&ComputerScience,InternationalConference.IEEE,2018:342-345.
致謝
時(shí)光飛逝,轉(zhuǎn)眼間我在學(xué)校的這些年生活即將結(jié)束,回顧這幾年的學(xué)習(xí)生活,收獲良多,既有幸福也有難過,學(xué)校生活的結(jié)束對(duì)于我來說也是一個(gè)新的開始。論文即將完成,在此,我心中有許多想要感謝的人。首先感謝我的導(dǎo)師,不僅在學(xué)習(xí)研究方面加以指導(dǎo),也在生活和為人處世上給予幫助。還要感謝授課老師,你們嚴(yán)謹(jǐn)?shù)膶W(xué)術(shù)精神和積極向上的工作態(tài)度都在激勵(lì)我的成長(zhǎng)和進(jìn)步。感謝多年來一直生活在一起的室友,謝謝你們多年來的陪伴和照顧。最后,要感謝各位論文評(píng)審老師,感謝您們?cè)诎倜χ谐榭赵u(píng)閱本論文并給出寶貴的意見和建議。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?點(diǎn)贊+收藏+關(guān)注??→? 私信領(lǐng)取本源代碼、數(shù)據(jù)庫(kù)?
總結(jié)
以上是生活随笔為你收集整理的Springboot美妆网站的设计与实现毕业设计-附源码211539的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 京东/淘宝的手机销售榜(前4名 -- 手
- 下一篇: Springboot,Mybatis根据