【基于Python的電商系統(tǒng)設(shè)計與實現(xiàn)14000字(論文)】_第1頁
【基于Python的電商系統(tǒng)設(shè)計與實現(xiàn)14000字(論文)】_第2頁
【基于Python的電商系統(tǒng)設(shè)計與實現(xiàn)14000字(論文)】_第3頁
【基于Python的電商系統(tǒng)設(shè)計與實現(xiàn)14000字(論文)】_第4頁
【基于Python的電商系統(tǒng)設(shè)計與實現(xiàn)14000字(論文)】_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第16頁共35頁基于Python的電商系統(tǒng)設(shè)計與實現(xiàn)目錄TOC\o"1-3"\h\u29222序言 324846第1章引言 4291431.1現(xiàn)狀分析 479801.2系統(tǒng)開發(fā)的背景 5203671.3論文的主要工作 520208第2章項目技術(shù)的概述 7128362.1前端技術(shù)簡介 7275692.2數(shù)據(jù)庫簡介 7163862.3Django簡介 82142.3服務(wù)器簡介 9758第3章系統(tǒng)設(shè)計 10299393.1系統(tǒng)開發(fā)及技術(shù)背景 1090463.2需求分析 12718第4章系統(tǒng)設(shè)計 15321114.1系統(tǒng)設(shè)計原則 15306184.2數(shù)據(jù)庫設(shè)計 1527491第5章系統(tǒng)詳細(xì)設(shè)計與實現(xiàn) 19183995.1首頁模塊 19119855.2詳情模塊 21227745.3注冊模塊 212665.4登錄模塊 2228085.5購物車模塊 24178205.6后臺管理模塊 2514862第6章系統(tǒng)測試 2916986.1登錄功能測試 29199796.2注冊功能測試 2954576.3用戶功能測試 30143766.4商品訂單測試 31128276.5管理員功能測試 31306046.6測試總結(jié) 3215688總結(jié) 3323065參考文獻(xiàn) 35序言隨著網(wǎng)絡(luò)的快速發(fā)展,各個行業(yè)都進(jìn)軍了網(wǎng)絡(luò)世界,最為突出的就是電商,相對于陳舊的線下商城,線上的商城有著各式各樣的款式供選擇,并且隨著快遞行業(yè)的發(fā)展,線上商城的存在讓人們的生活變得尤為的方便,尤其在疫情期間的使用更為廣泛。自網(wǎng)絡(luò)時代的到來,電商行業(yè)便大肆更改了營業(yè)模式,從以前限制性很強(qiáng)的線下模式進(jìn)入了幾乎零限制的線上模式,現(xiàn)如今我國b2c行業(yè)中的典型代表有著近6000萬的用戶注冊數(shù),這就大大證明了線上商城對人們所帶來的便利。本設(shè)計是基于Django技術(shù)開發(fā)一個以鞋為主體的線上商城平臺,使用VisualStudioCode開發(fā)環(huán)境,Python為開發(fā)語言,MySQL作為數(shù)據(jù)庫,建立一個專屬于自己的線上商城平臺,讓人們可以在該平臺自由的挑選自己喜歡的鞋子。本文包含五個章節(jié),第一章節(jié)為引言,描述系統(tǒng)的開發(fā)背景及和意義,系統(tǒng)實現(xiàn)的主要目標(biāo);第二章節(jié)為項目技術(shù)概述,描述項目運(yùn)用的技術(shù)和其優(yōu)缺點(diǎn);第三章節(jié)為系統(tǒng)分析,涵蓋總體思路分析,系統(tǒng)功能模塊分析等;第四章節(jié)為系統(tǒng)的設(shè)計,表明系統(tǒng)的數(shù)據(jù)圖和具體結(jié)構(gòu);第五章節(jié)是系統(tǒng)詳細(xì)設(shè)計與實現(xiàn),詳細(xì)說明了系統(tǒng)的一些技術(shù)難點(diǎn)以及展示效果。第六章是系統(tǒng)測試,主要對系統(tǒng)中的主要功能進(jìn)行了測試和分析。

