網上門診管理系統_第1頁
網上門診管理系統_第2頁
網上門診管理系統_第3頁
網上門診管理系統_第4頁
網上門診管理系統_第5頁
已閱讀5頁,還剩10頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、華 北 科 技 學 院課程設計說明書(網絡編程)班級:姓名: 學號:設計題目: 網上門診管理系統 設計時間: 2013-06-17 至 2013-06-30 指導教師: 彭珍、劉華 評 語: 評閱成績: 評閱教師: 目錄1引 言11.1課程設計選題11.2課程設計題目設計要求12需求分析12.1 功能需求12.2 系統的開發運行環境22.3 數據建模(E-R圖)23 .總體設計33.1 系統功能模塊及主要設計33.2 系統功能模塊設計圖53.3數據庫設計54詳細設計與實現74.1 登錄模塊7功能設計7界面設計7模塊算法74.2 護士功能模塊8功能設計8界面設計8模塊算法84.3 醫生功能模塊9

2、功能設計9界面設計10模塊算法11調試與測試124.4 管理員功能模塊13功能設計13界面設計13模塊算法14調試與測試15小結和展望151引 言1.1課程設計選題網上門診管理系統1.2課程設計題目設計要求要求參照實際的醫院門診處理流程,實現門診管理系統。 1)病人信息:包括病歷編號、病人姓名、性別、年齡、處方編號;2)處方信息:包括處方編號、病因、處方詳情、開方醫生;3)用戶信息:包括用戶姓名、身份(護士/醫生)、密碼;4)系統管理員能夠對用戶信息進行增刪改操作;5)護士能夠增加、刪除、修改病人信息,能夠修改自己的密碼,能夠查看病人的處方信息;6)醫生能夠查看病人信息,為病人開設處方;7)要

3、求所有用戶先登錄后使用。2需求分析2.1 功能需求系統分析:實際醫院門診處理大致流程是就診病人需先掛號登記然后到相關科室就診。參照大致流程在該系統中應包含有以下功能:掛號時,護士將病人基本信息錄入病歷中的功能。所以護士有管理病歷的功能;醫生為病人問診時,能查看病人基本信息,并依據病人的病情及其個人狀況為病人開具處方。所以醫生有管理處方的功能;為了實現醫院護士和醫生的有效、合理化管理,則該系統還需要有后臺的管理功能,即管理員管理用戶。具體功能分析:該系統包括三類用戶:護士(nurse)、醫生(doctor)、管理員(admin)為保護系統中病人及病人基本信息,該系統不允許用戶注冊,用戶由管理員內

4、部添加。所有用戶通過登錄進入系統,進入其對應的功能模塊。并能查看部分個人信息及修改自己的登錄密碼。護士:能在該系統錄入病人的基本信息,通過查詢功能輕松查獲病歷信息,并能對所有病歷進行增刪改查操作。醫生:進入系統能查看所有病人的病歷信息,并為就診的病人開具處方。能查看所有處方信息,能修改自己開具的處方。管理員:能在該系統錄入客戶的信息資料,通過查詢功能輕松得到用戶的基本信息,并且可以對所有用戶信息進行增刪改查操作。 2.2 系統的開發運行環境本系統開發集成環境: JSP引擎(Tomcat5.5以上版本)+ JDK(1.6)+ sql server 2000本系統運行環境: windows xp

5、或以上版本2.3 數據建模(E-R圖)用戶E-R圖如圖1.所示,病歷E-R圖如圖2.所示。 圖1.用戶實體及屬性 圖2.病歷實體及屬性處方E-R圖如圖3.所示。處方由醫生為病人開具,處方是用戶(醫生)與病歷表之前的聯系。總體E-R圖:一個病人可以有多張處方,一個醫生可以為多個病人開具多張處方,如圖4.所示。圖3.聯系的屬性圖4.總體E_R圖3 .總體設計3.1 系統功能模塊及主要設計該系統的主要功能模塊:登錄模塊,管理員功能模塊,醫生功能模塊,護士功能模塊。功能模塊圖如圖1.所示。登錄模塊:用以實現用戶登錄,判斷登錄用戶的用戶名與登錄密碼是否正確,正確才能進入系統。非用戶不能登錄系統。護士功能

