基于.net的医院管理系统论文_第1页
基于.net的医院管理系统论文_第2页
基于.net的医院管理系统论文_第3页
基于.net的医院管理系统论文_第4页
基于.net的医院管理系统论文_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、- i - 摘要摘要 信息技术时代的来临极大地改变了世界,在医院管理领域我们将一个计算机 化的医院系统称为医院信息系统。我们通过这个系统收集和处理有用信息,方便 了患者查询就医,大大降低人力和物力的消耗,使得整体的管理效率得到提高。 因此,现代化的医院需要一流的医院信息系统。 本文旨在论述医院管理系统的开发过程。本系统利用了 visual studio 2005 作 为开发平台,整合 sql server 2005 作为数据库软件,用 作为数据库中间 件连接数据库,进行数据交换,使用 c#来编写代码。由于医院管理系统定位于局 域网的应用,本系统采用 c/s 的架构。系统可根据功能分为四部分:临

2、床诊断、 、划价、基本的人事管理、医院药房管理,各种报表提供了充分的信息以供查询, 有利于提高医院管理工作的效率。 关键词:医院信息系统,数据库,visual studio 2005,c# - ii - abstract the coming of it era has changed world dramatically in many ways,it also indroduced a brand new concept in hoapital management,a computerized system called hospital information system(his).

3、we use this system to gether and deal with information we need , meet the needs of every user and make it more convenient for patients to inquire,be treated .more efficient management can also save money and energy.therefore,setting up a well designed his can be very necessary for modern hospitals.

4、this article put emphasis on how to develop a hospital information system.i used visual studio 2005 as my development platform,integrated with database software sql server 2005,i selected as middleware to exchange data from database and choose c# to write code.his was assumed to be lan-based,so i ch

5、oose c/s architecture.generally speaking,my system can be divided into four parts by function:patient registering and dianosising,treatment charging,basic personel management and hospital pharmacy management,there are variety of report forms that illustrate information,all these can be helpful to im

6、prove the management of hospital. keywords: hospital information system, database, visual studio 2005,c# - iii - 目录目录 摘要 .i abstract.ii 第 1 章 引言.1 1.1 背景.1 1.2 研究内容.1 第 2 章 基于 c/s 结构的 his 系统开发方法 .3 2.1 客户机/服务器系统结构分析.3 2.1.1 客户机/服务器结构.3 2.1.2 客户机/服务器(c/s)的特点 .3 2.2 数据库访问技术.4 2.2.1 ado.net.4 2.3 数据库 s

7、ql server 2005.6 2.4 开发工具.7 2.4.1 开发工具套件 visual studio 2005.7 2.4.2 c# 2.0 .8 2.5 本章小结.9 第 3 章 系统需求分析.10 3.1 系统设计原理.10 3.2 系统主要功能要求.10 3.3 性能需求.12 3.4 本章小结.13 第 4 章 数据库设计.14 4.1 概念结构设计.14 4.2 逻辑结构设计.15 4.3 视图及触发器设计.19 4.3.1 视图.19 4.3.2 触发器.19 4.4 本章小结.19 - iv - 第 5 章 系统设计与实现.20 5.1 系统总体框架.20 5.2 登录界

8、面.21 5.3 主界面.23 5.3.1 注销用户.24 5.3.2 查看医生.24 5.4 临床诊断.24 5.4.1 挂号.24 5.4.2 病人等待室.25 5.4.3 诊断界面.26 5.4.4 查看医疗信息.27 5.5 人事系统.29 5.5.1 查看修改员工.29 5.5.2 查看修改个人信息.31 5.6 药房管理.33 5.6.1 药品出入库.33 5.7 处方划价.34 5.8 本章小结.34 第 6 章 结束语.35 致谢.36 参考文献.37 - 1 - 第第 1 章章 引言引言 1.1 背景背景 医院的医疗水平和服务质量一直是社会关注的焦点,随着社会的发展,人们 对

