數(shù)據(jù)庫課程設(shè)計(jì)--醫(yī)務(wù)管理系統(tǒng)_第1頁
已閱讀1頁,還剩28頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p><b>  目 錄 </b></p><p>  第1章 概論·························

2、3;····································3&

3、lt;/p><p>  第2章 需求分析·······························

4、3;·························3</p><p>  2.1 總體需求分析·····

5、83;····································&

6、#183;··········3</p><p>  2.1.1 信息需求····················

7、····································

8、3;·3</p><p>  2.1.2 處理需求·····························

9、83;····························3</p><p>  2.2 數(shù)據(jù)流圖描述··&#

10、183;····································

11、··············4</p><p>  2.3 數(shù)據(jù)字典·················&

12、#183;····································

13、;····4</p><p>  2.3.1 數(shù)據(jù)項(xiàng)···························

14、··································4</p><

15、;p>  數(shù)據(jù)結(jié)構(gòu)··································

16、3;························5</p><p>  數(shù)據(jù)流········

17、;····································

18、83;················7</p><p>  第3章 概念設(shè)計(jì)···············

19、;····································

20、83;····7</p><p>  3.1 確定實(shí)體集、聯(lián)系及屬性·························

21、83;·············7</p><p>  3.2 局部ER模型·················&#

22、183;····································

23、8</p><p>  3.3 全局ER模型·······························

24、;·······················9 </p><p>  第4章 邏輯設(shè)計(jì)········

25、····································

26、3;···········10</p><p>  4.1 ER圖轉(zhuǎn)換為關(guān)系模型··················

27、3;·························10</p><p>  4.2 模式分解·····

28、3;····································&#

29、183;··············11</p><p>  4.3 完整性與用戶子模式設(shè)計(jì)···············&

30、#183;······················11 </p><p>  第5章 物理設(shè)計(jì)········&

31、#183;····································

32、;··········11</p><p>  第6章 數(shù)據(jù)庫實(shí)施及維護(hù)····················&#

33、183;························11</p><p>  6.1 建立數(shù)據(jù)庫結(jié)構(gòu)······

34、;····································

35、83;······12</p><p>  6.2 數(shù)據(jù)加載························

36、83;·······························12</p><p>  6.3 編

37、寫和調(diào)試應(yīng)用程序···································&#

38、183;·······12</p><p>  6.3.1 窗體和報(bào)表的設(shè)計(jì)······················

39、83;·························12</p><p>  6.3.2 功能代碼編寫與程序調(diào)試····&

40、#183;····································

41、;··19</p><p>  第7章 結(jié)束語·····························&

42、#183;····························24</p><p>  參考文獻(xiàn)···

43、····································

44、3;·························26</p><p><b>  概論 </b></p><p>

45、  醫(yī)務(wù)管理系統(tǒng)是當(dāng)今各個(gè)醫(yī)院登記醫(yī)務(wù)人員及病人信息所必須擁有的,一個(gè)良好的醫(yī)務(wù)管理系統(tǒng)可以為一個(gè)醫(yī)務(wù)室提供便利及方便,應(yīng)能使得醫(yī)務(wù)管理工作簡單、高效且須擁有友好的用戶使用界面。出于這個(gè)目的,我本次的數(shù)據(jù)庫課程設(shè)計(jì)的內(nèi)容為設(shè)計(jì)一個(gè)基于小型的醫(yī)務(wù)診所規(guī)模的醫(yī)務(wù)管理系統(tǒng)。這個(gè)系統(tǒng)將選用Access2007為數(shù)據(jù)庫管理系統(tǒng)(DBMS)。主要是面向華中科技大學(xué)校醫(yī)院的工作人員及其病人,為他們提供相關(guān)服務(wù)。數(shù)據(jù)庫已成為現(xiàn)代信息系統(tǒng)的計(jì)算機(jī)系統(tǒng)的基

46、礎(chǔ)與核心部分。數(shù)據(jù)庫設(shè)計(jì)的好壞直接影響著整個(gè)系統(tǒng)的效率和質(zhì)量。然而,由于數(shù)據(jù)庫系統(tǒng)的復(fù)雜性和它與環(huán)境的密切聯(lián)系,數(shù)據(jù)庫設(shè)計(jì)變得比較復(fù)雜和費(fèi)時(shí)。所以,本次數(shù)據(jù)庫技術(shù)課程設(shè)計(jì)應(yīng)有一顆冷靜沉著的心態(tài)。</p><p><b>  需求分析</b></p><p><b>  總體需求分析</b></p><p>  醫(yī)務(wù)管理系統(tǒng)

47、是實(shí)現(xiàn)醫(yī)務(wù)信息存儲(chǔ)、添加、修改及查詢的窗口,它管理的信息包括科室信息、病房信息、病人信息以及醫(yī)生信息。其中不同的群體對(duì)數(shù)據(jù)有著不同的需求和權(quán)限,數(shù)據(jù)庫管理員或醫(yī)務(wù)處相關(guān)人員應(yīng)該擁有所有的管理權(quán)限;醫(yī)生需要了解醫(yī)務(wù)任務(wù)及病人的基本信息,且應(yīng)具有錄入病人病歷號(hào),病人診斷身體狀況信息以及無修改的權(quán)限;病人主要需要知道自己病房號(hào)、床位號(hào)以及主治醫(yī)生且無修改的權(quán)限。因此,該醫(yī)務(wù)管理系統(tǒng)應(yīng)提供不同的類型入口,通過身份驗(yàn)證來決定訪問權(quán)限,從而滿足不同

48、類型的人的需求。</p><p>  具體地說,由于主要面對(duì)醫(yī)生和相應(yīng)的病人,本醫(yī)務(wù)管理系統(tǒng)應(yīng)能方便的滿足以下需求:</p><p>  2.1.1 信息需求</p><p>  對(duì)于病人,信息需求為病人個(gè)人信息、個(gè)人病房信息、病人診治信息;對(duì)于醫(yī)生,信息需求為病人個(gè)人信息、醫(yī)生個(gè)人信息、醫(yī)生所屬科室信息。</p><p>  因此,數(shù)據(jù)庫

