醫(yī)院門診查詢系統(tǒng)畢業(yè)設(shè)計(jì)_第1頁(yè)
已閱讀1頁(yè),還剩40頁(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>  基于JavaEE的醫(yī)療門診查詢系統(tǒng)分析與設(shè)計(jì)</p><p><b>  摘要</b></p><p>  隨著計(jì)算機(jī)技術(shù)的發(fā)展和進(jìn)步,計(jì)算機(jī)應(yīng)用已經(jīng)涉及到人們生活的各個(gè)方面。醫(yī)療門診查詢預(yù)約系統(tǒng)是通過(guò)分析一個(gè)醫(yī)院門診系統(tǒng),把數(shù)據(jù)庫(kù),Servlet,Bean,JSP整合在一起,從而實(shí)現(xiàn)一個(gè)從信息收集,處理到查詢的完整的處理方案。該系統(tǒng)集合了患者管

2、理,醫(yī)生管理,以及病歷管理的綜合性應(yīng)用軟件。在該系統(tǒng)中,患者可以不用在醫(yī)院里面排很長(zhǎng)的隊(duì)伍掛號(hào),只要在門診系統(tǒng)的頁(yè)面上選擇自己喜歡的醫(yī)生進(jìn)行預(yù)約看病。這樣不僅方便了患者,也方便了醫(yī)生更容易查閱病歷和患者資料。更進(jìn)一步方便了醫(yī)院的門診管理,符合信息化時(shí)代的軟件應(yīng)用潮流。</p><p>  本系統(tǒng)是基于J2EE的設(shè)計(jì)方案,使用表示層,邏輯層和數(shù)據(jù)層三層模式。使用B/S模式,大大減低了服務(wù)端的數(shù)據(jù)處理任務(wù)。提供了高性

3、能的處理速度,降低數(shù)據(jù)庫(kù)的運(yùn)行時(shí)的開(kāi)銷。使用MS SQL Server 2000作為數(shù)據(jù)庫(kù),Tomcat作為JSP容器。數(shù)據(jù)庫(kù)層使用JDBC與底層數(shù)據(jù)庫(kù)進(jìn)行交互,邏輯層封裝在Java類中,表示層由JSP實(shí)現(xiàn)。</p><p>  關(guān)鍵詞:B\S模式;JSP;Enterprise JavaBean;三層模式;JDBC</p><p><b>  目 錄</b><

4、/p><p>  第一章 緒 論1</p><p><b>  1.1 引 言1</b></p><p><b>  1.2 概 述2</b></p><p>  1.3 J2EE概述3</p><p>  第二章 系統(tǒng)運(yùn)行必要的環(huán)境7</p>

5、<p>  2.1 JSP運(yùn)行環(huán)境的要求7</p><p>  2.1.1 對(duì)硬件條件和操作系統(tǒng)的要求7</p><p>  2.1.2 對(duì)軟件環(huán)境的要求7</p><p>  2.2 安裝和配置JDK8</p><p>  2.3 安裝和配置Tomcat9</p><p>  2.4 Micr

6、osoft SQL Server 的配置11</p><p>  第三章 系統(tǒng)分析與設(shè)計(jì)13</p><p>  3.1 系統(tǒng)功能分析13</p><p>  3.2 系統(tǒng)設(shè)計(jì)思想14</p><p>  3.2.1 數(shù)據(jù)庫(kù)層-邏輯層-表示層三層結(jié)構(gòu)14</p><p>  3.2.2 角色模塊設(shè)計(jì)-

7、設(shè)計(jì)模式14</p><p>  3.2.3 與數(shù)據(jù)庫(kù)的連接14</p><p>  3.2.4 日志記錄15</p><p>  3.3 系統(tǒng)模塊分析15</p><p>  3.4 業(yè)務(wù)流程16</p><p>  第四章 系統(tǒng)實(shí)現(xiàn)與詳細(xì)設(shè)計(jì)17</p><p>  4.1

8、 數(shù)據(jù)庫(kù)設(shè)計(jì)17</p><p>  4.1.1 設(shè)計(jì)思路17</p><p>  4.1.2 表的設(shè)計(jì)18</p><p>  4.1.3 表關(guān)系圖22</p><p>  4.2 邏輯層的設(shè)計(jì)23</p><p>  4.2.1 邏輯層包結(jié)構(gòu)設(shè)計(jì)23</p><p>  

9、4.2.2 與數(shù)據(jù)庫(kù)建立連接類DBConnection25</p><p>  4.2.3 用戶角色類27</p><p>  4.3 表達(dá)層設(shè)計(jì)28</p><p>  4.3.1 表達(dá)層設(shè)計(jì)概述28</p><p>  4.3.2表達(dá)層設(shè)計(jì)中使用的幾大JSP對(duì)象29</p><p>  4.4 系

10、統(tǒng)功能實(shí)現(xiàn)與演示30</p><p>  第五章 設(shè)計(jì)總結(jié)35</p><p><b>  參考文獻(xiàn)36</b></p><p><b>  致謝37</b></p><p><b>  附錄A 開(kāi)題報(bào)告</b></p><p>  附錄B 外

11、文資料原文</p><p>  附錄C 外文資料譯文</p><p><b>  附錄D 源程序代碼</b></p><p>  第一章 緒 論</p><p><b>  1.1 引 言</b></p><p>  管理信息系統(tǒng)(Management Informat

12、ion System)簡(jiǎn)稱MIS,是一個(gè)由人,計(jì)算機(jī)及其他外圍設(shè)備等組成的能進(jìn)行信息的收集、傳遞、存儲(chǔ)、加工、維護(hù)和使用的系統(tǒng),是一門新興的科學(xué),其主要任務(wù)是最大限度的利用現(xiàn)代計(jì)算機(jī)及網(wǎng)絡(luò)通信技術(shù)加強(qiáng)企業(yè)的信息管理,通過(guò)對(duì)企業(yè)擁有的人力、物力、財(cái)力、設(shè)備、技術(shù)等資源的調(diào)查了解、建立正確的數(shù)據(jù),加工處理并編制成各種信息資料及時(shí)提供給管理人員,以便進(jìn)行正確的決策,不斷提高企業(yè)的管理水平和經(jīng)濟(jì)效益。目前,企業(yè)的計(jì)算機(jī)網(wǎng)絡(luò)已成為企業(yè)進(jìn)行技術(shù)改造

13、及提高企業(yè)管理水平的重要手段。隨著我國(guó)與世界信息高速公路的接軌,企業(yè)通過(guò)計(jì)算機(jī)網(wǎng)絡(luò)獲得信息必將為企業(yè)帶來(lái)巨大的經(jīng)濟(jì)效益和社會(huì)效益,企業(yè)的辦公及管理都將朝著高效、快速、無(wú)紙化的方向發(fā)展。MIS系統(tǒng)通常用于系統(tǒng)決策,例如,可以利用MIS系統(tǒng)找出目前迫切需要解決的問(wèn)題,并將信息及時(shí)反饋給上層管理人員,使他們了解當(dāng)前工作發(fā)展的進(jìn)展或不足。換句話說(shuō),MIS系統(tǒng)的最終目的是使管理人員及時(shí)了解公司現(xiàn)狀,把握將來(lái)的發(fā)展路徑。</p>&l

14、t;p>  傳統(tǒng)的MIS系統(tǒng)的核心是C/S(Client/Server——客戶端/服務(wù)器)架構(gòu),而基于Internet的MIS系統(tǒng)的核心是B/S(Browser/Server——瀏覽器/服務(wù)器)架構(gòu)。B/S架構(gòu)比起C/S架構(gòu)有著很大的優(yōu)越性,傳統(tǒng)的MIS系統(tǒng)依賴于專門的操作環(huán)境,這意味著操作者的活動(dòng)空間受到極大限制;而B(niǎo)/S架構(gòu)則不需要專門的操作環(huán)境,在任何地方,只要能上網(wǎng),就能夠操作MIS系統(tǒng),這其中的優(yōu)劣差別是不言而喻的。基于

15、Internet上的MIS系統(tǒng)是對(duì)傳統(tǒng)MIS系統(tǒng)概念上的擴(kuò)展,它不僅可以用于高層決策,而且可以用于進(jìn)行普通的商務(wù)管理。通過(guò)用戶的具名登錄(或匿名登錄),以及相應(yīng)的權(quán)限控制,可以實(shí)現(xiàn)在遠(yuǎn)端對(duì)系統(tǒng)的瀏覽、查詢、控制和審閱。隨著Internet的擴(kuò)展,現(xiàn)有的公司和學(xué)校不再局限于物理的有形的真實(shí)的地域,網(wǎng)絡(luò)本身成為事實(shí)上發(fā)展的空間?;贗nternet上的MIS系統(tǒng),彌補(bǔ)了傳統(tǒng)MIS系統(tǒng)的不足,充分體現(xiàn)了現(xiàn)代網(wǎng)絡(luò)時(shí)代的特點(diǎn)。隨著Internet

16、技術(shù)的高速發(fā)展,因特網(wǎng)必將成為人類新社會(huì)的技術(shù)基石?;贗nternet的MIS系統(tǒng)必將成為網(wǎng)絡(luò)時(shí)代的新一代管理信息系統(tǒng),前景極為樂(lè)觀[7</p><p><b>  1.2 概 述</b></p><p>  隨著計(jì)算機(jī)技術(shù)的發(fā)展和進(jìn)步,計(jì)算機(jī)應(yīng)用已經(jīng)涉及到人們生活的各個(gè)方面。軟件行業(yè)的興起,各個(gè)單位為了提高生產(chǎn)效率,降低生產(chǎn)成本,很多由人來(lái)管理的工作都由計(jì)算機(jī)來(lái)完

17、成。醫(yī)療門診查詢預(yù)約系統(tǒng)是通過(guò)分析一個(gè)真正的醫(yī)院門診系統(tǒng),運(yùn)用信息技術(shù),結(jié)合軟件工程,利用數(shù)據(jù)庫(kù)和一些編程語(yǔ)言設(shè)計(jì),從而實(shí)現(xiàn)一個(gè)從信息收集,處理到查詢的完整的處理方案。該系統(tǒng)集合了患者管理,醫(yī)生管理,以及病歷管理的綜合性應(yīng)用軟件。現(xiàn)實(shí)中,很多病患在就醫(yī)看病的時(shí)候都苦惱于大醫(yī)院的掛號(hào)隊(duì)伍,因?yàn)閽焯?hào)排隊(duì)延誤病情治療的事情也時(shí)有發(fā)生,也有很多病患想了解專家門診的醫(yī)生情況和經(jīng)驗(yàn),來(lái)選擇自己的就醫(yī)方向,很多病患不能提前知道該專家醫(yī)生的就醫(yī)時(shí)間而延

