數(shù)據(jù)庫(kù)課程設(shè)計(jì)報(bào)告---在線食品銷(xiāo)售與管理系統(tǒng)_第1頁(yè)
已閱讀1頁(yè),還剩46頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  數(shù)據(jù)庫(kù)課程設(shè)計(jì)報(bào)告</b></p><p>  在線食品銷(xiāo)售與管理系統(tǒng)</p><p><b>  摘要:</b></p><p>  本課程設(shè)計(jì)的選題是“在線食品銷(xiāo)售管理系統(tǒng)”,本文首先對(duì)該系統(tǒng)的可行性進(jìn)行了分析,通過(guò)提出問(wèn)題分析問(wèn)題進(jìn)而提出了系統(tǒng)設(shè)計(jì)的思想,使用B/S的結(jié)構(gòu)完成在線銷(xiāo)售與管

2、理功能,在系統(tǒng)的實(shí)現(xiàn)上,使用用了JSP中流行的Struts2+Spring+Hibernate的經(jīng)典框架結(jié)構(gòu),這樣系統(tǒng)分層清晰,便于維護(hù),表示層由Struts2管理,業(yè)務(wù)邏輯層由Spring管理,數(shù)據(jù)持久層由Hibernate管理。報(bào)告從需求分析開(kāi)始,對(duì)系統(tǒng)進(jìn)行總體設(shè)計(jì),包括系統(tǒng)功能模塊設(shè)計(jì)、流程分析以及架構(gòu)總體設(shè)計(jì)等,然后進(jìn)行了數(shù)據(jù)庫(kù)設(shè)計(jì),并對(duì)數(shù)據(jù)庫(kù)的設(shè)計(jì)方案進(jìn)行了詳細(xì)的闡述,包括數(shù)據(jù)庫(kù)概念設(shè)計(jì)、邏輯設(shè)計(jì)以及安全模式設(shè)計(jì)等。最后文檔給

3、出了系統(tǒng)的實(shí)現(xiàn)方法,包括程序模塊設(shè)計(jì)以及主要功能模塊的編碼及測(cè)試結(jié)果,最后進(jìn)行了本次課程設(shè)計(jì)的總結(jié)和展望。</p><p>  關(guān)鍵字:在線食品銷(xiāo)售,JSP,Struts2,Spring,Hibernate,數(shù)據(jù)庫(kù)設(shè)計(jì)</p><p>  Abstracts:</p><p>  This course design theme is "online fo

4、od sales management system", this article first the feasibility of the system is analyzed, through analyzing problems and puts forward the question of the system design of thought, use B/S structure complete online

5、sales and management functions, the realization of the system with the JSP, use Struts2 + are popular in the classic frame structure + Hibernate, such systems, easy to maintain, stratified clear representation layer Stru

6、ts2 management, business by</p><p>  Keywords:Online food sales, JSP, Struts2,Spring, Hibernate, database design</p><p><b>  目錄</b></p><p>  系統(tǒng)可行性研究………………………………………………………

7、…………………….….…3</p><p>  1.1 問(wèn)題的提出………………………………………………………………………………….……3</p><p>  1.2 分析問(wèn)題…………………………………………………………………………………….……3</p><p>  1.3 系統(tǒng)設(shè)計(jì)思想……………………………………………………………………………….……3</p

8、><p>  需求分析……………………………………………………………………………………….…...3</p><p>  總體設(shè)計(jì)……………………………………………………………………………………….…...5</p><p>  3.1系統(tǒng)功能模塊設(shè)計(jì)及流程分析……………………………………………………………….….5</p><p>  3.1.

9、1用戶模塊:……………………………………………………………………………….…5</p><p>  3.1.2管理員模塊:…………………………………………………………………………….…6</p><p>  3.2 架構(gòu)總體設(shè)計(jì)………………………………………………………………………………….…6</p><p>  3.2.1 Struts 2…………………………

10、……………………………………………………….….6</p><p>  3.2.2 Spring……………………………………………………………………………………....6</p><p>  3.2.3 Hibernate…………………………………………………………………………………..7</p><p>  3.3 系統(tǒng)開(kāi)發(fā)環(huán)境與運(yùn)行環(huán)境……………………………

11、………………………………………….7</p><p>  數(shù)據(jù)庫(kù)設(shè)計(jì)………………………………………………………………………………………...7</p><p>  4.1 數(shù)據(jù)庫(kù)概念設(shè)計(jì)………………………………………………………………………………….7</p><p>  4.1.1 數(shù)據(jù)庫(kù)分析………………………………………………………………………………..7&l

12、t;/p><p>  1)食品購(gòu)物系統(tǒng)關(guān)系到的實(shí)體…………………………………………………………8</p><p>  2)實(shí)體屬性………………………………………………………………………………8</p><p>  3)實(shí)體之間的聯(lián)系………………………………………………………………………8</p><p>  4.1.2 E-R圖……………………

13、………………………………………………………………...8</p><p>  4.1.3 E-R圖轉(zhuǎn)換成關(guān)系模式…………………………………………………………………...9</p><p>  1)由實(shí)體得到關(guān)系模式…………………………………………………………………9</p><p>  2)由聯(lián)系得到關(guān)系模式…………………………………………………………………9&l

14、t;/p><p>  4.2 數(shù)據(jù)庫(kù)邏輯設(shè)計(jì)………………………………………………………………………………….9</p><p>  4.3 安全模式設(shè)計(jì)…………………………………………………………………………………….13</p><p>  4.3.1 數(shù)據(jù)庫(kù)完整性設(shè)計(jì)………………………………………………………………………..13</p><p&

