医院管理系统设计说明书Word格式文档下载.docx
《医院管理系统设计说明书Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《医院管理系统设计说明书Word格式文档下载.docx(28页珍藏版)》请在冰豆网上搜索。
在数据库应用系统的开发过程中,数据库的结构设计是一个非常重要的问题。
数据库结构设计的好坏将直接对应用系统的效率以及实现的效果产生影响,好的数据库结构会减小数据库的存储量,数据的完整性和一致性比较高,系统具有较快的相应速度,简化基于此数据库的应用程序的实现等。
在数据库系统开始设计的时候应该尽量考虑全面,尤其应该仔细考虑用户的各种需求,避免浪费不要的人力和物力。
2.1数据库需求分析
数据库需求分析是数据结构设计的第一阶段,是非常重要的一个阶段。
在这个阶段主要是收集基本数据、数据结构以及确定数据处理的流程,组成一份详尽的数据字典,为以后进一步设计打下基础。
在仔细调查医院管理过程的基础上,我们得到本系统所处理的数据关系如图2
所示。
医生
病人资料
图2数据关系图
针对本实例,通过对医院管理的容和数据关系分析,我们设计的数据项和数据结构如下:
员工基本状况包括的数据项有员工号、员工、性别、所在部门、号、生日、籍贯、国籍、民族、婚姻状况、健康状况、参加工作时间、员工状态、家庭住址、联系等。
员工工资状况包括的数据项有员工号、工资项别、工资金额等。
医院工作岗位信息包括的数据项有工作岗位代号、工作岗位名称
医院部门信息包括的数据项有部门代号、部门名称、部门负责人等。
病人信息包括的数据项有病人、病人性别、入院时间、病人所属
科室、病人状况、病人主治医生、房间号、病床号等。
药剂资源管理信息包括的数据项有药剂代号、药剂名称、药剂价
格、药剂库存数量、备注等。
医疗仪器管理包括的数据项有仪器代号、仪器名称、仪器价格、
仪器数量、备注等。
有了上面的数据结构、数据项和数据关系,我们就进行下面的数据库设计。
2.2数据库概念结构设计
这一设计阶段是在需求分析的基础上,设计出能够满足用户需求的各种实体,以及确定他们之间的关系,为后面的逻辑结构设计打下基础。
本实例根据上面的设计规划出的实体有员工实体、部门实体、岗位实体、病人实体、药剂实体、仪器实体。
实体和实体之间的关系E-R图如图3所示。
2.3数据库逻辑结构设计
我们需要将上面的数据库概念结构转化为MicrosoftVisualStudio2008数据
库系统所支持的实际数据模型,也就是数据库的逻辑结构。
在上面的实体以及实体之间关系的基础上,我们就可以形成数据库中的表格以及
各个表格之间的关系。
医院管理系统数据库中各个表格的设计结果如表。
每个表格对应在数据库中的一个表。
图3实体之间关系E-R图
表1PERSONNEL员工基本状况表
列名
数据类型
可否为空
说明
EMPNO
NUMBERIC(6)
NOTNULL
员工号(主键)
EMPNAME
CHARACTER。
。
)
NULL
员工
EMPDEPTID
NUMBERIC(3)
所在部门号
EMPDUTY
CHARACTER(10)
职务
EMP_XL
学历
EMP_GENDER
CHARACTERS)
性别
EMP_BIRTHDAY
DATE
生日
EMP_HOMETOWN
籍贯
EMP_COUNTRY
CHARACTER(IO)
国籍
EMP_NATION
民族
EMP_ID
号
EMP_MARRIAGE
CHARACTER
(2)
婚姻状况
EMP_HEALTH
健康状况
EMP_STARTWORK
参加工作时间
EMP_STATE
员工状态
EMP_HOMEADDRESS
家庭住址
EMP_TELENO
NUMBERIC(10)
联系
EMP_EMAIL
CHARACTER(20)
联系E-mail地址
EMP_JOB_ID
工作岗位代号
表2为工作岗位情况表
表2JOB工作岗位情况表
JOB_ID
NTONULL
工作岗位代号(主键)
JOB_NAME
工作岗位名称
表3为部门信息表
表3DEPT部门信息表
DEPTID
部门代号(主键)
DEPTNAME
部门名称
DEPTMANAGER
部门主任代号
DEPT_VICEMANAGE
部门副主任代号
表4为病人信息表。
表4病人信息表PATIENT
PATIENT_NAME
病人(主键)
PATIENTGENDER
病人性别
PATIENT_DATE_START
入院时间
PATIENTDEPT
病人所属科室
PATIENTSTATE
病人状况
PATIENTDOC
病人主治医生
PATIENTROOM
CHARACTER(3)
病人房间号
PATIENTBED
病人病床号
表5为药剂信息表。
表5药剂信息表POTION
POTION」D
药剂代号(主键)「
POTIONNAME
药剂名称
POTION_PRICE
NUMBERIC(5,2)
药剂价格
POTION_QUANTITY
药剂库存数量
POTION_REM
CHARACTER(40)
备注
表6为医疗仪器信息表。
表6医疗仪器信息表APPARATUS
APPARATUS」。
仪器代号(主键)
APPARATUS_NAME
仪器名称
APPARATUS_PRICE
仪器价格
APPARATUSQUANTITY
仪器数量
APPARATUSREM
一个企业可以有多个用户管理该系统,因此就需要为不同的用户设置不同的口
令。
表7为管理TMS系统的用户口令表。
表7管理TMS系统的用户口令表TMS
TMS_USER
用户名(主键)
TMS_PSWD
口令
各个功能模块的创建
登陆界面
登陆代码:
namespaceHospital_MIS
{
publicpartialclassFrm_login:
Form
databaseoperatemyoperate=newdatabaseoperate();
publicFrm_login()
lnitializeComponent();
}
privatevoidbtn_exit_Click(objectsender,EventArgse)
Application.Exit();
privatevoidFrm_login_FormClosed(objectsender,FormClosedEventArgse){
privatevoidbtn_ok_Click(objectsender,EventArgse)
{//首先查询数据库,获取与指定用户名和密码匹配的信息
SqlDataReadersqlread=myoperate.getread
("
selectname,password,disciplinefromemployee"
+
"
wherename='
+txt_name.Text.Trim()+
'
andpassword='
+txt_pwd.Text.Trim()+"
);
try
sqlread.Read();
//读取SqlDataReader
if(sqlread.HasRows)//如果存在匹配行
{//在operateinfo中记录用户名信息
operateinfo.operatename=
txt_name.Text.Trim();
//显示主窗体
Frm_Mainnewfrm=newFrm_Main();
this.Hide();
newfrm.Show();
else
{//如果密码错误,则显示提示信息并要求用户重新输入
MessageBox.Show("
用户名或密码错误!
"
"
提示"
MessageBoxButtons.OK,MessageBoxIcon.Information);
txt_name.Text="
;
txt_pwd.Text="
txt_name.Focus();
finally
{//如果己经实例化了SqlDataReader
if(sqlread!
=null)
{//关闭SqlDataReader
sqlread.Close();
2.系统主界面设计
系统主界面
病人挂号界面
病人挂号代码:
publicpartialclassFrm_appointment:
publicFrm_appointment()
privatevoidbutton3_Click(objectsender,EventArgse){
//获取病人的编号
operateinfo.patientno=txt_patientno.Text.Trim();
//实例化并显示打印预览窗口
Frm_printregfrm=newFrm_printreg();
frm.Show();
privatevoidFrm_appointment_Load(objectsender,EventArgse)
//进行病人名称的自动完成操作
this.cmb_name.AutoCompleteMode=AutoCompleteMode.SuggestAppend;
this.cmb_name.AutoCompleteSource=AutoCompleteSource.ListItems;
//添加要进行操作的类型
cmb_optype.Items.Add("
预约"
预约挂号"
);
现场挂号"
cmb_optype.SelectedIndex=0;
//将病人信息的文本框控件设置为不可用
SetControlFalse();
//加载病人
this.getname();
//添加医师名称以及预约科室
DataSetgetdocnameds=myoperate.getds
selectID,name,disciplinefromemployee"
"
employee"
for(inti=0;
i<
getdocnameds.Tables[0].Rows.Count;
i++)
{//将预约科室添加到ComboBo控件中
this.cmb_docdiscipline.Items.Add(getdocnameds.Tables[0].Rows[i][2]);
//对医师信息进行数据绑定cmb_docname.DataSource=getdocnameds.Tables[0];
cmb_docname.DisplayMember="
name"
;
cmb_docname.ValueMember="
ID"
//添加员工表中所有员工的信息,绑定到预约医生ComboBo控件中
DataSetgetappointdocds=myoperate.getds("
selectID,namefromemployee"
cmb_appointdoc.DataSource=getappointdocds.Tables[0];
cmb_appointdoc.DisplayMember="
cmb_appointdoc.ValueMember="
//添加挂号名称到ComboBo控件中
DataSetgetregnameds=myoperate.getds("
selectnamefromdict_reg"
dict_reg"
getregnameds.Tables[0].Rows.Count;
this.cmb_regname.Items.Add(getregnameds.Tables[0].Rows[i][0]);
}cmb_regname.SelectedIndex=0;
privatevoidSetControlFalse()
txt_balance.Enabled=false;
txt_birthday.Enabled=false;
txt_cardname.Enabled=false;
txt_celladdress.Enabled=false
txt_cellphone.Enabled=false;
txt_email.Enabled=false;
txt_patientno.Enabled=false;
txt_sex.Enabled=false;
privatevoidgetname()
cmb_name.Items.Clear();
getnameds.Tables[0].Rows.Count;
this.cmb_name.Items.Add(getnameds.Tables[0].Rows[i][0]);
appointment_done=1"
appoint"
stringtempstr=cmb_name.Text;
DataSetchanagenameds=myoperate.getds("
select*frompatientwherename='
tempstr+"
patient"
txt_sidtype.Text=chanagenameds.Tables[0].Rows[0]["
sidtype"
].ToString();
sex"
txt_sidno.Text=chanagenameds.Tables[0].Rows[0]["
sidno"
txt_sex.Text=chanagenameds.Tables[0].Rows[0][
patientno"
txt_patientno.Text=chanagenameds.Tables[0].Rows[0][
txt_email.Text=chanagenameds.Tables[0].Rows[0]["
e_mail"
txt_cellphone.Text=chanagenameds.Tables[0].Rows[0]["
cellphone"
txt_celladdress.Text=chanagenameds.Tables[0].Rows[0]["
celladdress"
txt_cardname.Text=chanagenameds.Tables[0].Rows[0]["
cardtype"
txt_birthday.Text=chanagenameds.Tables[0].Rows[0]["
birthday"
txt_balance.Text=chanagenameds.Tables[0].Rows[0]["
balance"
privatevoidbtn_addappointment_Click(objectsender,EventArgse)
if(cmb_optype.SelectedItem.ToString()!
="
{//如果操作类型不为预约时,则提示用户
请将操作类型设为预约!
{//如果没有指定病人,也不能进行预约
if(cmb_name.Text=="
)
请选择预约人的!
{//如果没有指定预约医生,不能进行预约
if(cmb_docname.Text=="
请选择预约医生!
!
{//同时要指定预约科室
if(cmb_docdiscipline.Text=="
请选择预约科室!
{//如果预约的各个条件都符合,则调用执行插入语句插入到数据库中
myoperate.getcom("
insertintoappointment(patientname,patientno,"
+"
doctor,discipline,thisdate,thistime,appointment_done)"
+"
values('
+cmb_name.SelectedItem.ToString()+"
'
+txt_patientno.Text.Trim()+"
+cmb_docname.SelectedValue.ToString()+"
+cmb_docdiscipline.SelectedItem.ToString()+"
+dtp_thisdate.Value.ToShortDateString()+"
+dtp_thistime.Value.ToShortTimeString()+"
+Convert.ToSByte(true)+"
)"
添加预约成功!
//提示添加成功
this.gridviewinit();
//重新刷新GridView控件
privatevoidbtn_addreg_Click(objectsender,EventArgse)
if(cmb_optype.SelectedItem.ToString()=="
请将操作类型选成挂号!
方可进行挂号!
//this.getname();
请选择预约人的!
if(cmb_