版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 設(shè)計(jì)的目標(biāo)與要求</b></p><p><b> 1、課程設(shè)計(jì)目的:</b></p><p> 熟悉大型數(shù)據(jù)庫(kù)管理系統(tǒng)的結(jié)構(gòu)與組成;</p><p> 熟悉數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)的設(shè)計(jì)方法和開發(fā)過程;</p><p> 掌握一種大型數(shù)據(jù)庫(kù)管理系統(tǒng)(DM5、ORACLE
2、或SQL SERVER)的應(yīng)用技術(shù)和開發(fā)工具的使用;</p><p> 熟悉數(shù)據(jù)庫(kù)設(shè)計(jì)工具的使用;</p><p> 熟悉數(shù)據(jù)庫(kù)安全的相關(guān)知識(shí)和技術(shù);</p><p> 熟悉數(shù)據(jù)庫(kù)系統(tǒng)的管理和維護(hù)。</p><p><b> 2、課程設(shè)計(jì)要求:</b></p><p> 在課程設(shè)計(jì)指導(dǎo)老
3、師的指導(dǎo)下,選定一個(gè)數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)的題目,完成數(shù)據(jù)庫(kù)的設(shè)計(jì)和應(yīng)用系統(tǒng)設(shè)計(jì),并提交相應(yīng)文檔。</p><p> 數(shù)據(jù)庫(kù)管理系統(tǒng)僅限D(zhuǎn)M5、Oracle以及MS SQL Server;</p><p> 開發(fā)工具限PowerBuilder、Delphi、C++、 JAVA、.NET平臺(tái)或其它動(dòng)態(tài)網(wǎng)頁(yè)開發(fā)工具;</p><p> 系統(tǒng)采用客戶/服務(wù)器(C/S)結(jié)構(gòu)或
4、瀏覽器/服務(wù)器(B/S)結(jié)構(gòu)實(shí)現(xiàn)。</p><p> 系統(tǒng)應(yīng)嚴(yán)格遵照題目要求進(jìn)行設(shè)計(jì),可在其基礎(chǔ)上進(jìn)一步細(xì)化完善,但不得違背,原則上不額外增加與要求無關(guān)的功能。</p><p> 系統(tǒng)中應(yīng)適當(dāng)體現(xiàn)下列技術(shù)的應(yīng)用:存儲(chǔ)過程,觸發(fā)器,索引。</p><p> 提交系統(tǒng)的源碼及文檔。</p><p><b> 設(shè)計(jì)的應(yīng)用背景<
5、;/b></p><p> 本系統(tǒng)是一個(gè)超市收銀系統(tǒng)。顧名思義,本系統(tǒng)用來管理和更新超市日常交易數(shù)據(jù),如收銀員的管理,收銀員的工作記錄,日常交易記錄,顧客信息管理,商品信息管理,等等,所有的數(shù)據(jù)存儲(chǔ)在達(dá)夢(mèng)數(shù)據(jù)庫(kù)的system庫(kù)中。</p><p> 本系統(tǒng)實(shí)現(xiàn)的主要功能為:</p><p> 1、收銀:收銀員輸入顧客的會(huì)員卡卡號(hào)(若有卡)、所購(gòu)商品的貨號(hào)
6、等信息,系統(tǒng)根據(jù)這些信息獲取相應(yīng)的價(jià)格信息并計(jì)算應(yīng)收取的總金額。完成收銀后,記錄交易信息,修改有關(guān)種類商品的剩余量以及該持卡顧客的消費(fèi)情況。</p><p> 2、發(fā)卡:顧客可交納一定的費(fèi)用(如50元)辦理一張會(huì)員卡,以后在該商場(chǎng)購(gòu)物可憑卡享受9折優(yōu)惠。如果一個(gè)未持卡顧客一次購(gòu)物滿1000元,可為其免費(fèi)發(fā)放一張會(huì)員卡,每張卡的優(yōu)惠期為一年,一年內(nèi)消費(fèi)達(dá)到一定金額的可繼續(xù)享受下一年的優(yōu)惠。</p>
7、<p> 3、款項(xiàng)盤存:收銀員下班或交接班前對(duì)本收銀臺(tái)中本班次收取的款額進(jìn)行盤存,明確責(zé)任。</p><p> 4、商品信息的錄入、修改、刪除和查詢等。</p><p> 5、收銀員身份及口令管理。</p><p><b> 數(shù)據(jù)庫(kù)設(shè)計(jì)過程</b></p><p><b> 1、需求分析&l
8、t;/b></p><p><b> (1)、信息要求</b></p><p> 顧客信息:顧客編號(hào)(會(huì)員卡號(hào))、顧客姓名、顧客性別、注冊(cè)時(shí)間、是否到期、消費(fèi)金額。</p><p> 收銀員信息:收銀員編號(hào)、收銀員姓名、收銀員性別、登錄名,密碼。</p><p> 商品信息:商品編號(hào)、商品名稱、單價(jià)、現(xiàn)有庫(kù)
9、存。</p><p> 收銀信息:收銀員編號(hào)、收銀金額、登錄時(shí)間,注銷時(shí)間。</p><p> 交易信息:顧客編號(hào),商品編號(hào),交易時(shí)間,交易數(shù)量。</p><p><b> ?。?)、處理要求</b></p><p> A、處理方式:聯(lián)機(jī)處理。</p><p> B、處理時(shí)間要求:<
10、 2S。</p><p><b> C、處理功能:</b></p><p> (I)、添加新信息,修改現(xiàn)存信息,刪除無用信息,查詢信息。</p><p> (II)、計(jì)算一次交易的金額,如果是會(huì)員,就可以享受9折優(yōu)惠,如果非會(huì)員消費(fèi)金額超過1000元,免費(fèi)為其發(fā)放一張為期一年的會(huì)員卡。</p><p> (III
11、)、只有收銀員以正確的用戶名和密碼才能登錄本系統(tǒng)。</p><p> ?。?)、安全性和完整性要求</p><p> A、安全性要求:只有收銀員以正確的用戶名和密碼才能登錄本系統(tǒng),進(jìn)行相應(yīng)操作。后臺(tái)服務(wù)器(達(dá)夢(mèng)數(shù)據(jù)庫(kù))會(huì)生成相應(yīng)的日志文件。</p><p><b> B、完整性要求:</b></p><p> ?。↖
12、)實(shí)體完整性:如上信息要求一欄所示,黃色背景的為primary key。</p><p> ?。↖I)參照完整性:收銀信息和交易信息中的收銀員編號(hào),顧客編號(hào)和商品編號(hào)均為前面的參照。</p><p> (III)用戶定義完整性:如性別只能為‘男’或‘女’,姓名不能為空,登錄名必須唯一,密碼必須六位以上,等等。</p><p><b> 2、概念設(shè)計(jì)&l
13、t;/b></p><p> 根據(jù)需求分析得到的信息抽象為E-R模型如下:</p><p><b> 3、邏輯設(shè)計(jì)</b></p><p> 根據(jù)以上分析,得到本系統(tǒng)的基本關(guān)系模式為:</p><p> 顧客(顧客編號(hào)、顧客姓名、顧客性別、注冊(cè)時(shí)間、是否到期、消費(fèi)金額)。</p><p&
14、gt; create table Customer</p><p> ( Cno char(9) primary key,</p><p> Cname char(20),</p><p> Csex char(2) check(Csex in('男','女')),</p><p> Creg
15、date,</p><p> Cactive char(2) check(Cactive in('是','否')),</p><p> Cconsumption decimal(8,2)</p><p><b> );</b></p><p> 收銀員(收銀員編號(hào)、收銀員姓名、收銀
16、員性別、登錄名,密碼)。</p><p> create table Cashier</p><p> (Cno char(9) primary key,</p><p> Cname char(20) not null,</p><p> Csex char(2) check(Csex in('男','女&
17、#39;)),</p><p> Clogname char(20) unique,</p><p> Clogpass char(20) check(Clogpass like '______%')</p><p><b> );</b></p><p> 商品(商品編號(hào)、商品名稱、單價(jià)、現(xiàn)有
18、庫(kù)存)。</p><p> create table Goods</p><p> (Gno char(9) primary key,</p><p> Gname char(20) not null,</p><p> Gprice decimal(5,2),</p><p> Gstorage sma
19、llint</p><p><b> );</b></p><p> 收銀(收銀員編號(hào)、收銀金額、登錄時(shí)間,注銷時(shí)間)。</p><p> create table Cashinfo</p><p> (Cno char(9) not null,</p><p> Crecv deci
20、mal(7,2),</p><p> CtimeOn timestamp(0),</p><p> CtimeOff timestamp(0),</p><p> foreign key(Cno) references Cashier(Cno)</p><p><b> );</b></p><
21、;p> 交易(顧客編號(hào),商品編號(hào),交易時(shí)間,交易數(shù)量)。</p><p> create table Tradeinfo</p><p> (Cno char(9),</p><p> Gno char(9),</p><p> Tquantity smallint,</p><p> Ttime
22、timestamp(0),</p><p> --primary key( Cno, Gno),</p><p> foreign key(Cno) references Customer(Cno),</p><p> foreign key(Gno) references Goods(Gno) </p><p><b>
23、 );</b></p><p> 為了編程的方便,另外建立了幾個(gè)視圖如下:</p><p> 查詢收銀信息(收銀員編號(hào)、收銀員姓名、收銀金額、登錄時(shí)間,注銷時(shí)間)</p><p> 查詢交易信息(顧客編號(hào),顧客姓名,商品編號(hào),商品名稱,交易時(shí)間,交易數(shù)量)</p><p><b> 應(yīng)用系統(tǒng)的設(shè)計(jì)過程</b
24、></p><p><b> 系統(tǒng)模塊結(jié)構(gòu)圖</b></p><p><b> 系統(tǒng)工作流程</b></p><p> 以收銀員的身份登錄(密碼為123456),如下圖:</p><p> 對(duì)收銀員信息,顧客信息,商品信息做相應(yīng)操作,以收銀員信息為例:</p><p
25、> 添加信息,如果出現(xiàn)非法的輸入,會(huì)有提示,并會(huì)返回該界面等待重新輸入(如兩次密碼不同,編號(hào)已存在,性別是‘男’‘女’之外的其他,等等)。如圖:</p><p> 刪除信息,輸入四個(gè)參數(shù)中任意的幾個(gè),系統(tǒng)會(huì)把滿足此參數(shù)組合的所有記錄刪除掉。如圖:</p><p> 修改信息,要輸入正確的編號(hào)。在需要修改的地方輸入新的參數(shù),不需要修改的地方保持空白。如圖:</p>
26、<p> 查詢信息,可以采用條件查詢,方法同刪除。如圖:</p><p> 進(jìn)行交易。輸入商品編號(hào)和對(duì)應(yīng)的數(shù)量(最多5種商品),如果是會(huì)員,輸入會(huì)員卡號(hào),否則不輸入。以會(huì)員為例,如下圖:</p><p><b> 輸入購(gòu)買信息</b></p><p><b> 判斷為會(huì)員</b></p>&
27、lt;p><b> 計(jì)算應(yīng)收金額</b></p><p> 此后,系統(tǒng)會(huì)根據(jù)交易的情況,自動(dòng)彈出修改相應(yīng)數(shù)據(jù)(如顧客的消費(fèi)金額,商品的庫(kù)存,交易信息等等)的對(duì)話框,其中,正確的修改數(shù)據(jù)已經(jīng)默認(rèn)的填在了對(duì)話框中,收銀員只需點(diǎn)擊確定按鈕即可。</p><p> 注銷以后,會(huì)彈出重新登陸的對(duì)話框。退出直接退出本系統(tǒng)。</p><p>&l
28、t;b> 關(guān)鍵技術(shù)和算法</b></p><p> 登錄對(duì)話框增加了“記住用戶名”這一選項(xiàng)。實(shí)現(xiàn)算法為:將選項(xiàng)是否勾選的狀態(tài)用一個(gè)bool變量表示,新建一個(gè)名為“user.dat”的文件。每次登陸時(shí),讀取文件中的內(nèi)容到“用戶名”欄中。如果選擇了“記住用戶名”,則將用戶輸入的用戶名重新寫到user.dat文件中,否則寫入空。</p><p> 系統(tǒng)中使用了很多對(duì)話框,
29、而且每個(gè)對(duì)話框都不相同。我采用了復(fù)用對(duì)話框的方式。實(shí)現(xiàn)方法為:定義狀態(tài)變量</p><p> typedef enum stype{</p><p> CASHIER_ADD,CASHIER_DELETE,CASHIER_EDIT,CASHIER_QUERY,</p><p> CUSTOMER_ADD,CUSTOMER_DELETE,CUSTOMER_EDI
30、T,CUSTOMER_QUERY,</p><p> GOODS_ADD, GOODS_DELETE, GOODS_EDIT, GOODS_QUERY,</p><p> CASHINFO_ADD,CASHINFO_QUERY,</p><p> TRADE_ADD, TRADE_QUERY</p><p><b&
31、gt; }STYPE;</b></p><p> 在OnInitDialog()函數(shù)中,用switch-case語(yǔ)句來初始化不同用途的對(duì)話框。這樣,16個(gè)對(duì)話框只用1個(gè)對(duì)話框資源。</p><p> 為了能夠?qū)崟r(shí)更新系統(tǒng)中的時(shí)間(如交易時(shí)間,上班下班時(shí)間等等),create幾個(gè)觸發(fā)器用來獲得系統(tǒng)時(shí)間。</p><p> //添加新會(huì)員的時(shí)候,自動(dòng)
32、獲得系統(tǒng)時(shí)間作為注冊(cè)時(shí)間</p><p> create trigger Insert_Customer</p><p> before insert on Customer</p><p> for each row</p><p><b> begin</b></p><p> :n
33、ew.Creg := curdate();</p><p><b> end;</b></p><p> //添加交易信息的時(shí)候,自動(dòng)獲得系統(tǒng)時(shí)間作為交易時(shí)間</p><p> create trigger Insert_Trade</p><p> before insert on Tradeinfo</
34、p><p> for each row</p><p><b> begin</b></p><p> :new.Ttime := current_timestamp();</p><p><b> end;</b></p><p> --用戶登錄系統(tǒng)時(shí)插入新記錄<
35、;/p><p> create trigger Insert_CashinfoOn</p><p> before insert on Cashinfo</p><p> for each row</p><p><b> begin</b></p><p> :new.CtimeOn :=
36、 current_timestamp();</p><p><b> end;</b></p><p> --用戶更新Crecv時(shí)(logout)</p><p> create trigger Insert_CashinfoOff</p><p> before update on Cashinfo</p
37、><p> for each row</p><p><b> begin</b></p><p> if :old.CtimeOff is null</p><p> then :new.CtimeOff := current_timestamp();</p><p><b>
38、end if;</b></p><p><b> end;</b></p><p> 為了查詢的方便,創(chuàng)建了Query_Tradeinfo和Query_Cashinfo兩個(gè)視圖。</p><p> create view Query_Cashinfo(Qcno,Qcname,Qcrecv,Qctimeon,Qctimeoff)
39、</p><p><b> as</b></p><p> select Cashinfo.Cno, Cname, Crecv, CtimeOn, CtimeOff</p><p> from Cashinfo,Cashier</p><p> where Cashinfo.Cno = Cashier.Cno;&
40、lt;/p><p> create view </p><p> Query_Tradeinfo(Qcno,Qcname,Qgno,Qgname,Qgprice,Qttime,Qtquantity)</p><p><b> as</b></p><p> select Tradeinfo.Cno, Cname,
41、Tradeinfo.Gno, Gname, Gprice, Ttime, Tquantity</p><p> from Tradeinfo,Customer,Goods</p><p> where Tradeinfo.Cno = Customer.Cno and Tradeinfo.Gno = Goods.Gno;</p><p> 在交易的過程中,會(huì)彈出
42、其他的對(duì)話框用來更新數(shù)據(jù)庫(kù),采用了重載消息函數(shù)的方法,使得更新的數(shù)據(jù)能以參數(shù)的形式傳到對(duì)話框中。</p><p> 采用了動(dòng)態(tài)條件修改,刪除和查詢的方式,實(shí)現(xiàn)方法是,在源程序中動(dòng)態(tài)改變查詢的條件。以刪除收銀員為例:</p><p> // m_Cashier是CCashierRecordSet(從CRecordSet繼承,與Cashier表關(guān)聯(lián))的對(duì)象</p><p
43、><b> //如果輸入不為空</b></p><p> if(m_strEdit1.GetLength())</p><p><b> {</b></p><p> if(bFirst)</p><p> m_Cashier.m_strFilter += " and &q
44、uot;;</p><p> strFilter.Format("Cno = '%s'",m_strEdit1);</p><p><b> //增加對(duì)應(yīng)的條件</b></p><p> m_Cashier.m_strFilter += strFilter;</p><p>
45、bFirst = TRUE;</p><p><b> }</b></p><p> if(m_strEdit2.GetLength())</p><p><b> {</b></p><p> if(bFirst)</p><p> m_Cashier.m_str
46、Filter += " and ";</p><p> strFilter.Format("Cname = '%s'",m_strEdit2);</p><p> m_Cashier.m_strFilter += strFilter;</p><p> bFirst = TRUE;</p>
47、<p><b> }</b></p><p> if(m_strEdit3.GetLength())</p><p><b> {</b></p><p> if(bFirst)</p><p> m_Cashier.m_strFilter += " and "
48、;;</p><p> strFilter.Format("Csex = '%s'",m_strEdit3);</p><p> m_Cashier.m_strFilter += strFilter;</p><p> bFirst = TRUE;</p><p><b> }</b
49、></p><p> if(m_strEdit4.GetLength())</p><p><b> {</b></p><p> if(bFirst)</p><p> m_Cashier.m_strFilter += " and ";</p><p> st
50、rFilter.Format("Clogname = '%s'",m_strEdit4);</p><p> m_Cashier.m_strFilter += strFilter;</p><p> bFirst = TRUE;</p><p><b> }</b></p><p&g
51、t;<b> 設(shè)計(jì)心得體會(huì)</b></p><p> 這次數(shù)據(jù)庫(kù)課程設(shè)計(jì)收獲頗大,首先對(duì)視圖和觸發(fā)器的認(rèn)識(shí)和作用都上了一個(gè)臺(tái)階。通過這次的課程設(shè)計(jì),我不僅拓寬了自己的知識(shí)面,還在實(shí)踐過程中鞏固和加深了自己所學(xué)的理論知識(shí),使自己的技術(shù)素質(zhì)和實(shí)踐能力有了進(jìn)一步的提高,同時(shí)我的專業(yè)水平也有了很大的進(jìn)步。熟悉大型數(shù)據(jù)庫(kù)管理系統(tǒng)的結(jié)構(gòu),熟悉了數(shù)據(jù)庫(kù)系統(tǒng)開發(fā)工具的使用。</p><
52、;p> 同時(shí),在軟件開發(fā)方面也累積了不少經(jīng)驗(yàn),對(duì)軟件工程的知識(shí)重要性的認(rèn)識(shí)更深了。通過設(shè)計(jì)過程的鍛煉,自己分析問題和解決問題的能力都得到了鍛煉和提高,完善了自己的知識(shí)結(jié)構(gòu),加深了對(duì)所學(xué)知識(shí)的理解。</p><p> 這次課程設(shè)計(jì)完成后,體會(huì)頗多,在學(xué)與做的過程中,取長(zhǎng)補(bǔ)短,不斷學(xué)習(xí)新的知識(shí),吸取經(jīng)驗(yàn),達(dá)到進(jìn)步的目的。在學(xué)與做的過程中自身的努力以及相關(guān)圖書資料的幫助,對(duì)ODBC編程接口的理解也從能夠使用提
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)--超市收銀管理
- 庫(kù)存管理系統(tǒng)數(shù)據(jù)庫(kù)課程設(shè)計(jì)---超市收銀管理系統(tǒng)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)--超市管理系統(tǒng)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)--超市管理系統(tǒng)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)---超市管理系統(tǒng)
- 超市管理系統(tǒng)數(shù)據(jù)庫(kù)課程設(shè)計(jì)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)--超市管理系統(tǒng)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)--超市會(huì)員管理系統(tǒng)的數(shù)據(jù)庫(kù)設(shè)計(jì)
- 課程設(shè)計(jì)---超市管理系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)--小型超市管理系統(tǒng)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)-超市貨物管理系統(tǒng)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)--超市進(jìn)銷管理系統(tǒng)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)---小型超市管理系統(tǒng)
- 小型超市管理系統(tǒng)數(shù)據(jù)庫(kù)課程設(shè)計(jì)
- 小型超市管理系統(tǒng)數(shù)據(jù)庫(kù)課程設(shè)計(jì)
- 數(shù)據(jù)庫(kù)原理課程設(shè)計(jì)--超市管理系統(tǒng)
- 小型超市管理系統(tǒng)數(shù)據(jù)庫(kù)課程設(shè)計(jì)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)---中小型超市銷售管理系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)
- sql數(shù)據(jù)庫(kù)課程設(shè)計(jì)-- 小型超市管理系統(tǒng)
- 超市收銀系統(tǒng)課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論