第1章引言1.1現(xiàn)狀分析隨著網(wǎng)絡(luò)技術(shù)的迅速發(fā)展,互聯(lián)網(wǎng)已經(jīng)成為人們知道一切現(xiàn)狀的主要選擇工具,互聯(lián)網(wǎng)本身就有著傳播性快的特征,就對應(yīng)著這一特征,產(chǎn)生了很多新型行業(yè),線上商城就是其中一種。在傳統(tǒng)的店鋪行業(yè)中,客戶還都是以過路形式進(jìn)入店鋪,久而久之就只有老客戶會進(jìn)入固定的店鋪進(jìn)行選購,只有當(dāng)推出新活動或者促銷時才會吸引新顧客,所以從傳統(tǒng)店鋪角度而言,如何吸引新顧客成了最大的難題。隨著線上商城的推出和互聯(lián)網(wǎng)的快速發(fā)展,快遞行業(yè)的快速跟進(jìn),線上商城的普及速度可想而知,以至于現(xiàn)在的人們除了閑暇時間會去街上轉(zhuǎn)轉(zhuǎn),做做回頭客之外,其余的購物時間大多在家里,只需要一臺電腦或者一個手機(jī)就行,極大的方便了人們的生活?,F(xiàn)線上商城行業(yè)大多為寄售模式,商鋪只需在寄售平臺進(jìn)行寄售即可。和絕大多數(shù)電子商務(wù)網(wǎng)站相比,我將用波特五力模型對線上商城行業(yè)環(huán)境進(jìn)行簡單分析,首先,在供應(yīng)商的議價能力上,由于線上商城擁有大批量的忠實用戶而且擁有較強(qiáng)的商業(yè)信譽(yù),所以,很多供應(yīng)商都想在線上商城上落戶以創(chuàng)造更大利潤、占有更大市場,這樣的話,供應(yīng)商在線上商城面前就變得很被動,所以作為供應(yīng)商而言,其議價能力很弱,關(guān)于購買者的議價能力方面,線上商城的購買者大都是其注冊用戶,而且,購買者與賣方交流的途徑具有局限性,另外,線上商城的大部分商品銷售都是定價模式,所以,購買者的議價空間很小,即使這樣,線上商城還是需要面臨新進(jìn)入者的威脅,畢竟現(xiàn)在電子商務(wù)和網(wǎng)絡(luò)營銷發(fā)展的那么快,未來會不會有更多甚至更好的類似行業(yè)進(jìn)入也說不準(zhǔn),所以,線上商城還是需要做好應(yīng)對新入者威脅的準(zhǔn)備,不過,以目前的現(xiàn)狀來看,新入者要做到典型線上商城一樣獲得自己物流的動態(tài)和模式存在一定的困難,特別是耗資方面,作為同種類型商城的代替品,我認(rèn)為新入者店鋪是威脅最嚴(yán)重的,通過比較新入者和舊者我們發(fā)現(xiàn),不管是商品銷售類型還是網(wǎng)站版面設(shè)計,甚至物流模式方面兩者都是極其相似的,而且,近段時間以來,新入者大規(guī)模的進(jìn)行品牌和信譽(yù)建設(shè),所以,在未來對線上商城產(chǎn)生替代作用不是不可能,我國b2c行業(yè)發(fā)展迅猛,各類購物網(wǎng)站迅速崛起,可是,隨是同一行業(yè),競爭強(qiáng)度卻并不相同,競爭力的強(qiáng)弱和該企業(yè)所制定的營銷模式以及對市場反應(yīng)的敏感程度息息相關(guān),所以,作為b2c行業(yè)代表的線上商城應(yīng)該認(rèn)識到該行業(yè)所面臨的現(xiàn)狀并及時作出調(diào)整和反映來維持行業(yè)的競爭優(yōu)勢!1.2系統(tǒng)開發(fā)的背景目前線上商城的存在極大的給人們提供了便利,不過大部分店鋪都是掛在寄售平臺進(jìn)行寄售的,所有的數(shù)據(jù)都會到平臺庫,由平臺掌控著一切,店鋪能管理的只有自己的商品以及即將推出的活動之類的,后臺可查詢到所有的商品信息以及售出信息。而此球鞋商城只負(fù)責(zé)本店鋪所有的商品以及后臺管理,所有都由自己內(nèi)部人員負(fù)責(zé),一個是可以保證數(shù)據(jù)的安全性,另一個可以方便做數(shù)據(jù)分析,不需要通過平臺人員進(jìn)行三方托付。目前Pythonweb在國內(nèi)正處于發(fā)展階段,為了貼合市場以及提升自己的專業(yè)水平,所以采用Python來作為主要的開發(fā)語言。系統(tǒng)采用Django+前端js+數(shù)據(jù)庫等技術(shù),Django是Pythonweb中熱門度比較高的框架,他的適用性比較的廣泛,并且在他的里面集成了各式各樣的三方配置,使用的話只需要調(diào)出即可,無需安裝第三方庫。MySQL作為數(shù)據(jù)庫的代表,也是市場使用率最高的數(shù)據(jù)庫,他的安裝容易,使用方式也比較的簡單,大部分的市場需求都能夠被滿足。前端采用最基本的html加js來組成,一方面是為了提高前端的知識水平,另一方面是更能提高自己的基礎(chǔ)水平。1.3論文的主要工作對于現(xiàn)有的線上商城系統(tǒng),采用的大多是集成型,由用戶開通權(quán)限后自由創(chuàng)建店鋪;還有些是專賣型,只有自身的一家店鋪,本設(shè)計就是采用該模式,由設(shè)計者創(chuàng)建唯一管理員,所有的后臺數(shù)據(jù)只能由該管理員進(jìn)行管控。本文主要講解了該系統(tǒng)的所有功能以及使用方式,詳細(xì)講解了所有使用到的技術(shù),數(shù)據(jù)庫設(shè)計方式和功能詳細(xì)設(shè)計。系統(tǒng)采用Django+前端JS+數(shù)據(jù)庫等技術(shù),前端不是用HTML5來進(jìn)行前端靜態(tài)生成,而是用Django自帶的模板語言來生成,運(yùn)用Django模板語言除了語法的差別,頁面形成也是有很大的區(qū)別,模板語言中有后端循環(huán)、選擇等語句,有自己的語法形式,還有類中所有的繼承,不過這種繼承并不屬于數(shù)據(jù)或變量,而是屬于頁面,每個頁面都可以繼承上一個選擇繼承頁面,繼承后的頁面不需要寫基本的HTML形式,只需要在父頁面中的挖坑點(diǎn)填寫只屬于自己的語句即可。當(dāng)然,子頁面也可以選擇繼承父頁面坑點(diǎn)中的內(nèi)容,也可以選擇不繼承,不繼承的話就只有格式和父頁面相同。數(shù)據(jù)庫采用MySQL和Redis兩種數(shù)據(jù)庫,一種是關(guān)系型數(shù)據(jù)庫,一種是非關(guān)系型數(shù)據(jù)庫,兩種的使用方式和區(qū)別在下文中有介紹,暫不介紹。主體語言為Python,Python作為一種新型的后端語言,所用之處極廣,目前后端、爬蟲、機(jī)器學(xué)習(xí)等領(lǐng)域都有不錯的效果。本系統(tǒng)的所有數(shù)據(jù)都是使用Python來做爬蟲,基本爬蟲模塊是使用requests來實現(xiàn),實現(xiàn)方式為調(diào)用requests庫來執(zhí)行爬蟲。第2章項目技術(shù)的概述2.1前端技術(shù)簡介在本次設(shè)計中,前端技術(shù)一共用到三種技術(shù),分別為HTML,CSS和JS,主要使用的是HTML和JS,HTML和CSS負(fù)責(zé)靜態(tài)頁面,JS負(fù)責(zé)動態(tài)頁面。HTML是超文本標(biāo)記語言,它提供了許多標(biāo)簽通過瀏覽器展現(xiàn)出來。其中涵蓋圖片鏈接a標(biāo)簽、img標(biāo)簽、視頻video標(biāo)簽和音樂audio標(biāo)簽等等,所以說它是一種標(biāo)記語言。它的特點(diǎn)是可移植性高,也就說它跨平臺,不管在什么平臺上,只要有瀏覽器就行。它主要構(gòu)建web頁面整體的網(wǎng)頁結(jié)構(gòu)。CSS是層疊樣式表,是一種用來配合HTML來使用的樣式表。它主要是幫助HTML構(gòu)造一個美麗的前端靜態(tài)頁面,其中包括對前端頁面的布局、網(wǎng)頁的背景和顏色、字體大小和樣式等。Bootstrap就是用CSS封裝好的樣式庫,它為HTML提供了豐富的樣式,更好的渲染和美化網(wǎng)頁。JS全名為JavaScript,是一種配合HTML/CSS使用的腳本語言,主要用于Web網(wǎng)頁的動態(tài)效果。其中包括一些及時響應(yīng)事件、前后端交互的Ajax和一些前端的邏輯處理。jQuery就是用JavaScript封裝好的簡單的庫,簡化了JavaScript對DOM的API操作和解決瀏覽器的兼容問題。2.2數(shù)據(jù)庫簡介數(shù)據(jù)庫,顧名思義就是存儲數(shù)據(jù)的位置。但數(shù)據(jù)庫也分為很多種,有各自不同的存儲形式,有硬盤型永久存儲數(shù)據(jù)的,也有內(nèi)存級暫時緩存數(shù)據(jù)的。Mysql和Redis就是兩種不同的數(shù)據(jù)庫,Mysql為硬盤級,而Redis則為內(nèi)存級。硬盤和內(nèi)存的區(qū)別還是很明顯的,像Mysql那種就是可以永久保留數(shù)據(jù),而且它的數(shù)據(jù)容量也很大,畢竟現(xiàn)流社會中購買一塊容量比較大的硬盤還是很便宜的,遠(yuǎn)遠(yuǎn)不及內(nèi)存條的價格。Redis是一種內(nèi)存級數(shù)據(jù)庫,它的容量就可能遠(yuǎn)沒有Mysql的容量大,但內(nèi)存相對于硬盤的優(yōu)點(diǎn)也是很明顯的,那就是它的速度很快,所以一般像緩存那種就是用Redis來做的,畢竟它的速度還是很可觀的。數(shù)據(jù)庫如果按是否為關(guān)系型分類的話,分為兩大類,一類就是關(guān)系型數(shù)據(jù)庫,另一類就是非關(guān)系型數(shù)據(jù)庫,關(guān)系型數(shù)據(jù)庫中最突出的代表就是MySQL,SQLserver等,而另一種非關(guān)系型數(shù)據(jù)庫中,我認(rèn)為最突出的兩種就是Redis和MongDB,Redis通常用作緩存,而MongDB雖然也可以用作緩存,但它的存儲空間比Redis要大得多,所以MongDB一般是用作長文本的存儲,因為是內(nèi)存級數(shù)據(jù)庫,讀取數(shù)據(jù)的速度自然沒得說,而且它的存儲量也是較大,日后感覺會替代掉MySQL等關(guān)系型數(shù)據(jù)庫。MySQL是瑞典MySQLAB公司研發(fā)的一種小型關(guān)系型數(shù)據(jù)庫管理系統(tǒng),但因為瑞典MySQLAB公司內(nèi)部的一些原因,目前MySQL是被甲骨文所收購。MySQL是目前市場上最流行的關(guān)系型數(shù)據(jù)庫之一,不論在任何方面,都有它的一席之地。Redis相較于和MySQL數(shù)據(jù)庫不同的另一種存在,它是用ANSIC碼編寫的一種內(nèi)存級數(shù)據(jù)庫,它的主要優(yōu)點(diǎn)是開源、可基于內(nèi)存亦可持久化、數(shù)據(jù)采用K-V型,并且它提供多種開發(fā)語言的API接口。Redis在目前的市場上一般都是用作緩存、排行榜等功能途徑的開發(fā)。2.3Django簡介Django是一個重量型的開源框架不同于Flask,Django框架給開發(fā)者預(yù)置了很多功能,替開發(fā)者做了很多的選擇,很多常用的,甚至不常用的它都內(nèi)置了,只要用戶想用,都可以直接使用。比如Django擁有完善的模板機(jī)制、ORM機(jī)制等功能。Django模板機(jī)制包含模板繼承和頁面點(diǎn)語法,模板繼承和點(diǎn)語法借鑒對象的繼承和方法的調(diào)用的形式,方便開發(fā)人員的開發(fā),但是它只適用于Web全棧開發(fā),不適用于前后端分離。ORM機(jī)制稱對象關(guān)系映射機(jī)制,它幫助Python開發(fā)人員靈活使用數(shù)據(jù)模型,并且Django提供了豐富的API可以動態(tài)訪問數(shù)據(jù)庫,Django中的ORM就相當(dāng)于把數(shù)據(jù)庫中的所有對象關(guān)系都封裝成了一個類,極大的簡便了開發(fā)人員需要手寫SQL語句的麻煩,減輕了很大的工作量,但也因此,如果說想要極大程度上改善SQL語句的性能,那么還是需要手動對SQL語句進(jìn)行性能優(yōu)化,當(dāng)然,如果技術(shù)到位,也可以直接修改Django底層代碼。這樣優(yōu)化的代碼在下次的代碼編寫中也可以直接引用。并且Django還支持MySQL、Oracle、PostgreSQL等數(shù)據(jù)庫。Django可以快速設(shè)計和開發(fā)具有MTV層次的Web應(yīng)用。M表示Modle層,主要是跟數(shù)據(jù)庫進(jìn)行數(shù)據(jù)操作;T表示Templates層,主要是對前端頁面的渲染。V表示View層,即視圖函數(shù)層,主要是進(jìn)行一些邏輯處理2.3服務(wù)器簡介本次設(shè)計使用的服務(wù)器為聯(lián)合使用,采用Nginx+uWSGI,外層采用Nginx,內(nèi)層采用uWSGI進(jìn)行代理,uWSGI本身是采用進(jìn)程+協(xié)程來實現(xiàn)的,所以在效率方面比Django本身的服務(wù)器性能好太多,所以采用uWSGI來布置服務(wù)器。Nginx較對于Django本身自帶的服務(wù)器而言,它比Django輕量,并且性能比它好,Nginx支持反向代理,而且它是開源的,占用的內(nèi)存相對而言也是比較少的,抗并發(fā)的能力也比較強(qiáng)。本系統(tǒng)主要采用Nginx的動靜結(jié)合。動態(tài)加載主要是負(fù)責(zé)代理uWSGI服務(wù)器。uWSGI,它主要負(fù)責(zé)實現(xiàn)WSGI、uwsgi、Http等協(xié)議。Nginx主要就是用HttpUwsgiModule來與uWSGI服務(wù)進(jìn)行數(shù)據(jù)交換。WSGI是一種服務(wù)網(wǎng)關(guān),它是服務(wù)器與Web應(yīng)用通信的一種規(guī)范。