15、gt;  4.3.2 數(shù)據(jù)庫(kù)權(quán)限控制…………………………………………………………………………..13</p><p>  系統(tǒng)實(shí)現(xiàn)……………………………………………………………………………………………13</p><p>  5.1 程序模塊設(shè)計(jì)…………………………………………………………………………………...13</p><p>  5.1.1 程序目錄結(jié)

16、構(gòu)……………………………………………………………………………..13</p><p>  5.1.2 JSP頁(yè)面分為會(huì)員頁(yè)面與管理員頁(yè)面…………………………………………………...14</p><p>  5.1.3 配置文件…………………………………………………………………………………..15</p><p>  5.1.4 類文件…………………………………

17、…………………………………………………..15</p><p>  5.2主要模塊及代碼…………………………………………………………………………………..17</p><p>  5.2.1 部分配置文件代碼………………………………………………………………………....17</p><p>  5.2.2 主要界面與代碼……………………………………………………………

18、………...…….21</p><p>  總結(jié)與展望………………………………………………………………………………………...45</p><p>  參考文獻(xiàn)…………………………………………………………………………………………....45</p><p><b>  系統(tǒng)可行性研究</b></p><p><b&

19、gt;  1.1問(wèn)題的提出</b></p><p>  隨著信息化步伐的加快,Internet的應(yīng)用也越來(lái)越廣泛,用戶對(duì)于Internet的應(yīng)用需求也有了根本性的變化,基于Internet的電子商務(wù)正逐漸成為Internet商業(yè)化發(fā)展的重要內(nèi)容。電子商務(wù)是指各種具有商業(yè)活動(dòng)能力的實(shí)體利用網(wǎng)絡(luò)和先進(jìn)的數(shù)字化傳媒技術(shù)進(jìn)行的各項(xiàng)商業(yè)貿(mào)易活動(dòng)。網(wǎng)上購(gòu)物,就是電子商務(wù)所包含的三大種類之一。網(wǎng)上購(gòu)物是將來(lái)最有希望

20、的網(wǎng)上事業(yè),因此,開(kāi)發(fā)功能強(qiáng)大、性能完善的網(wǎng)上購(gòu)物系統(tǒng)具有十分重要的意義和價(jià)值。與其他商品一樣,食品也很適合在網(wǎng)上銷(xiāo)售,雖然有運(yùn)輸、時(shí)間的限制,但是對(duì)于現(xiàn)在的物流發(fā)展?fàn)顩r而言,已經(jīng)都不是問(wèn)題。食品有地域的差異,消費(fèi)者可能在本地不能買(mǎi)到相應(yīng)的食品,網(wǎng)上購(gòu)食品無(wú)疑打破了這種限制,而且對(duì)于不喜歡逛超市商場(chǎng)的人來(lái)說(shuō),網(wǎng)上購(gòu)食品會(huì)是一種獨(dú)特的購(gòu)物享受。而在商家方面,缺少一個(gè)集成的信息平臺(tái)和信息系統(tǒng),希望通過(guò)一個(gè)網(wǎng)站系統(tǒng)實(shí)現(xiàn)消費(fèi)者網(wǎng)上購(gòu)物,還有后臺(tái)

21、處理會(huì)員、貨物等一系列信息的管理操作。</p><p><b>  1.2 分析問(wèn)題</b></p><p>  本網(wǎng)站是一個(gè)專營(yíng)食品的銷(xiāo)售網(wǎng)。對(duì)于用戶可以查看貨物、加入購(gòu)物車(chē)、購(gòu)買(mǎi)食品、查看訂單等一系列基本的網(wǎng)上購(gòu)物操作,實(shí)現(xiàn)輕松網(wǎng)上選購(gòu)食品。對(duì)于管理員則可以完成食品信息的查看、添加、修改操作,訂單的查詢、狀態(tài)修改操作,會(huì)員管理、管理員管理等功能。</p>

22、;<p>  1.3 系統(tǒng)設(shè)計(jì)思想</p><p>  C/S模式和B/S是當(dāng)今世界開(kāi)發(fā)模式技術(shù)架構(gòu)的兩大主流技術(shù)。C/S架構(gòu)軟件的優(yōu)勢(shì)與劣勢(shì):應(yīng)用服務(wù)器運(yùn)行數(shù)據(jù)負(fù)荷較輕,數(shù)據(jù)的存儲(chǔ)管理功能較為透明,C/S架構(gòu)的劣勢(shì)是高昂的維護(hù)成本且投資大。B/S架構(gòu)軟件的優(yōu)勢(shì)與劣勢(shì):維護(hù)和升級(jí)方式簡(jiǎn)單,成本降低,選擇更多,但應(yīng)用服務(wù)器運(yùn)行數(shù)據(jù)負(fù)荷較重。權(quán)衡這兩種模式的優(yōu)劣勢(shì),我們選擇使用B/S模式,因?yàn)锽/S架構(gòu)

23、的軟件只需要管理服務(wù)器即可,所有的客戶端只是瀏覽器,根本不需要做任何的維護(hù),所有的操作只需要針對(duì)服務(wù)器進(jìn)行。</p><p>  男左女右食品網(wǎng)站采用SQL server 2005數(shù)據(jù)庫(kù),從系統(tǒng)升級(jí)和維護(hù)方面考慮,采用Struts2,Spring,Hibernate三種開(kāi)源框架,這樣系統(tǒng)分層清晰,便于維護(hù),表示層由Struts2管理,業(yè)務(wù)邏輯層由Spring管理,數(shù)據(jù)持久層由Hibernate管理,網(wǎng)站信息層主要

