计量器具管理系统

更新时间:2024-06-26 16:48:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

毕业设计(论文)报告纸

计量器具管理系统

专业:计算机应用 姓名:罗维海 指导教师:朱程荣

【摘要】 计量器具的管理水平,直接影响到企业产品质量符合性的要求,为确保计量器具能够及时准确量传和溯源;通过本管理系统建立在用计量器具管理台帐,掌握计量器具检修检定信息、部门使用状态信息和封存计量器具管理台帐,使我厂的计量器具管理工作系统化、规范化、自动化,从而达到提高企业计量器具管理效率与水平的目的。

【关键词】 计量器具管理系统分析、设计、开发与实施 【外文摘要】 (略)

1

毕业设计(论文)报告纸

目 录

1引言????????????????????????????????3 2计量器具管理系统设计????????????????????????4 2.1系统目标设计???????????????????????????4 2.2开发设计思想???????????????????????????4 2.3开发和运行环境??????????????????????????4 2.4系统功能分析???????????????????????????4 2.4.1主控模块????????????????????????????4 2.4.2初始化模块???????????????????????????4 2.4.3数据输入模块??????????????????????????4 2.4.4数据更新模块??????????????????????????4 2.4.5器具查询模块??????????????????????????4 2.4.6数据拷贝模块??????????????????????????5 2.4.7打印报表模块??????????????????????????5 2.4.8退出模块????????????????????????????5 3数据库设计?????????????????????????????6 3.1需求分析?????????????????????????????6 3.2数据库概念结构设计????????????????????????7 3.3数据库逻辑结构设计????????????????????????7 4数据库结构实现???????????????????????????9 4.1使用项目管理器实现数据库结构???????????????????9 5各功能模块的建立????????????????????????? 10 5.1开始界面的设计????????????????????????? 10 5.2退出界面的设计????????????????????????? 11 5.3查询界面的设计????????????????????????? 12 5.4数据查询模块设计???????????????????????? 13 5.4.1原始台帐数据查询模块设计??????????????????? 13 5.5初始化模块设计????????????????????????? 17 5.6数据录入模块设计???????????????????????? 18 5.7数据修改模块设计???????????????????????? 19 5.8数据备份模块设计???????????????????????? 21 5.9打印模块设计?????????????????????????? 22 5.10代码设计????????????????????????????24 6开发中的难点和解决技巧?????????????????????? 28 7运行结果????????????????????????????? 29 8软件的安装与使用????????????????????????? 30 小结???????????????????????????????? 31 谢辞???????????????????????????????? 32 主要参考文献???????????????????????????? 33

2

毕业设计(论文)报告纸

1引言

我厂福州铁路分局直属的二等基层站段,是从事铁路货物装卸机械化的专业工厂,下设八个班组六个职能科室;其主要产品是0.5t-65t门、桥式起重机。在制造、维修产品过程中,各零部件的形状、位置尺寸直接影响到本企业的产品质量的稳定与提高。目前计量器具的管理工作由质管科负责,采用手工校对计量器具台帐信息、使用信息、检修检定信息和日常管理工作;由于本企业的计量器具品种较全且数量较多、达三百多件套,目前没有一套计算机系统软件进行管理,一方面要掌握本企业器具管理台帐信息、及使用信息,另一方面要掌握本企业器具检修检定信息,同时又必须确保在用器具是合法、有效的;工作量很大,而且会出现超过检定时效的器具在生产过程中量传,进而影响产品质量的符合性要求。

因此要加强企业计量器具的基础管理工作。急需一套计量器具的管理系统,对计量器具进行有效管理,准确掌握计量器具的量传和溯源,提高企业的产品质量;本系统将较全面对计量器的管理进行研究。

3

毕业设计(论文)报告纸

2计量器具管理系统设计

2.1系统目标设计:

系统应具有良好的人机界面,灵活的窗口风格,友好的帮助使用说明以及较完整的器具管理流程,让使用该系统的工作人员无须拥有专业的电脑知识,轻松完成日常工作。整个系统应直观统一化,能够方便的进行各种信息查询,各项查询工作轻松点击即可完成。报表打印格式统一,操作快捷,数据修改简洁明了。新系统应利于维护,整个系统应使原先手工管理模式下的工作效率低,工作量大,出错率高的状况完全得以转变,使我厂计量器具管理工作系统化、规范化、自动化,从而达到提高企业计量器具管理效率与水平的目的。 2.2开发设计思想:

2.2.1由于本企业尚无计量器具管理系统,因此开发尽可能采用现有本企业的计算机软硬件环境。

2.2.2系统符合本企业《监视与测量装置控制程序》之规定,满足计量器具日常管理工作的需要并达到操作过程的直观、方便、实用、安全等要求。

2.2.3系统采用模块化程序设计方法,既便于系统功能模块的组合,又便于未参与开发的技术维护人员补充、维护。

2.2.4系统具备数据库维护功能,能及时根据企业器具情况进行数据的初始化、添加、删除、修改、备份操作。 2.3开发和运行环境:

开发工具:Visual Foxpro 6.0

运行环境:Windows 9x Windows NT或Windows 2000. 2.4系统功能分析:

计量器具管理系统需要完成功能主要有:

2.4.1主控模块:该模块是整个系统的控制中心,包含数据初始化、数据输入、数据更新、查询、是系统进入各级子模块的入口。

2.4.2初始化模块:初始化是系统工作的准备工作,系统每次工作前必须删掉上一次操作保留的部分数据,然后才能进行新数据的录入,初始化的功能是清除以前的数据,以防旧数据对新数据产生不必要的影响。

2.4.3数据输入模块:系统基础是输入数据,只有将数据写入到相应的数据库后,才能对它们进行查询、修改、打印。

2.4.4数据更新模块:数据更新模块的主要功能是对已输入数据进行修改。

4

毕业设计(论文)报告纸

2.4.5器具查询模块:该模块的主要功能是显示某一器具的所有信息。

2.4.6数据拷贝模块:该模块是数据库中的记录拷贝到备份数据库中,以防止数据库的丢失。

同时把数据库里不需要的东西删除,以节省磁盘空间。

2.4.7打印报表模块:该模块是将所需要的数据以表格形式从打印机打印出来,它是由台帐、检修检定表、部门器具表和封存台帐表组成。 2.4.8退出模块:当退出系统时,给出欢迎使用等信息。

部门数据录入 原始数据录入 原始台帐报表 部门器具报表 检修计划报表 封存器具报表 初 始 化 数 据 输 入 数 据 更 新 器 具 查 询 数 据 备 份 打 印 退 出 主控模

系统功能模块图2.1

5

毕业设计(论文)报告纸

3数据库设计

数据库的结构设计是一个非常重要的问题,数据库设计的好坏,直接对本系统的效率以及实现效果产生影响。同时减少数据库的存储量,做到数据的完整性和一致性比较高,使系统有较快的响应速度。

在数据库系统设计的时候尽量考虑全面,尤其要仔细考虑计量器具管理过程中的各种管理过程的要求,避免在设计过程中浪费不必要的人力和物力。 3.1需求分析:

数据库的需求分析是数据库结构设计的第一阶段,主要是收集基本数据、数据结构以及确定数据处理流程,为下一步设计打基础。

在仔细调查计量器具管理过程的基础上,得到系统所要处理的流程如图3.1 用户 数据输入 返回数据录入结果 数据修改 返回数据修改结果 数据打印或浏览 数据备份 返回数据打印或浏览

返回数据查询结果

数据查询 计量器具 管理系统 返回数备份结果 数据流程图3.1

通过对计量器具管理系统的内容和数据流程分析,设计的数据项和数据结构如下:

3.1.1 部门分类数据表(部门号,使用部门,使用人)

3.1.2原始台帐数据表(部门号,器具编号,器具名称,规格型号,原值,数量,产地,使用状态,检定周期,检定费用,使用部门,使用人,次检时间,续检时间,检定机构,检定证号、备注)

6

毕业设计(论文)报告纸

3.2数据库概念结构设计:

在以上需求分析的的基础上,设计出能够满足本厂需求的各种实体,以及确定它们之间的关系,为后面的逻辑结构设计打下基础。

根据上面设计,规划出的实体有:器具原始数据实体和部门数据实体。如图3.2所示。 n 器具编号 部门号 备 注 部门号 使用部门 部门使用数据库 使用人 原始台帐数据库 检定证号 m m 检定机构 器具名称 规格型号 数 量 原 值 产 地 始用时间 使用状态 检定周期 检定费用 使用部门 使用人 次检时间 续检时间

图3-2实体间的E-R图

3.3数据库逻辑结构设计:

将上面的数据库概念结构转化为Uisual Foxpro 6.0数据库系统所友持的实际数据模型,也就是数据库的逻辑结构。在掌握了上面的实体以及实体之间关系的基础上,确定数据库中的表格以及表格之间的关系。

计量器具管理系统数据库中各表格的设计结果如表3-1至3-2所示。每个表格表

7

毕业设计(论文)报告纸

示在数据库中的一个表。 表3-1原始台帐数据表

表3-1 ystzsj表 列名 bmh qjbh qjmc glxh sl yz cd sysj syzt jdzq jdhy sybm syr cjsj xjsj jdzq jdjg bz

表3-2部门分类数据表

表3-2 bmhlsj表 列名 Bmh sybm syr 数据类型 N(4) C(10) C(10) 可否为空 NULL NULL NULL 说明 部门号 使用部门 使用人 数据类型 N(4) N(12) C(12) N(16) N(6) N(12) C(16) D(8) C(4) C(8) N(8) C (10) C(10) D(8) D(8) N(2) C(12) M(4) 可否为空 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 说明 部门号 器具编号 器具名称 规格型号 数量 原值 产地 始用时间 使用状态 检定周期 检定费用 使用部门 使用人 次检时间 续检时间 检定周期 检定机构 备注

8

毕业设计(论文)报告纸

4数据库结构实现

根据需求分析、概念结构设计的基础上得到数据库的逻辑结构后,在Visual FoxPro 6.0数据库中实现该逻辑结构。

实现数据结构的逻辑结构的主要方式使用Visual FoxPro的项目管理器。以下将原始台帐数据库、部门分类数据库,创建这些表单的过程。

