计量器具管理系统

上传人:gao****ang 文档编号:170688643 上传时间:2022-11-22 格式:DOCX 页数:34 大小:155.40KB
收藏 版权申诉 举报 下载
计量器具管理系统_第1页
第1页 / 共34页
计量器具管理系统_第2页
第2页 / 共34页
计量器具管理系统_第3页
第3页 / 共34页
资源描述:

《计量器具管理系统》由会员分享,可在线阅读,更多相关《计量器具管理系统(34页珍藏版)》请在装配图网上搜索。

1、计量器具管理系统专业:计算机应用 姓名:罗维海 指导教师:朱程荣【摘要】计量器具的管理水平,直接影响到企业产品质量符合性的要求,为确保计 量器具能够及时准确量传和溯源;通过本管理系统建立在用计量器具管理台帐,掌握 计量器具检修检定信息、部门使用状态信息和封存计量器具管理台帐,使我厂的计量 器具管理工作系统化、规范化、自动化,从而达到提高企业计量器具管理效率与水平 的目的。【关键词】计量器具管理系统分析、设计、开发与实施【外文摘要】(略)目录1弓I言32计量器具管理系统设计42.1系统目标设计42.2开发设计思想42.3开发和运行环境42.4系统功能分析42.4.1主控模块42.4.2初始化模块

2、42.4.3数据输入模块42.4.4数据更新模块42.4.5器具查询模块42.4.6数据拷贝模块52.4.7打印报表模块52.4.8退出模块53数据库设计63.1需求分析63.2数据库概念结构设计73.3数据库逻辑结构设计74数据库结构实现94.1使用项目管理器实现数据库结构95各功能模块的建立105.1开始界面的设计105.2退出界面的设计115.3查询界面的设计125.4数据查询模块设计135.4.1原始台帐数据查询模块设计135.5初始化模块设计175.6数据录入模块设计185.7数据修改模块设计195.8数据备份模块设计215.9打印模块设计225.10代码设计246开发中的难点和解决

3、技巧287运行结果298软件的安装与使用30小结31谢辞32主要参考文献331引言我厂福州铁路分局直属的二等基层站段,是从事铁路货物装卸机械化的专业工 厂,下设八个班组六个职能科室;其主要产品是0.51-651门、桥式起重机。在制造、 维修产品过程中,各零部件的形状、位置尺寸直接影响到本企业的产品质量的稳定与 提高。目前计量器具的管理工作由质管科负责,采用手工校对计量器具台帐信息、使 用信息、检修检定信息和日常管理工作;由于本企业的计量器具品种较全且数量较多、 达三百多件套,目前没有一套计算机系统软件进行管理,一方面要掌握本企业器具管 理台帐信息、及使用信息,另一方面要掌握本企业器具检修检定信

4、息,同时又必须确 保在用器具是合法、有效的;工作量很大,而且会出现超过检定时效的器具在生产过 程中量传,进而影响产品质量的符合性要求。因此要加强企业计量器具的基础管理工作。急需一套计量器具的管理系统,对计量器 具进行有效管理,准确掌握计量器具的量传和溯源,提高企业的产品质量;本系统将 较全面对计量器的管理进行研究。2计量器具管理系统设计2.1系统目标设计:系统应具有良好的人机界面,灵活的窗口风格,友好的帮助使用说明以及较完 整的器具管理流程,让使用该系统的工作人员无须拥有专业的电脑知识,轻松完成日 常工作。整个系统应直观统一化,能够方便的进行各种信息查询,各项查询工作轻松 点击即可完成。报表打

5、印格式统一,操作快捷,数据修改简洁明了。新系统应利于维 护,整个系统应使原先手工管理模式下的工作效率低,工作量大,出错率高的状况完 全得以转变,使我厂计量器具管理工作系统化、规范化、自动化,从而达到提高企业 计量器具管理效率与水平的目的。2.2开发设计思想:2.2.1由于本企业尚无计量器具管理系统,因此开发尽可能采用现有本企业的计算机 软硬件环境。2.2.2系统符合本企业监视与测量装置控制程序之规定,满足计量器具日常管理 工作的需要并达到操作过程的直观、方便、实用、安全等要求。2.2.3系统采用模块化程序设计方法,既便于系统功能模块的组合,又便于未参与开 发的技术维护人员补充、维护。2.2.4

6、系统具备数据库维护功能,能及时根据企业器具情况进行数据的初始化、添加、 删除、修改、备份操作。2.3开发和运行环境:开发工具:Visual Foxpro 6.0运行环境:Windows 9x Windows NT 或 Windows 2000.2.4系统功能分析:计量器具管理系统需要完成功能主要有:2.4.1主控模块:该模块是整个系统的控制中心,包含数据初始化、数据输入、数据 更新、查询、是系统进入各级子模块的入口。2.4.2初始化模块:初始化是系统工作的准备工作,系统每次工作前必须删掉上一次 操作保留的部分数据,然后才能进行新数据的录入,初始化的功能是清除以前的数据, 以防旧数据对新数据产生

