《药品管理系统》word版.docx
《《药品管理系统》word版.docx》由会员分享,可在线阅读,更多相关《《药品管理系统》word版.docx(20页珍藏版)》请在冰豆网上搜索。
《药品管理系统》word版
一.概述
在计算机技术飞速发展的今天,计算机管理已经在很多领域得到广泛的应用。
计算机化已成为医院现代化一个不可或缺的因素。
目前很多医院的信息管理还比较落后,劳动强度大且效率低,因此,开发医院管理信息系统将提高医院的各项工作效率。
医院的药品管理师一个非常重要的和繁杂的事务,需要完成药品的购入、存储、售出等很多操作,这就使得使用药品存销管理系统来管理这样的事务有着很好的效果。
软件开发环境:
SQLserver2008,VisualBasic6.0
二.需求分析
药品存销管理系统主要需要实现药品入库信息记录、药品的库存管理、药品出库信息管理等功能。
具体要实现的功能包括:
(1)药品入库信息管理功能。
记录入库药品名称、价格、数量、采购员、生产日期、生产厂商等资料,能够实现对药品入库信息的添加功能。
(2)药品库存资料管理。
记录库存药品的名称、销售价格、库存量、生产日期等资料,能够实现对库存药品信息的查询功能。
在顾客购买药品取走后,在表中同时减去相应的药品的数量。
(3)药品出库信息管理。
记录药品出库的名称、类型、销售价格、数量、病人名称、联系方式等资料,能够实现对出库药品信息的修改、删除和查询功能。
三.概念结构设计
(1).入库E-R模型
(2)出库E-R模型
(3).药品、员工和顾客之间的E-R图
四.逻辑结构设计
药品信息:
药品编号、药品名称、生产厂家、生产日期、保质期、用途、价格、数量、经手人等;
员工信息:
员工编号、姓名、性别、年龄、学历、职务等;客户信息:
客户编号、姓名、联系方式、购买时间、购买药品编号、名称、数量等。
(1)药品信息:
属性
数据类型
可否为空
字段说明
药品编号
INT
否
主键,自增
药品名称
CHAR
否
生产厂家
CHAR
否
生产日期
CHAR
否
价格
CHAR
否
数量
INT
否
采购员
CHAR
否
(2)员工信息:
属性
数据类型
可否为空
字段说明
员工编号
INT
否
姓名
CHAR
否
主键
性别
CHAR
否
年龄
CHAR
否
职务
CHAR
否
(3)顾客信息:
属性
数据类型
可否为空
字段说明
客户编号
INT
否
主键,自增
姓名
CHAR
否
联系方式
CHAR
否
购买时间
CHAR
否
购入药品标号
INT
否
数量
INT
否
五.数据库设计
打开MicrosoftSQLServer2008,并创建一个名为药品存储信息管理系统的数据库,用SQL语句建立Medicinal表,Staff表和Customer表。
程序如下:
CREATETABLEMedicinal
(药品编号INTPRIMARYKEY,
药品名称CHAR(20)UNIQUE,
生产厂商CHAR(20)UNIQUE,
生产日期CHAR(20)UNIQUE,
价格CHAR(20)UNIQUE,
数量INTUNIQUE,
);
CREATETABLEStaff
(员工编号INTPRIMARYKEY,
姓名CHAR(20)UNIQUE,
性别CHAR(20)UNIQUE,
年龄CHAR(20)UNIQUE,
职务CHAR(20)UNIQUE,
);
CREATETABLECustomer
(客户编号INTPRIMARYKEY,
姓名CHAR(20)UNIQUE,
联系方式CHAR(20)UNIQUE,
购买时间CHAR(20)UNIQUE,
购入商品编号INTUNIQUE,
数量INTUNIQUE,
);
运行结果如下:
Medicinal表:
Customer表:
Staff表:
之后编辑各个表,并在表的设计中将表级联起来:
Medicinal表:
Staff表:
Customer表:
三个表的关系图:
六.VB6.0做前台,界面设计与程序
(1)主界面如下:
主界面代码如下:
PrivateSubTimer1_Timer()
Label1.Left=(Form1.Width-1000)*Rnd
Label1.Top=(Form1.Height-1200)*Rnd
EndSub
PrivateSub库存药品信息_Click()
Me.Hide
Form4.Show
EndSub
PrivateSub退出药品管理系统_Click()
DimaskAsInteger
ask=MsgBox("确定退出系统?
",vbYesNo)
Ifask=7Then
Form1.Show
ElseEnd
EndIf
EndSub
PrivateSub药品出库信息_Click()
Me.Hide
Form3.Show
EndSub
PrivateSub药品入库信息_Click()
Me.Hide
Form2.Show
EndSub
(2)当在主界面的菜单栏中点击药品入库信息时,跳转到如下页面:
设计时该页面的程序如下:
PublicColValAsString'读取表中列值的变量
PublicobjConnAsNewADODB.Connection
PublicobjRSAsNewADODB.Recordset'连接数据库设置
PublicSubOpenDB()
objConn.ConnectionString="Provider=SQLOLEDB.1;IntegratedSecurity=SSPI;PersistSecurityInfo=False;InitialCatalog=药品存销信息管理系统;DataSource=WIN-7P8V88AM9J0\DONGRUIMING"
objConn.Open
EndSub
PublicSubCloseDB()
objConn.Close
EndSub
PrivateSubCommand1_Click()
DimaAsInteger
IfTrim(Text1.Text)=""Then
MsgBox"药品入库名称不能为空!
",vbOKOnly
ExitSub
EndIf
IfTrim(Text2.Text)=""Then
MsgBox"生产厂商不能为空!
",vbOKOnly
ExitSub
EndIf
IfTrim(Text3.Text)=""Then
MsgBox"药品生产日期不能为空!
",vbOKOnly
ExitSub
EndIf
IfTrim(Text4.Text)=""Then
MsgBox"药品入库价格不能为空!
",vbOKOnly
ExitSub
EndIf
IfTrim(Text5.Text)=""Then
MsgBox"入库数量不能为空!
",vbOKOnly
ExitSub
EndIf
IfTrim(Text6.Text)=""Then
MsgBox"采购员不能为空!
",vbOKOnly
ExitSub
EndIf
OpenDB
DimstrSQLAsString
strSQL="Select*fromMedicinal"
'添加药品入库信息
objRS.OpenstrSQL,objConn,adOpenKeyset,adLockOptimistic
objRS.AddNew
objRS.Fields
(1)=Trim(Text1.Text)
objRS.Fields
(2)=Trim(Text2.Text)
objRS.Fields(3)=Trim(Text3.Text)
objRS.Fields(4)=Trim(Text4.Text)
objRS.Fields(5)=Trim(Text5.Text)
objRS.Fields(6)=Trim(Text6.Text)
objRS.Update
objRS.Close
CloseDB
a=MsgBox("添加成功!
继续否?
",vbYesNo)
Ifa=6Then
Form2.Show
Text1.Text=""
Text2.Text=""
Text3.Text=""
Text4.Text=""
Text5.Text=""
Text6.Text=""
Else
Me.Hide
Form1.Show
EndIf
EndSub
PrivateSubCommand2_Click()
Me.Hide
Form1.Show
EndSub
(3)当在主界面的菜单栏中点击药品出库信息时,跳转到如下页面:
其代码如下:
PrivateSubCommand1_Click()
IfText1>""Then
Adodc1.Recordset.Find"药品名称='"&Text1.Text&"'",,,1
IfAdodc1.Recordset.EOFThenMsgBox"无此药品!
",,"提示"
EndIf
EndSub
PrivateSubCommand2_Click()
Me.Hide
Form5.Show
EndSub
PrivateSubCommand3_Click()
Me.Hide
Form1.Show
EndSub
当按查询按钮时,引发Command1_Click()事件,当按返回系统时,跳转当系统主页,当按确定购买键的时侯,跳转到如下界面:
其代码如下:
PublicobjConnAsNewADODB.Connection
PublicobjRSAsNewADODB.Recordset
PublicobjConn1AsNewADODB.Connection
PublicobjRS1AsNewADODB.Recordset
PublicSubOpenDB()
objConn.ConnectionString="Provider=SQLOLEDB.1;IntegratedSecurity=SSPI;PersistSecurityInfo=False;InitialCatalog=药品存销信息管理系统;DataSource=WIN-7P8V88AM9J0\DONGRUIMING"
objConn.Open
objConn1.ConnectionString="Provider=SQLOLEDB.1;IntegratedSecurity=SSPI;PersistSecurityInfo=False;InitialCatalog=药品存销信息管理系统;DataSource=WIN-7P8V88AM9J0\DONGRUIMING"
objConn1.Open
EndSub
PublicSubCloseDB()
objConn.Close
objConn1.Close
EndSub
PrivateSubCommand1_Click()
DimaAsInteger
IfTrim(Text1.Text)=""Then
MsgBox"姓名不能为空!
",vbOKOnly
ExitSub
EndIf
IfTrim(Text2.Text)=""Then
MsgBox"联系方式不能为空!
",vbOKOnly
ExitSub
EndIf
IfTrim(Text3.Text)=""Then
MsgBox"家庭住址不能为空!
",vbOKOnly
ExitSub
EndIf
IfTrim(Text4.Text)=""Then
MsgBox"药品编号不能为空!
",vbOKOnly
ExitSub
EndIf
IfTrim(Text5.Text)=""Then
MsgBox"数量不能为空!
",vbOKOnly
ExitSub
EndIf
IfTrim(Text6.Text)=""Then
MsgBox"日期不能为空!
",vbOKOnly
ExitSub
EndIf
OpenDB
DimstrSQLAsString
strSQL="Select*fromCustomer"
DimstrSQL1AsString
strSQL1="Select*fromMedicinal"
objRS.OpenstrSQL,objConn,adOpenKeyset,adLockOptimistic
objRS1.OpenstrSQL1,objConn,adOpenKeyset,adLockOptimistic
objRS.AddNew
objRS.Fields
(1)=Trim(Text1.Text)
objRS.Fields
(2)=Trim(Text2.Text)
objRS.Fields(3)=Trim(Text6.Text)
objRS.Fields(4)=Trim(Text4.Text)
objRS.Fields(5)=Val(Text5.Text)
objRS.Update
objRS.Close
Adodc2.RecordSource="select*fromMedicinalwhere药品名称='"&Text4&"'"
Adodc2.Refresh
objRS1.Fields("数量")=objRS1.Fields("数量")-Val(Text5)
objRS1.Update
CloseDB
a=MsgBox("购买成功!
继续否?
",vbYesNo)
Ifa=6Then
Form2.Show
Text1.Text=""
Text2.Text=""
Text3.Text=""
Text4.Text=""
Text5.Text=""
Text6.Text=""
Else
Me.Hide
Form1.Show
EndIf
EndSub
PrivateSubCommand2_Click()
Me.Hide
Form1.Show
EndSub
PrivateSubForm_Load()
Dimmlink$,mpath$
mpath=App.Path
IfRight(mpath,1)<>"\"Thenmpath=mpath+"\"
mlink="Provider=SQLOLEDB.1;IntegratedSecurity=SSPI;PersistSecurityInfo=False;InitialCatalog=药品存销信息管理系统;DataSource=WIN-7P8V88AM9J0\DONGRUIMING"
Adodc2.ConnectionString=mlink
Adodc2.CommandType=adCmdUnknown
EndSub
当按确定键时,先判断所填内容是否符合要求,若不符合要求,则提示错误,若正确,则提示购买成功,并把顾客信息写入顾客表中,并且所对应药品的数量应减去客户所购买的数量。
当点是按钮时,则继续购买,否则返回系统主界面。
当在主界面菜单栏中点击药品库存信息时,进入下面界面:
代码如下:
PrivateSubCommand1_Click()
Me.Hide
Form1.Show
EndSub
PrivateSubCommand2_Click()
End
EndSub
PrivateSubCommand3_Click()
Adodc1.RecordSource="Select*fromMedicinal,StaffWhereStaff.姓名=Medicinal.采购员and药品名称='"&Text1&"'"
Adodc1.Refresh
IfAdodc1.Recordset.EOFThenMsgBox"无此药品",,"提示"
EndSub
PrivateSubForm_Load()
Dimmlink$,mpath$
mpath=App.Path
IfRight(mpath,1)<>"\"Thenmpath=mpath+"\"
mlink="Provider=SQLOLEDB.1;IntegratedSecurity=SSPI;PersistSecurityInfo=False;InitialCatalog=药品存销信息管理系统;DataSource=WIN-7P8V88AM9J0\DONGRUIMING"
Adodc1.ConnectionString=mlink
Adodc1.CommandType=adCmdUnknown
EndSub
当点击查询按钮时,引发Command3_Click()事件,把该药品信息和采购员的信息显示来。
如下:
七.课设总结
在进行本次实验之前,有关数据库的知识只是在课本上学了一点基础知识而已,对于实际中,数据库是如何应用的所知胜少。
对于我来说,之前,看到那些管理软件觉得很陌生。
在这次的试验中,我学习了:
VisualBasic的菜单和链接窗口的构建和链接方法;
练习了VisualBasic窗口的设计,包括文本框的属性设置和按钮的触发事件
学习了将SQLServer2008数据表中信息在窗口中的文本框显示出来的方法和将文本框中的信息放入SQLServer数据表中的方法。
在设计的过程中,也遇到了很多问题,比如链接数据库并对其进行增、删、改操作耗费了大量的时间。
在解决这些问题的同时,进一步加深了对Visual和SQLServer的运用和理解,对于数据库的使用也有了更深的理解。
但是,由于对这方面的知识不太了解,现学现卖,并且做之前没有作充分的需求分析,造成考虑不周全,系统不够完善,存在很多不足和漏洞。
总的来说,这个课程设计对我意义重大,通过这次的学习,锻炼并提高了了自己的动手能力和编程能力。
八.参考文献
1.《VisualBasic程序设计教程(第三版)》龚沛曾等编
2.《数据库系统概论(第四版)》王珊萨师煊
3.《SQLServer2008基础教程》(英)RobinDewson董明(译)