18、誤病情的事和打亂自己的就醫(yī)安排也是存在的。在該系統(tǒng)中,患者可以不用在醫(yī)院里面排很長(zhǎng)的隊(duì)伍掛號(hào),只要在門診系統(tǒng)的頁(yè)面上選擇自己喜歡的醫(yī)生進(jìn)行預(yù)約看病。在系統(tǒng)中沒(méi)個(gè)醫(yī)生都有自己的看病時(shí)間表,病患可以通過(guò)醫(yī)生的時(shí)間表來(lái)選擇自己的就醫(yī)時(shí)間,方便患者安排時(shí)間,這樣就方便了患者,而醫(yī)生也可以通過(guò)系統(tǒng)查詢到預(yù)約自己的病患的基本情況,為治療做好前期準(zhǔn)備,為醫(yī)生成功治療病患打下基礎(chǔ),這樣方便了醫(yī)生更容易查閱病歷和患者</p><p&g

19、t;  本系統(tǒng)使用MS SQL Server 和 Tomcat,其中Tomcat是開(kāi)源軟件,可以從網(wǎng)上免費(fèi)得到其正式的發(fā)行版本,而MS SQL Server 是當(dāng)前使用得最廣泛的數(shù)據(jù)庫(kù),其性能,安全性等方面都有很好的保證。Tomcat雖然是開(kāi)源軟件,但許多大型網(wǎng)站也因其穩(wěn)定的性能和出色的性能而選擇它作為專業(yè)的JSP容器。由這兩者組成的整個(gè)系統(tǒng)的底層框架,既能節(jié)省開(kāi)支,配置過(guò)程也相對(duì)簡(jiǎn)單。</p><p>  服務(wù)

20、器端使用三層體系結(jié)構(gòu),將業(yè)務(wù)邏輯從表示層中抽出,使頁(yè)面,業(yè)務(wù)邏輯和數(shù)據(jù)庫(kù)開(kāi)發(fā)互相獨(dú)立,并行地進(jìn)行,這樣可以大大減少開(kāi)發(fā)時(shí)間。同時(shí)這種設(shè)計(jì)方法降低了三層之間的耦合層度,日后對(duì)某一層的修改,擴(kuò)充時(shí),對(duì)其他層可以只產(chǎn)生很小的影響[4]。</p><p>  使用面向?qū)ο蠹夹g(shù),將各個(gè)角色(醫(yī)生,患者,管理員)封裝成類,這樣能幫助程序員更直觀地去理解整個(gè)業(yè)務(wù)流程,將重點(diǎn)放在業(yè)務(wù)邏輯的處理上,降低了開(kāi)發(fā)難度,這樣也便于將來(lái)的

21、擴(kuò)展。</p><p>  而且該系統(tǒng)的一些亮點(diǎn):</p><p> ?。?)在邏輯層實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的日志記錄系統(tǒng),可以將任何信息記錄到指定的日志文件中,方便服務(wù)器程序的跟蹤和調(diào)試,同時(shí)可以記錄一些重要的事物信息(比如管理員登陸,重要信息的刪除等),以便將來(lái)需要是查詢。</p><p>  (2)邏輯層實(shí)現(xiàn)時(shí)使用事務(wù)(Transaction)保證數(shù)據(jù)的完整性。<

22、;/p><p>  (3)服務(wù)器端采用數(shù)據(jù)庫(kù),事務(wù)邏輯,用戶截面相互獨(dú)立的結(jié)構(gòu),各個(gè)模塊自身擴(kuò)充方便,且互相之間耦合度非常低,對(duì)邏輯層稍做擴(kuò)充就可以實(shí)現(xiàn)一個(gè)功能更完善的系統(tǒng)。</p><p>  (4)使用單例模式(Singleton Design Pattern)設(shè)計(jì)邏輯層,大大降低數(shù)據(jù)庫(kù)運(yùn)行的開(kāi)銷。</p><p>  總體來(lái)說(shuō),本系統(tǒng)是基于J2EE的設(shè)計(jì)方案,使用

23、表示層,邏輯層和數(shù)據(jù)層三層模式。使用B/S模式,使用MS SQL Server作為數(shù)據(jù)庫(kù),Tomcat作為JSP容器。數(shù)據(jù)庫(kù)層使用JDBC與底層數(shù)據(jù)庫(kù)進(jìn)行交互,邏輯層封裝在Java類中,表示層由JSP實(shí)現(xiàn)。</p><p>  1.3 J2EE概述</p><p>  JSP技術(shù)是由Servlet技術(shù)發(fā)展起來(lái)的,自從有了JSP后,在Java服務(wù)器端編程中普遍采用的就是JSP,而不是Serv

24、let。因?yàn)镴SP在編寫(xiě)表示頁(yè)面時(shí)遠(yuǎn)遠(yuǎn)比Servlet簡(jiǎn)單,并且不需要手工編譯,目前Servlet主要用于做視圖控制器,處理后臺(tái)應(yīng)用等。由于JSP構(gòu)建在Servlet上。所以它有Servlet所有強(qiáng)大的功能[1]。</p><p>  在傳統(tǒng)的網(wǎng)頁(yè)HTML文件(*.htm,*.html)中加入Java程序片段(Scriptlet)和JSP標(biāo)記,就構(gòu)成了JSP網(wǎng)頁(yè)(*.jsp)。</p><p&

25、gt;  JSP基于強(qiáng)大的Java語(yǔ)言,具有良好的伸縮性,與Java Enterprise API緊密地集成在一起,在網(wǎng)絡(luò)數(shù)據(jù)庫(kù)應(yīng)用開(kāi)發(fā)領(lǐng)域具有得天獨(dú)厚的優(yōu)勢(shì),基于Java平臺(tái)構(gòu)建網(wǎng)絡(luò)程序已經(jīng)被越來(lái)越多的人認(rèn)為是未來(lái)最有發(fā)展前途的技術(shù)[1]。</p><p>  從JSP這幾年的發(fā)展來(lái)看,JSP已經(jīng)獲得了巨大的成功,它通過(guò)和EJB等J2EE組件進(jìn)行集成,可以編寫(xiě)出處理具有大的伸縮性,高負(fù)載的企業(yè)級(jí)應(yīng)用。JSP技術(shù)