首先,先建一个名为“jlqjgl(计量器具管理)”的项目,保存在磁盘中。 4.1使用项目管理器实现数据库结构

打开,如图4-1所示的“jlqjgl(计量器具管理)”项目后,在项目管理器中展开数据文件夹,用鼠标选中数据库,单击右侧“New Table(新建表)”,为数据库添加数据表(表的内容见表3-1至表3-2)。

9

毕业设计(论文)报告纸

5各功能模块的建立

5.1开始界面的设计

该模块的主要功能是当用户启动使用“计量器具管理系统”时,显示欢迎界面,开始界面的欢迎词每个1秒钟闪烁一次。当用户按下键盘上任一键时,系统自动进入下一级表单,即“mainmenu”表单。本模块利用一个表单就可以实现其功能。

以下是这一模块的设计步骤。

首先新建一个表单,保存为“welcome”。将表单的“Caption”属性设定为“欢迎界面”,“Desktop”属性设置为“.T.-True”。为了给该表单添加一张图片背景,设其“Picture”属性为所要添加图片的地址,本系统中为 c:\\my documents\\LWH\\Fj056。然后为该表单添加1个“Timer1”控件和1个“Label1”控件。

修改“Time1”控件的“Interval”的属性为“1000”,这样当每间隔一秒钟触发一次“Timer Event” 事件。

“Label1”控件的相关属性的内容如表5-1所示。

表5-1 “Label1”控件中主要属性

属性名称 Caption BackStyle FontBold FontName FontSize ForeColor

“Caption”的属性为所要显示的欢迎词,“BackStyle”属性修改的目的是使“Label1”控件的背底透明。修改其“FontBold”、“FontName”、“FontSize”和“ForeColor”属性是为了调整字体形式,以显得美观。其中“ForeColor”为“字体颜色设置”“洋红色”。

并为各个事件添加代码。

在“welcome”表单的“init”事件中添加代码如下: public nTime nTime=1

属性值 欢迎使用计量器具管理系统 0-Transparent .T. 隶书 36 16711935 10

毕业设计(论文)报告纸

这段代码的目的是通过设立1个“nTime”全局变量(并设其初始值为“1”)来控制“Lable1”控件,以达到控制欢迎词的闪烁。

在“welcome”表单的“KeyPress”事件添加代码如下: thisform.release *释放本表单

release nTime *释放变量“nTime” do form mainmenu *运行表单“mainmenu”

这段代码的目的是当按下任意键时,释放该表单和全局变量“nTime”同时进入旧一级表单“mainmenu”。

在“Timer”控件的“Timer Event”事件中添加如下代码: if i=0

thisform.Label1.visible=.f. i=1 else

thisform.Label1.visible=.t. i=0 endif

这段代码的内容是通过判断全局变量“nTime”的值来控制欢迎词的闪烁。当“nTime”的值为“0”,令“Label1”控件“不可见”,同时置“nTime”为“1”以备下次触发“Timer Event”事件时使用。同样,当“nTime”的值为“1”,令“Label1”控件“可见”,同时置“nTime”为“0”以备下次触发“Timer Event”事件时使用。通过每隔1秒触发一次“Timer Event”事件,可以使“Label1”控件时隐时现,以达到令欢迎闪烁的目的。 5.2退出界面的设计:

该模块设计目的是当用户退出系统时显示感谢词,画面停留两秒钟后自动退出,这一模块利用一个表单可实现其功能。

首先新建一个表单,保存为“End”,在其上添加1个“Timer1”控件和3个“Label”控件。各控件属性表略。

在“Time1”控件的“Timer Event”中添加代码如下:

11

毕业设计(论文)报告纸

thisform.release

*释放表单并停止由READ EVENT开始的事件处理, CLEAR EVENT

*令程序从READ EVENT的下一条程序行继续执行。 将该表单保存后,退出界面这一模块就建立好了。 5.3查询界面的设计:

这一模块的主要功能是为选择原始台帐数据库提供一个接口。由于本模块只是一个接口界面,可利用一个表单即解决。

该模块的设计步骤如下。

先新建一个表单Form,保存为“cxjm”。在表单上添加1个“Image1”控件,1个控件“Label1”

控件,1个“Timer1”控件,1个“Container1”控件和1个“Command”控件。在“Container1”控件上再添加1个“Command”控件。 各控件中主要属性表略。

修改完各控件的相关属性后,我们为各事件添加代码。 在“Form1”的“Init”事件中添加代码如下: public nTime

nTime=1

*设一个全局变量“nTime”,并设其初始值为“1” 在“Form1”的“destory”事件中添加代码职下: release nTime

*当该表单释放时, 同时释放全局变量“nTime”

在“Time1”控件的“Timer Event”事件中添加代码如下: if i=0

thisform.Label1.visible=.t. i=1 else

thisform.Label1.visible=.f. i=0 endif

*通过全局变量nTime1控制“Label1”,使其时隐时现。 在“commend1”控件的“Click”事件中添加代码如下:

12

毕业设计(论文)报告纸

do jlqjgl\\form\\ystzcx *进入下级表单,保留本表单

