医药店库存管理.docx
- 文档编号:7921782
- 上传时间:2023-01-27
- 格式:DOCX
- 页数:47
- 大小:88.04KB
医药店库存管理.docx
《医药店库存管理.docx》由会员分享,可在线阅读,更多相关《医药店库存管理.docx(47页珍藏版)》请在冰豆网上搜索。
医药店库存管理
一.需求分析
医院的药房是医院里面一个很繁忙的科室,每天有很多的病人要从药房拿药取药,又不断有药品补充进去,每天药品的流量是很大的。
如果只用人工的方法去统计是不可能的,这样会大大影响到医生护士对病人的治疗。
为了解决这个矛盾,实现科学化、现代化的医院药房管理,我们就必须设计开发药房管理信息系统,并用于实践。
而医药管理系统是对医药信息进行管理的计算机网络软件系统,它可完成医院中各类药品信息的收集、存储、使用,是融合了医院的管理思想、各部门的业务经验,以及对计算机技术的恰当运用的软件开发成果。
在医疗卫生领域,信息化概念的引入,尤其是医院信息系统的应用,大大改变了医院的管理模式和工作流程,对提高医院的管理水平、质量效益、经济效益、社会效益起到了巨大地促进作用。
目前医药管理系统地应用已成为医院管理地重要工具和手段,它的引入有助于改变传统的工作方式,提高工作效率;提高经济效益;加强过程控制,提高医药管理质量;提高医院信誉,增强竞争能力;实现卫生资源共享;强化医院的科学管理。
主要有四个功能:
(1)用户信息管理功能。
该功能模块可以实现系统用户对自己基本信息的修改和建立新用户,新用户分为超级用户、用户管理员、入库管理员、出库管理员、库存管理员等。
(2)药品入库信息管理功能。
该功能模块是实现对即将入库的药品的统计,由于药品信息的庞大、复杂,在入库前需要对其进行详细地记录管理,为药品的库存管理打下良好的基础。
需要记录的内容有:
入库药品的名称、类型、价格、数量、采购员、验收员、生产厂商、产地、入库时间等。
同时能够实现对药品入库信息的添加、修改、删除和查询功能
(3)药品出库信息管理功能。
该功能模块是把要出库的药品从药房中取出来,并对库存药品进行相应的记录管理,并且把病人取出的药品清单信息打印下来给病人做凭证。
需要记录的内容有:
出库药品的名称、类型、出库价格、数量、病人姓名、出库时间等,同时能够实现对药品出库信息的添加、修改、删除和查询功能。
。
(4)药品库存信息管理功能。
该功能模块是把要入库的药品存入药房中,并对库存药品进行统计管理,主要入库信息来源于
(2)中的药品入库信息记录。
需要记录的内容有:
库存药品的名称、类型、入库价格、出库价格、库存量、入库时间、有效期等,同时能够实现对药品库存信息的添加、修改、删除和查询功能。
在药品出库后,在表中能够同时删除相应的药品的数量。
二.概要设计
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-1operator表
字段名称
标识名称
数据类型
字段说明
id
自动编号
主码
UserName
管理员帐号
文本
UserPwd
账号密码
文本
Class
用户类型
数字
表2-2input_detail表
字段名称
标识名称
数据类型
空否
字段说明
id
自动编号
N
主码
code
明细编号
文本
N
number
批次
文本
N
name
药品名称
文本
N
type
药品种类
文本
N
unit
计量单位
文本
N
made_date
药品出厂日期
日期/时间
N
useless_date
药品过期日期
日期/时间
N
input_date
进货日期
日期/时间
N
input_com
进货公司
文本
N
price
药品单价
货币
N
count
药品数量
数字
N
total
药品总金额
货币
N
表2-3store表
字段名称
标识名称
数据类型
空否
字段说明
id
自动编号
主码
code
药品编号
文本
N
number
批次编号
文本
N
name
药品名称
文本
N
type
药品种类
文本
N
made_date
生产日期
日期/时间
N
useless_date
过期日期
日期/时间
N
unit
计量单位
文本
N
price
药品单价
数字
N
price
药品数量
数字
N
表4-4out表
字段名称
标识名称
数据类型
空否
字段说明
id
自动编号
N
主码
code
编号
文本
N
operator
出库操作员
文本
N
output_date
出库日期
日期/时间
N
name
出库药品名
文本
N
type
出库药品种类
文本
N
price
出库价格
数字
N
count
出库数量
数字
isOut
是否出库
是/否
brief
备注
文本
N
三.详细设计
1.
unituInput;
interface
uses
Windows,Messages,SysUtils,Variants,Classes,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:
TSpeedButton;
btnAddDetail:
TSpeedButton;
btnDelDetail:
TSpeedButton;
btnUpdateDetail:
TSpeedButton;
btnQuit:
TSpeedButton;
btnInput:
TSpeedButton;
Label1:
TLabel;
Label2:
TLabel;
procedurebtnInputTotalClick(Sender:
TObject);
procedurebtnAddDetailClick(Sender:
TObject);
procedureFormCreate(Sender:
TObject);
procedurebtnDelInputTotalClick(Sender:
TObject);
procedureADOQuery1RecordChangeComplete(DataSet:
TCustomADODataSet;
constReason:
TEventReason;constRecordCount:
Integer;
constError:
Error;varEventStatus:
TEventStatus);
procedureDBGrid1CellClick(Column:
TColumn);
procedurebtnUpdateDetailClick(Sender:
TObject);
procedurebtnQuitClick(Sender:
TObject);
procedurebtnDelDetailClick(Sender:
TObject);
procedureADOQuery2RecordChangeComplete(DataSet:
TCustomADODataSet;
constReason:
TEventReason;constRecordCount:
Integer;
constError:
Error;varEventStatus:
TEventStatus);
procedureADOQuery2AfterOpen(DataSet:
TDataSet);
procedurebtnInputClick(Sender:
TObject);
private
{Privatedeclarations}
public
{Publicdeclarations}
end;
var
frmInput:
TfrmInput;
implementation
usesudb,uInputDetail,uInputList;
{$R*.dfm}
procedureTfrmInput.btnInputTotalClick(Sender:
TObject);
begin
ADOQuery1.Append;
iffrmInputList=nilthen
frmInputList:
=TfrmInputList.Create(nil);
frmInputList.ShowModal;
end;
procedureTfrmInput.btnAddDetailClick(Sender:
TObject);
begin
ifADOQuery1.FieldByName('isInput').AsBoolean=truethen
begin
MessageBox(handle,'该批次药品已经入库,不能再添加药品。
请重新填写入库单!
','提示',MB_ICONINFORMATION);
exit;
end;
ADOQuery2.Append;
iffrmInputDetail=nilthen
frmInputDetail:
=TfrmInputDetail.Create(nil);
frmInputDetail.ShowModal;
end;
procedureTfrmInput.FormCreate(Sender:
TObject);
var
strValue:
string;
begin
ADOQuery1.Active:
=true;
ifADOQuery1.RecordCount=0then
begin
btnDelInputTotal.Enabled:
=false;
btnAddDetail.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*frominput_detailwherenumber=:
number');
ADOQuery2.Parameters.ParamByName('number').Value:
=strValue;
ADOQuery2.open;
end;
procedureTfrmInput.btnDelInputTotalClick(Sender:
TObject);
begin
ifMessageBox(handle,'真的要删除此记录么?
','提示',mb_IconQuestion+mb_OkCancel)=idOkthen
ADOQuery1.Delete;
ifADOQuery1.RecordCount=0then
begin
btnDelInputTotal.Enabled:
=false;
btnAddDetail.Enabled:
=false;
end;
end;
procedureTfrmInput.ADOQuery1RecordChangeComplete(
DataSet:
TCustomADODataSet;constReason:
TEventReason;
constRecordCount:
Integer;constError:
Error;
varEventStatus:
TEventStatus);
varstrValue:
string;
begin
strValue:
=frmInput.ADOQuery1.FieldByName('number').AsString;
ADOQuery2.Close;
ADOQuery2.sql.Clear;
ADOQuery2.SQL.Add('select*frominput_detailwherenumber=:
number');
ADOQuery2.Parameters.ParamByName('number').Value:
=strValue;
ADOQuery2.open;
end;
procedureTfrmInput.DBGrid1CellClick(Column:
TColumn);
varstrValue:
string;
begin
strValue:
=frmInput.ADOQuery1.FieldByName('number').AsString;
ifADOQuery1.RecordCount=0then
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*frominput_detailwherenumber=:
number');
ADOQuery2.Parameters.ParamByName('number').Value:
=strValue;
ADOQuery2.open;
end;
procedureTfrmInput.btnUpdateDetailClick(Sender:
TObject);
begin
ifADOQuery1.FieldByName('isInput').AsBoolean=truethen
begin
MessageBox(handle,'该批次药品已经入库,不能再修改药品信息!
','提示',MB_ICONINFORMATION);
exit;
end;
ADOQuery2.Edit;
iffrmInputDetail=nilthen
frmInputDetail:
=TfrmInputDetail.Create(nil);
frmInputDetail.ShowModal;
end;
procedureTfrmInput.btnQuitClick(Sender:
TObject);
begin
close;
end;
procedureTfrmInput.btnDelDetailClick(Sender:
TObject);
begin
ifADOQuery1.FieldByName('isInput').AsBoolean=truethen
begin
MessageBox(handle,'该批次药品已经入库,不能删除药品信息!
','提示',MB_ICONINFORMATION);
exit;
end;
ifMessageBox(handle,'真的要删除此记录么?
','提示',mb_IconQuestion+mb_OkCancel)=idOkthen
ADOQuery2.Delete;
ifADOQuery2.RecordCount=0then
begin
btnUpdateDetail.Enabled:
=false;
btnDelDetail.Enabled:
=false;
end
else
begin
btnUpdateDetail.Enabled:
=true;
btnDelDetail.Enabled:
=true;
end;
end;
procedureTfrmInput.ADOQuery2RecordChangeComplete(
DataSet:
TCustomADODataSet;constReason:
TEventReason;
constRecordCount:
Integer;constError:
Error;
varEventStatus:
TEventStatus);
begin
ifADOQuery2.RecordCount=0then
begin
btnUpdateDetail.Enabled:
=false;
btnDelDetail.Enabled:
=false;
end
else
begin
btnUpdateDetail.Enabled:
=true;
btnDelDetail.Enabled:
=true;
end;
end;
procedureTfrmInput.ADOQuery2AfterOpen(DataSet:
TDataSet);
begin
ifADOQuery2.RecordCount=0then
begin
btnUpdateDetail.Enabled:
=false;
btnDelDetail.Enabled:
=false;
end
else
begin
btnUpdateDetail.Enabled:
=true;
btnDelDetail.Enabled:
=true;
end;
end;
procedureTfrmInput.btnInputClick(Sender:
TObject);
var
Query:
TADOQuery;
i:
integer;
begin
if(ADOQuery1.RecordCount=0)or(ADOQuery2.RecordCount=0)then
begin
MessageBox(handle,'当前没有可入库的药品','提示',MB_ICONINFORMATION);
exit;
end;
ifADOQuery1.FieldByName('isInput').AsBoolean=truethen
begin
MessageBox(handle,'该批次药品已经入库','提示',MB_ICONINFORMATION);
exit;
end;
try
Query:
=TADOQuery.Create(nil);
Query.Connection:
=dm.ADOConnection1;
Query.SQL.Add('select*fromstore;');
Query.Open;
ADOQuery2.First;
fori:
=0toADOQuery2.RecordCount-1do
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:
=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.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('isInput').AsBoolean:
=true;
ADOQuery1.Post;
MessageBox(handle,'药品入库成功!
','提示',MB_ICONINFORMATION);
btnAddDetail.Enabled:
=false;
btnUpdateDetail.Enabled:
=false;
btnDelDetail.Enabled:
=false;
end;
end.
2.
unituInputDetail;
interface
uses
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 医药 库存 管理