医药店库存管理.docx

上传人:b****5 文档编号:7921782 上传时间:2023-01-27 格式:DOCX 页数:47 大小:88.04KB
下载 相关 举报
医药店库存管理.docx_第1页
第1页 / 共47页
医药店库存管理.docx_第2页
第2页 / 共47页
医药店库存管理.docx_第3页
第3页 / 共47页
医药店库存管理.docx_第4页
第4页 / 共47页
医药店库存管理.docx_第5页
第5页 / 共47页
点击查看更多>>
下载资源
资源描述

医药店库存管理.docx

《医药店库存管理.docx》由会员分享,可在线阅读,更多相关《医药店库存管理.docx(47页珍藏版)》请在冰豆网上搜索。

医药店库存管理.docx

医药店库存管理

一.需求分析

医院的药房是医院里面一个很繁忙的科室,每天有很多的病人要从药房拿药取药,又不断有药品补充进去,每天药品的流量是很大的。

如果只用人工的方法去统计是不可能的,这样会大大影响到医生护士对病人的治疗。

为了解决这个矛盾,实现科学化、现代化的医院药房管理,我们就必须设计开发药房管理信息系统,并用于实践。

而医药管理系统是对医药信息进行管理的计算机网络软件系统,它可完成医院中各类药品信息的收集、存储、使用,是融合了医院的管理思想、各部门的业务经验,以及对计算机技术的恰当运用的软件开发成果。

在医疗卫生领域,信息化概念的引入,尤其是医院信息系统的应用,大大改变了医院的管理模式和工作流程,对提高医院的管理水平、质量效益、经济效益、社会效益起到了巨大地促进作用。

目前医药管理系统地应用已成为医院管理地重要工具和手段,它的引入有助于改变传统的工作方式,提高工作效率;提高经济效益;加强过程控制,提高医药管理质量;提高医院信誉,增强竞争能力;实现卫生资源共享;强化医院的科学管理。

主要有四个功能:

(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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 工学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1