49、中應(yīng)該存儲(chǔ)以下數(shù)據(jù):病人和醫(yī)生個(gè)人信息數(shù)據(jù),醫(yī)院各科室信息數(shù)據(jù)以及醫(yī)院安排事務(wù)數(shù)據(jù)。</p><p>  2.1.2 處理需求</p><p>  總的來說,處理需求主要分成以下兩項(xiàng):</p><p> ?。?)各種數(shù)據(jù)的添加和修改;</p><p> ?。?)相關(guān)行數(shù)據(jù)的統(tǒng)計(jì)與查詢;</p><p>  由于不同用

50、戶的訪問權(quán)限不同,所以需要設(shè)計(jì)不同的用戶界面和用戶操作規(guī)則來保證系統(tǒng)的正常運(yùn)行。其實(shí)由于權(quán)限的顯著差別,醫(yī)生和病人的界面不會(huì)有較大的差別。醫(yī)生應(yīng) 能查詢其個(gè)人信息,所有病人的個(gè)人信息以及病人診治身體狀況信息,完整的醫(yī)務(wù)任務(wù)分配信息;病人只能查詢病人個(gè)人信息,病房及病床號(hào)信息以及診治時(shí)間信息,但不能查詢其他人的信息。另外,醫(yī)生可以修改和輸入病人診治時(shí)間以及病人的身體狀況信息。醫(yī)務(wù)管理員</p><p>  可以修

51、改和輸入醫(yī)院安排事務(wù)數(shù)據(jù),而病人可以有輸入和修改個(gè)人信息的權(quán)限。</p><p><b>  數(shù)據(jù)流圖描述</b></p><p>  根據(jù)系統(tǒng)對(duì)象和功能可分成兩步畫出數(shù)據(jù)流圖,其中第一層將整個(gè)系統(tǒng)當(dāng)成一個(gè)整體,且不考慮數(shù)據(jù)存儲(chǔ),并將輸入和輸出分開,如圖1所示:</p><p>  醫(yī)務(wù)安排病人個(gè)人信息查詢</p><p&

52、gt;<b>  已診治信息查詢</b></p><p><b>  所需診治信息</b></p><p>  所需診治信息診治時(shí)間查詢</p><p><b>  病人個(gè)人</b></p><p><b>  信息</b></p><

53、;p><b>  醫(yī)生個(gè)</b></p><p><b>  人信息</b></p><p><b>  醫(yī)生個(gè)人信息查詢</b></p><p><b>  已診治信息</b></p><p><b>  已診治信息</b>&

54、lt;/p><p><b>  醫(yī)務(wù)安排事務(wù)查詢</b></p><p>  圖1 醫(yī)務(wù)管理系統(tǒng)第一層數(shù)據(jù)庫</p><p>  第二層將整個(gè)系統(tǒng)功能細(xì)化且引入數(shù)據(jù)存儲(chǔ),并將輸入和輸出實(shí)體合并為數(shù)據(jù)流圖的處理對(duì)象,如圖2所示(因排版需求,圖2見第4頁) </p><p><b>  數(shù)據(jù)字典</b>

55、</p><p><b>  數(shù)據(jù)項(xiàng)</b></p><p>  表1 數(shù)據(jù)項(xiàng)列表</p><p>  數(shù)據(jù)項(xiàng)名 數(shù)據(jù)類型 長度取值范圍 備注</p><p>  姓名 字符型 20</p><p>  病歷號(hào)字符型1

56、0</p><p>  性別字符型2 {“男”,“女”}</p><p>  政治面貌字符型4{“黨員”,“群眾”,“團(tuán)員”}</p><p>  出生年月日期型8格式為yyyy-ww-zz</p><p>  電話號(hào)碼字符型11</p><p><b>  病房號(hào)字

57、符型3</b></p><p><b>  病床號(hào)字符型2</b></p><p>  診治時(shí)間日期型8格式為yyyy-ww-zz</p><p>  醫(yī)生證號(hào)字符型3</p><p>  身體狀況字符型1{“A”,“B”,“C”,“D”}</p><p>  科

58、室編號(hào)字符型3</p><p>  科室地址字符型40</p><p>  醫(yī)生年齡字符型2[0,150]</p><p><b>  醫(yī)生職稱字符型</b></p><p><b>  8</b></p><p>  科室名稱字符型20</p&g

59、t;<p>  科室電話字符型11</p><p>  2.3.2 數(shù)據(jù)結(jié)構(gòu) </p><p>  表2 數(shù)據(jù)結(jié)構(gòu)列表</p><p><b>  醫(yī)務(wù)編排醫(yī)務(wù)信息</b></p><p>  查詢已診治結(jié)果醫(yī)務(wù)安排信息</p><p>  所需診治信息

60、 診治安排查詢結(jié)果</p><p><b>  診治信息</b></p><p><b>  病人個(gè)</b></p><p><b>  人信息</b></p><p>  病人個(gè)人信息查詢個(gè)人注冊(cè)信息</p><p><b>  醫(yī)生個(gè)人

61、信息查詢</b></p><p><b>  個(gè)人基本信息</b></p><p><b>  醫(yī)生個(gè)人信息</b></p><p><b>  已診治信息查詢</b></p><p>  已診治信息已診治信息</p><p><b&

62、gt;  已診治信息</b></p><p>  圖2 醫(yī)務(wù)管理系統(tǒng)第二層數(shù)據(jù)流圖</p><p>  2.3.3 數(shù)據(jù)流</p><p>  數(shù)據(jù)流名:已診治信息結(jié)果</p><p>  說明: 提供病人已被診治后的身體狀況信息,診治費(fèi)用,診治項(xiàng)目,診治醫(yī)生以及診治所花時(shí)間</p><p>

63、;  來源: 診治信息管理子系統(tǒng)</p><p><b>  去向: 病人</b></p><p>  數(shù)據(jù)結(jié)構(gòu):——病歷號(hào)</p><p><b>  ——所需診治項(xiàng)目</b></p><p><b>  ——診治費(fèi)用</b></p><p&g

