VFP实训报告.doc

上传人:jian****018 文档编号:9105430 上传时间:2020-04-03 格式:DOC 页数:34 大小:2.05MB
返回 下载 相关 举报
VFP实训报告.doc_第1页
第1页 / 共34页
VFP实训报告.doc_第2页
第2页 / 共34页
VFP实训报告.doc_第3页
第3页 / 共34页
点击查看更多>>
资源描述
甘肃机电职业技术学院GanSu Institute of Mechanical Electrical EngineeringVFP程序设计实训报告系 别 经济与信息管理系 专 业 电子商务 班 级 G144201 姓 名 关文博 指导教师 段淑萍 完成时间 2015.12.31 目 录人事管理系统设计5一开发应用系统的过程51.需求分析阶段52.概要设计阶段63.详细设计阶段64.编码阶段65.测试阶段66.安装及维护阶段6二人事管理系统主要模块简介71.表单功能模块72.菜单与报表文件73.数据库文件8三功能模块菜单91.功能模块菜单92.系统功能调用图解9四项目与数据库的建立101.项目的建立102.数据库的建立10五人事管理系统模块设计11系统主菜单设计11六系统数控表单模块设计161.主控表单161.1表单的执行界面161.2表单的事件代码162.部门初始化表单设计172.1表单的执行与操作172.2表单的事件代码183.密码初始化表单193.1表单设计203.2表单的事件代码204.数据修改模块设计204.1表单的设计界面和执行界面204.2表单的事件代码215.数据浏览模块235.1表单的执行界面236.数据查询模块246.1表单的设计界面和执行界面246.2表单的事件代码247.数据统计模块267.1表单的执行界面267.2表单的事件代码268.系统帮助表单的设计279.系统登录模块设计289.1表单的设计界面和执行界面289.2表单的事件代码28七.报表设计291.一对多报表文件292.特定记录打印报表文件303.列报表文件31八.实训心得32九实训成绩33人事管理系统设计一开发应用系统的过程要开发一个软件项目,应该首先搞清楚这个项目应具有什么功能、需要一些什么表,有什么样的报表需要打印,数据流程如何等等,这样才能使整个软件的开发过程比较顺利,否则会给后面的软件开发、修改、维护等带来麻烦。因此在开发软件之前,应该先做系统分析,使之符合软件开发的一般规律。从软件工程的角度讲,软件开发一般分为6个阶段。1.需求分析阶段 这个阶段的主要工作时搞好用户的需求分析,然后再进系统分析。在这个阶段,开发方与用户方的深入交流是项目获得成功的关键,项目管理的重要目标是建立一个便于开发方与用户方之见进行交流的环境。进行需求分析,主要是找出开发本软件的目的、所需求的各种功能等,并形成一个系统的分析文档。在VFP中,该文档虽然并不是软件本身的一部分,但也属于该软件开发的文档,应该将其放在“项目管理器中”。如需对软件编译时不把此文件编译到EXE文件中,方法是: (1)用右键单击该文件,在弹出的快捷菜单中,选择“排除”命令。 (2)在这之后会在该文件左侧看到一个符号“ “,表示该文件已被排除在软件之外了。 今后对其他不属于软件本身的软件都应该同样处理。2.概要设计阶段 这个阶段主要是将系统需求分析的结果模块化,并把系统的数据流向等关系搞明白。最好画出一个程序的流程图,把整个项目的框架展示出来。例如,对人事管理系统来说,就要考虑需要哪些模块,每个模块大体需要完成哪些功能,以及他们之间有什么关系等。3.详细设计阶段 这个阶段是在系统模块的基础上,把系统的功能具体化,逐步完善系统的功能需求。这个阶段要为具体的设计打好基础。4.编码阶段 这个阶段是系统具体设计的实施阶段,就是讲所有的功能通过编码具体化为功能实现的过程,同事还包括设计封面、适合用户使用、实现容错等。5.测试阶段 当完成编码之后,要对系统进行反复调试,保证正确实现各种功能,保证系统整体的正确无误,如输入合法数据时是否反映正确、对于非法的数据是否有容错能力等。只要顺利通过测试阶段的系统,才能够投入实际使用。6.安装及维护阶段 用VFP编写的软件有时还需要进行连编和发布,如制作成可执行文件。以上介绍的是设计软件的大概过程,主要是针对使用VFP进行小项目设计的方法,如果设计大的软件项目,还需要更复杂的论证和研究。二人事管理系统主要模块简介 人事管理系统的主要功能包括记录的浏览、输入、修改、查询、删除、备份、统计和打印等,下面将该记录的主要功能模块列出。1.表单功能模块 登录模块(调用表单frmLOGIN.scx) 主控功能模块(调用表单frmMAIN.scx) 部门初始化模块(调用表单frmBMWH.scx) 密码初始化模块(调用表单frmPSW.scx) 数据浏览模块(调用表单frmBROWSE.scx) 数据输入模块(调用表单frmSR.scx) 数据修改模块(调用表单frmXG.scx) 数据查询模块(调用表单frmSEARCH.scx) 数据统计模块(调用表单frmTOTAL.scx) 数据备份与删除模块(调用表单frmBAKDEL.scx) 数据打印模块(调用表单frmPRINT.scx) 系统帮助模块(调用表单frmHELP.scx) 关于系统模块(调用表单frmABOUT.scx)2.菜单与报表文件 系统功能菜单(mnuRS.mnx)一对多部门分组报表(reportALL.frx)列报表(reportCOL.frx)特定记录打印报表(reportONE.frx)行报表(reportONE.frx)3.数据库文件 数据库名称:教职工.dbc 数据库表名称:人事表(tbIRS.dbf)、部门表(tbIBM.dbf) 自由表名称:用户密码表(tbIPassword.dbf) 人事表(tbIRS.dbf)描述职工的基本信息,其结构如图所示。人事表结构部门表结构用户密码表结构三功能模块菜单 1.功能模块菜单。本系统的功能菜单如图所示,观察本菜单可以对整个系统有一个比较完整的认知,便于理解系统的设计思路。主功能菜单2.系统功能调用图解本系统在运行过程中,程序与各表单功能模块的调用过程如图所示:系统功能调用模块 上述功能图中的登录模块表单(frmLOGIN.scx)及主控功能模块表单(frmMAIN.scx)应设置为顶层表单,即把表单的showWindow属性设置为”2-作为顶层表单“。背、被菜单所调用的其他功能模块,如数据查询模块(frmSEARCH.scx)、数据统计模块(frmTOTAL.scx)等表单,应该把showWindow属性设置为”1-在顶层表单中“。四项目与数据库的建立 1.项目的建立 (1)在硬盘上建一个文件夹,如D:RS。启动VFP系统后,在命令窗口中,执行set default to D:RS命令,将D:RS文件夹设置为VFP的默认工作目录。 (2)新建立一个名称为”人事管理系统.PJX“的项目,保存到D:RS文件夹中,打开”项目管理器“对话框,如图所示:“项目管理器“对话框2.数据库的建立 数据库建立的步骤如下: 在”项目管理器“中,新建一个名称为”教职工“的数据库,如图所示,建立人事表(tbIRS.dbf)、部门表(tbIBM)、用户密码表(tbIPassword.dbf),其中人事标的内容如图所示:建立一个数据库人事表的内容五人事管理系统模块设计 系统主菜单设计 具体步骤如下:(1)在”项目管理器“中,选择”其他“选项卡,选择”菜单“选项。(2)单击”新建“按钮,打开”新建菜单“对话框,如图所示:“新建菜单“对话框(3) 在”新建菜单“对话框中,单击”菜单“按钮,打开”菜单设计器“对话框,如图所示:“菜单设计器“对话框(4) 首先建立主菜单。在”菜单名称“栏中,分别输入”数据初始化(I)“、”编辑(E)“、”数据维护(R)“、”退出系统(Q)“,如图所示。注意,在”结果“栏中应保持显示”子菜单选项“,而在”菜单级“下拉列表框中,选择”菜单栏“选项,表示是主菜单。“菜单设计器“对话框(5) 建立”数据维护“子菜单。在”数据维护“的”子菜单“下拉列表框右侧,单击”创建“按钮,打开”菜单设计器“对话框,如图所示:子菜单设计(6) 在”菜单级“下拉列表框中,选择”菜单栏“选项,返回主菜单。(7) 重复步骤(5)(6),编辑”数据初始化“、”退出系统“菜单。(8) ”编辑“菜单下的各个子菜单项的编辑方法与其他菜单不一样,”编辑“菜单的”菜单设计器“对话框,如图所示:“菜单设计器“对话框 这些菜单分别调用系统的内部变量来完成相应的功能。具体操作为:单击”插入兰“按钮,打开”插入系统菜单栏“对话框,如图所示:“插入系统菜单栏“对话框将上述菜单核对无误后,即可生成菜单,这是就能在应用程序系统中非常方便地使用各种编辑功能了。(9) 其他菜单项所对应的命令将调用如下表单文件。“数据初始化(I)”菜单 部门初始化(M)-do form frmBMWH.SCX 密码初始化(P)-do form frmPSW.SCX“退出系统(Q)”菜单 系统帮助(H)-do form frmHELP.SCX 关于系统(B)-do form frmABOUT.SCX 退出( thisform.width thisform.label1.fontsize=thisform.label1.fontsize-1 if thisform.label1.fontsize 24 thisform.label1.fontsize=24 exit endif Enddo2.部门初始化表单设计 部门初始化表单的功能是完成对部门信息的增加、删除、修改操作。2.1表单的执行与操作 该表单的设计界面和执行界面如图所示:部门初始化表单设计界面部门初始化表单执行界面2.2表单的事件代码:Form1表单的unload事件代码: close tables allCommand1按钮的click事件代码: if this.caption=添加记录* 设置另外三个按钮为不可用状态 this.parent.command2.enabled=.f. this.parent.command3.enabled=.f. this.parent.command4.enabled=.f. his.caption=确认添加 thisform.grid1.column1.setfocus else this.caption=添加记录 thisform.grid1.readonly=.t. *恢复另外的3个按钮为可用状态 this.parent.command2.enabled=.t. this.parent.command3.enabled=.t. this.parent.command4.enabled=.t. EndifCommand2按钮的click事件代码: if this.caption=修改记录 * 设置另外3个按钮为不可用状态 this.parent.command1.enabled=.f. this.parent.command3.enabled=.f. this.parent.command4.enabled=.f. this.caption=确认修改 thisform.grid1.readonly=.f. thisform.grid1.column1.setfocus else this.caption=修改记录 * 恢复另外3个按钮为可用状态 thisform.grid1.readonly=.t. this.parent.command1.enabled=.t. this.parent.command3.enabled=.t. this.parent.command4.enabled=.t. EndifCommand3按钮的click事件代码: set delete on crecno=部门编号 yn=messagebox(确定删除部门编号为&crecno.的记录吗?,1+16,删除确认框) if yn=1 delete endif thisform.refresh thisform.grid1.column1.setfocusCommand4按钮的click事件代码: * 物理删除记录并退出 pack Thisform.release3.密码初始化表单 密码初始化表单的功能是完成对用户及密码信息的增加、删除和修改操作。3.1表单设计密码初始化表单执行界面如图所示:3.2表单的事件代码: * 逻辑删除用户选择的记录 set delete on usr=alltrim(用户名) yn=messagebox(确认删除名为&usr.的记录吗?,1+16,删除确认框) if yn=1 delete endif thisform.refresh thisform.grid1.column1.setfocus注:添加记录、修改记录、删除按钮代码参看部门初始化表单代码。4.数据修改模块设计 数据修改模块的功能是用户在浏览数据库中的表数据的情况下,允许用户修改特定的记录或成批地修改记录。4.1表单的设计界面和执行界面如图所示:数据修改表单设计界面数据修改表单执行界面4.2表单的事件代码:页框控件page1中组合框控件combo1的Init事件代码: select tbibm this.value=部门名称页框控件page1中command1的click事件代码: if this.caption=修改 t his.caption=确认 this.parent.grdtbirs.readonly=.f. this.parent.grdtbirs.columnl.setfocus else this.caption=修改 this.parent.grdtbirs.readonly=.t. Endif页框控件page1中command2的click事件代码: Thisform.release页框控件page2中文本框控件text1的interactivechange事件代码: select tbirs cbh=alltrim(this.value) locate for 编号=cbh if not found() messagebox(没有指定的编号,请重新输入) this.value= endif Thisform.refresh页框控件page2中command1的click事件代码: this.parent.command3.enabled=.t. select tbirs go top Thisform.refresh页框控件page2中command2的click事件代码: this.parent.command3.enabled=.t. select tbirs if not bof() skip -1 else wait 已到表文件头!windows timeout 1 this.enabled=.f. go top endif Thisform.refresh页框控件page2中command3的click事件代码: this.parent.command2.enabled=.t. select tbirs if not eof() skip else wait 已到表文件尾!windows timeout 1 this.enabled=.f. go bottom endif Thisform.refresh页框控件page2中command4的click事件代码: this.parent.command2.enabled=.t. select tbirs go bottom thisform.refresh页框控件page2中command5的click事件代码: if this.caption=修改 this.caption=确认 this.parent.setall(readonly,.f.,textbox) this.parent.txt编号.setfocus else this.caption=修改 this.parent.setall(readonly,.t.,textbox) this.parent.txt1.readonly=.f. thisform.release endif页框控件page2中command6的click事件代码: Thisform.release5.数据浏览模块 数据浏览模块是用来让用户浏览数据库中的表,数据浏览表单的设计方法与数据修改表单相同,所不同的是少了“修改”按钮。5.1表单的执行界面如图所示: 6.数据查询模块 查询模块允许用户从数据库中分类查询信息。6.1表单的设计界面和执行界面如图所示:查询表单的设计界面查询表单的执行界面6.2表单的事件代码:Form1表单的unload事件代码: close tables all组合框控件combo1的click事件代码: thisform.grid1.recordsourcetype=4 thisform.grid1.recordsource=select * from tbirs,tbibm where tbirs.部门编号=tbibm.部门编号 and 部门名称=alltrim(this.displayvalue) order by 1 into cursor temp组合框控件combo2的click事件代码: csex=alltrim(thisform.combo2.displayvalue) thisform.grid1.recordsourcetype=4 thisform.grid1.recordsource=select * from tbirs where 性别=csex order by 2 into cursor temp组合框控件combo3的click事件代码: do case case this.value=1 thisform.grid1.recordsourcetype=4 thisform.grid1.recordsource=select 编号,部门编号,姓名,性别,year(date() - year(出生日期) as 年龄,职称,学历,专业,籍贯,出生日期,工作时间 from tbirs where year(date() - year(出生日期)50 order by 5 into cursor temp ndcase组合框控件combo4的click事件代码: thisform.grid1.recordsourcetype=4 thisform.grid1.recordsource=select * from tbirs where 职称=alltrim(this.diaplayvalue) order by 2 into cursor temp组合框控件combo5的click事件代码: thisform.grid1.recordsourcetype=4 thisform.grid1.recordsource=select * from tbirs where 学历=alltrim(this.diaplayvalue) order by 2 into cursor temp组合框控件combo6的click事件代码: thisform.grid1.recordsourcetype=4 thisform.grid1.recordsource=select * from tbirs where 专业=alltrim(this.diaplayvalue) order by 2 into cursor temp7.数据统计模块 数据统计模块的主要功能是完成对数据表中各类人员的人数统计信息。7.1表单的执行界面如图所示:7.2表单的事件代码:Form1表单的Activate事件代码: thisform.optiongroup1.value=1 thisform.grid1.recordsourcetype=4 select count(*) from tbirs into array atemp thisform.grid1.recordsource=select 部门名称,count(*) as 部门人数, count(*)/atemp(1) * 100 as 所占百分比 from tbirs,tbibm where tbirs.部门编号 group by tbirs.部门编号 order by 部门人数 into cursor tempBMTJ选项按钮组optiongroup1的Init事件代码: this.value=1选项按钮组optiongroup1的interactivechange事件代码: thisform.grid1.recordsourcetype=4 select count(*) from tbirs into array atemp do case case this.value=1 thisform.grid1.recordsource=select 部门名称,count(*) as 部门人数,count(*)/atemp(1) * 100 as 所占百分比 from tbirs,tbibm where tbirs.部门编号=tbibm.部门编号 group by tbirs.部门编号 order by 部门人数 into cursor tempbmtj thisform.grid1.column1.header1.caption=部门 thisform.grid1.column2.header1.caption=部门人数 thisform.grid1.column3.header1.caption=所占百分比 case this.value=2 thisform.grid1.recordsource=select 职称,count(*) as 职称人数,count(*)/atemp(1) * 100 as 所占百分比 from tbirs group by 职称 order by 职称人数 into cursor tempzctjthisform.grid1.column1.header1.caption=职称thisform.grid1.column2.header1.caption=职称人数thisform.grid1.column3.header1.caption=所占百分比case this.value=3thisform.grid1.recordsource=select 学历,count(*) as 学历人数,count(*)/atemp(1) * 100 as 所占百分比 from tbirs group by 学历 order by 学历人数 into cursor tempzctjthisform.grid1.column1.header1.caption=学历thisform.grid1.column2.header1.caption=学历人数thisform.grid1.column3.header1.caption=所占百分比case this.value=4thisform.grid1.recordsource=select 性别,count(*) as 性别人数,count(*)/atemp(1) * 100 as 所占百分比 from tbirs group by 性别 order by 性别人数 into cursor tempzctj thisform.grid1.column1.header1.caption=性别 thisform.grid1.column2.header1.caption=性别人数 thisform.grid1.column3.header1.caption=所占百分比 case this.value=5 thisform.grid1.recordsource=select 专业,count(*) as 专业人数,count(*)/atemp(1) * 100 as 所占百分比 from tbirs group by 专业 order by 专业人数 into cursor tempzctj thisform.grid1.column1.header1.caption=专业 thisform.grid1.column2.header1.caption=专业人数 thisform.grid1.column3.header1.caption=所占百分比 endcase8.系统帮助表单的设计 系统帮助表单显示本系统的功能条用流程图及系统的开发及应用环境要求。其执行界面如图所示。9.系统登录模块设计 本系统是系统的登录模块,运行表单时候讲通过此表单调用主控模块,进而管理整个人事管理系统。9.1表单的设计界面和执行界面如图所示:表单的设计界面表单的执行界面9.2表单的事件代码:Form1表单的Init事件代码: public ncount,flag ncount=0 flag=.f. thisform.label1.left=(thisform.width-this.label1.width)/2 thisform.label1.fontsize=24Command1按钮的click事件代码: select tbipassword scan if alltrim(thisform.text1.value)=alltrim(密码) wait 密码正确,正在加载系统,请等候! windows timeout 2 flag=.t. do form frmmain thisform.release endif endscan if eof() and not flag messagebox(密码输入错误+alltrim(str(ncount+1) + 次!,64,密码信息框) ncount=ncount+1 if ncount=3 thisform.setall(enabled,.f.,commandbutton) wait 由于错误次数太多,系统即将于3秒后退出,再见! windows timeout 3 thisform.release endif thisform.text1.value= thisform.text1.setfocus endif Command2按钮的click事件代码: thisform.release clear events七.报表设计 本系统一共使用了3个报表文件,生成着三个报表比较剪标的方法是用报表生成器先生成报表,然后在上面修改、添加表格线。1.一对多报表文件 此报表可用”一对多报表向导“生成。一方表为部门表,只选择”部门名称“字段。多方表为人事表,选择全部字段。标间关系为tbIBM.部门编号=tbIRS.部门编号。报表样式为:账务式,方向为”横向“,字段布局为”行“。报表标题为:”人事档案一对多-部门报表”。生成报表后,可在“报表设计器”中做简要修改,其运行界面如图所示:2.特定记录打印报表文件 此报表可用”报表向导“生成。数据源为人事表,选择全部字段。报表样式为:账务式,方向为”纵向“,字段布局为”行“,列数为“3”。报表标题为:”人事档案报表-纵向报表格式”。生成报表后,可在“报表设计器”中做简要修改,其运行界面如图所示:3.列报表文件此报表可用”报表向导“生成。数据源为人事表,选择权不字段。报表样式为:账务式,方向为”横向“,字段布局为”列“,列数为“1”。排序记录为:按“编号”升序。报表标题为:”人事档案报表-横向报表格式”。生成报表后,可在“报表设计器”中做简要修改,其运行界面如图所示:八.实训心得 时间过得真快,转眼间,4天的实训已经结束了。在这4的实训中,我过得很充实,学到了很多。 本来以为VFP实训会很轻松,凭借我上课所学到的知识,轻轻松松完成实训没有任何问题,但这只是我的一厢情愿,结果并不是想像中的那样轻松。在这四天的实训中,每天都是忙忙碌碌,虽然忙碌,虽然少了许多玩耍的时间,但是VFP实训这几天却是我这一阶段实训中我感觉过得最充实的时间。在实训中,遇到了很多的问题,大问题小问题都有,每每遇到自己解决不了的问题,都会向老师求助,老师总是耐心的讲解,直到问题成功解决为止。在实训中,我学会了很多,有VFP的专业知识,也有和同学之间的互帮互助,本次实训虽然结束了,但是它带给我的收获和经验不会就这样随着时间的流逝而流逝掉,这将对我在以后的生活和学习中产生重大的正面影响。这次实训,使我对VFP程序设计这门课程有了一个全新的认识,这给了我以后学习的无穷动力,使我在以后的学习中更加有动力充实自己,增加自己的知识面和锻炼各方面的能力。九实训成绩成 绩优良中及格不及格
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 工作总结


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

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


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