26、在多個(gè)方面加速了動(dòng)態(tài)Web頁(yè)面的開(kāi)發(fā)。</p><p>  通過(guò)分析和總結(jié),列出了以下幾點(diǎn)說(shuō)明JSP的特點(diǎn)。</p><p> ?。?)將內(nèi)容的生成和顯示進(jìn)行分離</p><p>  使用JSP技術(shù),Web頁(yè)面開(kāi)發(fā)人員可以使用HTML或者XML標(biāo)識(shí)來(lái)設(shè)計(jì)和格式化最終頁(yè)面。使用JSP標(biāo)識(shí)或者小腳本來(lái)生成頁(yè)面上的動(dòng)態(tài)內(nèi)容。生成內(nèi)容的邏輯被封裝在標(biāo)識(shí)和JavaBean組件

27、中,并且捆綁在小腳本中,所有的腳本在服務(wù)器端運(yùn)行。如果核心邏輯被封裝在標(biāo)識(shí)和Bean中,那么其他人,如Web管理人員和頁(yè)面設(shè)計(jì)者,能夠編輯和使用JSP頁(yè)面,而不影響內(nèi)容的生成。</p><p>  在服務(wù)器端,JSP引擎解釋JSP標(biāo)識(shí)和小腳本中,生成所請(qǐng)求的內(nèi)容,并且將結(jié)果以HTML頁(yè)面的形式發(fā)送回瀏覽器。這有助于作者保護(hù)自己的代碼,而又保護(hù)任何基于HTML的Web瀏覽器的完全可用性。</p>&l

28、t;p> ?。?)生成可重用的組件</p><p>  絕大多數(shù)JSP頁(yè)面依賴于可重用的,跨平臺(tái)的組件來(lái)執(zhí)行應(yīng)用程序所要求的更為復(fù)雜的處理。開(kāi)發(fā)人員能夠共享和交換執(zhí)行普通操作的組件,或者使用這些組件為更多的使用者或者客戶團(tuán)體所使用。基于組件的方法加速了總體開(kāi)發(fā)過(guò)程,并且使得各種組織在他們現(xiàn)有的技能和優(yōu)化結(jié)果的開(kāi)發(fā)努力中得到平衡。</p><p> ?。?)采用標(biāo)識(shí)簡(jiǎn)化頁(yè)面開(kāi)發(fā)<

29、/p><p>  Web頁(yè)面開(kāi)發(fā)人員不一定都熟悉腳本語(yǔ)言的編程人員。JavaServer Page技術(shù)封裝了許多功能,這些功能是在易用的,與JSP相關(guān)的XML標(biāo)識(shí)中進(jìn)行動(dòng)態(tài)內(nèi)容生成是所需要的。標(biāo)準(zhǔn)的JSP標(biāo)識(shí)能夠訪問(wèn)和實(shí)例化JavaBean組件,設(shè)置或者檢索組件屬性,下載Applet,以及執(zhí)行同其他方法更難于編碼或耗時(shí)的功能。</p><p>  通過(guò)開(kāi)發(fā)定制標(biāo)識(shí)庫(kù)。這使得Web頁(yè)面開(kāi)發(fā)人員能

30、夠使用熟悉的工具和如同標(biāo)識(shí)一樣執(zhí)行特定功能的構(gòu)件來(lái)工作。</p><p>  (4)JSP能提供所有的Servlets功能</p><p>  與Servlet相比,JSP能提供所有的Servlets功能,它比用Println書(shū)寫(xiě)和修改HTML更加方便。此外,您可以更明確地進(jìn)行分工,Web頁(yè)面設(shè)計(jì)人員編寫(xiě)HTML,只需要留出空間讓Servlets程序員插入動(dòng)態(tài)部分即可。</p>

31、<p> ?。?)健壯的存儲(chǔ)管理和安全性</p><p>  由于JSP頁(yè)面內(nèi)置腳本語(yǔ)言是基于Java編程語(yǔ)言的,而且所有的JSP頁(yè)面都被編譯成為Java Servlet,JSP頁(yè)面就具有Java技術(shù)的所有優(yōu)點(diǎn),包括健壯的存儲(chǔ)管理和安全性。</p><p> ?。?)一次編寫(xiě),隨處運(yùn)行</p><p>  作為Java平臺(tái)的一部分,JSP擁有Java編

32、程語(yǔ)言“一次編寫(xiě),隨處運(yùn)行”的特點(diǎn)。隨著越來(lái)越多的供應(yīng)商將JSP支持添加到他們的產(chǎn)品中,您可以使用自己所選擇的服務(wù)器和工具,但并不影響當(dāng)前的應(yīng)用。</p><p>  (7)JSP的平臺(tái)適應(yīng)性更廣</p><p>  這是JSP與ASP的優(yōu)越之處。幾乎所有的平臺(tái)都支持Java,JSP+Beans,它們可以在任何平臺(tái)下通行無(wú)阻。Windows NT下的IIS通過(guò)一個(gè)插件就能支持JSP,例如J

33、RUN或者ServletExec,著名的Web服務(wù)器Apache已經(jīng)能夠支持JSP。由于Apache廣泛應(yīng)用在Windows NT,UNIX和Linux上,因此JSP有更廣泛的運(yùn)行平臺(tái)。從一個(gè)平臺(tái)移植到另一個(gè)平臺(tái),JSP和JavaBeans甚至不用重新編譯,因?yàn)镴ava字節(jié)碼都是標(biāo)準(zhǔn)的字節(jié)碼,與平臺(tái)無(wú)關(guān)。</p><p>  (8)Java中連接數(shù)據(jù)庫(kù)的技術(shù)是JDBC</p><p>  

34、很多數(shù)據(jù)庫(kù)系統(tǒng)帶有JDBC驅(qū)動(dòng)程序,Java程序通過(guò)JDBC驅(qū)動(dòng)程序與數(shù)據(jù)庫(kù)相連,執(zhí)行查詢,提取數(shù)據(jù)等操作。Sun公司還開(kāi)發(fā)了JDBC-ODBC Bridge,用此技術(shù)Java程序就可以訪問(wèn)帶有ODBC驅(qū)動(dòng)程序的數(shù)據(jù)庫(kù),目前大多數(shù)數(shù)據(jù)庫(kù)系統(tǒng)都帶有ODBC驅(qū)動(dòng)程序,所以Java程序能夠訪問(wèn)如Oracle,Sybase,MS SQL Server和MS Access等類型的數(shù)據(jù)庫(kù)。</p><p><b>

35、 ?。?)簡(jiǎn)單易學(xué)</b></p><p>  隨著JSP 2.0中標(biāo)簽語(yǔ)言的出現(xiàn),即使不懂Java的程序員也能編寫(xiě)出功能完善的JSP應(yīng)用[2]。</p><p>  EJB(Enterprise Java Bean,企業(yè)Bean),是基于Java的服務(wù)器端組件架構(gòu)技術(shù)。借助于EJB,開(kāi)發(fā)者能夠輕松構(gòu)建企業(yè)級(jí)的,分布式組件應(yīng)用。與此同時(shí),在不用自身開(kāi)發(fā)復(fù)雜分布式組件框架的前提下

36、,開(kāi)發(fā)者能夠開(kāi)發(fā)架構(gòu)靈活,運(yùn)行可靠及安全的應(yīng)用系統(tǒng)。對(duì)于服務(wù)器端開(kāi)發(fā)而言,EJB引入了快速應(yīng)用開(kāi)發(fā)(Rapid Application Development,RAD)模型。因此,在Java應(yīng)用服務(wù)器提供商提供的分布式基礎(chǔ)框架的基礎(chǔ)上,開(kāi)發(fā)者能夠快速,輕松地構(gòu)建服務(wù)器端組件。EJB的重要設(shè)計(jì)初衷是保證應(yīng)用能夠在任一提供商提供的企業(yè)中間件服務(wù)上暢行無(wú)阻,而且便攜性,可重用性都是一流的。</p><p>  EJB僅

37、僅是J2EE(Java 2 Platform,Enterprise Edition)的組成部分之一。其中,J2EE平臺(tái)規(guī)范是由JCP(Java Community Process,Java工業(yè)標(biāo)準(zhǔn)組織)制定。J2EE平臺(tái)規(guī)范使命是,提供平臺(tái)獨(dú)立的,便攜的,多用戶的,安全的,遵循標(biāo)準(zhǔn)的企業(yè)級(jí)平臺(tái)。而且,它必須基于Java和在服務(wù)器端的部署。</p><p>  J2EE只是規(guī)范,不是產(chǎn)品。J2EE規(guī)范定義了開(kāi)發(fā)企業(yè)