64、t;<b>  ——診治醫(yī)生、</b></p><p>  ——已診治后的身體狀況等級(jí)</p><p>  數(shù)據(jù)流名:醫(yī)務(wù)安排診治信息</p><p>  說明: 提供給所有用戶有關(guān)醫(yī)務(wù)安排的信息</p><p>  來源: 醫(yī)務(wù)管理子系統(tǒng)</p><p>  去向: 所有用戶&

65、lt;/p><p>  數(shù)據(jù)結(jié)構(gòu):——所需診治項(xiàng)目</p><p><b>  ——診治醫(yī)生</b></p><p><b>  ——診治時(shí)間</b></p><p><b>  ——診治地點(diǎn)</b></p><p>  ——診治前的身體狀況等級(jí)</p

66、><p>  因?yàn)閿?shù)據(jù)庫課程設(shè)計(jì)報(bào)告(參考材料)中對(duì)教學(xué)管理的數(shù)據(jù)字典都沒有含有數(shù)據(jù)存儲(chǔ)及處理過程的相關(guān)描述,在加上這兩個(gè)過程與數(shù)據(jù)流的描述相差無幾,故在此不再贅述。</p><p><b>  3 概念設(shè)計(jì)</b></p><p>  3.1 確定實(shí)體集、聯(lián)系及屬性</p><p>  結(jié)合數(shù)字字典可得實(shí)體、聯(lián)系及

67、其屬性如下:</p><p>  病人(姓名,性別,年齡,病歷號(hào),政治面貌,診斷,主治醫(yī)生,病房號(hào))</p><p>  醫(yī)生(姓名,性別,年齡,工作證號(hào),所屬科室編號(hào),職稱)</p><p>  病房(病房號(hào),病床號(hào),所屬科室號(hào))</p><p>  科室(科室名,科室編號(hào),科室地址,科電話)</p><p>  住

68、宿(病歷號(hào),病床號(hào),病房號(hào))</p><p>  屬于(病房號(hào),科室編號(hào))</p><p>  工作(工作證號(hào),科室編號(hào))</p><p>  主管(病歷號(hào),工作證號(hào),診治時(shí)間,身體狀況)</p><p>  對(duì)于實(shí)體之間的聯(lián)系,考慮到一個(gè)科室有多個(gè)醫(yī)生,一個(gè)病房只能屬于一個(gè)科室,一個(gè)醫(yī)生只屬于一個(gè)科室,但可以負(fù)責(zé)多個(gè)病人的診治,一個(gè)病人的主

69、治醫(yī)生只能有一個(gè)。因此,住宿的類型為1:n,屬于的類型為1:n,工作的類型為1:n,主管的類型為1:n。根據(jù)以</p><p>  分析,可以畫出如下所示的ER圖。</p><p><b>  局部ER模型</b></p><p>  以屬于、住宿、主管和工作4個(gè)聯(lián)系作為基礎(chǔ),可畫出4個(gè)局部ER圖。</p><p>&l

70、t;b>  N 1</b></p><p>  圖3 局部ER圖——主管</p><p><b>  N1</b></p><p>  圖4 局部ER圖——住宿</p><p><b>  N1</b></p><p>  圖5 局部ER圖

71、——工作</p><p><b>  N1</b></p><p>  圖6 局部ER圖——屬于</p><p>  3.3 全局ER模型</p><p>  由以上局部模型很容易確定4種之間的公共實(shí)體分別為病房、病人、醫(yī)生、科室。所以合并公共實(shí)體即可得到全局ER圖,且無冗余和沖突。如下圖所示,</p>

72、;<p><b>  N1</b></p><p><b>  N</b></p><p><b>  N</b></p><p><b>  N</b></p><p><b>  1</b></p>

73、<p>  圖7 全局ER圖</p><p><b>  4 邏輯設(shè)計(jì)</b></p><p>  4.1 ER圖轉(zhuǎn)換為關(guān)系模式</p><p>  根據(jù)ER圖,應(yīng)用以下規(guī)則將ER模式轉(zhuǎn)化為關(guān)系模式:</p><p> ?。?)、實(shí)體之間的轉(zhuǎn)換:將每個(gè)試題類型轉(zhuǎn)換為一個(gè)關(guān)系模式,實(shí)體的屬性即為關(guān)系模式

74、的的屬性,實(shí)體標(biāo)識(shí)符即為關(guān)系模式的鍵。</p><p> ?。?)、聯(lián)系類型的轉(zhuǎn)換:將聯(lián)系為1:N和M:N的聯(lián)系類型轉(zhuǎn)換為單獨(dú)的關(guān)系模式,其鍵為兩端實(shí)體鍵的組合。</p><p>  這樣,可得關(guān)系模式如下:</p><p>  病人(病歷號(hào),姓名,性別,政治面貌,年齡)</p><p>  醫(yī)生(工作證號(hào),姓名,性別,年齡,職稱)</

75、p><p>  病房(病房號(hào),病床號(hào))</p><p>  科室(科室編號(hào),科電話,科室地址,科室名稱)</p><p>  工作(工作證號(hào),科室編號(hào))</p><p>  住宿(病房號(hào),病歷號(hào))</p><p>  主管(工作證號(hào),病歷號(hào),身體狀況,診治時(shí)間)</p><p>  屬于(病房號(hào),科

76、室編號(hào))</p><p><b>  4.2 模式分解</b></p><p>  為了得到以滿足第三范式(3NF)的關(guān)系模型,首先要找出上述關(guān)系模式的函數(shù)依賴(DF)。本數(shù)據(jù)表結(jié)構(gòu)比較簡單,所有函數(shù)依賴都集中在非主屬性和主鍵之間,不存在局部依賴和傳遞依賴,故可以直接判斷以上所得關(guān)系模式滿足3NF。</p><p>  4.3 完整性與用戶

