




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第16章 數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)設(shè)計(jì)實(shí)例
16.1 需求分析16.2 數(shù)據(jù)庫(kù)設(shè)計(jì)16.3 應(yīng)用程序設(shè)計(jì)與實(shí)現(xiàn)16.4 報(bào)表16.5應(yīng)用程序連編與發(fā)布本章介紹一個(gè)小型數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)實(shí)例——“小書(shū)店經(jīng)營(yíng)管理信息系統(tǒng)”的設(shè)計(jì)與實(shí)現(xiàn)。16.1需求分析系統(tǒng)功能:實(shí)現(xiàn)超市型小書(shū)店的日常經(jīng)營(yíng)管理,具體功能如下:(1)進(jìn)書(shū)登記(2)售書(shū)登記(3)查詢統(tǒng)計(jì)與報(bào)表(4)購(gòu)書(shū)咨詢開(kāi)發(fā)目標(biāo):開(kāi)發(fā)一個(gè)運(yùn)行于單臺(tái)微機(jī)環(huán)境、基于Windows系統(tǒng)的小型數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)——“小書(shū)店經(jīng)營(yíng)管理信息系統(tǒng)”16.2數(shù)據(jù)庫(kù)設(shè)計(jì)(一)1.?dāng)?shù)據(jù)庫(kù)概念結(jié)構(gòu)設(shè)計(jì)
開(kāi)單人總金額購(gòu)書(shū)單位開(kāi)單日期單據(jù)號(hào)庫(kù)存書(shū)數(shù)量售書(shū)單據(jù)售書(shū)nm書(shū)號(hào)書(shū)名出版社作者定價(jià)進(jìn)書(shū)日期進(jìn)價(jià)備注庫(kù)存數(shù)封面16.2數(shù)據(jù)庫(kù)設(shè)計(jì)(二)2.?dāng)?shù)據(jù)庫(kù)邏輯結(jié)構(gòu)設(shè)計(jì)
由3個(gè)關(guān)系組成:(1)庫(kù)存(書(shū)號(hào),書(shū)名,作者,出版社,進(jìn)書(shū)日期,定價(jià),進(jìn)價(jià),庫(kù)存數(shù),備注,封面)主鍵是書(shū)號(hào)。(2)單據(jù)(單據(jù)號(hào),開(kāi)單日期,購(gòu)書(shū)單位,開(kāi)單人,總金額)主鍵是單據(jù)號(hào)。(3)售書(shū)(單據(jù)號(hào),書(shū)號(hào),數(shù)量)主鍵是(單據(jù)號(hào),書(shū)號(hào))。外鍵是單據(jù)號(hào)、書(shū)號(hào)。
16.2數(shù)據(jù)庫(kù)設(shè)計(jì)(三)3.表結(jié)構(gòu)設(shè)計(jì)
“庫(kù)存”表的結(jié)構(gòu)
“單據(jù)”表的結(jié)構(gòu)“售書(shū)”表的結(jié)構(gòu)(2)自由表(1)數(shù)據(jù)庫(kù)表“temp庫(kù)存”表的結(jié)構(gòu):與“庫(kù)存”表相同“售書(shū)”表的結(jié)構(gòu)16.2數(shù)據(jù)庫(kù)設(shè)計(jì)(四)4.創(chuàng)建數(shù)據(jù)庫(kù)與表(2)在項(xiàng)目中創(chuàng)建數(shù)據(jù)庫(kù)“書(shū)店信息”。在數(shù)據(jù)庫(kù)中創(chuàng)建3個(gè)表“庫(kù)存”、“單據(jù)”和“售書(shū)”。以“庫(kù)存”表為父表、以“售書(shū)”表為子表、按“書(shū)號(hào)”字段建立一對(duì)多永久關(guān)系;以“單據(jù)”表為父表、以“售書(shū)”表為子表、按“單據(jù)號(hào)”字段建立一對(duì)多永久關(guān)系。(1)建立“書(shū)店管理”項(xiàng)目,建立項(xiàng)目文件夾“f:\書(shū)店管理”(3)在項(xiàng)目中創(chuàng)建自由表“temp庫(kù)存”和“temp銷(xiāo)售”。16.3應(yīng)用程序設(shè)計(jì)與實(shí)現(xiàn)
16.3.1應(yīng)用程序的邏輯結(jié)構(gòu)(一)“進(jìn)書(shū)登記”表單“售書(shū)”表單“購(gòu)書(shū)咨詢”表單“庫(kù)存查詢”表單“銷(xiāo)售查詢統(tǒng)計(jì)”表單退出系統(tǒng)“主窗口”表單,顯示本系統(tǒng)菜單“歡迎”表單主文件(main.prg)16.3.1應(yīng)用程序的邏輯結(jié)構(gòu)(二)1.項(xiàng)目主文件(main.prg)代碼
2.菜單
SETTALKOFFDOFORM歡迎READEVENTS16.3.2“歡迎”表單
“歡迎”表單是本系統(tǒng)運(yùn)行時(shí)執(zhí)行的第一個(gè)表單,它顯示“歡迎使用”的字樣。當(dāng)定時(shí)時(shí)間到、按下任意鍵或用鼠標(biāo)雙擊表單時(shí)將關(guān)閉該表單。當(dāng)該表單釋放時(shí)轉(zhuǎn)向執(zhí)行“主窗口”表單。表單設(shè)計(jì)的主要技巧:采用頂層表單:Caption設(shè)置為“歡迎使用書(shū)店管理信息系統(tǒng)”,表單分兩步釋放(1)設(shè)置“Form1”的KeyPress事件和DblClick事件、Timer1的Timer事件代碼,相同為:thisform.release
(2)設(shè)置“Form1”的Destroy事件代碼
thisform.hidedoform主窗口
16.3.3“主窗口”表單
“主窗口”表單是本系統(tǒng)的主界面,它顯示本系統(tǒng)的菜單。使用關(guān)閉按鈕或菜單中“退出”菜單項(xiàng)可以關(guān)閉該表單,并結(jié)束本系統(tǒng)的執(zhí)行。表單設(shè)計(jì)的主要技巧:采用頂層表單:Caption設(shè)置為“書(shū)店管理信息系統(tǒng)”在“Form1”的Init事件代碼調(diào)用菜單do菜單.mprwiththis,.t.“Form1”的Destroy事件代碼:quit16.3.4“進(jìn)書(shū)登記”表單
如果單擊“登記下一本”按鈕,就可以在各個(gè)文本框中輸入新到書(shū)的信息。表單上的表格中能顯示輸入記錄,但不能編輯記錄。表單設(shè)計(jì)的主要技巧:數(shù)據(jù)環(huán)境的InitialSelectedAlias屬性設(shè)置為“temp庫(kù)存”表,各控件的數(shù)據(jù)源也是“temp庫(kù)存”表或其中字段屬性設(shè)置與代碼與12.5節(jié)實(shí)例表單完全類(lèi)似在“退出”按鈕的Click事件代碼中將檢查數(shù)據(jù)輸入有無(wú)錯(cuò)誤,若有錯(cuò)誤,則提示用戶核對(duì)數(shù)據(jù)。若無(wú)錯(cuò)誤,將查找是不是現(xiàn)存書(shū)。若是現(xiàn)存書(shū),則增加“庫(kù)存”表的該書(shū)數(shù)量,否則,將該書(shū)添加到“庫(kù)存”表中16.3.5“售書(shū)”表單(一)
操作:當(dāng)該表單運(yùn)行時(shí),會(huì)自動(dòng)生成單據(jù)號(hào)和開(kāi)單日期。該表單是銷(xiāo)售圖書(shū)界面若單擊“增加”按鈕,則會(huì)在表格中增加一個(gè)空行。此時(shí)若單擊書(shū)號(hào)列的單元格,就可以從當(dāng)前存書(shū)列表中選擇一個(gè)書(shū)號(hào)。當(dāng)選擇書(shū)號(hào)之后,該書(shū)號(hào)對(duì)應(yīng)圖書(shū)的書(shū)名和單價(jià)就會(huì)顯示出來(lái),用戶只需輸入售書(shū)數(shù)量即可。單擊“數(shù)據(jù)核對(duì)與金額合計(jì)”按鈕,隨時(shí)進(jìn)行金額合計(jì)16.3.5“售書(shū)”表單(二)
表單設(shè)計(jì)的主要技巧:將“Dataenvironment”對(duì)象的InitialSelectedAlias屬性設(shè)置為“temp銷(xiāo)售”
從數(shù)據(jù)環(huán)境中拖動(dòng)“temp銷(xiāo)售”表到表單上,形成表格對(duì)象。將表格的DeleteMark設(shè)置為.F.將一個(gè)組合框添加到表格中的第一列中,并將它設(shè)置為該列的CurrentControl屬性,該列的Sparse設(shè)置為.T.。將組合框的RowSource設(shè)置為“庫(kù)存”表的“書(shū)號(hào)”字段,ControlSource為“temp銷(xiāo)售”表的“書(shū)號(hào)”字段。“Combo1”的Click事件代碼replace書(shū)名
with庫(kù)存.書(shū)名replace單價(jià)
with庫(kù)存.定價(jià)thisform.refresh在“數(shù)據(jù)核對(duì)與金額合計(jì)”按鈕與“打印預(yù)覽單據(jù)”按鈕的Click事件代碼中都將檢查有在該銷(xiāo)售中某書(shū)的數(shù)量合計(jì)是否大于庫(kù)存,即數(shù)據(jù)輸入錯(cuò)誤。在“退出”按鈕的Click事件代碼中首先詢問(wèn)該單據(jù)是否有效,無(wú)效即表示放棄本次銷(xiāo)售,若有效,則向下進(jìn)行Fprint的值用于檢查是否已核對(duì)數(shù)據(jù),要求必須已核對(duì);將本次銷(xiāo)售信息記錄在“單據(jù)”表和“售書(shū)”表中,并修改庫(kù)存書(shū)的數(shù)量。
16.3.6“庫(kù)存清單”表單
該表單顯示所有庫(kù)存圖書(shū)列表及統(tǒng)計(jì)信息。若單擊“打印預(yù)覽”按鈕,可以預(yù)覽(打?。皫?kù)存清單”報(bào)表。先設(shè)計(jì)“庫(kù)存清單”報(bào)表。表單設(shè)計(jì)的要點(diǎn):數(shù)據(jù)環(huán)境中添加“庫(kù)存”表,將表的Order屬性設(shè)置為“書(shū)號(hào)”。從數(shù)據(jù)環(huán)境中拖動(dòng)“庫(kù)存”表到表單上,形成表格對(duì)象,設(shè)置為只讀狀態(tài)。將各文本框設(shè)置為只讀??偨痤~為:sum(庫(kù)存數(shù)*進(jìn)價(jià))16.3.7“購(gòu)書(shū)咨詢”表單
該表單用于為用戶提供購(gòu)書(shū)咨詢,可以按書(shū)號(hào)、書(shū)名、作者或出版社查詢書(shū)店中有無(wú)符合查詢條件的圖書(shū),也可以實(shí)現(xiàn)這四種條件的組合查詢。表單設(shè)計(jì)的要點(diǎn):數(shù)據(jù)環(huán)境中添加“庫(kù)存”表,將表的Order屬性設(shè)置為“書(shū)號(hào)”。從數(shù)據(jù)環(huán)境中拖動(dòng)“庫(kù)存”表到表單上,形成表格對(duì)象。將表格的DeleteMark設(shè)置為.F.,ReadOnly設(shè)置為.T.“Form1”的Init事件代碼thisform.grd1.recordsource=""在“查詢”按鈕的Click事件代碼中,根據(jù)4個(gè)復(fù)選框的選中狀態(tài),將各個(gè)條件拼成一條select語(yǔ)句,保存在s1中,然后執(zhí)行該語(yǔ)句,結(jié)果在表格中顯示,代碼如下:&s1thisform.grd1.recordsource='書(shū)信息'16.3.8“銷(xiāo)售查詢統(tǒng)計(jì)”表單(一)
該表單用于對(duì)銷(xiāo)售情況做查詢統(tǒng)計(jì)。
由2個(gè)頁(yè)面組成頁(yè)面1
頁(yè)面2
16.3.8“銷(xiāo)售查詢統(tǒng)計(jì)”表單(二)
在“查詢”按鈕的Click事件代碼中,判斷單選按鈕的選中狀態(tài),然后執(zhí)行相應(yīng)的查詢語(yǔ)句,結(jié)果在表格中顯示。其中計(jì)算利潤(rùn)最高的前10種圖書(shū)的語(yǔ)句中的主要內(nèi)容是:selecttop10sum(售書(shū).數(shù)量)*(庫(kù)存.定價(jià)-庫(kù)存.進(jìn)價(jià))as利潤(rùn);groupby庫(kù)存.書(shū)號(hào);orderby1descintocursor查詢結(jié)果表單數(shù)據(jù)環(huán)境:頁(yè)面1的設(shè)計(jì)要點(diǎn):
16.3.8“銷(xiāo)售查詢統(tǒng)計(jì)”表單(三)(2)創(chuàng)建“銷(xiāo)售視圖”:用于和細(xì)節(jié)視圖形成1:N關(guān)系的1方CREATESQLVIEW銷(xiāo)售視圖
ASSELECT售書(shū).書(shū)號(hào),SUM(售書(shū).數(shù)量)AS銷(xiāo)售數(shù)量,庫(kù)存.書(shū)名,庫(kù)存.作者,;庫(kù)存.出版社,庫(kù)存.進(jìn)書(shū)日期,庫(kù)存.定價(jià),庫(kù)存.進(jìn)價(jià),庫(kù)存.庫(kù)存數(shù);FROM書(shū)店信息!庫(kù)存
INNERJOIN書(shū)店信息!售書(shū)
INNERJOIN書(shū)店信息!單據(jù);ON單據(jù).單據(jù)號(hào)=售書(shū).單據(jù)號(hào)
ON庫(kù)存.書(shū)號(hào)=售書(shū).書(shū)號(hào);WHERE單據(jù).開(kāi)單日期>="d1"AND單據(jù).開(kāi)單日期<="d2";GROUPBY售書(shū).書(shū)號(hào);ORDERBY2DESC(1)創(chuàng)建“細(xì)節(jié)視圖”:用于和銷(xiāo)售視圖形成1:N關(guān)系的N方CREATESQLVIEW細(xì)節(jié)視圖
ASSELECT售書(shū).單據(jù)號(hào),售書(shū).數(shù)量,單據(jù).開(kāi)單日期,單據(jù).購(gòu)書(shū)單位,單據(jù).開(kāi)單人,;單據(jù).總金額,售書(shū).書(shū)號(hào);FROM書(shū)店信息!單據(jù)
INNERJOIN書(shū)店信息!售書(shū)
ON單據(jù).單據(jù)號(hào)=售書(shū).單據(jù)號(hào);ORDERBY售書(shū).書(shū)號(hào)(3)創(chuàng)建“銷(xiāo)售總視圖”:用做銷(xiāo)售報(bào)表的數(shù)據(jù)源CREATESQLVIEW銷(xiāo)售總視圖
ASSELECT售書(shū).單據(jù)號(hào),售書(shū).書(shū)號(hào),庫(kù)存.書(shū)名,售書(shū).數(shù)量,單據(jù).開(kāi)單日期,;單據(jù).購(gòu)書(shū)單位,單據(jù).開(kāi)單人;FROM書(shū)店信息!庫(kù)存
INNERJOIN書(shū)店信息!售書(shū)
INNERJOIN書(shū)店信息!單據(jù);ON單據(jù).單據(jù)號(hào)=售書(shū).單據(jù)號(hào)
ON庫(kù)存.書(shū)號(hào)=售書(shū).書(shū)號(hào);WHERE單據(jù).開(kāi)單日期>="d1"AND單據(jù).開(kāi)單日期<="d2";ORDERBY售書(shū).書(shū)號(hào)頁(yè)面2的設(shè)計(jì)要點(diǎn):
1.創(chuàng)建三個(gè)視圖16.3.8“銷(xiāo)售查詢統(tǒng)計(jì)”表單(四)頁(yè)面2的設(shè)計(jì)要點(diǎn):
2.在“查詢”按鈕的Click事件代碼中,如下代碼用于關(guān)閉細(xì)節(jié)視圖和銷(xiāo)售視圖??刂仆粋€(gè)表或視圖以多個(gè)別名在多個(gè)工作區(qū)同時(shí)打開(kāi)ifused('細(xì)節(jié)視圖')select細(xì)節(jié)視圖use
endififused('銷(xiāo)售視圖')select銷(xiāo)售視圖use3.在“查詢”按鈕的Click事件代碼中,在銷(xiāo)售視圖和細(xì)節(jié)視圖間建立1:N臨時(shí)關(guān)系,并分別將銷(xiāo)售視圖和細(xì)節(jié)視圖作為兩個(gè)表格的數(shù)據(jù)源,這樣當(dāng)選擇左邊表格的一行時(shí),右邊表格中顯示該書(shū)在那些單據(jù)中賣(mài)過(guò)“退出”按鈕的Click事件代碼中用命令關(guān)閉數(shù)據(jù)庫(kù),是為了關(guān)閉視圖closedatabasethisform.release16.4報(bào)表
16.4.1“庫(kù)存清單”報(bào)表“庫(kù)存清單”報(bào)表預(yù)覽結(jié)果
設(shè)計(jì)“庫(kù)存清單”報(bào)表16.4.2“單據(jù)”報(bào)表“單據(jù)”報(bào)表預(yù)覽結(jié)果
設(shè)計(jì)“單據(jù)”報(bào)表說(shuō)明:在運(yùn)行“售書(shū)”表單時(shí),單擊“打印預(yù)覽單據(jù)”按鈕,才可以預(yù)覽(打?。┰搱?bào)表;報(bào)表中域控件“pa單據(jù)號(hào)”、“pa開(kāi)單人”、“pa開(kāi)單日期”、“pa購(gòu)書(shū)單位”和“pa總金額”的值由“售書(shū)”表單提供。16.4.3“銷(xiāo)售報(bào)表”報(bào)表“銷(xiāo)售報(bào)表”報(bào)表預(yù)覽結(jié)果
設(shè)計(jì)“銷(xiāo)售報(bào)表”報(bào)表說(shuō)明:報(bào)表數(shù)據(jù)環(huán)境中是“銷(xiāo)售總視圖”;報(bào)表中域控件“d1”、“d2”、“zje”和“l(fā)r”的值由“銷(xiāo)售查詢統(tǒng)計(jì)”表單提供。16.5應(yīng)用程序連編與發(fā)布(一)1.項(xiàng)目連編連編之前,需要將程序代碼中使用文件絕對(duì)路徑的地方進(jìn)行修改,改為使用相對(duì)路徑。這樣便于以后發(fā)布和安裝應(yīng)用程序。為該應(yīng)用程序附加圖標(biāo)單擊項(xiàng)目管理器中的“連編按鈕”對(duì)“書(shū)店管理”項(xiàng)目進(jìn)行連編,形成可執(zhí)行文件“書(shū)店管理.e
溫馨提示
- 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ù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 居間協(xié)議是啥意思-2025年度旅游咨詢服務(wù)居間合同
- 二零二五年度教育機(jī)構(gòu)臨時(shí)工崗位用工合同
- 二零二五年度停車(chē)場(chǎng)租賃與應(yīng)急救援服務(wù)合同
- 水資源管理及保護(hù)服務(wù)合同
- 民營(yíng)醫(yī)院?jiǎn)T工保密合同解析
- 房屋建設(shè)承包合同范本
- 標(biāo)準(zhǔn)實(shí)習(xí)生勞動(dòng)合同版
- 計(jì)算機(jī)硬件設(shè)備維護(hù)合同2025
- 施工場(chǎng)地安全管理與服務(wù)合同書(shū)
- 鋼材銷(xiāo)售代理合同樣本
- Barrett食管醫(yī)學(xué)知識(shí)講解
- DB3302T 1016-2018城市綠地養(yǎng)護(hù)質(zhì)量等級(jí)標(biāo)準(zhǔn)
- 2023年寧波財(cái)經(jīng)學(xué)院?jiǎn)握忻嬖囶}庫(kù)及答案解析
- 數(shù)獨(dú)課件完整版
- 西師大版六年級(jí)數(shù)學(xué)下冊(cè)全冊(cè)知識(shí)點(diǎn)匯總
- 江西2023年分宜九銀村鎮(zhèn)銀行社會(huì)招聘上岸提分題庫(kù)3套【500題帶答案含詳解】
- 2023年知識(shí)產(chǎn)權(quán)保護(hù)公需課試題答案
- JJG 370-2019在線振動(dòng)管液體密度計(jì)
- GB/T 8162-2018結(jié)構(gòu)用無(wú)縫鋼管
- GB/T 36018-2018吹氧金屬軟管
- GB/T 22095-2008鑄鐵平板
評(píng)論
0/150
提交評(píng)論