版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
目錄摘要醫(yī)院門診查詢系統(tǒng)1.1本系統(tǒng)特點(diǎn)1.2系統(tǒng)功能1.3軟件的使用邏輯層的設(shè)計(jì)2.1邏輯層的包結(jié)構(gòu)設(shè)計(jì)2.2與數(shù)據(jù)庫(kù)建立連接類DBConnection2.3用于將網(wǎng)站運(yùn)行時(shí)遇到的信息記錄到文件中的類Debug用于初始化Servlet的類InitServlet用于定義了一些輔助方法的類Utilhospital.db.dboperation類表示層設(shè)計(jì)3.1表示層設(shè)計(jì)概述3.2表示層設(shè)計(jì)中使用的幾大JSP對(duì)象4.系統(tǒng)功能實(shí)現(xiàn)與演示摘要:在數(shù)字化信息的今天,隨著計(jì)算機(jī)的普及,互聯(lián)網(wǎng)絡(luò)的迅速發(fā)展,國(guó)內(nèi)越來(lái)越多的醫(yī)院利用計(jì)算機(jī)網(wǎng)絡(luò)來(lái)處理日常業(yè)務(wù),成為醫(yī)院服務(wù)發(fā)展的一個(gè)新方向。醫(yī)院口診查詢系統(tǒng)基于JSP(JSP(JavaServerPages)是由SunMicrosystems公司倡導(dǎo)、許多公司參與一起建立的一種動(dòng)態(tài)網(wǎng)頁(yè)技術(shù)標(biāo)準(zhǔn)。JSP技術(shù)有點(diǎn)類似ASP技術(shù),它是在傳統(tǒng)的網(wǎng)頁(yè)HTML文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP標(biāo)記(tag),從而形成JSP文件(*.jsp)。用JSP開發(fā)的Web應(yīng)用是跨平臺(tái)的,既能在Linux下運(yùn)行,也能在其他操作系統(tǒng)上運(yùn)行。)的管理信息系統(tǒng),采用瀏覽器/服務(wù)器架構(gòu),跨操作系統(tǒng)平臺(tái),應(yīng)用服務(wù)器、數(shù)據(jù)庫(kù)均采用免費(fèi)開發(fā)工具。本醫(yī)院門診查詢管理系統(tǒng),可以實(shí)現(xiàn)動(dòng)態(tài)的連接應(yīng)用程序服務(wù)器,只要對(duì)配置文件進(jìn)行配置,就可以選擇所要連接的應(yīng)用程序服務(wù)器。并能實(shí)現(xiàn)門診收費(fèi),劃價(jià);藥品管理,患者管理;醫(yī)務(wù)人員管理及各種查詢,報(bào)表等功能。門診查詢系統(tǒng)是針對(duì)醫(yī)院醫(yī)生和患者之間的各種需要建立起來(lái)的一個(gè)科學(xué)、有效的現(xiàn)代化管理系統(tǒng)。它杜絕了過(guò)去手工操作系統(tǒng)的各種弊端,完善了門診看病預(yù)約的處理過(guò)程,是對(duì)醫(yī)院的一次技術(shù)性變革。本系統(tǒng)實(shí)現(xiàn)了預(yù)約,診療服務(wù),方便了工作人員和病人,使醫(yī)院的醫(yī)生管理以及時(shí)間分配更加科學(xué)、合理,使醫(yī)院進(jìn)行現(xiàn)代化信息改革的重要組成部分。本文就此系統(tǒng)地分析、設(shè)計(jì)、實(shí)施作了詳細(xì)地介紹和描述,并對(duì)系統(tǒng)的具體功能和現(xiàn)實(shí)意義作了科學(xué)地分析和說(shuō)明。服務(wù)器端使用數(shù)據(jù)庫(kù)層邏輯層表現(xiàn)層的體系架構(gòu)。邏輯層封裝在JAVA類中,表現(xiàn)層由JSP實(shí)現(xiàn)。單例模式保證一個(gè)class只有一個(gè)實(shí)例(instance),并為它提供一個(gè)全局訪問(wèn)點(diǎn)(globalaccesspoint)。MySQL名字的來(lái)歷MySQL是一個(gè)小型關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),開發(fā)者為瑞典MySQLAB公司,在2008年1月16號(hào)被Sun公司收購(gòu)。MySQL被廣泛地應(yīng)用在Internet上的中小型網(wǎng)站中。由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點(diǎn),許多中小型網(wǎng)站為了降低網(wǎng)站總體擁有成本而選擇了MySQL作為網(wǎng)站數(shù)據(jù)庫(kù)。Tomcat是目前比較流行的web應(yīng)用服務(wù)器。是開發(fā)和調(diào)試JSP程序的首選。Servlet是一種服務(wù)器端的Java應(yīng)用程序,具有獨(dú)立于平臺(tái)和協(xié)議的特性,可以生成動(dòng)態(tài)的Web頁(yè)面。它擔(dān)當(dāng)客戶請(qǐng)求(Web瀏覽器或其他HTTP客戶程序)與服務(wù)器響應(yīng)(HTTP服務(wù)器上的數(shù)據(jù)庫(kù)或應(yīng)用程序)的中間層。Servlet是位于Web服務(wù)器內(nèi)部的服務(wù)器端的Java應(yīng)用程序,與傳統(tǒng)的從命令行啟動(dòng)的Java應(yīng)用程序不同,Servlet由Web服務(wù)器進(jìn)行加載,該Web服務(wù)器必須包含支持Servlet的Java虛擬機(jī)。功能分析:軟件整體功能(1)操作者的權(quán)限層次要有明確的分類,進(jìn)入軟件需要進(jìn)行身份驗(yàn)證。(2)出于對(duì)患者個(gè)人隱私的負(fù)責(zé),患者的病歷記錄只能在患者就醫(yī)期間由主治醫(yī)生調(diào)閱,其他任何人包括管理員無(wú)權(quán)查閱?;颊呓巧?)可聯(lián)機(jī)注冊(cè)成為用戶,設(shè)定自己的登錄名和密碼。(2)可按醫(yī)生姓名自定義查詢。(3)可基于查詢結(jié)果進(jìn)行預(yù)約,若指定醫(yī)生當(dāng)日預(yù)約量已滿,則預(yù)約失敗。預(yù)約結(jié)果隨即返回給患者。(4)可對(duì)已經(jīng)進(jìn)行的預(yù)約情況查看或撤銷。(5)預(yù)約成功后可查詢主治醫(yī)生信息,病歷信息。醫(yī)生角色(1)可查看預(yù)約患者的情況(2)可查詢患者病歷(3)可創(chuàng)建患者病歷(4)可對(duì)患者的病歷進(jìn)行修改管理員角色可以添加和刪除醫(yī)生賬號(hào)注1:管理員不是醫(yī)生,只能添加醫(yī)生和刪除醫(yī)生賬號(hào)。同時(shí)醫(yī)生創(chuàng)建完成后無(wú)需設(shè)置密碼,默認(rèn)密碼為醫(yī)生本身編號(hào)。注2:醫(yī)生用戶可以通過(guò)自己的編號(hào)登錄系統(tǒng),同時(shí)可以對(duì)默認(rèn)密碼進(jìn)行修改??梢圆榭吹筋A(yù)約自己的患者。同時(shí)對(duì)患者的病情進(jìn)行診治等。注3:患者用戶可以查看可預(yù)約的醫(yī)生,當(dāng)選擇自己指定的醫(yī)生后,可以查看其所擅長(zhǎng)的能力。當(dāng)對(duì)方醫(yī)生選擇預(yù)約后,可以在自己的主治醫(yī)生欄中看到,并且可以查看到自己的病情和解決時(shí)間等信息。具體實(shí)現(xiàn)功能圖如下:注冊(cè)查詢醫(yī)生信息預(yù)約登錄查詢預(yù)約信息取消預(yù)約查詢主治醫(yī)生信息醫(yī)生查詢預(yù)約患者信息創(chuàng)建病歷查詢患者病歷注銷修改病歷刪除病歷添加醫(yī)生帳刪除醫(yī)生帳患者管理員具體業(yè)務(wù)流程設(shè)計(jì)圖如下:未注冊(cè)是數(shù)據(jù)庫(kù)設(shè)計(jì)當(dāng)一個(gè)系統(tǒng)設(shè)計(jì)數(shù)據(jù)庫(kù)時(shí),其運(yùn)行效率,冗余程度,可靠性,穩(wěn)定性等評(píng)價(jià)指標(biāo)除了與上層的代碼有關(guān)外,更多地會(huì)受到底層數(shù)據(jù)庫(kù)效率的影響。因此,一個(gè)好的數(shù)據(jù)庫(kù)設(shè)計(jì)(至少是規(guī)范的)能夠讓你的系統(tǒng)跑的更順暢,穩(wěn)定。然而,設(shè)計(jì)一個(gè)規(guī)范的數(shù)據(jù)庫(kù)需要一定的計(jì)算機(jī)專業(yè)知識(shí)。所以只是用一種比較容易被接受的,說(shuō)明書式的形式來(lái)介紹如何去設(shè)計(jì)數(shù)據(jù)庫(kù)。本系統(tǒng)定義實(shí)體圖的相互關(guān)系如下:所以將實(shí)體和關(guān)系轉(zhuǎn)換成表。將各個(gè)角色的所有信息分別單獨(dú)的放在獨(dú)立的表中,其中包括該角色的全部信息。選定一個(gè)字段作為主鍵,這個(gè)字段存儲(chǔ)的信息正在整個(gè)表中兩兩相異,比如醫(yī)生的編號(hào)等。如果表中沒(méi)有此類信息,可人為加入惟一的ID作為標(biāo)志,比如PID,AID,QID等。保證表中其他字段只與主鍵有關(guān)系,如果一組信息同時(shí)與一個(gè)以上的表或者一個(gè)表中一個(gè)以上的字段有關(guān)系,則必須將這組信息抽出去獨(dú)立構(gòu)成一張表。如預(yù)約信息既與醫(yī)生有關(guān)也與患者有關(guān)。所以將其獨(dú)立成一張表。對(duì)所有會(huì)成為查詢關(guān)鍵字的字段進(jìn)行索引,以提高查詢效率。針對(duì)以上內(nèi)容需要對(duì)數(shù)據(jù)庫(kù)進(jìn)行整體分析,主要建立7張表,分別是:1.醫(yī)生表:(doctor)用來(lái)存儲(chǔ)醫(yī)生的個(gè)人信息。包括醫(yī)生的編號(hào),姓名,年齡,登錄時(shí)的密碼,性別,職稱,所屬科室,專家門診科目,聯(lián)系電話2.患者表(patient):用來(lái)存儲(chǔ)患者的個(gè)人信息。包括患者編號(hào),姓名,登錄時(shí)用戶名,登錄時(shí)密碼,年齡,性別,家庭住址,聯(lián)系電話.3.病歷表(history):用來(lái)記錄患者的病歷信息。包括病歷記錄編號(hào),主治醫(yī)生編號(hào),癥狀,診斷,患者編號(hào),處方,開始時(shí)間,結(jié)束時(shí)間,就診過(guò)程是否結(jié)束.4.預(yù)約記錄表(pinqueue):記錄了已預(yù)約但尚未創(chuàng)建病歷的患者信息。包括記錄編號(hào),主治醫(yī)生編號(hào),預(yù)約時(shí)間,預(yù)約就診時(shí)間(星期)以及預(yù)約就診時(shí)間(上下午)如下:5.管理員表(administrator):主要存放的是管理員有關(guān)信息。包括管理員編號(hào),登錄時(shí)的用戶名,登錄時(shí)密碼,電子郵件,姓名,聯(lián)系電話。如下圖:醫(yī)生最大可預(yù)約數(shù)量表(appointment):每天可預(yù)約的最大數(shù)量。包括醫(yī)生編號(hào),周1-周日上下午最大可預(yù)約數(shù)。醫(yī)生當(dāng)前可預(yù)約數(shù)量表(curappointment):存儲(chǔ)了醫(yī)生當(dāng)前可預(yù)約的數(shù)量信息。包括醫(yī)生編號(hào),周1-周日上下午最大可預(yù)約數(shù)。注:周1至之日的的時(shí)間安排分上下午從1-14數(shù)字劃分。表和表之間通過(guò)表名.字段以及主鍵來(lái)聯(lián)系各表之間聯(lián)系表名字段名關(guān)聯(lián)表關(guān)聯(lián)字段Pinqueue預(yù)約DoctordoctorDIDPatientpatientPIDHistory醫(yī)院DoctordoctorDIDPatientpatientPIDAppointment一天預(yù)約限制DIDdoctorDIDCurappointment當(dāng)前預(yù)約最大量DIDdoctorDID設(shè)計(jì)思想及注意事項(xiàng)1.適當(dāng)對(duì)信息單調(diào)的字段進(jìn)行索引,這樣不但不會(huì)帶來(lái)性能上的提高,反而會(huì)延長(zhǎng)插入,刪除以及更新操作的時(shí)間。字符串的存儲(chǔ)方式與字符串尤其是中文字符串相比較,數(shù)據(jù)庫(kù)在處理字符和數(shù)字上面比較有效率,因此一些復(fù)雜度有限的字符串?dāng)?shù)據(jù)應(yīng)該設(shè)計(jì)成字符或數(shù)字類型的,并與字符串建立一一對(duì)應(yīng)的關(guān)系。轉(zhuǎn)換工作交給邏輯層處理。軟件的使用在服務(wù)器以及配置完成的情況下,啟動(dòng)tomcat服務(wù)以及數(shù)據(jù)庫(kù)服務(wù)。同時(shí)在數(shù)據(jù)庫(kù)服務(wù)啟動(dòng)完成后把hospital.sql數(shù)據(jù)庫(kù)文件導(dǎo)入到數(shù)據(jù)庫(kù)中。在IE或者其他瀏覽器中輸人網(wǎng)址出現(xiàn)如下的界面:默認(rèn)管理員登錄登錄用戶名為admin密碼為空進(jìn)去后可以刪除其中存在的醫(yī)師,或者添加醫(yī)師信息?;颊咦孕凶?cè)。用戶名以數(shù)字為準(zhǔn)。二邏輯層的設(shè)計(jì)2.1邏輯層包結(jié)構(gòu)設(shè)計(jì)邏輯層的設(shè)計(jì)是本次畢業(yè)設(shè)計(jì)的重點(diǎn)環(huán)節(jié),根據(jù)三層結(jié)構(gòu),邏輯層封裝了系統(tǒng)能夠執(zhí)行的所有機(jī)制和程序,以及對(duì)數(shù)據(jù)庫(kù)的操作。用戶只要在表示層里面調(diào)用邏輯層內(nèi)相映的CLASS文件就可以了,這些類文件都存放在/WEB-INF/CLASSES下面。而且程序只要編譯一次,就可以多次使用。(1)hospital包概述整個(gè)邏輯層都封裝在hospital包中。(2)hospital.db包的概述hospital.db封裝了整個(gè)系統(tǒng)用于完成基礎(chǔ)功能的類,如數(shù)據(jù)庫(kù)連接、日志記錄等。hospital.db.Uti1:輔助類,用于完成一些JSP中常用的功能。hospital.db.InitServlet:初始化整個(gè)Servlet環(huán)境。hospital.db.DBconnection:與數(shù)據(jù)庫(kù)建立連接,返回Connection對(duì)象。hospital.db.Debug:記錄日志,將信息寫入指定的日志文件中。(3)hospital.db.dboperation包概述hospital.db.dboperation包封裝了所有與用戶角色有關(guān)的模型。其中DBOperation類是一個(gè)抽象類,用于建立用戶模型,供具體角色(Admin、Patient、Doctor)繼承。hospital.db.dboperation.DBOperation:建立用戶的抽象模型,供子類繼承。hospital.db.dboperation.Admin:繼承DBOperation,定義管理員模型。hospital.db.dboperation.Patient:繼承DBOperation,定義患者模型。hospital.db.dboperation.Doctor:繼承DBOperation,定義醫(yī)生模型。hospital.db.dboperation.InvalidUserException:繼承自Exception,用以封裝一個(gè)表示“非法用戶名”的異常。2.2與數(shù)據(jù)庫(kù)建立連接類DBConnection本類位于hospital.db包中,由于Connection是一個(gè)非常耗資源的對(duì)象,因此在這里使用單例模式來(lái)設(shè)計(jì)DBConnection類,保證了整個(gè)生命周期內(nèi)只存在一個(gè)Connection對(duì)象,該對(duì)象可以被其他類重復(fù)利用,這樣可以大大節(jié)省系統(tǒng)資源。類名:DBConnection類型:抽象作用:此類主要是建立一個(gè)單例模式來(lái)連接數(shù)據(jù)庫(kù)。返回:Connection對(duì)象該類中一些關(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)。數(shù)據(jù)庫(kù)服務(wù)器為了保證資源被充分利用,會(huì)設(shè)定一個(gè)連接保持時(shí)限,當(dāng)一個(gè)連接時(shí)限內(nèi)與數(shù)據(jù)庫(kù)沒(méi)有通信時(shí),會(huì)被服務(wù)器關(guān)閉。而“Debug.log()”是定義在Debug類中的靜態(tài)方法,用來(lái)將信息存入日志文件。2.3用于將網(wǎng)站運(yùn)行時(shí)遇到的信息記錄到文件中的類Debug類:Debug類型:final方法:l.staticsynchronizedDebuginit(Stringpath);作用是初始化Debug對(duì)象,定義path—日志文件存儲(chǔ)路徑。返回Debug單例對(duì)象。publicstaticsynchronizedvoidlog(Stringmsg);作用是將信息記錄進(jìn)日志文件,日志信息為msg.privateStringwriteFile(Stringmsg);作用將信息記入日志文件,供log(Stringmsg)調(diào)用。publicstaticStringgetExceptionMsg(Exceptione);作用生成格式化異常信息。異常信息為e。同時(shí)返回格式化后的異常信息。2.4用于初始化Servlet的類InitServlet類:InitServlet類型:public繼承:HttpServlet方法:1.publicvoidinit();作用是該方法從HttpServlet類繼承,在初始化Servlet會(huì)自動(dòng)調(diào)用。publicvoiddestroy();作用是該方法從HttpServlet類繼承,銷毀Servlet對(duì)象時(shí)會(huì)自動(dòng)調(diào)用。2.5用于定義了一些輔助方法的類Util類:Util類型:抽象方法:publicstaticint[]parseSpDays(StringdayPattern);作用是處理醫(yī)生預(yù)約信息的字符串,dayPattern為預(yù)約信息(14個(gè)整數(shù),由逗號(hào)或空格分隔),返回一個(gè)長(zhǎng)度為14的整數(shù)數(shù)組。以上類為hospital.db下面類。下面的類為hospital.db.dboperation下面的類。包含角色信息以及事務(wù)的處理。2.6hospital.db.dboperation類(1)用以封裝子類需要用到的數(shù)據(jù)庫(kù)操作對(duì)象和方法的抽象類DBOperation類:DBOperation類型:抽象方法:publicResultSetgetResultSet();作用是返回?cái)?shù)據(jù)集。參數(shù):無(wú)返回值一數(shù)據(jù)集對(duì)象protectedabstractintlogin(Stringpassword);作用是用戶登錄,需要子類實(shí)現(xiàn),所以子類繼承它。參數(shù):password一密碼返回值一操作結(jié)果代碼publicvoidcloseConnection();作用是關(guān)閉數(shù)據(jù)連接。如果無(wú)法關(guān)閉或出現(xiàn)錯(cuò)誤。返回異常值記錄事件中參數(shù):無(wú)返回值:無(wú)protectedabstractvoidcheckUser(Stringid);作用是查詢用戶名合法性,需要子類實(shí)現(xiàn)參數(shù):id—用戶標(biāo)識(shí)符繼承自Exception類的InvalidUserException。重新返回我們需要的異常信息。峪IrLV:alidUserExceptionge+MeEsage0InvalidUserException類方法圖類:InvalidUserException作用:重寫Exception的getMessage()方法,獲得我們需要的異常信息。方法publicStringgetMessage();作用:覆蓋父類方法參數(shù);無(wú)返回值一自定義異常信息醫(yī)生模型Doctor類本類位于hospital.db.dboperation包中,doctor類封狀了醫(yī)生角色可執(zhí)行的所有操作。比如登錄,查詢患者病歷,修改病歷等操作。每個(gè)方法對(duì)應(yīng)一個(gè)可執(zhí)行操作。具體方法說(shuō)明:publicintlogin(Stringpassword);作用是用戶登錄信息的驗(yàn)證。返回值為操作結(jié)果1—登錄成功0一拋出一般異常-1-拋出數(shù)據(jù)庫(kù)異常-2—登錄失敗publicintgetPatientsHistory(StringorderBy);作用是獲取所有患者病歷,orderBy為結(jié)果的排序方式。返回值一操作結(jié)果:1—操作成功0—拋出一般異常-1—拋出數(shù)據(jù)庫(kù)異常publicintgetPatientHistory(inthid);作用是獲取與hid匹配的患者病歷,hid為病歷號(hào)。返回值一操作結(jié)果:1—操作成功0—拋出一般異常-1—拋出數(shù)據(jù)庫(kù)異常publicintgetPatientInQueueInfo();作用是獲取預(yù)約隊(duì)列中患者信息。返回值一操作結(jié)果:1—操作成功0—拋出一般異常protectedvoidcheckUser(Stringid);作用檢查用戶合法性。id為醫(yī)生編號(hào),無(wú)返回值。publicsynchronizedintcreateHistory(intqid,Stringdiagnose,Stringrx,Stringdescription);作用是創(chuàng)建病歷。參數(shù):qid-患者在預(yù)約隊(duì)列中編號(hào)diagnose—診斷rx一處方返回值一操作結(jié)果:1一操作成功0—拋出一般異常-1—拋出數(shù)據(jù)庫(kù)異常-2一非法qid值description—癥狀publicsynchronizedintupdateHistory(inthid,Stringdescription,Stringrx,Stringdiagnose);作用:修改病歷參數(shù):hid—病歷編號(hào)diagnose一診斷rx—處方description—癥狀返回值一操作結(jié)果:1—操作成功0一拋出一般異常-1-拋出數(shù)據(jù)庫(kù)異常-2―非法hid值(4)管理員模型Admin類本類位于hospital.db.dboperation包中,admin類封狀了管理員可執(zhí)行的所有操作,每個(gè)方法對(duì)應(yīng)一個(gè)操作。方法定義如下:publicintlogin(Stringpassword);作用是管理員登錄。參數(shù):password—密碼返回值一執(zhí)行結(jié)果代碼:1—登錄成功0—拋出一般異常-1—拋出數(shù)據(jù)庫(kù)異常-2—登錄失敗publicsynchronizedintaddDoctor(Stringdid,Stringname,intage,intsex,Stringlevel,Stringspe,int[]pPerDay,Stringphone,Stringsection);作用是添加醫(yī)生賬戶。參數(shù):did—醫(yī)生編號(hào)name—姓名age一年齡sex—性別level—職稱spe—特長(zhǎng)pPerDay—每天最大可預(yù)約數(shù)量(周日上午、周日下午、周一上午……)phone一聯(lián)系電話section—科室返回值一執(zhí)行結(jié)果代碼:1—操作成功0一拋出一般異常-1—拋出數(shù)據(jù)庫(kù)異常-2—醫(yī)生帳戶信息已存在publicintgetDoctorInfo();作用獲取醫(yī)生帳戶信息。無(wú)參數(shù)返回值一執(zhí)行結(jié)果代碼:1—查詢成功0一拋出一般異常-1—拋出數(shù)據(jù)庫(kù)異常-2—醫(yī)生帳戶不存在protectedvoidcheckUser(Stringid);作用是檢查用戶名是否存在參數(shù):id—醫(yī)生編號(hào)publicsynchronizedintremoveDoctor(Stringdid);作用是刪除醫(yī)生帳戶信息。參數(shù):did—醫(yī)生編號(hào)返回值一執(zhí)行結(jié)果代碼:1—操作成功0一拋出一般異常-2—醫(yī)生帳戶不存在(5)患者模型Patient類本類位于hospital.db.dboperation包中,patient類封裝了患者角色可執(zhí)行的所有操作。比如登錄,查詢醫(yī)生信息,預(yù)約等操作。在編寫程序時(shí),每個(gè)對(duì)象就是一個(gè)操作。如addPatient()就是針對(duì)患者注冊(cè)的一個(gè)公有對(duì)象。方法定義如下:publicintlogin(Stringpassword);作用是用戶登錄。參數(shù):password一密碼返回值一操作結(jié)果:1—操作成功0一拋出一般異常-1—拋出數(shù)據(jù)庫(kù)異常-2—登錄失敗publicsynchronizedintaddPatient(Stringusername,Stringname,Stringpassword,intage,intsex,Stringaddress,Stringphone);作用是用戶注冊(cè)參數(shù):username—用戶名name—姓名password—密碼age一年齡sex—性別address一聯(lián)系地址phone一聯(lián)系電話返回值一操作結(jié)果:1—操作成功0一拋出一般異常-1—拋出數(shù)據(jù)庫(kù)異常-2—帳戶已存在publicintgetDoctorInfo(StringorderBy);作用查詢醫(yī)生信息參數(shù):orderBy—結(jié)果集排序方式返回值一操作結(jié)果:1—操作成功0一拋出一般異常-1—拋出數(shù)據(jù)庫(kù)異常publicintgetCurrentDoctorInfo();作用獲取主治醫(yī)生信息。參數(shù):無(wú)返回值一操作結(jié)果:1—操作成功0一拋出一般異常-1—拋出數(shù)據(jù)庫(kù)異常publicintgetHistory();作用是查詢病歷。參數(shù):無(wú)返回值一操作結(jié)果:1—操作結(jié)果0一拋出一般異常-1-拋出數(shù)據(jù)庫(kù)異常publicsynchronizedintmakeAppointment(Stringdid,intdayintap);作用是預(yù)約參數(shù):did—醫(yī)生編號(hào)day-預(yù)約日(0為周日,1為周一……)ap—上下午(0為上午,1為下午)返回值一操作結(jié)果:1-操作成功0—拋出一般異常-1-拋出數(shù)據(jù)庫(kù)異常-2—已在相同時(shí)間預(yù)約相同醫(yī)生-3—day或ap格式錯(cuò)publicsynchronizedintcancleAppointment(intqid);作用是取消預(yù)約參數(shù):qid—預(yù)約編號(hào)返回值一操作結(jié)果:1—操作結(jié)果0—拋出一般異常-1—拋出數(shù)據(jù)庫(kù)異常publicintgetAppointmentInfo();作用是查詢預(yù)約信息。參數(shù):無(wú)返回值一操作結(jié)果:1—操作成功0—拋出一般異常-1-拋出數(shù)據(jù)庫(kù)異常-2—用戶未預(yù)約protectedvoidcheckUser(Stringid);作用是檢查用戶名合法性。參數(shù):id—用戶名publicintgetDoctorAppointmentInfo(Stringdid);作用是查詢醫(yī)生預(yù)約信息。參數(shù):did—醫(yī)生編號(hào)返回值一操作結(jié)果:1—操作成功0—拋出一般異常-1—拋出數(shù)據(jù)庫(kù)異常-2—did不存在3表示層設(shè)計(jì)3.1表示層設(shè)計(jì)概述表示層是信息系統(tǒng)的用戶接口部分,即人機(jī)界面,是用戶與系統(tǒng)間交互信息的窗口,主要功能是指導(dǎo)操作人員使用界面,輸入數(shù)據(jù)、輸出結(jié)果。它并不擁有企業(yè)邏輯,或只擁有部分不涉及企業(yè)核心機(jī)密的應(yīng)用邏輯。當(dāng)邏輯層編寫完畢,只剩下最后一項(xiàng)工作,允許用戶以適當(dāng)?shù)姆绞酵ㄟ^(guò)邏輯層與數(shù)據(jù)庫(kù)層交互,而這正是表示層的工作。這里就要通過(guò)功能完整的JSP代碼和HTML代碼來(lái)整合。所以下面將JSP頁(yè)面與邏輯層的整合過(guò)程中的重要部分。(1)聲明部分這個(gè)部分用“<%@……%>”包括,用于設(shè)定一些于JSP頁(yè)面有關(guān)的信息。一般第一行定義了頁(yè)面所使用的字符集,中文界面一般使用GB2312;接下來(lái)使用“<%@pageimport="……”%>”定義頁(yè)面需要導(dǎo)入的包,即“import”語(yǔ)句,本次設(shè)計(jì)中一般被用到的包有:“hospital.db.*”、“hospital.db.dboperation.*”、“java.sql.*”[11』(2)HTML設(shè)計(jì)部分這部分更多地使用HTML代碼把表格搭建出來(lái)并進(jìn)行美化。一般使用HTML中的form標(biāo)簽、table標(biāo)簽和div標(biāo)簽以及輔助action屬性來(lái)搭建框架和美化。其中加入“<%@%>”的JSP代碼段,使得實(shí)現(xiàn)動(dòng)態(tài)頁(yè)面。(3)頁(yè)面數(shù)據(jù)處理這個(gè)部分是整個(gè)JSP頁(yè)面的核心部分,負(fù)責(zé)關(guān)于系統(tǒng)的權(quán)限檢查,從頁(yè)面收集數(shù)據(jù)、對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作、檢測(cè)操作結(jié)果等。(4)釋放數(shù)據(jù)庫(kù)資源當(dāng)所有操作都完成,用戶結(jié)束操作或關(guān)閉界面,系統(tǒng)調(diào)用DBOperation類中的“closeConnection()”方法來(lái)釋放數(shù)據(jù)資源。3.2表示層設(shè)計(jì)中使用的幾大JSP對(duì)象(1)Request對(duì)象該對(duì)象封裝了用戶提交的信息,通過(guò)調(diào)用該對(duì)象相應(yīng)的方法可以獲得封裝的信息,即使用該對(duì)象可以獲取用戶提交的信息。如request.getParameter()方法可以獲取該表單通過(guò)text提交的信息。、(2)Response對(duì)象該對(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è)面。(3)Session對(duì)象它是在第一個(gè)JSP頁(yè)面被裝載時(shí)自動(dòng)創(chuàng)建,完成會(huì)話期間的管理,當(dāng)會(huì)話結(jié)束,session自動(dòng)釋放。如session.getId()方法是獲取Session對(duì)象編號(hào)。Application對(duì)象服務(wù)器啟動(dòng)后就產(chǎn)生了這個(gè)Application對(duì)象,當(dāng)客戶在所訪問(wèn)的各個(gè)頁(yè)面之間瀏覽時(shí),這個(gè)Application對(duì)象都是同一個(gè),直到服務(wù)器關(guān)閉。如application.setAttribute(Stringkey)方法是獲取application對(duì)象中含有關(guān)鍵字的對(duì)象。其他對(duì)象在JSP幾大內(nèi)置對(duì)象中,還有Out,Cookie,Config,Page和Exception等,但在本次設(shè)計(jì)中不是很常用,所以不在贅述閭本次設(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文件名簡(jiǎn)單好懂,一目了然,便于再次開發(fā)的時(shí)候方便設(shè)計(jì)。4系統(tǒng)功能實(shí)現(xiàn)與演示由于系統(tǒng)有3個(gè)角色模型,每個(gè)角色的模型都有很多執(zhí)行操作,介紹繁雜留給用戶自己體驗(yàn)。所以本節(jié)介紹一些基本的用戶操作來(lái)實(shí)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年港中深經(jīng)濟(jì)刷人筆試及答案
- 2025年九陽(yáng)股份校招筆試及答案
- 2025年人事有關(guān)的考試及答案
- 2025年貴陽(yáng)醫(yī)療衛(wèi)生事業(yè)編考試及答案
- 2025年淮陰區(qū)教招筆試及答案
- 2025年湯陰事業(yè)編考試題庫(kù)及答案
- 2025年海南電信筆試題庫(kù)及答案
- 膳食營(yíng)養(yǎng)與食品安全管理委員會(huì)制度
- 群業(yè)群建設(shè)的制度
- 數(shù)學(xué)臨界生培訓(xùn)
- (2025年)上海公務(wù)員考試真題附答案
- (16區(qū)全套) 上海市16區(qū)2026屆初三一?;瘜W(xué)試卷合集(含答案)
- 肺出血-腎炎綜合征診療指南(2025年版)
- 2025年廣西民族印刷包裝集團(tuán)有限公司招聘14人筆試備考試題附答案
- 2025-2026學(xué)年北京市海淀區(qū)初二(上期)期末物理試卷(含答案)
- 房產(chǎn)糾紛訴訟書范文(合集8篇)
- 攜程服務(wù)協(xié)議書
- 癲癇患者的護(hù)理研究進(jìn)展
- 安全管理制度培訓(xùn)課件
- 2025下半年四川綿陽(yáng)市涪城區(qū)事業(yè)單位選調(diào)10人備考題庫(kù)及答案解析(奪冠系列)
- 2025年山東省專升本數(shù)學(xué)(數(shù)一)真題及答案
評(píng)論
0/150
提交評(píng)論