9、健康越来越关注,医院的业务不断增长,处理越来越复杂,简单的人工经营管 理,已无法满足医院的需要, 成为医院发展的瓶颈, 人们对医疗服务的要求也 越来越高。传统的手工操作模式,病人账目繁杂,病人查帐困难, 病区和药房的 药品浪费现象严重且无法追踪, 人工传送各种记账单容易漏帐、错,人工划价收 费差错难以避免,仅靠增加基础设施投入和脱离信息化的管理方法的改进,是不 能从根本上提高医院的工作效率、服务质量和管理水平的。医院管理信息化不仅 能提高医务人员的工作效率和医疗水平,而且能提高医院的服务质量和管理水平,因 此,医院对管理信息系统有着强烈的需求。 管理信息系统是一门新兴的、集管理科学、信息科学、

10、系统科学及计算机 科学为一体的综合性学科,研究的是信息管理活动的全过程,以便有效的管理信 息,提供各类管理决策信息,辅助企业进行现代化管理。美国著名教授 morris.collen 于 1988 年曾著文为医院信息系统(his)下了如下定义:利用电子 计算机和通讯设备,为医院所属各部门提供病人诊疗信息和行政管理信息的收集、 存储、处理、提取和数据交换的能力,并满足所有授权用户的功能需求。his 的 目的就是减轻业务劳动强度,减少了差错,科学管理药品,节省人力,提高医院 的财、物管理水平,增加经济效益,改善患者的就医环境,方便患者就医和查询, 提高医院的服务效率和服务质量,提高医院的医疗质量和管

11、理水平。所以,一个 现代化的适应社会发展需要的医院,除了具备一流的医疗队伍、一流的服务设施 之外,还应具备一流的管理信息系统。 1.2 研究内容研究内容 his 系统中的临床诊断流程包含门诊管理、病区管理、药房管理、药库管理 四大模块。整个业务流程包括:入库登记、挂号登记、医生诊断检查、医生开医 嘱、检查项目执行、分发药品、药库药品出库、药库药品入库、处方划价。以下 - 2 - 按出门诊处、病区、药房、药库四大功能科室分别阐述。 (1)门诊处: 病人首先到登记,门诊处给病人挂号,登记病人的信息。登记 结束后,病人再交纳一定数额费用,出入院处给病人押金收据。之后进入病区。 (2) 病区:病人在入

12、院或在门诊处登记之后,到病区由护士给病人分配床 位或相应的主治医生。医生在给病人做完诊断之后给病人下医嘱。由医嘱产生治 疗项目执行申请和药品发药请领单。治疗过程中如果病人申请退药,护士再向药 房发送退药申请.医嘱执行时产生的固定项目费用,例如:护理费、床位费、诊疗 费都在相应的功能科室直接收费。需要医技确认的医嘱项目都在检查科室执行完 成后,由病区记费。 (3) 药房:药房收到病区的发药申请后即给病区发药,收到病区的退药申 请后给病区退药。药房向药库申请药品入库药品退货。 (4) 药库:药库收到药房的入库申请后即给药房发货,收到药房的退药申 请后给药房退货。药库向药商购货和退货。 由于需求可能

13、变动,以上的实际需要保持一定的业务扩展性。 his 系统中也包括医院的基本人事管理,包括增删改员工信息,上传员工照 片,修改登录密码等功能。 - 3 - 第第 2 章章 基于基于 c/s 结构的结构的 his 系统开发方法系统开发方法 2.1 客户机客户机/服务器服务器系统结构分析系统结构分析 客户机(client)和服务器(server)都是独立的计算机。当一台连入网络的计算 机向其他计算机提供各种网络服务(如数据、文件的共享等)时,它就被叫做服务 器;而那些用于访问服务器资料的计算机则被叫做客户机。 2.1.1 客户机客户机/服务器结构服务器结构 在客户机/服务器数据管理结构(见图 2-1

14、) 中,个人计算机和存储共享数据 库的数据库服务器构成局域网。其数据库的处理分成两个系统:客户机(通常为 一台个人计算机)和数据库服务器,前者运行数据库应用程序,后者运行全部或 部分数据库管理系统。局域网文件服务器可以继续为应用程序提供共享资源。在 客户机上的数据库应用程序(称为前端系统)处理所有的屏幕和用户的输入输出, 在服务器上的后端系统进行数据处理以及管理磁盘访问,而 sql 在此结构中作为 前端系统与后端系统之间通讯的标准语言起着桥梁作用。 数据库服务 dbms 数据库 客户应用程序 sql 请求 注销选项中用另一个帐号登录。每一次 登录都将有三次机会输密码,若三次输入的密码或用户名不