24、只數(shù)據(jù)庫(kù),用來(lái)存儲(chǔ)食品、訂單、會(huì)員、管理員等一系列的信息。</p><p><b>  需求分析</b></p><p>  系統(tǒng)的角色分為:游客、會(huì)員和管理員,各個(gè)角色需要完成的功能用用例圖說(shuō)明:</p><p>  圖表 1 游客與會(huì)員</p><p><b>  圖表 2 管理員</b>&

25、lt;/p><p><b>  總體設(shè)計(jì)</b></p><p>  3.1系統(tǒng)功能模塊設(shè)計(jì)及流程分析</p><p>  系統(tǒng)功能主要分為兩大模塊:用戶模塊、管理員模塊。主要完成功能的流程如下所示:</p><p>  3.1.1用戶模塊:</p><p>  圖表 3 游客功能模塊</p&

26、gt;<p>  圖表 4 會(huì)員功能模塊</p><p>  3.1.2管理員模塊:</p><p>  圖表 5 管理員功能模塊</p><p>  3.2 架構(gòu)總體設(shè)計(jì)</p><p>  本網(wǎng)站采用Struts、Spring、Hibernate組建輕量級(jí)聯(lián)合框架。SSH多層的架構(gòu)模式,從上到下依次為表示層、業(yè)務(wù)層和數(shù)據(jù)

27、持久化層。通過(guò)分層處理使整個(gè)系統(tǒng)結(jié)構(gòu)清晰,功能明確,各層次之間相互獨(dú)立,對(duì)某一層次的修改不會(huì)影響其他層次,使層次間的耦合性降到最低,為軟件的重用化和組件化創(chuàng)造了條件。</p><p>  3.2.1 Struts 2</p><p>  表示層是面向用戶的界面,是用戶與系統(tǒng)之間交互的媒介。如,用戶在界面發(fā)送請(qǐng)求,系統(tǒng)接收請(qǐng)求 ,進(jìn)行處理,控制器代理負(fù)責(zé)處理用戶請(qǐng)求,處理用戶請(qǐng)求時(shí)回調(diào)業(yè)務(wù)

28、控制器的execute方法,該方法的返回值將決定了Struts2將怎樣的視圖資源呈現(xiàn)給用戶。這一過(guò)程包括了用戶動(dòng)作、數(shù)據(jù)傳遞、界面顯示。MVC模式就是將這三者分離,減少三者耦合。表示層框架采用的是Struts 2。在本網(wǎng)站中的具體應(yīng)用如下:當(dāng)客戶端發(fā)出請(qǐng)求時(shí),經(jīng)過(guò)定義在web.xml中過(guò)濾器的攔截,接著FilterDispatcher被調(diào)用,F(xiàn)ilterDispatcher詢問(wèn)Action映射器來(lái)決定這個(gè)請(qǐng)求是否需要調(diào)用某個(gè)Action

29、。如果Action映射器決定需要調(diào)用某個(gè)Action,F(xiàn)ilterDispatcher把請(qǐng)求的處理交給Action代理。Action代理器通過(guò)配置管理器詢問(wèn)框架的配置文件,找到需要調(diào)用的Action類。Action代理器創(chuàng)建一個(gè)ActionInvocation的實(shí)例。Actionlnvocation實(shí)例使用命名模式來(lái)調(diào)用,在調(diào)用Action的過(guò)程前后,涉及到相關(guān)攔截器(Intercepter)的調(diào)用。一旦</p><

30、p>  3.2.2 Spring</p><p>  業(yè)務(wù)層主要負(fù)責(zé)管理業(yè)務(wù)層的邏輯對(duì)象,包括邏輯對(duì)象對(duì)于底層的事務(wù)管理,分布式管理,邏輯對(duì)象的生命周期管理等。Spring是非EJB的輕量級(jí)框架,它通過(guò)依賴注入、AOP應(yīng)用、面向接口編程,來(lái)降低業(yè)務(wù)組件之間的耦合度,增強(qiáng)系統(tǒng)擴(kuò)展性,作為業(yè)務(wù)邏輯層的框架。Spring模塊構(gòu)建在核心容器之上,核心容器定義了創(chuàng)建、配置和管理bean的方式,組成Spring框架的

31、每個(gè)模塊(或組件)都可以單獨(dú)存在,或者與其他一個(gè)或多個(gè)模塊聯(lián)合實(shí)現(xiàn)。核心容器提供Spring框架的基本功能。核心容器的主要組件是BeanFactory,它是工廠模式的實(shí)現(xiàn)。BeanFactory使用控制反轉(zhuǎn)(IoC)模式將應(yīng)用程序的配置和依賴性規(guī)范與實(shí)際的應(yīng)用程序代碼分開(kāi)。在本網(wǎng)站中的具體應(yīng)用如下:通過(guò)讀取applicationContext-DAO.xml配置文件,Spring容器生成相應(yīng)的Bean實(shí)例,DAO類作為Action的參數(shù)

