版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quá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ù)項···························
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è)計···············
19、;····································
20、83;····7</p><p> 3.1 確定實體集、聯(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è)計········
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è)計···············&
30、#183;······················11 </p><p> 第5章 物理設(shè)計········&
31、#183;····································
32、;··········11</p><p> 第6章 數(shù)據(jù)庫實施及維護····················
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 窗體和報表的設(shè)計······················
39、83;·························12</p><p> 6.3.2 功能代碼編寫與程序調(diào)試····&
40、#183;····································
41、;··19</p><p> 第7章 結(jié)束語·····························&
42、#183;····························24</p><p> 參考文獻···
43、····································
44、3;·························26</p><p><b> 概論 </b></p><p>
45、 醫(yī)務(wù)管理系統(tǒng)是當今各個醫(yī)院登記醫(yī)務(wù)人員及病人信息所必須擁有的,一個良好的醫(yī)務(wù)管理系統(tǒng)可以為一個醫(yī)務(wù)室提供便利及方便,應(yīng)能使得醫(yī)務(wù)管理工作簡單、高效且須擁有友好的用戶使用界面。出于這個目的,我本次的數(shù)據(jù)庫課程設(shè)計的內(nèi)容為設(shè)計一個基于小型的醫(yī)務(wù)診所規(guī)模的醫(yī)務(wù)管理系統(tǒng)。這個系統(tǒng)將選用Access2007為數(shù)據(jù)庫管理系統(tǒng)(DBMS)。主要是面向華中科技大學校醫(yī)院的工作人員及其病人,為他們提供相關(guān)服務(wù)。數(shù)據(jù)庫已成為現(xiàn)代信息系統(tǒng)的計算機系統(tǒng)的基
46、礎(chǔ)與核心部分。數(shù)據(jù)庫設(shè)計的好壞直接影響著整個系統(tǒng)的效率和質(zhì)量。然而,由于數(shù)據(jù)庫系統(tǒng)的復雜性和它與環(huán)境的密切聯(lián)系,數(shù)據(jù)庫設(shè)計變得比較復雜和費時。所以,本次數(shù)據(jù)庫技術(shù)課程設(shè)計應(yīng)有一顆冷靜沉著的心態(tài)。</p><p><b> 需求分析</b></p><p><b> 總體需求分析</b></p><p> 醫(yī)務(wù)管理系統(tǒng)
47、是實現(xiàn)醫(yī)務(wù)信息存儲、添加、修改及查詢的窗口,它管理的信息包括科室信息、病房信息、病人信息以及醫(yī)生信息。其中不同的群體對數(shù)據(jù)有著不同的需求和權(quán)限,數(shù)據(jù)庫管理員或醫(yī)務(wù)處相關(guān)人員應(yīng)該擁有所有的管理權(quán)限;醫(yī)生需要了解醫(yī)務(wù)任務(wù)及病人的基本信息,且應(yīng)具有錄入病人病歷號,病人診斷身體狀況信息以及無修改的權(quán)限;病人主要需要知道自己病房號、床位號以及主治醫(yī)生且無修改的權(quán)限。因此,該醫(yī)務(wù)管理系統(tǒng)應(yīng)提供不同的類型入口,通過身份驗證來決定訪問權(quán)限,從而滿足不同
48、類型的人的需求。</p><p> 具體地說,由于主要面對醫(yī)生和相應(yīng)的病人,本醫(yī)務(wù)管理系統(tǒng)應(yīng)能方便的滿足以下需求:</p><p> 2.1.1 信息需求</p><p> 對于病人,信息需求為病人個人信息、個人病房信息、病人診治信息;對于醫(yī)生,信息需求為病人個人信息、醫(yī)生個人信息、醫(yī)生所屬科室信息。</p><p> 因此,數(shù)據(jù)庫
49、中應(yīng)該存儲以下數(shù)據(jù):病人和醫(yī)生個人信息數(shù)據(jù),醫(yī)院各科室信息數(shù)據(jù)以及醫(yī)院安排事務(wù)數(shù)據(jù)。</p><p> 2.1.2 處理需求</p><p> 總的來說,處理需求主要分成以下兩項:</p><p> ?。?)各種數(shù)據(jù)的添加和修改;</p><p> ?。?)相關(guān)行數(shù)據(jù)的統(tǒng)計與查詢;</p><p> 由于不同用
50、戶的訪問權(quán)限不同,所以需要設(shè)計不同的用戶界面和用戶操作規(guī)則來保證系統(tǒng)的正常運行。其實由于權(quán)限的顯著差別,醫(yī)生和病人的界面不會有較大的差別。醫(yī)生應(yīng) 能查詢其個人信息,所有病人的個人信息以及病人診治身體狀況信息,完整的醫(yī)務(wù)任務(wù)分配信息;病人只能查詢病人個人信息,病房及病床號信息以及診治時間信息,但不能查詢其他人的信息。另外,醫(yī)生可以修改和輸入病人診治時間以及病人的身體狀況信息。醫(yī)務(wù)管理員</p><p> 可以修
51、改和輸入醫(yī)院安排事務(wù)數(shù)據(jù),而病人可以有輸入和修改個人信息的權(quán)限。</p><p><b> 數(shù)據(jù)流圖描述</b></p><p> 根據(jù)系統(tǒng)對象和功能可分成兩步畫出數(shù)據(jù)流圖,其中第一層將整個系統(tǒng)當成一個整體,且不考慮數(shù)據(jù)存儲,并將輸入和輸出分開,如圖1所示:</p><p> 醫(yī)務(wù)安排病人個人信息查詢</p><p&
52、gt;<b> 已診治信息查詢</b></p><p><b> 所需診治信息</b></p><p> 所需診治信息診治時間查詢</p><p><b> 病人個人</b></p><p><b> 信息</b></p><
53、;p><b> 醫(yī)生個</b></p><p><b> 人信息</b></p><p><b> 醫(yī)生個人信息查詢</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> 第二層將整個系統(tǒng)功能細化且引入數(shù)據(jù)存儲,并將輸入和輸出實體合并為數(shù)據(jù)流圖的處理對象,如圖2所示(因排版需求,圖2見第4頁) </p><p><b> 數(shù)據(jù)字典</b>
55、</p><p><b> 數(shù)據(jù)項</b></p><p> 表1 數(shù)據(jù)項列表</p><p> 數(shù)據(jù)項名 數(shù)據(jù)類型 長度取值范圍 備注</p><p> 姓名 字符型 20</p><p> 病歷號字符型1
56、0</p><p> 性別字符型2 {“男”,“女”}</p><p> 政治面貌字符型4{“黨員”,“群眾”,“團員”}</p><p> 出生年月日期型8格式為yyyy-ww-zz</p><p> 電話號碼字符型11</p><p><b> 病房號字
57、符型3</b></p><p><b> 病床號字符型2</b></p><p> 診治時間日期型8格式為yyyy-ww-zz</p><p> 醫(yī)生證號字符型3</p><p> 身體狀況字符型1{“A”,“B”,“C”,“D”}</p><p> 科
58、室編號字符型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> 病人個</b></p><p><b> 人信息</b></p><p> 病人個人信息查詢個人注冊信息</p><p><b> 醫(yī)生個人
61、信息查詢</b></p><p><b> 個人基本信息</b></p><p><b> 醫(yī)生個人信息</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> 說明: 提供病人已被診治后的身體狀況信息,診治費用,診治項目,診治醫(yī)生以及診治所花時間</p><p>
63、; 來源: 診治信息管理子系統(tǒng)</p><p><b> 去向: 病人</b></p><p> 數(shù)據(jù)結(jié)構(gòu):——病歷號</p><p><b> ——所需診治項目</b></p><p><b> ——診治費用</b></p><p&g
64、t;<b> ——診治醫(yī)生、</b></p><p> ——已診治后的身體狀況等級</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):——所需診治項目</p><p><b> ——診治醫(yī)生</b></p><p><b> ——診治時間</b></p><p><b> ——診治地點</b></p><p> ——診治前的身體狀況等級</p
66、><p> 因為數(shù)據(jù)庫課程設(shè)計報告(參考材料)中對教學管理的數(shù)據(jù)字典都沒有含有數(shù)據(jù)存儲及處理過程的相關(guān)描述,在加上這兩個過程與數(shù)據(jù)流的描述相差無幾,故在此不再贅述。</p><p><b> 3 概念設(shè)計</b></p><p> 3.1 確定實體集、聯(lián)系及屬性</p><p> 結(jié)合數(shù)字字典可得實體、聯(lián)系及
67、其屬性如下:</p><p> 病人(姓名,性別,年齡,病歷號,政治面貌,診斷,主治醫(yī)生,病房號)</p><p> 醫(yī)生(姓名,性別,年齡,工作證號,所屬科室編號,職稱)</p><p> 病房(病房號,病床號,所屬科室號)</p><p> 科室(科室名,科室編號,科室地址,科電話)</p><p> 住
68、宿(病歷號,病床號,病房號)</p><p> 屬于(病房號,科室編號)</p><p> 工作(工作證號,科室編號)</p><p> 主管(病歷號,工作證號,診治時間,身體狀況)</p><p> 對于實體之間的聯(lián)系,考慮到一個科室有多個醫(yī)生,一個病房只能屬于一個科室,一個醫(yī)生只屬于一個科室,但可以負責多個病人的診治,一個病人的主
69、治醫(yī)生只能有一個。因此,住宿的類型為1:n,屬于的類型為1:n,工作的類型為1:n,主管的類型為1:n。根據(jù)以</p><p> 分析,可以畫出如下所示的ER圖。</p><p><b> 局部ER模型</b></p><p> 以屬于、住宿、主管和工作4個聯(lián)系作為基礎(chǔ),可畫出4個局部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種之間的公共實體分別為病房、病人、醫(yī)生、科室。所以合并公共實體即可得到全局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è)計</b></p><p> 4.1 ER圖轉(zhuǎn)換為關(guān)系模式</p><p> 根據(jù)ER圖,應(yīng)用以下規(guī)則將ER模式轉(zhuǎn)化為關(guān)系模式:</p><p> (1)、實體之間的轉(zhuǎn)換:將每個試題類型轉(zhuǎn)換為一個關(guān)系模式,實體的屬性即為關(guān)系模式
74、的的屬性,實體標識符即為關(guān)系模式的鍵。</p><p> (2)、聯(lián)系類型的轉(zhuǎn)換:將聯(lián)系為1:N和M:N的聯(lián)系類型轉(zhuǎn)換為單獨的關(guān)系模式,其鍵為兩端實體鍵的組合。</p><p> 這樣,可得關(guān)系模式如下:</p><p> 病人(病歷號,姓名,性別,政治面貌,年齡)</p><p> 醫(yī)生(工作證號,姓名,性別,年齡,職稱)</
75、p><p> 病房(病房號,病床號)</p><p> 科室(科室編號,科電話,科室地址,科室名稱)</p><p> 工作(工作證號,科室編號)</p><p> 住宿(病房號,病歷號)</p><p> 主管(工作證號,病歷號,身體狀況,診治時間)</p><p> 屬于(病房號,科
76、室編號)</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è)計</p><p> 為了滿足醫(yī)生和病人的不同要求,符合他們對數(shù)據(jù)庫操作的不同權(quán)限,并保證數(shù)據(jù)庫的安全性,對他們所對應(yīng)的視圖要進行有區(qū)別的設(shè)計。</p><p> 醫(yī)生視圖主要包括以下功能板塊:</p><p> ?。?)、通過輸入各種不同條件,來查詢病人的個人信息和病人的身體狀況,所有的病人以上信息對醫(yī)生都是公開的,但醫(yī)生無法對其信息進行任何的修改;&
78、lt;/p><p> ?。?)、查看自己的醫(yī)務(wù)安排,診治對象,診治地點,診治時間等等;</p><p> (3)、查看和更新自己的個人信息以及修改自己的登錄系統(tǒng)密碼,其中醫(yī)生工作證號不能有醫(yī)生本人自由的更改;</p><p> (4)、錄入其診治病人的身體狀況,恢復注意事項等等。</p><p> 病人視圖主要包括以下功能板塊:</p
79、><p> ?。?)、查看和更新自己的個人信息以及修改登錄密碼,其中病歷號不能被修改;</p><p> ?。?)、查看自己的診治安排以及自己的身體狀況;</p><p> (3)、輸入自己所需的診治項目。</p><p><b> 5 物理設(shè)計</b></p><p> 由于不清楚該醫(yī)院的
80、具體資源,且本數(shù)據(jù)庫數(shù)據(jù)量較少,物理設(shè)計不是主要考慮問題,故在此省略。</p><p> 6 數(shù)據(jù)庫實施與維護</p><p> 6.1 建立數(shù)據(jù)結(jié)構(gòu)</p><p> 新建access數(shù)據(jù)庫文件,依據(jù)邏輯設(shè)計所得關(guān)系模式在其中創(chuàng)建病人、醫(yī)生、科室、屬于、病房、住宿、工作、主管8個表,字段屬性和完整性規(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)準備好的數(shù)據(jù)輸入數(shù)據(jù)的加載主要目的是為應(yīng)用程序的編寫提供方便以及對系統(tǒng)的功能和性能進行試驗,故我輸入了一些虛擬的數(shù)據(jù),具體的虛擬規(guī)則和數(shù)據(jù)可參見數(shù)據(jù)表到基本表中。</p><p> 6.3
82、 編寫和調(diào)試應(yīng)用程序</p><p> 6.3.1 窗體和報表的設(shè)計</p><p> 鑒于Access 數(shù)據(jù)庫系統(tǒng)強大的窗體和報表等可視化設(shè)計功能,在編寫相關(guān)功能代碼前</p><p> 先進行窗體和報表的設(shè)計。其中窗體又分為作為人機交互界面的用戶界面窗體和作為數(shù)據(jù)呈</p><p> 現(xiàn)方式的數(shù)據(jù)窗體。前者涉及到系統(tǒng)的整體功能
83、和服務(wù)質(zhì)量,故需最先設(shè)計出來;后者涉及</p><p> 到數(shù)據(jù)的查詢和表現(xiàn),為設(shè)計方便,需先設(shè)計出與之相關(guān)的查詢。報表則是數(shù)據(jù)呈現(xiàn)的主要</p><p> 方式,同樣應(yīng)先設(shè)計出相關(guān)查詢,并實現(xiàn)合理的統(tǒng)計功能。</p><p> 首先設(shè)計出不同用戶的用戶界面,如下圖所示:該窗體為醫(yī)生和病人進入醫(yī)務(wù)管理系統(tǒng)的接口,該界面有兩個用戶登錄,避免了設(shè)計兩個登錄窗口的麻
84、煩性,同一個用戶窗體的設(shè)計節(jié)省了計算機的內(nèi)存。</p><p> 如下圖所示,為用戶登錄界面。該模式主要實現(xiàn)用戶登錄功能,分為醫(yī)生和病人兩個子界面。</p><p> 圖8 登陸界面窗體</p><p> 圖9 醫(yī)生界面窗體——視圖1</p><p> 該模式為醫(yī)生界面窗體,該模式主要實現(xiàn)病人身體狀況以及個人信息的查詢,并顯示醫(yī)生
85、個人的診治安排功能。</p><p> 圖10 醫(yī)生界面窗體——視圖2</p><p> 該模式為醫(yī)生界面窗體,該模式主要實現(xiàn)教師個人信息和登錄密碼的查詢和修改功能。</p><p> 圖11 醫(yī)生界面窗體——視圖3</p><p> 該模式為醫(yī)生界面窗體,該模式實現(xiàn)登錄醫(yī)生所診治的學生的診治項目的身體狀況的錄入。</p&g
86、t;<p> 圖12 病人界面窗體——視圖1</p><p> 該模式為病人界面窗體,該模式實現(xiàn)了病人個人信息維護以及個人身體狀況和診治項目的查詢功能。</p><p> 圖13 病人界面窗體——視圖2</p><p> 該模式為病人界面窗體,該模式實現(xiàn)病人對診治項目的選擇功能。</p><p> 據(jù)此,可設(shè)計出如
87、下數(shù)據(jù)窗體和報表</p><p> 診斷查詢(診治項目,病人姓名,病歷號,醫(yī)生姓名,工作證號) </p><p> 診治時間查詢(診治項目,診治時間,工作證號,醫(yī)生姓名,病歷號,病人姓名) </p><p> 選修課程(身體狀況,診治項目,病人姓名,病歷號,工作證號,醫(yī)生姓名)</p><p> 圖14 病人個人信息窗體</p
88、><p> 圖15 身體狀況查詢報表</p><p> 圖16 診斷查詢報表</p><p> 另外,還有嵌入用戶界面窗體中的子窗體,如診斷查詢子窗體,醫(yī)生查詢子窗體以及病人查詢子窗體。由于設(shè)計簡單,在用戶界面窗體設(shè)計時可直接插入(見用戶界面窗體),故子窗體在此不再單獨列出。</p><p> 6.3.2 功能代碼編寫與程序調(diào)試&l
89、t;/p><p> 窗體和報表的設(shè)計大大的減少了編寫代碼的難度和負擔,但是要更為完整和復雜的功能。相關(guān)的代碼仍然是不可避免的。下面以圖9的醫(yī)生界面窗體所涉及的相關(guān)代碼進行詳細的說明。</p><p> 對于如圖9所示的醫(yī)生界面,其上半部分顯示的是固定信息工作證號、姓名、診治項目是通過該窗體的From_Load事件自動添加上去的。再加上文本框是被鎖定的,它的內(nèi)容是不可能被修改的。工作證號是引
90、用登陸界面的登錄醫(yī)生工作證號,其余兩條信息是通過調(diào)用DLookUp()函數(shù)來在基本表中查找,以姓名舉例,調(diào)用格式為:</p><p> DLookUp(”[姓名]”, “醫(yī)生”,”[工作證號]=”&””&Me.Text2&””)</p><p> 將函數(shù)返回值賦值給相應(yīng)的文本框,在將該文本框Locked屬性設(shè)置為True即可。</p><p&
91、gt; 對于醫(yī)生窗體的下半部分窗體主要是實現(xiàn)三個部分的不同功能,其分別為病人個人信息的管理和病人個人診治信息的選擇,醫(yī)生個人信息的維護以及醫(yī)生對病人身體狀況信息的輸入與更新。首先設(shè)置出醫(yī)生下半窗體進行分頁的醫(yī)生界面,醫(yī)生通過自身的需求選擇性的進入其中一個頁面獲取、輸入或更改所需要的信息。所以醫(yī)生窗體的代碼設(shè)計成了如下所示:</p><p> ?。?)此段為醫(yī)生的個人信息:</p><p>
92、; Private Sub Form_Current()</p><p> '初始化醫(yī)生界面的個人信息</p><p> Me.Text2 = Forms![登錄界面]![工作證號]</p><p> '根據(jù)登錄工作證號從醫(yī)生數(shù)據(jù)表中查找其他信息并顯示</p><p> Me.Text5 = DLookup(&quo
93、t;[醫(yī)生姓名]", "醫(yī)生", "[工作證號]=" & "'" & Me.Text2 & "'")</p><p> Me.Text8 = DLookup("[診治項目]", "診斷", "[工作證號]=" & &
94、quot;'" & Me.Text2 & "'")</p><p> Me.Text2.Locked = True '將不能修改的工作證號文本框鎖定</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ī)生", "[工作證號]=" & "'" & Me.Text2 & "'")</p><p> Me.職稱 =
96、 DLookup("[職稱]", "醫(yī)生", "[工作證號]=" & "'" & Me.Text2 & "'")</p><p> Me.年齡 = DLookup("[年齡]", "醫(yī)生", "[工作證號]=" &
97、amp; "'" & Me.Text2 & "'")</p><p> Me.登錄密碼 = DLookup("[登錄密碼]", "醫(yī)生", "[工作證號]=" & "'" & Me.Text2 & "'"
98、;)</p><p><b> End Sub</b></p><p> Private Sub 保存信息_Click()</p><p> '將醫(yī)生個人信息的更改保存到醫(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 工作證號 = " + """" + Me.Text2 + """;"</p><p> CurrentProject.Connection.Execute sql</p><p> MsgBox "信息修改成功!請務(wù)必記好密碼!", vbOKO
102、nly, "提示"</p><p><b> End Sub</b></p><p> ?。?)此段為醫(yī)生將病人的身體狀況信息的錄入:</p><p> Private Sub 確定_Click()</p><p> '將當前登錄醫(yī)生所輸入的其選擇該診治項目的病人身體狀況保存到身體狀況數(shù)
103、據(jù)表中</p><p> Dim sql As String</p><p> '定義并執(zhí)行更新查詢</p><p> If IsNull(DLookup("[病歷號]", "病人", "[病歷號]=""" + Me.Text63 + """
104、")) = False Then</p><p> sql = "update 診斷 set 身體狀況=""" + Me.身體狀況 + """ where 病歷號=""" + Me.Text63 + """ and 診治項目=""" + 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 "病歷號錯誤,請重新輸入!", 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ī)生界面并重新進入登錄界面</p><p> DoCmd.Close</p><p> Forms![登錄界面].Visible = True</p><p> '將登錄界面信息清空</p><p
108、> Forms![登錄界面]![工作證號] = 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> '給字符串變量賦初值,避免運算中出現(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> '將各個文本框所輸入的查詢條件分別賦值給數(shù)組元素</p
111、><p> If IsNull(Me.病歷號) = False Then</p><p> s(0) = "身體狀況查詢.病歷號 = """ + Me.病歷號 + """ "</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.工作證號) = False Then</p><p> s(2) = "身體狀況查詢.工作證號 = """ + Me.工作證號 + """ "</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.診治項目) = False Then<
115、;/p><p> s(4) = "身體狀況查詢.診治項目 = """ + Me.診治項目 + """ "</p><p><b> End If</b></p><p> '在除第一個非空條件的其他非空條件前加上" 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> '將各個條件合起來賦值給字符串變量sql,作為打開報表的篩選條件</p><p> For i = 0 To 4</p><p> sql = sql + s(i)</p><p><b> Next i&
119、lt;/b></p><p> '按條件打開身體狀況查詢報表</p><p> DoCmd.OpenReport "身體狀況查詢", acViewReport, , sql</p><p><b> End Sub</b></p><p> (3)此段為病人信息的維護:</
120、p><p> Private Sub 病人個人信息_Click()</p><p> '按給定條件查找病人個人信息</p><p> Dim sql As String</p><p> Dim s(2) As String</p><p> Dim i, j As Integer</p>
121、<p> '給字符串變量賦初值,避免運算中出現(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> '將各個文本框所輸入的查詢條件分別賦值給數(shù)組元素</p><p> If IsNull(Me.病歷號) = False Then</p><p> s(0) = "病人.病歷號 = """ + Me.病歷號 + """
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> '在除第一個非空條件的其他非空條件前加上" 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> '將各個條件合起來賦值給字符串變量sql,作為打開報表的篩選條件</p&g
127、t;<p> For i = 0 To 1</p><p> sql = sql + s(i)</p><p><b> Next i</b></p><p> '按條件打開身體狀況查詢報表</p><p> DoCmd.OpenForm "病人 查詢", , , sq
128、l</p><p><b> End Sub</b></p><p> 比如在病人信息維護的編寫代碼中,多次使用了For循環(huán)語句和If…Then條件語句,首先定義兩個字符串并對他們賦予初始值,然后將各個文本框所輸入的查詢條件分別賦值給數(shù)組元素 ,通過If條件語句依次判斷每個文本框中是否為空,如果為空,則相應(yīng)的字符串維持原值,否則則將條件賦予給相應(yīng)字符串變量,這樣就
129、將用戶所輸入的四個條件分別存儲在了字符串數(shù)組的四個變量當中。最后調(diào)用DoCmd對象的OpenForm的方法來打開已設(shè)計好的“身體狀況查詢”報表。</p><p> 上述類似的用法在醫(yī)生將病人的身體狀況信息的錄入部分也有應(yīng)用,這個部分最后是調(diào)用DoCmd對象的OpenReport的方法來打開已設(shè)計好的“身體狀況查詢”報表。這樣,當在醫(yī)生窗體之中,點擊診治信息當中病人信息管理中的病人診治信息或者是醫(yī)生身體狀況信息的
130、錄入中的病人查詢,這樣即可以執(zhí)行事件過程中的編寫代碼,即可直接進入到“身體狀況查詢”報表中,獲取自身所需的信息,得到滿足條件的結(jié)果。</p><p> 對于病人窗體中的代碼較多且繁瑣,在此就不再多余的述說。</p><p> 兩者之中的視圖中或多或少的均含有子窗體,如圖13中病人界面窗體——視圖2中的診治頁中所含有的診治項目列表診斷查詢子窗體,子窗體的插入并沒有太多的技術(shù)含量,只需要在
131、插入子窗體向?qū)е兄付ㄋ璧淖侄?,然后再屬性表中設(shè)置主/子窗體的鏈接字段即可。所以無需贅述。</p><p><b> 7 結(jié)束語</b></p><p> 這次做這個數(shù)據(jù)庫醫(yī)務(wù)管理管理系統(tǒng)課程設(shè)計所用的時間都是比較散的,基本上每天都有做一點,但是每天花的時間都不是非常的多。所以這次的課程設(shè)計作業(yè)做的歷時較長,直到快開學的的前幾天才能夠完成。</p>
132、<p> 在剛開始做的時候,根本對這個課設(shè)沒有什么概念,但是看過數(shù)據(jù)庫課程設(shè)計(參考報告)之后,我才知道應(yīng)該怎樣開始。根據(jù)下發(fā)的教務(wù)管理系統(tǒng)參考材料以及數(shù)據(jù)庫技術(shù)及應(yīng)用課程設(shè)計規(guī)范化相關(guān)材料,我做完了概論以及需求分析當中的總體需求分析。但是下一步需求分析當中的數(shù)據(jù)流圖描述和數(shù)據(jù)字典就讓我遇到了難處。我剛開始甚至不知道數(shù)據(jù)流圖描述以及數(shù)據(jù)字典是什么概念,通過查閱才知道數(shù)據(jù)流圖(Data Flow Diagram,簡記作DF
133、D)是從“數(shù)據(jù)”和“對數(shù)據(jù)的加工”兩方面表達數(shù)據(jù)處理系統(tǒng)工作過程的一種圖形表示方法,具有直觀、易于被用戶和軟件人員雙方理解的特點的一種表達系統(tǒng)功能的描述方式。它是在分析用戶活動所涉及的數(shù)據(jù)的基礎(chǔ)上所產(chǎn)生的,在本數(shù)據(jù)庫醫(yī)務(wù)管理系統(tǒng)中,即主要是分析醫(yī)生和病人活動所涉及的數(shù)據(jù),比如說醫(yī)生個人信息,醫(yī)生與醫(yī)務(wù)管理系統(tǒng)的數(shù)據(jù)關(guān)系,病人個人信息,病人與醫(yī)務(wù)管理系統(tǒng)的數(shù)據(jù)關(guān)系等等。而數(shù)據(jù)字典主要是在分析系統(tǒng)數(shù)據(jù)的基礎(chǔ)上所產(chǎn)生的,如果只含有數(shù)據(jù)流圖并不
134、能構(gòu)成需求說明書,它并沒有說明每個系統(tǒng)部分中的含義。而數(shù)據(jù)字典提供對數(shù)據(jù)庫時間描述的集中管理。它主要包括數(shù)據(jù)項、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)流、數(shù)據(jù)存儲和處理過</p><p> 完成需求之后,就來到了概念設(shè)計。在這個部分當中主要包含確定實體集、聯(lián)系及屬性,局部ER圖和全局ER圖。因為經(jīng)過一大半學期的數(shù)據(jù)庫學習,老師對全局ER圖和局部ER圖的教授得較多,因此我對這個部分的知識以及做法比較熟悉。這個部分主要是在畫圖方面,剛開始
135、我想用Microsoft Office Visio 2007這個畫圖軟件來畫的,但最終因為摸索了好久不會就直接用了word自帶的畫圖工具畫的。總之,概念設(shè)計這個環(huán)節(jié)相對整體來說是比較容易的。接下來就到了邏輯設(shè)計部分,這個部分的將全局ER圖轉(zhuǎn)化為關(guān)系模型并不難,只要上課聽講了的基本上都會,完整性以及范式的分解也是如此。接下的物理設(shè)計就從略了。</p><p> 這個部分是應(yīng)用Microsoft Office Ac
136、cess 2007建立數(shù)據(jù)庫的部分了。因為有上學期進行數(shù)據(jù)庫上機實踐的經(jīng)驗,所以在建立表和應(yīng)用SQL語言建立查詢都沒有什么太大的問題。但是到了設(shè)計窗體和報表就有很大的問題了,首先窗體和報表對于我來說全部都是全新的東西,全部都要靠自己慢慢的學習。我選擇的是剛開始就不要忙著進行學習寫相關(guān)的代碼,先學會設(shè)計有關(guān)窗體和報表界面的設(shè)計。通過查詢Visual Basic程序設(shè)計教程,我認識了有關(guān)的控件:文本框(Text)、標簽(Label)命令按鈕
137、(CommandButton)、子窗體/子報表按鈕、列表框(List Box)、組合框(ComboBox)、選項按鈕以及選項卡控件等等,還知道了這些按鈕的相關(guān)功能和類型,如文本框是一個文本編輯區(qū)域,用戶可以在該區(qū)域輸入、編輯、修改和顯示正文內(nèi)容,即用戶可以創(chuàng)建一個文本編輯器。但是對于標簽就不行了,它是不允許其內(nèi)容被更改的,他在設(shè)計的時候必須要有內(nèi)容。而文本框之中的內(nèi)容是可有可無的。再設(shè)計報表的時候由于出現(xiàn)的設(shè)計界面與設(shè)計窗體的時候的設(shè)計
138、界面都一樣,就讓人感覺有一點無從下手了。它需要點擊“分組和排序按鈕”</p><p> 接下來就到了最難的部分——寫相關(guān)的代碼了。由于我是在Access 2007當中建立的數(shù)據(jù)庫,我就直接在Access當中建立了工程,即事件過程代碼的編寫直接在與Access 2007相關(guān)聯(lián)的代碼窗口中進行編寫的。雖然報表和窗體的設(shè)計大大地減輕了編寫代碼的負擔,但是編寫代碼的困難性仍然比想象中的復雜很多。我在圖書館中查了不少的資
139、料,甚至買了幾本VB的書都難以弄清。我至今都不太知道有些代碼的編寫,只知道一些較為簡單的代碼編寫,比如有關(guān)If條件語句的編寫和For循環(huán)語句的編寫,這些還是源于之前有C++的基礎(chǔ)才弄明白的。VB事件過程的形式:Sub 對象名_事件名([參數(shù)列表])</p><p> … 事件過程代碼</p><p> End Sub ,其中一些控件的編寫就可以靠這種
140、形式進行編寫。但這只是比較簡單的部分。還有一些事件處理代碼,及那些用來解決相關(guān)算法、指定處理事件的程序就比較難了。運行時它還要注意相關(guān)代碼所編寫的環(huán)境。所以在編寫代碼的環(huán)節(jié)當中,我請教過不少的人,也借鑒了不少下發(fā)的教學管理數(shù)據(jù)庫中所編寫的代碼。才勉強的將這部分做過去??傊?,我覺得這次的課設(shè)主要的困難有很大一部分就在此處。這次課設(shè)的代碼編寫還用到了嵌入式SQL語句的執(zhí)行與應(yīng)用,但這個部分上課時卻完全沒有涉及,所以這個方面也十分讓人苦惱,也
141、需要自己進行多次查書。</p><p> 這次的課程設(shè)計讓我苦惱了很多,但是也讓我收獲了不少。這其中涉及到很多數(shù)據(jù)庫和VB當中我所不知道的知識,許多東西都需要自己慢慢的摸索,自己慢慢的查書弄懂許多。其中包括表、查詢、窗體、報表(有時候還會涉及一點宏的設(shè)計)、VB等等從來沒有學過的東西。但是這次的課程設(shè)計是我第一次進行的一次課程設(shè)計。雖然,問過不少人,結(jié)果也不是相當?shù)暮谩5疫€是有一點小小的滿足感。這次課程設(shè)計確
142、實是對我的一次很好的鍛煉。它教會我更多的是知識以外的東西,做這份課設(shè)要有一顆勇于迎接困難,接受挑戰(zhàn)的心態(tài),還要一種特殊的自信心以及堅持的毅力。沒有這些,這次課程設(shè)計肯定是一個非常艱苦的過程。由此也告訴了我,任何事都不是一蹴而就的,我需要堅定的對待每一件看似簡單實卻不然的事情。</p><p><b> 參考文獻:</b></p><p> 董建全、丁寶康.數(shù)據(jù)庫實
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)據(jù)庫課程設(shè)計--數(shù)據(jù)庫設(shè)計—公司管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計報告----校園醫(yī)務(wù)室系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計---機房管理系統(tǒng)數(shù)據(jù)庫設(shè)計
- 數(shù)據(jù)庫課程設(shè)計---圖書管理系統(tǒng)數(shù)據(jù)庫管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計--工資管理系統(tǒng)數(shù)據(jù)庫設(shè)計
- 數(shù)據(jù)庫課程設(shè)計-酒店管理系統(tǒng)課程設(shè)計
- 數(shù)據(jù)庫原理課程設(shè)計---教室管理系統(tǒng)數(shù)據(jù)庫設(shè)計
- 數(shù)據(jù)庫課程設(shè)計--bbs系統(tǒng)數(shù)據(jù)庫設(shè)計
- 數(shù)據(jù)庫課程設(shè)計論文---汽車銷售管理系統(tǒng)數(shù)據(jù)庫設(shè)計
- 數(shù)據(jù)庫課程設(shè)計--超市會員管理系統(tǒng)的數(shù)據(jù)庫設(shè)計
- 數(shù)據(jù)庫原理課程設(shè)計---圖書管理系統(tǒng)數(shù)據(jù)庫設(shè)計
- 數(shù)據(jù)庫課程設(shè)計-學生管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計-薪資管理系統(tǒng)
- 酒店管理系統(tǒng)--數(shù)據(jù)庫課程設(shè)計
- 數(shù)據(jù)庫課程設(shè)計——學生管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計--- 銷售管理系統(tǒng)
- 數(shù)據(jù)庫成績管理系統(tǒng)課程設(shè)計
- 數(shù)據(jù)庫課程設(shè)計---成績管理系統(tǒng)
- 房產(chǎn)管理系統(tǒng)數(shù)據(jù)庫課程設(shè)計
- 數(shù)據(jù)庫課程設(shè)計--倉庫管理系統(tǒng)
評論
0/150
提交評論