版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、计量器具管理系统专业:计算机应用 姓名:罗维海 指导教师:朱程荣【摘要】计量器具的管理水平,直接影响到企业产品质量符合性的要求,为确保计 量器具能够及时准确量传和溯源;通过本管理系统建立在用计量器具管理台帐,掌握 计量器具检修检定信息、部门使用状态信息和封存计量器具管理台帐,使我厂的计量 器具管理工作系统化、规范化、自动化,从而达到提高企业计量器具管理效率与水平 的目的。【关键词】计量器具管理系统分析、设计、开发与实施【外文摘要】(略)|0 /新击擘毕业设计(论文)报告纸 TOC o 1-5 h z 目录1弓1言3 HYPERLINK l bookmark10 o Current Docume
2、nt 2计量器具管理系统设计4 HYPERLINK l bookmark13 o Current Document 2.1系统目标设计4 HYPERLINK l bookmark16 o Current Document 2.2开发设计思想4 HYPERLINK l bookmark19 o Current Document 2.3开发和运行环境4 HYPERLINK l bookmark22 o Current Document 2.4系统功能分析42.4.1主控模块42.4.2初始化模块42.4.3数据输入模块42.4.4数据更新模块42.4.5器具查询模块42.4.6数据拷贝模块52.4
3、.7打印报表模块52.4.8退出模块5 HYPERLINK l bookmark25 o Current Document 3数据库设计6 HYPERLINK l bookmark28 o Current Document 3.1需求分析6 HYPERLINK l bookmark31 o Current Document 3.2数据库概念结构设计7 HYPERLINK l bookmark34 o Current Document 3.3数据库逻辑结构设计7 HYPERLINK l bookmark37 o Current Document 4数据库结构实现9 HYPERLINK l boo
4、kmark40 o Current Document 4.1使用项目管理器实现数据库结构9 HYPERLINK l bookmark43 o Current Document 5各功能模块的建立10 HYPERLINK l bookmark46 o Current Document 5.1开始界面的设计10 HYPERLINK l bookmark49 o Current Document 5.2退出界面的设计11 HYPERLINK l bookmark52 o Current Document 5.3查询界面的设计12 HYPERLINK l bookmark55 o Current Do
5、cument 5.4数据查询模块设计135.4.1原始台帐数据查询模块设计13 HYPERLINK l bookmark58 o Current Document 5.5初始化模块设计17 HYPERLINK l bookmark61 o Current Document 5.6数据录入模块设计18 HYPERLINK l bookmark64 o Current Document 5.7数据修改模块设计19 HYPERLINK l bookmark73 o Current Document 5.8数据备份模块设计21 HYPERLINK l bookmark76 o Current Docu
6、ment 5.9打印模块设计22 HYPERLINK l bookmark83 o Current Document 5.10代码设计24 HYPERLINK l bookmark96 o Current Document 6开发中的难点和解决技巧28 HYPERLINK l bookmark105 o Current Document 7运行结果298软件的安装与使用30小结31 HYPERLINK l bookmark116 o Current Document 谢辞32 HYPERLINK l bookmark119 o Current Document 主要参考文献331引言我厂福州铁
7、路分局直属的二等基层站段,是从事铁路货物装卸机械化的专业工 厂,下设八个班组六个职能科室;其主要产品是0.5t-65t门、桥式起重机。在制造、 维修产品过程中,各零部件的形状、位置尺寸直接影响到本企业的产品质量的稳定与 提高。目前计量器具的管理工作由质管科负责,采用手工校对计量器具台帐信息、使 用信息、检修检定信息和日常管理工作;由于本企业的计量器具品种较全且数量较多、 达三百多件套,目前没有一套计算机系统软件进行管理,一方面要掌握本企业器具管 理台帐信息、及使用信息,另一方面要掌握本企业器具检修检定信息,同时又必须确 保在用器具是合法、有效的;工作量很大,而且会出现超过检定时效的器具在生产过
8、 程中量传,进而影响产品质量的符合性要求。因此要加强企业计量器具的基础管理工作。急需一套计量器具的管理系统,对计量器 具进行有效管理,准确掌握计量器具的量传和溯源,提高企业的产品质量;本系统将 较全面对计量器的管理进行研究。2计量器具管理系统设计2.1系统目标设计:系统应具有良好的人机界面,灵活的窗口风格,友好的帮助使用说明以及较完 整的器具管理流程,让使用该系统的工作人员无须拥有专业的电脑知识,轻松完成日 常工作。整个系统应直观统一化,能够方便的进行各种信息查询,各项查询工作轻松 点击即可完成。报表打印格式统一,操作快捷,数据修改简洁明了。新系统应利于维 护,整个系统应使原先手工管理模式下的
9、工作效率低,工作量大,出错率高的状况完 全得以转变,使我厂计量器具管理工作系统化、规范化、自动化,从而达到提高企业 计量器具管理效率与水平的目的。2.2开发设计思想:2.2.1由于本企业尚无计量器具管理系统,因此开发尽可能采用现有本企业的计算机 软硬件环境。2.2.2系统符合本企业监视与测量装置控制程序之规定,满足计量器具日常管理 工作的需要并达到操作过程的直观、方便、实用、安全等要求。2.2.3系统采用模块化程序设计方法,既便于系统功能模块的组合,又便于未参与开 发的技术维护人员补充、维护。2.2.4系统具备数据库维护功能,能及时根据企业器具情况进行数据的初始化、添加、 删除、修改、备份操作
10、。2.3开发和运行环境:开发工具:Visual Foxpro 6.0运行环境:Windows 9x Windows NT 或 Windows 2000.2.4系统功能分析:计量器具管理系统需要完成功能主要有:2.4.1主控模块:该模块是整个系统的控制中心,包含数据初始化、数据输入、数据 更新、查询、是系统进入各级子模块的入口。2.4.2初始化模块:初始化是系统工作的准备工作,系统每次工作前必须删掉上一次 操作保留的部分数据,然后才能进行新数据的录入,初始化的功能是清除以前的数据, 以防旧数据对新数据产生不必要的影响。2.4.3数据输入模块:系统基础是输入数据,只有将数据写入到相应的数据库后,才
11、 能对它们进行查询、修改、打印。2.4.4数据更新模块:数据更新模块的主要功能是对已输入数据进行修改。2.4.5器具查询模块:该模块的主要功能是显示某一器具的所有信息。2.4.6数据拷贝模块:该模块是数据库中的记录拷贝到备份数据库中,以防止数据库 的丢失。同时把数据库里不需要的东西删除,以节省磁盘空间。2.4.7打印报表模块:该模块是将所需要的数据以表格形式从打印机打印出来,它是 由台帐、检修检定表、部门器具表和封存台帐表组成。2.4.8退出模块:当退出系统时,给出欢迎使用等信息。主控模器具查询数据备份部门数据录入原始数据录入原始台帐报表部门器具报表检修计划报表封存器具报表系统功能模块图2.1
12、3数据库设计数据库的结构设计是一个非常重要的问题,数据库设计的好坏,直接对本系统的 效率以及实现效果产生影响。同时减少数据库的存储量,做到数据的完整性和一致性 比较高,使系统有较快的响应速度。在数据库系统设计的时候尽量考虑全面,尤其要仔细考虑计量器具管理过程中的 各种管理过程的要求,避免在设计过程中浪费不必要的人力和物力。3.1需求分析:数据库的需求分析是数据库结构设计的第一阶段,主要是收集基本数据、数据结 构以及确定数据处理流程,为下一步设计打基础。在仔细调查计量器具管理过程的基础上,得到系统所要处理的流程如图3.1返回数据查询结果数据流程图3.1通过对计量器具管理系统的内容和数据流程分析,
13、设计的数据项和数据结构如下:3.1.1部门分类数据表(部门号,使用部门,使用人)3.1.2原始台帐数据表(部门号,器具编号,器具名称,规格型号,原值,数量,产 地,使用状态,检定周期,检定费用,使用部门,使用人,次检时间,续检时间,检 定机构,检定证号、备注)3.2数据库概念结构设计:在以上需求分析的的基础上,设计出能够满足本厂需求的各种实体,以及确定它 们之间的关系,为后面的逻辑结构设计打下基础。根据上面设计,规划出的实体有:器具原始数据实体和部门数据实体。如图3.2 所示。使用部门图3-2实体间的E-R图3.3数据库逻辑结构设计:将上面的数据库概念结构转化为Uisual Foxpro 6.
14、0数据库系统所友持的实际数 据模型,也就是数据库的逻辑结构。在掌握了上面的实体以及实体之间关系的基础上, 确定数据库中的表格以及表格之间的关系。计量器具管理系统数据库中各表格的设计结果如表3-1至3-2所示。每个表格表示在数据库中的一个表。表3-1原始台帐数据表表 3-1ystzsj 表列名数据类型可否为空说明bmhN(4)NULL部门号qjbhN(12)NULL器具编号qjmcC(12)NULL器具名称glxhN(16)NULL规格型号slN(6)NULL数量yzN(12)NULL原值cdC(16)NULL产地sysjD(8)NULL始用时间syztC(4)NULL使用状态jdzqC(8)N
15、ULL检定周期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数据库中实现该逻辑结构。实现数据结构的逻辑结构的主要方式使用Vis
16、ual FoxPro的项目管理器。以下将 原始台帐数据库、部门分类数据库,创建这些表单的过程。首先,先建一个名为“jlqjgl (计量器具管理)”的项目,保存在磁盘中。4.1使用项目管理器实现数据库结构打开,如图4-1所示的“jlqjgl(计量器具管理)”项目后,在项目管理器中展开 数据文件夹,用鼠标选中数据库,单击右侧“NewTable(新建表)”,为数据库添加数 据表(表的内容见表3-1至表3-2)。5各功能模块的建立5.1开始界面的设计该模块的主要功能是当用户启动使用“计量器具管理系统”时,显示欢迎界面, 开始界面的欢迎词每个1秒钟闪烁一次。当用户按下键盘上任一键时,系统自动进入 下一级
17、表单,即“mainmenu”表单。本模块利用一个表单就可以实现其功能。以下是这一模块的设计步骤。首先新建一个表单,保存为“welcome”。将表单的“Caption”属性设定为“欢 迎界面”,“Desktop”属性设置为“.T.-True”。为了给该表单添加一张图片背景, 设其“ Picture ”属性为所要添加图片的地址,本系统中为c:my documentsLWHFj056。然后为该表单添加1个“Timer1”控件和1个“Label1”控 件。修改“Time1”控件的“Interval”的属性为“1000”,这样当每间隔一秒钟触发 一次“ Timer Event” 事件。“Label1”控
18、件的相关属性的内容如表5-1所示。表5-1“Label1”控件中主要属性属性名称属性值Caption欢迎使用计量器具管理系统BackStyle0-TransparentFontBold.T.FontName隶书FontSize36ForeColor16711935“ Caption ”的属性为所要显示的欢迎词,“ BackStyle ”属性修改的目的是使“Label1 ”控件的背底透明。修改其“ FontBold”、“FontName ”、“FontSize”和 “ForeColor”属性是为了调整字体形式,以显得美观。其中“ForeColor”为“字体 颜色设置” “洋红色”。并为各个事件添
19、加代码。在“welcome”表单的“init”事件中添加代码如下:public nTimenTime=1这段代码的目的是通过设立1个“nTime”全局变量(并设其初始值为“1”)来 控制“Lablel”控件,以达到控制欢迎词的闪烁。在“welcome”表单的“KeyPress”事件添加代码如下:thisform.release*释放本表单release nTime*释放变量“ nTime”do form mainmenu*运行表单“ mainmenu”这段代码的目的是当按下任意键时,释放该表单和全局变量“nTime”同时进入 旧一级表单“ mainmenu”。在“Timer”控件的“Timer
20、 Event”事件中添加如下代码:if i=0thisform.Label1.visible二.f.i=1elsethisform.Label1.visible二.t.i=0endif这段代码的内容是通过判断全局变量“ nTime”的值来控制欢迎词的闪烁。当 “nTime”的值为“0”,令“Label1”控件“不可见”,同时置“nTime”为“1”以备 下次触发“Timer Event”事件时使用。同样,当“iTime”的值为“1”,令“Label1” 控件“可见”,同时置“nTime”为“0”以备下次触发“Timer Event”事件时使用。 通过每隔1秒触发一次“Timer Event”事
21、件,可以使“Label1”控件时隐时现,以 达到令欢迎闪烁的目的。5.2退出界面的设计:该模块设计目的是当用户退出系统时显示感谢词,画面停留两秒钟后自动退出, 这一模块利用一个表单可实现其功能。首先新建一个表单,保存为“End”,在其上添加1个“Timer1”控件和3个“Label” 控件。各控件属性表略。在“Time1”控件的“Timer Event ”中添加代码如下:thisform.release*释放表单并停止由READ EVENT开始的事件处理,CLEAR EVENT*令程序从READ EVENT的下一条程序行继续执行。将该表单保存后,退出界面这一模块就建立好了。5.3查询界面的设计
22、:这一模块的主要功能是为选择原始台帐数据库提供一个接口。由于本模块只是一 个接口界面,可利用一个表单即解决。该模块的设计步骤如下。先新建一个表单Form,保存为“cxjm”。在表单上添加1个“Image1”控件,1个控件Label1”控件,1个“ Timer1 ”控件,1个“ Container ”控件和1个“ Command ”控件。在 “Container”控件上再添加1个“Command”控件。各控件中主要属性表略。修改完各控件的相关属性后,我们为各事件添加代码。在“Form1”的“Init”事件中添加代码如下:public nTimenTime=1*设一个全局变量“nTime”,并设其
23、初始值为“1”在“ Form1”的“ destory”事件中添加代码职下:release nTime*当该表单释放时,同时释放全局变量“ nTime”在“Time1”控件的“Timer Event ”事件中添加代码如下:if i=0thisform.Label1.visible二.t.i=1elsethisform.Label1.visible=.f.i=0endif*通过全局变量nTime1控制“Label1”,使其时隐时现。在“commend1 ”控件的“Click”事件中添加代码如下:do jlqjglformystzcx*进入下级表单,保留本表单在“commend5”控件的“Click
24、”事件中添加代码如下:thisform.release*释放表单将该表单保存后,查询界面设计模块就建立好了。5.4数据查询模块设计5.4.1原始台帐数据查询模块设计这一模块实现了最基本而又很重要的功能,它让用户方便快捷、多角度地得知想 要查询的情况。该模块提供“原始台帐数据库”表的查找、数据的添加、删除和修改 功能。同时还提供“原始台帐数据库”的逐条查询和全库浏览。本模块利用在一个表 单中设置两个不同标签页来实现其功能,创建过程如下:首先建立1个表单Form1,然后保存为“ystzcx”。为该表单添加1 4“Pageframe1” 控件和7个“Commend”控件。各控件的主要属性如下所示表5
25、.4.1-13至表5.4.1-15。表5-13“Form1”表单中主要属性属性名称属性值Caption原始台帐数据查询Desktop.T.-True表5-14Pageframe1 ”表单中主要属性属性名称属性值Pagecount2Page1.Caption原始数据逐条查询Page2.Caption原始数据全库查询表5-15各“Command”控件中Caption属性“Command ”名称“Caption ”属性值Command1编辑Command2查找添加删除修改提交退出Command3Command4Command5Command6Command?接着为表添加数据表。右键单击表单,在弹出的
26、对话框中选择“Date Environment”。之后会继续弹出一添加表单对话框,为该表单添加“ystzsj”表。下 面详细介绍这一添加数据表的过程。在表单“Forml”的控件“Pageframel”上单击鼠标右键,在弹出的对话框中选 择“Edit(编辑)”,然后激活“Pageframel”控件中的“Pagel”控件。单击鼠标右键 打开数据环境窗口,用鼠标左键点中“ystzsj”中的“Fields(字段)”不放,将其拖 到控件“Pagel”控件上。然后调整“Pagel”上的各控件的相对位置。同样激活“ Page2”控件,并为其添加l个“Gridl”控件。设“ Gridl”控件 “Recordc
27、ontrols ”属性为表ystzsj”,“Readonly”属性为.T.-Ture” Page2” 页面的设计结果。下面为各事件添加代码。在“Forml”的“init”事件中添加代码如下:mand6.enabled=.f.*置“ command6”(“提交”按钮)为不可用public flagflag=0*设全局变量“flag”并设其初值为“0”在“ Forml”的“ Destory”事件中添加代码如下:release flag*从内存中释放全局变量“ flag”在“Commandl”的“Click”事件中添加代码如下:for i=2 to 38 step 2thisform.Pagefra
28、mel. Pagel.controls(i-1).controlsource= thisform.Pageframel. Pagel.controls(i-l).enabled二.T.endfor*通过循环语句继开“ Pagel”中各“Text ”控件的“controlsource”属性,同时将其置为可用*以便在其中添加数据thisform.Pageframel.Pagel.txtbmh.value=thisform.Pageframel.Pagel.txtQjbh.value=thisform.Pageframel.Pagel.txtQjmc.value=thisform.Pageframe
29、l.Pagel.txtGlxh.value= thisform.Pageframel.Pagel.txtsl.value= thisform.Pageframel.Pagel.txtyz.value=thisform.Pageframel.Pagel.txtCd.value=thisform.Pageframel.Pagel.txtsyzt.value=thisform.Pageframel.Pagel.txtjdzq.value=thisform.Pageframel.Pagel.txtSysj.value=thisform.Pageframel.Pagel.txtjdhy.value=th
30、isform.Pageframel.Pagel.txtSybm.value= thisform.Pageframel.Pagel.txtSyr.value= thisform.Pageframel.Pagel.txtcjsj.value=thisform.Pageframel.Pagel.txtxjsj.value=thisform.Pageframel.Pagel.txtJdjg.value=thisform.Pageframel.Pagel.txtJdzh.value= thisform.Pageframel.Pagel.txtBz.value=*通过以上语句清空“Pagel”上所有“Te
31、xt”控件的值在“Command2”的“Click”事件中添加代码如下:local condition*定义局部变量“condition”condition=*为局部变量“condition”赋初值,令“condition”为一空字符串 for i=2 to 38 step 2if len(thisform.Pageframe1.Page1.controls(i-1).value)0strl二alltrim(thisform.Pageframe1.Page1.controls(i).name) str2=substr(str1,4)condition=condition+str2+=+;“+a
32、lltrim(thisform.Pageframe1.Page1.controls(i-1).value) +”+andendifendfor*这一段“forendfor”语句的功能是通过if语句判继将*所有查询条件不为空的字段名内容用“二”连接,*各查询条件之间用“and”连接组成一个新字符串存在局部变量“condition” 中condition二 left(condition,len(condition)-5)condition=alltrim(condition)*通过两个函数“left ()和alltrim() ”去掉“Condition”字符串中尾部多余的字节和前后的*空格sele
33、ct * form ystzsj where condition*利用宏功能,将局部变量“condition中存的字符串为查询条件,查找符合的 记录for i=2 to 38 step 2str1=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*将Pag
34、e1上各“Text”控件的“controlsource”属性与“ystzsj”表中的相应 字段建立联系在“Command3”的“Click”事件中添加代码如下:SET MULTILOCKS ONcursorsetprop(buffering,3)for i=2 to 38 step 2thisform.Pageframe1.Page1.controls(i-1).controlsource=thisform.Pageframe1.Page1.controls(i-1).enabled二.T.endfor*通过循环语句继开“ Pagel”中各“Text ”控件的“controlsource”属性
35、,同 时将其置为可用ed=.f.*置与数据库有关的按钮为不可用,以防误操作。将表单保存后整个原始台帐数据查询模块就建立起来了。5.5初始化模块设计该模块的主要功能是使用可以定期清空数据库表内容,同时也能保存表结构。以 便新数据的输入,防止旧数据对新数据产生不必要的影响,为用户节省更多的磁盘空 间,本模块可利用一个表单实现其功能。该模块的设计如下。首先新建一表单Form1,保存为“czh”。修改其“Caption”属性为“初始化数 据表单”,“Desktop”属性设置为“.T.-True”。为该表单添加1个“Container】” 控件、1个“Imagel”控件,2个“Command”控件和2个
36、“Label”控件。在“Containerl”控件上添加2个“Check”控件。各控件的主要属性表略。下面为各事件添加代码。在“Commandl”控件的“Check”事件中添加代码如下:if thisform.containerl.checkl.value=luse jlqjgldatabaseystzsj exclusivedelete allpackuseendifif thisform.containerl.check2.value=luse jlqjgldatabase bmhlsjdelete allpackuseendif*将选定的数据表格清空。在在“Command2”控件的“Ch
37、eck”事件中添加代码如下:thisform.release将该表单保存后这一模块就建立好了。5.6数据录入模块设计该模块的功能是初始化后进行新数据的输入,只有将数据写入到相应的数据表中 才能对它们进行查询、修改、打印等操作。本模块利用在一个表单中设置3个不同标 签页来实现其功能。该模块的设计步骤如下:首先新建一个表单Forml,保存为“sjlr”。修改该表单的“Caption”的属性为 “数据输入界面”,“Desktop”属性设置为“ .T.-True”。为该表单添加1个 “Pageframel ”控件。在“Pageframe1 ”控件上添加3个“Command”控件。参考原始数据查询模块中
38、数据表的添加方法,为该表单添加“ystzsj”数据表。在“Pageframe1”控件上单击鼠标右键选择“Edit(编辑)”,激活“Page1”控件。 将“Data Enviroment(数据环境)”中表“sytzsj”中各字段用鼠标拖放至“Page1” 上,并调整各控件相对位置使页面美观。修改Pageframe1” 控件中 “Pagecount”属性为 “1”。“Command”控件和“Page”控件的“Caption”属性如表略。thisform.release“Pageframe1”控件中其它“Page”页各事件中代码与“Page1”中类似,本设 计不再一一列出。然后将表单ystzk”、“
39、jxjdk”和“bmsyk”保存后,这一模块就 建立好了。5.7数据修改模块设计数据更新模块的主要功能是为用户提供一个修改已录入数据的窗口。这一模块的 界面设计如下。5.7.1首先创建一个“Fy.vcx”导航条的子类设计如下:在项目管理器中选择“Classes(类)”选项卡,选择新建“New(新建)”,出现一个类对话框,在“Class Name(类名)”框中键入fy,“Based On(派生于)”框中选择“Command Group(按钮组)”,存储框中填入要存的路径。单击“OK(确定)” 按钮进入设计窗口。在属性窗口中修改Buttoncount(按钮数目)属性,使其值为4,这时出现了 4 个
40、按钮,将按钮拖动到适当的位置,并根据需要修改每个按钮的Caption属性, 使其为“上一个”、“第一个”、“下一个”、“最后一个”。毕业设计(论文)报告纸在按钮“上一个”的Click事件中输入如下代码:skip-1*记录后退一个if bof()*如已为第一个记录messagebox( “已是第一个记录”,48,“信息窗口”)*当已为第一个记录时,显示提示信息mendl.enabled二.f.mend2.enabled=.f.skip*记录前进一个,使之仍显示第一个记录elsemend1.enabled二.t.mend2.enabled二.t.endifmend3.enabled二.f.mend
41、4.enabled二.f.*根据状况设置各按钮的可用状态thisform.refresh功能:向前翻页在按钮“第一个”的Click事件中输入如下代码:goto top*到第一个记录mend1.enabled二.f.mend3.enabled二.t.mend4.enabled二.t.*根据状况设置各按钮的可用状态thisform.refresh功能:翻页至第一个记录。在按钮“下一个”的Click事件中输入如下代码:skip*记录前进一个if eof()*如已为最后一个记录messagebox( “已是最后一条记录”,48, ”信息窗口”)skip-1*记录后退一个,使之仍为显示最后一个记录d=.
42、t.*根据状况设置各按钮的可用状态thisform.refresh功能:向后翻页在按钮“最后一个”的Click事件中输入如下代码:goto bottom*到最后一个记录mend3.enabled二.f.mend1.enabled二.t.mend2.enabled二.t.*根据状况设置各按钮的可用状态thisform.refresh功能:翻页至最后一个记录以上就是一个具有翻页功能的fy子类就创建出来了。其次新建一个表单Form1,保存为“sjxg”。修改该表单的“Caption”的属性为 “数据输入界面”,“Desktop”属性设置为“ .T.-True”。为该表单添加1个 “Pageframe
43、1 ”控件。在“Pageframe1 ”控件上添加3个“Command”控件。参考原始数据查询模块中数据表的添加方法,为该表单添加“ ystzsj” 1个数据 表。在“Pageframe1”控件上单击鼠标右键选择“Edit(编辑)”,激活“Page1”控件。 将“Data Enviroment(数据环境)”中表“sytzsj”中各字段用鼠标拖放至“Page1” 上,并调整各控件相对位置使页面美观。然后单击“ Form Controls”窗口中的“ View Classes ”按钮,在弹出的菜单 中选择“Add(添加)”,在弹出的对话框中创建类“Fy.vcx”。这时“Form Controis”
44、 中的控件修改“Pageframe1”控件中“Pagecount”属性为“1”。的样子,单击“Fy”,为表单添加该控件。“Command”控件和“Page”控件的“Caption”属性表略。5.8数据备份模块设计这一模块的主要功能是将数据库中的表备份到指定的路径中,以防止数据的丢 失,同时可在数据库中的表损坏时恢复表,避免更大的损失。这一模块也是通过设计 一个表单来实现的。为了实现该模块的设计,需要首先自建一个继承于OutLine类的“ActiveX”控 件,名称为 “OleOutLine”。首先单击菜单条中的“New(新建)”按钮,在弹出的对话框中选择类“class”), 单击“New(新建
45、)”按钮,创建一个新类,创建过程如下:在弹出的对话框中的“Class Neme(类名)”中填写“outline”;在“Basedon(派 生于)”中单击右侧按钮选择“OleControl”;在“Store in(存储于)”中填写存储路 径名,本系统为“ c:program filesmicrosoft visualvfp98jlqjgl ”。单击“ OK (确定)”在弹出的对话框中的左侧单选框中选择“Insert Control_Type”框中选择 “OutLine Control然后单击“OK (确定)”按钮。这样就完成了一个新控件的建立过程,该控件将保存在选定的路径中。下面为该控件添加一些
46、事件。为该控件新建事件的步骤为:首先单击菜单中的“Class(类)”,在弹出的菜单中 选择“NEW Method(新建方法程序)”,在弹出的对话框中“Name(名称)”框中填写 所要添加的事件名即可。*置“备份文件”按钮为可用release path2release m.cDir在“Command2”的“Click”事件中添加代码如下:close all*关闭所有工作区中已被打开的数据库、表和索引文件local pathl*定义局部变量“ pathl”pathl二alltrim(thisform.textl.value)*为局部变量“pathl”赋值if len(pathl)=2path1二p
47、ath1+ endif*如果路径名为盘符根目录,则应在文件名后加“”否则备份文件时会出错if thisform.container1.check1.value=1*如果用户选择了“ check1”copy file jlqjglystzsj.dbf to &path1*将相应文件备份至选定目录mand2.enabled=.f.*置“备份文件”按钮为不可用release path1open database jlqjgjlqjgl.dbc exclusive*以独占方式打开数据库 jlqjgl.dbc”在“Commands”的“Click”事件中添加代码如下:thisform.release*将
48、该表单保存后这一模块就建立好了,数据备份模块设计完成。5.9打印模块设计该模块的主要功能是打印数据报表的界面并提供打印预览功能。界面都包括了需 要打印的报表,下面介绍打印界面中“原始台帐数据表、“检修检定数据表”、“部门 使用数据表”和“封存器具数据表”报表的设计方法。首先设计打印界面的设计,这一界面通过一个表单的设计实现。打印界面的基本 设计方法与控件的使用与前面的表单设计大同小异,其设计结果和控件中相应的代 码。在“打印”按钮的“Click”事件中添加代码如下:do form jlqjgsjby*打开下级表单在“返回”按钮的“Click”事件中添加代码如下:thisform.release
49、“打印”按钮打开的是“打印界面”,该打印也是通过一个表单设计实现的,该 界面的设计结果如下:在“预览”按钮的“Click”事件中添加代码如。*释放该表单至此打印模块各界面设计结果,下面介绍“原始台帐数据”、“检修检定数据”、“部门使用数据”和“封存台帐数据”报表的设计。首先在“Project Manager(项目管理器)”中选择“Documents(文档)”页,在其 中选择“reports(报表)”,单击右侧“New(新建)”按钮新建一报表,保存为“tz”。然后单击菜单的“ report(报表)”按钮,在弹出的下拉菜单中选择第一项 “Title/Summary”,在弹出的对话框中选择“Titl
50、e band”并按下“OK(确定)”。这时出在新建的报表上方多出了一栏“Title”。目前报表设计器中共分标题带区“ Title (标题带区)”、“Page header(页标头 带区)”、“Detail(细节带区)”和“Page footer(页注脚带区)”共4个带区,每个带 区在设计时的主要功能如下:“Title (标题带区)”:放置标题、日期等围绕标题内容的矩形框,每个报表 打印一次。“Page header(页标头带区)”:放置列标题,每页打印一次。“Detail(细节带区)”:放置数据和描述性文本。每个分组打印一次。“Page footer(页注脚带区)”:放置日期、页号等。每页打印
51、一次。在菜单栏中选择“View(视图)”,在下拉菜单中选中“ GridLines(网格线)”打 开网格。利用报表工具栏中的控件在报表设计器中设计报表。设计步骤如下:在标题带区添加1个“Labe1”控件,内容添加为“原始台帐数据报表”;添加1 个“Field”控件,在弹出的对话框中单击表达式右侧按钮,在弹出的对话框中选择 函数“ Date()”。用同样的方法为页注脚带区也添加1个“ Field ”控件,表达式为” 第” +alltrim(str(_pageno)+ ”页”返回当前页的数值,str ()函数将数值表达式值 转换为字符串,alltrim()函数则去掉字符串首尾的空格。“Page he
52、ader(页标头带区)”和“Detail(细节带区)”的设计参见报表设计结 果。与表单的数据环境设置一样,将表“tz”添加到该表中。将报表中对应的字段利 用“Field”控件添加到报表的细节区中,保存文件后,“原始台帐数据报表”的报表 就建立好了。将“检修检定数据”、“部门使用数据”和“封存器具数据”报表一一设 计并保存文件后,打印模块的全部功能就设计完毕了。5.10代码设计本系统代码设计包括启动的主程序、设置系统执行的配置环境程序和恢复环境配 置的程序。主程序主程序是应用程序的主文件,即应用系统的第一个执行程序。该程序的功能包括(1)确认安装目录并设定其为默认目录。这样在执行所有的表单、报表
53、、程序、 菜单时就不用在加绝对路径。(2)声明应用系统执行的配置环境。(3)执行第一个用户界面。(4)设置Visual Foxpro 6.0的桌面环境。(5)设置读取程序的开始点。(6)执行应用程序结束时系统环境还原程序。建立方法为:在项目管理器的代码页中选择“Program(程序)”,在单击“New(新建)”按钮,在弹出的程序框中编写代码主程序中代码如下:*应用系统主程序*程序名称:MATN.PRG*LOCAL,lcProgramLcSys16=SYS(16)LcProgram二SUBSTR(lcSys16,AT(“:”,lcSys16)-1)CD LEFT(lcProgram,RAT(“”
54、,lcProgram)DEACTIVATE WINDOW “PROJECT MANAGER”Do jlqjglsettingDo form jlqjglwelcome_screen.caption=”_screen.left=-10000read eventsDO jlqjglreset代码设计说明。使用“LOCAL”定义2个局部变量。使用系统参数“SYS(16)”返回当前正在运行的程序名,包括路径。使用AT()函数返回第一个字符串在第二个字符串中首次出现的数字位置。本 系统地“.”在程序名中的位置。SUBSTR()函数返回在另一个字符串。其中逗号后的数字表明在指定字符串中 的开始位置。RAT
55、()函数返回在另一个字符中最后出现第一个字符串的位置。LEFT()函数从一个字符串中的最左端返回指定数目的字符。DEACTIVATE WINDOW “PROJECT MANAGER”语句可以把项目管理器关闭。使用DO命令执行程序setting.prg,设置执行期间的配置程序。使用DO FORM执行系统的第一个界面程序。执行READ EVENTS指令开始读取事件程序,让程序开始运行起来。当执行了 CLEAR EVENTS事件程序后。通过DO命令执行一个配置还原程序 reset,还原系统配置。程序Setting.prg是用来设置环境配置的,它包括关掉系统菜单,允许显示 运行结果,隐藏状态栏等一系列
56、有利于程序运行的设置。Setting.prg程序的代码如下:*环境配置程序*程序名称:SETTING.PRG*set sysmenu offset sysmenu toset status bar offset notify offset clock statusset 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 default to sys(5)+curdir()set path to sys(5)+curdir()set sysformates offset seconds on
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 民族广场水景施工方案(3篇)
- 地板的营销方案(3篇)
- 外墙刷漆辅助施工方案(3篇)
- 接地和防雷施工方案(3篇)
- 铜川注浆加固施工方案(3篇)
- 膝关节肿瘤的影像学诊断方法
- 肾脓肿抗生素耐药性机制
- 深层碳酸盐岩储层含气性检测技术:方法、挑战与突破
- 深圳G公司发展战略:突破瓶颈迈向新征程
- 深入剖析Android虚拟机内存管理机制及高效性能优化策略
- 平原2×700MW H级燃气-蒸汽联合循环发电工程项目环评报告表
- 矿区生态修复后期管护方案
- 幼儿园中班数学课《认识数字1-10》课件
- AR安全风险培训课件
- DBJT15-188-2020 城市综合管廊工程技术规程
- 凯恩斯主义课件
- APQP第三版及CP第一版介绍
- 2025年人教版七年级数学下册期中复习题(基础版)(范围:相交线与平行线、实数、平面直角坐标系)解析版
- 武侯祠历史讲解
- 眼健康知识科普讲座
- 癌痛患者的健康宣教
评论
0/150
提交评论