77、子模式設(shè)計(jì)</p><p>  為了滿足醫(yī)生和病人的不同要求,符合他們對(duì)數(shù)據(jù)庫操作的不同權(quán)限,并保證數(shù)據(jù)庫的安全性,對(duì)他們所對(duì)應(yīng)的視圖要進(jìn)行有區(qū)別的設(shè)計(jì)。</p><p>  醫(yī)生視圖主要包括以下功能板塊:</p><p> ?。?)、通過輸入各種不同條件,來查詢病人的個(gè)人信息和病人的身體狀況,所有的病人以上信息對(duì)醫(yī)生都是公開的,但醫(yī)生無法對(duì)其信息進(jìn)行任何的修改;&

78、lt;/p><p> ?。?)、查看自己的醫(yī)務(wù)安排,診治對(duì)象,診治地點(diǎn),診治時(shí)間等等;</p><p> ?。?)、查看和更新自己的個(gè)人信息以及修改自己的登錄系統(tǒng)密碼,其中醫(yī)生工作證號(hào)不能有醫(yī)生本人自由的更改;</p><p> ?。?)、錄入其診治病人的身體狀況,恢復(fù)注意事項(xiàng)等等。</p><p>  病人視圖主要包括以下功能板塊:</p

79、><p> ?。?)、查看和更新自己的個(gè)人信息以及修改登錄密碼,其中病歷號(hào)不能被修改;</p><p> ?。?)、查看自己的診治安排以及自己的身體狀況;</p><p> ?。?)、輸入自己所需的診治項(xiàng)目。</p><p><b>  5 物理設(shè)計(jì)</b></p><p>  由于不清楚該醫(yī)院的

80、具體資源,且本數(shù)據(jù)庫數(shù)據(jù)量較少,物理設(shè)計(jì)不是主要考慮問題,故在此省略。</p><p>  6 數(shù)據(jù)庫實(shí)施與維護(hù)</p><p>  6.1 建立數(shù)據(jù)結(jié)構(gòu)</p><p>  新建access數(shù)據(jù)庫文件,依據(jù)邏輯設(shè)計(jì)所得關(guān)系模式在其中創(chuàng)建病人、醫(yī)生、科室、屬于、病房、住宿、工作、主管8個(gè)表,字段屬性和完整性規(guī)則以數(shù)據(jù)字典為依據(jù),并且通過主鍵建立表之間的聯(lián)系,其

81、中關(guān)系模型參考ER圖中聯(lián)系類型。</p><p><b>  6.2 數(shù)據(jù)加載</b></p><p>  由于未能收集到校醫(yī)院的相關(guān)信息,且考慮到將已經(jīng)準(zhǔn)備好的數(shù)據(jù)輸入數(shù)據(jù)的加載主要目的是為應(yīng)用程序的編寫提供方便以及對(duì)系統(tǒng)的功能和性能進(jìn)行試驗(yàn),故我輸入了一些虛擬的數(shù)據(jù),具體的虛擬規(guī)則和數(shù)據(jù)可參見數(shù)據(jù)表到基本表中。</p><p>  6.3

82、 編寫和調(diào)試應(yīng)用程序</p><p>  6.3.1 窗體和報(bào)表的設(shè)計(jì)</p><p>  鑒于Access 數(shù)據(jù)庫系統(tǒng)強(qiáng)大的窗體和報(bào)表等可視化設(shè)計(jì)功能,在編寫相關(guān)功能代碼前</p><p>  先進(jìn)行窗體和報(bào)表的設(shè)計(jì)。其中窗體又分為作為人機(jī)交互界面的用戶界面窗體和作為數(shù)據(jù)呈</p><p>  現(xiàn)方式的數(shù)據(jù)窗體。前者涉及到系統(tǒng)的整體功能

83、和服務(wù)質(zhì)量,故需最先設(shè)計(jì)出來;后者涉及</p><p>  到數(shù)據(jù)的查詢和表現(xiàn),為設(shè)計(jì)方便,需先設(shè)計(jì)出與之相關(guān)的查詢。報(bào)表則是數(shù)據(jù)呈現(xiàn)的主要</p><p>  方式,同樣應(yīng)先設(shè)計(jì)出相關(guān)查詢,并實(shí)現(xiàn)合理的統(tǒng)計(jì)功能。</p><p>  首先設(shè)計(jì)出不同用戶的用戶界面,如下圖所示:該窗體為醫(yī)生和病人進(jìn)入醫(yī)務(wù)管理系統(tǒng)的接口,該界面有兩個(gè)用戶登錄,避免了設(shè)計(jì)兩個(gè)登錄窗口的麻

84、煩性,同一個(gè)用戶窗體的設(shè)計(jì)節(jié)省了計(jì)算機(jī)的內(nèi)存。</p><p>  如下圖所示,為用戶登錄界面。該模式主要實(shí)現(xiàn)用戶登錄功能,分為醫(yī)生和病人兩個(gè)子界面。</p><p>  圖8 登陸界面窗體</p><p>  圖9 醫(yī)生界面窗體——視圖1</p><p>  該模式為醫(yī)生界面窗體,該模式主要實(shí)現(xiàn)病人身體狀況以及個(gè)人信息的查詢,并顯示醫(yī)生

85、個(gè)人的診治安排功能。</p><p>  圖10 醫(yī)生界面窗體——視圖2</p><p>  該模式為醫(yī)生界面窗體,該模式主要實(shí)現(xiàn)教師個(gè)人信息和登錄密碼的查詢和修改功能。</p><p>  圖11 醫(yī)生界面窗體——視圖3</p><p>  該模式為醫(yī)生界面窗體,該模式實(shí)現(xiàn)登錄醫(yī)生所診治的學(xué)生的診治項(xiàng)目的身體狀況的錄入。</p&g

86、t;<p>  圖12 病人界面窗體——視圖1</p><p>  該模式為病人界面窗體,該模式實(shí)現(xiàn)了病人個(gè)人信息維護(hù)以及個(gè)人身體狀況和診治項(xiàng)目的查詢功能。</p><p>  圖13 病人界面窗體——視圖2</p><p>  該模式為病人界面窗體,該模式實(shí)現(xiàn)病人對(duì)診治項(xiàng)目的選擇功能。</p><p>  據(jù)此,可設(shè)計(jì)出如