38、級(jí)軟件產(chǎn)品的規(guī)則。J2EE應(yīng)用服務(wù)器供應(yīng)商需要在他們的J2EE兼容產(chǎn)品中實(shí)現(xiàn)J2EE規(guī)范。</p><p>  J2EE是由一套健壯的中間件服務(wù)構(gòu)成的,它使得服務(wù)器端應(yīng)用開(kāi)發(fā)者能夠高效,快樂(lè)地開(kāi)發(fā)應(yīng)用。為了使開(kāi)發(fā)者能夠進(jìn)一步理解J2EE的重要性,列舉出J2EE兼容實(shí)現(xiàn)必須提供的一些重要技術(shù)。如EJB,用于XML RPC的Java API,Java遠(yuǎn)程方法調(diào)用(RMI)和RMI-IIOP,Java命名和服務(wù)接口(J

39、NDI),Java數(shù)據(jù)庫(kù)連接(JDBC),Java事務(wù)API,Java消息服務(wù),Java Servlet,JSP,Java IDL以及J2EE連接器架構(gòu)(JCA)等。J2EE就是通過(guò)以上大量的組件來(lái)構(gòu)件一個(gè)企業(yè)級(jí)的應(yīng)用[4]。</p><p>  圖1.1 J2EE應(yīng)用部署場(chǎng)景</p><p>  第二章 系統(tǒng)運(yùn)行必要的環(huán)境</p><p>  本章主要介紹J

40、SP開(kāi)發(fā)環(huán)境的搭建。介紹JSP對(duì)運(yùn)行環(huán)境的要求。講述JSP開(kāi)發(fā)和運(yùn)行環(huán)境的安裝配置,并且介紹當(dāng)今流行的JSP運(yùn)行環(huán)境的安裝和配置,以及集成開(kāi)發(fā)環(huán)境的設(shè)置以及數(shù)據(jù)庫(kù)的安裝和配置。</p><p>  2.1 JSP運(yùn)行環(huán)境的要求</p><p>  2.1.1 對(duì)硬件條件和操作系統(tǒng)的要求</p><p>  JSP環(huán)境對(duì)硬件要求不是很高,所以開(kāi)發(fā)成本比較低,比如CP

41、U只要求使用586或更高級(jí)別的處理器;內(nèi)存大概64MB及其以上水平,如果使用WebLogic或者WebSphere配置要求256MB以上;硬盤(pán)大概500MB以上,根據(jù)不同的服務(wù)器要求不同,如果使用WebLogic或者WebSphere則要求硬盤(pán)空間大概1GB空間;當(dāng)然機(jī)器還要配置適合通信的網(wǎng)卡,畢竟JSP是網(wǎng)絡(luò)通信與信息技術(shù)的媒介。</p><p>  由于Java具有跨平臺(tái)的特點(diǎn),所以只要能夠安裝JDK,就能在

42、此安裝JSP服務(wù)器。JSP服務(wù)器能夠運(yùn)行在目前絕大多數(shù)的操作系統(tǒng)上,目前在普通用戶中用到的系統(tǒng)絕大多數(shù)為Windows系列和UNIX系列[11]。</p><p>  2.1.2 對(duì)軟件環(huán)境的要求</p><p>  要使用JSP,在服務(wù)器端和客戶端都必須有對(duì)應(yīng)的運(yùn)行環(huán)境。服務(wù)器端主要是Servlet兼容的Web服務(wù)器,客戶端主要是瀏覽器。</p><p>  表

43、2-1 對(duì)軟件環(huán)境的要求</p><p><b>  續(xù)表2-1</b></p><p>  2.2 安裝和配置JDK</p><p>  JDK中包含了Java開(kāi)發(fā)中必需的工具和Java程序運(yùn)行環(huán)境(JRE)??梢詮腟UN公司網(wǎng)站http://java.sun.com免費(fèi)下載JDK1.4.2。</p><p>  J

44、DK的安裝特別簡(jiǎn)單,和安裝應(yīng)用程序軟件沒(méi)什么區(qū)別,不過(guò)JDK的安裝路徑一定要設(shè)好,方便以后環(huán)境變量的設(shè)置。</p><p>  安裝好JDK后,還需要在環(huán)境變量中進(jìn)行對(duì)應(yīng)的配置。就以本次畢業(yè)設(shè)計(jì)為例。JDK安裝在D:\j2sdk1.4.2。</p><p><b>  主要進(jìn)行以下配置:</b></p><p> ?。?)設(shè)置JAVA_HOME

45、環(huán)境變量</p><p> ?。?)設(shè)置CLASSPATH環(huán)境變量</p><p> ?。?)更新PATH環(huán)境變量的值</p><p>  JAVA_HOME表示Java安裝目錄,其他的應(yīng)用程序如果需要使用Java運(yùn)行環(huán)境,首先獲得JAVA_HOME變量的信息,然后確定執(zhí)行的路徑。</p><p>  在鼠標(biāo)右鍵單擊“我的電腦”,在屬性欄的高

46、級(jí)選項(xiàng)中可以選擇環(huán)境變量的設(shè)置,新建一個(gè)系統(tǒng)變量或者用戶變量,名稱為JAVA_HOME,它的值為D:\j2sdk1.4.2。如圖:</p><p>  圖2.1 JAVA_HOME變量設(shè)置</p><p>  然后建立一個(gè)CLASSPATH的變量,它表示搜索Java類的路徑,這個(gè)路徑可以包含一些Jar歸檔文件,也可以是一個(gè)目錄。在應(yīng)用程序執(zhí)行是,往往會(huì)動(dòng)態(tài)地在CLASSPATH中添加一些自

47、己需要的路徑。在本機(jī)上CLASSPATH的值為“.;d:\j2sdk1.4.2\lib\tools.jar;d:\j2sdk1.4.2\lib\dt.jar;” (.;一定不能少)。</p><p>  圖2.2 CLASSPATH變量設(shè)置</p><p>  當(dāng)以上都配置好了,我們可以測(cè)試下Java環(huán)境是否配置成功。我們可以在[運(yùn)行]中進(jìn)入[命令提示符cmd]下面。輸入java –ver

48、sion回車,看是否能看到當(dāng)前JDK的版本。如果看見(jiàn)就配置成功了[3]。</p><p>  2.3 安裝和配置Tomcat</p><p>  Tomcat服務(wù)器是當(dāng)今使用最廣泛的Servlet/JSP服務(wù)器。它運(yùn)行穩(wěn)定,性能可靠,是學(xué)習(xí)和中小企業(yè)的最佳選擇,而且是開(kāi)源程序,下載免費(fèi),大大降低系統(tǒng)的開(kāi)發(fā)成本。</p><p>  我們可以從http://jakar

49、ta.apache.org/tomcat下載Tomcat 5.0 服務(wù)器。安裝也很方便。本次設(shè)計(jì)Tomcat安裝目錄是D:\Tomcat。</p><p>  安裝完成以后,把Tomcat里面的類包(*.jar文件)包含到環(huán)境變量的CLASSPATH里面。這些Jar文件都在D:\Tomcat\common\lib目錄下。</p><p>  然后運(yùn)行Tomcat程序,啟動(dòng)Tomcat。在I

50、E中,輸入http://127.0.0.1:8080或者h(yuǎn)ttp://localhost:8080。如果出現(xiàn)Tomcat的歡迎頁(yè)面,就表示Tomcat的安裝和配置是正確的。</p><p>  圖2.3 測(cè)試Tomcat是否安裝成功</p><p>  當(dāng)Tomcat配置成功以后,就要在%Tomcat%目錄下的webapps下面建立一個(gè)虛擬目錄,來(lái)方便將來(lái)程序的開(kāi)發(fā)。本次設(shè)計(jì)是醫(yī)院門診系統(tǒng)

51、,所以我們?cè)趙ebapps下面新建立一個(gè)叫hospital的文件夾,然后使用Tomcat Administrator tools來(lái)建立關(guān)于hospital的虛擬目錄。這樣以后我們的程序就可以在hospital文件夾下面進(jìn)行,當(dāng)設(shè)計(jì)完成以后,只要在IE里面輸入http://localhost:8080/hospital就可以看到你所設(shè)計(jì)的系統(tǒng)程序的實(shí)現(xiàn)了[3]。</p><p>  圖2.4 Tomcat Admi