32、。</p><p>  3.2.3 Hibernate</p><p>  數(shù)據(jù)持久層的設(shè)計(jì)目標(biāo)是對(duì)各種數(shù)據(jù)進(jìn)行低層的持久化的工作,持久化就是把數(shù)據(jù)保存到永久保存的存儲(chǔ)設(shè)備中,J2EE項(xiàng)目中的數(shù)據(jù)持久層的作用就是通過(guò)對(duì)象關(guān)系映射,使得開(kāi)發(fā)者能夠以對(duì)象的方式訪問(wèn)數(shù)據(jù),使程序員不用編寫(xiě)詳細(xì)底層的程序訪問(wèn)數(shù)據(jù)持久層代碼,把精力放在業(yè)務(wù)邏輯的開(kāi)發(fā)。同時(shí)能夠在不同項(xiàng)目中重用映射框架,大大簡(jiǎn)化了數(shù)據(jù)

33、增、刪、改、查等功能的開(kāi)發(fā)過(guò)程。Hibernate在Java程序與數(shù)據(jù)庫(kù)之間進(jìn)行轉(zhuǎn)換,Java程序員事先定義好對(duì)象與數(shù)據(jù)庫(kù)表格之間的對(duì)應(yīng)。在實(shí)踐中采用以下數(shù)據(jù)持久方案,通過(guò)DAO和ORM組件來(lái)實(shí)現(xiàn)數(shù)據(jù)的持久化。ORM組件能完成java對(duì)象和數(shù)據(jù)庫(kù)中的數(shù)據(jù)間的相互的映射,同時(shí)ORM也能實(shí)現(xiàn)數(shù)據(jù)庫(kù)的連接,事務(wù)的管理功能。ORM作用是在關(guān)系型數(shù)據(jù)庫(kù)和對(duì)象之間產(chǎn)生一個(gè)自動(dòng)的映射,這樣在具體的數(shù)據(jù)庫(kù)操作中就不需要再和復(fù)雜的 SQL語(yǔ)句打交道。OR

34、M是通過(guò)使用描述對(duì)象和數(shù)據(jù)庫(kù)之間映射的元數(shù)據(jù)將java程序中的對(duì)象自動(dòng)持久化到關(guān)系數(shù)據(jù)庫(kù)中。在本網(wǎng)站中的具體應(yīng)用:將Java中的對(duì)象與對(duì)象的關(guān)系,對(duì)應(yīng)到關(guān)系型數(shù)據(jù)庫(kù)中的表與表之間的關(guān)系,每張表對(duì)應(yīng)一個(gè)對(duì)象,Hibernate提供了這個(gè)過(guò)程中自動(dòng)對(duì)</p><p>  3.3 系統(tǒng)開(kāi)發(fā)環(huán)境與運(yùn)行環(huán)境</p><p><b>  數(shù)據(jù)庫(kù)設(shè)計(jì)</b></p>

35、<p>  4.1 數(shù)據(jù)庫(kù)概念設(shè)計(jì)</p><p>  4.1.1 數(shù)據(jù)庫(kù)分析</p><p>  根據(jù)對(duì)系統(tǒng)的可行性研究與需求分析以后,我們可以對(duì)系統(tǒng)的數(shù)據(jù)庫(kù)進(jìn)行分析,得到如下結(jié)果:</p><p>  1)食品購(gòu)物系統(tǒng)關(guān)系到的實(shí)體</p><p>  在食品購(gòu)物系統(tǒng)中,若要完成購(gòu)物,則必須為會(huì)員才能進(jìn)行購(gòu)物,所以有“會(huì)員”實(shí)體

36、;食品購(gòu)物系統(tǒng)中的食品是必不可少的,所以有“食品”實(shí)體;會(huì)員需要購(gòu)買(mǎi)食品,必須存在一個(gè)交易的記錄,所以有“訂單”實(shí)體;每一種食品都屬于一個(gè)種類,所以有“種類”實(shí)體。</p><p>  綜上所述食品購(gòu)物系統(tǒng)涉及最主要實(shí)體:會(huì)員、食品、訂單、種類。</p><p><b>  2)實(shí)體屬性</b></p><p>  實(shí)體集“會(huì)員”的屬性包括:會(huì)

37、員的ID號(hào)、會(huì)員姓名、會(huì)員密碼、性別、年齡、郵箱、手機(jī)號(hào)和狀態(tài),狀態(tài)是用來(lái)標(biāo)識(shí)會(huì)員在整個(gè)系統(tǒng)中所處的狀態(tài);</p><p>  實(shí)體集“食品”的屬性包括:食品編號(hào)、食品類別、食品價(jià)格、存貨數(shù)量、最新入庫(kù)、原產(chǎn)地、保質(zhì)期、生產(chǎn)日期、重量;</p><p>  實(shí)體集“訂單”的屬性包括:訂單編號(hào)、會(huì)員ID、訂貨時(shí)間、訂貨狀態(tài)、付款狀態(tài)、總金額、收貨地址、收貨人聯(lián)系電話、郵政編碼、收貨人姓名、支

38、付方式、備注;</p><p>  實(shí)體集“類別”的屬性包括:類別名稱。</p><p><b>  3)實(shí)體之間的聯(lián)系</b></p><p>  會(huì)員在購(gòu)買(mǎi)食品時(shí)都能對(duì)食品有個(gè)評(píng)論,每一位會(huì)員能對(duì)多個(gè)食品進(jìn)行評(píng)論,每一個(gè)食品能被多個(gè)會(huì)員評(píng)論,所以會(huì)員與食品之間存在多對(duì)多的“評(píng)論”聯(lián)系;</p><p>  會(huì)員在訂購(gòu)