6、模塊:護士進入系統可執行的操作包括三類:病歷管理:為前來就診的病人創建病歷記錄,并能對錯誤的病歷信息進行刪、改操作。檢索病歷:根據病人的局部信息,選擇檢索方式從所有病歷記錄中找到所要查找的病歷記錄。并可對其進行操作。個人操作:個人操作是所有用戶的公共功能。包括修改個人密碼和注銷登錄。系統用戶注銷登錄后,儲存在session中的登錄狀態信息會被清空,必須重新登錄系統才能再進行相關操作。醫生功能模塊:醫生進入系統可執行的操作包括三類:病歷查看:醫生類用戶可查看所有病歷的記錄,并可根據病人提供的部分基本信息檢索病歷,并可查看病人的處方信息及為就診病人開具處方。處方管理:可查看所有處方信息,修改個人開

7、具的處方信息。能通過病人病歷ID號查看病人的就診記錄。通過醫生的ID號查看醫生開具的處方記錄。管理員功能模塊:管理員進入系統可執行的操作主要包括三類:用戶管理:對用戶的信息進行增刪改查。檢索用戶:根據用戶的局部信息,選擇檢索方式從所有記錄中找到所要查找的用戶記錄。并可對其進行操作。本系統主要采用MVC(JSP+JavaBean+Servlet)開發模式實現。具體實現是用JSP實現界面設計。用Servlet類接收用戶的請求,控制調用JavaBean中相應類的功能,實現功能并響應用戶的請求。NServlet起控制作用,通過接收參數判斷,用戶請求的功能,并執行對應操作。當用戶提交一個請求,就到Ser

8、vlet類(NServlet.java)中進行判斷并處理然后反饋到用戶界面。即NServlet在系統中起控制作用。JavaBean用于封裝數據和業務。界面設計:該系統的界面主要是運用了style.css樣式。頁面結構如圖5.所示。頁面中用include指令在頁面中插入子頁面文件。代碼實例如下:<div id="container"><div id="banner"><%include file="common/ntop.inc" %></div><div id="foot

9、er"><%include file="common/footer.inc" %> </div></div>bannermainleftfooterGlobarlink(包含在header中)Container(最外層盒子)圖5.頁面結構圖3.2 系統功能模塊設計圖登錄(login.php)管理員醫生護士病歷查看處方管理個人操作病歷管理檢索病歷個人操作檢索用戶用戶管理個人操作圖6.系統功能模塊圖3.3數據庫設計在該系統中用戶需先登錄才能進入系統進行,不同用戶有不同的權限,需有針對性的進行各種不同操作。所以該系統的數據庫中要

10、有相應的表來保存用戶的信息。該表中應包含用戶的姓名、用戶密碼、以及用戶類型(用以對用戶權限的判斷,使用戶登錄后進入自己對應的頁面)。在該系統中將保存用戶信息的表設為用戶信息表(userlist)。在該系統中,護士要為來就診的病人錄入病人的基本信息,并對病人的基本信息進行管理。所以該系統需要為病人建一張表,病歷信息表(patient)。用來保存病人的基本信息。在該系統中醫生主要操作就是為就診病人開處方。為儲存處方信息,系統中的數據庫還需要一個表。處方信息表(cf)醫生為病人開處方后,將處方信息入庫保存。處方表是病歷實體和用戶實體之間的聯系表。所以處方表中還應包括該處方針對的病歷的ID號,以及開具

11、處方的醫生ID。綜上所述:該系統的數據庫應包含三個表,用戶信息表、病歷信息表及處方信息表。表的結構如表1,表2,表3所示。詳細表結構見數據庫文件。用戶信息表的屬性包括用戶ID,用戶姓名,密碼,用戶類型,用戶性別及所在科室、照片。表1.用戶信息表(userlist)列名數據類型長度是否為空說明用戶ID號(uid)int4非空主鍵用戶姓名(uname)varchar20非空密碼(upass)varchar20非空用戶類型(ukind)varchar20非空用戶性別(usex)varchar20非空所在科室(uwork)varchar20非空個人照片(uphoto)varchar20非空病歷信息表的

12、屬性包括病歷ID,姓名,性別,年齡,聯系電話,病歷添加時間。表2.病歷信息表(patient)列名數據類型長度是否為空說明病歷ID號(pid)int4非空主鍵,自動增1姓名(pname)varchar20非空性別(psex)varchar10非空年齡(page)varchar10非空聯系電話(ptel)varchar20非空病歷添加時間(ptime)datetime非空自動獲取系統時間處方信息表的屬性包括處方、病歷、用戶的ID號,病情描述,處方,年齡,開方時間。表3.處方信息表(cf)列名數據類型長度是否為空說明處方ID號(cid)int4非空主鍵,自動增1病歷ID號(pid)int4非空主鍵