第3章系統(tǒng)設(shè)計3.1系統(tǒng)開發(fā)及技術(shù)背景最近幾年,由于網(wǎng)絡(luò)的迅速發(fā)展,網(wǎng)上商城已經(jīng)成為了目前的主流行業(yè),主打著方便、快捷的服務(wù)闖入了人們的生活中,所以我才會選擇以線上商城作為主題來做該系統(tǒng)。近幾年來,軟件行業(yè)融入了很多新技術(shù),例如Python、GO,但這些新的技術(shù)還處于發(fā)展期,技術(shù)并不是那么成熟。由于近年來人工智能方向科技的爆發(fā),人們在新技術(shù)中的著重點(diǎn)都壓在了Python上,正因為Python的語法簡單,易讀,而且特別適合剛接觸編程行業(yè)的人去學(xué)習(xí),所以在近兩年都受到了很大的關(guān)注。另一方面Python也是目前最為流行的腳本語言,Python腳本就類似于“萬金油”一般,不管在什么方面都會有所存在,甚至于有的其他語言的設(shè)計師覺得其他語言設(shè)計出來的模塊性能并不是很好,那他就可能會用其他語言來設(shè)計,而首選的其他語言必然是Python。近幾年P(guān)ython爬蟲也是非?;鸨穆殬I(yè),目前主流的爬蟲語言為Python和Java,而因為Python的語法簡單,代碼量比Java的代碼量少之又少,所以大多數(shù)的公司首選還是用Python來進(jìn)行爬蟲操作。數(shù)據(jù)庫方面,因為目前市場上流行的數(shù)據(jù)庫多種多樣,多而雜,但如果按是否為關(guān)系型分的話主分要分為兩大類,一類是關(guān)系型數(shù)據(jù)庫,一類是非關(guān)系型數(shù)據(jù)庫,關(guān)系型數(shù)據(jù)庫中最流行的可能就是MySQL、SQLserver等,而非關(guān)系型數(shù)據(jù)庫中最流行的就是Redis,Mongdb等,兩類數(shù)據(jù)庫雖然都可以存儲數(shù)據(jù),但是他們的存儲形式以及操作方式是大有不同的。關(guān)系型數(shù)據(jù)庫就是我們常見的那種分庫分表,每個表中設(shè)計字段,設(shè)計字段類型,允許多表連接,每個表中的數(shù)據(jù)看起來都是規(guī)規(guī)整整的。而非關(guān)系型數(shù)據(jù)庫則如表面意思一樣,它的內(nèi)部不存在多表連接,它有自己建立自己的表,它是沒有庫的,每個表中的數(shù)據(jù)就如同表格一樣,沒有規(guī)定的類型,也沒有相對應(yīng)的關(guān)系。所以這兩種數(shù)據(jù)庫的作用也是不同的,關(guān)系型數(shù)據(jù)庫通常用于存儲大型數(shù)據(jù),因為它的主體就是存放于硬盤當(dāng)中,所以說它可以包含的數(shù)據(jù)量是很大的,但正因為是直接存儲在硬盤當(dāng)中,所以它的存取速度是相對而言較慢的,這樣就需要對它的性能進(jìn)行測試,這就導(dǎo)致后來有了專門在數(shù)據(jù)庫方面做測試的設(shè)計師,主要做的就是對SQL語句的測試以及數(shù)據(jù)庫性能方面的測試,所以說關(guān)系型數(shù)據(jù)庫主要的并不在于數(shù)據(jù)的存儲,而在于一個系統(tǒng)調(diào)用數(shù)據(jù)庫的快慢,調(diào)用的性能差距直接就能影響客戶的體驗,甚至加載一段數(shù)據(jù)的時候能加載十幾分鐘。后來就有了非關(guān)系型數(shù)據(jù)庫,非關(guān)系型數(shù)據(jù)庫的出現(xiàn)就是為了解決關(guān)系型數(shù)據(jù)庫讀取數(shù)據(jù)太慢的原因。非關(guān)系型數(shù)據(jù)庫和關(guān)系型數(shù)據(jù)庫的存儲方式是不同的,關(guān)系型數(shù)據(jù)庫是將數(shù)據(jù)直接存儲至硬盤中,而非關(guān)系型數(shù)據(jù)庫則是將數(shù)據(jù)存儲在內(nèi)存中,硬盤和內(nèi)存的兩種存儲方式,在目前的主流技術(shù)中,硬盤有機(jī)械硬盤和固態(tài)硬盤兩種,固態(tài)硬盤的數(shù)據(jù)讀取速度是比機(jī)械硬盤高的,而內(nèi)存和硬盤的主要區(qū)別,就算通過價格來判定也是可以判定的出來的,內(nèi)存存儲數(shù)據(jù)量不算很多,雖然現(xiàn)在科技在不斷進(jìn)步,但相較于硬盤而言,內(nèi)存的存儲量是遠(yuǎn)低于硬盤的。硬盤的主要特點(diǎn)就是存儲量大,性價比高,這就導(dǎo)致了關(guān)系型數(shù)據(jù)庫和非關(guān)系型數(shù)據(jù)庫兩者的數(shù)據(jù)讀取速度以及存儲量的巨大差異。關(guān)系型數(shù)據(jù)庫通常是用來做需要做永久保存的數(shù)據(jù)存儲,而非關(guān)系型數(shù)據(jù)庫通常就是用作緩存,或者做排行榜功能,Redis在做排行榜方面是非常出色的,將用戶最常訪問的數(shù)據(jù)備份在非關(guān)系型數(shù)據(jù)庫中,這樣客戶每次訪問數(shù)據(jù)時就不需要再調(diào)用關(guān)系型數(shù)據(jù)庫,只需要在非關(guān)系型數(shù)據(jù)庫中調(diào)用用作緩存的即可。但緩存的存在也引來了很多的問題,例如緩存穿透、直接越過緩存訪問數(shù)據(jù)庫導(dǎo)致數(shù)據(jù)加載問題等,緩存數(shù)據(jù)量的過多同樣也是不可或缺的問題,所以后來為了數(shù)據(jù)庫方面的安全,也是有了非關(guān)系型數(shù)據(jù)庫的“分庫分表”,但此“分庫分表”是和關(guān)系型數(shù)據(jù)庫的分庫分表不一樣,它是用多臺非關(guān)系型數(shù)據(jù)庫同時做緩存,并且他們都有各自的路由,是存在于網(wǎng)絡(luò)中的,只不過可能做了代理,所以說外網(wǎng)看不見這些數(shù)據(jù)庫的實質(zhì)存在。“分庫分表”操作就是將超過界限的數(shù)據(jù)分配到另一個數(shù)據(jù)庫中并留作一行作為標(biāo)志行,但此操作只是將非關(guān)系型的數(shù)據(jù)量做了提升,但非關(guān)系型數(shù)據(jù)庫的性能卻因此有了下降,所以后來又研發(fā)了一種改進(jìn)的方法——路由分配,對每個用戶的ID或IP進(jìn)行篩選,可以對ID或IP進(jìn)行除法操作,除的基數(shù)可以為數(shù)據(jù)庫的數(shù)量,也可以是自己設(shè)定的值。這樣形成的結(jié)果就是劃定多少個用戶的緩存存在于一個非關(guān)系型數(shù)據(jù)庫中,等需要讀取的時候也是通過劃分的結(jié)果,直接到數(shù)據(jù)庫中去調(diào)用即可。這樣即保證了非關(guān)系型數(shù)據(jù)庫原有的讀取速度,也保證了在數(shù)據(jù)量極大的時候數(shù)據(jù)庫也有足夠的空間去存儲。非關(guān)系型數(shù)據(jù)庫中還有一種最常見的黑客攻擊,那就是緩存穿透,緩存穿透的原理很簡單,就是通過一直訪問緩存中所不存在的數(shù)據(jù),因為緩存中存放的數(shù)據(jù)類型是一種鍵值對的數(shù)據(jù),正常而言,當(dāng)訪問到緩存所不存在的健值時,都會直接到關(guān)系型數(shù)據(jù)庫中直接調(diào)取數(shù)據(jù),那樣,緩存穿透的攻擊即有了可實行的機(jī)會,通過爬蟲或一些執(zhí)行代碼一直不停的訪問那個不存在的緩存,正因為不存在,所以系統(tǒng)就會直接跳過緩存層,訪問數(shù)據(jù)層,但一直不停的訪問數(shù)據(jù)層,這對數(shù)據(jù)層的壓力是非常大的,如果是處于系統(tǒng)的高峰值,那么極有可能產(chǎn)生系統(tǒng)宕機(jī),那樣造成的損失是特別慘重的,所以就需要對緩存穿透這種攻擊方式進(jìn)行抵御。抵御的方式無非于兩種,在緩存訪問不到的情況下,訪問數(shù)據(jù)層,數(shù)據(jù)層也訪問不到或者已經(jīng)訪問到了數(shù)據(jù),那么即刻添加至緩存中,即使在數(shù)據(jù)層沒有訪問到數(shù)據(jù),也要將結(jié)果添加至緩存中,那么就可以有效地抵制緩存穿透攻擊。在框架方面,我選擇的是Django框架,目前市場所存在的Python框架有很多,但最為主流的有三種,分為Django、Flask和Tornado,Tornado在最新版本中因為撤除了多協(xié)程,導(dǎo)致Tornado的執(zhí)行速度大幅度下降,所以Tornado的使用也是變得少之又少,在使用中的也是用的之前的版本。Flask和Django是目前Python框架的兩巨頭,Django框架是把所有的功能都已經(jīng)封裝好,只要用戶想要使用就可以直接使用,而Flask框架則是只提供一個核心代碼,如果想要其他的功能,就需要去社區(qū)中心進(jìn)行下載,也可以自己編寫,總結(jié)而言就是Django框架里面的功能比較全面,而Flask框架就是擴(kuò)展性較高,可根據(jù)自己的需求自由更改底層代碼。3.2需求分析線上商城主要分為兩種,一種為集成型,里面包含了各種商家信息,例如淘寶,京東;還有一種是為客戶單獨(dú)設(shè)計的網(wǎng)站,網(wǎng)站即商鋪,里面所有的商品全是由商鋪自行上傳,種類分明,設(shè)計起來也是很清晰的。該項目屬于客戶單獨(dú)設(shè)計,所有商品都是由客戶自己提供,自己為店鋪做數(shù)據(jù)處理。模塊分別有七個部分組成,分別是:主頁模塊、詳情信息模塊、登錄頁面模塊、注冊信息模塊、個人用戶信息模塊、購物車訂單模塊、用戶支付模塊。業(yè)務(wù)流程圖如圖3-1所示。圖3-1業(yè)務(wù)流程圖本系統(tǒng)主要實現(xiàn)的功能是用戶自由購買商品,商家只需要管理商品庫存以及訂單處理即可。根據(jù)這個系統(tǒng)所要實現(xiàn)的目的和任務(wù),總結(jié)出這個系統(tǒng)最終所要實現(xiàn)的功能需求如下:1.登錄模塊此功能為用戶登錄,通過賬號密碼以及驗證碼進(jìn)行登錄,確保操作者是本人,防止惡意登錄。已經(jīng)登錄的用戶,系統(tǒng)會將用戶ID進(jìn)行session保存,在訪問用戶個人模塊時會對用戶ID進(jìn)行檢測,確保用戶信息安全。2.注冊模塊此功能為新用戶準(zhǔn)備,用戶通過此接口為自己建立一個新的賬號密碼來為以后使用。注冊時需要提供數(shù)據(jù)庫中所不存在的用戶名;密碼必須確保為六位以上,再次輸入密碼欄是為了確保用戶能夠記住。3.首頁模塊此功能為新用戶準(zhǔn)備,用戶通過此接口為自己建立一個新的賬號密碼來為以后使用。注冊時需要提供數(shù)據(jù)庫中所不存在的用戶名;密碼必須確保為六位以上,再次輸入密碼欄是為了確保用戶能夠記住。4.詳情模塊此功能為新用戶準(zhǔn)備,用戶通過此接口為自己建立一個新的賬號密碼來為以后使用。注冊時需要提供數(shù)據(jù)庫中所不存在的用戶名;密碼必須確保為六位以上,再次輸入密碼欄是為了確保用戶能夠記住。5.個人信息模塊此模塊展示了用戶的所有信息,用戶可通過該頁面修改自己的信息。6.購物車模塊此模塊為用戶的添加購物的模塊,對于用戶添加到購物車中的商品信息進(jìn)行展示。7.支付模塊此模塊為接口模塊,調(diào)用的是支付寶的支付接口,通過回調(diào)數(shù)據(jù)來確認(rèn)用戶有無付款。