在“commend5”控件的“Click”事件中添加代码如下: thisform.release *释放表单

将该表单保存后,查询界面设计模块就建立好了。 5.4数据查询模块设计

5.4.1原始台帐数据查询模块设计

这一模块实现了最基本而又很重要的功能,它让用户方便快捷、多角度地得知想要查询的情况。该模块提供“原始台帐数据库”表的查找、数据的添加、删除和修改功能。同时还提供“原始台帐数据库”的逐条查询和全库浏览。本模块利用在一个表单中设置两个不同标签页来实现其功能,创建过程如下:

首先建立1个表单Form1,然后保存为“ystzcx”。为该表单添加1个“Pageframe1”控件和7个“Commend”控件。各控件的主要属性如下所示表5.4.1-13至表5.4.1-15。

表5-13 “Form1”表单中主要属性 属性名称 Caption Desktop

表5-14 “Pageframe1”表单中主要属性 属性名称 Pagecount Page1.Caption Page2.Caption

表5-15 各“Command”控件中Caption属性 “Command”名称 Command1 Command2 “Caption”属性值 编辑 查找 2 原始数据逐条查询 原始数据全库查询 属性值 属性值 原始台帐数据查询 .T.-True 13

毕业设计(论文)报告纸

Command3 Command4 Command5 Command6 Command7

添加 删除 修改 提交 退出 接着为表添加数据表。右键单击表单,在弹出的对话框中选择“Date Environment”。之后会继续弹出一添加表单对话框,为该表单添加“ystzsj”表。下面详细介绍这一添加数据表的过程。

在表单“Form1”的控件“Pageframe1”上单击鼠标右键,在弹出的对话框中选择“Edit(编辑)”,然后激活“Pageframe1”控件中的“Page1”控件。单击鼠标右键打开数据环境窗口,用鼠标左键点中“ystzsj”中的“Fields(字段)”不放,将其拖到控件“Page1”控件上。然后调整“Page1”上的各控件的相对位置。

同样激活“Page2”控件,并为其添加1个“Grid1”控件。设“Grid1”控件“Recordcontrols ”属性为表“ystzsj”,“Readonly”属性为“.T.-Ture”“Page2” 页面的设计结果。

下面为各事件添加代码。

在“Form1”的“init”事件中添加代码如下: thisform.command6.enabled=.f. *置“command6”(“提交”按钮)为不可用 public flag

flag=0 *设全局变量“flag”并设其初值为“0” 在“Form1”的“Destory”事件中添加代码如下: release flag *从内存中释放全局变量“flag”

在“Command1”的“Click”事件中添加代码如下: for i=2 to 38 step 2

thisform.Pageframe1. Page1.controls(i-1).controlsource=’’ thisform.Pageframe1. Page1.controls(i-1).enabled=.T. endfor

*通过循环语句继开“Page1”中各“Text”控件的“controlsource”属性,同

14

毕业设计(论文)报告纸

时将其置为可用 *以便在其中添加数据

thisform.Pageframe1.Page1.txtbmh.value='' thisform.Pageframe1.Page1.txtQjbh.value='' thisform.Pageframe1.Page1.txtQjmc.value='' thisform.Pageframe1.Page1.txtGlxh.value='' thisform.Pageframe1.Page1.txtsl.value='' thisform.Pageframe1.Page1.txtyz.value='' thisform.Pageframe1.Page1.txtCd.value='' thisform.Pageframe1.Page1.txtsyzt.value='' thisform.Pageframe1.Page1.txtjdzq.value='' thisform.Pageframe1.Page1.txtSysj.value='' thisform.Pageframe1.Page1.txtjdhy.value='' thisform.Pageframe1.Page1.txtSybm.value='' thisform.Pageframe1.Page1.txtSyr.value='' thisform.Pageframe1.Page1.txtcjsj.value='' thisform.Pageframe1.Page1.txtxjsj.value='' thisform.Pageframe1.Page1.txtJdjg.value='' thisform.Pageframe1.Page1.txtJdzh.value='' thisform.Pageframe1.Page1.txtBz.value=''

*通过以上语句清空“Page1”上所有“Text”控件的值 在“Command2”的“Click”事件中添加代码如下: local condition *定义局部变量“condition” condition=’’

*为局部变量“condition”赋初值,令“condition”为一空字符串 for i=2 to 38 step 2

if len(thisform.Pageframe1.Page1.controls(i-1).value)<>0

str1=alltrim(thisform.Pageframe1.Page1.controls(i).name) str2=substr(str1,4)

condition=condition+str2+’=’+;

“’’’+alltrim(thisform.Pageframe1.Page1.controls(i-1).value)+

15

毕业设计(论文)报告纸

”’”+’and’

endif endfor

*这一段“for?endfor”语句的功能是通过if语句判继将 *所有查询条件不为空的字段名内容用“=”连接,

*各查询条件之间用“and”连接组成一个新字符串存在局部变量“condition”中

condition= left(condition,len(condition)-5) condition=alltrim(condition)

*通过两个函数“left()和alltrim()”去掉“Condition”字符串中尾部多余的字节和前后的 *空格

select * form ystzsj where &condition

