Net医院管理系统说明书.doc
《Net医院管理系统说明书.doc》由会员分享,可在线阅读,更多相关《Net医院管理系统说明书.doc(22页珍藏版)》请在冰点文库上搜索。
![Net医院管理系统说明书.doc](https://file1.bingdoc.com/fileroot1/2023-4/30/32f731b9-6e34-437f-9f1e-2d56b4ed7344/32f731b9-6e34-437f-9f1e-2d56b4ed73441.gif)
.Net软件公司网站
医院管理系统
姓名:
张东旭:
080370128
王宇靖:
080370152
学校:
河南大学人民武装学院
专业:
信息管理与信息系统
指导老师:
张冰波
成绩:
▁▁▁▁
Ⅰ.总体设计 3
1、摘要 3
2、开发工具的介绍 3
3、系统概况 5
Ⅱ.详细设计 7
1、功能模块介绍:
7
(1)登录模块 7
(2)主界面模块 8
(3)病人登记模块 9
(4)病人挂号模块 10
(5)开医令模块 11
(6)前台交费模块 12
(7)药品发放模块 13
(8)药品管理模块 14
2、数据库设计 15
3、系统设计代码(节选):
15
Ⅲ.小结 20
1、遇到的问题及解决方法 20
2、体会和收获 21
医院管理系统说明书
Ⅰ.总体设计
1、摘要
进入21世纪以来,计算机的普及应用和信息技术、网络技术的发展给人们的工作和生活带来了极大的便利和高效,信息化、电子化已经成为节约运营成本,提高工作效率的首选。
相比之下,国内的相当数量的中小型医院的信息管理工作流程还采用相对保守的人工工作方式,数据信息的查询和存储的成本较高,而且效率还很低下。
所以需要一种对于医院的信息管理系统来高效、低成本、便捷的进行医院信息数据的查询和存储。
本文介绍了在VisualC#.NET环境下开发医院管理系统的过程。
文章介绍了医院管理系统的系统分析部分,包括可行性分析、系统流程分析等;系统设计部分主要介绍了系统功能设计和数据库设计及代码设计;系统实现部分说明了几个主要模块的算法,本系统界面友好,操作简单,比较实用。
2、开发工具的介绍
本系统的设计是在WindowsXP中文版操作系统环境下,使用MicrosoftVisualStudio2005中文版开发成功的。
数据库是使用SQLserver2005中文版,它是基于客户机/服务器体系结构的多线程、高性能的数据库管理系统。
由于它具有对数据集中进行管理,保证数据的安全性和完整性,可以优化系统性能,支持开放性等优点,在各个行业中都得到了广泛的应用。
VisualC#.NET
.NET首先是一个开发平台,它定义了一种公用语言子集(CommonLanguageSubsct,CLS),这是一种为符合其规范的语言与类库之间提供无缝集成的混合语。
.NET统一了编程类库,提供了对下一代多络通信标准,可扩展标记语言(ExtensibleMarkupLanguage,XML)的完全支持,使应用程序的开发变得更容易\更简单.Microsoft.NET计划还将实现人机交互方面的革命,微软将在其软件中添加手写和语音识别的功能,让人们能够与计算机进行更好的交流,并在此基础上继续扩展功能,增加对各种用户终端的支持能力。
最为重要的,.NET将改变因特网的行为方式:
软件将变成为服务。
与Microsoft的其它产品一样,.NET与Windows平台紧密集成,并且与其它微软产品相比它更进一步:
由于其运行库已经与操作系统融合在了一起,从广义上把它称为一个运行库也不为过。
简而言之,.NET是一种面向网络、支持各种用户终端的开发平台环境。
微软的宏伟目标是让Misrosoft.NET彻底改变软件的开发方式、发行方式、使用方式等等,并且不止是针对微软一家,而是面向所有开发商与运营商!
.NET的核心内容之一就是要搭建第三代因特网平台,这个网络平台将解决网站之间的协同合作问题,从而是最大限度地获取信息。
在.NET平台上,不同网站之间通过相关的协定联系在一起,网站之间形成自动交流,协同工作,提供最全面的服务。
C#既具有C++语言功能强大、灵活,又具有VB的简单易学、高效的优点,利用它可以方便快捷地开发基于文字处理、图开图像、数据库、多媒体、网络的Windows应用程序和Web应用程序,它对于迅速崛起的XML和WebService也提供了全方位的支持。
因此,越来越多的人选择它作为程序设计语言。
可视化编程:
用传统程序设计语言设计程序时,都是通过编写程序代码来设计用户界面,在设计过程中看不到界面的实际显示效果,必须编译后运行程序才能观察。
如果对界面的效果不满意,还要回到程序中修改。
有时候,这种编程-编译-修改的操作可能要反复多次,大大影响了软件开发效率。
MicrosoftVisualStudio2005提供了可视化设计工具,把Windows界面设计的复杂性“封装”起来,开发人员不必为界面设计而编写大量程序代码。
只需要按设计要求的屏幕布局,用系统提供的工具,在屏幕上画出各种“部件”,即图形对象,并设置这些图形对象的属性。
MicrosoftVisualStudio2005自动产生界面设计代码,程序设计人员只需要编写实现程序功能的那部分代码,从而可以大大提高程序设计的效率。
面向对象的程序设计:
MicrosoftVisualStudio2005支持面向对象的程序设计,但它与一般的面向对象的程序设计语言(C++)不完全相同。
在一般的面向对象程序设计语言中,对象由程序代码和数据组成,是抽象的概念;而MicrosoftVisualStudio2005则是应用面向对象的程序设计方法,把程序和数据封装起来作为一个对象,并为每个对象赋予应有的属性,使对象成为实在的东西。
在设计对象时,不必编写建立和描述每个对象的程序代码,而是用工具画在界面上,MicrosoftVisualStudio2005自动生成对象的程序代码并封装起来。
每个对象以图形方式显示在界面上,都是可视的。
3、系统概况
本系统主要可以实现以下的管理功能:
导医服务管理、医师服务管理、药房管理管理、系统管理等等。
看病流程如下:
挂号
开医令令
抓药
前台交费
等待中
数据管理
凭单交费
看病
系统实现具体功能如下:
1)导医服务管理:
[病人登记]:
主要负责记录医院病人的详细信息,方便医院进行数据备份
[病人挂号]:
病人进行挂号,根据值班医生,选择要挂号的科室、医生,显示挂号费
[前台缴费]:
根据医生的处方令划价收费。
2)医师服务管理:
[开处方]:
给病人用药,可以添加,修改,删除、保存用药信息,并且合计出所用药品的费用,自动添加到数据库中。
3)药房管理
[药库管理]:
根据医生开的处方令以及缴费状况发放药品,药品信息更改到数据库中。
[发放药品]:
根据医生的处方和收费票据到药房取药。
4)系统管理:
[更改密码]:
科室用户修改自己的密码,但不能修改别人的密码。
[用户管理]:
添加、删除管理员,设置管理员权限,此项只有高级管理员才能使用。
[医生管理]:
对医生信息进行添加,删除,修改等,此项只有高级管理员才能使用。
[会员管理]:
可以实现添加会员,修改会员信息,删除会员等功能,此项只有高级管理员才能使用。
具体的系统功能结构图如下:
用户登入
导医服务
医师服务
药房服务
系统设置
基本设置
病人登记
病人预约
前台交费
药品退费
欠费催款
开医令
药品管理
发放药品
退药入库
用户设置
医生设置
科室设置
药品设置
医生会诊
Ⅱ.详细设计
1、功能模块介绍:
(1)登录模块:
实现了登录界面的身份验证,与数据库进行连接,同时可以注册新用户,设置新用户状态,根据不同的登录身份及类型可以登陆不同的界面,进而具有不同的管理权限,从而提高了系统的安全性。
(2)主界面模块:
将系统的功能模块展现出来,方便不同的用户操作;同时,作为父窗体使所有的界面在其内显示,方便不同用户查询和查找;并且要显示登录信息(包括姓名,类型,时间),均要进行保存,有利于系统的维护。
(3)病人登记模块:
属于导医服务,新病人进入医院后要到导医台进行个人信息登记,存档入数据库备份,复诊病人再次来医院时,可以直接查询已有信息,并可以进行修改。
但其中的病历史和过敏史是不能进行修改的,只有医生有这个权限。
(4)病人挂号模块:
属于导医服务,病人登记之后在导医的帮助下进行挂号,选择相应的科室和医生,这里的医生必须是当天值班的医生,因而需要查询值班医生信息,同时提交挂号信息之后,可以打印挂号单(报表功能暂时没有实现),查询门诊号以及当前该医生下的挂号病人,做到心中有数。
(5)开医令模块:
属于医师服务,只有医生可以进入该模块提供服务。
医生接诊后,根据挂号单输入病人门诊号后显示病人信息并可以查看详细信息(包括过敏史和病历史),之后也可核对挂号医生即本人的信息,确认无误后为病人诊断并开处方,对于药品的添加只能查看药品类型和修改药品数量,也可退换药品,之后提交处方信息,并打印处方。
(6)前台交费模块:
属于导医服务,医生为病人开完处方后,到前台进行划价交费,根据所开处方和其他各种费用进行合计,结合会员折扣价之后进行结账,并修改缴费状态,提交缴费信息,生成票号,最后打印账单。
(7)药品发放模块:
交完费之后,病人拿着挂号单,结账单和处方到药房取药,药房工作人员输入病人门诊号之后,显示病人基本信息和看诊医生信息,同时也显示病人的缴费情况,方便对药方的核对。
核对无误后,可以发放药品,提交相应信息,此时系统会验证库存数量,如果药品数量不足,则系统会做出相应提示,并可进行库存查询;如果药品数量充足时,药品发放成功。
(8)药品管理模块:
属于药房服务,药房可以查询药品信息,添加,删除,修改药品信息,根据需要从库存取存药品。
其他管理(挂号管理,医生管理等)功能类似,这里不再赘述。
2、数据库设计:
数据库的设计与系统功能的实现是相辅相成的,共涉及了十几个数据表,并且表与表之间是相互级联的,同时表中的主键和外键要设计合理,比如说,系统中用到最多的是病人门诊号,所以在多个表中都会涉及,有的作为主键,有的作为外键。
具体设计如下:
登记的病人基本情况描述:
包括病人的病人编号、姓名、性别,出生年月,家庭住址,联系电话,紧急联系人,会员卡类型,病历史,过敏史等信息,其中病人编号唯一标识一位病人。
病人挂号情况描述:
包括病人的门诊号,挂号科室,挂号医生,挂号费等基本信息,其中门诊号作为一个病人的唯一标识。
医生开医令情况描述:
包括病人门诊号,医生姓名,联系电话,药品名称,药品数量,单价等信息,其中病人门诊号唯一标识一个药方。
划价收费情况描述:
包括病人门诊号,票号,药品名称,数量,合计,其中票号唯一标识一个收费单,同时合计的信息中包括药品费,挂号费等所有费用
发放药品情况描述:
包括药品编号,药品名称,拼音码,单位,规格,单价,数量等信息,其中拼音码唯一标识一个药品的发放情况。
这里省去了一些数据表的表示,可以查看SQLSever2005中的相关数据表。
3、系统设计中的部分重要代码:
(1)利用类的封装性将一些要频繁使用的函数及公用变量封装在一个类里面,从而可以在使用时直接调用,进而简化了代码,节省了系统资源,特别是一些与数据库的交互更应该放在一个类里面,方便调用和理解。
具体代码如下:
publicSqlConnectiongetcon()
{
stringsqlstr="DataSource=PC-201002031300;InitialCatalog=Hospital;IntegratedSecurity=True";
SqlConnectionmyconn=newSqlConnection(sqlstr);
returnmyconn;
}//获取连接字符串,在更换机器时只需修改此处代码即可。
publicSqlDataReadergetread(stringtempstr)
{
SqlConnectionsqlconn=this.getcon();
SqlCommandsqlcom=newSqlCommand(tempstr,sqlconn);
sqlconn.Open();
SqlDataReadersqlread=sqlcom.ExecuteReader(CommandBehavior.CloseConnection);
returnsqlread;
}//生成SqlDataReader对象,利用该对象调用读取数据库信息。
publicDataSetgetds(stringtempstr,stringtemptable)
{
SqlConnectionmycon=this.getcon();
SqlDataAdaptermyadapter=newSqlDataAdapter(tempstr,mycon);
DataSetmyds=newDataSet();
myadapter.Fill(myds,temptable);
returnmyds;
}//生成数据集,可以根据条件联合多个表生成不同的数据集服务客户需要,非常重要。
它是与数据库交互的重要纽带。
publicvoidgetcom(stringtempstr)
{
SqlConnectionsqlconn=this.getcon();
sqlconn.Open();
SqlCommandsqlcom=newSqlCommand(tempstr,sqlconn);
sqlcom.ExecuteNonQuery();
sqlconn.Close();
sqlconn.Dispose();
}//执行数据库命令,返回受影响行。
也是经常用到的数据库操作。
(2)全局变量的使用,可以在整个系统中进行调用,实现一些界面之间的数据交互。
具体代码如下:
classoperater
{
//记录操作者
publicstaticstringoperatename="";
//记录员工职业
publicstaticstringoperatetype="";
//当前操作的病人姓名
publicstaticstringnowman="";
}
DialogResultresult=MessageBox.Show("登录成功,要进入医院管理系统吗?
","提示",
MessageBoxButtons.YesNo,MessageBoxIcon.Question);
if(result==DialogResult.Yes)
{
operater.operatetype=comboBox1.SelectedItem.ToString();
operater.operatename=textBox1.Text;
MainFormmf=newMainForm();
mf.Show();
this.Visible=false;
}
returntrue;
(3)将数据库中的信息特别是标识列的信息绑定到下拉框中,方便信息的检索。
具体代码如下:
DataSetgetname=mydata.getds("selectnamefrompatient","patient");
//将名字这一列选出来填充到数据集中,利用数据集对象进行相关操作
for(inti=0;i{
this.cmb_name.Items.Add(getname.Tables[0].Rows[i][0]);//添加到下拉框选项中。
}
this.cmb_name.AutoCompleteMode=AutoCompleteMode.SuggestAppend;
this.cmb_name.AutoCompleteSource=AutoCompleteSource.ListItems;//在输入的同时自动检索信息
(4)在从下拉框中选定检索信息后,对应的文本框自动显示与之相关的信息。
具体代码如下:
privatevoidcmb_name_SelectedIndexChanged(objectsender,EventArgse)
{
stringstr=cmb_name.Text;
DataSetds=mydata.getds("select*frompatientwherename='"+str+"'","patient");
textBox1.Text=ds.Tables[0].Rows[0]["name"].ToString();
comboBox1.SelectedItem=ds.Tables[0].Rows[0]["sex"].ToString();
dateTimePicker1.Value=Convert.ToDateTime(ds.Tables[0].Rows[0]["birthday"]);
textBox2.Text=ds.Tables[0].Rows[0]["sidno"].ToString();
comboBox2.SelectedItem=ds.Tables[0].Rows[0]["sidtype"].ToString();
comboBox3.SelectedItem=ds.Tables[0].Rows[0]["firstquery"].ToString();
textBox9.Text=ds.Tables[0].Rows[0]["firstphone"].ToString();
textBox10.Text=ds.Tables[0].Rows[0]["firstaddress"].ToString();
dateTimePicker2.Value=Convert.ToDateTime(ds.Tables[0].Rows[0]["recorddate"]);
comboBox4.SelectedItem=ds.Tables[0].Rows[0]["cardtype"].ToString();
textBox11.Text=ds.Tables[0].Rows[0]["balance"].ToString();
textBox12.Text=ds.Tables[0].Rows[0]["creditlimit"].ToString();//特别要注意从数据集的表中读取相关行列数据的方法。
}
(5)登录信息的验证,姓名,密码与登录类型的统一才可以登录。
具体代码如下:
privateboolValidat()
{
boolbit=true;
stringsql=string.Format("select*from用户表wherename='{0}'andpassword='{1}'andstate='{2}'andworktype='{3}'",textBox1.Text,textBox2.Text,bit,comboBox1.SelectedItem.ToString());
SqlDataAdaptersda=newSqlDataAdapter(sql,DBHelper.connecting);
DataSetds=newDataSet();
sda.Fill(ds,"用户表");
if(ds.Tables["用户表"].Rows.Count>0)
{
DialogResultresult=MessageBox.Show("登录成功,要进入医院管理系统吗?
","提示",
MessageBoxButtons.YesNo,MessageBoxIcon.Question);
if(result==DialogResult.Yes)
{
operater.operatetype=comboBox1.SelectedItem.ToString();
operater.operatename=textBox1.Text;
MainFormmf=newMainForm();
mf.Show();
this.Visible=false;
}
returntrue;
}
else
{
MessageBox.Show("用户相关信息错误,请重新输入");
textBox1.Focus();
returnfalse;
}
}