第4章系統(tǒng)設(shè)計4.1系統(tǒng)設(shè)計原則1.安全性原則用戶的所有信息都必須在安全上加以保障,若用戶的地址或者電話泄露,會造成很多不必要的麻煩,所以這就要在很多安全方面加以考慮,最基礎(chǔ)的就是對登錄密碼進(jìn)行加密,這樣即使是管理員也無法得知用戶密碼;接著就是用用戶ID對每個不同的用戶進(jìn)行隔離。2.可擴(kuò)充性原則隨著用戶的日益增加,所有的功能模塊都需要有一定的擴(kuò)充能力,方便日后的修改以及擴(kuò)充。眾所周知,項目二次開發(fā)是比較正常的,所以為了滿足二次開發(fā),每個模塊都填上說明或編寫開發(fā)說明,講解每個模塊的功能和作用來方便以后開發(fā)。3.提高用戶體驗所有的電商項目都是以用戶為一切的中心,用戶體驗最大,所以一切必須以用戶怎么操作最舒服怎么來。4.具有完整的系統(tǒng)接口日后可能會有越來越多的功能加入,所以為了保證系統(tǒng)的完整性,對外可以提供完整的系統(tǒng)接口,確保日后即使添加的功能有些許的問題,但最主要的系統(tǒng)是不可能出現(xiàn)問題的。4.2數(shù)據(jù)庫設(shè)計數(shù)據(jù)庫設(shè)計分為兩個設(shè)計,一個為表結(jié)構(gòu)的設(shè)計,還有一個為字段設(shè)計。表結(jié)構(gòu)設(shè)計有兩種,一種是數(shù)據(jù)庫引擎,還有一種是表與表的關(guān)系。數(shù)據(jù)庫引擎通常有Innodb和Myisam兩種,根據(jù)需求自由選擇。而表于表的關(guān)系主要有三種,分為一對一、一對多和多對多。表中字段的關(guān)系主要就是邏輯關(guān)系,表中有主鍵等關(guān)鍵字,這些關(guān)鍵字主要就是用到表和表的關(guān)系連接中的。表中的字段有自己所特有的屬性,每個字段都有自己所特有的意義,不可替代。本項目主要是以用戶為中心展開表的設(shè)計。用戶表和商品表為多對多關(guān)系,順之產(chǎn)生第三張表為購物車表。用戶表和訂單表之間為一對多關(guān)系。用戶表和地址表也是一對多關(guān)系。訂單表和訂單地址表為一對一關(guān)系。訂單表和訂單商品為一對多關(guān)系[3]。下面是數(shù)據(jù)庫各模塊表關(guān)系和表字段設(shè)計。本項目中主要表之間的E-R關(guān)系如圖4-1所示。圖4-1項目主要表E-R關(guān)系圖首頁模塊表結(jié)構(gòu)設(shè)計首頁模塊輪播表首頁展示的輪播表,最主要就是為輪播提供數(shù)據(jù),若想要修改輪播數(shù)據(jù),直接在該表中修改即可,如表4-1所示。表4-1首頁模塊輪播表字段類型長度備注idinteger主鍵自增長titlechar50標(biāo)題image_urlimage圖片路徑date_publishdatetime發(fā)布時間indexinteger排列順序首頁模塊主要商品表首頁商品數(shù)據(jù)表,為首頁提供展示商品,是除輪播之外的普通數(shù)據(jù)展示,如表4-2所示。表4-2首頁模塊主要商品表字段類型長度備注idinteger主鍵自增長categorychar256分類外鍵namechar30名稱brandchar256品牌外鍵sizeChar256尺寸外鍵old_pricefloat原價new_pricefloat現(xiàn)價discountfloat折扣descchar100簡介salesinteger銷量tagchar256標(biāo)簽外鍵numinteger庫存image_url_iimage展示圖片路徑image_url_limage詳情圖片路徑image_url_mimage詳情圖片路徑2image_url_rimage詳情圖片路徑3image_url_cimage購物車展示圖片詳情模塊表結(jié)構(gòu)設(shè)計商品分類表所有的商品數(shù)據(jù)都在其中,如表4-3所示。表4-3商品分類表字段類型長度備注idinteger主鍵自增長typchar20所屬大類namechar30分類名稱indexinteger分類的排序sexinteger性別商品品牌表商品品牌表,提供了所有的商品品牌,如表4-4所示。表4-4商品分類表字段類型長度備注idinteger主鍵自增長namechar30品牌名稱indexinteger64排列順序商品尺寸表商品尺寸表,提供了所有的商品尺寸,如表4-5所示。表4-5商品分類表字段類型長度備注idinteger主鍵自增長namechar30尺寸indexinteger64排列順序商品標(biāo)簽表商品標(biāo)簽表,提供了所有的商品標(biāo)簽,如表4-6所示。表4-6商品標(biāo)簽表字段類型長度備注idinteger主鍵自增長namechar30標(biāo)簽購物車模塊表結(jié)構(gòu)設(shè)計購物車中的數(shù)據(jù)表,是用戶存放在購物車中的數(shù)據(jù),如表4-7所示。表4-7購物車商品表字段類型長度備注idinteger主鍵自增長clothingchar購物車中產(chǎn)品條目quantityinteger數(shù)量sum_pricefloat小計用戶表結(jié)構(gòu)設(shè)計用戶表,記錄了用戶所有的登錄信息,如表4-8所示。表4-8用戶表字段類型長度備注idinteger主鍵自增長qqchar20關(guān)聯(lián)qqmobilechar11用戶手機(jī)號usernamechar256用戶名emailchar256用戶郵箱passwordchar256用戶密碼

