【正文】
并逐步發(fā)展 .網(wǎng)上購物是一種具有交互功能的商業(yè)信息系統(tǒng) .它向用戶提供靜態(tài)和動(dòng)態(tài)兩類信息資源 . 自 2021 年上半年以來 ,沉寂了多年的中國互聯(lián)網(wǎng)產(chǎn)業(yè)正以強(qiáng)勁的勢(shì)頭復(fù)蘇并發(fā)展 3 起來 ,除了傳統(tǒng)的瀏覽 ,資料搜索 ,電子郵件等基本應(yīng)用外 ,國內(nèi)網(wǎng)民已經(jīng)開始習(xí)慣通過網(wǎng)絡(luò)接受商務(wù) ,旅游 ,購物 ,通訊 ,娛樂等服務(wù) ,根據(jù)中國互聯(lián)網(wǎng)信息中心最近提供的《中國互 聯(lián)網(wǎng)絡(luò)發(fā)展?fàn)顩r統(tǒng)計(jì)報(bào)告》調(diào)查顯示 ,網(wǎng)上購物已經(jīng)由以前的嘗試性購買向日常的生活習(xí)慣發(fā)展 ,其中以書籍 ,計(jì)算機(jī)產(chǎn)品 ,音像制品及器材等為網(wǎng)上購物的主要對(duì)象 ,服裝 ,體育用品 ,生活家居用品等消費(fèi)額也開始大幅度提高 。 可行性分析 本系統(tǒng)主要從經(jīng)濟(jì)可行性和技術(shù)可行性兩個(gè)角度對(duì)其可行性進(jìn)行分析: 經(jīng)濟(jì)可行性 由于本設(shè)計(jì)是針對(duì)當(dāng)前在校大學(xué)生這種消費(fèi)群體的,當(dāng)前大學(xué)生經(jīng)濟(jì)能力有限,而又對(duì)時(shí)尚、前沿的東西感興趣,而這些東西更新?lián)Q代的速度很快,而大學(xué)生的消費(fèi)觀念還不很成熟,這樣就有可能造成買到的東西過一段時(shí)間 之后就失去了興趣,而這自己不用了的東西如果可以出售給需要的人,這就是一種節(jié)約型的消費(fèi)觀念。 本設(shè)計(jì)無需再經(jīng)濟(jì)上購買居額設(shè)備就可實(shí)現(xiàn),所以在經(jīng)濟(jì)上是可行的。 技術(shù)可行性 本系統(tǒng)使用 jsp作為開發(fā)技術(shù),使用目前大多數(shù) web 應(yīng)用程序開發(fā)的 mvc的設(shè)計(jì)模式,而選用 Apache tomcat 作為服務(wù)器和選用 mysql 數(shù)據(jù)庫,這都是當(dāng)前首選的開發(fā)web 應(yīng)用程序的最常用的環(huán)境。所以在技術(shù)上是完全可以勝任這個(gè)大學(xué)生跳蚤購物網(wǎng)站的。 按上述 兩 方面進(jìn)行可行性分析、研究后, 我們認(rèn)為該項(xiàng)目在技術(shù)上是可行的, 經(jīng)濟(jì)上是 可合理的,可以進(jìn)行開發(fā) 。 本設(shè)計(jì)所用技術(shù)的簡(jiǎn)介 MVC 設(shè)計(jì)模式概述 傳統(tǒng) web設(shè)計(jì)模式與 mvc 設(shè)計(jì)模式的比較 [1] 傳統(tǒng) web開發(fā)模式基本上分為視圖,業(yè)務(wù)邏輯 2層,是水平方向的劃分。 MVC模式是物理性的劃分為 3層,是垂直方向的劃分。 4 視 圖業(yè) 務(wù) 邏輯 V ie w ( 視 圖 )M o d e l( 模 型 )C o n tr o l( 控 制 器 ) 圖 1 傳統(tǒng) web 開發(fā)模式 圖 2 MVC 開發(fā)模式 Fig1 The traditional web development model Fig1 MVC development model MVC 架構(gòu)是 ModelViewController的縮寫,中文翻譯為 模型 視圖 控制器 。MVC應(yīng)用程序總是由這三個(gè)部分組成。 Event(事件 )導(dǎo)致 Controller改變 Model或 View,或者同時(shí)改變兩者。只要 Controller 改變了 Models 的數(shù)據(jù)或者屬性,所有依賴的 View都會(huì)自動(dòng)更新。類似的,只要 Controller 改變了 View, View 會(huì)從潛在的 Model 中獲取數(shù)據(jù)來刷新自己。 MVC 架構(gòu)最早是 smalltalk 語言研究團(tuán)提出的,應(yīng)用于用戶交互應(yīng)用程序中 [2]。 圖 3 MVC 組件類型的關(guān)系和功能 Fig3 The relations and functions of MVC ponents’type MVC結(jié)構(gòu)提供了一種按功能對(duì)各種對(duì)象進(jìn)行分割的方法,其目的是為了將各對(duì)象間的耦合程度減至最小。 MVC結(jié)構(gòu)本來是為了將傳統(tǒng)的輸入( input)、處理( processing)、輸出( output)任務(wù)運(yùn)用到 圖形化用戶交互模型中而設(shè)計(jì)的。但是,將這些概念運(yùn)用于基于 Web 的企業(yè)級(jí)多層應(yīng)用領(lǐng)域也是很適合的。 在 MVC 結(jié)構(gòu)中,模型( Model)代表應(yīng)用程序的數(shù)據(jù)( data)和用于控制訪 5 問和修改這些數(shù)據(jù)的業(yè)務(wù)邏輯( business rule)。 當(dāng)模型發(fā)生改變時(shí),它會(huì)通知視圖( View),并且為視圖提供查詢模型相關(guān)狀態(tài)的能力。同時(shí),它也為控制器( Controller)提供訪問封裝在模型內(nèi)部的應(yīng)用程序功能的能力。 一個(gè)視圖( View)用來組織模型的內(nèi)容。它從模型那里獲得數(shù)據(jù)并指定這些數(shù)據(jù)如何表現(xiàn)。當(dāng)模型變化時(shí),視負(fù) 責(zé)維持?jǐn)?shù)據(jù)表現(xiàn)的一致性。視圖同時(shí)將用戶要求告知控制器( Controller)。 控制器( Controller)定義了應(yīng)用程序的行為;它負(fù)責(zé)對(duì)來自視圖的用戶要求進(jìn)行解釋,并把這些要求映射成相應(yīng)的行為,這些行為由模型負(fù)責(zé)實(shí)現(xiàn)。在獨(dú)立運(yùn)行的 GUI客戶端,用戶要求可能是一些鼠標(biāo)單擊或是菜單選擇操作。在一個(gè) Web 應(yīng)用程序中,它們的表現(xiàn)形式可能是一些來自客戶端的 GET 或 POST 的 HTTP請(qǐng)求。模型所實(shí)現(xiàn)的行為包括處理業(yè)務(wù)和修改模型的狀態(tài)。根據(jù)用戶要求和模型行為的結(jié)果,控制器選擇一個(gè)視作為對(duì)用戶請(qǐng)求的應(yīng)答。通常一組 相關(guān)功能集對(duì)應(yīng)一個(gè)控制器。 視圖 視圖 (View)代表用戶交互界面,對(duì)于 Web 應(yīng)用來說,可以概括為 HTML 界面,但有可能為 XML、 WML和 Excel。隨著應(yīng)用的復(fù)雜性和規(guī)模性,界面的處理也變得具有挑戰(zhàn)性。一個(gè)應(yīng)用可能有很多不同的視圖, MVC 設(shè)計(jì)模式對(duì)于視圖的處理僅限于視圖上數(shù)據(jù)的采集和處理,以及用戶的請(qǐng)求,而不包括在視圖上的業(yè)務(wù)邏輯的處理。業(yè)務(wù)邏輯的處理由模型 (Model)完成。比如一個(gè)訂單的視圖只接受來自模型的數(shù)據(jù)并顯示給用戶,以及將用戶界面的輸入數(shù)據(jù)和請(qǐng)求傳遞給控制和模型。 控制器 控制器 (Controller)可以理解為從用戶接收請(qǐng)求 , 將模型與視圖匹配在一起,共同完成用戶的請(qǐng)求。劃分控制層的作用也很明顯,它清楚地告訴你,它就是一個(gè)分發(fā)器,選擇什么樣的模型,選擇什么樣的視圖,可以完成什么樣的用戶請(qǐng)求??刂茖硬⒉蛔鋈魏蔚臄?shù)據(jù)處理。例如,用戶點(diǎn)擊一個(gè)連接,控制層接受請(qǐng)求后 , 并不處理業(yè)務(wù)信息,它只把用戶的信息傳遞給模型,告訴模型做什么,選擇符合要求的視圖返回給用戶。因此,一個(gè)模型可能對(duì)應(yīng)多個(gè)視圖,一個(gè)視圖可能對(duì)應(yīng)多個(gè)模型。 模型 6 模型 (Model):就是業(yè)務(wù)流程 /狀態(tài)的處理以及數(shù)據(jù)模型的制定。業(yè)務(wù)流程的處理 過程對(duì)其它層來說是黑箱操作,模型接受視圖請(qǐng)求的數(shù)據(jù),并返回最終的處理結(jié)果。模型的設(shè)計(jì)可以說是 MVC 最主要的核心。 常見 web 開發(fā)語言 mvc 框架 ? PHP: FleaPHP, CakePHP , Joomla ? JAVA: Struts , Spring ? Python: Django , Quixote ? Ruby: Ruby On Rails[3] 本設(shè)計(jì)實(shí)現(xiàn) mvc 的技術(shù) ? JSP 作為視圖,只用于顯示 ? Servlet 作為控制器,所有的請(qǐng)求,跳轉(zhuǎn)都由 servlet 完成 ? 業(yè)務(wù)邏輯部分由 javabean完成 B R O W S ER( C o n t r o l l e r )S e r v l e t( V i e w )J S P( M o d e l )J a v a B e a nR e q u e s t15R e s p o n s eR e d i r e c t342I n s t a n t i a t eS e r v l e t C o n t a i n e r( E I S ) 圖 4 MVC 設(shè)計(jì)模式 Fig4 MVC Design Pattern 2 系統(tǒng)需求分析 根據(jù)上面所定義的課題研究方向及目標(biāo),本章將對(duì)系統(tǒng)功能進(jìn)行具體的需求分析,具體分析跳蚤購物網(wǎng)站所要實(shí)現(xiàn)的功能及欲達(dá)到的效果。 需求調(diào)研 首先從主流的購物網(wǎng)站上面如淘寶網(wǎng)、當(dāng)當(dāng)網(wǎng)去看他們的版面設(shè)計(jì) 及功能 ,同時(shí)也在校內(nèi)同學(xué)之間去 調(diào)查同學(xué)們對(duì)跳蚤網(wǎng)站的一些所要實(shí)現(xiàn)的功能和版面設(shè)計(jì)。 同時(shí)也到網(wǎng)上去找一些做得比較適合我做的一些大學(xué)生購物網(wǎng)站來學(xué)習(xí),并且自己去注冊(cè) 一個(gè)帳號(hào),親自體會(huì)他們網(wǎng)站的強(qiáng)大功能然后記錄下來。 7 業(yè)務(wù)流程分析 本系統(tǒng)工作流程是:用戶用瀏覽器登錄到網(wǎng)站主頁,可以查看各個(gè)用戶所要出售的各種商品,同時(shí)可以查看商品的詳細(xì)信息包括發(fā)布商品的人的信息和商品數(shù)量和商品狀態(tài)。同時(shí)訪問網(wǎng)站的人也可以搜索自己感興趣的商品。但是只有注冊(cè)了,才有可能去買商品。同時(shí)注冊(cè)者也可以通過管理員對(duì)自己賬戶充值,類似于支付寶功能。同時(shí)管理員可以查詢注冊(cè)用戶的詳細(xì)信息。 具體目標(biāo)如下: ( 1)操作簡(jiǎn) 單、界面友好:用戶可以發(fā)布、查詢商品的各種相關(guān)信息,同時(shí)可以根據(jù)商品的狀態(tài)來是否購買商品。 ( 2)即時(shí)可見:登錄用戶可以隨時(shí)查看自己所購買的商品的數(shù)量、價(jià)格等方面的信息。 系統(tǒng)數(shù)據(jù)流圖 本系統(tǒng)主要完成跳蚤網(wǎng)站的瀏覽與管理的功能 ,因此,在邏輯上可以將系統(tǒng)分為網(wǎng)站瀏覽系統(tǒng)和網(wǎng)站管理系統(tǒng)兩部分 ,同時(shí),系統(tǒng)的所有數(shù)據(jù)都需通過一個(gè)數(shù)據(jù)庫系統(tǒng)來實(shí)現(xiàn)查詢、更新和輸入,所以在總體上可將總系統(tǒng)分為網(wǎng)站瀏覽系統(tǒng)、網(wǎng)站管理系統(tǒng)和數(shù)據(jù)庫系統(tǒng)三個(gè)系統(tǒng),對(duì)本系統(tǒng)操作的數(shù)據(jù)源有普通瀏覽者、注冊(cè)用戶和管理員三種 [4]。 8 圖 5 系統(tǒng)數(shù)據(jù)流圖 Fig5 System data flow diagram 圖 6 用戶登錄數(shù)據(jù)流 Fig6 The data flow diagram of user login 系統(tǒng)功能需求分析 功能劃分 根據(jù)上一節(jié)的流程圖,把系統(tǒng)劃分成兩個(gè)大的模塊來完成:前臺(tái)模塊和后臺(tái)管理模塊。 模塊劃分如表所示。 瀏覽者 網(wǎng)站瀏覽系統(tǒng) 注冊(cè)用戶 數(shù)據(jù)庫系統(tǒng) 商品管理系統(tǒng) 用戶信息 商品信息 站點(diǎn)信息 新用戶注冊(cè)信息 管理員信息 系統(tǒng)信息 用戶信息 修改信息 商品信息 管理員 登陸信息 登陸后的管理員 管理員信息 修改用戶信息 商品信息 新用戶注冊(cè)信息 登陸信息 9 表 1 模塊及功能 Table1 Modules and function 序號(hào) 功能模塊類別 功能模塊 備注 1 前臺(tái)模塊 查看物品功能塊 物品分類列表功能塊 物品搜索模塊 物品發(fā)布模塊 注冊(cè)功能塊 登陸功能塊 公共模塊 顯示所有物品信息 2 用戶管理模塊 用戶信息管理功能塊 用戶金額管理功能塊 3 系統(tǒng)管理模塊 用戶管理模塊 功能描述 表 2 前臺(tái)功能列表 Table2 The function list of front modules 序號(hào) 功能列表 功能明細(xì) 1 首頁 用戶登錄功能塊 用戶注冊(cè)功能塊 商品搜索功能塊 商品發(fā)布功能塊 商品分類目錄塊 2 用戶登錄功能塊 登錄用戶 3 用戶注冊(cè)功能塊 用戶注冊(cè) 4 商品搜索功能塊 可以按商品類別搜索商品 5 商品發(fā)布功能塊 登錄的用戶可以發(fā)布自己想要出售的商品 6 商品分類目錄塊 可以查看所有用戶的商品的詳細(xì)信息,并且可以分類查看 表 3 用戶管理模塊 Table3 The user management modules 序號(hào) 功能列表 功能明細(xì) 1 用戶信息管理功能塊 管理員可以查看各個(gè)用戶的詳細(xì)信息,并且可以刪除用戶 2 用戶金額管理功能塊 管理員可以為每個(gè)用戶充值 10 3 系統(tǒng)設(shè)計(jì) 系統(tǒng)總體結(jié)構(gòu)設(shè)計(jì) 本系統(tǒng)主要包括三大模塊組成:網(wǎng)站訪問者模塊、用戶模塊、系統(tǒng)管理員模塊 [5]。 整個(gè)系統(tǒng)的結(jié)構(gòu)框架如下圖所示 圖 7 結(jié)構(gòu)框架 Table7 Structural framework 數(shù)據(jù)庫表的設(shè)計(jì) 數(shù)據(jù)庫設(shè)計(jì)是項(xiàng)目開發(fā)中的系統(tǒng)設(shè)計(jì)中非常重要的另一個(gè)關(guān)鍵環(huán)節(jié),在這里之所以特別強(qiáng)調(diào)數(shù)據(jù)庫設(shè) 計(jì)的重要性,是因?yàn)閿?shù)據(jù)庫設(shè)計(jì)就像在建設(shè)高樓大廈的根基一樣,如果設(shè)計(jì)不好,在后來的系統(tǒng)維護(hù)、變更和功能擴(kuò)充時(shí),甚至在系統(tǒng)開發(fā)過程中,將會(huì)引起比較大的問題,會(huì)遇到非常大的困難,大量的工作將會(huì)重新進(jìn)行 [6]。 (1) 數(shù)據(jù)庫表及表之間的相互關(guān)系 本系統(tǒng)需要設(shè)計(jì)的數(shù)據(jù)庫表如下 11 表 4 數(shù)據(jù)庫表 Table4 Database table 序 號(hào) 數(shù)據(jù)庫表 數(shù)據(jù)庫表存儲(chǔ)內(nèi)容 1 tb_member 存儲(chǔ)用戶基本信息 2 tb_manager 存儲(chǔ)管理員賬號(hào)和密碼 3 tb_goods 存儲(chǔ)商品的基本信息 4 tb_order 存儲(chǔ)訂單信息 ( 2) 數(shù)據(jù)庫表結(jié)構(gòu)的詳細(xì)設(shè)計(jì) 下面開始對(duì)上一節(jié)列出的數(shù)據(jù)表