52、nistrator tool頁(yè)面和hospital的虛擬目錄</p><p>  2.4 Microsoft SQL Server 的配置</p><p>  本節(jié)不對(duì)SQL Server的安裝做過(guò)多的贅述,本節(jié)介紹如何讓SQL Server能加入到JSP運(yùn)行的集成環(huán)境中來(lái)。</p><p>  當(dāng)安裝好SQL Server程序之后,由于JSP要與SQL Serve

53、r集成,進(jìn)行對(duì)數(shù)據(jù)庫(kù)的操作,就必須下載Microsoft SQL Server 2000 Driver for JDBC的驅(qū)動(dòng),微軟的官方網(wǎng)站提供免費(fèi)下載。安裝該程序之后,把安裝目錄里面\lib\下面的3個(gè)驅(qū)動(dòng)jar文件拷貝到你所開(kāi)發(fā)的JSP程序目錄下面的WEB-INF文件夾下面的lib文件夾下。這3個(gè)文件分別是:mssqlserver.jar;msbase.jar;msutil.jar。然后在環(huán)境變量的CLASSPATH變量里面包含這

54、3個(gè)文件的初試路徑。這樣我們就可以在以后的程序開(kāi)發(fā)過(guò)程中,調(diào)用Bean文件或者通過(guò)Servlet來(lái)進(jìn)行對(duì)數(shù)據(jù)庫(kù)的連接和操作[9]。</p><p>  值得注意的是如果是老版本的SQL Server,可能會(huì)出現(xiàn)與Tomcat和JSP連接失敗的故障,你可以通過(guò)Telnet 127.0.0.0:1433指令來(lái)測(cè)試數(shù)據(jù)庫(kù)的連通性,在本次設(shè)計(jì)時(shí)這個(gè)問(wèn)題出現(xiàn)過(guò),如果連接失敗,就應(yīng)該給SQL Server打Service p

55、atch 3和Service patch 4補(bǔ)丁。一般這個(gè)問(wèn)題打上SP3和SP4補(bǔ)丁就基本能夠解決,而且Telnet也會(huì)成功。本次設(shè)計(jì)的這個(gè)問(wèn)題也是這么解決的。</p><p>  圖2.5 三個(gè)SQL Server的JDBC驅(qū)動(dòng)的放置位置</p><p>  第三章 系統(tǒng)分析與設(shè)計(jì)</p><p>  3.1 系統(tǒng)功能分析</p><p&g

56、t;  根據(jù)對(duì)醫(yī)院門診流程的分析及客戶的要求,整個(gè)系統(tǒng)需要實(shí)現(xiàn)以下功能。</p><p>  軟件的整體功能,系統(tǒng)要操作簡(jiǎn)單,要有友好的界面,系統(tǒng)的操作者的權(quán)限層次要有明確的分類,進(jìn)入軟件時(shí)要進(jìn)行身份驗(yàn)證。而且出于對(duì)患者個(gè)人隱私的負(fù)責(zé),患者病歷記錄只能在患者就醫(yī)期間由主治醫(yī)生調(diào)閱,其他任何人包括管理員無(wú)權(quán)查閱。這樣使的系統(tǒng)更具有人性化,因?yàn)橄到y(tǒng)中三個(gè)角色之間沒(méi)有聯(lián)系,所以設(shè)置三個(gè)獨(dú)立操作的角色對(duì)象。</p&

57、gt;<p> ?。?)患者角色能進(jìn)行的對(duì)象操作</p><p>  ①可以聯(lián)機(jī)注冊(cè)成為用戶,設(shè)定自己的登錄名及密碼。</p><p> ?、诳砂瘁t(yī)生姓名自定義查詢。</p><p> ?、劭苫诓樵兘Y(jié)果進(jìn)行預(yù)約,若指定醫(yī)生當(dāng)日預(yù)約量已滿,則預(yù)約失敗。預(yù)約結(jié)果隨機(jī)返回給患者。</p><p> ?、芸蓪?duì)已經(jīng)進(jìn)行預(yù)約的情況查看或撤

58、消。</p><p> ?、蓊A(yù)約成功后可查詢主治醫(yī)生信息,病例信息。</p><p><b>  (2)醫(yī)生角色</b></p><p> ?、倏刹榭搭A(yù)約患者的情況。</p><p><b> ?、诳刹樵兓颊卟±?lt;/b></p><p><b> ?、劭蓜?chuàng)建患者病

59、歷。</b></p><p>  ④可對(duì)患者的病例進(jìn)行修改。</p><p><b> ?。?)管理員角色</b></p><p>  有固定的帳號(hào),直接在數(shù)據(jù)庫(kù)添加,不能注冊(cè)成管理員,可以添加和刪除醫(yī)生帳號(hào),對(duì)醫(yī)生用戶進(jìn)行管理。但不能管理患者用戶,保證患者的隱私。</p><p>  3.2 系統(tǒng)設(shè)計(jì)思想&

60、lt;/p><p>  3.2.1 數(shù)據(jù)庫(kù)層-邏輯層-表示層三層結(jié)構(gòu)</p><p>  服務(wù)器端三層結(jié)構(gòu)及之間的關(guān)系如圖3-1所示。</p><p>  圖3.1 服務(wù)器端體系結(jié)構(gòu)</p><p>  3.2.2 角色模塊設(shè)計(jì)-設(shè)計(jì)模式</p><p>  整個(gè)系統(tǒng)中有三種用戶:醫(yī)生、患者、管理員,他們之間沒(méi)有相互的

61、操作,因此可以封裝到各自的類中去。dboperation包中設(shè)計(jì)了一個(gè)抽象父類DBOperation,具體的角色類(Admin、Patient、Doctor)從它繼承。將它的子類所公用的方法劃分成兩類進(jìn)行設(shè)計(jì)。其中一類方法在各個(gè)子類內(nèi)部的具體實(shí)現(xiàn)時(shí)間,這些方法被直接設(shè)計(jì)在DBOperation類中,供子類繼承;另一類方法在各個(gè)子類內(nèi)部的具體實(shí)現(xiàn)不相同,這些方法被設(shè)計(jì)成抽象方法,由子類負(fù)責(zé)實(shí)現(xiàn)。</p><p> 

62、 3.2.3 與數(shù)據(jù)庫(kù)的連接</p><p>  設(shè)計(jì)一個(gè)類只負(fù)責(zé)與數(shù)據(jù)庫(kù)的連接工作,當(dāng)與數(shù)據(jù)庫(kù)成功連接后,該類將能返回一個(gè)可靠的數(shù)據(jù)庫(kù)連接對(duì)象供其他類使用。每當(dāng)用戶開(kāi)始操作,即登錄成功就開(kāi)始連接數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)的連接貫穿整個(gè)用戶操作的全過(guò)程,不會(huì)是每個(gè)操作進(jìn)行一次連接,這樣太消耗數(shù)據(jù)庫(kù)資源,只到用戶完成操作,注銷退出后才斷開(kāi)數(shù)據(jù)庫(kù)連接。</p><p>  3.2.4 日志記錄<

63、/p><p>  為了便于調(diào)試與服務(wù)器信息的記錄,設(shè)計(jì)一個(gè)類負(fù)責(zé)將需要的信息記入本地硬盤(pán)上的日志文件中。在開(kāi)始系統(tǒng)運(yùn)行開(kāi)始,日記系統(tǒng)就開(kāi)始記錄,記錄在log文件夾里面,存放格式是*.txt文件,當(dāng)用戶的每個(gè)操作都會(huì)記錄到日記里面,不管是正確操作,錯(cuò)誤操作還是誤操作,都會(huì)記錄。而且連系統(tǒng)的異常和數(shù)據(jù)庫(kù)異常都會(huì)記錄在日志上,這樣方便管理員的系統(tǒng)維護(hù)工作。而且日志每條記錄都顯示實(shí)時(shí)的時(shí)間。</p><p

64、>  3.3 系統(tǒng)功能分析</p><p>  根據(jù)系統(tǒng)所要求實(shí)現(xiàn)的功能要求,不同的用戶具有不同的操作權(quán)限,本系統(tǒng)主要?jiǎng)澐譃槿笥脩裟K:患者、醫(yī)生、管理員,模塊圖如下所示:</p><p>  圖3.2 系統(tǒng)功能模塊劃分</p><p><b>  3.4 業(yè)務(wù)流程</b></p><p>  根據(jù)現(xiàn)實(shí)的醫(yī)院門