第5章系統(tǒng)詳細(xì)設(shè)計與實現(xiàn)本次系統(tǒng)分為首頁模塊、詳情模塊、登錄模塊、注冊模塊、個人信息模塊、購物車模塊、支付模塊七個子模塊,每個模塊之前都可進(jìn)行互調(diào),以保證數(shù)據(jù)的完整性。5.1首頁模塊首頁模塊是一個網(wǎng)上購物必需的功能之一,因為用戶進(jìn)入App中,第一下展示的就是首頁模塊的頁面。首頁模塊頁面可以說是該項目中的“臉面”,也是用戶訪問量最多的頁面,所以往往一個好的網(wǎng)站都有一個很好的首頁展示。首頁模塊主要包含了輪播圖、導(dǎo)航、必購商品和主要展示。輪播圖主要利用前端swiper框架來實現(xiàn),這類主要是商家做一些廣告宣傳的。導(dǎo)航是一些銷量比較排前的商品推薦給用戶。必購商品是人們生活必需品,方便用戶選擇。主要展示是商品的分類,根據(jù)用戶喜愛來選擇,如圖5-1所示。因為首頁需要進(jìn)行的數(shù)據(jù)操作很少,所以只展示前端的模板代碼,主要代碼如下:{%extends'base.html'%}#繼承base_main.html{%loadstaticfiles%} #讀取繼承文件中的staticfiles塊{%blockbanner_block%} #填補(bǔ)繼承文件中的banner_block塊{%include'ad.html'%} #讀取ad.html文件{%endblock%}{%blockcontent_block%}<divclass="content"><divclass="container"><divclass="content-top"><h1>最新商品</h1><divclass="content-top1">{%forcloinclo_list%}<formaction="{%url'add_cart'%}"method="post"id="subform{{clo.id}}">{%csrf_token%}<divclass="col-md-3col-md2"><divclass="col-md1simpleCart_shelfItem"><ahref="{%url'detail'%}?did={{clo.id}}"><imgclass="img-responsive"src="{{MEDIA_URL}}{{clo.image_url_i}}"alt=""/></a><h3><ahref="{%url'detail'%}?did={{clo.id}}">{{}}</a></h3><divclass="price"><h5class="item_price">{{clo.new_price}}元</h5><inputtype="hidden"name="chid"value="{{clo.id}}"><ahref="{%url'detail'%}?did={{clo.id}}">details>></a><divclass="clearfix"></div></div></div></div></form>{%endfor%}<divclass="clearfix"></div></div></div>{%include'pagination.html'%}</div></div>{%endblock%}defgetPage(request,clo_list):paginator=Paginator(clo_list,8)try:page=int(request.GET.get('page',1))clo_list=paginator.page(page)except(EmptyPage,InvalidPage,PageNotAnInteger):clo_list=paginator.page(1)returnclo_listdefgetDiscount(request):try:clo_list=Clothing.objects.filter(new_price__lt=F('old_price'))clo_list=getPage(request,clo_list)logger.debug("lenclo_list:%d",len(clo_list))discount=TrueexceptExceptionase:logger.error(e)returnrender(request,'products.html',locals())圖5-1首頁展示5.2詳情模塊詳情模塊是為了更加完整的展示商品的信息,以供客戶進(jìn)行最完整的選擇。詳情模塊主要包含了球鞋商品詳細(xì)內(nèi)容以及將其加入購物車的操作。通過根據(jù)了解其詳細(xì)的商品參數(shù)來達(dá)到選擇最合適的商品。只有在用戶已登錄的情況下才可將其商品加入購物車;若顧客未登錄狀態(tài)下無法加購會跳轉(zhuǎn)至網(wǎng)站登錄頁面,只有在登錄成功的情況下才可將商品加入用戶的購物車,如圖5-2所示。主要代碼如下:defdetail(request):try:did=request.GET.get('did',None)try:clo=Clothing.objects.get(pk=did)exceptClothing.DoesNotExist:returnrender(request,'error.html',{"reason":"商品不存在"})exceptExceptionase:logger.error(e)returnrender(request,'single.html',locals())圖5-2詳情頁面展示5.3注冊模塊用戶登錄是電商產(chǎn)品的必需功能之一,用戶想要使用App購物就必須有一個自己的賬號,從而才可以在網(wǎng)上購買自己滿意的商品。注冊賬號是必不可少的一步。注冊模塊主要包含兩個功能分別為用戶的注冊和郵箱激活賬號。用戶注冊是指用戶在注冊時App后臺需要用戶輸入個人的基本信息,其中包括用戶名稱,密碼以及確認(rèn)密碼,用戶的郵箱以及用戶頭像等,如果用戶名稱已經(jīng)被注冊或者用戶輸入的信息格式不正確系統(tǒng)將向用戶顯示相應(yīng)錯誤的提示信息,使其修改注冊內(nèi)容,在注冊完以后,即可進(jìn)行登錄,如圖5-3所示。主要代碼:defdo_reg(request):try:ifrequest.method=='POST':reg_form=RegForm(request.POST)ifreg_form.is_valid():user=User.objects.create(username=reg_form.cleaned_data["username"],email=reg_form.cleaned_data["email"],password=make_password(reg_form.cleaned_data["password"]),)user.save()user.backend='django.contrib.auth.backends.ModelBackend'login(request,user)returnredirect(request.POST.get('source_url'))else:returnrender(request,'error.html',{'reason':reg_form.errors})else:reg_form=RegForm()exceptExceptionase:logger.error(e)returnrender(request,'register.html',locals())圖5-3注冊頁面5.4登錄模塊登錄是使用剛剛注冊的賬戶登錄到App,根據(jù)登錄頁面的提示輸入相應(yīng)的信息,比如用戶名和密碼。輸入完之后,系統(tǒng)將驗證用戶帳戶和密碼是否正確,如果驗證正確,就會跳轉(zhuǎn)到我的模塊頁面。如果驗證錯誤,提示相關(guān)錯誤。登錄模塊主要包含用戶名和密碼的驗證以及驗證碼的驗證。用戶名和密碼的驗證是指用戶注冊的用戶名和密碼是否與登錄時的用戶名和密碼一致,或則是指數(shù)據(jù)庫中是否有該用戶名和密碼。驗證碼主要用于防止一些爬蟲爬取商品信息,如圖5-4所示。主要代碼如下:defdo_login(request):try:ifrequest.method=='POST':login_form=LoginForm(request.POST)iflogin_form.is_valid():username=login_form.cleaned_data["username"]password=login_form.cleaned_data["password"]user=authenticate(username=username,password=password)ifuserisnotNone:user.backend='django.contrib.auth.backends.ModelBackend'#指定默認(rèn)的登錄驗證方式login(request,user)else:returnrender(request,'error.html',{'reason':'登錄驗證失敗'})returnredirect(request.POST.get('source_url'))else:returnrender(request,'error.html',{'reason':login_form.errors})else:login_form=LoginForm()exceptExceptionase:logger.error(e)returnrender(request,'login.html',locals())#退出defdo_logout(request):try:logout(request)exceptExceptionase:logger.error(e)login_form=LoginForm()returnrender(request,'login.html',locals())圖5-4登錄頁面5.5購物車模塊購物車模塊是網(wǎng)上購物的主要功能之一,用戶一次購物的商品都是在購物車中。購物車模塊也是App的最重要的環(huán)節(jié),用戶商品的選擇和下單都跟購物車有關(guān)系。購物車模塊包含下單用戶的詳細(xì)信息、加入購物車商品的展示、商品的選中和付款總價。下單用戶的詳細(xì)信息包含收貨人、電話號碼、收貨地址和送達(dá)時間,方便商家發(fā)貨。購物車商品展示主要是商品的數(shù)量和單價。商品的選中和付款總價是指購物車中哪些商品現(xiàn)在購買以及購買的付款總價,如圖5-5所示。主要代碼:#查看購物車@authenticated_viewdefview_cart(request):cart=request.session.get(request.user.id,None)returnrender(request,'checkout.html',locals())#添加購物車@authenticated_viewdefadd_cart(request):try:chid=request.POST.get('chid',None)print(chid)try:clothing=Clothing.objects.get(pk=chid)exceptClothing.DoesNotExist:returnrender(request,'error.html',{'reason':'商品不存在'})cart=request.session.get(request.user.id,None)ifnotcart:cart=Cart()cart.add(clothing)request.session[request.user.id]=cartelse:cart.add(clothing)request.session[request.user.id]=cartexceptExceptionase:logger.error(e)returnrender(request,'checkout.html',locals())#清空購物車@authenticated_viewdefcleanCart(request):flag=request.GET.get('flag',None)ifflag:cart=Cart()request.session[request.user.id]=cartreturnrender(request,'checkout_ok.html',locals())else:cart=Cart()request.session[request.user.id]=cartreturnrender(request,'checkout.html',locals())@authenticated_viewdefclean_one_item(request,id):item=Nonetry:item=Clothing.objects.get(pk=id)exceptClothing.DoesNotExist:passifitem:item.delete()cart=request.session.get(request.user.id,None)returnrender(request,'checkout.html',{'cart':cart})圖5-5購物車頁面5.6后臺管理模塊后臺管理模塊采用的是Django的admin模塊,他是集成于Django框架之中的,我們只需要通過命令行來創(chuàng)建管理員賬號,然后通過網(wǎng)頁跳至后臺頁面,輸入管理員賬號密碼,他就會把所有已注冊的數(shù)據(jù)庫以圖中形式展示,管理員可以將數(shù)據(jù)庫中的每一項數(shù)據(jù)進(jìn)行添加、修改以及刪除等,如圖5-6所示。圖5-6后臺管理頁面5.6.1添加用戶信息此頁面實現(xiàn)管理員對用戶信息添加管理,添加內(nèi)容包括用戶名、密碼、郵箱、注冊時間、手機(jī)號碼等等,已被注冊過得用戶名無法注冊。其中登錄名、密碼等不為空,密碼、郵箱等格式驗證。添加用戶信息界面如圖5-7所示。圖5-7添加用戶頁面5.6.2用戶管理此頁面以列表的形式顯示用戶,可查看用戶信息列表,可以進(jìn)行查看、編輯、刪除等操作,如圖5-8所示。圖5-8用戶管理5.6.3添加商品信息此頁面實現(xiàn)管理員對商品信息添加管理,添加內(nèi)容包括品牌分類、商品名稱,商品名稱、尺寸尺碼、價格折扣以及商品簡介和銷量等進(jìn)行添加。添加商品信息界面如圖5-9所示。圖5-9添加商品頁面5.6.4商品管理此頁面以列表的形式顯示用戶,可查看商品信息列表,可以進(jìn)行查看、編輯、刪除等操作,如圖5-10所示。圖5-10商品管理頁面