15、正确,系统将自动退 出。 (2).人事管理模块 个人信息:对于任何用户,包括药剂师、医生、管理员、前台服务人员 都能对自己密码进行重新设置。能上传或更新自己的电子相片。 用户管理:只针对管理员,可以查看用户状态,当用户忘记密码时,能 够找回其密码,并且能添加、删除用户、导出所有雇员的基本信息。 文件系统:可将雇员信息导出到 excel 报表文件,可上传下载,用户图片。 (3).门诊模块 用户登入模块 人事管理模块门诊模块药库管理模块 个人信息 用户管理 病人挂号 病区管理 病人诊断 病史查询 文件系统 药品库存 药品划价 ado.net sql server2005 数据库 - 12 - 病人

16、挂号:由前台服务人员注册患者的信息(姓名、住址等),填入患者主 治医生 id 号,其中要处理两张表的信息,病人表(patient)和医疗记录表 (treatment)。 病区管理:将患者按队列排在其主治医生的队伍里,由医生登录的医生 帐号逐一对患者进行治疗,转入病人诊断模块。 病人诊断:由医生开处方,在电子病历中书写病人的症状,疾病史等信 息,生成一份处方表,计算处方费用。 病史查询:由医生帐号登录系统,可查看当前用户做过的诊疗历史,由 日历控件可查看相关医疗记录。 图图 3-2 门诊模块流程图门诊模块流程图(由由 visio 2003 绘出绘出) (4).药库管理 药品库存:查询药品详情,药

17、品的出/入库管理,凭划价收据可以取药。 药品划价:可打印收据、查看处方;一旦确认付费,将付费的标志置为 true。 3.3 性能需求性能需求 (1).及时性:及时更新患者信息。 (2).可扩充性:本项目已考虑到了系统以后扩充的可能。比如界面的设计上 采用树状目录,方便功能的增删。 - 13 - (3).一致性:本项目中的有关信息在录入后维护,在系统中数据保持一致性。 (4).集成性:本项目的几个子系统可以方便地集成在一起,也为将来新子系 统的加入提供了合理的外部接口。 (5).可追踪性:医疗记录 3.4 本章小结本章小结 本章主要介绍了项目规划中各个功能模块的作用。通过系统设计图来更好的 体现

18、这个框架的结构,使得软件的体系更明确,使得编程过程有的放矢,编程工 作更好的有序开展。 - 14 - 第第 4 章章 数据库设计数据库设计 4.1 概念结构设计概念结构设计 概念结构设计通常有四种方法:自顶向下,自底向上,逐步扩张,混合策略。 其中最常用的策略是自底向上方法。即自顶向下的进行需求分析,然后再自底向 上的设计概念结构。但无论采用哪种设计方法,一般都以 e-r 模型为工具来描述 概念结构。以下是 e-r 图: 1 1 1 n 1 1 n n 1 1 1 1 1 n 1 1 n 图图 4-14-1 e-re-r 图图 图 4.1 的 e-r 图由于篇幅所限,省略了实体的属性,这些将在

