某醫(yī)院網(wǎng)上預(yù)約掛號系統(tǒng)的設(shè)計_第1頁
某醫(yī)院網(wǎng)上預(yù)約掛號系統(tǒng)的設(shè)計_第2頁
某醫(yī)院網(wǎng)上預(yù)約掛號系統(tǒng)的設(shè)計_第3頁
某醫(yī)院網(wǎng)上預(yù)約掛號系統(tǒng)的設(shè)計_第4頁
某醫(yī)院網(wǎng)上預(yù)約掛號系統(tǒng)的設(shè)計_第5頁
已閱讀5頁,還剩100頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

摘要隨著時代的發(fā)展以及人口的增長,人們的生活節(jié)奏也變得越來越緊湊,而掛號看病難成了在當(dāng)今社會最典型的問題。當(dāng)人口的基數(shù)情況下,無論是對患者還是對醫(yī)院方而言,掛號看病都成了一個極為困擾的問題。這是由于傳統(tǒng)的門診掛號方式不適用于處理數(shù)目龐大的患者。為了解決這一問題,我設(shè)計了醫(yī)院預(yù)約掛號系統(tǒng)。該系統(tǒng)是以JAVAWEB的技術(shù)利用MVC框架結(jié)合Servlet與MySql數(shù)據(jù)庫來編寫一個可以為患者提供線上進(jìn)行預(yù)約的系統(tǒng)?;颊呖梢酝ㄟ^瀏覽器訪問預(yù)約掛號系統(tǒng)來進(jìn)行網(wǎng)上預(yù)約掛號,也可以對預(yù)約信息進(jìn)行取消處理,而不是需要到醫(yī)院現(xiàn)場進(jìn)行排隊(duì)掛號,以此減少整個看病流程。同時,該系統(tǒng)也為醫(yī)院方提供了兩種類型用戶,即醫(yī)生用戶和管理員用戶,兩種用戶皆可以于瀏覽器訪問使用該系統(tǒng)。醫(yī)生用戶可對自身所屬部門的預(yù)約信息進(jìn)行接受、拒絕、取消以及確認(rèn)完成處理。管理員用戶可對整個系統(tǒng)中的用戶信息、部門信息以及預(yù)約信息進(jìn)行增刪改查的操作。該系統(tǒng)能在一定程度上減輕醫(yī)院人力資源的損耗,提高醫(yī)院的醫(yī)療效率,緩解當(dāng)今社會緊張的醫(yī)患關(guān)系。關(guān)鍵字:JAVAWEB、MVC框架、Servlet、MySql數(shù)據(jù)庫DesignandimplementationofHospitalReservationSystemAbstractWiththedevelopmentofthetimesandthegrowthofthepopulation,people'sliferhythmhasbecomemoreandmorecompact,andthedifficultyofregisteringadoctorhasbecomethemosttypicalproblemintoday'ssociety.Whenthebaseofthepopulation,whetheritisforpatientsorhospitals,registeredmedicaltreatmenthasbecomeaverytroublesomeproblem.Thisisbecausethetraditionaloutpatientregistrationmethodisnotsuitableforhandlingalargenumberofpatients.Tosolvethisproblem,Idesignedahospitalappointmentregistrationsystem.ThesystemisbasedonJAVAWEBtechnologyusingMVCframeworkcombinedwithservletandmysqldatabasetowriteasystemthatcanprovideonlineappointmentsforpatients.Patientscanaccesstheappointmentregistrationsystemthroughabrowsertoperformonlineappointmentregistration,andcanalsocancelthereservationinformation,insteadofgoingtothehospitalsitetoqueueupandregister,therebyreducingtheentiremedicaltreatmentprocess.Atthesametime,thesystemalsoprovidestwotypesofusersforthehospital,namelydoctorusersandadministratorusers.Bothuserscanaccessandusethesysteminthebrowser.Doctoruserscanaccept,reject,cancel,andconfirmthecompletionoftheappointmentinformationoftheirowndepartment.Administratoruserscanadd,delete,modify,andcheckuserinformation,departmentinformation,andreservationinformationintheentiresystem.Thesystemcanreducethelossofhumanresourcesinthehospitaltoacertainextent,improvethemedicalefficiencyofthehospital,andeasethetensionbetweendoctorsandpatientsintoday'ssociety.Keywords:JAVAWEB,MVCFramework,Servlet,MySqlDatabase 目錄TOC\o"1-3"\h\u1前言 前言1.1現(xiàn)狀傳統(tǒng)的醫(yī)院門診掛號是實(shí)時掛號、實(shí)時就診的門診模式。但是這種就診的模式給患者帶來諸多不便。人民反映最突出的就是“三長一短”的問題,也就是掛號時間長、候診時間長、繳費(fèi)時間長以及看病時間短。據(jù)網(wǎng)上統(tǒng)計,患者在門診有六成以上的時間都是用來等候的,真正就診的時間卻是非常地短。門診掛號廳的建立,需要投入大筆的費(fèi)用以及巨大的地方空間,同時還需要人員管理,這是耗費(fèi)不少的資源。此外,如若遇上高峰期時,掛號大廳人滿為患很可能導(dǎo)致患者病菌交叉感染,這樣對于掛號廳的建設(shè)管理也是有一定的壓力和難度。其次,患者方面也存在著行動不便的情況,他們不僅要到掛號廳排隊(duì)等號,而且還不一定能排上號看上病,這些患者不得己立刻轉(zhuǎn)移到其他醫(yī)院再掛號以及等待。1.2目的本次的醫(yī)院預(yù)約掛號系統(tǒng)的設(shè)計以及實(shí)現(xiàn),主要是為了解決患者們看病是減少進(jìn)行排隊(duì)掛號等不必要的時間問題,也是為了減少醫(yī)院方關(guān)于排隊(duì)掛號管理的人力損耗以及醫(yī)院空間的占用,減輕患者到醫(yī)院看病的流程臃腫,提高醫(yī)院在人力、物力以及空間時間等多種因素的利用效率,也是為了緩解當(dāng)前社會的部分壓力,促進(jìn)社會向更先進(jìn)、更快捷、更方便的方向進(jìn)行發(fā)展。1.3意義如今計算機(jī)和網(wǎng)絡(luò)技術(shù)發(fā)展趨勢良好,網(wǎng)絡(luò)的速度,穩(wěn)定性和安全性不斷地在改善,計算機(jī)和網(wǎng)絡(luò)設(shè)備的性價比也不斷地在提高,群眾們都普遍認(rèn)可了這種信息傳遞媒介的便利性以及有效性。因此,通過網(wǎng)絡(luò)實(shí)現(xiàn)預(yù)約掛號的想法也應(yīng)運(yùn)而生,這對于加強(qiáng)門診掛號的便捷性、安全性、高效性和提高節(jié)省資源效益方面都有著重大的意義。這是對現(xiàn)行的實(shí)時掛號、實(shí)時就診門診模式的補(bǔ)充和完事,是為了緩解群眾看病問題的有益嘗試,也是為了方便患者到醫(yī)院看病,免去需要到醫(yī)院現(xiàn)場排隊(duì)掛號的時間,縮減看病的流程。同時,也為醫(yī)院減少不必要的人力資源的浪費(fèi)。2技術(shù)以及開發(fā)環(huán)境簡介2.1JAVA簡介Java是一門面向?qū)ο缶幊陶Z言,在吸收了C++語言的各種優(yōu)點(diǎn),還摒棄了C++里難以理解的多繼承、指針等概念,因此Java語言具有功能強(qiáng)大和簡單易用兩個特征。Java語言作為靜態(tài)面向?qū)ο缶幊陶Z言的代表,極好地實(shí)現(xiàn)了面向?qū)ο罄碚?,允許程序員以優(yōu)雅的思維方式進(jìn)行復(fù)雜的編程。Java具有簡單性、面向?qū)ο蟆⒎植际?、健壯性、安全性、平臺獨(dú)立與可移植性、多線程、動態(tài)性等特點(diǎn)。Java可以編寫桌面應(yīng)用程序、Web應(yīng)用程序、分布式系統(tǒng)和嵌入式系統(tǒng)應(yīng)用程序等。2.2HTML簡介即超文本標(biāo)記語言,標(biāo)準(zhǔn)通用標(biāo)記語言下的一個應(yīng)用?!俺谋尽本褪侵疙撁鎯?nèi)可以包含圖片、鏈接,甚至音樂、程序等非文字元素。超文本標(biāo)記語言的結(jié)構(gòu)包括“頭”部分(Head)、和“主體”部分(Body),其中“頭”部提供關(guān)于網(wǎng)頁的信息,“主體”部分提供網(wǎng)頁的具體內(nèi)容。2.3MYSQL簡介MySQL是一個關(guān)系型數(shù)據(jù)庫管理系統(tǒng),由瑞典MySQLAB公司開發(fā),目前屬于Oracle旗下產(chǎn)品。MySQL是最流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(RDBMS)之一。2.4CSS簡介CSS英文全稱為CascadingStyleSheets,即層疊樣式表,是一種用來表現(xiàn)HTML或XML等檔樣式的計算機(jī)語言。CSS不僅可以靜態(tài)地修飾網(wǎng)頁,還可以配合各種腳本語言動態(tài)地對網(wǎng)頁各元素進(jìn)行格式化。CSS能夠?qū)W(wǎng)頁中元素位置的排版進(jìn)行像素級精確控制,支持幾乎所有的字體字號樣式,擁有對網(wǎng)頁對象和模型樣式編輯的能力。2.5JSP簡介JSP全名為JavaServerPages,中文名叫java服務(wù)器頁面,其根本是一個簡化的Servlet設(shè)計,其是由SunMicrosystems公司倡導(dǎo)、許多公司參與一起建立的一種動態(tài)網(wǎng)頁技術(shù)標(biāo)準(zhǔn)。JSP技術(shù)有點(diǎn)類似ASP技術(shù),它是在傳統(tǒng)的網(wǎng)頁HTML檔(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP標(biāo)記(tag),從而形成JSP檔,后綴名為(*.jsp)。用JSP開發(fā)的Web應(yīng)用是跨平臺的,既能在Linux下運(yùn)行,也能在其他操作系統(tǒng)上運(yùn)行。2.6JavaWeb簡介JavaWeb,是用Java技術(shù)來解決相關(guān)web互聯(lián)網(wǎng)領(lǐng)域的技術(shù)總和。web包括:web服務(wù)器和web客戶端兩部分。Java在客戶端的應(yīng)用有javaapplet不過現(xiàn)在使用的很少,Java在服務(wù)器端的應(yīng)用非常的豐富,比如Servlet,JSP和第三方框架等等。Java技術(shù)對Web領(lǐng)域的發(fā)展注入了強(qiáng)大的動力。2.7JAVAEE開發(fā)環(huán)境簡介JavaEE全稱JavaPlatform,EnterpriseEdition,是sun公司推出的企業(yè)級應(yīng)用程序版本。這個版本以前稱為J2EE。能夠幫助我們開發(fā)和部署可移植、健壯、可伸縮且安全的服務(wù)器端Java應(yīng)用程序。JavaEE是在JavaSE的基礎(chǔ)上構(gòu)建的,它提供Web服務(wù)、組件模型、管理和通信API,可以用來實(shí)現(xiàn)企業(yè)級的面向服務(wù)體系結(jié)構(gòu)(service-orientedarchitecture,SOA)和Web3.0應(yīng)用程序。3需求分析3.1系統(tǒng)設(shè)計目標(biāo)分析患者角度:于患者而言,傳統(tǒng)的醫(yī)院門診方式在目前人口眾多的環(huán)境中極為地不適宜?;颊呷绻结t(yī)院進(jìn)行排隊(duì)看病的話,絕大多數(shù)的患者有七八成的時間將花費(fèi)在排隊(duì)這一節(jié)點(diǎn)?;颊咴籴t(yī)院內(nèi)排隊(duì)主要是排隊(duì)掛號、排隊(duì)看病,以及排隊(duì)拿藥物,后兩者的所需要花費(fèi)的時間,由于醫(yī)院的人力以及物力的限制,目前而言并無更好的緩解方法,但是排隊(duì)掛號卻可以通過網(wǎng)上預(yù)約進(jìn)行消減這方面所浪費(fèi)的時間。假設(shè)一名患者距離醫(yī)院有著很長的一段距離,那么其可以先通過網(wǎng)上預(yù)約掛號來預(yù)先進(jìn)行預(yù)約從而,當(dāng)?shù)诌_(dá)醫(yī)院的時候恰好可以進(jìn)行看病,這樣就可以減輕患者在看病過程中所消耗的心力,也能防止因不同患者之間的接觸而導(dǎo)致交叉感染等現(xiàn)象。這樣能夠讓患者更輕松、方便地看病,減輕看病的焦慮。醫(yī)院角度:于醫(yī)院而言,眾多的患者前往醫(yī)院看病將增加醫(yī)院的壓力,并且無法有效地分配人力以及醫(yī)療資源來處理。同時,也要預(yù)防在掛號大廳內(nèi),患者與患者之間有可能發(fā)生的交叉感染,從而導(dǎo)致新型的病毒的誕生。若是醫(yī)院通過網(wǎng)上預(yù)約掛號來減少掛號大廳的患者數(shù)量的存在的話,那么將在很大程度上緩解醫(yī)院方的人力物力的壓力,同時也避免新病毒的誕生,從而提高醫(yī)院的治療效率。社會角度:當(dāng)今社會是個飛速發(fā)展的社會,也是個人口劇增的時代,而互聯(lián)網(wǎng)的存在讓生活中的許多事情變得更為方便簡潔。為了讓社會的秩序更好地維護(hù),互聯(lián)網(wǎng)應(yīng)用到各行各業(yè)是必然的環(huán)節(jié),而人們看病問題是社會中最重要,以及最嚴(yán)重的問題之一,因此,利用互聯(lián)網(wǎng)使用醫(yī)院預(yù)約掛號系統(tǒng)能夠有效地緩解社會的壓力,讓社會更加有序地運(yùn)行以及發(fā)展。3.2業(yè)務(wù)流程分析圖3.1一般患者看病流程圖如上圖3.1所示,該圖為一般患者到醫(yī)院進(jìn)行門診看病的流程。在圖中我們可以看到,患者首先需要進(jìn)行掛號,然后接受門診醫(yī)生的看診,在醫(yī)生診斷好患者的病情之后,患者則需要到門診收費(fèi)處進(jìn)行繳費(fèi)。之后根據(jù)患者的病情狀況,是到門診藥房取藥治療或者進(jìn)行住院治療。在整個的看病流程中,患者主要需要進(jìn)行的操作可總結(jié)為掛號、醫(yī)生診斷、繳費(fèi)以及接受治療。在這個流程中,核心部分為醫(yī)生診斷以及接受,但是由于受限于醫(yī)院方的人力資源的因素,該過程難以進(jìn)行縮減,除非擴(kuò)充相關(guān)的人力資源;繳納費(fèi)用亦是同理,都受限于醫(yī)院的人力資源以及醫(yī)療物資等因素,但是這個相對于前者要簡單些,因?yàn)槿藛T的篩選并不如前者嚴(yán)格。以上三個步驟皆以醫(yī)院方為主導(dǎo),都容易受限于醫(yī)院方的人力和物資資源的調(diào)用,若如果看病的患者增多了的話,傳統(tǒng)的醫(yī)院門診方式也在這時候暴露出了其弊端,即其整個看病的流程的時間將延長,呈現(xiàn)出醫(yī)療的低效性。為了解決這一問題,最有效的方式就是減少排隊(duì)的時間,而目前最直觀有效的則是減少甚至減去患者到醫(yī)院排隊(duì)掛號的時間。醫(yī)院預(yù)約掛號系統(tǒng)能夠有效地解決這一問題,患者可以通過醫(yī)院預(yù)約掛號系統(tǒng)來進(jìn)行預(yù)約掛號以及網(wǎng)上支付預(yù)約掛號費(fèi)用,這樣可以免去到醫(yī)院進(jìn)行排隊(duì)掛號的時間,同時提高醫(yī)療效率,可以讓患者更快更好地看病。3.3功能需求分析3.3.1管理員功能醫(yī)生用戶列表:后臺呈現(xiàn)出醫(yī)院方所有注冊的醫(yī)生用戶的信息列表,同時能夠?qū)︶t(yī)生用戶進(jìn)行添加、刪除、修改,以及查找等相關(guān)操作?;颊哂脩袅斜恚汉笈_呈現(xiàn)出醫(yī)院方所有注冊的患者用戶的信息列表,同時能夠?qū)颊哂脩暨M(jìn)行添加、刪除、修改,以及查找等相關(guān)操作。預(yù)約信息列表:后臺呈現(xiàn)出所有預(yù)約信息的列表,同時能夠?qū)︻A(yù)約信息進(jìn)行相關(guān)的添加、修改以及刪除等操作。管理員用戶管理:后臺呈現(xiàn)出所有管理員用戶信息的列表,同時對管理員用戶進(jìn)行添加、刪除、修改等操作。3.3.2醫(yī)生用戶功能查看可接受預(yù)約信息:醫(yī)生可以通過查看自身所在部門的預(yù)約信息,同時根據(jù)自身的實(shí)際情況來進(jìn)行決定,來拒絕或者接受顯示的預(yù)約。查看已接受預(yù)約信息:醫(yī)生可以查看自身已經(jīng)接受的預(yù)約信息,然后根據(jù)預(yù)約醫(yī)治的進(jìn)度來決定是否繼續(xù)進(jìn)行接受預(yù)約或者取消,若繼續(xù)接受預(yù)約的話,在完成病狀診斷之后可以來確認(rèn)預(yù)約是否完成。醫(yī)生用戶修改自身賬號密碼:醫(yī)生用戶可以修改自身賬號的密碼。3.3.3患者用戶功能進(jìn)行網(wǎng)上預(yù)約掛號:患者通過網(wǎng)上進(jìn)行預(yù)約掛號,免去到醫(yī)院大廳進(jìn)行排隊(duì)掛號。查看自身預(yù)約進(jìn)度:患者可以查看自身預(yù)約信息的預(yù)約進(jìn)度,同時可以對預(yù)約信息進(jìn)行取消預(yù)約的操作?;颊哂脩粜薷淖陨碣~號密碼:患者用戶可以修改自身賬號的密碼。余額充值:患者用戶可以進(jìn)行余額充值來確保可以進(jìn)行網(wǎng)上支付預(yù)約掛號的費(fèi)用?;颊哂脩糍~號注冊:患者用戶可以于網(wǎng)上自行進(jìn)行用戶注冊。3.4非功能需求分析用戶易用性需求:患者用戶以及醫(yī)生用戶都可以通過醫(yī)院預(yù)約掛號系統(tǒng)來進(jìn)行網(wǎng)上的預(yù)約掛號或者是接受以及拒絕預(yù)約,以此方便提高醫(yī)療效率。用戶安全性需求:患者用戶可以直接通過網(wǎng)上注冊來進(jìn)行用戶注冊,而醫(yī)生用戶則需要管理員來進(jìn)行醫(yī)生用戶的添加。系統(tǒng)可靠性需求:為了更為方便快捷得管理醫(yī)院預(yù)約掛號系統(tǒng),系統(tǒng)將管理員、醫(yī)生用戶,以及患者用戶,劃分成三個不同的用戶,避免不同類型的用戶之間的信息混亂。運(yùn)行環(huán)境約束:預(yù)約掛號系統(tǒng)的三個不同類型的用戶都可以通過瀏覽器來進(jìn)行訪問,并不需要下載其他任何軟件來進(jìn)行操作訪問。性能需求:為了更為方便快捷得進(jìn)行用戶的管理,醫(yī)生用戶可以通過不同部門進(jìn)行劃分歸類,而患者用戶則根據(jù)地址來進(jìn)行劃分歸類。4系統(tǒng)總體設(shè)計4.1系統(tǒng)架構(gòu)4.1.1數(shù)據(jù)庫設(shè)計為了方便醫(yī)院預(yù)約掛號系統(tǒng)的管理,我將關(guān)于醫(yī)院預(yù)約掛號系統(tǒng)的三個類型的用戶分配設(shè)計成三張成員表,分別為管理員用戶表(即admin),醫(yī)生用戶表(即doctor),患者用戶表(即patient)。同時還有存儲部門信息的部門表(即department),以及用以存儲預(yù)約信息的預(yù)約信息表(即reserve),一共為五張表,其關(guān)系如圖4.1。圖4.1表與表之間的關(guān)系在圖4.1中,我們可以看到五張表之間的關(guān)系。首先管理員用戶可以對患者用戶、醫(yī)生用戶、部門、預(yù)約信息四張表進(jìn)行管理,如對這四張表的信息進(jìn)行增刪改查等一系列操作,以確保系統(tǒng)的信息維護(hù)。而一個患者用戶只能進(jìn)行一次的預(yù)約掛號,而同屬于某個部門的醫(yī)生用戶有多個,而同一個部門的醫(yī)生可以對自身所屬的部門需要的預(yù)約信息進(jìn)行處理,如接受、拒絕、取消預(yù)約或者確認(rèn)預(yù)約完成。表4.1管理員用戶表成員名表內(nèi)列名類型長度默認(rèn)值主鍵非空其他約束管理員idUidint11無是是自增管理員用戶名uservarchar8無否是唯一密碼passwordvarchar10111111否是無如上表4.1所示,該表為管理員用戶表,用于存儲管理員信息的表。以絕大多數(shù)系統(tǒng)為例,管理員用戶的表主要核心成員為管理員id、管理員用戶名,以及管理員密碼這三個成員,管理員id主要是作為管理員用戶表的主鍵,用以在系統(tǒng)中作為進(jìn)行增刪改查等一系列的操作的標(biāo)識,同時其能自增,以方便之后注冊新的管理員的時候自動填寫管理員用的id而不需要手動在數(shù)據(jù)庫中填寫;管理員用戶名必須具備唯一性,這是為了以后管理員用戶進(jìn)行登錄的時候避免不同的用戶登錄同一個賬號,也避免用戶賬號的混淆;管理員用戶的密碼設(shè)置了默認(rèn)值,這是為之后其他管理員創(chuàng)建新的管理員對象的時候自動設(shè)置默認(rèn)密碼,同時以方便以后其他創(chuàng)建的新的管理員用戶的登錄以及使用。表4.2醫(yī)生用戶表成員名表內(nèi)列名類型長度默認(rèn)值主鍵非空其他約束醫(yī)生IDDTidint11無是是自增部門IDDPidint11無否是外鍵醫(yī)生名DTnamevarchar50無否是無密碼Passwordvarchar10111111否是無性別Sexvarchar10無否否無電話號碼Phonevarchar11無否是唯一如上表4.2所示,該表為醫(yī)生用戶表,用以存儲醫(yī)生用戶的相關(guān)信息。該表與管理員用戶表一樣具備相應(yīng)的ID,用戶名,以及密碼,密碼的默認(rèn)值也是為“111111”,同理亦是為了方便以后于系統(tǒng)中創(chuàng)建新的醫(yī)生用戶對象。但是不同的是,該表中的用戶名不同于管理員用戶名必須具備唯一性,這是考慮到醫(yī)生用戶也許會重名的情況下的問題,因此將電話號碼設(shè)置為唯一性,以此用于以后醫(yī)生用戶登錄系統(tǒng)時候進(jìn)行使用,這樣就不用擔(dān)心系統(tǒng)因?yàn)獒t(yī)生用戶的名字相同而導(dǎo)致混淆。此外,醫(yī)生用戶還多了個部門ID,該成員主要是用以將醫(yī)生分配到哪個部門,以方便歸類。為了讓系統(tǒng)更為健全,在醫(yī)生表內(nèi)我添加了如性別的成員。表4.3患者用戶表、成員名表內(nèi)列名數(shù)據(jù)類型長度默認(rèn)值主鍵非空其他約束患者IDPidint11無是是自增患者名Pnamevarchar50無否是無密碼Passwordvarchar10111111否是無性別Sexvarchar10無否是無電話Phonevarchar11無否是唯一年齡Ageint3無否是無地址Addressvarchar50無否是無如上表4.3所示,該表為患者用戶表,用以存儲患者用戶的相關(guān)信息。該表與醫(yī)生用戶表類似,同樣是具備ID,用戶名,密碼,性別,以及電話號碼等五個成員,其作用都類似,但是沒用部門ID來關(guān)聯(lián)到之后的部門表。在患者用戶表中,添加了年齡與地址兩個成員,其用途與性別成員一樣,不過不同于醫(yī)生用戶表可以為空,該信息為非空,主要是為了健全醫(yī)院預(yù)約掛號系統(tǒng)的信息,更好地去管理患者用戶的信息。表4.4部門表成員名表內(nèi)列名數(shù)據(jù)類型長度默認(rèn)值主鍵非空其他約束部門IDDPidint11無是是自增部門名DPnamevarchar50無否是非空如上表4.4所示,該表為部門表,用以存儲部門的信息。該表的部門ID作為主鍵,同時具備自增的約束,用以以后醫(yī)院預(yù)約掛號系統(tǒng)的用戶成員進(jìn)行相關(guān)的操作,而部門名不能為空。表4.5預(yù)約信息表成員名表內(nèi)列名數(shù)據(jù)類型長度默認(rèn)值主鍵非空其他約束預(yù)約IDPGidint11無是是自增患者IDPidint11無否是無患者名Pnamevarchar50無否是無部門IDDPidint11無否是無部門名DPnamevarchar50無否是無醫(yī)生IDDTidint110否是無醫(yī)生名DTnamevarchar50待分配否否無患者電話PPhonevarchar11無否否無預(yù)約狀態(tài)YYZTvarchar50預(yù)約中否是無完成狀態(tài)WCZTvarchar50否否是無預(yù)約時間YYTimedatetime無否是無如上表4.5所,該表為預(yù)約信息表,其主要用以存儲患者的預(yù)約信息。該表中包括患者用戶、醫(yī)生用戶以及醫(yī)生所屬的部門的ID號與名字,其中醫(yī)生ID和醫(yī)生用戶名的默認(rèn)值為0以及待分配,這是為了方便患者用戶進(jìn)行預(yù)約掛號的填寫實(shí)現(xiàn)。在該表中具備獨(dú)具的三個成員,分別為預(yù)約狀態(tài)、完成狀態(tài)以及預(yù)約時間三個成員,預(yù)約狀態(tài)以及完成狀態(tài)主要用以定義某條預(yù)約信息的預(yù)約進(jìn)度以及完成進(jìn)度,而預(yù)約時間則存儲患者填寫的預(yù)約時間。4.1.2MVC框架設(shè)計實(shí)體類:用以封裝系統(tǒng)中管理員、部門、醫(yī)生以及患者等對象所需要包含的成員信息;實(shí)體類DAO類:以接口的方式封裝關(guān)于實(shí)體類的增刪改查的相關(guān)方法;實(shí)體類DAOImpl類:用以繼承DAO以及實(shí)現(xiàn)實(shí)體類DAO類中的封裝方法,為servlet提供相關(guān)操作。Servlet類:用以接收處理前臺傳入的參數(shù)信息,并調(diào)用相應(yīng)的DAO方法來更新數(shù)據(jù)庫或獲取相關(guān)數(shù)據(jù)信息,并轉(zhuǎn)發(fā)至前臺相應(yīng)的界面。前臺前臺頁面Servlet實(shí)體類DAOImpl類DAO實(shí)體類DAO類圖4.2MVC基本架構(gòu)圖如圖4.2所示,前臺界面將參數(shù)傳入到后臺的Servlet中相應(yīng)的方法,方法名為跳轉(zhuǎn)地址的前綴,后綴則是系統(tǒng)通過web.xml文件映射跳轉(zhuǎn)到相應(yīng)的Servlet。后臺的Servlet則將參數(shù)傳入到實(shí)體類DAO類,并通過被實(shí)體類DAOImpl類繼承并實(shí)現(xiàn)實(shí)體類DAO類中的方法,并將編寫好的sql語句以及參數(shù)傳入到DAO的方法中,以此更新數(shù)據(jù)庫信息或獲取數(shù)據(jù)庫中的信息。當(dāng)完成實(shí)體類DAO類的方法調(diào)用之后,則會將獲取的信息通過Servlet轉(zhuǎn)發(fā)至前臺相應(yīng)的界面。4.2模塊簡介圖4.3系統(tǒng)模塊功能結(jié)構(gòu)圖如圖4.3所示,該圖顯示了醫(yī)院預(yù)約掛號系統(tǒng)功能基本模塊。在該圖中,主要分為前臺用戶以及后臺用戶,前臺用戶又劃分出了醫(yī)生用戶以及患者用戶。4.2.1前臺用戶醫(yī)生用戶:查看可接受預(yù)約:醫(yī)生用戶可以查看自身所屬部門可以接受的預(yù)約,從而選擇拒絕或者接受處理;查看已接受預(yù)約:醫(yī)生用戶可以查看自身已經(jīng)接受的預(yù)約,從而選擇取消預(yù)約或者確認(rèn)預(yù)約完成;修改密碼:醫(yī)生用戶可以進(jìn)行自身賬號的密碼修改。患者用戶:進(jìn)行預(yù)約:患者通過填寫正確的預(yù)約信息并提交,從而達(dá)成網(wǎng)上預(yù)約功能;查看預(yù)約:患者可查看自身的預(yù)約信息,從而選擇是否取消預(yù)約;修改密碼:患者用戶可以修改自身用戶的賬號密碼;4.2.2后臺用戶管理員用戶:管理員表:管理員用戶可以在該表中進(jìn)行管理員用戶信息的增刪改查等操作;部門表:管理員用戶可以在該表中進(jìn)行部門信息的增刪改查等操作;醫(yī)生用戶表:管理員用戶可以在該表中進(jìn)行醫(yī)生用戶信息的增刪改查等操作;患者用戶表:管理員用戶可以在該表中進(jìn)行患者用戶信息的增刪改查等操作;預(yù)約信息表:管理員用戶可以在該表中進(jìn)行預(yù)約信息的增刪改查等操作。5系統(tǒng)詳細(xì)設(shè)計5.1數(shù)據(jù)源創(chuàng)建以及連接MYSQL數(shù)據(jù)庫5.1.1數(shù)據(jù)源創(chuàng)建本系統(tǒng)設(shè)計使用的數(shù)據(jù)源為c3p0數(shù)據(jù)源,以此來進(jìn)行數(shù)據(jù)源的連接。在導(dǎo)入c3p0-config.xml文件之后,并對其進(jìn)行配置。首先需要配置的內(nèi)容是MYSQL數(shù)據(jù)庫的用戶名、密碼、連接數(shù)據(jù)源的驅(qū)動類以及連接數(shù)據(jù)源的地址,之后在對數(shù)據(jù)源其他內(nèi)容進(jìn)行配置,如連接自動增量為5、初始獲取的連接數(shù)量為10、連接池最小保留連接數(shù)量為10、連接池最大保留連接數(shù)量為50、最大鏈接數(shù)為20,以及連接池內(nèi)單個連接所擁有的最大Statement數(shù)量。具體配置可參考附錄中的c3p0-config.xml的代碼。5.1.2連接MYSQL數(shù)據(jù)庫為了使得項(xiàng)目連接上MYSQL數(shù)據(jù)庫,則需要創(chuàng)建一個JdbcUtils類以此來通過獲取上述配置好的c3p0數(shù)據(jù)源,需要在該類中創(chuàng)建一個DateSource類的靜態(tài)變量來獲取。之后就是創(chuàng)建兩個方法來進(jìn)行連接數(shù)據(jù)源以及關(guān)閉數(shù)據(jù)源,分別為getConnection()以及releaseConnection(),具體代碼可參考附錄中的JdbcUtils.java。5.2對數(shù)據(jù)庫增刪改查的DAO類設(shè)計首先需要創(chuàng)建一個QueryRunner類的變量以及一個Class<T>的變量,前者用以對進(jìn)行創(chuàng)建數(shù)據(jù)庫增刪改查等方法的調(diào)用,后者則負(fù)責(zé)對DAO類的無參構(gòu)造器的初始化,使得實(shí)體類能夠繼承以及調(diào)用DAO類中的方法。在完成DAO類的無參構(gòu)造器的初始化后,則需要分別設(shè)計數(shù)據(jù)庫增刪改查的方法。主要方法為以查找對象的類型為返回值的getForValue(Stringsql,Object...args)、以返回實(shí)體類列表為返回值的getForList(Stringsql,Object...args)、以返回實(shí)體類為返回值的get(Stringsql,Object...args),以進(jìn)行增加、修改以及刪除等操作的方法update(Stringsql,Object...args)。這些方法都會創(chuàng)建一個Connection對象用以調(diào)用JdbcUtils.java中的連接數(shù)據(jù)庫的方法getConnection(),其在queryRunner對象調(diào)用完成相應(yīng)的增刪改查等的方法后,則需要調(diào)用releaseConnection()方法來關(guān)閉數(shù)據(jù)源。另外,關(guān)于數(shù)據(jù)源調(diào)用的sql語句以及具體變量將會通過實(shí)體類的DAO類相關(guān)方法進(jìn)行調(diào)用時傳入。5.3實(shí)體類的設(shè)計本系統(tǒng)的實(shí)體類主要為管理員類(即Admin),部門類(即Department),醫(yī)生類(即Doctor),患者類(即Patient),以及預(yù)約信息類(即Reserve)。管理員類:管理員ID(即Uid)、管理員名(即user)、密碼(即Password);部門類:部門ID(即DPid)、部門名(即DPname);醫(yī)生類:醫(yī)生ID(即DTid)、部門ID(即DPid)、醫(yī)生名(即DTname)、部門名(即DPname)、密碼(即Password)、性別(即Sex)、電話號碼(即Phone);患者類:患者ID(即Pid)、患者名(即Pname)、密碼(即Password)、性別(即Sex)、電話號碼(即Phone)、年齡(即Age)、地址(即Address);預(yù)約信息類:預(yù)約ID(即PGid)、患者ID(即Pid)、患者名(即Pname)、部門ID(即DPid)、部門名(即DPname)、醫(yī)生ID(即DTid)、醫(yī)生名(即DTname)、患者電話號碼(即PPhone)、預(yù)約狀態(tài)(即YYZT)、完成狀態(tài)(即WCZT)、預(yù)約時間(即YYTime);5.4用戶登錄圖5.1用戶登錄界面如圖5.1所示,該圖為用戶登錄界面。在該界面中管理員用戶、醫(yī)生用戶以及患者用戶都可以通過該界面進(jìn)行用戶的登錄。各個用戶在登錄的時候,首先需要選擇自己的用戶類型,然后在圖中的兩個文本框中輸入用戶登錄的賬號以及密碼。管理員用戶的用戶賬號需要填寫其管理員的用戶名,而患者用戶和醫(yī)生用戶則需要填寫其賬號鎖綁定的手機(jī)號碼(以下DAO相關(guān)具體實(shí)現(xiàn)方法詳見附錄)。當(dāng)點(diǎn)擊登錄的時候,系統(tǒng)就會以表單的形式將填寫的內(nèi)容根據(jù)web.xml文件的映射提交到相應(yīng)的后臺的LoginServlet,LoginServlet會根據(jù)映射的前綴調(diào)用login方法。在login方法中,通過getParameter方法來獲取界面?zhèn)鬟f的參數(shù)信息。在獲取到表單提交的信息之后,首先需要對其進(jìn)行判斷用戶賬號和密碼是否為空,若為空,則返回內(nèi)容為空的提示信息至登錄頁面。若不為空,則通過比較userclass的字符串是否與“admin”、“doctor”、“patient”相匹配,以此來進(jìn)行相應(yīng)的類型用戶登錄。然后向相應(yīng)的實(shí)體類DAO類的login方法傳遞用戶名以及密碼,如登錄用戶為管理員用戶,LoginServlet會調(diào)用AdminDAO的login方法,而該方法根據(jù)MVC框架的實(shí)現(xiàn)原理,其與DAO類同時被AdminDAOJdbcImpl繼承實(shí)現(xiàn),在login方法內(nèi)預(yù)先編寫好sql語句,并將其與用戶名和密碼傳遞到DAO.java中的get()方法,若查詢成功,將返回一個Admin對象,若Admin對象不為空,則將該Admin對象通過session.setAttribute方法封裝到session中,并通過request.getRequestDispatcher().forward(request,response)進(jìn)行請求轉(zhuǎn)發(fā)至管理員首頁,醫(yī)生用戶與患者用戶的登錄亦是同理。5.5用戶注冊圖5.2患者用戶注冊如圖5.2所示,該圖為患者用戶的注冊界面,患者需要填寫正確的注冊信息才可以完成注冊,否則會出現(xiàn)相應(yīng)的提示信息于注冊頁面上。注冊功能的實(shí)現(xiàn)主要依靠注冊信息以表單的格式進(jìn)行提交到后臺servlet,然后根據(jù)MVC框架調(diào)用相應(yīng)方法并錄入到數(shù)據(jù)庫中(以下DAO相關(guān)具體實(shí)現(xiàn)方法詳見附錄)?;颊咝枰谏蠄D中填寫相應(yīng)的信息,在點(diǎn)擊注冊之后,系統(tǒng)則會根據(jù)映射將相應(yīng)的數(shù)據(jù)提交到后臺PatientServlet的patientre方法中去。在PatientServlet中,系統(tǒng)會對用戶提交的信息進(jìn)行判斷字符串是否為空,比較密碼與確認(rèn)密碼的字符串是否一致。調(diào)用DoctorDAO和PatientDAO的getCountWithPhone方法判斷電話號碼是否已經(jīng)被注冊,在getCountWithPhone方法中則將預(yù)先編寫好的sql語句和電話號碼傳入到DAO中的getForValue,若返回值大于零則判定電話號碼以注冊,反之則沒注冊;以及通過matches("^[-+]?(([0-9]+)([.]([0-9]+))?|([.]([0-9]+))?)$")來判斷電話號碼的格式是否正確,若上述四個判斷出現(xiàn)相應(yīng)的錯誤,則會通過request.setAttribute封裝相應(yīng)提示信息于message字符串信息,并返回至注冊頁面通過request.getAttribute獲取顯示。若患者提交的信息是正確的話,則Patientervlet會將信息傳遞給PatientDAO的save方法,該方法利用MVC框架原理實(shí)現(xiàn),將相應(yīng)說起來語句與參數(shù)傳遞到DAO類方法中,以實(shí)現(xiàn)注冊到系統(tǒng)連接的數(shù)據(jù)庫當(dāng)中去,并通過請求轉(zhuǎn)發(fā)request.getRequestDispatcher().forward(request,response)跳轉(zhuǎn)至登錄頁面。5.6管理員用戶管理員用戶主要是對系統(tǒng)內(nèi)的信息進(jìn)行增刪改查等一系列操作,包括對管理員用戶、醫(yī)生用戶、患者用戶、部門信息以及預(yù)約信息。一個系統(tǒng)的建立就必須要有管理員用戶的成立,這是為了方便對預(yù)約掛號系統(tǒng)的用戶成員以及預(yù)約信息等進(jìn)行管理,以避免某些用戶的錯誤操作而無法進(jìn)行修改,同時也是為了系統(tǒng)的信息安全的可靠性。圖5.3管理員用戶首頁如上圖5.3所示,該圖為管理員首頁,而在首頁的最左側(cè)則是管理員系統(tǒng)的導(dǎo)航條,管理員用戶可以通過點(diǎn)擊相應(yīng)的欄目進(jìn)行相關(guān)操作。5.6.1管理員表操作圖5.4管理員表如圖5.4所示,該圖顯示了醫(yī)院預(yù)約掛號中目前存在的管理員信息,管理員用戶可以對該表中的信息進(jìn)行增刪改查的操作。管理員用戶的權(quán)限在系統(tǒng)中的是最高的,其對于其他成員以及預(yù)約信息表的處理也是具備最高權(quán)限,因此只有管理員用戶才能對管理員表信息進(jìn)行操作。(以下相關(guān)DAO具體實(shí)現(xiàn)方法詳見附錄)。利用MVC框架的原理,當(dāng)用戶點(diǎn)擊左側(cè)導(dǎo)航欄目的“查看管理員表”的時候,系統(tǒng)后臺AdminServlet則會根據(jù)前綴映射調(diào)用AdminDAO中的queryad方法,在該方法中將預(yù)先編寫好的sql語句傳入到DAO中的getForList并返回一個List<Admin>對象來存儲獲取所有管理員信息利用request.setAttribute,并將其通過request.getRequestDispatcher().forward(request,response)轉(zhuǎn)發(fā)至界面上利用request.getAttribute獲取顯示。同理,當(dāng)管理員用戶對某個用戶點(diǎn)擊刪除的時候,系統(tǒng)則會所選擇的管理員ID通過超鏈接方式根據(jù)地址前綴傳遞到AdminServlet的delete方法中中,并在方法中調(diào)用AminDAO的delete的方法進(jìn)行刪除操作,在delete方法中將管理員ID以及預(yù)先編寫好的sql語句封裝到DAO中的update方法進(jìn)行刪除并更新數(shù)據(jù)庫,但管理員用戶不能對自身所使用的管理員賬號進(jìn)行刪除操作。完成刪除操作后則通過response.sendRedirect()重定向到管理員表界面。同理,管理員用戶可以點(diǎn)擊重置來重置密碼。當(dāng)管理員對某個用戶進(jìn)行賬號密碼重置的時候,系統(tǒng)則會根據(jù)所選擇的管理員ID通過超鏈接方式根據(jù)地址前綴傳遞到AdminServlet的reset方法中,并調(diào)用AdminDAO的resetPassword方法重置的密碼為“111111”,在resetPassword將預(yù)先編寫好的sql語句以及字符串“111111”以及管理員ID封裝到DAO的update更新數(shù)據(jù)庫信息。完成密碼重置操作后則通過request.getRequestDispatcher().forward(request,response)轉(zhuǎn)發(fā)至管理員表界面。圖5.5管理員添加如圖5.5所示,該圖為管理員用戶的添加,管理員用戶可進(jìn)行其他管理員用戶的添加操作,在考慮到醫(yī)院的醫(yī)生用戶以及患者用戶的增加,還有預(yù)約信息的數(shù)量不斷上升,需要的管理員用戶也會隨之增多,這是為了減少單個管理員的工作量,也是為了更好得去處理預(yù)約信息。其主要利用表單的形式將用戶名提交到AdminServlet,再利用MVC框架調(diào)用相應(yīng)的DAO方法錄入到系統(tǒng)中。在填入用戶名之后,系統(tǒng)則會將輸入的用戶名以表單形式映射提交到AdminServlet的add方法中去,然后先判斷該用戶名是否為空;若不為空,則通過調(diào)用AdminDAO的getLongByUser方法來判斷是否存在,在該方法中,其將預(yù)先編寫好的sql語句以及用戶名封裝到DAO的getForValue方法中并返回一個長整型數(shù),若返回值大于零則表示存在,并將提示信息封裝通過request.setAttribute封裝并轉(zhuǎn)發(fā)至添加管理員界面,管理員界面通過request.getAttribute獲取顯示,反之則不存在則通過AdminDAO的add方法添加新的管理員用戶,在add方法中將sql語句以及管理員名封裝至DAO的update方法中,同時密碼默認(rèn)設(shè)置為“111111”,并通過請求轉(zhuǎn)發(fā)方式回到管理員表界面。圖5.6管理員密碼修改如圖5.6所示,該圖為修改相應(yīng)的管理員用戶的密碼,在考慮到管理員用戶的密碼可能會忘記的情況下,或者需要對用戶的密碼進(jìn)行修改,因此在此設(shè)置了修改密碼的功能。系統(tǒng)利用表單的形式將信息提交到后臺servlet,并利用MVC框架原理調(diào)用相應(yīng)的DAO方法實(shí)現(xiàn)。用戶在修改密碼的時候,需要填寫舊密碼、新密碼以及確認(rèn)密碼,系統(tǒng)則將相關(guān)信息以表單的形式根據(jù)地址映射提交到AdminServlet的save方法中,在save方法中,首先調(diào)用AdminDAO方法的getByUid方法根據(jù)sql語句以及管理員ID獲取該管理員對象,檢測到三個內(nèi)容有一個或以上為空值,則通過request.setAttribute封裝“內(nèi)容不能為空”的提示至修改密碼界面;若輸入的舊密碼錯誤或者新密碼與確認(rèn)密碼不一致,則同理封裝“新密碼不一致”提示返回。若輸入的信息無誤,則將新密碼設(shè)置到先前獲取的管理員對象,在save方法中,并調(diào)用AdminDAO的save封裝管理員對象,將sql語句以及通過get的方法獲取管理員對象的密碼以及ID,并傳入DAO的update方法更新管理員密碼,最后通過重定向的方式返回至管理員表。5.6.2部門表操作圖5.7醫(yī)院部門表如圖5.7所示,該表顯示的信息為醫(yī)院的部門信息,管理員用戶可以于該界面進(jìn)行部門信息的增刪改查操作。一個醫(yī)院就有不同的部門,不同的部門下會有多個醫(yī)生用戶?;颊咴诓涣私忉t(yī)院的醫(yī)生有哪些的情況下,設(shè)置部門信息就是為了讓患者能夠更快更好的根據(jù)自己的病情進(jìn)行預(yù)約掛號。管理員用戶對于部門表的操作是基于MVC框架的基礎(chǔ)上,后臺servlet獲取從頁面?zhèn)鬟f的參數(shù),并調(diào)用相應(yīng)的DAO方法來獲取數(shù)據(jù)或者修改數(shù)據(jù)(以下相關(guān)DAO具體實(shí)現(xiàn)方法詳見附錄)。部門表信息的獲取主要是通過地址映射后調(diào)用DepartmetServlet的querydp方法,并調(diào)用DepartmentDAO的getAll方法,通過預(yù)先編寫好的sql語句封裝到DAO的getForList方法,返回封裝List<Department>列表對象,其封裝了獲取數(shù)據(jù)庫中所有的部門信息,并將該列表通過request.setAttribute封裝后請求轉(zhuǎn)發(fā)顯示至系統(tǒng)界面。醫(yī)院部門的刪除則由系統(tǒng)將所選擇的醫(yī)院部門的ID通過超鏈接的形式根據(jù)地址映射傳遞到DepartmentServlet的delete方法,并來調(diào)用DepartmentDAO的delete方法,其將部門ID以及相關(guān)sql語句封裝到DAO的update方法完成刪除操作,之后通過請求轉(zhuǎn)發(fā)返回部門表,即圖5.7醫(yī)院部門表。圖5.8添加醫(yī)院部門如圖5.8,管理員進(jìn)行醫(yī)院部門的添加操作。隨著社會的發(fā)展,考慮到科室會逐漸細(xì)分,為了方便患者預(yù)約掛號以及醫(yī)生處理預(yù)約信息,部門添加的功能也是系統(tǒng)的一個必須功能。當(dāng)用戶進(jìn)行部門添加的操作時,用戶需要填寫新的部門名,系統(tǒng)則會將其以表單的形式根據(jù)地址映射傳遞到DepartmentServlet的add方法中。其先通過DepartmentDAO的getCountWithDPname方法將預(yù)先編寫好的sql語句以及部門名封裝到DAO的update方法,通過返回值判斷該部門是否已經(jīng)存在,若返回值大于零則表示存在,則將返回信息以上文的返回提示信息的形式返回至添加界面;若不存在,則實(shí)將部門名封裝到一個Department類對象中,并將該對象封裝到departmentDAO的save方法中,在該方法中通過get方法獲取部門對象的部門名,并將相關(guān)sql語句與部門名封裝到DAO的update方法中,實(shí)現(xiàn)添加操作,并通過重定向方式返回至部門表界面。圖5.8修改部門信息如圖5.9,管理員進(jìn)行醫(yī)院部門信息修改操作。在考慮到某些部門名字的變更的情況下,為了也是為了方便醫(yī)生處理患者信息而添加部門名變更的功能。當(dāng)用戶進(jìn)行修改操作的時候,則值需要修改部門名信息,與添加部門操作類似。系統(tǒng)將相關(guān)信息以表單的形式根據(jù)地址映射到DepartmentServlet的update方法。在方法中,先判斷部門名是否為空,若不為空,則判斷是否與原來的部門名一致,若不一致,則將部門名封裝到一個部門對象,并將該部門名封裝到DepartmentDAO的getCountWithDPname方法,在將其與sql語句傳遞到getForValue方法中,根據(jù)返回的長整形判斷該部門是否已經(jīng)存在,若返回值大于零則表示存在,則以上文相同的返回提示方式至修改部門界面;若不存在,則將部門對象封裝到departmentDAO方法的update方法,在該方法中通過get方法獲取部門名以及ID,并與相關(guān)sql語句封裝到DAO的update完成部門信息更新,最后通過重定向的方式返回至部門列表。5.6.3醫(yī)生表操作圖5.9醫(yī)生表總表如圖5.9所示,該表為醫(yī)生表主表,其顯示了系統(tǒng)中錄入的所有醫(yī)生用戶的信息,管理員用戶可對該界面醫(yī)生表進(jìn)行增刪改查的操作。醫(yī)生用戶的建立以及相關(guān)的信息管理都需要由管理員用戶來操作,這是為了系統(tǒng)的正常運(yùn)轉(zhuǎn),以及避免患者用戶和醫(yī)生用戶的混淆。讓預(yù)約掛號系統(tǒng)能夠更方便、更好地去運(yùn)行(以下相關(guān)DAO具體實(shí)現(xiàn)方法詳見附錄)。管理員用戶對于醫(yī)生用戶表的操作是基于MVC框架的基礎(chǔ)上,后臺servlet獲取從頁面?zhèn)鬟f的參數(shù),并調(diào)用相應(yīng)的DAO方法來獲取數(shù)據(jù)或者修改數(shù)據(jù)。系統(tǒng)根據(jù)地址映射DoctorServlet調(diào)用querydo方法,并在方法中調(diào)用DoctorDAO的getAll方法,返回一個封裝了獲取的所有的醫(yī)生用戶信息List<Docotor>的列表對象,另外還調(diào)用DepartmentDAO的getAll方法,返回一個封裝了獲取的所有的醫(yī)生用戶信息List<Department>的列表對象,并將這兩個列表對象通過request.setAttribute封裝,請求轉(zhuǎn)發(fā)顯示到界面上。醫(yī)生表關(guān)于刪除的操作和重置密碼與管理員表的刪除操作類似,皆是通過超鏈接的方式將醫(yī)生ID傳遞到DoctorServlet的delete或者reset,調(diào)用DoctorDAO的delete或者resetPassword的方法,將傳入的醫(yī)生ID以及相關(guān)sql語句封裝到DAO的update方法中來進(jìn)行醫(yī)生用戶的刪除或者將醫(yī)生用戶的密碼重置為“11111111”,最后通過重定向返回至醫(yī)生表界面。圖5.10醫(yī)生表?xiàng)l件查詢圖5.11條件查詢后的醫(yī)生表圖5.11是通過圖5.10的部門名下拉列表選擇“兒科”進(jìn)行條件查詢。這是為了方便管理員查看相關(guān)部門的醫(yī)生信息并對其進(jìn)行操作,例如若處理一個兒科的醫(yī)生,則可以通過條件查詢來快速查找。其主要過程就是以表單的信息將查詢的條件提交到后臺的DoctorServlet的queryby,并調(diào)用queryby方法進(jìn)行查詢顯示,其中在將參數(shù)傳入的時候則會在servlet中新建一個CriterDoctor類并將參數(shù)傳入其中,在該類中對成員的get方法進(jìn)行修改,當(dāng)DAO中的方法獲取了新建的CriterDoctor類對象時,若對象某一成員的值為空,則該成員值返回“%%”,若不為空則返回“%”+成員值+“%”,以進(jìn)行相應(yīng)的條件查詢;最后將該CriterDoctor類對象傳遞到DoctorDAO中的getListByCriter,在該方法中通過get方法獲取醫(yī)生名和部門名并與相關(guān)sql語句封裝到DAO的getForList方法中,并返回一個List<Doctor>對象封裝了條件查詢的信息,并通過request.setAttribute封裝列表對象請求轉(zhuǎn)發(fā)至界面上。圖5.12添加醫(yī)生用戶如圖5.12所示,其為管理員進(jìn)行醫(yī)生用戶添加。該功能的設(shè)立主要是為了防止非醫(yī)院方成員的注冊,這是為了維護(hù)系統(tǒng)的安全性和正常運(yùn)行,也為了避免非醫(yī)院方用戶處理預(yù)約信息。當(dāng)管理員添加新的醫(yī)生用戶的時候,需要填寫相應(yīng)的信息。系統(tǒng)將填寫的信息以表單的信息根據(jù)地址映射至DoctorServlet的save方法中。在該方法中,首先對傳入的信息值判斷是否為空,若不為空,則將Phone字符串傳遞到DoctorDAO以及PatientDAO的getCountWithPhone方法,在getCountWithPhone方法中將相關(guān)sql語句以及Phone封裝到DAO的getForValue中,根據(jù)返回值是否大于零來判斷該電話號碼是否已經(jīng)注冊了;若不大于零,則判斷Phone的字符串是否為11位,并通過matches("^[-+]?(([0-9]+)([.]([0-9]+))?|([.]([0-9]+))?)$")來判斷電話號碼的格式是否正確。若信息出現(xiàn)以上判斷的相關(guān)錯誤,則會以上文同理的方式將提示形式返回顯示至添加界面,若無誤,則將相關(guān)的信息封裝到一個Doctor對象中,并將該對象傳遞到DoctorDAO的save方法,在save方法中,將相關(guān)sql語句以及通過get方法獲取Doctor對象的相關(guān)參數(shù)封裝到DAO的update方法中,以此完成添加操作,最后通過重定向的方式返回至醫(yī)生列表。圖5.13修改醫(yī)生用戶如圖5.13所示,其為管理員對醫(yī)生用戶進(jìn)行修改。這是為了在某個醫(yī)生用戶所屬科室調(diào)動的時候,或者電話號碼等信息的修改所設(shè)立的,也為了方便醫(yī)生查看可接受預(yù)約信息時所需要進(jìn)行的操作。管理員用戶對醫(yī)生用戶的修改與添加操作類似,以表單的形式根據(jù)地址映射提交到DoctorServlet的update方法。在該方法中,首先對傳入的信息值判斷是否為空,若不為空,則將Phone字符串傳遞到DoctorDAO以及PatientDAO的getCountWithPhone方法,在getCountWithPhone方法中將相關(guān)sql語句以及Phone封裝到DAO的getForValue中,根據(jù)返回值是否大于零來判斷該電話號碼是否已經(jīng)注冊了;若不大于零,則判斷Phone的字符串是否為11位,并通過matches("^[-+]?(([0-9]+)([.]([0-9]+))?|([.]([0-9]+))?)$")來判斷電話號碼的格式是否正確。若信息出現(xiàn)以上判斷的相關(guān)錯誤,則會以上文同理的方式將提示形式返回顯示至添加界面,若無誤,則將相關(guān)的信息封裝到一個Doctor對象中,并將該對象傳遞到DoctorDAO的update方法,在update方法中,將相關(guān)sql語句以及通過get方法獲取Doctor對象的相關(guān)參數(shù)封裝到DAO的update方法中,以此完成修改操作,最后通過請求轉(zhuǎn)發(fā)的方式返回至醫(yī)生列表。5.6.4患者表操作圖5.14患者表總表如圖5.14所示,該圖所顯示的表為系統(tǒng)錄入的所有的患者信息,管理員用戶可與該界面對患者用戶信息進(jìn)行增刪改查的操作。患者用戶無法對自身的信息進(jìn)行修改,這是為了防止信息的隨意變動而導(dǎo)致系統(tǒng)的內(nèi)部數(shù)據(jù)的混亂,而管理員用戶處理患者用戶信息則是必須具備的,也是為了防止預(yù)約掛號信息存在錯誤信息。管理員對于患者表的操作是基于MVC框架的基礎(chǔ)上,調(diào)用相應(yīng)的DAO方法來實(shí)現(xiàn)增刪改查操作(以下相關(guān)DAO具體實(shí)現(xiàn)方法詳見附錄)。系統(tǒng)根據(jù)地址映射調(diào)用PatientServlet的querypa方法。在該方法中,調(diào)用PatientDAO的getAll方法,其將預(yù)先編寫好的sql語句封裝到DAO的getForList,并返回List<Patient>列表對象,其封裝獲取的所有的患者信息,并將列表對象通過request.setAttribute請求轉(zhuǎn)發(fā)顯示到前臺界面。管理員可以在該表中對某個成員進(jìn)行刪除以及密碼重置的操作,系統(tǒng)更加映射地址將患者ID以超鏈接的方式傳遞到PatientServlet的delete或者reset方法,并在各自的方法中調(diào)用PatientDAO的delete或者resetPassword方法,并分別將相關(guān)sql語句以及患者ID傳遞到DAO的update中,以此達(dá)到刪除以及重置密碼的操作,最后通過請求轉(zhuǎn)發(fā)返回至患者表。圖5.15患者表?xiàng)l件查詢圖5.16條件查詢后的患者表圖5.16所示的患者用戶則是通過如圖5.15所示進(jìn)行條件查詢所顯示,其條件為“地址為北京”。這是為了方便管理員用戶快速查找并管理患者信息。該表的條件查詢與醫(yī)生表的條件查詢類似,皆是通過將查詢條件封裝到一個CriterriaPatient類中,系統(tǒng)根據(jù)地址映射調(diào)用PatientServlet的querypa方法。當(dāng)后臺servlet調(diào)用相應(yīng)的DAO方法獲取該類對象的成員時,返回“%%”或者“%”+成員名+“%”來實(shí)現(xiàn)條件查詢。最后將該CriterPatient類對象傳遞到PatientDAO中的getListByCriter。在該方法中通過get的方法獲取CriterPatient類對象的相關(guān)信息,將其與相關(guān)sql語句封裝到DAO的getForList方法中,并返回一個List<Patient>列表對象封裝了條件查詢的信息,并通過request.setAttribute封裝列表對象請求轉(zhuǎn)發(fā)至界面上。圖5.17添加患者用戶如圖5.17所示,該界面是管理員進(jìn)行患者用戶添加。在考慮到某些特殊人群,如老年人等,該類人群不會注冊預(yù)約掛號系統(tǒng)的賬號,因此可以通過管理員來進(jìn)行患者用戶的添加,以此為該類人群提供預(yù)約掛號的服務(wù)賬號。管理員需要將正確的信息填入,系統(tǒng)則會根據(jù)映射地址將信息以表單的形式提交到后臺的PatientServlet的add方法。在該方法中,首先對傳入的信息值判斷是否為空,若不為空,則將Phone字符串傳遞到DoctorDAO以及PatientDAO的getCountWithPhone方法,在getCountWithPhone方法中將相關(guān)sql語句以及Phone封裝到DAO的getForValue中,根據(jù)返回值是否大于零來判斷該電話號碼是否已經(jīng)注冊了;若不大于零,則判斷Phone的字符串是否為11位,并通過matches("^[-+]?(([0-9]+)([.]([0-9]+))?|([.]([0-9]+))?)$")來判斷電話號碼的格式是否正確。若信息出現(xiàn)以上判斷的相關(guān)錯誤,則會以上文同理的方式將提示形式返回顯示至添加界面,若無誤,則將相關(guān)的信息封裝到一個Patient對象中,并將該對象傳遞到PatientDAO的save方法,在save方法中,將相關(guān)sql語句以及通過get方法獲取Patient對象的相關(guān)參數(shù)封裝到DAO的update方法中,以此完成添加操作,最后通過重定向的方式返回至患者列表。圖5.18修改患者用戶信息如圖5.18所示,該界面為管理員進(jìn)行患者信息修改。修改患者信息的設(shè)立,是為某些患者用戶因錯誤填寫信息,但隨意修改信息會導(dǎo)致系統(tǒng)的安全性存在某些問題的情況下,管理員用戶可對患者信息進(jìn)行修改。在進(jìn)入該界面之前,后臺的Patientervle則會先將所選擇的患者ID來傳遞到PatientDAO的get方法,與相關(guān)的sql語句封裝到DAO的get方法,獲取相應(yīng)的患者對象,并將其利用request.setAttribute封裝請求轉(zhuǎn)發(fā)至修改界面顯示。當(dāng)管理員對該患者用戶進(jìn)行修改的時候,系統(tǒng)則會根據(jù)映射地址將信息以表單的形式提交到后臺的PatientServlet的update方法。在該方法中,首先對傳入的信息值判斷是否為空,若不為空,則將Phone字符串傳遞到DoctorDAO以及PatientDAO的getCountWithPhone方法,在getCountWithPhone方法中將相關(guān)sql語句以及Phone封裝到DAO的getForValue中,根據(jù)返回值是否大于零來判斷該電話號碼是否已經(jīng)注冊了;若不大于零,則判斷Phone的字符串是否為11位,并通過matches("^[-+]?(([0-9]+)([.]([0-9]+))?|([.]([0-9]+))?)$")來判斷電話號碼的格式是否正確。若信息出現(xiàn)以上判斷的相關(guān)錯誤,則會以上文同理的方式將提示形式返回顯示至添加界面,若無誤,則將相關(guān)的信息封裝到一個Patient對象中,并將該對象傳遞到PatientDAO的update方法,在update方法中,將相關(guān)sql語句以及通過get方法獲取Patient對象的相關(guān)參數(shù)封裝到DAO的update方法中,以此完成修改操作,最后通過重定向的方式返回至患者列表。5.6.5預(yù)約信息表操作圖5.19預(yù)約信息表如圖5.19所示,該表為錄入了系統(tǒng)的所有預(yù)約信息表,管理員可于該界面對預(yù)約信息進(jìn)行增刪改查的操作。管理員具備對預(yù)約信息的處理權(quán)限,這是為了維護(hù)醫(yī)院預(yù)約掛號系統(tǒng)的正常運(yùn)行。管理員對于預(yù)約信息表的操作是基于MVC框架的基礎(chǔ)上,調(diào)用相應(yīng)的DAO方法來實(shí)現(xiàn)增刪改查操作(以下相關(guān)DAO具體實(shí)現(xiàn)方法詳見附錄)。系統(tǒng)根據(jù)地址映射調(diào)用AdminServlet的queryre方法。在該方法中,調(diào)用ReserveDAO的getAll方法,其將相關(guān)sql語句封裝到DAO的getForList方法中,并返回List<Reserve>列表來封裝獲取數(shù)據(jù)庫中所有的預(yù)約信息,并通過request.setAttribute封裝請求轉(zhuǎn)發(fā)顯示至界面上??紤]到某些預(yù)約信息的過時性以及無用性,預(yù)約信息刪除的功能也因此而設(shè)立。當(dāng)管理員相對某一條預(yù)約信息進(jìn)行刪除的時候,系統(tǒng)則會根據(jù)地址映射將該預(yù)約信息的ID以超鏈接的方式傳遞到后臺的AdminServlet的admindeletere方法,其調(diào)用ReserveDAO的delete方法,將預(yù)約ID和相關(guān)的sql語句封裝到DAO的update方法中,完成刪除預(yù)約信息的操作,最后通過請求轉(zhuǎn)發(fā)的方式返回至預(yù)約信息表的界面。圖5.20添加預(yù)約信息如圖5.20所示,管理員可以在該見面中添加新的預(yù)約信息。這個功能的使用,是在患者用戶出現(xiàn)某些特殊情況,如急癥之類的情況,由管理員用戶添加新的預(yù)約信息。系統(tǒng)根據(jù)地址映射將相關(guān)信息以表單的形式傳遞到AdminServlet中的adminaddre方法中,并預(yù)先設(shè)置一個患者ID為0。首先對相關(guān)信息的字符串進(jìn)行空值判斷,若不為空,則通過matches("^[-+]?(([0-9]+)([.]([0-9]+))?|([.]([0-9]+))?)$")判斷電話號碼格式是否正確;若格式正確,將PPhone字段封裝到PaitentDAO的getCountWithPhone方法,該方法將PPhone字段與相關(guān)sql語句封裝到DAO的getForValue中,并返回一個長整型,若該長整型則該電話號碼存在;之后,系統(tǒng)則會調(diào)用patientDAO的getValueByPPhoneAndPname方法,來確認(rèn)是否存在該患者用戶;若存在,系統(tǒng)再將該電話號碼傳遞到PatientDAO的getByPhone,其將PPhone字段與相關(guān)sql語句傳遞到DAO的get方法并返回一個Paitent對象;通過get方法獲取該P(yáng)atient對象的Pid。若以上判斷有誤,則以上文相同的方式將提示信息返回至添加界面。完成信息判斷之后,通過DoctorDAO的get方法根據(jù)傳入的醫(yī)生ID獲取Doctor對象,再將預(yù)約時間信息YYTime通過SimpleDateFormat類的對象format的parse方法轉(zhuǎn)成時間格式為"yyyy-MM-ddHH:mm:ss"的Date對象,之后再new一個Date類的對象date2,通過date.getTime()-date2.getTime()<0方式來確認(rèn)日期是否為未來式,若為未來式,則再將date轉(zhuǎn)換成Timestamp類對象,若轉(zhuǎn)換失敗則以上文相同的方式將提示信息返回至添加界面。最后將相關(guān)的預(yù)約信息傳遞到ReserveDAO的adminsave方法中,該方法將相關(guān)的預(yù)約信息參數(shù)與預(yù)先編寫好的sql語句封裝到DAO的update方法,以此達(dá)到添加預(yù)約信息的操作,并通過重定向返回至預(yù)約信息表。圖5.21修改預(yù)約信息如圖5.21所示,該界面是管理員對預(yù)約信息進(jìn)行修改操作。這是為了防止醫(yī)生用戶或者患者用戶對預(yù)約掛號信息的錯誤操作。系統(tǒng)根據(jù)地址映射將相關(guān)信息以表單的形式傳遞到AdminServlet中的adminrewritere方法中,并預(yù)先設(shè)置一個患者ID為0。首先對相關(guān)信息的字符串進(jìn)行空值判斷,若不為空,則通過matches("^[-+]?(([0-9]+)([.]([0-9]+))?|([.]([0-9]+))?)$")判斷電話號碼格式是否正確;若正確,則判斷YYZT與WCZT字段是否分別為“預(yù)約中”和“是”,或者為“取消”和“是”,若是的話則返回提示信息至修改界面;最后通過調(diào)用patientDAO的getValueByPPhoneAndPname方法,并傳入患者名以及患者電話號碼,查看返回值是否小于或等于零,若是則返回提示沒有該患者用戶的信息的提示;若上述信息判斷有誤的話,則以與上文相同的方式將提示信息返回至修改界面顯示。若信息無誤,則通過DoctorDAO的get方法根據(jù)醫(yī)生ID獲取Doctor對象如若預(yù)約的時間發(fā)生了修改,則先將預(yù)約信息的字段轉(zhuǎn)換成"yyyy-MM-ddHH:mm:ss"的Date類,其變量名為date,轉(zhuǎn)換方式與管理員用戶添加預(yù)約信息是一樣,之后在new一個Date類對象date2,通過date.getTime()-date2.getTime()<0方式來確認(rèn)日期是否為未來式,若為未來式,則再將date轉(zhuǎn)換成Timestamp類對象,若轉(zhuǎn)換失敗則以上文相同的方式將提示信息返回至添加界面。之后,利用ReserveDAO的get方法,將預(yù)約ID與相關(guān)sql語句封裝到DAO的get方法中,并返回一個Reserve對象,之后利用set方法將修改的預(yù)約信息傳遞到該Reserve對象中,其中醫(yī)生ID、醫(yī)生名、部門ID以及部門名,皆通過上述創(chuàng)建的Doctor對象利用get方法獲??;最后將修改好的Reserve對象封裝到ReserveDAO中的update方法,該方法將想sql語句以及利用get方法獲取Reserve對象的相關(guān)信息封裝到DAO的update方法中,以此更新該條預(yù)約信息,并通過重定向的方式返回預(yù)約信息表。5.7患者用戶圖5.22患者用戶首頁患者用戶可以在預(yù)約掛號系統(tǒng)內(nèi)進(jìn)行預(yù)約掛號、查看預(yù)約信息、取消預(yù)約、修改用戶賬號自身密碼。管患者用戶是預(yù)約掛號系統(tǒng)的主要使用者之一,也是預(yù)約信息的生成的主要來源?;颊哂脩羲M(jìn)行的操作皆是基于MVC框架的基礎(chǔ)上,從頁面獲取相應(yīng)的參數(shù)傳遞至后臺Servlet,并映射到和跳轉(zhuǎn)的前綴相應(yīng)的方法,在該方法中調(diào)用相應(yīng)的DAO的方法來進(jìn)行數(shù)據(jù)的獲取或者修改(以下相關(guān)DAO具體實(shí)現(xiàn)方法詳見附錄)。5.7.1患者預(yù)約掛號圖5.23患者預(yù)約掛號界面如圖5.23所示,該界面為患者用戶進(jìn)行預(yù)約掛號的界面。但是患者只能進(jìn)行一次預(yù)約操作,若需要在舊預(yù)約未完成的情況下,進(jìn)行新的預(yù)約操作,則需要取消上一次的預(yù)約。在進(jìn)入該界面之前,系統(tǒng)會從session中獲取患者用戶的對象所存儲的信息,并將相關(guān)信息信息顯示至界面的相關(guān)區(qū)域,患者可以對姓名以及電話號碼的信息進(jìn)行修改,科室則可通過下拉列表進(jìn)行選擇,預(yù)約的時間的格式為“yyyy-MM-DDhh:mm:ss”。當(dāng)用戶點(diǎn)擊提交之后,系統(tǒng)則會將信息以表單的形式提交到后臺的ReserveServlet的reserve方法中。在該方法中,首先利用request.getSession方法獲取Session對象,再利用Session對象的request.getAttribute獲取存儲到session對象中的患者對象,并且通過DepartmentDAO的getByDPname方法根據(jù)傳入的DP那么獲取Department對象,然后對提交信息的值判斷是否存在空值;若不存在空值,則通過matches("^[-+]?(([0-9]+)([.]([0-9]+))?|([.]([0-9]+))?)$")以及判斷電話號碼是否為11位,來判斷電話號碼格式是否正確;之后,將預(yù)約時間的字段通過創(chuàng)建的SimpleDateFormat類對象format利用format.parse方法轉(zhuǎn)換成"yyyy-MM-ddHH:mm:ss"各式的Date類對象date,再new一個Date類對象date2來獲取當(dāng)前時間,利用date.getTime()-date2.getTime()<0來判斷預(yù)約時間是否為未來時間,若大于零是未來時間,否則返回提示至界面;之后通過調(diào)用patientDAO的getYYZT1以及getYYZT1來判斷該患者用戶是否已經(jīng)有預(yù)約狀態(tài)為“預(yù)約中”或者“接受”但完成狀態(tài)為“否”的預(yù)約信息,若有則返回提示;同理以上判斷皆以與上文返回提示信息的方法進(jìn)行返回提示。部門ID通過上述獲取的Department對象利用get的方法獲取,最后將相關(guān)的信息封裝到一個Reserve對象,再將Reserve對象封裝到ReserveDAO的save方法。在save方法中,利用get方法獲取Reserve對象需要傳入的預(yù)約信息,并將其與寫好的sql語句封裝到DAO的update方法中,最后返回一個boolean對象flag,若flag為真則調(diào)用PatientDAO的updateMoney方法,將減10后的Money對象傳入,更新患者用戶的余額,并通過請求轉(zhuǎn)發(fā)返回至患者用戶首頁,若flag為假則以上文相同的重定向方式返回提示信息至預(yù)約界面。圖5.24患者查看預(yù)約信息如圖5.24所示,患者可以在該界面中查看到自身所進(jìn)行的預(yù)約信息,并且可以進(jìn)行取消預(yù)約操作。患者在取消舊的預(yù)約之后,方可進(jìn)行新的預(yù)約。系統(tǒng)在顯示該界面之前,首先會從session獲取患者用戶的ID,并將ID通過超鏈接的方式傳遞到后臺的ReserveServlet的palookreserve方法中去,并調(diào)用ReserveDAO中的getAllByPid,該方法將患者ID與相關(guān)sql語句傳遞到DAO的getForList中,以此獲取封裝該患者用戶的預(yù)約信息List<Reserve>列表對象,并通過request.setAttribute封裝列表對象方式,并請求轉(zhuǎn)發(fā)顯示到界面上。若患者用戶取消某一條預(yù)約信息時,系統(tǒng)則會將其預(yù)約信息的ID通過超鏈接的方式根據(jù)地址映射提交到后臺的ReserveServlet的pacancel方法。在該方法中,首先通過request.getSession方法獲取Session對象,之后在利用request.getAttribute方法獲取存儲在session中的患者對象,再利用get方法獲取患者ID;然后調(diào)用ReserveDAO的pancacel方法,將預(yù)約ID傳入,在該方法中其將預(yù)約ID與相關(guān)的sql語句傳入到DAO的update方法,以此達(dá)成取消預(yù)約操作,最后通過將患者ID傳入到ReserveDAO的getAllByPid獲取封裝了更新后的預(yù)約信息List<Reserve>列表對象,并通過request.setAttribute封裝列表對象方式,并請求轉(zhuǎn)發(fā)顯示到界面上。PAGEPAGE15.7.2修改密碼圖5.25患者用戶修改密碼如圖5.25所示,患者用戶可以在該界面修改密碼。首先系統(tǒng)會通過session.getAttribute獲取存儲在session的患者對象,在通過get方法獲取患者名字并顯示到修改密碼界面上。當(dāng)用戶點(diǎn)擊提交的時候,系統(tǒng)則會將信息以表單的形式根據(jù)地址映射提交到后臺的PatientServlet的rewritepwd方法。之后,通過request.getSession方法獲取Session對象,之后在利用request.getAttribute方法獲取存儲在session中的患者對象,在利用get方法獲取患者用戶原來的密碼Password。然后判斷輸入的內(nèi)容是否存在空值,若不存在空值,則判斷輸入的舊密碼pwd1是否與患者用戶原來的密碼一致;若一致,則判斷新密碼pwd2與確認(rèn)密碼pwd3是否一致。若以上判斷有誤,則以與上文相同的方式返回提示信息至修改密碼界面。若正確,則會調(diào)用PatientDAO的rewritePassword方法,其將新密碼pwd2與患者ID傳入到DAO的update方法中,以此來錄入新密碼至數(shù)據(jù)庫中,并通過PatientDAO的get方法根據(jù)Pid獲取患者用戶對象,將其利用session.setAttribute存儲到session中,以此更新session中的數(shù)據(jù),并返回至患者用戶首頁。5.8醫(yī)生用戶圖5.26醫(yī)生用戶首頁醫(yī)生用戶可以在該系統(tǒng)中進(jìn)行查看可接受的預(yù)約并選擇接受或者拒絕、查看已接受的預(yù)約并選擇取消或者確認(rèn)預(yù)約完成,以及修改醫(yī)生用戶賬號自身密碼。醫(yī)生用戶所進(jìn)行的操作皆是基于MVC框架的基礎(chǔ)上,從頁面獲取相應(yīng)的參數(shù)傳遞至后臺Servlet,并映射到和跳轉(zhuǎn)的前綴相應(yīng)的方法,在該方法中調(diào)用相應(yīng)的DAO的方法來進(jìn)行數(shù)據(jù)的獲取或者修改(以下相關(guān)DAO具體實(shí)現(xiàn)方法詳見附錄)。5.8.1醫(yī)生處理預(yù)約信息圖5.27查看可接受的預(yù)約信息如圖5.28所示,在該界面中,醫(yī)生用戶可以查看到自身部門尚未處理的預(yù)約信息,并對這些預(yù)約進(jìn)行接受或者拒絕的操作。在界面顯示之前,系統(tǒng)將session中獲取醫(yī)生對象的部門ID,即DPid,再以超鏈接的形式根據(jù)地址映射傳遞到ReserveServlet中dolookre方法。ReserveServlet會將DPid傳遞到ReserveDAO的getAllByDPid方法。在該方法中,其將寫好的sql語句與DPid傳入到DAO的getForList方法,來獲取封裝了與該部門的可接受的預(yù)約信息的List<Reserve>列表對象,并將該列表對象封裝到request.setAttribute中后請求轉(zhuǎn)發(fā)顯示至界面上。醫(yī)生用戶在該界面可以對預(yù)約信息選擇接受或者拒絕的操作。若選擇接受,系統(tǒng)則會將該預(yù)約信息的ID即PGid以超鏈接的方式傳遞到ReserveServlet的doaccept方法中;之后,通過request.getSession()創(chuàng)建session對象,在利用session.getAttribute獲取醫(yī)生對象doctor;再通過get方法獲取doctor的醫(yī)生ID與醫(yī)生名,即

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論