JAVA医院管理系统课程设计Word版_第1页
JAVA医院管理系统课程设计Word版_第2页
JAVA医院管理系统课程设计Word版_第3页
JAVA医院管理系统课程设计Word版_第4页
JAVA医院管理系统课程设计Word版_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

1、传播优秀word版文档 ,希望对您有帮助,可双击去除!医院管理系统1.课程设计的目的面向对象的开发方法是当今世界最流行的开发方法,它不仅具有更贴近自然的语义,而且有利于软件的维护和继承。现代化的医院也应该有现代化的管理系统。在科技日益发达的今天,人们的身体健康也在不断受到重视。因此,医院进行现代化管理就变得尤为重要,需要建立一个使用的医院管理系统。为了进一步巩固java相关的知识,深刻把握java语言的重要概念及其面向对象的特性,锻炼学生熟练的应用面向对象的思想和设计方法解决实际问题的能力,开设了java程序设计课程设计。 通过此次课程设计,使学生通过该教学环节与手段,把所学课程及相关知识加以

2、融会贯通,全面掌握java语言的编程思想及面向对象程序设计的方法,为今后的学习和工作打下基础。2.设计方案论证2.1开发环境java编程工具jdk 1.5.0 ,操作系统windows 7.2.2系统功能描述系统需要完成功能主要有:(1)医生各种信息的输入,包括员工基本细细、职称、岗位。(2)医生各种的查询、修改,包括员工基本信息、职称、岗位、工资等。(3)医生的人事调动管理。(4)病人信息、病床、药剂、仪器的管理。(5)系统用户管理、权限管理。2.3系统功能模块设计在系统功能分析的基础上,考虑microsoft visual studio 2008 程序编制的特点,得到如图1所示的系统功能模

3、块图。 图1 系统功能模块图2.4数据库需求分析在数据库应用系统的开发过程中,数据库的结构设计是一个非常重要的问题。数据库结构设计的好坏将直接对应用系统的效率以及实现的效果产生影响,好的数据库结构会减小数据库的存储量,数据的完整性和一致性比较高,系统具有较快的相应速度,简化基于此数据库的应用程序的实现等。在数据库系统开始设计的时候应该尽量考虑全面,尤其应该仔细考虑用户的各种需求,避免浪费不要的人力和物力。 数据库需求分析是数据结构设计的第一阶段,是非常重要的一个阶段。在这个阶段主要是收集基本数据、数据结构以及确定数据处理的流程,组成一份详尽的数据字典,为以后进一步设计打下基础。 在仔细调查医院

4、管理过程的基础上,我们得到本系统所处理的数据关系如图2所示。图2 数据关系图2.5数据库设计通过对医院管理的内容和数据关系分析,我们设计的数据项和数据结构如下: 员工基本状况包括的数据项有员工号、员工姓名、性别、所在部门、身份证号、生日、籍贯、国籍、民族、婚姻状况、健康状况、参加工作时间、员工状态、家庭住址、联系电话等。 员工工资状况包括的数据项有员工号、工资项别、工资金额等。 医院工作岗位信息包括的数据项有工作岗位代号、工作岗位名称等。 医院部门信息包括的数据项有部门代号、部门名称、部门负责人等。  病人信息包括的数据项有病人姓名、病人性别、入院时间、病人所属科室、病人状况、病人主

5、治医生、房间号、病床号等。  药剂资源管理信息包括的数据项有药剂代号、药剂名称、药剂价格、药剂库存数量、备注等。  医疗仪器管理包括的数据项有仪器代号、仪器名称、仪器价格、仪器数量、备注等。 这一设计阶段是在需求分析的基础上,设计出能够满足用户需求的各种实体,以及确定他们之间的关系,为后面的逻辑结构设计打下基础。本实例根据上面的设计规划出的实体有员工实体、部门实体、岗位实体、病人实体、药剂实体、仪器实体。实体和实体之间的关系e-r图如图3所示。图3 实体之间关系e-r图我们需要将上面的数据库概念结构转化为microsoft visual studio 2008数据库系统所支

