




已阅读5页,还剩17页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
医院管理系统设计说明书1. 系统设计1.1系统目标设计通过一个医院管理系统,使医院的管理工作系统化、规范化、自动化,从而达到提高医院管理效率的目的。1.2开发设计思想 本系统开发设计思想: 尽量采用公司现有软硬件环境,及先进的管理系统开发方案,从而达到充分利用公司现有资源,提高系统开发水平和应用效果的目的; 系统应符合医院员工管理的规定,满足医院日常管理的需要,并达到操作过程中的直观、方便、实用、安全等要求; 系统采用模块化程序设计方法,这样既便于系统功能的各种组合,又便于未参与开发的技术维护人员补充、维护。 系统应具备数据维护功能,及时根据用户需求进行数据的添加、删除、修改、备份等操作。1.3开发和运行环境选择开发工具:Microsoft Visual Studio 2008;运行环境:WindowXP或Windows20001.4系统功能分析系统功能分析事在系统开发的总体任务的基础上完成的。本例子中的医院管理系统需要完成功能主要有: 员工各种信息的输入,包括员工基本细细、职称、岗位。 员工各种的查询、修改,包括员工基本信息、职称、岗位、工资等。 员工的人事调动管理。 病人信息的管理。 病院病床的管理。 药剂资源管理。 仪器资源管理。 系统用户管理、权限管理。1.5系统功能模块设计在系统功能分析的基础上,考虑Microsoft Visual Studio 2008 程序编制的特点,得到如图1所示的系统功能模块图。管理系统图1 系统功能模块图1. 2. 数据库设计在数据库应用系统的开发过程中,数据库的结构设计是一个非常重要的问题。数据库结构设计的好坏将直接对应用系统的效率以及实现的效果产生影响,好的数据库结构会减小数据库的存储量,数据的完整性和一致性比较高,系统具有较快的相应速度,简化基于此数据库的应用程序的实现等。在数据库系统开始设计的时候应该尽量考虑全面,尤其应该仔细考虑用户的各种需求,避免浪费不要的人力和物力。2.1数据库需求分析 数据库需求分析是数据结构设计的第一阶段,是非常重要的一个阶段。在这个阶段主要是收集基本数据、数据结构以及确定数据处理的流程,组成一份详尽的数据字典,为以后进一步设计打下基础。 在仔细调查医院管理过程的基础上,我们得到本系统所处理的数据关系如图2所示。病床病人资料医生图2 数据关系图 针对本实例,通过对医院管理的内容和数据关系分析,我们设计的数据项和数据结构如下: 员工基本状况包括的数据项有员工号、员工姓名、性别、所在部门、身份证号、生日、籍贯、国籍、民族、婚姻状况、健康状况、参加工作时间、员工状态、家庭住址、联系电话等。 员工工资状况包括的数据项有员工号、工资项别、工资金额等。 医院工作岗位信息包括的数据项有工作岗位代号、工作岗位名称等。 医院部门信息包括的数据项有部门代号、部门名称、部门负责人等。 病人信息包括的数据项有病人姓名、病人性别、入院时间、病人所属科室、病人状况、病人主治医生、房间号、病床号等。 药剂资源管理信息包括的数据项有药剂代号、药剂名称、药剂价格、药剂库存数量、备注等。 医疗仪器管理包括的数据项有仪器代号、仪器名称、仪器价格、仪器数量、备注等。有了上面的数据结构、数据项和数据关系,我们就进行下面的数据库设计。2.2数据库概念结构设计 这一设计阶段是在需求分析的基础上,设计出能够满足用户需求的各种实体,以及确定他们之间的关系,为后面的逻辑结构设计打下基础。本实例根据上面的设计规划出的实体有员工实体、部门实体、岗位实体、病人实体、药剂实体、仪器实体。实体和实体之间的关系E-R图如图3所示。2.3数据库逻辑结构设计 我们需要将上面的数据库概念结构转化为Microsoft Visual Studio 2008数据库系统所支持的实际数据模型,也就是数据库的逻辑结构。 在上面的实体以及实体之间关系的基础上,我们就可以形成数据库中的表格以及各个表格之间的关系。 医院管理系统数据库中各个表格的设计结果如表。每个表格对应在数据库中的一个表。 病床医生工资部门病人岗位对应对应对应对应对应111n11111n图3 实体之间关系E-R图表1 PERSONNEL员工基本状况表列 名数据类型可否为空说明EMP_NONUMBERIC(6)NOT NULL员工号(主键)EMP_NAMECHARACTER(10)NULL员工姓名EMP_DEPT_IDNUMBERIC(3)NULL所在部门号EMP_DUTYCHARACTER(10)NULL职务EMP_XLCHARACTER(10)NULL学历EMP_GENDERCHARACTER(2)NULL性别EMP_BIRTHDAYDATENULL生日EMP_HOMETOWNCHARACTER(8)NULL籍贯EMP_COUNTRYCHARACTER(10)NULL国籍EMP_NATIONCHARACTER(10)NULL民族EMP_IDNUMBERIC(6)NULL身份证号EMP_MARRIAGECHARACTER(2)NULL婚姻状况EMP_HEALTHCHARACTER(10)NULL健康状况EMP_STARTWORKDATENULL参加工作时间EMP_STATECHARACTER(10)NULL员工状态EMP_HOMEADDRESSCHARACTER(10)NULL家庭住址EMP_TELENONUMBERIC(10)NULL联系电话EMP_EMAILCHARACTER(20)NULL联系E-mail地址EMP_JOB_IDNUMBERIC(3)NULL工作岗位代号表2 为工作岗位情况表。表2 JOB工作岗位情况表列 名数据类型可否为空说 明JOB_IDNUMBERIC(3)NTO NULL工作岗位代号(主键)JOB_NAMECHARACTER(10)NULL工作岗位名称表3 为部门信息表表3 DEPT 部门信息表列 名数据类型可否为空说 明DEPT_IDNUMBERIC(3)NOT NULL部门代号(主键)DEPT_NAMECHARACTER(10)NULL部门名称DEPT_MANAGERNUMBERIC(6)NULL部门主任代号DEPT_VICEMANAGENUMBERIC(6)NULL部门副主任代号表4 为病人信息表。表4 病人信息表PATIENT列 名数据类型可否为空说明PATIENT_NAMECHARACTER(10)NULL病人姓名(主键)PATIENT_GENDERCHARACTER(2)NOT NULL病人性别PATIENT_DATE_STARTCHARACTER(10)NULL入院时间PATIENT_DEPTCHARACTER(10)NOT NULL病人所属科室PATIENT_STATECHARACTER(10)NULL病人状况PATIENT_DOCCHARACTER(10)NOT NULL病人主治医生PATIENT_ROOMCHARACTER(3)NOT NULL病人房间号PATIENT_BEDCHARACTER(2)NOT NULL病人病床号表5 为药剂信息表。表5 药剂信息表POTION列 名数据类型可否为空说 明POTION_IDNUMBERIC(3)NOT NULL药剂代号(主键)POTION_NAMECHARACTER(10)NULL药剂名称POTION_PRICENUMBERIC(5,2)NULL药剂价格POTION_QUANTITYNUMBERIC(3)NULL药剂库存数量POTION_REMCHARACTER(40)NULL备注表6 为医疗仪器信息表。表6 医疗仪器信息表 APPARATUS列 名数据类型可否为空说 明APPARATUS_IDNUMBERIC(3)NOT NULL仪器代号(主键)APPARATUS _NAMECHARACTER(10)NULL仪器名称APPARATUS _PRICENUMBERIC(5,2)NULL仪器价格APPARATUS _QUANTITYNUMBERIC(3)NULL仪器数量APPARATUS _REMCHARACTER(40)NULL备注一个企业可以有多个用户管理该系统,因此就需要为不同的用户设置不同的口令。表7 为管理TMS系统的用户口令表。表7 管理TMS系统的用户口令表TMS列 名数据类型可否为空说 明TMS_USERCHARACTER(20)NOT NULL用户名(主键)TMS_PSWDCHARACTER(10)NOT NULL口令各个功能模块的创建 登陆界面 登陆代码:namespace Hospital_MIS public partial class Frm_login : Form databaseoperate myoperate = new databaseoperate(); public Frm_login() InitializeComponent(); private void btn_exit_Click(object sender, EventArgs e) Application.Exit(); private void Frm_login_FormClosed(object sender, FormClosedEventArgs e) Application.Exit(); private void btn_ok_Click(object sender, EventArgs e) /首先查询数据库,获取与指定用户名和密码匹配的信息 SqlDataReader sqlread = myoperate.getread (select name,password,discipline from employee + where name= + txt_name.Text.Trim() + and password= + txt_pwd.Text.Trim() + ); try sqlread.Read();/读取SqlDataReader if (sqlread.HasRows)/如果存在匹配行 /在operateinfo中记录用户名信息 operateinfo.operatename = txt_name.Text.Trim(); /显示主窗体 Frm_Main newfrm = new Frm_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. 系统主界面设计 系统主界面病人挂号界面病人挂号代码:namespace Hospital_MIS public partial class Frm_appointment : Form databaseoperate myoperate = new databaseoperate(); public Frm_appointment() InitializeComponent(); private void button3_Click(object sender, EventArgs e) /获取病人的编号 operateinfo.patientno = txt_patientno.Text.Trim(); /实例化并显示打印预览窗口 Frm_printreg frm = new Frm_printreg(); frm.Show (); private void Frm_appointment_Load(object sender, EventArgs e) /进行病人名称的自动完成操作 this.cmb_name.AutoCompleteMode = AutoCompleteMode.SuggestAppend; this.cmb_name.AutoCompleteSource = AutoCompleteSource.ListItems; /添加要进行操作的类型 cmb_optype.Items.Add(预约); cmb_optype.Items.Add(预约挂号); cmb_optype.Items.Add(现场挂号); cmb_optype.SelectedIndex = 0; /将病人信息的文本框控件设置为不可用 SetControlFalse(); /加载病人姓名 this.getname(); /添加医师名称以及预约科室 DataSet getdocnameds = myoperate.getds (select ID,name,discipline from employee, employee); for (int i = 0; i getdocnameds.Tables0.Rows.Count; i+) /将预约科室添加到ComboBox控件中 this.cmb_docdiscipline.Items.Add(getdocnameds.Tables0.Rowsi2); /对医师信息进行数据绑定 cmb_docname.DataSource = getdocnameds.Tables0; cmb_docname.DisplayMember = name; cmb_docname.ValueMember = ID; /添加员工表中所有员工的信息,绑定到预约医生ComboBox控件中 DataSet getappointdocds = myoperate.getds(select ID,name from employee, employee); cmb_appointdoc.DataSource = getappointdocds.Tables0; cmb_appointdoc.DisplayMember = name; cmb_appointdoc.ValueMember = ID; /添加挂号名称到ComboBox控件中 DataSet getregnameds = myoperate.getds(select name from dict_reg, dict_reg); for (int i = 0; i getregnameds.Tables0.Rows.Count; i+) this.cmb_regname.Items.Add(getregnameds.Tables0.Rowsi0); cmb_regname.SelectedIndex = 0; private void SetControlFalse() 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; txt_sidno.Enabled = false; txt_sidtype.Enabled = false; private void cmb_optype_SelectedIndexChanged(object sender, EventArgs e) this.getname(); if (cmb_optype.SelectedItem.ToString() = 预约) cmb_regname.Enabled = false; cmb_regfee.Enabled = false; if (cmb_optype.SelectedItem.ToString() = 预约挂号) cmb_regname.Enabled = true; cmb_regfee.Enabled = true; if (cmb_optype.SelectedItem.ToString() = 现场挂号) cmb_regname.Enabled = true; cmb_regfee.Enabled = true; private void getname() if (cmb_optype.SelectedItem.ToString() = 预约) cmb_name.Items.Clear(); DataSet getnameds = myoperate.getds(select name from patient, patient); for (int i = 0; i getnameds.Tables0.Rows.Count; i+) this.cmb_name.Items.Add(getnameds.Tables0.Rowsi0); if (cmb_optype.SelectedItem.ToString() = 预约挂号) cmb_name.Items.Clear(); DataSet getnameds = myoperate.getds(select patientname from appointment where appointment_done=1, appoint); for (int i = 0; i getnameds.Tables0.Rows.Count; i+) this.cmb_name.Items.Add(getnameds.Tables0.Rowsi0); if (cmb_optype.SelectedItem.ToString() = 现场挂号) cmb_name.Items.Clear(); DataSet getnameds = myoperate.getds(select name from patient, patient); for (int i = 0; i getnameds.Tables0.Rows.Count; i+) this.cmb_name.Items.Add(getnameds.Tables0.Rowsi0); private void cmb_name_SelectedIndexChanged(object sender, EventArgs e) if (cmb_optype.SelectedItem.ToString() = 挂号 ) string tempstr = cmb_name.Text; DataSet chanagenameds = myoperate.getds(select * from patient where name= + tempstr + , patient); txt_sidtype.Text = chanagenameds.Tables0.Rows0sidtype.ToString(); txt_sidno.Text = chanagenameds.Tables0.Rows0sidno.ToString(); txt_sex.Text = chanagenameds.Tables0.Rows0sex.ToString(); txt_patientno.Text = chanagenameds.Tables0.Rows0patientno.ToString(); txt_email.Text = chanagenameds.Tables0.Rows0e_mail.ToString(); txt_cellphone.Text = chanagenameds.Tables0.Rows0cellphone.ToString(); txt_celladdress.Text = chanagenameds.Tables0.Rows0celladdress.ToString(); txt_cardname.Text = chanagenameds.Tables0.Rows0cardtype.ToString(); txt_birthday.Text = chanagenameds.Tables0.Rows0birthday.ToString(); txt_balance.Text = chanagenameds.Tables0.Rows0balance.ToString(); DataSet appinfods=myoperate .getds(Select * from appointment where patientname= + tempstr + and appointment_done=1,appointment); cmb_docname.SelectedItem = appinfods.Tables0.Rows0doctor.ToString(); cmb_docdiscipline.SelectedItem = appinfods.Tables0.Rows0discipline.ToString(); dtp_thisdate.Value = Convert.ToDateTime(appinfods.Tables0.Rows0thisdate); dtp_thistime.Value = Convert.ToDateTime(appinfods.Tables0.Rows0thistime); else string tempstr = cmb_name.Text; DataSet chanagenameds = myoperate.getds(select * from patient where name= + tempstr + , patient); txt_sidtype.Text = chanagenameds.Tables0.Rows0sidtype.ToString(); txt_sidno.Text = chanagenameds.Tables0.Rows0sidno.ToString(); txt_sex.Text = chanagenameds.Tables0.Rows0sex.ToString(); txt_patientno.Text = chanagenameds.Tables0.Rows0patientno.ToString(); txt_email.Text = chanagenameds.Tables0.Rows0e_mail.ToString(); txt_cellphone.Text = chanagenameds.Tables0.Rows0cellphone.ToString(); txt_celladdress.Text = chanagenameds.Tables0.Rows0celladdress.ToString(); txt_cardname.Text = chanagenameds.Tables0.Rows0cardtype.ToString(); txt_birthday.Text = chanagenameds.Tables0.Rows0birthday.ToString(); txt_balance.Text = chanagenameds.Tables0.Rows0balance.ToString(); private void btn_addappointment_Click(object sender, EventArgs e) if (cmb_optype.SelectedItem.ToString() != 预约) /如果操作类型不为预约时,则提示用户 MessageBox.Show(请将操作类型设为预约!); else /如果没有指定病人姓名,也不能进行预约 if (cmb_name.Text = ) MessageBox.Show(请选择预约人的姓名!); else /如果没有指定预约医生,不能进行预约 if (cmb_docname.Text = ) MessageBox.Show(请选择预约医生!); else /同时要指定预约科室 if (cmb_docdiscipline.Text = ) MessageBox.Show(请选择预约科室!); else /如果预约的各个条件都符合,则调用执行插入语句插入到数据库中 myoperate.getcom(insert into appointment(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) + ); MessageBox.Show(添加预约成功!);/提示添加成功 this.gridviewinit();/重新刷新GridView控件 private void btn_addreg_Click(object sender, EventArgs e) if (cmb_optype.SelectedItem.ToString() = 预约) MessageBox.Show(请将操作类型选成挂号!方可进行挂号!); else /this.getname(); if (cmb_name.Text = ) MessageBox.Show(请选择预约人的姓名!); else if (cmb_docname.Text = ) MessageBox.Show(请选择预约医生!); else if (cmb_docdiscipline.Text = ) MessageBox.Show(请选择预约科室!); else if (cmb_regname.Text = ) MessageBox.Show(请选择挂号名称!); else if (cmb_optype.SelectedItem.ToString() = 预约挂号) myoperate.getcom(Update appointment set reg_name= + cmb_regname.SelectedItem.ToString() + ,reg_fee= + cmb_regfee.Text + ,reg_done=1 where patientno= + txt_patientno.Text.Trim() + ); MessageBox.Show(添加挂号成功!); this.gridviewinit(); else myoperate.getcom(insert into appointment(patientname,patientno,doctor,discipline,thisdate,thistime,appointment_done,reg_name,reg_fee,reg_done) + values( + cmb_name.Text + , + txt_patientno.Text.Trim() + , + cmb_docname.SelectedValue.ToString() + , + cmb_docdiscipline.SelectedItem.ToString() + , + dtp_thisdate.Value.ToShortDateString() + , + dtp_thistime.Value.ToShortTimeString() + ,1,+cmb_regname .SelectedItem .ToString ()+
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 胆囊切除术后夹管护理
- 《诫子书》课件公开课
- 硬膜外钻孔引流术护理
- 联通小CEO个人年终总结
- 亲子共读讲座课件
- 公司级安全生产培训课件
- 教师教育课程标准解读
- 《蒙娜丽莎》课件
- 麻醉科等级评审工作汇报
- 生产质量主管年终总结
- (一检)泉州市2026届高三高中毕业班质量监测(一)数学试卷(含标准答案)
- 2025年福建省榕圣建设发展有限公司项目招聘12人笔试参考题库附带答案详解
- 矿山设备检修安全培训课件
- 2025-2030数据安全合规审计服务市场爆发及等保测评机构并购价值评估
- 2025年中国华电集团招聘面试题解析及备考建议手册
- 2025年机器人面试题及答案解析
- 高三第一次月考总结主题班会课件
- 参考活动2 善待身边的人教学设计-2025-2026学年初中综合实践活动苏少版七年级下册-苏少版
- 2025年度江苏省档案管理及资料员基础试题库和答案
- 口腔咨询顾问入门知识培训课件
- 新疆课课件教学课件
评论
0/150
提交评论