*利用宏功能,将局部变量“condition”中存的字符串为查询条件,查找符合的记录

for i=2 to 38 step 2

str1=alltrim(thisform.Pageframe1.Page1.controls(i-1).name) str2=substr(str1,4)

thisform.Pageframe1.Page1.controls(i-1).controlsource=’ystzsj..’+str2

thisform.Pageframe1.Page1.controls(i-1).enabled=.f. endfor

*将Page1上各“Text”控件的“controlsource”属性与“ystzsj”表中的相应字段建立联系

在“Command3”的“Click”事件中添加代码如下: SET MULTILOCKS ON

cursorsetprop(\for i=2 to 38 step 2

thisform.Pageframe1.Page1.controls(i-1).controlsource=’’ thisform.Pageframe1.Page1.controls(i-1).enabled=.T. endfor

16

毕业设计(论文)报告纸

*通过循环语句继开“Page1”中各“Text”控件的“controlsource”属性,同时将其置为可用 ed=.f.

*置与数据库有关的按钮为不可用,以防误操作。 将表单保存后整个原始台帐数据查询模块就建立起来了。 5.5初始化模块设计

该模块的主要功能是使用可以定期清空数据库表内容,同时也能保存表结构。以便新数据的输入,防止旧数据对新数据产生不必要的影响,为用户节省更多的磁盘空间,本模块可利用一个表单实现其功能。

该模块的设计如下。

首先新建一表单Form1,保存为“czh”。修改其“Caption”属性为“初始化数据表单”,“Desktop”属性设置为“.T.-True”。为该 表单添加1个“Container1”控件、1个“Image1”控件,2个“Command”控件和2个“Labe1”控件。

在“Container1”控件上添加2个“Check”控件。

各控件的主要属性表略。

下面为各事件添加代码。

在“Command1”控件的“Check”事件中添加代码如下: if thisform.container1.check1.value=1 use jlqjgl\\database\\ystzsj exclusive

delete all pack use endif

if thisform.container1.check2.value=1

use jlqjgl\\database\\ bmhlsj delete all pack use endif

*将选定的数据表格清空。

在在“Command2”控件的“Check”事件中添加代码如下: thisform.release

17

毕业设计(论文)报告纸

将该表单保存后这一模块就建立好了。 5.6数据录入模块设计

该模块的功能是初始化后进行新数据的输入,只有将数据写入到相应的数据表中才能对它们进行查询、修改、打印等操作。本模块利用在一个表单中设置3个不同标签页来实现其功能。

该模块的设计步骤如下:

首先新建一个表单Form1,保存为“sjlr”。修改该表单的“Caption”的属性为“数据输入界面”,“Desktop” 属性设置为“.T.-True”。为该表单添加1个“Pageframe1”控件。

在“Pageframe1”控件上添加3个“Command”控件。

参考原始数据查询模块中数据表的添加方法,为该表单添加“ystzsj”数据表。 在“Pageframe1”控件上单击鼠标右键选择“Edit(编辑)”,激活“Page1”控件。将“Data Enviroment(数据环境)”中表“sytzsj”中各字段用鼠标拖放至“Page1”上,并调整各控件相对位置使页面美观。

修改““Pageframe1””控件中“Pagecount”属性为“1”。 “Command”控件和“Page”控件的“Caption” 属性如表略。 thisform.release

“Pageframe1”控件中其它“Page”页各事件中代码与“Page1”中类似,本设计不再一一列出。然后将表单“ystzk”、“jxjdk”和“bmsyk”保存后,这一模块就建立好了。

5.7数据修改模块设计

数据更新模块的主要功能是为用户提供一个修改已录入数据的窗口。这一模块的界面设计如下。

5.7.1首先创建一个“Fy.vcx”导航条的子类设计如下:

A.在项目管理器中选择“Classes(类)”选项卡, B.选择新建“New(新建)”,出现一个类对话框,

C.在“Class Name(类名)”框中键入fy,“Based On(派生于)”框中选择“Command Group(按钮组)”,存储框中填入要存的路径。单击“OK(确定)”按钮进入设计窗口。

D.在属性窗口中修改Buttoncount(按钮数目)属性,使其值为4,这时出现了4个按钮,将按钮拖动到适当的位置,并根据需要修改每个按钮的Caption属性,使其为“上一个”、“第一个”、“下一个”、“最后一个”。

18

毕业设计(论文)报告纸

E.在按钮“上一个”的Click事件中输入如下代码: skip-1 *记录后退一个 if bof() *如已为第一个记录

messagebox(“已是第一个记录”,48,“信息窗口”) *当已为第一个记录时,显示提示信息 this.parent.commend1.enabled=.f. this.parent.commend2.enabled=.f. skip

*记录前进一个,使之仍显示第一个记录

else

this.parent.commend1.enabled=.t. this.parent.commend2.enabled=.t.

endif

this.parent.commend3.enabled=.f. this.parent.commend4.enabled=.f. *根据状况设置各按钮的可用状态 thisform.refresh 功能:向前翻页

F.在按钮“第一个”的Click事件中输入如下代码:

goto top

*到第一个记录

this.parent.commend1.enabled=.f. this.parent.commend3.enabled=.t. this.parent.commend4.enabled=.t. *根据状况设置各按钮的可用状态 thisform.refresh

功能:翻页至第一个记录。

●在按钮“下一个”的Click事件中输入如下代码: skip *记录前进一个

19

毕业设计(论文)报告纸

if eof() *如已为最后一个记录

messagebox(“已是最后一条记录”,48,”信息窗口”) skip-1 *记录后退一个,使之仍为显示最后一个记录 d=.t.

*根据状况设置各按钮的可用状态 thisform.refresh 功能:向后翻页

●在按钮“最后一个”的Click事件中输入如下代码: goto bottom *到最后一个记录

this.parent.commend3.enabled=.f. this.parent.commend1.enabled=.t.

this.parent.commend2.enabled=.t. *根据状况设置各按钮的可用状态 thisform.refresh

功能:翻页至最后一个记录

以上就是一个具有翻页功能的fy子类就创建出来了。

其次新建一个表单Form1,保存为“sjxg”。修改该表单的“Caption”的属性为“数据输入界面”,“Desktop” 属性设置为“.T.-True”。为该表单添加1个“Pageframe1”控件。

在“Pageframe1”控件上添加3个“Command”控件。

参考原始数据查询模块中数据表的添加方法,为该表单添加“ystzsj”1个数据表。

在“Pageframe1”控件上单击鼠标右键选择“Edit(编辑)”,激活“Page1”控件。将“Data Enviroment(数据环境)”中表“sytzsj”中各字段用鼠标拖放至“Page1”上,并调整各控件相对位置使页面美观。

然后单击“ Form Controls” 窗口中的“View Classes”按钮,在弹出的菜单中选择“Add(添加)”,在弹出的对话框中创建类“Fy.vcx”。这时“Form Controis”中的控件修改““Pageframe1””控件中“Pagecount”属性为“1”。的样子,单击“Fy”,

20

毕业设计(论文)报告纸

为表单添加该控件。“Command”控件和“Page”控件的“Caption” 属性表略。

5.8数据备份模块设计

这一模块的主要功能是将数据库中的表备份到指定的路径中,以防止数据的丢失,同时可在数据库中的表损坏时恢复表,避免更大的损失。这一模块也是通过设计一个表单来实现的。

为了实现该模块的设计,需要首先自建一个继承于OutLine类的“ActiveX”控件,名称为“OleOutLine”。

首先单击菜单条中的“New(新建)”按钮,在弹出的对话框中选择类(“class”),单击“New(新建)”按钮,创建一个新类,创建过程如下:

在弹出的对话框中的“Class Neme(类名)”中填写“outline”;在“Based on(派生于)”中单击右侧按钮选择“OleControl”;在“Store in(存储于)”中填写存储路径名,本系统为“c:\\program files\\microsoft visual\\vfp98\\jlqjgl”。单击“OK(确定)”在弹出的对话框中的左侧单选框中选择“Insert Control_Type”框中选择“OutLine Control”然后单击“OK(确定)”按钮。

这样就完成了一个新控件的建立过程,该控件将保存在选定的路径中。 下面为该控件添加一些事件。

为该控件新建事件的步骤为:首先单击菜单中的“Class(类)”,在弹出的菜单中选择“NEW Method?(新建方法程序)”,在弹出的对话框中“Name(名称)”框中填写所要添加的事件名即可。

.

*置“备份文件”按钮为可用 release path2 release m.cDir

在“Command2”的“Click”事件中添加代码如下: close all

*关闭所有工作区中已被打开的数据库、表和索引文件 local path1

*定义局部变量“path1”

path1=alltrim(thisform.text1.value) *为局部变量“path1”赋值 if len(path1)=2

21

毕业设计(论文)报告纸

path1=path1+’\\’ endif

*如果路径名为盘符根目录,则应在文件名后加“\\”否则备份文件时会出错 if thisform.container1.check1.value=1 *如果用户选择了“check1”

copy file jlqjgl\\ystzsj.dbf to &path1 *将相应文件备份至选定目录 thisform.command2.enabled=.f. *置“备份文件”按钮为不可用 release path1

open database jlqjg\\jlqjgl.dbc exclusive *以独占方式打开数据库“jlqjgl.dbc”

在“Command3”的“Click”事件中添加代码如下: thisform.release

*将该表单保存后这一模块就建立好了,数据备份模块设计完成。 5.9打印模块设计

该模块的主要功能是打印数据报表的界面并提供打印预览功能。界面都包括了需要打印的报表,下面介绍打印界面中“原始台帐数据表”、“检修检定数据表”、“部门使用数据表”和“封存器具数据表”报表的设计方法。

首先设计打印界面的设计,这一界面通过一个表单的设计实现。打印界面的基本设计方法与控件的使用与前面的表单设计大同小异,其设计结果和控件中相应的代码。

在“打印”按钮的“Click”事件中添加代码如下: do form jlqjg\\sjby *打开下级表单

在“返回”按钮的“Click”事件中添加代码如下: thisform.release

“打印”按钮打开的是“打印界面”,该打印也是通过一个表单设计实现的,该界面的设计结果如下:

在“预览”按钮的“Click”事件中添加代码如。 *释放该表单

至此打印模块各界面设计结果,下面介绍“原始台帐数据”、“检修检定数据”、“部

22

毕业设计(论文)报告纸

门使用数据”和“封存台帐数据”报表的设计。

首先在“Project Manager(项目管理器)”中选择“Documents(文档)”页,在其中选择“reports(报表)”,单击右侧“New(新建)”按钮新建一报表,保存为“tz”。

然后单击菜单的“report(报表)”按钮,在弹出的下拉菜单中选择第一项“Title/Summary?”,在弹出的对话框中选择“Title band”并按下“OK(确定)”。这时出在新建的报表上方多出了一栏“Title”。

目前报表设计器中共分标题带区“Title(标题带区)”、“Page header( 页标头带区)”、“Detail(细节带区)”和“Page footer(页注脚带区)”共4个带区,每个带区在设计时的主要功能如下:

● “Title(标题带区)”:放置标题、日期等围绕标题内容的矩形框,每个报表打印一次。

● “Page header( 页标头带区)”:放置列标题,每页打印一次。 ● “Detail(细节带区)”:放置数据和描述性文本。每个分组打印一次。 ● “Page footer(页注脚带区)”:放置日期、页号等。每页打印一次。 在菜单栏中选择“View(视图)”,在下拉菜单中选中“ Grid Lines(网格线)”打开网格。

利用报表工具栏中的控件在报表设计器中设计报表。 设计步骤如下:

在标题带区添加1个“Labe1”控件,内容添加为“原始台帐数据报表”;添加1个“Field”控件,在弹出的对话框中单击表达式右侧按钮,在弹出的对话框中选择函数“Date()”。

用同样的方法为页注脚带区也添加1个“Field”控件,表达式为”第”+alltrim(str(_pageno))+”页”返回当前页的数值,str()函数将数值表达式值转换为字符串,alltrim()函数则去掉字符串首尾的空格。

“Page header( 页标头带区)”和“Detail(细节带区)”的设计参见报表设计结果。与表单的数据环境设置一样,将表“tz”添加到该表中。将报表中对应的字段利用“Field”控件添加到报表的细节区中,保存文件后,“原始台帐数据报表”的报表就建立好了。将“检修检定数据”、“部门使用数据”和“封存器具数据”报表一一设计并保存文件后,打印模块的全部功能就设计完毕了。 5.10代码设计

本系统代码设计包括启动的主程序、设置系统执行的配置环境程序和恢复环境配置的程序。

23

毕业设计(论文)报告纸

主程序

主程序是应用程序的主文件,即应用系统的第一个执行程序。该程序的功能包括 (1) 确认安装目录并设定其为默认目录。这样在执行所有的表单、报表、程序、

菜单时就不用在加绝对路径。 (2) 声明应用系统执行的配置环境。 (3) 执行第一个用户界面。

(4) 设置Visual Foxpro 6.0的桌面环境。 (5) 设置读取程序的开始点。

(6) 执行应用程序结束时系统环境还原程序。

建立方法为:在项目管理器的代码页中选择“Program(程序)”,在单击“New(新建)”按钮,在弹出的程序框中编写代码

主程序中代码如下:

******************************** *应用系统主程序 *程序名称:MATN.PRG

******************************** LOCAL,lcProgram LcSys16=SYS(16)

LcProgram=SUBSTR(lcSys16,AT(“:”,lcSys16)-1) CD LEFT(lcProgram,RAT(“\\”,lcProgram)) DEACTIVATE WINDOW “PROJECT MANAGER” Do jlqjgl\\setting Do form jlqjgl\\welcome _screen.caption=” _screen.left=-10000 READ EvENTS DO jlqjgl\\reset 代码设计说明。

● 使用“LOCAL”定义2个局部变量。

● 使用系统参数“SYS(16)”返回当前正在运行的程序名,包括路径。 ● 使用AT()函数返回第一个字符串在第二个字符串中首次出现的数字位置。本系统地“.”在程序名中的位置。

24

毕业设计(论文)报告纸

● SUBSTR()函数返回在另一个字符串。其中逗号后的数字表明在指定字符串中的开始位置。

● RAT() 函数返回在另一个字符中最后出现第一个字符串的位置。 ● LEFT()函数从一个字符串中的最左端返回指定数目的字符。

● DEACTIVATE WINDOW “PROJECT MANAGER”语句可以把项目管理器关闭。 ● 使用DO命令执行程序setting.prg,设置执行期间的配置程序。 ● 使用DO FORM执行系统的第一个界面程序。

● 执行READ EVENTS指令开始读取事件程序,让程序开始运行起来。 ● 当执行了CLEAR EVENTS事件程序后。通过DO命令执行一个配置还原程序reset,还原 系统配置。

程序Setting.prg是用来设置环境配置的,它包括关掉系统菜单,允许显示运行结果,隐藏状态栏等一系列有利于程序运行的设置。 Setting.prg程序的代码如下: ******************************** *环境配置程序

*程序名称:SETTING.PRG

******************************** set sysmenu off set sysmenu to set status bar off set notify off set clock status set palette off set escape on

set keycomp to windows set carry on set confirm on set exact on set near on set ansi off set lock on

25

毕业设计(论文)报告纸

set exclusive off set multilocks on set deleted on set optimixe on set refresh to 0,5 set collate to ‘stroke’ set default to sys(5)+curdir() set path to sys(5)+curdir() set sysformates off set seconds on set century off set currency left set currency to ‘nt$’ set hours to 12 set date to usa set fdow to 1 set fweek to 1 set mark to ‘.’ Set separator to ‘,’ Set point to ‘.’

程序Reset.prg是还原系统配置的,包括恢复系统菜单和其他一些开发环境所必需的配置。

Reset.prg程序的代码如下:

*********************************** *还原环境配置 *程序名称:RESET.PRG

*********************************** set sysmenu to defanlt set sysmenu on set talk on set notify on set exclusive on

26

毕业设计(论文)报告纸

set safety on modify window screen

27

毕业设计(论文)报告纸

6开发中的难点和解决技巧

6.1类的概念

首先,要理解对象就是一个事物。窗口、字段、按钮都是对象。其方法与属性,属性是对象的物理性质,如窗口的长度、宽、高、颜色、字体等,方法是对象可以执行的动作,如“Init” 方法、“Click”方法、“refresh”方法等. 6.2程序设计中的遇到的问题和解决方法 6.2.1复杂报表的制作

对于简单的报表可以用报表设计器直接设计,而对于复杂的报表利用报表设计器制作固然更灵活但略显繁琐,因此可以先用报表向导制作然后用报表设计器修改,这样就可提高效率。

28

毕业设计(论文)报告纸

7运行结果

经过运行,界面友好,系统功能较完善。(具体见系统运行情况)

29

毕业设计(论文)报告纸

8安装与使用环境

8.1软盘安装:

将系统软盘中的jlqjgl及my documents两文件夹拷贝到计算机硬盘中的C盘或其它盘中。

打开jlqjgl文件夹,将计量器具管理系统“狐狸头”快捷方式的图标发送到桌面;双击快捷方式图标就可进入本系统。 8.2运行环境

运行环境:Windows 9x 、Windows NT或Windows 2000;开发工具为Visual Foxpro 6.0。

30

毕业设计(论文)报告纸

小 结

1.系统功能完成情况介绍

该系统能够以友好的界面面对用户,各项工作准确、快捷,大大提高了工作效率。查询模块快速生成用户所需的信息。数据更新变动界面完全符合用户的要求。报表生成与统计工作轻松完成,对用户的各项工作要求均能找到相适应的操作模块,整个系统功能比较完善,基本符合了用户的要求。 2. 系统还存在的问题和改进措施

该系统不能对整个数据库结构进行改动,还不能满足用户对数据项变动的要求。对此项问题的解决方法应是增加结构语句的运用,方便用户变动器具,以实现器具的更完善管理。

3. 此次系统设计后的心得体会

终于完工了,经历了无数次的程序出错,终于看到了一个自己生平第一次建立的系统,这种成功的喜悦与成就感是我从未有过的。在设计这个系统之前,我已经学完了所有《计算机应用》专科段的专业课,但心里老有一点空荡荡的感觉,总感到学的东西好象没什么太大用处,理论与实际相距实在是太远了。在这最后毕业设计出现在我眼前时,我开始怀疑自己,我能够完成这样一项我从未经历过的工作吗?随后我开始了自己的摸索,查找有关vfp6.0设计的书籍和以前所学的专业书,再次学习了一遍,不停的将书中内容加入到所做的系统中去,我开始熟悉了我以前完全是死记硬背下来的概念与系统设计理念。系统的框架开始形成。一些模块的开发,在书本中没有相关的内容命令,只有想一些新的办法才能实现功能模块,当想出的办法在系统测试中一次次的成功,我开始喜欢上了这份工作。终于在一个个功能模块都测试正常,系统联调基本达到预期目标之后,我的系统开发基本成功!

31

毕业设计(论文)报告纸

谢辞

朱教授作为我的指导老师,从论文题目的确定、到软件的开发整个过程都倾注了大量的心血,使我学到了很多知识、并且帮助我解决各种问题,最终完成了程序的设计和实现。朱教授认真负责的工作态度,严谨的治学精神和深厚的理论水平都使我获益匪浅,无论在理论上还是在实践中都给我很大的帮助,这对我以后的工作和学习都是一种很大的影响,感谢他细心又耐心的辅导。在此向他表示衷心的感谢!

这里也感谢计算机系的多位老师,几年来,是他们系统的在理论上给了我很大的帮助,让我能很好的完成这次毕业设计,这里再次衷心的表示感谢。

32

毕业设计(论文)报告纸

主要参考文献

1、《软件工程导论》,张海潘著,清华大学出版社,1996.1 2、《数据库原理及应用》,靳学辉编著,电子工业出版社,1997.6

3、《Visual FoxPro6.0程序设计工程师》,网冠科技编著,机械工业出版社,2001.5 4、《中文Visual FoxPro6.0实用教程》,沈旭辉编著,电子科技大学出版社,2000.7

33

本文来源:https://www.bwwdw.com/article/9rb3.html

Top