6、持的实际数据模型,也就是数据库的逻辑结构。 在上面的实体以及实体之间关系的基础上,我们就可以形成数据库中的表格以及各个表格之间的关系。 医院管理系统数据库中各个表格的设计结果如表。每个表格对应在数据库中的一个表。2 .6功能模块的创建 首先设计的是登录界面(如图4所示,所有程序代码参照“程序原代码”)。 图4 登陆界面然后设计的是登录后的主界面(如图5所示)。图5 主界面之后设计病人挂号界面(如图6所示)。图6 病人挂号界面药品管理界面(如图7所示)图7药品管理界面3. 设计结果分析首先我们运行程序,弹出登录界面在输入用户名和密码之后(如图8所示),进入主界面(如图9所示)。图8登录 图9登录

7、后的主界面 然后我们进行病人登记(如图10所示),在输入一系列的信息之后,单击添加挂号,成功添加一个新挂号。图10病人挂号界面 之后我们在数据库中添加一系列的相关数据,再进行退药管理(如图11所示)。图11退药界面4.设计体会通过这一次java课程设计,我深深的理解到面向对象编程的方便与快捷和java的重要性,也使我本学期所学的java知识得到巩固和应用,在设计的过程中我遇到了很到问题,为了解决问题进行了各种各样的实验和资料的查找,这此课程设计还让我懂得了写程序不能闭门造车,要努力拓宽知识面,丰富知识。它还让我学会了在网上查阅那些无限的资料。通过对此课题的开发,使我对用java开发系统有了一个

8、比较清楚的认识,体会到理论和实践的重要性。由于自己的分析设计和程序经验不足,该系统设计和实现过程中,还有许多没有完善的地方,比如用户界面设计不够美观,异常出错处理比较差等多方面问题,这些都有待进一步完善和提高。本次课程设计对我将来的学习工作必会起到很大的帮助作用。5.参考文献1.范立南,刘天惠等. sql server 2000 实用教程m. 北京:清华大学出版社,2004.02:47-1382.李诚等. java2简明教程m,第2版. 北京:清华大学出版社,2004.08:165-2013. 陈轶.姚晓昆编著.java程序设计实验指导.北京:清华大学出版社,20064. 杨昭编著.二级jav

9、a语言程序设计教程.北京:中国水利水电出版社,20065 .美herbert schidt著.java参考大全.鄢爱兰.鹿江春译.北京:清华大学出版社,2006附录: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) applica

10、tion.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 " + " wher

11、e 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();

12、 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) /关闭sqlda

13、tareader sqlread.close(); 主界面代码及挂号界面代码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_pati

14、entno.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; /添加要进行操作

15、的类型 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

16、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_doc

17、name.valuemember = "id" /添加员工表中所有员工的信息,绑定到预约医生combobox控件中 dataset getappointdocds = myoperate.getds("select id,name from employee", "employee"); cmb_appointdoc.datasource = getappointdocds.tables0; cmb_appointdoc.displaymember = "name" cmb_appointdoc.valuememb

18、er = "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 voi

19、d 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.enabl

20、ed = 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

21、; 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

22、 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