65、診業(yè)務(wù)流程,以及根據(jù)系統(tǒng)功能模塊的分析,規(guī)劃出該系統(tǒng)的業(yè)務(wù)流程圖</p><p>  圖 3.3 業(yè)務(wù)流程圖</p><p>  第四章 系統(tǒng)實(shí)現(xiàn)與詳細(xì)設(shè)計(jì)</p><p><b>  4.1 數(shù)據(jù)庫(kù)設(shè)計(jì)</b></p><p>  當(dāng)一個(gè)系統(tǒng)涉及數(shù)據(jù)庫(kù)時(shí),其運(yùn)行效率、冗余程度、可靠性、穩(wěn)定性等評(píng)價(jià)指標(biāo)除了與上層的代碼

66、有關(guān)外,更多地會(huì)受到低層數(shù)據(jù)庫(kù)效率的影響。因此,一個(gè)好的數(shù)據(jù)庫(kù)設(shè)計(jì)能夠讓你的系統(tǒng)跑的更順暢、穩(wěn)定[5]。</p><p>  4.1.1 設(shè)計(jì)思路</p><p>  一、確定各實(shí)體間的關(guān)系</p><p>  首先確定各個(gè)實(shí)體之間的相互關(guān)系,這是設(shè)計(jì)好一個(gè)數(shù)據(jù)庫(kù)的基礎(chǔ)。實(shí)體之間的關(guān)系圖如圖4-1所示</p><p>  圖4.1 實(shí)體關(guān)系

67、圖</p><p>  二、將實(shí)體和關(guān)系轉(zhuǎn)化為表</p><p>  將各個(gè)角色的所有信息分別放在獨(dú)立的表中,其中包括該角色的全部信息。選定一個(gè)字段作為主鍵,這個(gè)字段存儲(chǔ)的信息在整個(gè)表中兩兩必須相異,比如本次設(shè)計(jì)中,醫(yī)生編號(hào)(DID)等。如果表中沒(méi)有此類信息,可人為加入惟一的ID用于標(biāo)志,比如本次設(shè)計(jì)中的PID、AID、QID、HID等。</p><p>  三、主

68、鍵是唯一的依賴性</p><p>  保證表中其他字段只與主鍵有關(guān)系,如果一組信息同時(shí)與一個(gè)以上的表或者一個(gè)表中一個(gè)以上的字段有關(guān)系,則必須將這組信息抽出去獨(dú)立構(gòu)成一張表。</p><p><b>  四、指定索引</b></p><p>  對(duì)所有會(huì)成為查詢關(guān)鍵字的字段進(jìn)行索引,以提高查詢效率。</p><p>  4

69、.1.2 表的設(shè)計(jì)</p><p>  一、醫(yī)生表(doctor)</p><p>  用來(lái)存儲(chǔ)醫(yī)生個(gè)人信息,其中“Password”字段在記錄插入時(shí)與“DID”字段信息相同,因此醫(yī)生在第一次登錄后應(yīng)該及時(shí)地更改自己的密碼</p><p>  表4-1 醫(yī)生表結(jié)構(gòu)</p><p>  二、患者表(Patient)</p>&l

70、t;p>  表4-2 患者表結(jié)構(gòu)</p><p><b>  續(xù)表4-2</b></p><p>  值得注意的是PID設(shè)置成Identity類型是為了添加患者記錄時(shí),患者編號(hào)能自動(dòng)增長(zhǎng)。這樣對(duì)患者注冊(cè)時(shí)提供方便,而且又是PK,又方便數(shù)據(jù)庫(kù)操作。</p><p>  三、病歷記錄表(history)</p><p>

71、;  病歷記錄表記錄了患者的病歷信息,以doctor字段與doctor表建立關(guān)系,以patient字段與patient表建立關(guān)系。當(dāng)finished字段設(shè)為“1”時(shí),邏輯層將不能對(duì)記錄進(jìn)行修改,只能查詢。</p><p>  表 4-3 病歷記錄表結(jié)構(gòu)</p><p>  四、預(yù)約記錄表(pinqueue)</p><p>  預(yù)約記錄表記錄了已預(yù)約但尚未創(chuàng)建病歷的

72、患者的信息。在這一階段患者可以取消預(yù)約,而醫(yī)生創(chuàng)建病歷也會(huì)刪除記錄,這里對(duì)預(yù)約就診時(shí)間(Day字段)的約束條件,其取值范圍被限定在0~6之間。</p><p>  表4-4 預(yù)約記錄表結(jié)構(gòu)</p><p><b>  續(xù)表4-4</b></p><p>  五、管理員表(administrator)</p><p> 

73、 管理員表存儲(chǔ)了與管理員有關(guān)的信息,如用戶名、密碼、電子郵件、真實(shí)姓名 等。注意這里將管理員登錄用戶名設(shè)為索引,目的是為了提高查詢時(shí)的效率。</p><p>  表4-5 管理員表結(jié)構(gòu)</p><p>  六、醫(yī)生最大可預(yù)約數(shù)量表(appointment)和當(dāng)前可預(yù)約數(shù)量表(curappointment)</p><p>  這2個(gè)表存儲(chǔ)了醫(yī)生每天可預(yù)約的最大數(shù)量和

74、當(dāng)前可預(yù)約數(shù)量,在邏輯層中不提供對(duì)其的修改操作,只能在管理員添加醫(yī)生帳戶時(shí)輸入。以DID字段與doctor表中建立關(guān)系。而對(duì)于curappointment表,邏輯層提供修改方法。即醫(yī)生的可預(yù)約數(shù)量要與患者的預(yù)約和取消預(yù)約操作相聯(lián)系。</p><p>  表4-6 醫(yī)生最大可預(yù)約數(shù)量表結(jié)構(gòu)</p><p><b>  續(xù)表4-6</b></p><p

75、>  表4-7 醫(yī)生當(dāng)前可預(yù)約數(shù)量表結(jié)構(gòu)</p><p><b>  續(xù)表4-7</b></p><p>  4.1.3 表關(guān)系圖</p><p>  圖 4.2 表關(guān)系圖</p><p>  在SQL Server的hospital數(shù)據(jù)庫(kù)中的關(guān)系圖中,新建關(guān)系圖,把所有要用到的表添加進(jìn)去,然后根據(jù)下表的關(guān)聯(lián)進(jìn)行

76、操作,就可以生成上面的關(guān)系圖。</p><p>  表 4-8 各表之間的關(guān)系</p><p><b>  續(xù)表4-8</b></p><p>  值得注意的是與字符串尤其是中文字符串相比,數(shù)據(jù)庫(kù)在處理字符、數(shù)字上更有效率,因此一些復(fù)雜度有限的字符串?dāng)?shù)據(jù)應(yīng)該設(shè)計(jì)成字符或數(shù)字類型,并與字符串建立一一對(duì)應(yīng)的關(guān)系,而把轉(zhuǎn)換工作交給邏輯層去處理。本次設(shè)

77、計(jì)中的“性別”字段,雖然使用“男”、“女”作為存儲(chǔ)數(shù)據(jù)更直觀,但使用“0”、“1”來(lái)代替可以帶來(lái)性能上的提高。</p><p>  4.2 邏輯層的設(shè)計(jì)</p><p>  4.2.1 邏輯層包結(jié)構(gòu)設(shè)計(jì)</p><p>  邏輯層的設(shè)計(jì)是本次畢業(yè)設(shè)計(jì)的重點(diǎn)環(huán)節(jié),根據(jù)三層結(jié)構(gòu),邏輯層封裝了系統(tǒng)能夠執(zhí)行的所有機(jī)制和程序,以及對(duì)數(shù)據(jù)庫(kù)的操作。用戶只要在表示層里面調(diào)用邏輯

78、層內(nèi)相映的CLASS文件就可以了,這些類文件都存放在/WEB-INF/CLASSES下面。而且程序只要編譯一次,就可以多次使用[2]。本次設(shè)計(jì)的邏輯層Bean文件的存放路徑如圖4-3所示,所有源程序見(jiàn)附錄。</p><p>  圖4.3 邏輯層使用的Bean文件</p><p> ?。?)hospital包概述</p><p>  整個(gè)邏輯層都封裝在hospital

79、包中,其UML圖如圖4-4所示。</p><p>  圖4.4 hospital包的UML圖</p><p>  (2)hospital.db包的概述</p><p>  hospital.db封裝了整個(gè)系統(tǒng)用于完成基礎(chǔ)功能的類,如數(shù)據(jù)庫(kù)連接、日志記錄等。hospital.db包的UML圖如圖4-5所示。</p><p>  圖4.5 hos

80、pital.db包的UML圖</p><p>  hospital.db.Util:輔助類,用于完成一些JSP中常用的功能。</p><p>  hospital.db.InitServlet:初始化整個(gè)Servlet環(huán)境。</p><p>  hospital.db.DBconnection:與數(shù)據(jù)庫(kù)建立連接,返回Connection對(duì)象。</p>