39、食品后有一固定的訂單記錄,每位會(huì)員能擁有多個(gè)訂單,而一個(gè)訂單只能屬于一位會(huì)員,所以會(huì)員與訂單之間存在一對(duì)多的“訂購(gòu)”聯(lián)系;</p><p>  訂單還需要指明擁有哪些食品,每個(gè)訂單包含有多個(gè)食品,而每個(gè)食品可以被多個(gè)食品所包含,所以訂單和食品之間存在多對(duì)多的“訂單包含”聯(lián)系;</p><p>  每種食品都必須屬于一個(gè)類別,所以存在食品與類別之間的多對(duì)一的“屬于”聯(lián)系。</p>

40、<p>  4.1.2 E-R圖</p><p>  由上邊的數(shù)據(jù)庫(kù)分析能得出系統(tǒng)數(shù)據(jù)庫(kù)的E-R圖</p><p><b>  圖表 6 ER圖</b></p><p>  4.1.3 E-R圖轉(zhuǎn)換成關(guān)系模式</p><p>  1)由實(shí)體得到關(guān)系模式</p><p>  會(huì)員

41、(會(huì)員ID、會(huì)員姓名、會(huì)員密碼、性別、年齡、郵箱、手機(jī)號(hào)、狀態(tài))</p><p>  食品(食品編號(hào)、食品類別、食品價(jià)格、存貨數(shù)量、最新入庫(kù)、原產(chǎn)地、保質(zhì)期、生產(chǎn)日期、重量)</p><p>  訂單(訂單編號(hào)、會(huì)員ID、訂貨時(shí)間、訂貨狀態(tài)、付款狀態(tài)、總金額、收貨地址、收貨人聯(lián)系電話、郵政編碼、收貨人姓名、支付方式、備注)</p><p><b>  類別

42、(類別名稱)</b></p><p>  2)由聯(lián)系得到關(guān)系模式(已對(duì)一對(duì)多和多對(duì)一的聯(lián)系進(jìn)行了合并處理)</p><p>  評(píng)論(食品編號(hào)、會(huì)員ID、評(píng)價(jià)內(nèi)容)</p><p>  訂單包含(訂單編號(hào)、食品編號(hào)、訂貨時(shí)單價(jià)、數(shù)量)</p><p>  4.2 數(shù)據(jù)庫(kù)邏輯設(shè)計(jì)</p><p>  由以上數(shù)

43、據(jù)庫(kù)的分析,以及最后得出的關(guān)系模式可以設(shè)計(jì)出系統(tǒng)具體需要用到的表項(xiàng),為了編程的需要與方便,為每個(gè)表項(xiàng)都加上了id屬性,此屬性是自增整數(shù),同時(shí)考慮到是一個(gè)購(gòu)物網(wǎng)站,需要增強(qiáng)一定的交互,所以添加了一個(gè)公告表,及時(shí)通告網(wǎng)站的最新消息。下圖1為使用SQLserver2005導(dǎo)出的數(shù)據(jù)庫(kù)關(guān)系圖:</p><p>  圖表 7 邏輯數(shù)據(jù)庫(kù)關(guān)系圖</p><p>  以下列出各表項(xiàng)的詳細(xì)說(shuō)明:<

44、/p><p>  4.3 安全模式設(shè)計(jì)</p><p>  4.3.1 數(shù)據(jù)庫(kù)完整性設(shè)計(jì)</p><p><b>  1)實(shí)體完整性:</b></p><p>  保證每個(gè)關(guān)系應(yīng)該有一個(gè)主碼,主碼的任何屬性都不為空。</p><p>  以下列出個(gè)元組的對(duì)應(yīng)的主碼關(guān)系(“→”右邊為主碼,左邊為關(guān)系名

45、稱):</p><p>  會(huì)員→會(huì)員ID、食品→食品編號(hào)、訂單→訂單編號(hào)、類別→類別名稱、評(píng)論→(食品編號(hào)+會(huì)員ID)、訂單包含→(訂單編號(hào)+食品編號(hào))</p><p><b>  2)參照完整性:</b></p><p>  參照完整性要求,參照關(guān)系的任何元組在其外碼上的值,或者等于被參照關(guān)系的某個(gè)元組的主碼,或者為空值。以下列出個(gè)表項(xiàng)之間

46、的參照關(guān)系(“→”表示參照):</p><p>  食品→類別、訂單→會(huì)員、訂單包含→(食品+訂單)、評(píng)論→(食品+會(huì)員)</p><p>  同時(shí),為了保證完整性,在此系統(tǒng)中使用級(jí)聯(lián)更新的方式,若一個(gè)被參照關(guān)系被刪除,則與之關(guān)聯(lián)的元組也會(huì)被級(jí)聯(lián)刪除。</p><p>  3)用戶定義的完整性:</p><p>  不同的關(guān)系數(shù)據(jù)庫(kù)根據(jù)其應(yīng)用

47、環(huán)境的不同,往往還需要一些特殊的約束條件。</p><p>  屬性約束:根據(jù)具體的應(yīng)用還設(shè)置其屬性為char或者是int;</p><p>  關(guān)系約束:檢查關(guān)系的合法取值,比如在此系統(tǒng)中年齡的取值被限定在一個(gè)合理的范圍之內(nèi)。</p><p>  4.3.2 數(shù)據(jù)庫(kù)權(quán)限控制</p><p><b>  1)數(shù)據(jù)庫(kù)用戶權(quán)限<

48、/b></p><p>  在使用到具體數(shù)據(jù)庫(kù)時(shí),必須分配一個(gè)合法的身份,在系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)中,專門(mén)為此系統(tǒng)創(chuàng)建了一個(gè)新的用戶賬號(hào),分配到的權(quán)限僅僅局限在本系統(tǒng)的食品數(shù)據(jù)庫(kù)中。</p><p><b>  2)會(huì)員權(quán)限</b></p><p>  會(huì)員并沒(méi)有對(duì)整個(gè)數(shù)據(jù)庫(kù)的操作權(quán)利,會(huì)員只能通過(guò)程序的一些有限權(quán)利的接口進(jìn)行操作,如食品的瀏覽,