87、下數(shù)據(jù)窗體和報(bào)表</p><p>  診斷查詢(診治項(xiàng)目,病人姓名,病歷號(hào),醫(yī)生姓名,工作證號(hào)) </p><p>  診治時(shí)間查詢(診治項(xiàng)目,診治時(shí)間,工作證號(hào),醫(yī)生姓名,病歷號(hào),病人姓名) </p><p>  選修課程(身體狀況,診治項(xiàng)目,病人姓名,病歷號(hào),工作證號(hào),醫(yī)生姓名)</p><p>  圖14 病人個(gè)人信息窗體</p

88、><p>  圖15 身體狀況查詢報(bào)表</p><p>  圖16 診斷查詢報(bào)表</p><p>  另外,還有嵌入用戶界面窗體中的子窗體,如診斷查詢子窗體,醫(yī)生查詢子窗體以及病人查詢子窗體。由于設(shè)計(jì)簡單,在用戶界面窗體設(shè)計(jì)時(shí)可直接插入(見用戶界面窗體),故子窗體在此不再單獨(dú)列出。</p><p>  6.3.2 功能代碼編寫與程序調(diào)試&l

89、t;/p><p>  窗體和報(bào)表的設(shè)計(jì)大大的減少了編寫代碼的難度和負(fù)擔(dān),但是要更為完整和復(fù)雜的功能。相關(guān)的代碼仍然是不可避免的。下面以圖9的醫(yī)生界面窗體所涉及的相關(guān)代碼進(jìn)行詳細(xì)的說明。</p><p>  對(duì)于如圖9所示的醫(yī)生界面,其上半部分顯示的是固定信息工作證號(hào)、姓名、診治項(xiàng)目是通過該窗體的From_Load事件自動(dòng)添加上去的。再加上文本框是被鎖定的,它的內(nèi)容是不可能被修改的。工作證號(hào)是引

90、用登陸界面的登錄醫(yī)生工作證號(hào),其余兩條信息是通過調(diào)用DLookUp()函數(shù)來在基本表中查找,以姓名舉例,調(diào)用格式為:</p><p>  DLookUp(”[姓名]”, “醫(yī)生”,”[工作證號(hào)]=”&””&Me.Text2&””)</p><p>  將函數(shù)返回值賦值給相應(yīng)的文本框,在將該文本框Locked屬性設(shè)置為True即可。</p><p&

91、gt;  對(duì)于醫(yī)生窗體的下半部分窗體主要是實(shí)現(xiàn)三個(gè)部分的不同功能,其分別為病人個(gè)人信息的管理和病人個(gè)人診治信息的選擇,醫(yī)生個(gè)人信息的維護(hù)以及醫(yī)生對(duì)病人身體狀況信息的輸入與更新。首先設(shè)置出醫(yī)生下半窗體進(jìn)行分頁的醫(yī)生界面,醫(yī)生通過自身的需求選擇性的進(jìn)入其中一個(gè)頁面獲取、輸入或更改所需要的信息。所以醫(yī)生窗體的代碼設(shè)計(jì)成了如下所示:</p><p>  (1)此段為醫(yī)生的個(gè)人信息:</p><p>

92、;  Private Sub Form_Current()</p><p>  '初始化醫(yī)生界面的個(gè)人信息</p><p>  Me.Text2 = Forms![登錄界面]![工作證號(hào)]</p><p>  '根據(jù)登錄工作證號(hào)從醫(yī)生數(shù)據(jù)表中查找其他信息并顯示</p><p>  Me.Text5 = DLookup(&quo

93、t;[醫(yī)生姓名]", "醫(yī)生", "[工作證號(hào)]=" & "'" & Me.Text2 & "'")</p><p>  Me.Text8 = DLookup("[診治項(xiàng)目]", "診斷", "[工作證號(hào)]=" & &

94、quot;'" & Me.Text2 & "'")</p><p>  Me.Text2.Locked = True '將不能修改的工作證號(hào)文本框鎖定</p><p>  Me.Text5.Locked = True</p><p>  Me.Text8.Locked = True</p&

95、gt;<p>  Me.醫(yī)生姓名 = Me.Text2</p><p>  Me.性別 = DLookup("[性別]", "醫(yī)生", "[工作證號(hào)]=" & "'" & Me.Text2 & "'")</p><p>  Me.職稱 =

96、 DLookup("[職稱]", "醫(yī)生", "[工作證號(hào)]=" & "'" & Me.Text2 & "'")</p><p>  Me.年齡 = DLookup("[年齡]", "醫(yī)生", "[工作證號(hào)]=" &

97、amp; "'" & Me.Text2 & "'")</p><p>  Me.登錄密碼 = DLookup("[登錄密碼]", "醫(yī)生", "[工作證號(hào)]=" & "'" & Me.Text2 & "'"

98、;)</p><p><b>  End Sub</b></p><p>  Private Sub 保存信息_Click()</p><p>  '將醫(yī)生個(gè)人信息的更改保存到醫(yī)生數(shù)據(jù)表</p><p>  Dim sql As String</p><p>  '定義并執(zhí)行更新查

99、詢</p><p>  sql = "update 醫(yī)生 set 姓名 = " + """" + Nz(Me.姓名) + """,性別=" + """" + Nz(Me.性別) + """,職稱=" + ""&quo

100、t;" + Nz(Me.職稱) + """," & _</p><p>  " 年齡= " + """" + Nz(Me.年齡) + """,登錄密碼=" + """" + Nz(Me.登錄密碼) + "&q

101、uot;" where 工作證號(hào) = " + """" + Me.Text2 + """;"</p><p>  CurrentProject.Connection.Execute sql</p><p>  MsgBox "信息修改成功!請(qǐng)務(wù)必記好密碼!", vbOKO

102、nly, "提示"</p><p><b>  End Sub</b></p><p> ?。?)此段為醫(yī)生將病人的身體狀況信息的錄入:</p><p>  Private Sub 確定_Click()</p><p>  '將當(dāng)前登錄醫(yī)生所輸入的其選擇該診治項(xiàng)目的病人身體狀況保存到身體狀況數(shù)

