资源描述
数据库系统课程设计报告
题目:住院管理系统
课程代号: 0680036
课程名称:数据库系统课程设计
学号:xxx
姓名:XXXX
班级:XXXX
指导教师:XXXX
完成日期:2010年12月
第一章 引言
1.1 问题描述:
随着现代社会信息技术与计算机技术飞速发展,生活中的许多地方都使用这些科技成果,住院管理系统也是一项很复杂繁琐的工作,不仅需要花费大量人力和精力进行操作,而且容易产生错误,住院记录不易保存查找,并且容易丢失,在管理方面困难重重。因此,需要祝愿管理系统对医院的病人住院、出院等信息进行统筹的管理,以确保工作的正常进行。
1.2系统说明:
住院管理涉及病人的入住信息、离院信息、以及病人的住院期间管理等信息,包括病人的用药管理、医护管理、费用管理等多种数据。住院管理主要针对管理人员对病人的资料进行增加、修改、删除与查询,可以划分为三部分:住院病原管理、病房计费以及住院部药房管理。住院管理系统主要应具有以下功能:
一、住院病员管理
主要负责住院病人档案和费用等管理。由入院处理、预缴金处理、出院处理、报表处理四大功能模块组成。
1、住院病员管理部分特点
(1)全面管理住院病人费用
对住院病人费用进行实时监控。
(2)灵活多样的收费、结算方式
本系统采用多种收费、结算方式:现金、转帐、公费、本院。
2、功能介绍
系统由输入、结账、帐目共三个部分组成。
(1) 输入部分包括:
办理入院 为新入院病员建立费用帐户。
收预交费 登记病员预交金额。
办理担保 设置病人类型和担保人。
转 科 办理病员从一个科转入另一个科的手续。
(2) 结帐部分包括:
出院结帐 办理出院,打印发票,同时为日报准备数据。
中途结帐 病员继续住院,结清已发生的全部费用。
单科结帐 只结帐某一个科别所发生费用。
(3) 帐目部分包括:
出院日报 当天出院病员的费用分类统计表。
记帐日报 当天记入费用数据库的费用分类统计表。
库存日报 全院尚未出院全部病员费用分类统计表。
删除数据明细表 被删除数据的明细表。
出院月报 全月出院病员费用分类统计表。
出院年报 全年出院病员费用分类统计表。
二、病房计费部分系统
1 病房计费系统特点
(1)病房直接管理本科病员的费用情况,完成记费功能。
(2)治疗费用以详细名称记帐(如:注射费、纱布费、一次性针头等等)。为今后医疗改革及保险机构准备了最可靠的底层数据。
2 系统功能
(1)记费功能 给本科病员记治疗费和药费等。
(2)查 询 护士查询医师诊断和处方对病人用药。
(3)记 录 护士记录病人病况,病情变化,用药情况和体态特征等病历情况。
2 数据查询
(1)在院患者信息查询
(2)预交款查询
(3)登帐费用查询
(4)科室费用查询
(5)出院患者查询
(6)出院患者费用查询
三、住院部药房管理部分系统
住院部药房管理子系统是医院药品管理的重要组成部分,它与药库和临床科室有着密切的联系。住院部药房管理子系统的主要功能是完成向药库请领药品、处理临床科室领、退药品及完成窗口业务等。
1 系统特点
(1)遵循药品管理先进先出的原则。
(2)系统同时采用国家药品分类标准编码、划价码及药品拼音码三种编码方案。其中,医院自定药品编码、拼音码只需简单设置后,系统将自动生成。
(3)支持自费,公费药品管理。
(4)报表丰富且可根据医院的不同情况定制。
(5)支持药品分组。
(6)支持毒麻药品每日校对交接功能。
(7)先进的刷卡发药功能,杜绝了药品冒领和误领现象。
2 系统功能
药房药品管理 请领药品处理:向药库请领药品。 药品发放处理:包括口服水剂发放、针剂外用发放、麻醉药品发放、中成草药发放及出院带药发放等,对未发药品能作出相应处理。 病人退药处理:包括病人退药、病区退药功能。 药房药品盘点,药房药品报损,药房库存调整药房价格调整,药品名称修正。
1.3系统运行环境
Windows xp
My SQL
Tomcat
MyEclipse
使用语言 JAVA JSP
第二章 系统分析与设计
2.1系统需求分析
2.1.1需求分析:
(1)能够实现对新入住病人的资料信息录入,能够实现对病人住院期间的管理与维护;
(2)能够实现对病人的资料进行修改与查询功能;
(3)能够进行对病人收取费用;
(4)能够进行借阅历史的查询功能;
2.1.2系统性能要求
(1)系统安全、可靠;
(2)功能齐全;
(3)操作方便、界面美观;
(4)易于维护和扩充。
2.1.3系统功能分析
资料维护:为了存放病人档案的全部数据,本系统将每一位病人的病例以及病人的个人信息进行管理。系统维护包括对各种表记录的修改、删除、添加等操作。
系统查询:可以按病人ID号、科目,名称等相关信息进行查询
系统管理:进行病人的资料管理。
报表统计:包括统计病人病例、病人个人信息、病人缴费情况和病人用药情况等。
其它操作:包括修改密码、添加用户、页面设置等
用户:医院管理人员对病人的各种情况进行修改、查询等操作。
2.1.4系统流程图:
查 询
修 改
删 除
增 加
医院员工
是否成功
登 陆
否
是
2.1.5数据字典:
(1)名称:医院管理人员
描述:记录医院管理人员信息
定义:管理员信息=管理员ID+管理员密码
输入数据:管理员ID
输出数据:管理员信息
(2)名称:病人信息表结构
描述:记录所有病人的基本信息
定义:病人信息=病人名称+病人id+病人住院科室
输入数据:id 病人名称
输出数据:病人信息
(3)名称:读者信息表结构
描述:记录医院管理人员信息
定义:医护人员信息=id+姓名+科室类型+证件类型+证件号码+电话号码+Email
输入数据:id
输出数据:医护人员信息
(4)名称:病人档案表结构
描述:查询病人信息
定义:病人档案=id+病人名称+病人科室
输入数据:id号,病人名称
输出数据:查询的病人信息
2.2数据库概念结构设计:
数据库E-R图:
医生
收费单
病房
病床
护士
病情
账单
病人
位于
安排
分配
结账
住入
接受
拥有
治疗
协助
主治
书写
1
n
1
n
n
1
1
1
1
m
n
n
n
n
1
1
1
n
1
n
1
1
出院
总费用
2.3数据库逻辑结构设计:
数据库所建表:
1.建立病房类型/价格表
CREATE TABLE [dbo].[bflx] (
[病房类型] [varchar] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[病房价格] [int] NULL
) ON [PRIMARY]
2.建立病房表
CREATE TABLE [dbo].[bfno] (
[病房号] [varchar] (5) COLLATE Chinese_PRC_CI_AS NULL ,
[病房类型] [varchar] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[flag] [tinyint] NULL ,
[在住状态] [varchar] (6) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
1. 建立管理员/操作员信息表
CREATE TABLE [dbo].[psw] (
[name] [char] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[psw] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[权限] [tinyint] NULL
) ON [PRIMARY]
5.建立病人信息表
CREATE TABLE [dbo].[sufferer] (
[编号] [varchar] (8) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[患者姓名] [varchar] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[性别] [varchar] (2) COLLATE Chinese_PRC_CI_AS NULL ,
[出生日期] [datetime] NULL ,
[证件类型] [varchar] (8) COLLATE Chinese_PRC_CI_AS NULL ,
[证件号码] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[血型] [varchar] (2) COLLATE Chinese_PRC_CI_AS NULL ,
[rh因子] [varchar] (5) COLLATE Chinese_PRC_CI_AS NULL ,
[过敏史] [varchar] (8) COLLATE Chinese_PRC_CI_AS NULL ,
[病房类型] [varchar] (8) COLLATE Chinese_PRC_CI_AS NULL ,
[病房号] [varchar] (5) COLLATE Chinese_PRC_CI_AS NULL ,
[主治医师] [varchar] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[住院时间] [datetime] NULL ,
[登记员] [varchar] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[备注] [text] COLLATE Chinese_PRC_CI_AS NULL ,
[压金] [int] NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
6.建立出院病人信息表
CREATE TABLE [dbo].[出院病人] (
[编号] [varchar] (8) COLLATE Chinese_PRC_CI_AS NULL ,
[患者姓名] [varchar] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[性别] [varchar] (2) COLLATE Chinese_PRC_CI_AS NULL ,
[出生日期] [datetime] NULL ,
[证件类型] [varchar] (8) COLLATE Chinese_PRC_CI_AS NULL ,
[证件号码] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[血型] [varchar] (2) COLLATE Chinese_PRC_CI_AS NULL ,
[RH因子] [varchar] (5) COLLATE Chinese_PRC_CI_AS NULL ,
[过敏史] [varchar] (5) COLLATE Chinese_PRC_CI_AS NULL ,
[病房类型] [varchar] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[病房号] [varchar] (5) COLLATE Chinese_PRC_CI_AS NULL ,
[主治医师] [varchar] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[住院时间] [datetime] NULL ,
[出院时间] [datetime] NULL ,
[登记员] [varchar] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[备注] [text] COLLATE Chinese_PRC_CI_AS NULL ,
[住院费用] [int] NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
2.5系统总体设计
住院管理系统
系统信息
出院管理
病房管理
病人
登记
帮助信息
更换用户
更改密码
新增用户
删除用户
备份/恢复
退出系统
病人登记
病人查询
费用查询
病房信息
病房查询
增
/删病房
登记出院
出院病人查询
帮助产题
关于
所有病房信息
空闲病房信息
在住病房信息
第三章 系统开发及实现
3.1所用技术介绍
本系统界面设计主要采用CSS技术+jsp,数据库采用My SQL
3.2设计效果
3.2.1系统登录
主要源代码
<%@page contentType="text/html; charset=utf-8"%>
<html>
<head>
<%@include file="mousehead.txt"%>
<title>用户登录</title>
</head>
<body background="image/1214945834.jpg" bgcolor="#fef4d9">
<%@include file="mousebody.txt"%>
<form name="form1" method="post" action="LoginServlet">
<table width="100%">
<tr>
<td width="100%" bgcolor="#00FF33" align="center">
<h1>住院管理系统</h1>
</td>
</tr>
<tr>
<td align="center"></td>
<%=request.getSession().getAttribute("ErrorMessage") %>
</tr>
</table>
<br/>
<table width="300" border="1" align="center" cellpadding="0" cellspacing="0" bgcolor="#66ff88">
<tr>
<td align="center" colspan="3">登 录</td>
</tr>
<tr>
<td align="left" colspan="3"> 姓名:
<input name="username" type="text"/>
</td>
</tr>
<tr>
<td align="left" colspan="3"> 密
码:
<input name="password" type="password"/>
</td>
</tr>
<tr>
<td align="center">
<input type="submit" name="submit" value="登陆"/>
</td>
<td></td>
</tr>
</table>
</form>
</body>
</html>
3.2病人管理
主要源代码
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ page import="com.newprogram.hz.impl.*" %>
<%@ page import="com.newprogram.hz.vo.*" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>病人管理</title>
<style>
<!--
.datalist{
border:1px solid #0058a3; /* 表格边框 */
font-family:Arial;
border-collapse:collapse; /* 边框重叠 */
background-color:#eaf5ff; /* 表格背景色 */
font-size:14px;
}
.datalist caption{
padding-bottom:5px;
font:bold 1.4em;
text-align:left;
}
.datalist th{
border:1px solid #0058a3; /* 行名称边框 */
background-color:#4bacff; /* 行名称背景色 */
color:#FFFFFF; /* 行名称颜色 */
font-weight:bold;
padding-top:4px; padding-bottom:4px;
padding-left:12px; padding-right:12px;
text-align:center;
}
.datalist td{
border:1px solid #0058a3; /* 单元格边框 */
text-align:left;
padding-top:4px; padding-bottom:4px;
padding-left:10px; padding-right:10px;
}
.datalist tr:hover, .datalist tr.altrow{
background-color:#c4e4ff; /* 动态变色 */
}
.datalist a{
color:#000000; /* 行名称颜色 */
font-weight:bold;
padding-top:4px; padding-bottom:4px;
padding-left:12px; padding-right:12px;
text-align:center;
}
-->
</style>
</head>
<body background="asd.jpg">
<%
int pagesize = 5;
int pagenow = 1;
int rowcount = 0;
int pagecount = 0
String sPagenow = request.getParameter("pagenow");
if(sPagenow != null) {
pagenow = Integer.parseInt(sPagenow);
}
TableDeptFinanceImpl tdfi = new TableDeptFinanceImpl();
String keyword = request.getParameter("keyword");
if (keyword == null) {
keyword = "";
}else {
keyword = new String(keyword.getBytes("ISO-8859-1"),"utf-8");
}
rowcount = tdfi.rowCount(keyword);
if(rowcount%pagesize == 0) {
pagecount = rowcount / pagesize;
}else {
pagecount = rowcount / pagesize + 1;
}
try{
List all = tdfi.findAll(pagenow,pagesize,keyword);
Iterator iter = all.iterator();
%>
<form action="DeptFinance.jsp" method="post"">
<table class="datalist" summary="list of members in EE Studay">
<caption><h1>病人管理</h1></caption>
<tr>
<th><input class="table" type="text" name="keyword" id="harddisk2004" value=<%=keyword %>></th>
<th><input class="table" type="submit" name="keyword" id="harddisk2004" value="搜索"></th>
<th colspan="8"><a href="DeptFinanceCreate.jsp">添加</a></th>
</tr>
<tr>
<th scope="col">病人姓名</th>
<th scope="col">科室名称</th>
<th scope="col">年龄</th>
<th scope="col">会诊时间</th>
<th scope="col">会诊次数</th>
<th scope="col">备注</th>
<th scope="col">病因</th>
<th scope="col" colspan="3">操作</th>
</tr>
<%
while(iter.hasNext()) {
TableDeptFinance tdf = (TableDeptFinance)iter.next();
%>
<tr>
<td><%= tdf.getStaName() %></td>
<td><%= tdf.getDeptname() %></td>
<td><%= tdf.getDeptSurplus() %></td>
<td><%= tdf.getDeptTime() %></td>
<td><%= tdf.getDeptPay() %></td>
<td><%= tdf.getDeptMark() %></td>
<td><%= tdf.getDeptClasses() %></td>
<td><a href="DeptFinanceUpdate.jsp?deptid=<%= tdf.getDeptId() %>">修改</a></td>
<td><a href="DeptFinanceDeleteServlet?deptid=<%= tdf.getDeptId() %> " onclick='return confirm("确定删除吗?")'>删除</a></td>
<td><a href="DeptFinanceCreate.jsp">添加</a></td>
</tr>
<%
}
}catch(Exception e) {
e.printStackTrace();
}
%>
</table>
</form>
<%
for(int i = 1; i<= pagecount; i++) {
out.println("<a href=DeptFinance.jsp?keyword="+keyword+"&pagenow="+ i +">[" + i + "]</a>");
}
%>
<script language="javascript">
var rows = document.getElementsByTagName('tr');
for (var i=0;i<rows.length;i++){
rows[i].onmouseover = function(){ //鼠标在行上面的时候
this.className += 'altrow';
}
rows[i].onmouseout = function(){ //鼠标离开时
this.className = this.className.replace('altrow','');
}
}
</script>
</body>
</html>
3.3费用管理
主要源代码
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ page import="com.newprogram.hz.impl.*" %>
<%@ page import="com.newprogram.hz.vo.*" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>费用管理</title>
<style>
<!--
.datalist{
border:1px solid #0058a3; /* 表格边框 */
font-family:Arial;
border-collapse:collapse; /* 边框重叠 */
background-color:#eaf5ff; /* 表格背景色 */
font-size:14px;
}
.datalist caption{
padding-bottom:5px;
font:bold 1.4em;
text-align:left;
}
.datalist th{
border:1px solid #0058a3; /* 行名称边框 */
background-color:#4bacff; /* 行名称背景色 */
color:#FFFFFF; /* 行名称颜色 */
font-weight:bold;
padding-top:4px; padding-bottom:4px;
padding-left:12px; padding-right:12px;
text-align:center;
}
.datalist td{
border:1px solid #0058a3; /* 单元格边框 */
text-align:left;
padding-top:4px; padding-bottom:4px;
padding-left:10px; padding-right:10px;
}
.datalist tr:hover, .datalist tr.altrow{
background-color:#c4e4ff; /* 动态变色 */
}
.datalist a{
color:#000000; /* 行名称颜色 */
font-weight:bold;
padding-top:4px; padding-bottom:4px;
padding-left:12px; padding-right:12px;
text-align:center;
}
-->
</style>
</head>
<body background="asd.jpg">
<%
int pagesize = 5;
int pagenow = 1;
int rowcount = 0;
int pagecount = 0;
String sPagenow = request.getParameter("pagenow");
if(sPagenow != null) {
pagenow = Integer.parseInt(sPagenow);
}
TableStaFinanceImpl tsfi = new TableStaFinanceImpl();
String keyword = request.getParameter("keyword");
if (keyword == null) {
keyword = "";
}else {
keyword = new String(keyword.getBytes("ISO-8859-1"),"utf-8");
}
rowcount = tsfi.rowcount(keyword);
if(rowcount%pagesize == 0) {
pagecount = rowcount / pagesize;
}else {
pagecount = rowcount / pagesize + 1;
}
try {
List all = tsfi.findAll(pagenow, pagesize, keyword);
Iterator iter = all.iterator();
%>
<form action="StaFinance.jsp" method="post"">
<table class="datalist" summary="list of members in EE Studay">
<caption><h1>费用管理</h1></caption>
<tr>
<th><input class="table" type="text" name="keyword" id="harddisk2004" value=<%=keyword %>></th>
<th><input class="table" type="submit" name="keyword" id="harddisk2004" value="搜索"></th>
<th><th colspan="5"><a href="StaFinanceCreate.jsp">添加</a></th>
</tr>
<tr>
<th scope="col">病人姓名</th>
<th scope="col">病人编号</th>
<th scope="col">科室编号</th>
<th scope="col">科室名称</th>
<th scope="col">药物费用</th>
<th scope="col">住院费用</th>
<th scope="col" colspan="3">操作</th>
</tr>
<%
while(iter.hasNext()) {
TableStaFinance tsf = (TableStaFinance)iter.next();
%>
<tr>
<td><%= tsf.getStaName() %></td>
<td><%= tsf.getStaId() %></td>
<td><%= tsf.getDeptno() %></td>
<td><%= tsf.getDeptname() %></td>
<td><%= tsf.getStaSalary() %></td>
<td><%= tsf.getStaPremium() %></td>
<td><a href="StaFinanceUpdate.jsp?staid=<%= tsf.getStaId() %>">修改</a></td>
<td><a href="StaFinanceDeleteServlet?staid=<%= tsf.getStaId() %> " onclick='return confirm("确定删除吗?")'>删除</a></td>
</tr>
<%
}
}catch (Exception e) {
e.printStackTrace();
}
%>
</table>
</form>
<%
for(int i = 1; i<= pagecount; i++) {
out.println("<a href=StaFinance.jsp?keyword="+keyword+"&pagenow="+ i +">[" + i + "]</a>");
}
%>
<script language="javascript">
var rows = document.getElementsByTagName('tr');
for (var i=0;i<rows.length;i++){
rows[i].onmouseover = function(){ //鼠标在行上面的时候
this.className += 'altrow';
}
rows[i].onmouseout = function(){ //鼠标离开时
this.className = this.className.replace('altrow','');
}
}
</script>
</body>
</html>
3.4药物管理
主要源代码
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ page import="com.newprogram.hz.impl.*" %>
<%@ page import="com.newprogram.hz.vo.*" %>
<%
String path = request.getContextPath();
String
展开阅读全文