13、,自動增1用戶(醫生)ID號(uid)int4非空主鍵,自動增1病情描述(reason)varchar500非空處方詳情(content)varchar500非空開方時間(ctime)datetime8非空自動獲取系統時間4詳細設計與實現4.1 登錄模塊功能設計為保護系統中的信息,所有用戶通過登錄進入系統。在登錄頁面(login.jsp)輸入用戶名(本系統的登錄用戶名為用戶ID號)與密碼。提交,系統根據用戶輸入的信息,判斷該用戶是否為系統中的用戶。若是系統中的用戶則可進入系統,通過用戶的身份使其進入不同的頁面。如管理員登錄成功后進入用戶管理頁面(admin.jsp)。在登錄頁面還包括有幫助和醫

14、院門診規章鏈接,點擊可進入相關頁面。除此之外在登陸模塊中還包含一個醫院宣傳圖片的播放器。界面設計圖7. 登錄窗口模塊算法用戶填入登錄信息點擊登錄按鈕,帶參提交到Servlet類中action="NServlet?func=login"。在NServlet中接收func參數。通過對參數func進行判斷,若func.equals("login")則接收表單中的數據封裝到用戶類User的對象u中,通過用戶的業務封裝類UserDao的對象userdao調用list=userdao.queryAll(); 方法獲得數據庫中所有的用戶記錄。通過調用userdao.i