19、物理模型设 计图中的各表字段中体现。概念模型的设计基本上是遵循以下原则得来的: (1)系统用户只能是医院的雇员。 (2)医生作为雇员的一个子实体,既有共性,又有自己的属性。 (3)几次诊疗行为可以对应一个病人和医生。 (4)假设一次诊疗只产生一个处方,一个处方则对应多个明细。 (5)一种药品对应几个药品入库操作。 医生 患者 诊疗处方 药品 明细 登录用户雇员 药品入库 - 15 - 4.2 逻辑结构设计逻辑结构设计 对关系模式进行必要的分解合并和优化,形成以下的逻辑结构。下面是就是 本系统的数据库表关系图(e-r 图中的实体在图中以表的形式存在): 图图 4-2 sql 数据库物理模型数据库

20、物理模型(由由 powerdesigner 建模给出建模给出) 以下是各表的详细设计(pk 全称 primary key,意为主键;fk 全称 foreign key,意为外键,如 fk patient(opid)表示表中的该字段是一个参考表 patient 中 opid 字段的外键;not null 意为该字段非空;null 意为该字段可为空): - 16 - 表表 4-1 员工信息表员工信息表(employeeemployee) 字段名数据类型长度属性描述 employeeidintpk雇员 id 号 jobnvarchar20not null岗位 salarymoneynot null薪