49、下訂單等。</p><p><b>  3)管理員權(quán)限</b></p><p>  高級(jí)管理員對(duì)整個(gè)系統(tǒng)有最高的權(quán)限,能查看任意表現(xiàn),并修改任意表現(xiàn)內(nèi)容;普通管理員除了不具有對(duì)管理員的管理之外,基本與高級(jí)管理員職能相同。</p><p><b>  系統(tǒng)實(shí)現(xiàn)</b></p><p>  5.1 程

50、序模塊設(shè)計(jì)</p><p>  5.1.1 程序目錄結(jié)構(gòu)</p><p>  5.1.2 JSP頁(yè)面分為會(huì)員頁(yè)面與管理員頁(yè)面</p><p><b>  會(huì)員頁(yè)面:</b></p><p><b>  管理員:</b></p><p>  5.1.3 配置文件</

51、p><p>  Struts配置文件:</p><p>  Spring配置文件:</p><p>  Hibernate配置文件:</p><p><b>  會(huì)員部分:</b></p><p><b>  管理員部分:</b></p><p>  5.

52、1.4 類文件</p><p>  Action類文件:</p><p><b>  會(huì)員部分:</b></p><p><b>  管理員部分:</b></p><p><b>  DAO類文件:</b></p><p><b>  會(huì)員部

53、分:</b></p><p><b>  管理員部分:</b></p><p><b>  ORM類文件:</b></p><p><b>  會(huì)員部分:</b></p><p><b>  管理員部分:</b></p><

54、p><b>  主要模塊及代碼</b></p><p><b>  部分配置文件代碼</b></p><p>  web.xml配置文件(Struts+Spring+Hibernate框架整合):</p><p>  <!-- 定義一個(gè)Listener,該Listener在應(yīng)用啟動(dòng)時(shí)創(chuàng)建Spring容器 --&

55、gt;</p><p>  <context-param></p><p>  <param-name>contextConfigLocation</param-name></p><p>  <param-value>/WEB-INF/applicationContext*.xml</param-value&g

56、t;</p><p>  </context-param></p><p>  <listener></p><p>  <listener-class></p><p>  org.springframework.web.context.ContextLoaderListener</p>&

57、lt;p>  </listener-class></p><p>  </listener></p><p>  <!-- 定義過(guò)濾器鏈 --></p><p>  <!-- 定義ActionContextCleanUp過(guò)濾器 --></p><p><b>  <fil

58、ter></b></p><p>  <filter-name>struts-cleanup</filter-name></p><p>  <filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class></p>&

59、lt;p><b>  </filter></b></p><p>  <!-- 排在第一位的過(guò)濾器是:ActionContextCleanUp過(guò)濾器 --></p><p>  <filter-mapping></p><p>  <filter-name>struts-cleanup<