第6章系統(tǒng)測試6.1登錄功能測試登錄界面是系統(tǒng)的入口,在整個系統(tǒng)中的地位是非常重要的。進(jìn)入登錄界面后,用戶可以輸入自己的賬號用戶名、密碼進(jìn)行登錄,以便進(jìn)行下一步的操作,測試情況如表6-1所示。表6-1登錄測試測試內(nèi)容用戶登錄功能輸入數(shù)據(jù)1.用戶名或密碼為空2.用戶名或密碼錯誤3.用戶名和密碼正確預(yù)期輸出1.無法登錄2.無法登錄3.登錄成功實際輸出1.無法登錄2.無法登錄3.登錄成功測試結(jié)論通過用戶登錄成功后,登錄界面切換,如圖6-1所示。圖6-1登錄成功6.2注冊功能測試注冊成為會員后才能享有網(wǎng)站的所有用戶功能,并且每個會員的登錄名唯一,便于管理員管理,測試情況如表6-2所示。表6-2注冊測試測試內(nèi)容用戶注冊功能輸入數(shù)據(jù)登錄名或密碼為空2.登錄名已存在3.密碼或郵箱格式不正確4.確認(rèn)密碼兩次不一致預(yù)期輸出1.提示完善信息2.提示改名3.提示修正格式4.注冊成功實際輸出1.提示完善信息2.提示改名3.提示修正格式4.注冊成功測試結(jié)論通過注冊成功后,直接跳轉(zhuǎn)登錄頁面,如圖6-2所示。圖6-2注冊成功6.3用戶功能測試商品加入購物車測試,測試情況如表6-3所示。表6-3加入購物車測試測試內(nèi)容商品加入購物車輸入操作1.商品未加入購物車2.商品已加入購物車3.清空購物車預(yù)期輸出1.無法結(jié)算2成功結(jié)算3.成功清空實際輸出1.無法結(jié)算2成功結(jié)算3.成功清空測試結(jié)論通過商品成功加入購物車,如圖6-3所示。圖6-3加入購物車6.4商品訂單測試測試情況如表6-4所示。表6-4商品訂單結(jié)算測試測試內(nèi)容商品訂單結(jié)算輸入操作1.訂單未支付2.訂單已支付3.確認(rèn)收貨預(yù)期輸出1.無法完成2成功發(fā)貨3.訂單已完成實際輸出1.無法完成2成功發(fā)貨3.訂單已完成測試結(jié)論通過商品訂單已完成,如圖6-4所示。圖6-4商品訂單6.5管理員功能測試用戶管理功能測試,測試情況如表6-5所示。表6-5用戶管理測試測試內(nèi)容用添加、編輯、查詢、修改功能輸入操作1.按要求輸入添加用戶信息2.在管理用戶列表中,管理員可以查詢、編輯和修改信息預(yù)期輸出1.添加成功2.操作成功實際輸出1.添加成功2.操作成功測試結(jié)論通過用戶管理測試已完成,如圖6-5所示。圖6-5用戶管理6.6測試總結(jié)經(jīng)過對上述的測試結(jié)果分析,本系統(tǒng)基本滿足了球鞋線上商城的需求。所有基本功能齊全,操作簡單,產(chǎn)品運(yùn)行性能良好,是一個實用性、綜合性較強(qiáng)的線上商城系統(tǒng)。