7、不必要的影响。2.4.3数据输入模块:系统基础是输入数据,只有将数据写入到相应的数据库后,才 能对它们进行查询、修改、打印。2.4.4数据更新模块:数据更新模块的主要功能是对已输入数据进行修改。2.4.5器具查询模块:该模块的主要功能是显示某一器具的所有信息。2.4.6数据拷贝模块:该模块是数据库中的记录拷贝到备份数据库中,以防止数据库 的丢失。同时把数据库里不需要的东西删除,以节省磁盘空间。2.4.7打印报表模块:该模块是将所需要的数据以表格形式从打印机打印出来,它是 由台帐、检修检定表、部门器具表和封存台帐表组成。2.4.8退出模块:当退出系统时,给出欢迎使用等信息。主控模器具查询数据备份

8、原 始 数 据 录 入原始台帐报表部门器具报表检修计划报表封存器具报表系统功能模块图2.13数据库设计数据库的结构设计是一个非常重要的问题,数据库设计的好坏,直接对本系统的 效率以及实现效果产生影响。同时减少数据库的存储量,做到数据的完整性和一致性 比较高,使系统有较快的响应速度。在数据库系统设计的时候尽量考虑全面,尤其要仔细考虑计量器具管理过程中的 各种管理过程的要求,避免在设计过程中浪费不必要的人力和物力。3.1需求分析:数据库的需求分析是数据库结构设计的第一阶段,主要是收集基本数据、数据结 构以及确定数据处理流程,为下一步设计打基础。在仔细调查计量器具管理过程的基础上,得到系统所要处理的

9、流程如图3.1返回数据查询结果数据流程图3.1通过对计量器具管理系统的内容和数据流程分析,设计的数据项和数据结构如 下:3.1.1部门分类数据表(部门号,使用部门,使用人)3.1.2原始台帐数据表(部门号,器具编号,器具名称,规格型号,原值,数量,产 地,使用状态,检定周期,检定费用,使用部门,使用人,次检时间,续检时间,检 定机构,检定证号、备注)32数据库概念结构设计:在以上需求分析的的基础上,设计出能够满足本厂需求的各种实体,以及确定它 们之间的关系,为后面的逻辑结构设计打下基础。根据上面设计,规划出的实体有:器具原始数据实体和部门数据实体。如图3.2 所示。图3-2实体间的E-R图3.