60、;/filter-name></p><p>  <url-pattern>/*</url-pattern></p><p>  </filter-mapping></p><p>  <!-- 定義SiteMesh的核心過(guò)濾器 --></p><p><b>  <fi

61、lter></b></p><p>  <filter-name>sitemesh</filter-name></p><p>  <filter-class>com.opensymphony.module.sitemesh.filter.PageFilter</filter-class></p><p&

62、gt;<b>  </filter></b></p><p>  <!-- 排在第二位的過(guò)濾器是:SiteMesh的核心過(guò)濾器 --></p><p>  <filter-mapping></p><p>  <filter-name>sitemesh</filter-name>&l

63、t;/p><p>  <url-pattern>/*</url-pattern></p><p>  </filter-mapping></p><p>  <!-- 定義Struts 2的核心過(guò)濾器 --></p><p><b>  <filter></b>&

64、lt;/p><p>  <filter-name>struts</filter-name></p><p>  <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class></p><p><b>  </filter

65、></b></p><p>  <!-- 排在第三位的過(guò)濾器是:FilterDispatcher過(guò)濾器 --></p><p>  <filter-mapping></p><p>  <filter-name>struts</filter-name></p><p>  &l

66、t;url-pattern>/*</url-pattern></p><p>  </filter-mapping></p><p>  <!-- 配置圖形驗(yàn)證碼Servlet --></p><p><b>  <servlet></b></p><p>  <

67、;servlet-name>img</servlet-name></p><p>  <servlet-class>fs.web.AuthImg</servlet-class></p><p>  </servlet></p><p>  <!-- 為圖形驗(yàn)證碼Servlet指定URL --><

68、/p><p>  <servlet-mapping></p><p>  <servlet-name>img</servlet-name></p><p>  <url-pattern>/authImg.jpg</url-pattern></p><p>  </servlet-m

69、apping></p><p>  <welcome-file-list></p><p>  <welcome-file>init.jsp</welcome-file></p><p>  </welcome-file-list></p><p>  struts.xml文件內(nèi)容<

70、;/p><p><b>  <struts></b></p><p>  <constant name="struts.i18n.encoding" value="UTF-8"/></p><p>  <package name="foodsite" exte

71、nds="struts-default"></p><p>  <action name="indexAll" class="indexAllAction"></p><p>  <result name="success">/index.jsp</result><

72、;/p><p><b>  </action></b></p><p>  <action name="member" class="MemberAction"></p><p>  <result name="success">/init.jsp<

73、;/result></p><p>  <result name="loginerror">/member/login.jsp</result></p><p>  <result name="signinerror">/member/signin.jsp</result></p>

74、<p>  <result name="setinfoerror">/member/setinfo.jsp</result></p><p>  </action></p><p>  <action name="search" class="SearchAction">

75、;</p><p>  <result name="success">/member/search.jsp</result></p><p>  <result name="test">/member/test.jsp</result></p><p><b>  &l

76、t;/action></b></p><p>  <action name="foodDisplay" class="FoodDisplayAction"></p><p>  <result name="success">/member/fooddisplay.jsp</resul

77、t></p><p>  </action></p><p>  <action name="discuss" class="DiscussAction"></p><p>  <result name="success">/member/discuss.j

78、sp</result></p><p>  </action></p><p>  <action name="foodClass" class="FoodClassAction"></p><p>  <result name="success">/me

79、mber/foodclass.jsp</result></p><p>  </action></p><p>  <action name="shopping" class="ShoppingAction"></p><p>  <result name="succes

80、s">/member/shopping.jsp</result></p><p>  <result name="error">/member/login.jsp</result></p><p>  <result name="orderform">/member/orderform.

81、jsp</result></p><p>  </action></p><p>  <action name="dealClose" class="DealCloseAction"></p><p>  <result name="success">/m

82、ember/dealclose.jsp</result></p><p>  <result name="error">/member/orderform.jsp</result></p><p><b>  </action></b></p><p>  <action

83、 name="orderSearch" class="OrderSearchAction"></p><p>  <result name="success">/member/ordersearch.jsp</result></p><p><b>  </action><

84、/b></p><p>  <action name="quit" class="QuitAction"></p><p>  <result name="success">/init.jsp</result></p><p><b>  </act

85、ion></b></p><p>  </package></p><p>  <include file="struts-manager.xml"></include></p><p><b>  </struts></b></p><p

86、>  struts-manager.xml文件內(nèi)容</p><p><b>  <struts></b></p><p>  <package name="dwfoodsite" extends="struts-default"></p><p>  <action n

87、ame="dwmanager" class="dwManagerAction"></p><p>  <result name="success">/manager/manager.jsp</result></p><p>  <result name="loginerror"

88、;>/manager/login.jsp</result></p><p>  <result name="showsuccess">/manager/managemana.jsp</result></p><p>  <result name="insertsuccess">/manager/m

89、anagemana.jsp</result></p><p>  <result name="inserterror">/manager/managemana.jsp</result></p><p>  </action></p><p>  <action name="dw

90、ordergoods" class="dwOrdergoodsAction"></p><p>  <result name="success">/manager/showorder.jsp</result></p><p>  </action></p><p>  &

91、lt;action name="dwmember" class="dwMemberAction"></p><p>  <result name="success">/manager/managememb.jsp</result></p><p>  <result name="err

92、or">/manager/manager.jsp</result></p><p>  </action></p><p>  <action name="dwfoodclass" class="dwFoodclassAction"></p><p>  <resu

93、lt name="success">/manager/adddelclass.jsp</result></p><p>  <result name="insertclasserror">/manager/adddelclass.jsp</result></p><p>  <result name=&

94、quot;insertnullerror">/manager/adddelclass.jsp</result></p><p>  </action></p><p>  <action name="dwfoodstuff" class="dwFoodstuffAction"></p>

95、;<p>  <param name="savePath">/picfood</param></p><p>  <result name="success">/manager/showfood.jsp</result></p><p>  </action></p&

96、gt;<p>  <action name="dwordergoods_food" class="dwOrdergoods_foodAction"></p><p>  <result name="success">/manager/showsingleorder.jsp</result></p&g

97、t;<p>  </action></p><p>  <action name="dwquit" class="dwQuitAction"></p><p>  <result name="success">/init.jsp</result></p>

98、<p><b>  </action></b></p><p>  </package></p><p><b>  </struts></b></p><p>  applicationContext.xml文件</p><p>  <bea

99、n id="dataSource"</p><p>  class="org.springframework.jdbc.datasource.DriverManagerDataSource"> </p><p>  <property name="driverClassName" </p><p&g

100、t;  value="com.microsoft.sqlserver.jdbc.SQLServerDriver"/></p><p>  <property name="url"</p><p>  value="jdbc:sqlserver://localhost:1433;databaseName=foodsite"

101、;/> </p><p>  <property name="username" value="whl"/> </p><p>  <property name="password" value="whl"/> </p><p><b>  <

102、;/bean> </b></p><p>  <bean id="sessionFactory" </p><p>  class="org.springframework.orm.hibernate3.LocalSessionFactoryBean" > </p><p>  <prop

103、erty name="dataSource" ref="dataSource"/> </p><p>  <property name="mappingResources"> </p><p><b>  <list> </b></p><p>  <

104、;value>fs/orm/Member.hbm.xml</value></p><p>  <value>fs/orm/Notice.hbm.xml</value></p><p>  <value>fs/orm/Discuss.hbm.xml</value></p><p>  <value

105、>fs/orm/Foodclass.hbm.xml</value> </p><p>  <value>fs/orm/Foodstuff.hbm.xml</value> </p><p>  <value>fs/orm/Ordergoods.hbm.xml</value></p><p>  <

106、value>fs/orm/Ordergoods_food.hbm.xml</value></p><p>  <value>dwfs/orm/DwMember.hbm.xml</value></p><p>  <value>dwfs/orm/DwManager.hbm.xml</value></p><

107、p>  <value>dwfs/orm/DwFoodclass.hbm.xml</value> </p><p>  <value>dwfs/orm/DwFoodstuff.hbm.xml</value> </p><p>  <value>dwfs/orm/DwOrdergoods.hbm.xml</value>

108、;</p><p>  <value>dwfs/orm/DwOrdergoods_food.hbm.xml</value></p><p><b>  </list> </b></p><p>  </property> </p><p>  <property na

109、me="hibernateProperties"> </p><p><b>  <props> </b></p><p>  <prop key="hibernate.dialect"> </p><p>  org.hibernate.dialect.SQLServerD

110、ialect</p><p><b>  </prop> </b></p><p><b>  </props> </b></p><p>  </property> </p><p><b>  </bean></b></

111、p><p><b>  主要界面與代碼</b></p><p>  用戶界面與主要代碼:</p><p><b>  1) 食品網(wǎng)首頁(yè):</b></p><p><b>  /*此類完成功能:</b></p><p>  *首頁(yè)需要顯示的所有信息從數(shù)據(jù)庫(kù)中讀

112、出</p><p>  *包括各類食品、公告內(nèi)容及最熱銷(xiāo)食品。</p><p><b>  */</b></p><p>  public class IndexAllAction extends ActionSupport</p><p><b>  {</b></p><

113、p>  private INoticeDAO noticeDAO;</p><p>  private List notice;</p><p>  private IFoodstuffDAO foodstuffDAO;</p><p>  private IOrdergoods_foodDAO ordergoods_foodDAO;</p>&

114、lt;p>  private List hot;</p><p>  private List liefallow;</p><p>  private List pastry;</p><p>  private List chocolate;</p><p>  private List drink;</p><

115、p>  /*getter & setter*/</p><p>  public String execute() throws Exception</p><p><b>  {</b></p><p>  this.setNotice(noticeDAO.getAllNotice());</p><p>

116、;  List<Foodstuff> hot_l=new ArrayList();</p><p>  Iterator it=(Iterator) this.getOrdergoods_foodDAO().findHot(0, 5).iterator();</p><p>  while(it.hasNext()){</p><p>  Object[

117、] result=(Object[]) it.next();</p><p>  hot_l.add(foodstuffDAO.findById((Integer)result[0]));</p><p><b>  }</b></p><p>  this.setHot(hot_l);</p><p>  this.s

118、etLiefallow(foodstuffDAO.findByClass(1, 0, 14));</p><p>  this.setPastry(foodstuffDAO.findByClass(2, 0, 14));</p><p>  this.setChocolate(foodstuffDAO.findByClass(3, 0, 14));</p><p>

119、  this.setDrink(foodstuffDAO.findByClass(4, 0, 14));</p><p>  return SUCCESS;</p><p><b>  }</b></p><p><b>  }</b></p><p>  2) 食品分為四大類,如圖所示:<