103、據(jù)表中</p><p>  Dim sql As String</p><p>  '定義并執(zhí)行更新查詢</p><p>  If IsNull(DLookup("[病歷號(hào)]", "病人", "[病歷號(hào)]=""" + Me.Text63 + """

104、")) = False Then</p><p>  sql = "update 診斷 set 身體狀況=""" + Me.身體狀況 + """ where 病歷號(hào)=""" + Me.Text63 + """ and 診治項(xiàng)目=""" + Me

105、.Text2 + """;"</p><p>  CurrentProject.Connection.Execute sql</p><p>  Me.Requery</p><p>  Me.Text63.SetFocus</p><p><b>  Else</b></p

106、><p>  MsgBox "病歷號(hào)錯(cuò)誤,請(qǐng)重新輸入!", vbOKOnly, "提示"</p><p>  Me.Text63.SetFocus</p><p><b>  End If</b></p><p><b>  End Sub</b></p&g

107、t;<p>  Private Sub 退出登錄_Click()</p><p>  '退出醫(yī)生界面并重新進(jìn)入登錄界面</p><p>  DoCmd.Close</p><p>  Forms![登錄界面].Visible = True</p><p>  '將登錄界面信息清空</p><p

108、>  Forms![登錄界面]![工作證號(hào)] = Null</p><p>  Forms![登錄界面]![醫(yī)生密碼] = Null</p><p><b>  End Sub</b></p><p>  Private Sub 病人身體狀況信息_Click()</p><p>  '按給定條件查找病人身體

109、狀況信息</p><p>  Dim sql As String</p><p>  Dim s(5) As String</p><p>  Dim i, j As Integer</p><p>  '給字符串變量賦初值,避免運(yùn)算中出現(xiàn)NULL值</p><p><b>  sql = "

110、;"</b></p><p>  For i = 0 To 4</p><p><b>  s(i) = ""</b></p><p><b>  Next i</b></p><p>  '將各個(gè)文本框所輸入的查詢條件分別賦值給數(shù)組元素</p

