加急见刊

仓库管理系统的VISAUL FOXPRO实现 (中)

未知  2008-07-21

3. 4 数据库结构的实现 在需求分析、概念结构设计的基础上得到数据库的逻辑结构设计之后,我们就可以在Visual FoxPro6.0数据库系统中实现该逻辑结构。

打开如图所示的“仓库管理”项目后,在项目管理器中展开数据文本夹,用鼠标选中数据库,单击右侧的“新建”按钮,在弹出的对话框中将该数据库文件存储为c:仓库管理仓库管理.dbc。 在弹出的如图所示的数据库设计器中单击鼠标右键,选择“新建表”,为数据库添加数据表(表的内容见上节)。下面以表设备代码表为例来介绍表的建立过程。 选择“新建表”,在弹出的对话框中将表存储为c:仓库管理设备代码.dbf 。在弹出的如图所示的表设计器中填写表的内容。

字段设置完成后,单击“确定”按钮后为表输入数据,如不想现在输入,可以先“取消”,以后再输入。具体方法如下:

(1) 如图所示,选中要输入数据的表,单击“浏览”按钮。 (2) 此时弹出无数据的表,在Visual FoxPro6.0的主窗口中选择“表”,选择“追加新记录”后,就 可以在表中输入数据了。如图所示。不过这种方法只能一次输入一条记录,如果要输入第二条记录时,需再次选择追加新记录。如果有一个已有的数据表,就可以使用“使用追加记录”将这个有数据的表追加到当前表中,不过执行该操作要求这二个表的结构完全相同。

第四章 系统主要功能模块的创建 按照前面的分析,我们将管理系统的逻辑模块统一到6个实际功能模块中,如图所示。切换面板用于切换不同的操作,每项具体操作结束后,都会返回到切换面板。

下面对各模块的作用进行说明: (1) 设备入库模块:添加设备到库存中。 (2) 设备出库模块:将设备从库存取出并记录。 (3) 设备还库模块:将归并到库存的设备保存到数据库。 (4) 设备需求模块:记录各部门的设备需求。 (5) 设备采购模块:记录要采购的设备。 (6) 切换面板:用于切换到不同的操作,如设备入库、设备出库等。 (7) 显示报表:显示库存过多、库存不足等信息。 下面就按照功能模块图来设计该仓库管理系统。首先在Visual FoxPro6.0中建立一个项目管理器,以便管理本系统中所有的数据,命名为“仓库管理”。一下操作均在该项目管理器中进行。以下所有表单的“desktop”属性全部设为“.T.-真”。 4.1功能选择界面的设计: 这一模块的主要功能是作为系统主界面为进入本系统不同功能界面选择提供一个接口,使用一个窗口来实现这一功能。 首先建立一个表单,设取“caption”属性为“仓库管理”。在该表单上添加6个“按钮”控件,它们的“caption”属性分别为“设备入库”,“设备出库”,“设备还库”,“部门需求”,“设备采购”,“显示报表”。然后在表单上添加“图象控件”,并设其“stretch”属性为“2-strech(扩展)”,“pictrue”属性为图片所在的位置,本例中为“c:仓库管理01.jpg”。 在“comm.and1”(“caption”属性为“设备入库”)控件的“click”事件中添加如下代码: do form 设备入库表 thisform.release 在“comm.and2”(“caption”属性为“设备出库”)控件的“click”事件中添加如下代码: do form 设备出库表 thisform.release 在“comm.and3”(“caption”属性为“设备还库”)控件的“click”事件中添加如下代码: do form 设备还库表 thisform.release 在“comm.and4”(“caption”属性为“部门需求”)控件的“click”事件中添加如下代码: do form 部门需求表 thisform.release 在“comm.and5”(“caption”属性为“设备采购”)控件的“click”事件中添加如下代码: do form 设备采购表 thisform.release 在“comm.and6”(“caption”属性为“显示报表”)控件的“click”事件中添加如下代码: do form 显示报表 thisform.release 在“form1”的属性里选择“autocenter”设置为“.T.-真”,同时将“backcolor” 设置为“255,255,255”,“windowstate”设置为“0-普通”。 添加“form1”的“init”事件的代码如下: set directory to c:仓库管理