120、/p><p>  3)點(diǎn)擊某一種類則進(jìn)入按大類的食品顯示頁(yè)面:</p><p><b>  /*此類完成功能:</b></p><p>  *在分類顯示各類食品時(shí),將各類食品從數(shù)據(jù)庫(kù)中讀出;</p><p>  *因?yàn)槊款愂称范急容^多,所以設(shè)置了分類顯示的功能。</p><p><b>  

121、*/</b></p><p>  public class FoodClassAction extends ActionSupport {</p><p>  private IFoodstuffDAO foodstuffDAO;</p><p>  private List foodList;</p><p>  private

122、 int foodClass;</p><p>  private String foodClassName;</p><p>  private int newsearch;</p><p>  private int total;</p><p>  private int pageNo;</p><p>  

123、private int pre;</p><p>  private int next;</p><p>  /*getter & setter*/</p><p>  public String execute() throws Exception {</p><p>  this.setMax(3);</p><

124、;p>  if(this.getNewsearch()!=0){</p><p>  if(this.getPre()==1)pageNo--;</p><p>  else if(this.getNext()==1)pageNo++;</p><p>  }else this.setPageNo(0);</p><p>  this.

125、setNewsearch(1);</p><p>  this.setFoodList(foodstuffDAO.findByClass(this.getFoodClass(), </p><p>  this.getPageNo()*this.getMax(),this.getMax()));</p><p>  this.setTotal(foodstuffD

126、AO.countByClass(this.getFoodClass()));</p><p>  if(this.getPageNo()==0)this.setPre(0);</p><p>  else this.setPre(1);</p><p>  if((this.getPageNo()+1)*this.getMax()>=this.getTotal

127、())this.setNext(0);</p><p>  else this.setNext(1);</p><p>  if(this.getFoodList().size()!=0){</p><p>  Foodstuff fs=(Foodstuff)this.getFoodList().get(0);</p><p>  this.

128、setFoodClassName(fs.getFoodClass().getClassName());</p><p><b>  }</b></p><p>  return SUCCESS;</p><p><b>  }</b></p><p><b>  }</b>

129、</p><p>  4)具有翻頁(yè)功能,可以修改購(gòu)買(mǎi)數(shù)量并點(diǎn)擊“加入購(gòu)物車(chē)”將進(jìn)入購(gòu)物車(chē)界面,但是如果會(huì)員沒(méi)有登錄則轉(zhuǎn)向登錄界面:</p><p><b>  5)會(huì)員注冊(cè)頁(yè)面:</b></p><p><b>  /*此類完成功能:</b></p><p>  *完成用戶的注冊(cè),登錄及修改信息。&

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論