医院住院管理系统
《vf程序设计》综合性实验
实验报告
题目: 医院住院管理系统
姓名: 李典
班级: 国会0906 学号: 200948990620
指导教师: 李周芳
完成时间: 2011-1-8
1
一、实验题目
医院住院管理系统
二、实验目的
巩固学生对数据库基本原理和基础理论的理解,掌握数据库应用系统设计开发的基本方法,进一步提高学生综合运用所学知识的能力。设计一个小型的完整、简单的医院住院管理系统。
三、系统分析
1、功能分析
系统开发的总体任务是实现各种信息的系统化、规范化和自动化。
系统功能分析是在系统开发的总体任务的基础上完成。医院住院管理信息系统需要完成功能主要有:
(1)录入模块:
? 用户信息的输入,包括病人编号、姓名、密码、身份等。
? 病人入院、出院登记,包括病人编号、姓名、性别、年龄、是否办理出院、病因等。
(2)修改模块:
? 病人基本信息的查询和修改,包括病人编号、姓名、性别、年龄、入院日期、出院日期、病因等。
(3)查询模块:
? 病人基本信息的查询,包括病人编号、姓名、性别、年龄、入院日期、出院日期、是否办理出院、病因等。
(4)统计模块:
? 信息的统计,包括病人信息、病房信息、住房信息、用户信息等。
(5)报表打印模块:
? 病人基本信息报表,包括病人编号、姓名、性别、年龄、入院日期、出院日期、是否办理出院、病因等。
? 病房基本信息报表,包括病房号码、病房等级称、每日价格、床位等。
四、数据库设计
1、概念设计(E-R图)
2
2、实现设计(关系模式)
病房信息表,病房号码,病房级别,每日价格,病床数,
病人信息表,编号,姓名,性别,年龄,入院日期,出院日期,是否出院,病因, 住房信息表,编号,性别,病房号码,病房级别,床位,病人,病房号码为外键,分别依赖于病人编号,病房号码
用户信息表,编号,姓名,密码,身份,
3、物理设计
(1)、病房信息表:
(2)、病人信息表:
3
(3)、住房信息表:
(4)、
用户信息表:
五、系统设计
1、概要设计
医院住院管理系统
病病住系
人房院统
信信业管
理 息息务
管管管
理 理 理
出用密病入病入入
人住住院院户码房
信情情信信管管分
息况况 息息理 理 类
查查登登
询 询 记 记
4
六、实现过程
1、菜单设计
2、界面设计,控件属性设计,添加程序代码
(1)登录界面
对象名 属性 属性值
Form1 Caption Form1
欢迎访问医院住院管理系统 Lable1 Caption
姓名 Lable2 Caption
密码 Lable3 caption
登录 Command1 caption
退出 Command2 caption
optiongroup1 buttoncount 2(管理员或病人)
用户信息表密码 Text2 passwordchar
用户信息表姓名 Text1 namechar
“登陆”按钮的click事件代码如下:
use 用户信息
locate for alltrim(姓名)==alltrim(thisform.text1.value)
if .not.found()
messagebox("没有该用户~")
else
if thisform.optiongroup1.option1.value=1
if alltrim(身份)=="管理员"
if alltrim(密码)==alltrim(thisform.text2.value)
messagebox("欢迎访问系统~")
do form 管理员主页
else
5
messagebox("密码错误~")
endif
else
messagebox("身份不匹配~")
endif
else
if alltrim(身份)=="病人"
if 密码==alltrim(thisform.text2.value)
messagebox("欢迎访问系统~")
do form 病人主页
else
messagebox("密码错误~")
endif
else
messagebox("身份不匹配~")
endif
endif
endif
“退出”的事件代码如下:
thisform.release
(2)主菜单(管理员登录)
6
对象名 属性 属性值
管理员主页(主界面) Form1 Caption
欢迎使用住院系统 Lable1 Caption
添加 Command1 caption
修改 Command2 caption
查询 Command3 caption
统计 Command4 caption
系统信息 Command5 caption
退出 Command6 caption
2-1 住院业务管理功能
选择入院登记,进入如下界面:
s
对象 属性 属性值
姓名 Text1 controlsource
编号 Text2 controlsource
性别 Text3 controlsource
年龄 Text4 controlsource
病因 Edit1
入院登记 Label1 Caption
入院登记 Form1 Caption
查上一个编号 Command1 Caption
确定 Command2 Caption
退出 Command3 Caption
7
“查上一个编号”按钮的click事件代码如下:
go reccount()-1
thisform.label5.caption=编号
“确定”按钮的click事件代码如下:
append blank
replace 编号 with thisform.Text2.value replace 年龄 with thisform.text4.value replace 性别 with thisform.text3.value replace 姓名 with thisform.Text1.value replace 病因 with thisform.edit1.value messagebox("已登记~")
thisform.refresh
“退出”的click事件代码如下:
thisform.release
选择出院登记,进入如下界面:
对象 属性 属性值
姓名 Text1 controlsource
编号 Text2 controlsource
是否办理出院 Text3 Controlsource
确定 Command1 Caption
退出 Command2 Caption
“确定”按钮的click事件代码如下:
locate for 编号=alltrim(thisform.text1.text) if found()
thisform.Text1.value = 姓名
replace 病人信息.是否已办理出院 with thisform.text3.value
messagebox("是否办理出院:"+alltrim(thisform.text3.value))
8
else
messagebox("编号输入有误~") endif
thisform.refresh “退出”按钮的click事件代码如下: thisform.release
2-2、病人信息管理功能
对象 属性 属性值
病人基本信息查询 Form1 Caption
第一个 Command1 caption
上一个 Command2 caption
下一个 Command3 caption
最后一个 Command4 caption
修改 Command5 caption
姓名 Text1 Caption
编号 Text2 Caption
年龄 Text3 Caption
性别 Text4 Caption
入院日期 Text5 Caption
出院日期 Text6 Caption
病因 Text7 Caption “第一个”按钮的click事件代码如下: go top
thisform.refresh
“上一个”按钮的click事件代码如下: if bof().or.recno()=1
9
messagebox("已到首记录",48,"退出") else
skip -1
endif
thisform.refresh “下一个”按钮的click事件代码如下: if eof().or.recno()=reccount()
messagebox("已到末记录",48,"返回") else
skip
endif
thisform.refresh “最后一个”按钮的click事件代码如下: go bottom
thisform.refresh “修改”按钮的click事件代码如下: edit
thisform.refresh “添加”按钮大的click事件代码如下: append blank
edit
thisform.refresh “删除”按钮的click事件代码如下:
delete
pack
thisform.refresh “退出”按钮的click事件代码如下: thisform.release “查询”按钮的click事件代码如下: do form 病人信息查询
点击“查询”,进入如下界面:
10
“查询”按钮的click事件代码如下:
locate for 编号==alltrim(thisform.text1.value)
thisform.refresh
if not found()
messagebox("输入编号有误~")
endif
“退出”的click事件代码如下:
Thisform.release
2-3、病房信息管理功能
对象 属性 属性值
病房登记 Form1 Caption
编号 text1 controlsource
姓名 Text2 controlsource
病房号码 Text3 controlsource
病房级别 Text4 controlsource
11
床位 Text5 controlsource
确定 Command1 caption
退出 Command2 caption
“确定”按钮的click事件代码如下:
append blank
with thisform.text1.value replace 编号
replace 病房号码 with thisform.text3.value replace 床位 with thisform.text5.value replace 姓名 with thisform.text2.value replace 病房等级 with thisform.text4.value thisform.refresh
messagebox("已登记~")
“退出”的click事件代码如下:
thisform.release
对象 属性 属性值
病房查询 Form1 Caption
请输入编号 text1 controlsource
姓名 Text2 controlsource
性别 Text3 controlsource
入院日期 Text4 controlsource
出院日期 Text5 controlsource
查询 Command1 caption
删除 Command2 caption
退出 Command3 caption
“查询”按钮的click事件代码如下:
12
locate for 编号==alltrim(thisform.text1.value)
thisform.refresh
if not found()
messagebox("没有该病人~")
endif
“删除”按钮的click事件代码如下: delete
pack
thisform.refresh messagebox("已删除~")
“退出”按钮的click事件代码如下: thisform.release
2-4、信息统计功能
点击“病人统计”进入如下界面:
点击“病房统计”进入如下界面:
点击“病人病房统计”进入如下界面:
13
点击“本系统用户统计”进入如下界面:
(3)、主菜单(病人管理功能)
选择身份为:病人,姓名为:李儒,密码为:123456.进入如下界面:
14
3-1、点击“病人信息查询”进入如下界面(代码及控件属性如前):
3-2、点击“病人病房查询”进入如下界面(代码及控件属性如前):
七、调试过程
15
16
八、
本设计报告以医院住院管理系统为背景,论述了开发医院住院管理系统的结构,系统开发的基本步骤和方法(该系统的开发主要是采用面向对象开发模型,根据需要进行了较详细的说明(通过开发这个医院住院管理系统,进一步明确了开发研制一个管理信息系统的方法和思想,加深了对管理信息系统的认识,提高了学习管理信息系统的兴趣,巩固了以前学到的信息系系统开发方法方面的知识,提高了软件开发的水平,为今后在工作岗位上学用好计算机打下了坚实的基础。
在桌面型数据库应用中,Visual FoxPro处理速度极快,是日常工作中的得力助手。它整合了数据存储和数据开发语言两种功能,是所有开发语言所不具有的,虽然VFP的文本型数据库安全性比较差,但是速度和性能是非常不错的。
从最初的VFP程序结构的熟悉,到SQL语言四大语句的操作,再到表单,菜单,报表等实际操作运用。熟悉表单中,属性,事件,方法的区别及其运用。然后把前面学到的程序结构,命令函数等运用到具体的模块操作中去,同时要结合模块本身的一些特点适当调整。
17
还有,经过这次系统的开发,我深深感受道用户需求对软件的重要性,做好需求分析对整个系统的开发和扩展有很大的好处。接下来就是分析用户工作
,通过分析实例得到系统的流程图。
总的来说,我深感这次的开发令我获益匪浅,这次的开发经验也将在我今后的软件开发过程中起极大的作用。
但是,期间遇到了不少困难,登录界面花了不少时间,如何根据不同用户的登陆进入不同界面,判断姓名、密码的符合程度等。数据库语言的运用也不是很熟悉,查阅了大量的资料。另外,一些系统测试做的还不完善,出错提示,快捷键的处理„„
总之,通过这个医院住院系统,我充分了解了VF程序设计的全过程,不敢说自己已经掌握了VF,但如果下次还需要使用VF进行开发的话,应该能够得心应手了。
18