4.2 设备入库模块的设计 在设备入库模块中将实现设备数据的添加和入库等功能。本模块设计采用先用向导生成表单,然后修改的方法实现。 首先在项目管理器的文档视图下单击“新建”按钮,

在接下来的向导中,“数据库和表”选择“仓库管理”以及“设备入库表”,这是前面定义好的数据库和表。 由于设备入库需要显示所有的字段,因此我们将可用字段全部移至选定字段,如图所示,单击“下一步”按钮,

在表单样式中,选择“阴影式”以及“图片按钮”,如图所示。左上角的窗口提供了表单样式的预览功能,图片按钮和文本按钮的区别在于显示的时候是以图片来表达功能还是文字来表达,实现功能的函数没有区别。选择“上一步”按钮可以跳回上一个界面对表单中显示的字段进行修改。

单击“下一步”按钮后,向导进行到“步骤3-排序次序”,如图所示,选择“设备号”为索引,并选择升序排列。最后预览表单,核对每项的设置,完成表单向导,如图所示。

值得注意的是,在结束表单向导前,可选择“保存表单以备将来使用”,“保存并运行表单”,或者“保存表单并用表单设计器修改表单”。由于Visual FoxPro6.0向导生成的表单只具有普遍性,对于当前设计的仓库管理系统还需要一定的改变,因此以我们选择“保存表单并用表设计器修改表单”。 单击“完成”按钮系统提示保存表单,将表单保存为“设备入库表.scx”,存于c:仓库管理目录下。然后打开表单修改器生成的表单,如图所示。

根据功能需求,把“cmdprint”、“”cmdexit、“cmdDelete”和“cmdedit”的Visible属性都设为“.F.-假”。添加2个命令按钮,Caption属性分别设为“修改库存”和“回主界面”。 在“回主界面”命令按钮的click事件中添加代码如下: thisform.release do form 仓库管理 在修改库存命令按钮的click事件中添加代码如下: select 现有库存表 getid=thisform.设备号1.text1.value set order to 设备号 seek getid if found() getnum=thisform.入库数量1.text1.value update 现有库存表 set 现有库存=(现有库存+getnum) where (设备号=getid)

else insert into 现有库存表 (设备号,现有库存,最大库存,最小库存); value (thisform.设备号1.text1.value,thisform.入库数量1.text1.value,1000,10)

endif insert into 操作日志表(操作员,操作内容,操作时间); values (thisform.采购员1.text1.value,'设备入库',date()) 保存后运行表单,界面如图所示:

4.3设备出库模块的设计:

在设备出库模块中将实现设备出库数据的添加和修改库存等功能。该模块的功能和设备入库的功能相似。具体操作可以参考设备入库模块的设计,设计最终的界面如图所示。

在表单的左上角加上了显示当前时间的功能,添加标签label2的caption属性设为“当前时间”;添加label3的caption属性设为空;为当前表单的label3init事件添加如下代码: this.caption=dtoc(date()) 该模块具体实现过程不再一一详细说明。下面列出了表单中所用到控件的属性值。 (1) Form1控件的主要属性:

下面时设备出库表单中“修改库存”命令按钮的click事件的代码: select 现有库存表 *先在该表单的数据环境中添加现有库存表 getid=thisform.设备号1.text1.value set order to 设备号 seek getid *在现有库存表中查找设备号等于getid的纪录 if found() getnum=thisform.出库数量1.text1.value update 现有库存表; set 现有库存=(现有库存-getnum) where (设备号=getid) *如果库存表中有该项设备,则更新库存表 insert into 操作日志表(操作员,操作内容,操作时间); values (thisform.领取人1.text1.value,'设备出库',date())

else messagebox("出错",1,"错误的设备号")

endif

下载