1、医药店库存管理一需求分析医院的药房是医院里面一个很繁忙的科室,每天有很多的病人要从药房拿药取药,又不断有药品补充进去,每天药品的流量是很大的。如果只用人工的方法去统计是不可能的,这样会大大影响到医生护士对病人的治疗。为了解决这个矛盾,实现科学化、现代化的医院药房管理,我们就必须设计开发药房管理信息系统,并用于实践。而医药管理系统是对医药信息进行管理的计算机网络软件系统,它可完成医院中各类药品信息的收集、存储、使用,是融合了医院的管理思想、各部门的业务经验,以及对计算机技术的恰当运用的软件开发成果。在医疗卫生领域,信息化概念的引入,尤其是医院信息系统的应用,大大改变了医院的管理模式和工作流程,对
2、提高医院的管理水平、质量效益、经济效益、社会效益起到了巨大地促进作用。目前医药管理系统地应用已成为医院管理地重要工具和手段,它的引入有助于改变传统的工作方式,提高工作效率;提高经济效益;加强过程控制,提高医药管理质量;提高医院信誉,增强竞争能力;实现卫生资源共享;强化医院的科学管理。主要有四个功能:(1)用户信息管理功能。该功能模块可以实现系统用户对自己基本信息的修改和建立新用户,新用户分为超级用户、用户管理员、入库管理员、出库管理员、库存管理员等。 (2) 药品入库信息管理功能。该功能模块是实现对即将入库的药品的统计,由于药品信息的庞大、复杂,在入库前需要对其进行详细地记录管理,为药品的库存
3、管理打下良好的基础。需要记录的内容有:入库药品的名称、类型、价格、数量、采购员、验收员、生产厂商、产地、入库时间等。同时能够实现对药品入库信息的添加、修改、删除和查询功能(3)药品出库信息管理功能。该功能模块是把要出库的药品从药房中取出来,并对库存药品进行相应的记录管理,并且把病人取出的药品清单信息打印下来给病人做凭证。需要记录的内容有:出库药品的名称、类型、出库价格、数量、病人姓名、出库时间等,同时能够实现对药品出库信息的添加、修改、删除和查询功能。(4)药品库存信息管理功能。该功能模块是把要入库的药品存入药房中,并对库存药品进行统计管理,主要入库信息来源于(2)中的药品入库信息记录。需要记
4、录的内容有:库存药品的名称、类型、入库价格、出库价格、库存量、入库时间、有效期等,同时能够实现对药品库存信息的添加、修改、删除和查询功能。在药品出库后,在表中能够同时删除相应的药品的数量。二概要设计1. 以下便是本系统的E-R图表示:图 2-1 库存管理系统E-R图图 2-2 用户管理系统E-R图图 2-3 入库管理系统E-R图图 2-4 药品管理系统E-R图图 2-5 出库管理系统E-R图2.具体存储结构图如下列表所示:表2-1 operator表字段名称标识名称数据类型字段说明id自动编号主码UserName管理员帐号文本UserPwd账号密码文本Class用户类型数字表2-2 input
5、_detail表字段名称标识名称数据类型空否字段说明id自动编号N主码code明细编号文本Nnumber批次文本Nname药品名称文本Ntype药品种类文本Nunit计量单位文本Nmade_date药品出厂日期日期/时间Nuseless_date药品过期日期日期/时间Ninput_date进货日期日期/时间Ninput_com进货公司文本Nprice药品单价货币Ncount药品数量数字Ntotal药品总金额货币N表2-3 store表字段名称标识名称数据类型空否字段说明id自动编号主码code药品编号文本Nnumber批次编号文本Nname药品名称文本Ntype药品种类文本Nmade_date
6、生产日期日期/时间Nuseless_date过期日期日期/时间Nunit计量单位文本Nprice药品单价数字Nprice药品数量数字N表4-4 out表字段名称标识名称数据类型空否字段说明id自动编号N主码code编号文本Noperator出库操作员文本Noutput_date出库日期日期/时间Nname出库药品名文本Ntype出库药品种类文本Nprice出库价格数字Ncount出库数量数字isOut是否出库是/否brief备注文本N三详细设计1.unit uInput;interfaceuses Windows, Messages, SysUtils, Variants, Classes,
7、Graphics, Controls, Forms, Dialogs, DB, ADODB, Grids, DBGrids, Buttons, StdCtrls;type TfrmInput = class(TForm) ADOQuery1: TADOQuery; DataSource1: TDataSource; DBGrid1: TDBGrid; DBGrid2: TDBGrid; ADOQuery2: TADOQuery; DataSource2: TDataSource; btnInputTotal: TSpeedButton; btnDelInputTotal: TSpeedButt
8、on; btnAddDetail: TSpeedButton; btnDelDetail: TSpeedButton; btnUpdateDetail: TSpeedButton; btnQuit: TSpeedButton; btnInput: TSpeedButton; Label1: TLabel; Label2: TLabel; procedure btnInputTotalClick(Sender: TObject); procedure btnAddDetailClick(Sender: TObject); procedure FormCreate(Sender: TObject)
9、; procedure btnDelInputTotalClick(Sender: TObject); procedure ADOQuery1RecordChangeComplete(DataSet: TCustomADODataSet; const Reason: TEventReason; const RecordCount: Integer; const Error: Error; var EventStatus: TEventStatus); procedure DBGrid1CellClick(Column: TColumn); procedure btnUpdateDetailCl
10、ick(Sender: TObject); procedure btnQuitClick(Sender: TObject); procedure btnDelDetailClick(Sender: TObject); procedure ADOQuery2RecordChangeComplete(DataSet: TCustomADODataSet; const Reason: TEventReason; const RecordCount: Integer; const Error: Error; var EventStatus: TEventStatus); procedure ADOQu
11、ery2AfterOpen(DataSet: TDataSet); procedure btnInputClick(Sender: TObject); private Private declarations public Public declarations end;var frmInput: TfrmInput;implementationuses udb, uInputDetail, uInputList;$R *.dfmprocedure TfrmInput.btnInputTotalClick(Sender: TObject);begin ADOQuery1.Append; if
12、frmInputList = nil then frmInputList := TfrmInputList.Create(nil); frmInputList.ShowModal ;end;procedure TfrmInput.btnAddDetailClick(Sender: TObject);begin if ADOQuery1.FieldByName(isInput).AsBoolean = true then begin MessageBox(handle, 该批次药品已经入库,不能再添加药品。请重新填写入库单!, 提示, MB_ICONINFORMATION ); exit; en
13、d; ADOQuery2.Append; if frmInputDetail = nil then frmInputDetail := TfrmInputDetail.Create(nil); frmInputDetail.ShowModal ;end;procedure TfrmInput.FormCreate(Sender: TObject);var strValue:string;begin ADOQuery1.Active:=true; if ADOQuery1.RecordCount=0 then begin btnDelInputTotal.Enabled:=false; btnA
14、ddDetail.Enabled:=false; end else begin btnDelInputTotal.Enabled:=true; btnAddDetail.Enabled:=true; end; strValue:= frmInput.ADOQuery1.FieldByName(number).AsString; ADOQuery2.Close; ADOQuery2.sql.Clear; ADOQuery2.SQL.Add(select * from input_detail where number=:number); ADOQuery2.Parameters.ParamByN
15、ame(number).Value := strValue; ADOQuery2.open;end;procedure TfrmInput.btnDelInputTotalClick(Sender: TObject);begin if MessageBox(handle, 真的要删除此记录么?, 提示, mb_IconQuestion + mb_OkCancel) = idOk then ADOQuery1.Delete; if ADOQuery1.RecordCount=0 then begin btnDelInputTotal.Enabled:=false; btnAddDetail.En
16、abled:=false; end;end;procedure TfrmInput.ADOQuery1RecordChangeComplete( DataSet: TCustomADODataSet; const Reason: TEventReason; const RecordCount: Integer; const Error: Error; var EventStatus: TEventStatus);var strValue:string;begin strValue:= frmInput.ADOQuery1.FieldByName(number).AsString; ADOQue
17、ry2.Close; ADOQuery2.sql.Clear; ADOQuery2.SQL.Add(select * from input_detail where number=:number); ADOQuery2.Parameters.ParamByName(number).Value := strValue; ADOQuery2.open;end;procedure TfrmInput.DBGrid1CellClick(Column: TColumn);var strValue:string;begin strValue:= frmInput.ADOQuery1.FieldByName
18、(number).AsString; if ADOQuery1.RecordCount=0 then begin btnDelInputTotal.Enabled:=false; btnAddDetail.Enabled:=false; end else begin btnDelInputTotal.Enabled:=true; btnAddDetail.Enabled:=true; end; ADOQuery2.Close; ADOQuery2.sql.Clear; ADOQuery2.SQL.Add(select * from input_detail where number=:numb
19、er); ADOQuery2.Parameters.ParamByName(number).Value := strValue; ADOQuery2.open;end; procedure TfrmInput.btnUpdateDetailClick(Sender: TObject);begin if ADOQuery1.FieldByName(isInput).AsBoolean = true then begin MessageBox(handle, 该批次药品已经入库,不能再修改药品信息!, 提示, MB_ICONINFORMATION ); exit; end; ADOQuery2.E
20、dit; if frmInputDetail = nil then frmInputDetail := TfrmInputDetail.Create(nil); frmInputDetail.ShowModal ;end;procedure TfrmInput.btnQuitClick(Sender: TObject);begin close;end;procedure TfrmInput.btnDelDetailClick(Sender: TObject);begin if ADOQuery1.FieldByName(isInput).AsBoolean = true then begin
21、MessageBox(handle, 该批次药品已经入库,不能删除药品信息!, 提示, MB_ICONINFORMATION ); exit; end; if MessageBox(handle, 真的要删除此记录么?, 提示, mb_IconQuestion + mb_OkCancel) = idOk then ADOQuery2.Delete; if ADOQuery2.RecordCount=0 then begin btnUpdateDetail.Enabled:=false; btnDelDetail.Enabled:=false; end else begin btnUpdateD
22、etail.Enabled:=true; btnDelDetail.Enabled:=true; end;end;procedure TfrmInput.ADOQuery2RecordChangeComplete( DataSet: TCustomADODataSet; const Reason: TEventReason; const RecordCount: Integer; const Error: Error; var EventStatus: TEventStatus);begin if ADOQuery2.RecordCount=0 then begin btnUpdateDeta
23、il.Enabled:=false; btnDelDetail.Enabled:=false; end else begin btnUpdateDetail.Enabled:=true; btnDelDetail.Enabled:=true; end;end;procedure TfrmInput.ADOQuery2AfterOpen(DataSet: TDataSet);begin if ADOQuery2.RecordCount=0 then begin btnUpdateDetail.Enabled:=false; btnDelDetail.Enabled:=false; end els
24、e begin btnUpdateDetail.Enabled:=true; btnDelDetail.Enabled:=true; end;end;procedure TfrmInput.btnInputClick(Sender: TObject);var Query : TADOQuery; i : integer;begin if (ADOQuery1.RecordCount = 0) or (ADOQuery2.RecordCount = 0) then begin MessageBox(handle, 当前没有可入库的药品, 提示, MB_ICONINFORMATION ); exi
25、t; end; if ADOQuery1.FieldByName(isInput).AsBoolean = true then begin MessageBox(handle, 该批次药品已经入库, 提示, MB_ICONINFORMATION ); exit; end; try Query := TADOQuery.Create(nil); Query.Connection := dm.ADOConnection1 ; Query.SQL.Add(select * from store; ); Query.Open; ADOQuery2.First; for i:=0 to ADOQuery
26、2.RecordCount-1 do begin Query.Append; Query.FieldByName(code).AsString := ADOQuery2.FieldByName(code).AsString; Query.FieldByName(number).AsString := ADOQuery2.FieldByName(number).AsString; Query.FieldByName(name).AsString := ADOQuery2.FieldByName(name).AsString; Query.FieldByName(type).AsString :=
27、 ADOQuery2.FieldByName(type).AsString; Query.FieldByName(made_date).AsDateTime := ADOQuery2.FieldByName(made_date).AsDateTime; Query.FieldByName(useless_date).AsDateTime := ADOQuery2.FieldByName(useless_date).AsDateTime; Query.FieldByName(unit).AsString := ADOQuery2.FieldByName(unit).AsString; Query
28、.FieldByName(price).AsFloat := ADOQuery2.FieldByName(price).AsFloat; Query.FieldByName(count).AsInteger := ADOQuery2.FieldByName(count).AsInteger; Query.Post; ADOQuery2.Next; end; Query.Close; Query.Free; except MessageDlg(连接数据库出错!,mtError,mbok,0); exit; end; ADOQuery1.Edit; ADOQuery1.FieldByName(is
29、Input).AsBoolean := true; ADOQuery1.Post; MessageBox(handle, 药品入库成功!, 提示, MB_ICONINFORMATION ); btnAddDetail.Enabled:=false; btnUpdateDetail.Enabled:=false; btnDelDetail.Enabled:=false;end;end.2.unit uInputDetail;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Mask, DBCtrls, Buttons;type TfrmInputDetail = class(TForm) DBEdit1: TDBEdit; DBEdit2: TDBEdit; DBEdit3: TDBEdit; DBEdit4: TDBEdit; DBEdit5: TD
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1