111、><p>  If IsNull(Me.病歷號(hào)) = False Then</p><p>  s(0) = "身體狀況查詢.病歷號(hào) = """ + Me.病歷號(hào) + """ "</p><p><b>  End If</b></p><p>

112、  If IsNull(Me.病人姓名) = False Then</p><p>  s(1) = "身體狀況查詢.病人姓名 = """ + Me.病人姓名 + """ "</p><p><b>  End If</b></p><p>  If IsNull(

113、Me.工作證號(hào)) = False Then</p><p>  s(2) = "身體狀況查詢.工作證號(hào) = """ + Me.工作證號(hào) + """ "</p><p><b>  End If</b></p><p>  If IsNull(Me.醫(yī)生姓名) = F

114、alse Then</p><p>  s(3) = "身體狀況查詢.醫(yī)生姓名 = """ + Me.醫(yī)生姓名 + """ "</p><p><b>  End If</b></p><p>  If IsNull(Me.診治項(xiàng)目) = False Then<

115、;/p><p>  s(4) = "身體狀況查詢.診治項(xiàng)目 = """ + Me.診治項(xiàng)目 + """ "</p><p><b>  End If</b></p><p>  '在除第一個(gè)非空條件的其他非空條件前加上" and "字符串&l

116、t;/p><p>  For i = 0 To 4</p><p>  If s(i) <> "" Then</p><p>  For j = i + 1 To 4</p><p>  If s(j) <> "" Then</p><p>  s(j) =

117、" and " + s(j)</p><p><b>  End If</b></p><p><b>  Next j</b></p><p><b>  Exit For</b></p><p><b>  End If</b>&l

118、t;/p><p><b>  Next i</b></p><p>  '將各個(gè)條件合起來賦值給字符串變量sql,作為打開報(bào)表的篩選條件</p><p>  For i = 0 To 4</p><p>  sql = sql + s(i)</p><p><b>  Next i&

119、lt;/b></p><p>  '按條件打開身體狀況查詢報(bào)表</p><p>  DoCmd.OpenReport "身體狀況查詢", acViewReport, , sql</p><p><b>  End Sub</b></p><p> ?。?)此段為病人信息的維護(hù):</

120、p><p>  Private Sub 病人個(gè)人信息_Click()</p><p>  '按給定條件查找病人個(gè)人信息</p><p>  Dim sql As String</p><p>  Dim s(2) As String</p><p>  Dim i, j As Integer</p>

121、<p>  '給字符串變量賦初值,避免運(yùn)算中出現(xiàn)NULL值</p><p><b>  sql = ""</b></p><p>  For i = 0 To 1</p><p><b>  s(i) = ""</b></p><p><

122、;b>  Next i</b></p><p>  '將各個(gè)文本框所輸入的查詢條件分別賦值給數(shù)組元素</p><p>  If IsNull(Me.病歷號(hào)) = False Then</p><p>  s(0) = "病人.病歷號(hào) = """ + Me.病歷號(hào) + """

123、; "</p><p><b>  End If</b></p><p>  If IsNull(Me.病人姓名) = False Then</p><p>  s(1) = "病人.姓名 = """ + Me.病人姓名 + """ "</p>

124、<p><b>  End If</b></p><p>  '在除第一個(gè)非空條件的其他非空條件前加上" and "字符串</p><p>  For i = 0 To 1</p><p>  If s(i) <> "" Then</p><p>

125、  For j = i + 1 To 1</p><p>  If s(j) <> "" Then</p><p>  s(j) = " and " + s(j)</p><p><b>  End If</b></p><p><b>  Next j<

126、;/b></p><p><b>  Exit For</b></p><p><b>  End If</b></p><p><b>  Next i</b></p><p>  '將各個(gè)條件合起來賦值給字符串變量sql,作為打開報(bào)表的篩選條件</p&g

127、t;<p>  For i = 0 To 1</p><p>  sql = sql + s(i)</p><p><b>  Next i</b></p><p>  '按條件打開身體狀況查詢報(bào)表</p><p>  DoCmd.OpenForm "病人 查詢", , , sq

128、l</p><p><b>  End Sub</b></p><p>  比如在病人信息維護(hù)的編寫代碼中,多次使用了For循環(huán)語句和If…Then條件語句,首先定義兩個(gè)字符串并對(duì)他們賦予初始值,然后將各個(gè)文本框所輸入的查詢條件分別賦值給數(shù)組元素 ,通過If條件語句依次判斷每個(gè)文本框中是否為空,如果為空,則相應(yīng)的字符串維持原值,否則則將條件賦予給相應(yīng)字符串變量,這樣就

129、將用戶所輸入的四個(gè)條件分別存儲(chǔ)在了字符串?dāng)?shù)組的四個(gè)變量當(dāng)中。最后調(diào)用DoCmd對(duì)象的OpenForm的方法來打開已設(shè)計(jì)好的“身體狀況查詢”報(bào)表。</p><p>  上述類似的用法在醫(yī)生將病人的身體狀況信息的錄入部分也有應(yīng)用,這個(gè)部分最后是調(diào)用DoCmd對(duì)象的OpenReport的方法來打開已設(shè)計(jì)好的“身體狀況查詢”報(bào)表。這樣,當(dāng)在醫(yī)生窗體之中,點(diǎn)擊診治信息當(dāng)中病人信息管理中的病人診治信息或者是醫(yī)生身體狀況信息的

130、錄入中的病人查詢,這樣即可以執(zhí)行事件過程中的編寫代碼,即可直接進(jìn)入到“身體狀況查詢”報(bào)表中,獲取自身所需的信息,得到滿足條件的結(jié)果。</p><p>  對(duì)于病人窗體中的代碼較多且繁瑣,在此就不再多余的述說。</p><p>  兩者之中的視圖中或多或少的均含有子窗體,如圖13中病人界面窗體——視圖2中的診治頁中所含有的診治項(xiàng)目列表診斷查詢子窗體,子窗體的插入并沒有太多的技術(shù)含量,只需要在

131、插入子窗體向?qū)е兄付ㄋ璧淖侄?,然后再屬性表中設(shè)置主/子窗體的鏈接字段即可。所以無需贅述。</p><p><b>  7 結(jié)束語</b></p><p>  這次做這個(gè)數(shù)據(jù)庫醫(yī)務(wù)管理管理系統(tǒng)課程設(shè)計(jì)所用的時(shí)間都是比較散的,基本上每天都有做一點(diǎn),但是每天花的時(shí)間都不是非常的多。所以這次的課程設(shè)計(jì)作業(yè)做的歷時(shí)較長,直到快開學(xué)的的前幾天才能夠完成。</p>

132、<p>  在剛開始做的時(shí)候,根本對(duì)這個(gè)課設(shè)沒有什么概念,但是看過數(shù)據(jù)庫課程設(shè)計(jì)(參考報(bào)告)之后,我才知道應(yīng)該怎樣開始。根據(jù)下發(fā)的教務(wù)管理系統(tǒng)參考材料以及數(shù)據(jù)庫技術(shù)及應(yīng)用課程設(shè)計(jì)規(guī)范化相關(guān)材料,我做完了概論以及需求分析當(dāng)中的總體需求分析。但是下一步需求分析當(dāng)中的數(shù)據(jù)流圖描述和數(shù)據(jù)字典就讓我遇到了難處。我剛開始甚至不知道數(shù)據(jù)流圖描述以及數(shù)據(jù)字典是什么概念,通過查閱才知道數(shù)據(jù)流圖(Data Flow Diagram,簡記作DF

133、D)是從“數(shù)據(jù)”和“對(duì)數(shù)據(jù)的加工”兩方面表達(dá)數(shù)據(jù)處理系統(tǒng)工作過程的一種圖形表示方法,具有直觀、易于被用戶和軟件人員雙方理解的特點(diǎn)的一種表達(dá)系統(tǒng)功能的描述方式。它是在分析用戶活動(dòng)所涉及的數(shù)據(jù)的基礎(chǔ)上所產(chǎn)生的,在本數(shù)據(jù)庫醫(yī)務(wù)管理系統(tǒng)中,即主要是分析醫(yī)生和病人活動(dòng)所涉及的數(shù)據(jù),比如說醫(yī)生個(gè)人信息,醫(yī)生與醫(yī)務(wù)管理系統(tǒng)的數(shù)據(jù)關(guān)系,病人個(gè)人信息,病人與醫(yī)務(wù)管理系統(tǒng)的數(shù)據(jù)關(guān)系等等。而數(shù)據(jù)字典主要是在分析系統(tǒng)數(shù)據(jù)的基礎(chǔ)上所產(chǎn)生的,如果只含有數(shù)據(jù)流圖并不

134、能構(gòu)成需求說明書,它并沒有說明每個(gè)系統(tǒng)部分中的含義。而數(shù)據(jù)字典提供對(duì)數(shù)據(jù)庫時(shí)間描述的集中管理。它主要包括數(shù)據(jù)項(xiàng)、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)流、數(shù)據(jù)存儲(chǔ)和處理過</p><p>  完成需求之后,就來到了概念設(shè)計(jì)。在這個(gè)部分當(dāng)中主要包含確定實(shí)體集、聯(lián)系及屬性,局部ER圖和全局ER圖。因?yàn)榻?jīng)過一大半學(xué)期的數(shù)據(jù)庫學(xué)習(xí),老師對(duì)全局ER圖和局部ER圖的教授得較多,因此我對(duì)這個(gè)部分的知識(shí)以及做法比較熟悉。這個(gè)部分主要是在畫圖方面,剛開始

135、我想用Microsoft Office Visio 2007這個(gè)畫圖軟件來畫的,但最終因?yàn)槊髁撕镁貌粫?huì)就直接用了word自帶的畫圖工具畫的??傊?,概念設(shè)計(jì)這個(gè)環(huán)節(jié)相對(duì)整體來說是比較容易的。接下來就到了邏輯設(shè)計(jì)部分,這個(gè)部分的將全局ER圖轉(zhuǎn)化為關(guān)系模型并不難,只要上課聽講了的基本上都會(huì),完整性以及范式的分解也是如此。接下的物理設(shè)計(jì)就從略了。</p><p>  這個(gè)部分是應(yīng)用Microsoft Office Ac

136、cess 2007建立數(shù)據(jù)庫的部分了。因?yàn)橛猩蠈W(xué)期進(jìn)行數(shù)據(jù)庫上機(jī)實(shí)踐的經(jīng)驗(yàn),所以在建立表和應(yīng)用SQL語言建立查詢都沒有什么太大的問題。但是到了設(shè)計(jì)窗體和報(bào)表就有很大的問題了,首先窗體和報(bào)表對(duì)于我來說全部都是全新的東西,全部都要靠自己慢慢的學(xué)習(xí)。我選擇的是剛開始就不要忙著進(jìn)行學(xué)習(xí)寫相關(guān)的代碼,先學(xué)會(huì)設(shè)計(jì)有關(guān)窗體和報(bào)表界面的設(shè)計(jì)。通過查詢Visual Basic程序設(shè)計(jì)教程,我認(rèn)識(shí)了有關(guān)的控件:文本框(Text)、標(biāo)簽(Label)命令按鈕

137、(CommandButton)、子窗體/子報(bào)表按鈕、列表框(List Box)、組合框(ComboBox)、選項(xiàng)按鈕以及選項(xiàng)卡控件等等,還知道了這些按鈕的相關(guān)功能和類型,如文本框是一個(gè)文本編輯區(qū)域,用戶可以在該區(qū)域輸入、編輯、修改和顯示正文內(nèi)容,即用戶可以創(chuàng)建一個(gè)文本編輯器。但是對(duì)于標(biāo)簽就不行了,它是不允許其內(nèi)容被更改的,他在設(shè)計(jì)的時(shí)候必須要有內(nèi)容。而文本框之中的內(nèi)容是可有可無的。再設(shè)計(jì)報(bào)表的時(shí)候由于出現(xiàn)的設(shè)計(jì)界面與設(shè)計(jì)窗體的時(shí)候的設(shè)計(jì)

138、界面都一樣,就讓人感覺有一點(diǎn)無從下手了。它需要點(diǎn)擊“分組和排序按鈕”</p><p>  接下來就到了最難的部分——寫相關(guān)的代碼了。由于我是在Access 2007當(dāng)中建立的數(shù)據(jù)庫,我就直接在Access當(dāng)中建立了工程,即事件過程代碼的編寫直接在與Access 2007相關(guān)聯(lián)的代碼窗口中進(jìn)行編寫的。雖然報(bào)表和窗體的設(shè)計(jì)大大地減輕了編寫代碼的負(fù)擔(dān),但是編寫代碼的困難性仍然比想象中的復(fù)雜很多。我在圖書館中查了不少的資

139、料,甚至買了幾本VB的書都難以弄清。我至今都不太知道有些代碼的編寫,只知道一些較為簡單的代碼編寫,比如有關(guān)If條件語句的編寫和For循環(huán)語句的編寫,這些還是源于之前有C++的基礎(chǔ)才弄明白的。VB事件過程的形式:Sub 對(duì)象名_事件名([參數(shù)列表])</p><p>  … 事件過程代碼</p><p>  End Sub ,其中一些控件的編寫就可以靠這種

140、形式進(jìn)行編寫。但這只是比較簡單的部分。還有一些事件處理代碼,及那些用來解決相關(guān)算法、指定處理事件的程序就比較難了。運(yùn)行時(shí)它還要注意相關(guān)代碼所編寫的環(huán)境。所以在編寫代碼的環(huán)節(jié)當(dāng)中,我請(qǐng)教過不少的人,也借鑒了不少下發(fā)的教學(xué)管理數(shù)據(jù)庫中所編寫的代碼。才勉強(qiáng)的將這部分做過去??傊?,我覺得這次的課設(shè)主要的困難有很大一部分就在此處。這次課設(shè)的代碼編寫還用到了嵌入式SQL語句的執(zhí)行與應(yīng)用,但這個(gè)部分上課時(shí)卻完全沒有涉及,所以這個(gè)方面也十分讓人苦惱,也

141、需要自己進(jìn)行多次查書。</p><p>  這次的課程設(shè)計(jì)讓我苦惱了很多,但是也讓我收獲了不少。這其中涉及到很多數(shù)據(jù)庫和VB當(dāng)中我所不知道的知識(shí),許多東西都需要自己慢慢的摸索,自己慢慢的查書弄懂許多。其中包括表、查詢、窗體、報(bào)表(有時(shí)候還會(huì)涉及一點(diǎn)宏的設(shè)計(jì))、VB等等從來沒有學(xué)過的東西。但是這次的課程設(shè)計(jì)是我第一次進(jìn)行的一次課程設(shè)計(jì)。雖然,問過不少人,結(jié)果也不是相當(dāng)?shù)暮谩5疫€是有一點(diǎn)小小的滿足感。這次課程設(shè)計(jì)確

142、實(shí)是對(duì)我的一次很好的鍛煉。它教會(huì)我更多的是知識(shí)以外的東西,做這份課設(shè)要有一顆勇于迎接困難,接受挑戰(zhàn)的心態(tài),還要一種特殊的自信心以及堅(jiān)持的毅力。沒有這些,這次課程設(shè)計(jì)肯定是一個(gè)非常艱苦的過程。由此也告訴了我,任何事都不是一蹴而就的,我需要堅(jiān)定的對(duì)待每一件看似簡單實(shí)卻不然的事情。</p><p><b>  參考文獻(xiàn):</b></p><p>  董建全、丁寶康.數(shù)據(jù)庫實(shí)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲(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)論