23、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("s

24、elect 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 tem

25、pstr = cmb_name.text; dataset chanagenameds = myoperate.getds("select * from patient where name='" + tempstr + "'", "patient"); txt_sidtype.text = chanagenameds.tables0.rows0"sidtype".tostring(); txt_sidno.text = chanagenameds.tables0.rows0"sidno&

26、quot;.tostring(); txt_sex.text = chanagenameds.tables0.rows0"sex".tostring(); txt_patientno.text = chanagenameds.tables0.rows0"patientno".tostring(); txt_email.text = chanagenameds.tables0.rows0"e_mail".tostring(); txt_cellphone.text = chanagenameds.tables0.rows0"c

27、ellphone".tostring(); txt_celladdress.text = chanagenameds.tables0.rows0"celladdress".tostring(); txt_cardname.text = chanagenameds.tables0.rows0"cardtype".tostring(); txt_birthday.text = chanagenameds.tables0.rows0"birthday".tostring(); txt_balance.text = chanagen

28、ameds.tables0.rows0"balance".tostring(); dataset appinfods=myoperate .getds("select * from appointment where patientname='" + tempstr + "' and appointment_done='1'","appointment"); cmb_docname.selecteditem = appinfods.tables0.rows0"doctor&

29、quot;.tostring(); cmb_docdiscipline.selecteditem = appinfods.tables0.rows0"discipline".tostring(); dtp_thisdate.value = convert.todatetime(appinfods.tables0.rows0"thisdate"); dtp_thistime.value = convert.todatetime(appinfods.tables0.rows0"thistime"); else string tempstr

30、 = cmb_name.text; dataset chanagenameds = myoperate.getds("select * from patient where name='" + tempstr + "'", "patient"); txt_sidtype.text = chanagenameds.tables0.rows0"sidtype".tostring(); txt_sidno.text = chanagenameds.tables0.rows0"sidno"

31、;.tostring(); txt_sex.text = chanagenameds.tables0.rows0"sex".tostring(); txt_patientno.text = chanagenameds.tables0.rows0"patientno".tostring(); txt_email.text = chanagenameds.tables0.rows0"e_mail".tostring(); txt_cellphone.text = chanagenameds.tables0.rows0"cellp

32、hone".tostring(); txt_celladdress.text = chanagenameds.tables0.rows0"celladdress".tostring(); txt_cardname.text = chanagenameds.tables0.rows0"cardtype".tostring(); txt_birthday.text = chanagenameds.tables0.rows0"birthday".tostring(); txt_balance.text = chanagenamed

33、s.tables0.rows0"balance".tostring(); private void btn_addappointment_click(object sender, eventargs e) if (cmb_optype.selecteditem.tostring() != "预约") /如果操作类型不为预约时,则提示用户 messagebox.show("请将操作类型设为预约!"); else /如果没有指定病人姓名,也不能进行预约 if (cmb_name.text = "") messagebo

34、x.show("请选择预约人的姓名!"); else /如果没有指定预约医生,不能进行预约 if (cmb_docname.text = "") messagebox.show("请选择预约医生!"); else /同时要指定预约科室 if (cmb_docdiscipline.text = "") messagebox.show("请选择预约科室!"); else /如果预约的各个条件都符合,则调用执行插入语句插入到数据库中 myoperate.getcom("insert into

35、 appointment(patientname,patientno," + "doctor,discipline,thisdate,thistime,appointment_done)" + " values('" + cmb_name.selecteditem.tostring() + "','" + txt_patientno.text.trim() + "','" + cmb_docname.selectedvalue.tostring() + "

36、','" + cmb_docdiscipline.selecteditem.tostring() + "','" + dtp_thisdate.value.toshortdatestring() + "','" + dtp_thistime.value.toshorttimestring() + "','" + convert.tosbyte(true) + "')"); messagebox.show("添加预约成功!&q

37、uot;);/提示添加成功 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("请选择预约人的姓

38、名!"); 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.tostrin

39、g() = "预约挂号") 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() + "'"); messag

40、ebox.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.t

41、ext.trim() + "','" + cmb_docname.selectedvalue.tostring() + "','" + cmb_docdiscipline.selecteditem.tostring() + "','" + dtp_thisdate.value.toshortdatestring() + "','" + dtp_thistime.value.toshorttimestring() + "','1

42、','"+cmb_regname .selecteditem .tostring ()+"','"+cmb_regfee .text +"','1')"); messagebox.show("添加挂号成功!"); this.gridviewinit(); private void cmb_regtype_selectedindexchanged(object sender, eventargs e) this.getname(); private void gridvi

43、ewinit() /获取预约表中的指定医师在指定时间内的预约信息 dataset view1ds = myoperate.getds("select appointmentid as 预约号,"+ "patientname as 病人姓名,patientno as 病历号,doctor as 预约医生,"+ "discipline as 预约科室,thistime as 预约时间from appointment "+ "where doctor='"+cmb_appointdoc.selectedvalue

44、 .tostring () +"' and thisdate='"+dtp_appointdate .value .toshortdatestring () +"'", "appointment"); /绑定预约信息到datagridview控件上 this.datagridview1.datasource = view1ds.tables0; /获取值班表中当前日期和指定医师的值班信息 dataset view2ds = myoperate.getds("select id as 编号,doc as

45、 医师,"+ "part as 科室,startdate as 开始时间,enddate as 结束时间,"+ "currentdate as 日期from duty where doc='" + cmb_appointdoc.selectedvalue.tostring() + "' and currentdate='"+system.datetime .now.date.tostring()+"'", "值班表"); /将值班信息保存到datagri

46、dview2控件上 this.datagridview2.datasource = view2ds.tables0; private void cmb_appointdoc_selectedindexchanged(object sender, eventargs e) this.gridviewinit(); /根据选择的挂号名称获得挂号费用 private void cmb_regname_selectedindexchanged(object sender, eventargs e) string tempstr = cmb_regname.selecteditem.tostring(); dataset regfreeds = myoperate.getds("select price from dict_reg where name

温馨提示

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

评论

0/150

提交评论