81、<p>  hospital.db.Debug:記錄日志,將信息寫(xiě)入指定的日志文件中。</p><p> ?。?)hospital.db.dboperation包概述</p><p>  hospital.db.dboperation包封裝了所有與用戶角色有關(guān)的模型。其中DBOperation類是一個(gè)抽象類,用于建立用戶模型,供具體角色(Admin、Patient、Doctor)

82、繼承。其UML圖如圖4-6所示。</p><p>  圖4.6 hosptial.db.dboperation包的UML圖</p><p>  hospital.db.dboperation.DBOperation:建立用戶的抽象模型,供子類繼承。</p><p>  hospital.db.dboperation.Admin:繼承DBOperation,定義管理員

83、模型。</p><p>  hospital.db.dboperation.Patient:繼承DBOperation,定義患者模型。</p><p>  hospital.db.dboperation.Doctor:繼承DBOperation,定義醫(yī)生模型。</p><p>  hospital.db.dboperation.InvalidUserExceptio

84、n:繼承自Exception,用以封裝</p><p>  一個(gè)表示“非法用戶名”的異常。</p><p>  4.2.2 與數(shù)據(jù)庫(kù)建立連接類DBConnection</p><p>  本類位于hospital.db包中,由于Connection是一個(gè)非常耗資源的對(duì)象,因此在這里使用單例模式來(lái)設(shè)計(jì)DBConnection類,保證了整個(gè)生命周期內(nèi)只存在一個(gè)Conn

85、ection對(duì)象,該對(duì)象可以被其他類重復(fù)利用,這樣可以大大節(jié)省系統(tǒng)資源。下面是DBConnection類的部分代碼的說(shuō)明。</p><p>  package hospital.db;</p><p>  import java.sql.*;</p><p>  import hospital.db.*;</p><p>  /*本類用于與數(shù)

86、據(jù)庫(kù)建立接*/</p><p>  public abstract class DBConnection{</p><p>  private static Connection conn=null;</p><p>  /* 與數(shù)據(jù)庫(kù)建立連接,返回值-Connection對(duì)象*/</p><p>  public static Connec

87、tion getConnection(){</p><p>  String CLASSFORNAME="com.microsoft.jdbc.sqlserver.SQLServerDriver";</p><p>  String SERVANDDB="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseNam

88、e=hospital";</p><p>  /*調(diào)用JDBC驅(qū)動(dòng),以及定位hospital數(shù)據(jù)庫(kù)*/</p><p>  String USER="sa";</p><p>  String PWD="tiantang"; //數(shù)據(jù)庫(kù)管理員sa帳號(hào)和密碼</p><p><b>

89、  try{</b></p><p>  Class.forName(CLASSFORNAME);</p><p>  conn=DriverManager.getConnection(SERVANDDB,USER,PWD);</p><p>  Statement stmt=conn.createStatement(ResultSet.TYPE_S

90、CROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); </p><p>  Debug.log("Connection created."); //連接成功,寫(xiě)入LOG文件</p><p>  }catch(Exception ex)</p><p><b>  {</b></p&

91、gt;<p>  Debug.log(Debug.getExceptionMsg(ex)); //連接拋出錯(cuò)誤,也寫(xiě)入LOG文件</p><p><b>  }</b></p><p>  return conn;</p><p><b>  } }</b></p><p>  該程

92、序中一些關(guān)鍵的原理值得說(shuō)明一下。將類定義為抽象類防止被實(shí)例化,這樣可以保證內(nèi)部封裝的Connection對(duì)象只能用該類定義的靜態(tài)方法(getConnection())來(lái)訪問(wèn)。將內(nèi)部的Connection對(duì)象“conn”定義為靜態(tài)私有變量,保證整個(gè)生命周期只有一份“conn”實(shí)例存在,且不能被其他類直接訪問(wèn)。</p><p>  數(shù)據(jù)庫(kù)服務(wù)器為了保證資源被充分利用,會(huì)設(shè)定一個(gè)連接保持時(shí)限,當(dāng)一個(gè)連接時(shí)限內(nèi)與數(shù)據(jù)庫(kù)沒(méi)

93、有通信時(shí),會(huì)被服務(wù)器關(guān)閉。而“Debug.log()”是定義在Debug類中的靜態(tài)方法,用來(lái)將信息存入日志文件。</p><p>  關(guān)于hosptial.db包中其他類的介紹和說(shuō)明本節(jié)不在贅述,源程序見(jiàn)附錄。</p><p>  4.2.3 用戶角色類</p><p>  (1)醫(yī)生模型Doctor類</p><p>  本類位于hosp

94、ital.db.dboperation包中,doctor類封狀了醫(yī)生角色可執(zhí)行的所有操作。比如登錄,查詢患者病歷,修改病歷等操作。每個(gè)對(duì)象對(duì)應(yīng)一個(gè)可執(zhí)行操作。</p><p>  圖4.7 doctor類對(duì)象列表</p><p> ?。?)管理員模型Admin類</p><p>  本類位于hospital.db.dboperation包中,admin類封狀了管理員

95、可執(zhí)行的所有操作,根據(jù)下圖,每個(gè)對(duì)象對(duì)應(yīng)一個(gè)操作。</p><p>  圖4.8 admin類對(duì)象列表</p><p> ?。?)患者模型Patient類</p><p>  本類位于hospital.db.dboperation包中,patient類封裝了患者角色可執(zhí)行的所有操作。比如登錄,查詢醫(yī)生信息,預(yù)約等操作。在編寫(xiě)程序時(shí),每個(gè)對(duì)象就是一個(gè)操作。如addPa

96、tient()就是針對(duì)患者注冊(cè)的一個(gè)公有對(duì)象。</p><p>  圖4.9 patient類對(duì)象列表</p><p><b>  4.3 表達(dá)層設(shè)計(jì)</b></p><p>  4.3.1 表達(dá)層設(shè)計(jì)概述</p><p>  表示層是信息系統(tǒng)的用戶接口部分,即人機(jī)界面,是用戶與系統(tǒng)間交互信息的窗口,主要功能是指導(dǎo)操作

97、人員使用界面,輸入數(shù)據(jù)、輸出結(jié)果。它并不擁有企業(yè)邏輯,或只擁有部分不涉及企業(yè)核心機(jī)密的應(yīng)用邏輯[8]。</p><p>  當(dāng)邏輯層編寫(xiě)完畢,只剩下最后一項(xiàng)工作,允許用戶以適當(dāng)?shù)姆绞酵ㄟ^(guò)邏輯層與數(shù)據(jù)庫(kù)層交互,而這正是表示層的工作。這里就要通過(guò)功能完整的JSP代碼和HTML代碼來(lái)整合。所以下面將JSP頁(yè)面與邏輯層的整合過(guò)程中的重要部分。</p><p><b> ?。?)聲明部分&

98、lt;/b></p><p>  這個(gè)部分用“<%@……%>”包括,用于設(shè)定一些于JSP頁(yè)面有關(guān)的信息。一般第一行定義了頁(yè)面所使用的字符集,中文界面一般使用GB2312;接下來(lái)使用“<%@page import=“……”%>”定義頁(yè)面需要導(dǎo)入的包,即“import”語(yǔ)句,本次設(shè)計(jì)中一般被用到的包有:“hospital.db.*”、“hospital.db.dboperation.*”

99、、“java.sql.*”[11]。</p><p> ?。?)HTML設(shè)計(jì)部分</p><p>  這部分更多地使用HTML代碼把表格搭建出來(lái)并進(jìn)行美化。一般使用HTML中的</p><p>  form標(biāo)簽、table標(biāo)簽和div標(biāo)簽以及輔助action屬性來(lái)搭建框架和美化。其中加入“<%@.....%>”的JSP代碼段,使得實(shí)現(xiàn)動(dòng)態(tài)頁(yè)面。</

100、p><p><b>  (3)頁(yè)面數(shù)據(jù)處理</b></p><p>  這個(gè)部分是整個(gè)JSP頁(yè)面的核心部分,負(fù)責(zé)關(guān)于系統(tǒng)的權(quán)限檢查,從頁(yè)面收集數(shù)據(jù)、對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作、檢測(cè)操作結(jié)果等。</p><p>  (4)釋放數(shù)據(jù)庫(kù)資源</p><p>  當(dāng)所有操作都完成,用戶結(jié)束操作或關(guān)閉界面,系統(tǒng)調(diào)用DBOperation類中的“

