用Delphi和SQL Server建立生产管理系统的研究与探讨论文.docx
《用Delphi和SQL Server建立生产管理系统的研究与探讨论文.docx》由会员分享,可在线阅读,更多相关《用Delphi和SQL Server建立生产管理系统的研究与探讨论文.docx(46页珍藏版)》请在冰点文库上搜索。
用Delphi和SQLServer建立生产管理系统的研究与探讨论文
【摘要】
生产部门如果没有专业化管理的工具,都会受到如周期、库存、人力、发货、废品、引入新产品和满足客户要求等问题的困扰。
如果没有一个有效的计划,生产部门对以上这些问题以及其他一些类似的问题是很难回答的。
由于缺乏公认的专业工具和知识体系以及其有效系统,也很难准确的衡量生产部门的工作业绩。
由此可见,生产管理系统的引入迫在眉睫。
在应用生产管理系统的环境下,在制定销售与运作规划时先要通过资源计划来估算为生产一定数量的某类产品所需的资源,以保证销售与运作规划的合理性。
【关键词】生产部门问题生产管理系统
目录
摘要1
0引言1
1系统分析2
1.1需求分析2
1.2可行性分析2
2总体设计2
2.1项目规划2
2.2系统功能架构图3
3系统设计3
3.1设计目标3
3.2开发及运行环境4
3.3数据库设计4
4主要功能模块设计4
4.1数据模块设计4
4.2主窗体设计7
4.3系统登录设计11
4.4产品物料清单的录入与维护模块设计13
4.5生产产品确认完工入库模块设计22
附录A参考文献34
附录B数据表35
附录C文件架构图38
0引言
20世纪60年代以来,一种以“既要降低库存,又要不出现物料短缺”的计划方法逐渐发展起来,主要解决间歇生产的生产计划和控制问题。
在间歇生产的情况下,如何保证生产计划的高校运行,保证及时供应物料以满足生产需要,是生产管理中的重要问题,这个问题处理不好,就会造成又库存积压,又物料短缺的情况。
目前,无论是企业还是工厂都实行了信息化管理,以提高管理水平和工作效率,同时也可以最大限度的减少手工操作带来的错误。
于是生产管理系统应运而生。
随着我国改革开放的不断深入,企业发展已经从面向区域市场转向面对国内外广阔的市场。
过去长期采用的传统手工或手工加微机的管理方式已无法对经营过程中多层次、多品种、多批量的生产计划进行管理,也无法对任何一种产品生产全过程的动态信息进行管理。
各部门之间的信息传递不流畅,而且大量冗余,决策者常常得不到他们所需要的准确信息,结果造成了生产过程中库存、资金严重积压,原材料时常短缺,零部件生产不配套,计划不准确等不良现象。
这在很大程度上影响了公司的进一步发展。
本系统正是在这种背景之下提出的。
本系统的功能特点集中表现在:
❑提高了企业的经营质量和效率。
❑降低了企业的生产成本,增强了企业的市场竞争力。
❑强化了企业的资金流管理,提高了资金利用率。
❑优化生产管理,疏通生产渠道。
❑提高了生产效率。
1系统分析
1.1需求分析
通过调查,要求系统需要有以下功能:
❑有良好的人机界面。
❑有较好的权限管理。
❑完全人性化设计,无需专业人士指导,即可使用该系统。
❑系统具有数据备份及数据还原功能。
能够保证系统数据的安全性。
❑方便的全方位的数据查询。
❑在相应的权限下,删除数据方便简单,数据稳定性好。
❑数据计算自动完成,尽量减少人工干预。
❑强大的报表打印功能。
❑系统退出。
1.2可行性分析
现在的许多中小型企业用的都是纸和笔的人工管理方式,这样的管理即困难又浪费时间和成本,还很容易出错。
所以应该走大型企业先进的管理方式,从而提高企业的效率和降低成本。
用Delphi和SQLServer来完成这个系统的功能,根据企业管理现状和需求开发的生产管理系统。
解决生产过程中零件配套、物资配套、库存积压等问题,同时提高生产管理的水平,降低库存成本、提高生产效率方面起到显著作用。
2总体设计
2.1项目规划
生产管理系统是一个典型的数据库开发应用程序,由产品物料清单管理模块、生产订单管理模块、生产领料管理模块、生产产品管理模块、质量检验模块、查询系统模块、系统管理模块、关于模块等部分组成,规划系统功能模块如下:
❑产品物料清单管理模块
该模块主要负责物料的录入与维护;产品物料清单的录入与维护。
❑生产订单管理模块
该模块主要负责生产订单录入与维护。
❑生产领料管理模块
该模块主要负责生产领料单的生成与维护。
❑生产产品管理模块
该模块主要负责生产产品确认完工的入库。
❑质量检验模块
该模块主要负责入库产品的检验。
❑查询打印系统模块
该模块主要负责生产产品物料清单、生产订单、生产领料单、生产产品入库的查询及打印。
❑系统管理模块
该模块主要负责操作员管理、修改密码、修改权限、数据备份与恢复、系统初始化。
❑关于模块
该模块主要负责重新登录、退出系统。
2.2系统功能架构图
图1系统功能架构图
3系统设计
3.1设计目标
本系统属于小型的数据库系统,为了对中小型企业生产的管理,实现一些初步的计算机化管理。
通过本系统可以达到以下目标:
❑灵活的运用表格批量输入数据,使信息传递更快捷。
❑系统采用人机对话方式,界面美观友好、信息查询灵活、方便、快捷、准确、数据存储安全可靠。
❑键盘操作,快速响应。
❑实现各种查询及打印等。
❑实现物料的入库、生产产品的入库、入库产品检验等功能。
❑操作员可以随时修改自己的口令。
❑管理员可以设置操作员的权限。
❑对用户输入的数据,系统进行严格的数据检验,尽可能排除人为的错误。
❑为每个用户设置权限级别,数据保密性强。
❑系统最大限度地实现了易安装性、易维护性和易操作性。
❑系统运行稳定、安全可靠。
3.2开发及运行环境
系统开发平台:
Delphi7.0。
数据库管理系统软件:
SQLServer2000。
运行平台:
Windowsxp/Windows2000。
分辨率:
最佳效果1024*768。
3.3数据库设计
本系统数据库采用SQLServer2000数据库,系统数据库名称为“LB_scglxt”。
数据库共包含7张表。
下面分别给出数据表概要说明及数据表的结构。
1.数据表概要说明
如图2所示的即为本系统中数据库中的数据表的树形结构图,该数据表树型结构图包含系统所有数据表。
可以清晰地反应数据库信息。
图2数据表树型结构图
2.数据表的结构
由于篇幅所限,关于数据库中的数据表请参见附录B
4主要功能模块设计
4.1数据模块设计
为了节省系统资源,实现代码重用,可以在系统中新建一个Modulel模块。
就本系统而言,该模块主要用于共享数据库连接。
数据模块窗体主要功能是连接和处理数据的数据库组件统一规范管理的模块,在设计期间数据模块是以窗体的形式显示在界面中的,但是不可以向数据模块中加入可视化组件,因为该模块不会在系统运行时显示出来。
数据模块如图3所示。
图3数据模块
1.数据模块创建
(1)在Delphi中选择“File/New/DataModule”菜单项,新建一个数据模块,命名为“DATA”。
(2)在“ADO”组件页中点选“TADOConnection”组件,添加到窗体上,命名为“ADOConnection1”。
TADOConnection组件用于连接数据库,其他数据库组件通过它连接数据库。
(3)点选ADOConnection1组件,在“ObjectInspector”窗口中,单击ConnectionString属性右侧的【…】按钮,弹出对话框如图4所示。
图4设置连接字符串
(4)单击【Build】按钮,在弹出的对话框中的“提供程序”选项卡中设置希望连接的数据,如图5所示。
图5选择驱动程序
(5)选择“连接”选项卡,设置连接相关设置,如图6所示。
图6数据库连接设置
(6)单击【测试连接】按钮,如果连接成功,则提示成功,单击【确定】按钮完成数据库的连接。
(7)在窗体上添加TADOQuery组件,分别命名为“ADOa”、“ADOb”、“ADOc”、“ADOd”、“ADO_user”、“ADO_bb”设置它们的Connection属性为“ADOConnection1”。
4.2主窗体设计
主程序窗体设计的好坏往往会影响系统的整体形象,因此应首先设计好主程序窗体。
同时,主程序窗体也是程序控制的核心,操作权限、程序功能调用等都要通过主程序窗体调用实现。
生产管理系统主窗体运行结果如图7所示。
图7主窗体运行结果
1.窗体设计步骤
(1)运行Delphi会自动创建一个窗体,设置该窗体为程序主窗体。
在“Additional”组件页中点选“TActionManeger”组件,添加到窗体上。
双击该组件打开动作编辑器。
如图8所示。
图8显示TActionManeger编辑器
(2)在“Standard”组件页中点选“TMainMenu”组件,添加到窗体上双击该组件弹出菜单编辑器,如图9所示。
图9显示TmainMenu编辑器
(3)在“ObjectInspector”窗口中,在Action属性中选择相应的图10中Action文本框中动作项的命名名称。
如图11所示。
图10添加TMainMenu对象图11N1的Action属性
(4)在“Win32”组件页中点选“TStatusBar”组件,添加到窗体上。
如图12所示。
图12面板编辑器
(5)在“Standard”组件页中点选“TPanel”组件,添加到窗体上。
在“Additional”组件页中点选“TImage”组件,分别添加到相应的TPanel中。
在“Additional”组件页中选择“TSpeedButton”组件,在“Image3”中添加14个。
在“System”组件页中选择“TTimer”组件,添加到窗体上。
在“Image2”组件上添加8个TLabel组件。
(6)重要组件的相关属性设置如表1所示。
表1组件相关属性设置
对象名
对象类型
属性
值
FRM_ERP_ZJM
TForm
Caption
生产管理系统
Borderlcons中的biMaximize
False
Position
poScreenCenter
SpeedButton1-14
TSpeedButton
Flat
True
Panel1-Panel3
TPanel
BevelInner
bvNone
BevelOuter
bvNone
2.程序相关代码
在implementation上面定义公共变量。
代码如下:
var
FRM_YHDL:
TFRM_YHDL;
jj:
integer=0;
implementation
ttp()函数主要设置窗体上功能按钮不可见。
代码如下:
procedureTFRM_ERP_ZJM.ttp(tt:
integer);
begin
SpeedButton1.Visible:
=false;
SpeedButton2.Visible:
=false;
SpeedButton3.Visible:
=false;
SpeedButton4.Visible:
=false;
SpeedButton5.Visible:
=false;
SpeedButton6.Visible:
=false;
SpeedButton7.Visible:
=false;
SpeedButton8.Visible:
=false;
SpeedButton9.Visible:
=false;
SpeedButton10.Visible:
=false;
SpeedButton11.Visible:
=false;
SpeedButton12.Visible:
=false;
SpeedButton13.Visible:
=false;
SpeedButton14.Visible:
=false;
end;
在主窗体显示之前首先显示登录窗体,并将相应的TSpeedButton按钮显示在用户区的桌面上。
主窗体的OnShow事件代码如下:
procedureTFRM_ERP_ZJM.FormShow(Sender:
TObject);
begin
jj:
=0;
APPLICATION.CreateForm(TFRM_YHDL,FRM_YHDL);
FRM_YHDL.ShowModal;
FRM_YHDL.Free;
ttp
(1);//此函数使所有的TspeedButton组件的Visible属性为“False”。
speedbutton1.Action:
=Action2;//将动态项的OnExecute事件给speedbutton1
speedbutton2.Action:
=Action3;//将动态项的OnExecute事件给speedbutton2
SpeedButton1.Caption:
='';
SpeedButton2.Caption:
='';
end;
双击TActionManeger组件打开动作编辑器。
在“Actions”选项卡的Action文本框中双击“物料的录入与维护”。
动作项“Action2”的OnExecute事件代码如下:
procedureTFRM_ERP_ZJM.Action2Execute(Sender:
TObject);
begin
ifa[1]='1'then//数组a[]在MRYHDL单元中定义的,如果为1则有权进入
begin
application.CreateForm(TFRM_CLXX,FRM_CLXX);//动态生成窗体
FRM_CLXX.ShowModal;//显示窗体
FRM_CLXX.Free;//释放窗体
end
else
showmessage('超出权限');//超出权限时显示提示框
emd;
在Label1的OnClick事件处理过程中,先清空Timage组件的Picture所加载的图片,然后加载指定的图片。
其代码如下:
procedureTFRM_ERP_ZJM.Label1Click(Sender:
TObject);
begin
image2.Picture.CleanupInstance;//清空image2所加载的图片
image3.Picture.CleanupInstance;
chdir(ExtractFilepath(Application.ExeName));
image2.Picture.LoadFromFile('Image\1\2.jpg');
image3.Picture.LoadFromFile('Image\1\3.jpg');
ttp
(1);
speedbutton1.Action:
=Action2;
speedbutton2.Action:
=Action3;
SpeedButton1.Caption:
='';
SpeedButton2.Caption:
='';
end;
在Ttimer组件的OnTimer事件处理过程中,设置状态栏中显示的时间,其代码如下:
procedureTFRM_ERP_ZJM.Timer1Timer(Sender:
TObject);
begin
StatusBar1.Panels[5].Text:
=''+timetostr(gettime());
end;
4.3系统登录设计
系统登录主要用于对进入生产管理系统的用户进行安全性检查,以防止非法用户进入该系统。
只有合法的用户,才可以进入系统,同时根据管理员分配的权限,给予这个操作员相应的操作权限。
验证操作员及其密码,主要通过对数据表tb_user的查询,判断用户选定的操作员及其输入的密码是否符合数据库中的操作员和密码,如果符合则允许登录,并给予相应的权限;否则提示用户非法登录。
生产管理系统登录模块运行结果如图13所示。
图13系统登录模块运行结果
1.窗体设计步骤
(1)选择“File”/“New”/“Form”菜单项,新建一个窗体,命名窗体为“FRM_YHDL”,设置Caption属性为“登录”;设置BorderStyle属性为“bsNone”;设置Position属性为“poScreenCenter”。
(2)在“Standard”组件页中点选“TPanel”组件,添加到窗体上,设置Align属性为“alClient”;设置BorderStyle属性为“bsSizeable”;设置Position属性为“poScreenCenter”。
(3)在“Additional”组件页中点选“TImage”组件,添加到TPanel组件上,设置Align属性为“alClient”;设置Picture属性为组件加载图片。
(4)在“Standard”组件页中点选TEdit组件,在窗体上添加2个TEdit组件。
分别命名为“Edit1”、“Edit2”,设置它们的Ctl3D属性为“False”,Edit2组件的PassWordChar属性为“*”。
(5)在“Additional”组件页中点选“TSpeedButton”组件,在窗体上添加2个,设置它们的Caption属性为空,设置Flat属性为“True”,设置相应的大小,覆盖图片上的“登录”和“退出”按钮。
2.程序相关代码
定义公共变量。
代码如下:
var
FRM_YHDL:
TFRM_YHDL;
dl,p:
integer;
yhmc,ppl:
string;
a:
array[1..11]ofstring;//定义数组
implementation
【登录】按钮的OnClick事件处理过程中,首先要确定用户名和密码是否正确,如果正确则判断jj是否等于1,如果等于1,则调用重新登录窗口。
否则是调用登录窗口,登录窗口只能输入3次用户名及密码,超出则退出本系统,在登录成功后给各窗体赋值用户的相应权限。
其代码如下:
procedureTFRM_YHDL.SpeedButton1Click(Sender:
TObject);
var
P:
INTEGER;
Begin
withdata.ADOcdo//查找用户名和密码正确的信息
begin
close;
sql.Clear;
sql.Add('select*fromtb_userwhereczyname=:
aandczymm=:
b');
Parameters.ParamByName('a').Value:
=Trim(Edit1.Text);//将用户名赋值给变量a
Parameters.ParamByName('b').Value:
=Trim(Edit2.Text);//将密码赋值给变量b
open;
end;
ifdata.ADOc.RecordCount>0then//判断查询结果是否有信息
begin
yhmc:
=data.ADOc.fieldbyname('czyname').AsString;//将用户名赋给变量yhmc
forp:
=1to11do//将用户的权限赋值给数组
begin
ppl:
=inttostr(p);
a[p]:
=data.ADOc.fieldbyname(ppl).AsString;
end;
ifjj=1then//判断jj=1时,为重新登录,否则为登录窗体
begin
self.Close;
FRM_ERP_ZJM.StatusBar1.Panels.Items[1].Text:
=''+'操作员名称:
'+yhmc;
end
else
begin
SElf.Close;
FRM_ERP_ZJM.StatusBar1.Panels.Items[1].Text:
=''+'操作员名称:
'+yhmc;
end;
end
else
begin
showmessage('操作员名称、密码不正确'+#13+'请重新输入。
');
edit1.Clear;
edit2.Clear;
dl:
=dl+1;
end;
ifjj<>1then
begin
ifdl=4then//判断登录的错误不能大于3次,如果大于则退出本系统
begin
FRM_ERP_ZJM.Close;
end;
end;
end;
在【退出】按钮的OnClick事件处理过程中,如果jj=1则为重新登录的【退出】按钮,只关闭本窗体。
否则为登录的【退出】按钮,退出整个系统。
其代码如下:
procedureTFRM_YHDL.SpeedButton2Click(Sender:
TObject);
begin
ifjj=1then
FRM_YHDL.Close
else
APPLICATION.Terminate;//关闭所有窗体,即关闭本系统
end;
在.Edit1组件的OnKeyDown事件处理过程中,如果在edit1上按〈Enter〉键,则光标停留在edit2中。
其代码如下:
procedureTFRM_YHDL.Edit1KeyDown(Sender:
TObject;varKey:
Word;
Shift:
TShiftState);
begin
ifkey=vk_returnthen
edit2.SetFocus;
end;
4.4产品物料清单的录入与维护模块设计
产品物料清单的录入与维护模块主要是对产品所用物料信息的添加、修改和删除。
产品物料清单的录入与维护模块运行结果如图14所示。
图14产品物料清单的录入与维护模块
1.窗体设计步骤
(1)选择“File/New/Form”菜单项,新建一个窗体。
在“Win32”组件页中点选“TImageList”组件,添加到窗体上。
在“Standard”组件页中点选“TPanel”组件,添加到窗体上。
设置相应的大小。
在“Win32”组件页中点选“TToolBar”组件,添加到TPanel组件上,在TToolBar组件上单击右键,在弹出的菜单中单击“NewButton”菜单项,添加工具栏按钮。
如图15所示。
图15工具栏按钮属性
(2)在“DataAccess”组件页中点选“TDataSource”组件,添加到窗体上。
在“Win32”组件页中点选“TPageControl”组件,添加到窗体上,命名为“PageControl1”。
在PageControl1组件上单击右键,在弹出的菜单中选择“NewPage”菜单项,创建两个页。
在“Standard”组件页中点选“TPanel”组件,添加到TabSheet1页中,其相关属性设置,如图16所示。
图16Panel1属性设置
(3)在“Standard”组件页中点选“TLabel”组件,添加到Panel1组件上。
在“Standard”组件页中点选“TEdit”组件,添加到Panel1组件上。
在“Standard”组件页中点选“TComboBox”组件,添加到Panel1组件上。
在“Standard”组件页中点选“TPanel”组件,添加到TabSheet2页中。
(4)在“DataControls”组件页中点选“TDBGrid”组件,添加到Pane