總結(jié)通過本次畢業(yè)論文的設(shè)計,不僅將大學(xué)四年里面學(xué)到的知識融會貫通,還幫助我意識到了自己的不足。從最初的畢業(yè)論文選題,到網(wǎng)上查看文檔,整理接口參數(shù),再到論文代碼的完成與實現(xiàn)和最后的論文定稿,這個過程讓我體會到了理論和實踐相結(jié)合的難度,也讓我了解了只有自己親身經(jīng)歷這個過程才能使其印象深刻。本次畢業(yè)論文的設(shè)計與實現(xiàn)中對于系統(tǒng)的優(yōu)缺點(diǎn)做了以下總結(jié),對于遇到許多問題也及時進(jìn)行了完善和修改,首先本系統(tǒng)的優(yōu)點(diǎn)以方便快捷簡潔明了為主,用戶登錄本系統(tǒng)可以快速通過產(chǎn)品分類以及商品的發(fā)售時間和銷量熱度來第一時間找到自己想要的球鞋,通過球鞋的詳情頁面及時的了解本款球鞋的詳情信息包括各個角度的圖片展示以及球鞋的詳細(xì)介紹使得用戶對此有一個全面的了解來獲得他們想要的商品,在商品結(jié)算的過程中也沒有多余的繁瑣流程,在用戶加入購物車結(jié)算以

溫馨提示

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

評論

0/150

提交評論