101、closeConnection()”方法來(lái)釋放數(shù)據(jù)資源。</p><p>  表達(dá)層設(shè)計(jì)中使用的幾大JSP對(duì)象</p><p><b>  Request對(duì)象</b></p><p>  該對(duì)象封裝了用戶提交的信息,通過(guò)調(diào)用該對(duì)象相應(yīng)的方法可以獲得封裝的信息,即使用該對(duì)象可以獲取用戶提交的信息。 如request.getParameter()方

102、法可以獲取該表單通過(guò)text提交的信息。、</p><p>  Response對(duì)象</p><p>  該對(duì)象封裝了對(duì)客戶的請(qǐng)求做出的動(dòng)態(tài)的響應(yīng),向客戶端發(fā)送數(shù)據(jù)。如response.sendRedirect()方法來(lái)實(shí)現(xiàn)客戶的重定向,就是當(dāng)用戶進(jìn)行了之前的操作,就會(huì)使用這個(gè)方法來(lái)跳轉(zhuǎn)到別的頁(yè)面。</p><p><b>  Session對(duì)象</

103、b></p><p>  它是在第一個(gè)JSP頁(yè)面被裝載時(shí)自動(dòng)創(chuàng)建,完成會(huì)話期間的管理,當(dāng)會(huì)話結(jié)束,session自動(dòng)釋放。如session.getId()方法是獲取Session對(duì)象編號(hào)。</p><p>  Application對(duì)象</p><p>  服務(wù)器啟動(dòng)后就產(chǎn)生了這個(gè)Application對(duì)象,當(dāng)客戶在所訪問(wèn)的各個(gè)頁(yè)面之間瀏覽時(shí),這個(gè)Applic

104、ation對(duì)象都是同一個(gè),直到服務(wù)器關(guān)閉。如application.setAttribute(String key)方法是獲取application對(duì)象中含有關(guān)鍵字的對(duì)象。</p><p><b>  其他對(duì)象</b></p><p>  在JSP幾大內(nèi)置對(duì)象中,還有Out,Cookie,Config,Page和Exception等,但在本次設(shè)計(jì)中不是很常用,所以不在

105、贅述[8]。</p><p>  本次設(shè)計(jì)的系統(tǒng),有三個(gè)用戶角色,每個(gè)角色都是獨(dú)立的操作。所以這次設(shè)計(jì)針對(duì)每個(gè)用戶的操作界面即每個(gè)用戶獨(dú)立操作的表示層。在系統(tǒng)文件中,…/hospital/admin;…/hospital/patient;…/hospital/doctor三個(gè)文件夾中分別放了每個(gè)用戶獨(dú)立操作的JSP頁(yè)面。比如管理員文件中的addDoctor.jsp就是來(lái)實(shí)現(xiàn)添加醫(yī)生信息的JSP文件。所有的JSP文

106、件名簡(jiǎn)單好懂,一目了然,便于再次開(kāi)發(fā)的時(shí)候方便設(shè)計(jì)。</p><p>  4.4 系統(tǒng)功能實(shí)現(xiàn)與演示</p><p>  由于系統(tǒng)有3個(gè)角色模型,每個(gè)角色的模型都有很多執(zhí)行操作,介紹繁雜留給用戶自己體驗(yàn)。所以本節(jié)介紹一些基本的用戶操作來(lái)實(shí)現(xiàn)基本的功能。</p><p>  一、打開(kāi)IE輸入http://localhost:8080/hospital進(jìn)入系統(tǒng)主界面&l

107、t;/p><p>  圖4.10 系統(tǒng)主界面</p><p>  二、選擇角色類型進(jìn)行登錄,點(diǎn)擊左邊導(dǎo)航鏈接進(jìn)行操作。下圖是管理員登錄界面,其他角色用戶登錄也是一樣。所以用一張圖來(lái)代表。</p><p>  圖4.11 管理員登錄界面</p><p>  三、當(dāng)患者登錄成功以后,會(huì)回到主界面,再點(diǎn)擊患者用戶,就可以看見(jiàn)下面出現(xiàn)很多操作條目,點(diǎn)擊其

108、中的條目進(jìn)行患者必須的操作。比如查詢醫(yī)生信息,預(yù)約等。</p><p>  圖4.12 患者查詢醫(yī)生信息界面</p><p>  當(dāng)患者用戶點(diǎn)擊醫(yī)生,就進(jìn)入預(yù)約界面。選擇合適的時(shí)間進(jìn)行就醫(yī),如果想取消預(yù)約,就在查詢預(yù)約中,點(diǎn)擊顯示的記錄就可以提示是否取消。</p><p>  四、患者就醫(yī)過(guò)后可以查詢自己的病歷,以及出訪和是否治療結(jié)束。</p><

109、;p>  圖4.13 患者查詢病歷信息界面</p><p>  五、如果患者是新用戶,想要進(jìn)入預(yù)約系統(tǒng)就要注冊(cè)新帳號(hào)。</p><p>  圖4.14 患者注冊(cè)界面</p><p>  六、管理員登錄進(jìn)去后可以添加,刪除醫(yī)生信息和帳戶。</p><p>  圖4.15 管理員管理醫(yī)生信息界面</p><p>  

110、七、刪除醫(yī)生信息只需要點(diǎn)選醫(yī)生姓名就可以獲得是否刪除的提示。</p><p>  圖4.16 是否刪除醫(yī)生信息</p><p>  八、醫(yī)生第一次登錄后應(yīng)該及時(shí)更改密碼,因?yàn)閿?shù)據(jù)庫(kù)默認(rèn)的醫(yī)生帳戶和密碼是一致的,為了安全應(yīng)該改密碼。</p><p>  圖4.17 醫(yī)生更改密碼界面及可執(zhí)行操作界面</p><p>  到這里,該系統(tǒng)的基本功能設(shè)

111、計(jì)和界面操作基本介紹完畢,整個(gè)系統(tǒng)操作簡(jiǎn)單,界面友好,根據(jù)左邊導(dǎo)航欄,用戶的操作一目了然,基本不存在難度。而且功能也基本實(shí)現(xiàn),而且移植性高,只要重新編譯hospital.db包下面的DBConnection.java文件即可。當(dāng)然數(shù)據(jù)庫(kù)的移植也要匹配。所以本次系統(tǒng)設(shè)計(jì)的功能基本成功,但還有待進(jìn)一步的提高和深化。</p><p><b>  第五章 設(shè)計(jì)總結(jié)</b></p>&

112、lt;p>  從接受畢業(yè)設(shè)計(jì)任務(wù)到設(shè)計(jì)完成已經(jīng)差不多3個(gè)月了。整個(gè)設(shè)計(jì)要求對(duì)MS SQL Server數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)的基本實(shí)現(xiàn)方法以及實(shí)現(xiàn)技術(shù)、工具有一定的了解。而且,在設(shè)計(jì)醫(yī)院門診查詢系統(tǒng)時(shí),需要對(duì)功能需求考慮完善。雖然我以前也做過(guò)類似應(yīng)用系統(tǒng)的設(shè)計(jì)開(kāi)發(fā),但通過(guò)本次設(shè)計(jì)還是受益匪淺。在整個(gè)設(shè)計(jì)過(guò)程中,系統(tǒng)的整體構(gòu)架很早就完成了,接下來(lái)的細(xì)節(jié)問(wèn)題卻使我頗傷腦筋。隨著設(shè)計(jì)程度的不斷深入,又遇到了一些早期沒(méi)有想到的問(wèn)題。為了解決這些問(wèn)

113、題,有時(shí)還要對(duì)幾個(gè)模塊進(jìn)行大幅度的修改。在設(shè)計(jì)中,還需要進(jìn)行細(xì)致的測(cè)試工作,以發(fā)現(xiàn)程序的錯(cuò)誤和功能上的不足。</p><p>  本系統(tǒng)開(kāi)發(fā)時(shí)使用的系統(tǒng)為Windows XP Professional版本。數(shù)據(jù)庫(kù)的建立使用的是MS SQL Server 2000個(gè)人版。數(shù)據(jù)訪問(wèn)方法是使用通過(guò)調(diào)用封裝了JDBC驅(qū)動(dòng)的Bean程序?qū)崿F(xiàn)。本系統(tǒng)是基于JSP設(shè)計(jì)的。數(shù)據(jù)庫(kù)的設(shè)計(jì)由于在校學(xué)習(xí)了這門課程,所以,著手較快。設(shè)計(jì)

溫馨提示

  • 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)論