10、3数据库逻辑结构设计:将上面的数据库概念结构转化为Uisual Foxpro 6.0数据库系统所友持的实际数 据模型,也就是数据库的逻辑结构。在掌握了上面的实体以及实体之间关系的基础上, 确定数据库中的表格以及表格之间的关系。计量器具管理系统数据库中各表格的设计结果如表3-1至3-2所示。每个表格表示在数据库中的一个表。 表3-1原始台帐数据表表 3-1ystzsj 表列名数据类型可否为空说明bmhNNULL部门号qjbhN(12)NULL器具编号qjmcC(12)NULL器具名称glxhN(NULL规格型号slN(6)NULL数量yzN(12)NULL原值cdC(NULL产地sysjD(8)

11、NULL始用时间syz tC(4)NULL使用状态jdzqC(8)NULL检定周期jdhyN(8)NULL检定费用sybmC (10)NULL使用部门syrC(10)NULL使用人cjsjD(8)NULL次检时间xjsjD(8)NULL续检时间jdzqN(2)NULL检定周期jdjgC(12)NULL检定机构bzM(4)NULL备注表3-2部门分类数据表表 3-2bmhlsj 表列名数据类型可否为空说明BmhN(4)NULL部门号sybmC(10)NULL使用部门syrC(10)NULL使用人根据需求分析、概念结构设计的基础上得到数据库的逻辑结构后,在VisualFoxPro 6.0数据库中实

12、现该逻辑结构。实现数据结构的逻辑结构的主要方式使用Visual FoxPro的项目管理器。以下将 原始台帐数据库、部门分类数据库,创建这些表单的过程。首先,先建一个名为“jlqjgl (计量器具管理)”的项目,保存在磁盘中。4.1使用项目管理器实现数据库结构打开,如图4-1所示的“jlqjgl (计量器具管理)”项目后,在项目管理器中展开 数据文件夹,用鼠标选中数据库,单击右侧“NewTable(新建表)”,为数据库添加数 据表(表的内容见表3-1至表3-2)。5 各功能I块的建立5.1开始界面的设计该模块的主要功能是当用户启动使用“计量器具管理系统”时,显示欢迎界面, 开始界面的欢迎词每个1

13、秒钟闪烁一次。当用户按下键盘上任一键时,系统自动进入 下一级表单,即“ mainmenu ”表单。本模块利用一个表单就可以实现其功能。以下是这一模块的设计步骤。首先新建一个表单,保存为“welcome”。将表单的“Caption”属性设定为“欢 迎界面”,“Desktop”属性设置为“.T.-True”。为了给该表单添加一张图片背景, 设其“ Picture ”属性为所要添加图片的地址,本系统中为c:my documen tsLWHFjO56。然后为该表单添加1个“ Timer1 ”控件和1个“ Label1 ”控 件。修改“Time1 ”控件的“Interval”的属性为“ 1000”,这样

14、当每间隔一秒钟触发 一次“ Timer Even t” 事件。“Label1 ”控件的相关属性的内容如表5-1所示。表5-1“Label1”控件中主要属性属性名称属性值Caption欢迎使用计量器具管理系统BackStyle0-TransparentFontBold.T.FontName隶书FontSize36ForeColor16711935“Caption”的属性为所要显示的欢迎词,“BackStyle”属性修改的目的是使 “Label1” 控件的背底透明。修改其“ FontBold”、“FontName”、“FontSize ”和 “ForeColor”属性是为了调整字体形式,以显得美观

15、。其中“ForeColor”为“字体 颜色设置” “洋红色”。并为各个事件添加代码。在“ welcome ”表单的“ ini t”事件中添加代码如下: public nTimenTime=1这段代码的目的是通过设立1个“nTime”全局变量(并设其初始值为“1”)来 控制“ Lable1 ”控件,以达到控制欢迎词的闪烁。在“ welcome ”表单的“ KeyPress ”事件添加代码如下:thisform.release*释放本表单release nTime*释放变量“ nTime”do form mainmenu*运行表单“ mainmenu”这段代码的目的是当按下任意键时,释放该表单和全

16、局变量“ nTime”同时进入 旧一级表单“ mainmenu”。在“Timer”控件的“Timer Event”事件中添加如下代码:if i=0t hisform.Label1.visible=.f.i=1elset hisform.Label1.visible二.t.i=0endif这段代码的内容是通过判断全局变量“ nTime”的值来控制欢迎词的闪烁。当 “nTime”的值为“0”,令“Label1”控件“不可见”,同时置“nTime”为“1”以备 下次触发“Timer Eve nt”事件时使用。同样,当“nTime ”的值为“1”,令“Label1” 控件“可见”,同时置“nTime”

17、为“0”以备下次触发“Timer Event”事件时使用。 通过每隔1秒触发一次“ Timer Even t”事件,可以使“ Label1 ”控件时隐时现,以 达到令欢迎闪烁的目的。5.2退出界面的设计:该模块设计目的是当用户退出系统时显示感谢词,画面停留两秒钟后自动退出, 这一模块利用一个表单可实现其功能。首先新建一个表单,保存为“End”,在其上添加1个“Timer1”控件和3个“Label” 控件。各控件属性表略。在“Time1”控件的“Timer Event”中添加代码如下:thisform.release*释放表单并停止由READ EVENT开始的事件处理,CLEAR EVENT*令

18、程序从READ EVENT的下一条程序行继续执行。将该表单保存后,退出界面这一模块就建立好了。5.3查询界面的设计:这一模块的主要功能是为选择原始台帐数据库提供一个接口。由于本模块只是一 个接口界面,可利用一个表单即解决。该模块的设计步骤如下。先新建一个表单Form,保存为“cxjm”。在表单上添加1个“Imagel控件,1 个控件“Label1”控件,1个“ Timer1 ”控件,1个“ Con tainer1 ”控件和1个“ Command ”控件。在 “Container1 控件上再添加1个“Command”控件。各控件中主要属性表略。修改完各控件的相关属性后,我们为各事件添加代码。在“

19、Form1”的“Init”事件中添加代码如下:public nTimenTime=1*设一个全局变量“nTime”,并设其初始值为“1” 在“Form1”的“ destory”事件中添加代码职下: release nTime*当该表单释放时,同时释放全局变量“ nTime”在“Time1”控件的“Timer Event”事件中添加代码如下:if i=0t hisform.Label1.visible二.t.i=1elset hisform.Label1.visible=.f.i=0endif*通过全局变量nTime1控制“Label1”,使其时隐时现。在“commend1 ”控件的“Click

20、”事件中添加代码如下:do jlqjglformystzcx*进入下级表单,保留本表单在“commend5控件的“Click事件中添加代码如下:thisform.release*释放表单 将该表单保存后,查询界面设计模块就建立好了。5.4数据查询模块设计5.4.1原始台帐数据查询模块设计这一模块实现了最基本而又很重要的功能,它让用户方便快捷、多角度地得知想 要查询的情况。该模块提供“原始台帐数据库”表的查找、数据的添加、删除和修改 功能。同时还提供“原始台帐数据库”的逐条查询和全库浏览。本模块利用在一个表 单中设置两个不同标签页来实现其功能,创建过程如下:首先建立1个表单Forml,然后保存为

21、ystzcx”。为该表单添加1个Pageframel” 控件和7个“Commend”控件。各控件的主要属性如下所示表5.4.1-13至表5.4.1-15。表5-13“Form1”表单中主要属性属性名称属性值Caption原始台帐数据查询Desktop.T.-True表5-14Pageframe1 ”表单中主要属性属性名称属性值Pagecount2Page1.Cap tion原始数据逐条查询Page2.Cap tion原始数据全库查询表5-15各“Command”控件中Caption属性Command ”名称Caption”属性值Command1编辑Command2查找Command3添加Com

22、mand4删除Command5修改Command6提交Command7退出接着为表添加数据表。右键单击表单,在弹出的对话框中选择“Date Environment”。之后会继续弹出一添加表单对话框,为该表单添加“ystzsj表。下 面详细介绍这一添加数据表的过程。在表单“Forml”的控件“Pageframel”上单击鼠标右键,在弹出的对话框中选 择“Edit(编辑)”,然后激活“Pageframe1 ”控件中的“Page1 ”控件。单击鼠标右键 打开数据环境窗口,用鼠标左键点中“ystzsj”中的“Fields(字段)”不放,将其拖 到控件“Page1”控件上。然后调整“Page1”上的各控

23、件的相对位置。同样激活“ Page2”控件,并为其添加1个“ Grid1”控件。设“ Grid1”控件 “Recordcontrols ”属性为表 “ystzsj”,“Readonly” 属性为 “.T.-Ture” “Page2” 页面的设计结果。下面为各事件添加代码。在“Form1”的“init”事件中添加代码如下:t mand6.enabled二.f.*置“ command6”(“提交”按钮)为不可用public flagflag=0*设全局变量“ flag ”并设其初值为“0”在“Form1”的“Destory”事件中添加代码如下:release flag*从内存中释放全局变量“ fl

24、ag”在“Command1 ”的“Click”事件中添加代码如下:for i=2 to 38 step 2t hisform.Pageframe1. Page1.co nt rols(i-1).co nt rolsource二t hisform.Pageframe1. Page1.co nt rols(i-1).enabled=.T.endfor*通过循环语句继开“Page1”中各“Text”控件的“controlsource”属性,同时将其置为可用*以便在其中添加数据t hisform.Pageframel.Pagel .txt bMh.value二t hisform.Pageframel.

25、Pagel .txt Qjbh.value=,t hisform.Pageframel.Pagel .txt Qjmc.value二t hisform.Pageframel.Pagel .txt Glxh.value二t hisform.Pageframel.Pagel .txt sl.value二t hisform.Pageframel.Pagel .txty z.value二t hisform.Pageframel.Pagel .txt Cd.value二t hisform.Pageframel.Pagel .txt syz t. value二t hisform.Pageframel.Pa

26、gel .txt jdzq.value二t hisform.Pageframel.Pagel .txt Sysj.value二t hisform.Pageframel.Pagel .txt jdhy.value二t hisform.Pageframel.Pagel .txt Sybm.value二t hisform.Pageframel.Pagel .txt Syr.value二t hisform.Pageframel.Pagel .txt cjsj.value二t hisform.Pageframel.Pagel .txt xjsj.value二t hisform.Pageframel.Pa

27、gel .txtj djg.value二t hisform.Pageframel.Pagel .txt Jdzh.value二t hisform.Pageframel.Pagel .txt Bz.value二*通过以上语句清空“ Pagel”上所有“ Tex t”控件的值在Command2”的Click”事件中添加代码如下:local condition*定义局部变量condition”condition二*为局部变量condition赋初值,令condition为一空字符串 for i=2 to 38 step 2if len (t hisform.Pageframel.Pagel.co n

28、t rols(i-l).value)0st rl=al It rim( thisform.Pageframel.Pagel.co nt rols(i).name)st r2=subs tr(s trl,4)condition二condition+str2+二+;+al It rim( thisform.Pageframel.Pagel.co nt rols(i-l).value) +”+andendifendfor*这一段“forendfor”语句的功能是通过if语句判继将*所有查询条件不为空的字段名内容用“=”连接,*各查询条件之间用“and”连接组成一个新字符串存在局部变量“conditi

29、on” 中cond ition二 lef t( cond itio n,len(cond ition )-5)condition二alltrim(condition)*通过两个函数“left()和alltrim() ”去掉“Condition”字符串中尾部多余的 字节和前后的*空格select * form ystzsj where &condition*利用宏功能,将局部变量“condition”中存的字符串为查询条件,查找符合的 记录for i=2 to 38 step 2st r1=al lt rim( thisform.Pageframel.Pagel.co nt rols(i-l).

30、name) st r2二subs tr(s trl,4)t hisform.Pageframel.Pagel.co nt rols(i-1).co nt rolsource=ys tzsj.+s tr2 t hisform.Pageframel.Pagel.co nt rols(i-1).enabled=.f.endfor*将Page1上各“Text”控件的“controlsource”属性与“ystzsj”表中的相应 字段建立联系在“Command3”的“Click”事件中添加代码如下:SET MULTILOCKS ONcursorse tprop(buffering,3)for i=2 t

31、o 38 step 2t hisform.Pageframe1.Page1.co nt rols(i-1).co nt rolsource二t hisform.Pageframe1.Page1.co nt rols(i-1).enabled=.T.endfor*通过循环语句继开“Pagel中各“Text”控件的“controlsource属性,同 时将其置为可用ed=.f.*置与数据库有关的按钮为不可用,以防误操作。将表单保存后整个原始台帐数据查询模块就建立起来了。5.5初始化模块设计该模块的主要功能是使用可以定期清空数据库表内容,同时也能保存表结构。以 便新数据的输入,防止旧数据对新数据产生

32、不必要的影响,为用户节省更多的磁盘空 间,本模块可利用一个表单实现其功能。该模块的设计如下。首先新建一表单Forml,保存为“czh”。修改其“Caption”属性为“初始化数 据表单”,“Desktop”属性设置为“.T.-True”。为该表单添加1个“Containerl 控件、1个“Imagel”控件,2个“Command”控件和2个“Label”控件。在“Containerl”控件上添加2个“Check”控件。各控件的主要属性表略。下面为各事件添加代码。在“Commandl”控件的“Check”事件中添加代码如下:if t hisform.co nt ainerl.checkl.val

33、ue=luse jlqjgldatabaseystzsj exclusivedelete allpackuseendifif t hisform.co nt ainerl.check2.value=luse jlqjgldatabase bmhlsjdelete allpackuseendif*将选定的数据表格清空。在在“Command2”控件的“Check”事件中添加代码如下:thisform.release将该表单保存后这一模块就建立好了。5.6数据录入模块设计该模块的功能是初始化后进行新数据的输入,只有将数据写入到相应的数据表中 才能对它们进行查询、修改、打印等操作。本模块利用在一个表单

34、中设置3个不同标 签页来实现其功能。该模块的设计步骤如下:首先新建一个表单Forml,保存为“sjlr”。修改该表单的“Caption的属性为 “数据输入界面”,“ Desk top”属性设置为“ .T.-True”。为该表单添加1个 “Pageframel ” 控件。在“Pageframe1 ”控件上添加3个“Command”控件。参考原始数据查询模块中数据表的添加方法,为该表单添加“yst zsj ”数据表。 在“Pageframe1”控件上单击鼠标右键选择“Edit (编辑)”,激活“Page1”控件。 将“Data Enviroment(数据环境)”中表“sytzsj”中各字段用鼠标拖

35、放至“Page1” 上,并调整各控件相对位置使页面美观。修改 “Pageframe1” 控件中 “Pagecount” 属性为 “1”。“Command ”控件和“ Page ”控件的“ Cap tion”属性如表略。thisform.release“Pageframe1 ”控件中其它“Page”页各事件中代码与“Page1”中类似,本设 计不再一一列出。然后将表单“ystzk”、“jxjdk”和“bmsyk”保存后,这一模块就 建立好了。5.7数据修改模块设计数据更新模块的主要功能是为用户提供一个修改已录入数据的窗口。这一模块的 界面设计如下。5.7.1首先创建一个“ Fy.vcx ”导航条

36、的子类设计如下:A. 在项目管理器中选择“Classes(类)”选项卡,B. 选择新建“New(新建)”,出现一个类对话框,C. 在“Class Name(类名)”框中键入 fy,“Based On (派生于)”框中选择 “Command Group(按钮组)”,存储框中填入要存的路径。单击“ OK(确定)”按钮进入设计窗口。D. 在属性窗口中修改Buttoncount (按钮数目)属性,使其值为4,这时出现了 4 个按钮,将按钮拖动到适当的位置,并根据需要修改每个按钮的Caption属性, 使其为“上一个”、“第一个”、“下一个”、“最后一个”。E. 在按钮“上一个”的Click事件中输入如

37、下代码: skip-1*记录后退一个if bof()*如已为第一个记录messagebox( “已是第一个记录”,48,“信息窗口”) *当已为第一个记录时,显示提示信息t his.pare nt .commendl.enabled二.f.t his.pare nt .commend2.enabled二.f. skip*记录前进一个,使之仍显示第一个记录elset his.pare nt .commendl.enabled二.t.t his.pare nt .commend2.enabled二.t.endift his.pare nt .commend3.enabled二.f.t his.pa

38、re nt .commend4.enabled二.f.*根据状况设置各按钮的可用状态thisform.refresh功能:向前翻页F. 在按钮“第一个”的Click事件中输入如下代码: goto top*到第一个记录t his.pare nt .commend1.enabled二.f.t his.pare nt .commend3.enabled二.t.t his.pare nt .commend4.enabled二.t.*根据状况设置各按钮的可用状态thisform.refresh 功能:翻页至第一个记录。在按钮“下一个”的Click事件中输入如下代码: skip*记录前进一个if eof(

39、)*如已为最后一个记录messagebox( “已是最后一条记录,4&信息窗口) skip-1*记录后退一个,使之仍为显示最后一个记录d二.t.*根据状况设置各按钮的可用状态thisform.refresh功能:向后翻页在按钮“最后一个”的Click事件中输入如下代码:goto bottom*到最后一个记录t his.pare nt .commend3.enabled二.f.t his.pare nt .commendl.enabled二.t.t his.pare nt .commend2.enabled二.t.*根据状况设置各按钮的可用状态thisform.refresh功能:翻页至最后一个

40、记录以上就是一个具有翻页功能的fy子类就创建出来了。其次新建一个表单Forml,保存为“sjxg”。修改该表单的“Caption”的属性为 “数据输入界面”,“Desk top”属性设置为“ .T.-True”。为该表单添加1个 “Pageframel ” 控件。在“Pageframe1 ”控件上添加3个“Command”控件。参考原始数据查询模块中数据表的添加方法,为该表单添加“yst zsj” 1个数据 表。在“Pageframe1”控件上单击鼠标右键选择“Edit (编辑)”,激活“Page1”控件。 将“Data Enviroment(数据环境)”中表“sytzsj”中各字段用鼠标拖放

41、至“Page1” 上,并调整各控件相对位置使页面美观。然后单击“ Form Con trols” 窗口中的“ View Classes ”按钮,在弹出的菜单 中选择“Add(添加)”,在弹出的对话框中创建类“Fy.vcx”。这时“Form Controis” 中的控件修改“Pageframe1”控件中“Pagecount ”属性为“ 1 ”。的样子,单击“Fy”,为表单添加该控件。“Command控件和“Page控件的“Caption属性表略。5.8数据备份模块设计这一模块的主要功能是将数据库中的表备份到指定的路径中,以防止数据的丢 失,同时可在数据库中的表损坏时恢复表,避免更大的损失。这一模

42、块也是通过设计 一个表单来实现的。为了实现该模块的设计,需要首先自建一个继承于Out Line类的“ Ac ti veX ”控 件,名称为“ OleOu tLine”。首先单击菜单条中的“New(新建)”按钮,在弹出的对话框中选择类“class”), 单击“New(新建)”按钮,创建一个新类,创建过程如下:在弹出的对话框中的“Class Neme(类名)”中填写“outline”;在Based on(派 生于)”中单击右侧按钮选择“OleControl”;在“Store in(存储于)”中填写存储路 径名,本系统为“c:program filesmicrosoft visualvfp98jlq

43、jgl”。单击 “OK (确定)”在弹出的对话框中的左侧单选框中选择“Insert Control_Type”框中选择 “OutLine Control”然后单击“OK (确定)”按钮。这样就完成了一个新控件的建立过程,该控件将保存在选定的路径中。下面为该控件添加一些事件。为该控件新建事件的步骤为:首先单击菜单中的“Class(类)”,在弹出的菜单中 选择“NEW Method(新建方法程序)”,在弹出的对话框中“Name(名称)”框中填写 所要添加的事件名即可。*置“备份文件”按钮为可用release path2release m.cDir在“Command2”的“Click事件中添加代码如

44、下:close all*关闭所有工作区中已被打开的数据库、表和索引文件 local pathl*定义局部变量“ pa thl”path1=alltrim(thisform.textl. value)*为局部变量“ pathl”赋值if len(pa th1)=2pathl二pathl+ endif*如果路径名为盘符根目录,则应在文件名后加“”否则备份文件时会出错if t hisform.co nt ainer1.check1.value=1*如果用户选择了 “check1”copy file jlqjglystzsj.dbf to &path1*将相应文件备份至选定目录t mand2.enab

45、led=.f.*置“备份文件”按钮为不可用release path1open database jlqjgjlqjgl.dbc exclusive*以独占方式打开数据库“ jlqjgl.dbc”在“Command3”的“Click”事件中添加代码如下:thisform.release*将该表单保存后这一模块就建立好了,数据备份模块设计完成。5.9打印模块设计该模块的主要功能是打印数据报表的界面并提供打印预览功能。界面都包括了需 要打印的报表,下面介绍打印界面中“原始台帐数据表” “检修检定数据表”、“部门 使用数据表”和“封存器具数据表”报表的设计方法。首先设计打印界面的设计,这一界面通过一个

46、表单的设计实现。打印界面的基本 设计方法与控件的使用与前面的表单设计大同小异,其设计结果和控件中相应的代 码。在“打印”按钮的“ Click ”事件中添加代码如下:do form jlqjgsjby*打开下级表单在“返回”按钮的“ Click ”事件中添加代码如下:t hisform.release“打印”按钮打开的是“打印界面”,该打印也是通过一个表单设计实现的,该 界面的设计结果如下:在“预览”按钮的“ Click ”事件中添加代码如。*释放该表单至此打印模块各界面设计结果,下面介绍“原始台帐数据”、“检修检定数据”、“部 门使用数据”和“封存台帐数据”报表的设计。首先在“Project

47、Manager(项目管理器)”中选择“Documents(文档)”页,在其 中选择“reports(报表)”,单击右侧“New(新建)”按钮新建一报表,保存为“tz”。然后单击菜单的“ report (报表)”按钮,在弹出的下拉菜单中选择第一项“Title/Summary”,在弹出的对话框中选择“Title band”并按下“OK(确定)”。 这时出在新建的报表上方多出了一栏“Title”。目前报表设计器中共分标题带区“Title (标题带区)”、“Page header(页标头 带区)”、“Detail(细节带区)”和“Page footer(页注脚带区)”共4个带区,每个带 区在设计时的主

48、要功能如下: “Title (标题带区)”:放置标题、日期等围绕标题内容的矩形框,每个报表 打印一次。 “Page header(页标头带区)”:放置列标题,每页打印一次。 “Detail(细节带区)”:放置数据和描述性文本。每个分组打印一次。 “Page footer(页注脚带区)”:放置日期、页号等。每页打印一次。在菜单栏中选择“View(视图)”,在下拉菜单中选中“ Grid Lines(网格线)”打 开网格。利用报表工具栏中的控件在报表设计器中设计报表。设计步骤如下:在标题带区添加1个“Label”控件,内容添加为“原始台帐数据报表”;添加1 个“Field”控件,在弹出的对话框中单击

49、表达式右侧按钮,在弹出的对话框中选择 函数 “DateO ”。用同样的方法为页注脚带区也添加1个“Field”控件,表达式为” 第” +alltrim(str(_pageno)+ ”页”返回当前页的数值,str()函数将数值表达式值 转换为字符串,all trim ()函数则去掉字符串首尾的空格。“Page header(页标头带区)”和“ De tail(细节带区)”的设计参见报表设计结 果。与表单的数据环境设置一样,将表“tz”添加到该表中。将报表中对应的字段利 用“Field”控件添加到报表的细节区中,保存文件后,“原始台帐数据报表”的报表 就建立好了。将“检修检定数据”、“部门使用数据

50、”和“封存器具数据”报表一一设 计并保存文件后,打印模块的全部功能就设计完毕了。5.10代码设计本系统代码设计包括启动的主程序、设置系统执行的配置环境程序和恢复环境配 置的程序。主程序主程序是应用程序的主文件,即应用系统的第一个执行程序。该程序的功能包括(1)确认安装目录并设定其为默认目录。这样在执行所有的表单、报表、程序、 菜单时就不用在加绝对路径。(2)声明应用系统执行的配置环境。(3)执行第一个用户界面。(4)设置Visual Foxpro 6.0的桌面环境。(5)设置读取程序的开始点。(6)执行应用程序结束时系统环境还原程序。建立方法为:在项目管理器的代码页中选择“Program(程序

51、)”,在单击“New(新 建)”按钮,在弹出的程序框中编写代码主程序中代码如下:*应用系统主程序*程序名称:MATN.PRG*LOCAL,lcProgramLcSysl6二SYS(16) LcProgram二SUBSTR(lcSysl6,AT(“:”,lcSysl6)-l)CD LEFT(lcProgram,RAT(“”,lcProgram)DEACTIVATE WINDOW “PROJECT MANAGER”Do jlqjglsettingDo form jlqjglwelcome_screen.cap tion二”_screen.lef t二 T0000read eventsDO jlqj

52、glreset代码设计说明。使用“LOCAL”定义2个局部变量。使用系统参数“SYS (16)”返回当前正在运行的程序名,包括路径。使用AT()函数返回第一个字符串在第二个字符串中首次出现的数字位置。本 系统地在程序名中的位置。 SUBSTR ()函数返回在另一个字符串。其中逗号后的数字表明在指定字符串中 的开始位置。 RAT()函数返回在另一个字符中最后出现第一个字符串的位置。 LEFT()函数从一个字符串中的最左端返回指定数目的字符。 DEACTIVATE WINDOW “PROJECT MANAGER”语句可以把项目管理器关闭。使用DO命令执行程序setting.prg,设置执行期间的配

53、置程序。使用DO FORM执行系统的第一个界面程序。执行READ EVENTS指令开始读取事件程序,让程序开始运行起来。当执行了 CLEAR EVENTS事件程序后。通过DO命令执行一个配置还原程序 reset,还原系统配置。程序Setting.prg是用来设置环境配置的,它包括关掉系统菜单,允许显示 运行结果,隐藏状态栏等一系列有利于程序运行的设置。Sett ing.prg程序的代码如下:*环境配置程序*程序名称:SETTING.PRG*set sysmenu offset sysmenu toset status bar offset notify offset clock statuss

54、et palette offset escape onset keycomp to windowsset carry onset confirm onset exact onset near onset ansi offset lock onset exclusive offset multilocks onset deleted onset optimixe onset refresh to 0,5set collate to strokeset defau lt to sys(5)+curdir()set path to sys(5)+curdir()set sysformates off

55、set seconds onset century offset currency leftset currency to nt$set hours to 12set date to usaset fdow to 1set fweek to 1set mark to .Set separa tor to ,Set poi nt to .程序Reset.prg是还原系统配置的,包括恢复系统菜单和其他一些开发环境所必 需的配置。Rese t.prg程序的代码如下:*还原环境配置*程序名称:RESET.PRG*set sysmenu to defanltset sysmenu onset talk

56、onset notify onset exclusive onset safety onmodify window screen6开发中的难点和解决技巧61类的概念首先,要理解对象就是一个事物。窗口、字段、按钮都是对象。其方法与属性, 属性是对象的物理性质,如窗口的长度、宽、高、颜色、字体等,方法是对象可以执 行的动作,如“Init”方法、“Click”方法、“refresh”方法等.6.2程序设计中的遇到的问题和解决方法6.2.1复杂报表的制作对于简单的报表可以用报表设计器直接设计,而对于复杂的报表利用报表设计器 制作固然更灵活但略显繁琐,因此可以先用报表向导制作然后用报表设计器修改,这 样

57、就可提高效率。7运行结果经过运行,界面友好,系统功能较完善。(具体见系统运行情况)8安装与使用环境8.1软盘安装:将系统软盘中的jlqjgl及my documents两文件夹拷贝到计算机硬盘中的C盘或 其它盘中。打开jlqjgl文件夹,将计量器具管理系统狐狸头快捷方式的图标发送到桌面;双击快捷方式 图标就可进入本系统。8.2运行环境运行环境:Windows 9x、Windows NT 或 Windows 2000;开发工具为 Visual Foxpro6.0。小结1系统功能完成情况介绍该系统能够以友好的界面面对用户,各项工作准确、快捷,大大提高了工作效 率。查询模块快速生成用户所需的信息。数据

58、更新变动界面完全符合用户的要求。报 表生成与统计工作轻松完成,对用户的各项工作要求均能找到相适应的操作模块,整 个系统功能比较完善,基本符合了用户的要求。2 系统还存在的问题和改进措施该系统不能对整个数据库结构进行改动,还不能满足用户对数据项变动的要求。 对此项问题的解决方法应是增加结构语句的运用,方便用户变动器具,以实现器具的 更完善管理。3 此次系统设计后的心得体会终于完工了,经历了无数次的程序出错,终于看到了一个自己生平第一次建立的系统, 这种成功的喜悦与成就感是我从未有过的。在设计这个系统之前,我已经学完了所有计算机应用专科段的专业课,但心里老有一点空荡荡的感觉,总感到学的东西好 象没

59、什么太大用处,理论与实际相距实在是太远了。在这最后毕业设计出现在我眼前 时,我开始怀疑自己,我能够完成这样一项我从未经历过的工作吗?随后我开始了自 己的摸索,查找有关vfp6. 0设计的书籍和以前所学的专业书,再次学习了一遍,不 停的将书中内容加入到所做的系统中去,我开始熟悉了我以前完全是死记硬背下来的 概念与系统设计理念。系统的框架开始形成。一些模块的开发,在书本中没有相关的 内容命令,只有想一些新的办法才能实现功能模块,当想出的办法在系统测试中一次 次的成功,我开始喜欢上了这份工作。终于在一个个功能模块都测试正常,系统联调 基本达到预期目标之后,我的系统开发基本成功!谢辞朱教授作为我的指导

60、老师,从论文题目的确定、到软件的开发整个过程都倾注了 大量的心血,使我学到了很多知识、并且帮助我解决各种问题,最终完成了程序的设 计和实现。朱教授认真负责的工作态度,严谨的治学精神和深厚的理论水平都使我获 益匪浅,无论在理论上还是在实践中都给我很大的帮助,这对我以后的工作和学习都 是一种很大的影响,感谢他细心又耐心的辅导。在此向他表示衷心的感谢!这里也感谢计算机系的多位老师,几年来,是他们系统的在理论上给了我很大的 帮助,让我能很好的完成这次毕业设计,这里再次衷心的表示感谢。主要参考文献1、软件工程导论,张海潘著,清华大学出版社,1996.12、数据库原理及应用,靳学辉编著,电子工业出版社,1997.63、 Visual FoxPro6.0程序设计工程师,网冠科技编著,机械工业出版社,2001.54、中文Visual FoxPro6.0实用教程,沈旭辉编著,电子科技大学出版社,2000.7

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!