15、sExist(u);方法判斷用戶輸入信息是否正確,若輸入不正則跳轉到nlogin.jsp頁面,輸出提示信息。若正確則在session中設置登錄標記字符為“YES”,從數據庫中取出該用戶的相關信息,將用戶的用戶名,用戶類型,用戶ID號暫存在session中。session.setAttribute("login","YES");session.setAttribute("uname",uname);session.setAttribute("ukind",ukind);session.setAttribute(&qu

16、ot;uid",uid);然后對用戶的身份類型進行判斷:并使其進入其對應的頁面:if(b.equals("nurse") response.sendRedirect("nurse.jsp"); if(b.equals("admin") response.sendRedirect("admin.jsp"); if(b.equals("doctor") response.sendRedirect("doctor.jsp"); 用戶登錄后再界面中顯示歡迎語句:在top.i

17、nc中獲取用戶名:String uname=(String)session.getAttribute("uname");然后在頁面中指定位置顯示提示語句:<font size=3>用戶:<%out.print(uname);%>,歡迎回來!</font>4.2 護士功能模塊功能設計護士功能模塊包括的三大功能:病歷管理、病歷檢索、個人操作。病歷管理:護士進入系統后的主頁面就是顯示所有病歷記錄的頁面,與醫生主頁面相似但最后一列的操作不,在護士主界面能進行的操作 對病歷記錄進行刪除和修改。病歷檢索:其實可以說這個功能是為病歷管理服務的輔助功能。

18、它主要實現的功能是通過病歷中的部分信息,選擇相應的檢索方式。進入檢索頁面,進行查詢。4.2.2界面設計圖8.護士功能模塊_主頁面模塊算法病歷管理:護士用戶在頁面點擊相關操作的鏈接,提交增刪改的請求,(攜帶判斷參數)提交到NServlet類中。在NServlet類通過func參數的判斷,調用Patient類中的方法封裝數據,調用PatientDao類中的方法封裝業務。執行用戶請求的操作,并返回提示信息進入不同頁面。病歷檢索:功能與管理員檢索用戶類似,詳細可見管理員功能模塊分析。個人操作:個人操作是所有用戶的公共功能。修改個人密碼和注銷登錄。系統用戶注銷登錄后,儲存在session中的登錄狀態信息

19、會被清空,必須重新登錄系統才能再進行相關操作。4.3 醫生功能模塊功能設計醫生功能模塊包括的三大功能:病歷查詢、處方管理、個人操作。因為個人操作時所有用戶的公共功能,在前面已經介紹過,所以在這里著重分析前兩個功能。病歷查詢:醫生進入系統后的主頁面就是顯示所有病歷記錄的頁面,見界面設計。該功能與護士管理病歷雷同,除了操作不同。在醫生界面點擊對應病歷后面的查看處方操作鏈接,傳遞病歷ID號到NServlet類中從數據庫中查詢出該病人的就診處方記錄,鏈接語句如下:<a href="NServlet?func=sc1&pid=<%=p1.getPid()%>"

20、;>最重要的是醫生可以通過各種方式,利用病人的基本信息檢索病歷,并可對檢索出來的結果進行操作包括查看處方和為病人開具處方。處方管理:包括三個子功能,查看所有處方、檢索病人的開方記錄、檢索醫生的開方記錄。查看所有處方與查看所有病歷類似。不同的是醫生查看的是處方表。在該頁面中點擊病歷編號可查看病人的基本信息。點擊醫生編號可查看醫生的個人信息。查看醫生信息與管理員功能模塊中查看用戶信息功能雷同,詳見管理員功能給模塊說明。檢索病人處方的記錄和檢索醫生的開方記錄功能實現方法雷同,都是查詢多個表。從結果集中選中所需的信息,顯示在表中。具體實現見模塊算法分析。個人操作:與護士類型用戶相同,詳見護士功能

21、模塊說明。界面設計圖9.醫生功能模塊_主頁面圖10.查看處方及檢索病人處方記錄圖11.醫生為病人開處方圖12.查看所有處方模塊算法醫生最重要的功能就是為病人開具處方。病人的基本信息如年齡、性別可能會是醫生開處方時須要知道的信息。所以要求醫生為病人開具處方時需顯示出用戶的基本信息。可是在數據庫中病歷信息和處方信息存儲在不同表中。如果要聯系在一起,就需要查詢病歷表得到病人對應病歷信息。主要處理步驟:醫生點擊開具處方操作鏈接,<a href="kcf.jsp?pid=<%=p1.getPid()%>">進入kcf.jsp頁面,在kcf.jsp獲得sessi

22、on中當前用戶(醫生)的用戶名,String doctor=(String)session.getAttribute("uname");從數據庫中獲得所有病歷記錄。存到list中。接收從前一頁面傳來的對應病人病歷ID號,與list中的所有記錄進行比對,找到該條病歷記錄。將該病歷中的基本信息的值顯示在表格中的對應位置。并將當前開具處方的醫生姓名也顯示在對應開方醫生的位置。點擊提交后將表單信息傳遞到NServlet 類中進行處理:action="NServlet?func=addc&pid=<%=p.getPid()%>"從session

23、中獲得當前開方醫生的Uid,接收上一頁面傳來的病歷ID號,病情描述及處方內容。然后創建處方業務封裝類CfDao類的對象調用添加處方的方法執行添加功能。如果處方添加成功跳轉到cadd.jsp頁面,到如果操作不成功則跳轉cadderror.jsp頁面。醫生為病人開處方時有時候需要查看病人以往生病的記錄,所以在該系統中有一個檢索病人處方記錄的功能。實現的主要步驟:點擊鏈接進入按病歷ID號查看處方記錄的頁面,在表單中輸入要查詢的病歷ID號,點擊提交按鈕。提交查詢請求到NServlet類。action="NServlet?func=sc1"在NServlet類中接收傳遞過來的病歷ID

24、號。從三個表中查詢sql語句如下:"select * from patient,cf,userlist where patient.pid=cf.pid and cf.uid=userlist.uid and cf.pid='"+pid+"'",調用處方業務封裝類CfDao中的select(sql)方法獲得查詢結果集。將結果集添加到request中,跳轉到顯示頁面:showcf_p.jsp。在顯示頁面接收結果集,并顯示部分結果集中的信息。以下是該頁面接收結果集后,對結果集的處理。List list=(List)request.getAtt

25、ribute("list");for(int i=0;i<list.size();i+)Cf c=(Cf)list.get(i); /取出list中第一條記錄強制轉換成Cf類型i+; /取出第二條記錄,強制轉換成Patient類型Patient p=(Patient)list.get(i);i+; /取出第三條記錄,強制轉換成User類型User u=(User)list.get(i);查看醫生開方記錄與上述查看病人就診記錄雷同。在這里就不在贅述了。調試與測試在整個醫生功能模塊中,最讓我糾結的是處方管理中的檢索病人的處方記錄和查看醫生的開方記錄。因為這兩個功能都涉及查

26、詢多個表都涉及病歷表和處方表和用戶表。其實查詢多個表并不難,難的是結果集的處理。一開始時我的想法是像查詢病歷那樣在處方業務封裝類(CfDao.java)中,新建一個方法select用來執行查詢語句。然后在頁面將查詢提交到NServlet中,在NServlet中創建查詢語句的對象,創建CfDao類對象調用select(sql)方法,獲得結果集。但是在select(sql)方法中,對于執行查詢語句所得到的結果集處理。我一直不太懂。剛開始我考慮,以往我們在學數據庫的時候,要獲得結果中的部分信息時總是用表名.列名調用顯示如patient.pid。所以我就采用這種方法獲得結果:p.setPid(rs.g

27、etInt(patient.pid);結果編譯類的時后并沒有出錯,但是,輸出方法返回結果中的屬性,發現沒有獲得值。后來有同學說,要從結果集中取出值要按查詢所得得結果,一一對應的去出來,進行封裝才可以。而且在接收結果集的頁面,取出順序要與存入順序對應。后來改過結果集處理方式之后:p.setPid(rs.getInt(1);果然就能獲得結果集了。4.4 管理員功能模塊功能設計管理員功能模塊主要是實現對用戶的管理。管理員功能模塊:管理員進入系統可執行的操作主要包括三類:用戶管理,檢索用戶,個人操作用戶管理:對用戶的信息進行增刪改,如界面設計所示。檢索用戶:根據用戶的局部信息,選擇檢索方式從所有記錄中

28、找到所要查找的用戶記錄。并可對其進行操作,點擊查看用戶信息可查看用戶(包括相片)的所有基本信息。界面設計圖13.管理員功能模塊_主頁面圖14.添加用戶圖15.檢索用戶_按科室檢索 圖16.查看用戶信息模塊算法用戶管理:該功能與護士管理病歷雷同。管理員用戶在頁面點擊相關操作的鏈接,提交增刪改的請求,到NServlet類中。在NServlet類通過func參數的判斷,調用User類中的方法封裝數據,調用UserDao類中的方法封裝業務。執行用戶請求的操作,并返回提示信息進入不同頁面。詳細實現可參見護士管理病歷說明。檢索用戶:該功能主要是通過點擊不同檢索方式,進入對應頁面。輸入用戶的部分信息點擊進行

29、查詢,將表單提交到NServlet類。判斷func參數后執行對應查詢。不同的檢索方式其實方法雷同。在這里以科室、性別進行檢索為例進行說明。點擊左側的功能鏈接進入按科室檢索頁面如圖3.。在下拉列表中選擇所在科室,在性別單選框選中性別點擊按鈕搜索,帶參func=us6將表單傳到NServlet類。action="NServlet?func=us6"在NServlet類中接收表單中的數據,創建sql語句:String sql="select * from userlist where uwork='"+uwork+"'and usex

30、='"+usex+"'"創建UserDao對象userdao調用UserDao 中的select(sql);方法,返回符合條件的用戶記錄,添加到request中,帶參傳到ushowselect.jsp顯示。select(sql);方法主要算法:創建與數據庫的連接;執行sql語句,獲得結果集;將結果集記錄一條條封裝成User類的記錄,存放到list中。返回鏈表list,捕捉異常。關閉數據庫連接。添加用戶基本信息功能中有一個屬性是添加用戶的頭像。這個屬性是基于現實中人員管理的實際來考慮的。主要實現算法如下:在添加用戶信息頁面中,添加照片這一屬性對應的列

31、中設置添加一個file類主鍵(與文本框、密碼框類似)。在其顯示框后有一“瀏覽”按鈕,點擊該按鈕后選中所需要的頭像照片。之后提交到NServlet類中,在NServlet中通過判斷func參數,確定執行的操作。接收新用戶的基本信息(uid等)。但是通過file主鍵選中了文件傳遞過來的值是照片的文件名。所以,需要對uphoto屬性值進行處理:String photoname=request.getParameter("uphoto");獲得頭像圖片的文件名String path="image/photo/" 頭像圖片的相對位置String uphoto=path+photoname; 確定頭像圖片的位置及名字 u.setUphoto(uphoto);所以在該系統中存入系統的用戶的頭像圖片必須放在固定位置。該系統中用戶信息表中用戶的照片屬性存儲的是頭像圖片的相對路徑。調試與測試添加用戶頭像應該算是一個困擾我蠻久的一個疙瘩,在這次的課設中。因為它是一個花費了較多時間的小功能。剛開始考慮到添加用戶頭像時

溫馨提示

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

評論

0/150

提交評論