王I
—
图4.25
图4.26为物料库存治理:
图4.26
图4.27为物料需求分析界面:
图4.27
2.4订单治理模块
图4.28为订单治理界面:
►
20171051
A1011
60
Z017-11-12
2017-11-12
20171052
B5011
70
2017-11-12
2017-11-12
己入库
20171052
B5011
70
201711-12
201711-12
有效
20171054.
C5011
70
2017-11-12
2017-1112
有效
20171055
C5012
70
2017-11-12
2017-11-12
有效
20171056
C5013
70
2017-11-12
2017-11-12
有效
订购卑号|物科编号|订炖数星|下車时间
|应衣期眼
|当前伏态
图4.28
2.5用户治理模块
图4.29为用户治理界面,包括注册、修改密码、权限设置
图4.29
3-数据库设计
数据库设计如下:
客户订单文件表oderform
字段名称
字段描
述
数据类型
字段长
度
是否主
键
同意为
空否
Oderno
订单号
Char
10
Y
N
Pno
产品编
Char
10
N
N
号
Pnum
订单总
量
Int
4
N
N
Pselfnum
自产量
Int
4
N
N
Pbuynum
外购量
Int
4
N
N
Odert
下单日
期
Datetime
8
N
Y
Delit
交货日
期
Datetime
8
N
Y
State
当前状
态
Datetime
10
N
Y
物料需求订单文件表matelist
字段名称
字段描
述
数据类型
字段长
度
是否主
键
同意为
空否
Mino
订单编
号
Char
10
Y
N
Mno
物料编
号
Char
10
N
Y
Mlnum
订购数
Int
4
N
Y
量
Mltime
订购日
期
Datetime
8
N
Y
Mlvivtime
有效期
至
Datetime
8
N
Y
Remark
备注
Char
30
N
Y
物料库存文件表matestor
字段名称
字段描
述
数据类型
字段长
度
是否主
键
同意为
空否
Mno
物料编
号
Char
8
Y
X
Mname
物料名
称
Char
10
N
Y
Mlayer
所属层
次
Int
4
N
Y
Mpreno
上层编
号
Char
8
N
Y
Mprenum
上层需
求
Int
4
N
Y
Mtnum
库存总
量
Int
4
N
Y
Mvnum
可用数
量
Int
4
N
Y
Mwnum
将要入
库量
Int
4
N
Y
Secnum
安全库
存
Int
4
N
Y
Mut
计量单
位
Char
4
N
Y
Mfinish
成品率
Float
8
N
Y
Madvant
提早期
Int
4
N
Y
Avat
生效日
期
Datetime
8
N
Y
Invat
失效日
期
Datetime
8
N
Y
Remark
备注
Char
30
N
Y
物料分析临时表tempinfo
字段名称
字段描
述
数据类型
字段长
度
是否主
键
同意为
空否
Dtime
需求日
期
Datetime
8
N
N
Dmno
物料编
号
Char
8
N
N
Dmname
物料名
称
Char
10
N
N
Dmlayer
所属层
次
Int
4
N
N
Dmadvantt
提早期
Int
4
N
N
Dpreno
上层编
号
Char
8
N
N
Dprenum
上层需
求
Int
4
N
N
Dmfinish
成品率
Float
8
N
N
Dvnum
可用数
量
Int
4
N
N
Dwnum
将要入
库量
Int
4
N
N
Dsnum
安全库
存
Int
4
N
N
Ddtnum
毛需求
量
Int
4
N
N
Ddnetnum
净需求
量
Int
4
N
N
dselfn
自产量
Int
4
N
Y
dbuyn
外购量
Int
4
N
Y
用户信息表userinfo
字段名称
字段描述
数据类型
字段长
度
是否主
键
同意为
空否
Username
用户名
Char
10
Y
N
Passswd
用密码
Char
10
N
N
Uright
用户权限
Char
10
N
Y
Lastit
最近登录
时刻
Datetime
8
N
Y
Lastot
最近登出
时刻
Datetime
8
N
Y
Remark
备注
Char
30
N
Y
三.实施时期
1.实现方案
以一个简化了的自行车产品来讲明,其库存状态书记库如上图所示。
其结构示意图为:
0层
1
层
2层
差不多的物料打算步骤为:
(1)确定自行车的总需求、净需求和打算定单下达的时刻;
(2)依照上层的结果,确定第1层上所有物料的净需求和打算定单下达的时刻;
(3)依照上层车轮的结果,确定第2层上所有物料的净需求和打算定单下达的时刻。
其中用到的公式有:
期打算入库量+安全库存
不考虑批量问题,则t-L周期计算打算订单下达数量等于t周期
净需求量,即:
R(t-L)=N(t)
2•系统开发、调试与运行
2.1登录模块设计
界面如图
要紧程序代码为:
unitLogin;var
fmLogin:
TfmLogin;implementationusesdatamd,Main;
{$R*.dfm}
//////////////////////自定义过程,验证用户///////////////////////////////procedureTfmlogin.userjug(u,p,r:
string);
varupsql,upsql2:
string;
begin
ifu二'1then
begin
showmessage('用户名不能为空,请输入用户名!
');edtun.setfocus;
end
elseifp二''then
begin
showmessage(r密码不能为空,请输入密码!
');
edtpw.setfocus;
end
else
begin
upsql:
二'selectusernm,passwd,urightfromuserinfowhereusernm=++u++andpasswd二++p++
anduright=,+*1**+r+f111;
userinfo
where
lastit=r+1111+datetostt(Now)+''''+
F.IIIf..ffff
usernm=++u+;
try
dtmd.qryup.Close;
dtmd.qryup.SQL.Clear;
dtmd.qryup.SQL.Add(upsql);
dtmd.qryup.Open;
ifnotdtmd.qryup.Eofthen//用户合法,则进入系统
begin
dtmd.qryup.Close;//更新用户的最近登
录时刻
dtmd.qryup.SQL・Clear;
dtmd.qryup.SQL・Add(upsql2);
dtmd.qryup.ExecSQL;
fmMain.RzGroupl.Visible:
=false;
fmMain.RzGroup2.Visible:
=true;
fmMain.RzGroup2.Opened:
=true;fmMain.RzGroup3.Visible:
=true;
31/98
fmMain.RzGroup4.Visible:
=true;
fmMain.RzGroup5.Visible:
=true;
fmMain.RzGroup5.Visible:
=true;
fmMain.pu:
=u;
fmMain.pp:
二p;
fmMain.pr:
=r;
fmMain.sttb.Panels[0].Text:
=fmMain.pu;
fmLogin.Close;
end
else
begin
showmessage(*用户名或密码错误!
1);
edtun.SetFocus;
end
except
showmessage('连接数据库失败,请检查数据库服务是
否正常!
');
end;
end;
end;
//////////////////////////////退出登录
/////////////////////////////////
procedureTfmLogin.btnextClick(Sender:
TObject);
begin
self.Close;
end;
//////////////////////////////登录按钮
////////////////////////////////
procedureTfmLogin.btnlgClick(Sender:
TObject);
varri:
string;
begin
ifself.rbu.Checkedthen
ri:
=fuser1
elseifself.rba.Checkedthen
ri:
=fadmini';
userjug(trim(edtun.Text),trim(edtpw.Text),ri);end;
////////////////////用户名和密码文本框里回车
/////////////////////////
procedureTfmLogin.edtunKeyPress(Sender:
TObject;var
Key:
Char);
varri:
string;
begin
ifkey二#13then
begin
ifself.rbu.Checkedthen
ri:
=,userF
elseifself.rba.Checkedthen
ri:
二'admini';
userjug(trim(edtun.Text),trim(edtpw.Text),ri);
end;
end;
end.
2.2订单治理
界面如图5.42
35/98
®5・42
unitoderform;
var
fmoderfornkTfmoderform;
implementation
usesdatamd・Main;
亠SR*dfm)
二二二二二二二二二三二二二恥^^禅蔺崑嵐井函肚就
36_98
///////////////////////
procedureTfmOderform.cbpbdpd(tet:
string);
var
i,j:
integer;
osql:
string;
begin
withdtmd.qryofmdo
begin
osql:
=fselectdistinct'+tet+‘fromoderform1;
〃查询唯一值
try
Close;
SQL・clear;
SQL.Add(osql);
Open;
fmOderform.dbno.DataSource:
=nil;
fmOderform.dbgo.DataSource:
=nil;
First;
i:
=RecordCount;
forj:
二0toi-1do//循环赋值
begin
ifm=lthen
cbnol.Items.Add(FieldByName(fodernor).AsString)
elseifm=2then
cbno2.Items.Add(FieldByName(fodernor).AsString);
Next;
end;
except
showmessageC数据库连接失败!
请检查数据库服务
是否正常!
');
end;
end;
end;
procedureTfmOderform.btnexitClick(Sender:
TObject);
begin
self.Close;
end;
procedureTfmOderform.cbnolDropDown(Sender:
TObject);begin
m:
=1;
self,cbnol.Items.Clear;
self,cbpbdpd(foderno1);
end;
procedureTfmOderform.cbno2DropDown(Sender:
TObject);begin
m:
=2;
self.cbno2・Items.Clear;
self,cbpbdpd(foderno1);
end;
H匸================================屮
procedureTfmOderform.btnsearClick(Sender:
TObject);
var
ssql,cdt:
string;
begin
ssql:
=,selectodernoas订单号,pnoas产品编号,mnameas产品名称,pnumas订购量,odertas订购日期,delitas交货日期,stateas当前状态fromoderform,matestorwheremno=pnoandpno〈>'+‘'''+'
ifcbnol.TextO*1thencdt:
=,andoderno>=,+*'1*+trim(cbno1.Text)+r'*1;
ifcbno2.TextO**thencdt:
二cdt+‘and
oderno<=,+*'1*+trim(cbno2.Text)+f''';
ifdatetostr(dtpl.Date)<>frthencdt:
=cdt+'anddelit>=,+,''*+datetostr(dtpl.DateTime)+'*11;
ifdatetostr(dtp2.Date)<>frthencdt:
=cdt+'anddelit<='+‘''*+datetostr(dtp2.DateTime)+*''';
ifcbnm.TextO**thencdt:
二cdt+‘and
pno二11+trim(cbnm.Text)+***1;
ifcbst.TextO**thencdt:
二cdt+‘and
state二1+trim(cbst.Text)+*f11;
ssql:
二ssql+cdt;
withdtmd.qryofmdo