21、水 bonusmoneynull奖金 positionnvarchar50not null职位 namenvarchar20not null姓名 gendernvarchar1not null性别(男,女) birthdatedatetimenull生日 photoimagenull照片 表表 4-24-2 患者信息表患者信息表(patient(patient) 列名数据类型长度属性描述 opidintpk挂号号码 namenvarchar20not null病人姓名 addressnvarchar50not null病人地址 gendernvarchar1not null性别 erethis

22、mnvarchar200null过敏史 familyrecordnvarchar200null家族病史 medhisnvarchar200null医疗记录 istreatedbitnot null标记患者是否已处理 - 17 - 表表 4-34-3 医生信息表医生信息表(doctor)(doctor) 列名数据类型长度属性描述 docidintpk医生 id 号 employeeidintfk employee (employee id) 雇员 id 号 specialitynvarchar50not null医生特长 表表 4-44-4 诊疗记录表诊疗记录表(treatment)(treat

23、ment) 列名数据类型长度属性描述 ipidintpk诊疗 id 号 opidintfk patient (opid) 挂号 id docidmoneyfk doctor (docid) 医生 id 号 digtimedatetimenot null诊疗日期 descriptionnvarchar200null病人症状 totalmoneynot null诊疗总费用 ispaidbitnot null标记该次诊疗是否 已付费 - 18 - 表表 4-54-5 处方明细表处方明细表(list)(list) 列名数据类型长度属性描述 lineidintpk明细号 amountintnot nul

24、l数量 drugidintfkdrug (drugid) 药品号 linetotalmoneynot null行总数小计 表表 4-64-6 药品信息表药品信息表(drug)(drug) 列名数据类型长度属性描述 drugidintpk药品号 drugnamenvarchar50not null药名 unitpriceintnot null单价 unitnamenvarchar10not null单位名 totalamountintnot null药品存量 表表 4-74-7 药品入库表药品入库表(drugstorage)(drugstorage) 列名数据类型长度属性描述 storageid

25、intpk入库 id 号 drugidintfk drug (drugid) 药品号(外键) costmoneynot null药品成本 storagetimedatetimenot null入库时间 medsourcenvarchar20not null药品来源 inamountintnot null此次入库的该 药品数量 - 19 - 4.3 视图及触发器设计视图及触发器设计 4.3.1 视图视图 视图是一个虚拟表,通过它能访问一个或多个表的数据。视图可以限制用户 对相关数据库字段的访问;视图没有自己的数据,任何更改数据的企图都将无效, 这样就保护了数据。而且视图的使用极大简化了 sql

26、语句的书写。以下是设计的 视图: doctordetails:连接医生表和员工表,表现医生详情。 employeedetails:连接员工和用户表,将员工和系统用户对应。 scriptdetails:连接诊断表和处方明细表。 4.3.2 触发器触发器 在关系数据库中,表中的数据是与其他表的数据相关的。因此,当在一个表 中操作数据时,需要检验和确认它对相关表中数据的影响,定义一个触发器将有 利于维护数据的完整性。在数据库表药品库存表(drugstorage)上定义了一个插入 触发器 drugtotalamount,实现得 sql 语句如下: -该触发器触发条件是 drugstorage 表插入数

27、据时,即药品入库时,更新药品总量 create trigger dbo.drugtotalamount on dbo.drugstorage after insert as begin update drug set drug.totalamount=drug.totalamount+inserted.inamount from inserted where inserted.drugid=drug.drugid; end; 4.4 本章小结本章小结 本章对系统开发之前需要做的系统分析与设计工作,进行了简要的阐述。包 括需求分析,系统分析及可行性分析等,如何建立了数据库,以及设计和创建各 个信

28、息表,其中包括数据库的安全性和完整性。通过需求分析,确定用户需求, 根据用户需求,从而设计数据库表,明确各个表的字段,主键以及各表之间的联 系。由于在开发本系统之前进行了需求分析,因此,使得后来开发系统更容易。 - 20 - 第第 5 章章 系统设计与实现系统设计与实现 5.1 系统总体框架系统总体框架 系统框架图如下: 图图 5-1 系统框架图系统框架图 医院信息系统 人事管理 临床诊断 财务管理 药房管理 员工管理 用户信息 医生信息 患者挂号 查看病史 病人等待区诊断页面 修改密码 上传头像 查看病史 上传头像 查看处方 处方划价 药品出入库 - 21 - 5.2 登录界面登录界面 登录

29、界面如图: 图图 5-25-2 登录界面登录界面 主要控件介绍:主要控件介绍: 表表 5-15-1 登录界面主要控件登录界面主要控件 名称功能 textboxid 输入用户 id 号 textboxpassword 输入用户密码 buttonlogin 点击登录按钮,连接数据库确认用户有效性和权限 buttondoc 跳转到 formcheckdoc,使用户在登录前看到医生详情 buttonexit 退出登录按钮 用户输入用户名和密码,系统查询数据库中的信息对密码进行验证。如密码 不正确将不能进入系统;如密码正确,系统会自动根据该用户所具有的权限进入 不同的界面。然后系统会根据当前用户的角色分

30、配权限,即所对应的控件。所有 用户一旦登入,当前用户信息将暂时保存在静态类 program 的成员类 currentuser 里面。用户只有三次尝试机会。相关核心代码如下(c#): private void button1_click(object sender, eventargs e) /该代码段是点击控件buttonlogin所引发的事件click的处理函数 if (textbox1.text = | textbox2.text = ) /先验证密码或用户名是否为空 - 22 - messagebox.show(密码或用户名不为空!); else /实例化连接,打开数据库连接 sqlco

31、nnection conn = new sqlconnection(connstr); conn.open(); /执行sql语句 sqlcommand cmd = new sqlcommand(select stateid from userdetails where userid=userid and password=password,conn); cmd.parameters.clear(); sqlparameter myparament1= new sqlparameter(userid,textbox1.text); cmd.parameters.add(myparament1)

32、; sqlparameter myparament2 = new sqlparameter(password, textbox2.text); cmd.parameters.add(myparament2); sqldatareader dr= cmd.executereader(); if(dr.read()=true) /将当前用户信息存入静态类program的成员类currentuser里 program.currentuser.isvalidated = true; program.currentuser.setusername(textbox1.text); program.curr

33、entuser.setstate(int)dr0); /成功验证关闭数据库连接 this.close(); conn.close(); else if (timeoutcount != 0) /用户三次尝试登录,timeoutcount是该类的成员字段,用于 记/录用户登录次数。 program.currentuser.isvalidated = false; timeoutcount-; - 23 - messagebox.show(用户名或密码有错,请确认后重输!你还 有 + timeoutcount + 次机会!); textbox1.text = ; textbox2.text = ;

34、 else if (conn.state = connectionstate.open) /验证失败关闭数据库连接 conn.close(); messagebox.show(非法操作,窗口即将关闭!); this.close(); 5.3 主界面主界面 图图 5-3 主界面主界面 - 24 - 主界面的外观由不同的角色登录产生变化,以上是以医生角色登录的主界面。 主要控件介绍:主要控件介绍: 表表 5-25-2 主界面主要控件主界面主要控件 名称功能 treeview1主界面左角提供可供用户操作的接口 系统 toolstripmenuitem输入用户密码 转入 toolstripmenuit

35、em点击登录按钮,连接数据库确认用户有效性和权 限 panelcontainer提供各个 panel 控件的容器的控件 登录系统进入主界面(formindex),由登陆界面得到的用户基本信息更新标 题栏字段,并提供当前时间;然后根据当前用户的角色字段 state 生成符合权限 的控件,比如图 5-3 中体现的是一个医生身份的用户,他有权查看修改个人信息, 在临床诊断模块他有权进入病区,指定病人进行诊断,开处方,查看他以前的诊 疗记录等,这些都在 treeview 控件中体现,超出其权限的树节点将被屏蔽。 此 外,在载入窗口时,若用户是医生,将设置静态类 program 中 currentuse

36、r 字段 id 为当前用户的医生号,作为全局信息,便于数据库操作。 对于所有用户的通用控件系统 toolstripmenuitem 能退出系统,控件转入 toolstripmenuitem 则有注销和查看医生的功能。 5.3.1 注销用户注销用户 登录主界面之后,用户可以通过菜单栏的用户注销,用另一个帐号登录, 再次执行 formindex_load(object sender,eventargs e) ,存储在 currentuser 类中 的用户权限及信息将再次初始化。 5.3.2 查看医生查看医生 登录主界面之后,用户可以通过菜单栏的系统查看医生,打开查看医生 窗口以方便患者问询。 -

37、25 - 5.4 临床诊断临床诊断 5.4.1 挂号挂号 该模块(如图 5-4)只针对前台服务人员,用于注册病人。 主要控件介绍主要控件介绍: 表表 5-35-3 挂号界面主要控件挂号界面主要控件 名称功能 textboxname输入病人姓名 textboxaddress输入病人地址 textboxdocid输入病人对应医生的 id(检查外键约束) comboboxgender输入病人性别(不可编辑) buttonreg点击后往数据库插入病人记录,自动生成 opid buttoncheckdoc跳转到 formcheckdoc 图图 5-4 挂号挂号 5.4.2 病人等待室病人等待室 该模块只

38、针对医生用户,是病人在接受治疗前的操作窗口。设计界面如图 5-4 所 示。 - 26 - 图图 5-5 病人等待室病人等待室 主要控件如下表所示: 表表 5-45-4 挂号界面主要控件挂号界面主要控件 名称功能 buttonrefresh刷新当前数据库的表 buttondelete物理删除所有病人 buttondig当选中 datagridviewer 单元格时,按钮触发,选中单 元格所在的病人跳转到诊疗界面 formdignosis 如图,同 时在公告栏将通知该病人及时就医 datagridviewer1绑定当前的病人列表 5.4.3 诊断界面诊断界面 在病区选择一个病人进入诊断界面,在此窗

39、口中,医生可以更新患者病史, 家族病史和症状,根据症状开处方,选中药品,输入数量,系统将自动计算总费 用,医生所选的将出现在右下角的处方一览栏中。处方将存储在类 druglist 中, 这是一个包括类型实例化 list的类,druglist 类还包括存储药品总价的 total 字段,在确认结束诊断之后这些数据将存入数据库。另外,医生也可以根据 药品号码或药品名来筛选药品。 - 27 - 图图 5-65-6 诊断界面诊断界面 主要控件如下表所示: 表表 5-55-5 诊断界面主要控件诊断界面主要控件 名称功能 tabcontrol1是一个分页面容器,通过它更新患者信息 buttonsubmit提

40、交患者信息,更新数据库 datagridview1绑定数据源,将药品列表显示在该控件中 textbox1输入筛选数据的关键字 textbox2输入药品的数量 buttonin将选中的药品加入处方并显示,暂存在 druglist 中 buttonout将 listbox1 中选中的条目删除 listbox1显示当前的处方 label5输出处方的总花费 buttonenter若医生开了药提交处方至数据库,结束诊断,会有提示 确定是否退出 combobox1选择筛选关键字 5.4.4 查看医疗信息查看医疗信息 该模块只针对医生用户,可供医生查看以前的诊疗记录。医生可以由日期来 筛选诊疗记录,记录包括

41、:患者姓名、费用、诊断时间。界面设计效果如下图所 - 28 - 示。 图图 5-7 查看医疗信息查看医疗信息 主要控件描述如下表: 表表 5-65-6 医疗信息模块主要控件医疗信息模块主要控件 名称功能 monthcalendar1电子日历控件,根据它可以回溯以前的诊疗记录 button1点击该按钮跳转到查看处方窗口 datagridview1绑定数据源,对应数据库的 treatment 表,包括诊断号、 患者姓名、费用和时间。 选中一次诊断,若点击“查看此次诊断” ,则弹出一个窗口,提示该次诊断的处 方信息,如图: 图图 5-85-8 查看处方窗口查看处方窗口 - 29 - 5.5 人事系统

42、人事系统 5.5.1 查看修改员工查看修改员工 这个界面只针对管理员,能查看所有员工,导出员工表到 excel 报表文件, 注册新雇员,有权注册新用户。窗口载入时 datagridview 连接数据源 empolyee 表创建的视图中,这样保护的非连接类 datatable 中的数据。要想注册新的登录 帐号,需要先检查外键约束 ,即用户应该是医院的员工。实现数据导出的是一 个自定义的类 mytable,继承自 datatable,通过自定义方法 exporttoexcel(string src)来导出 excel,先用控件 savefiledialog 得到用户要保存的文件路径,再打开 文件流

43、将数据写入每个单元格。界面设计如图 5-6 所示: 图图 5-95-9 查看修改员工窗口查看修改员工窗口 主要控件如下表所示: - 30 - 表表 5-75-7 查看修改员工模块主要控件查看修改员工模块主要控件 名称功能 buttonadd点击按钮增加一条员工记录 buttonupdate选中一条记录,修改相关字段后点击提交 buttonexport点击输出员工信息到报表文件 datagridview1绑定数据源于员工表 buttonsubmit提交 datagrifview 中所有的改动 savefiledialog用以得到用户文件存储路径 以下给出方法方法 exporttoexcel(st

44、ring src)代码: public void exporttoexcel(string path) /该方法是自定义类mytable的成员,将表导入到绝对路径为path的报表文件 try /打开文件流 filestream fs = new filestream(path, filemode.create); streamwriter sw = new streamwriter(fs, encoding.unicode); for (int i = 0; i columns.count; i+) sw.write(columnsi.columnname + t); sw.writeline

45、(); for (int j = 0; j rows.count; j+) for (int i = 0; i columns.count; i+) sw.write(rowsji.tostring() + t); sw.writeline(); /关闭文件流 sw.close(); fs.close(); /捕捉io异常 catch (ioexception ex) system.windows.forms.messagebox.show(ex.message); - 31 - 5.5.2 查看修改个人信息查看修改个人信息 这个界面针对所有系统用户,由于只能由医院员工注册用户,所以界面显示

46、的信息都是员工信息(如图 5-7);除了查看个人信息,用户还可以修改密码和上传 自己的头像。修改密码子模块再按下“修改密码”按钮之后显示,以防止误操作, 需要用户输入原来的密码和新密码,新密码需要验证确认输入,在修改之前,系 统检查旧密码的有效性。在以上验证成功之后跳出修改密码按钮(如图 5-8),在修 改成功后将有提示。另外该模块提供上传下载图片功能,载入窗体时系统将自动 从数据库中取出 image 类型的二进制图像文件,打开 memorystream 写入内存, 在显示在图片框中;若为空,用户图片显示为空图片。上传图片时将文件流中的 数据转换为 byte 类型的二进制数组中,再往数据库中更

47、新。 图图 5-105-10 查看修改个人信息查看修改个人信息 下图显示的是点击“修改密码“后激活的子模块: 图图 5-115-11 修改密码验证前后界面修改密码验证前后界面 主要控件如下表所示: - 32 - 表表 5-85-8 查看修改个人信息模块主要控件查看修改个人信息模块主要控件 名称功能 buttonupload点击按钮上传图片 buttonpwd激活隐藏的修改密码子模块 buttonalter验证结束后弹出的按钮,点击更新当前用户密码 openfiledialog用以得到用户文件存储路径 以下给出下载图像文件的方法 downloadpicture(int id)的代码: publi

48、c static image downloadpicture(int id) image image = null; /以下查询根据员工号得到头像 sqlconnection conn = new sqlconnection(currentuser.getconnectionstring(); sqlcommand cmd = conn.createcommand(); cmd.commandtext = select photo from employee +where employeeid=employeeid; cmd.parameters.add(employeeid, sqldbty

49、pe.int); cmd.parametersemployeeid.value = id; try conn.open(); if (cmd.executescalar().tostring()=system.byte) /返回结果集的第一行第一列即图像 byte buffer = (byte)cmd.executescalar(); /实例化一个内存流 memorystream ms = new memorystream(buffer); /设置起始位置 ms.position = 0; /从内存流中得到图像 image = image.fromstream(ms); /关闭流 - 33 -

50、 ms.close(); else messagebox.show(当前用户还未上传照片! ); return null; catch (exception ex) /捕捉异常,提示信息 messagebox.show(ex.message); finally /若连接还未关闭,则关闭数据库连接 if (conn.state = connectionstate.open) conn.close(); return image; 5.6 药药房管理房管理 .1 药品出入库药品出入库 该模块只针对于药剂师这个角色,提供了基本的药品出入库操作,药品出库 的情况只限于患者处方上药品的分

51、发,系统根据输入的诊断号得到病人的处方, 然后逐项分发;入库操作则是一个插入数据库 drugstorage 的操作,同时自定义 的触发器(请查看数据库设计相关章节)将自动更新 drug 表的 total 字段,就是更 新药品表的药品库存量。 主要控件介绍: - 34 - 表表 5-95-9 药品出入库主要控件药品出入库主要控件 名称功能 buttoninsert点击插入一条药品入库记录 textboxipid根据该控件得到病人的处方 buttonvalidate验证入库的药品是否在药品表中存在,若不存在,提 示用户增加新药品 5.7 处方划价处方划价 该模块只针对于前台服务人员,一旦确认付款,

52、用户将更新患者的诊疗记录, 将费用已支付的标记为置为 true,这样,在患者取药时,药剂师可以根据记录在 系统中的该标记为决定是否分发药品。然后打印处方作为书面凭据。 主要控件介绍: 表表 5-105-10 处方划价主要控件处方划价主要控件 名称功能 buttonprint在 buttonvalidate 按下之后激活,打印处方收据,然后 该控件失效 textboxipid根据该控件得到病人的处方和处方费用 buttonvalidate确认患者已付费,按下会有提示 5.8 本章小结本章小结 本章主要从设计和实现两方面对各个主要典型模块进行了说明和解释,对于 各个模块的使用以及其功能进行了全面的介绍,并对核心代码和核心控件进行了 详尽的解释 。 - 35 - 第第 6 章章 结束语结束语 在本次毕业设计的过程中,通过指导老师的耐心指导和自身的学习及努力, 使我对软件编程有进一步的认识。在整个设计过程中我也深深地体会到要把所学 的知识理论变成可实际应用的系统时所面临的种种困难,认识到提高运用知识、 解决实际问题的能力是十分重要的。 本系统主要实现了门诊管理、病区管理、药房管理、药库管理、基本的人事 管理、处方划价。有待增加的更多的功能,例如:医疗器械管理,住院管理,远 程医疗、医疗保险系统、一系列

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论