网学网为广大网友收集整理了,基于VFP资料管理系统的设计与实现,希望对大家有所帮助!
客服咨询,网学网竭诚为您服务,本站永久域名:myeducs.cn |
第四章系统编码与实现 4.1 开发平台的选择 考虑到本系统的性能要求,和现有的条件,我们选择了WINDOWSXP中文版作为开发、测试和运行的平台。因为WINDOWS操作系统是目前应用最广的操作系统,它以全新的图形界面,简单快捷的操作方式,支持多媒体功能等特点而成为软件发展的流行趋势,选用它作为开发平台,易于功能的扩展和软件升级。 4.2 开发工具的选择 针对目前世界上流行的大量软件和开发工具,经过认真分析其优缺点,结合学籍器具管理系统的需要和目前的硬件环境,我们选用微软WINDOWS平台下的Visual FoxPRO6.0(简写为VFP6.0)作为软件开发工具。选用该工具有发下几方面的优点: (1)VFP6.0是目前微机上最优秀的关系型数据库管理系统软件,正如其名称中冠以的“Visual”一样,它采用了可视化、面向对象的程序设计方法,大大简化了应用系统的开发过程,并提高了系统工程的模块化和紧凑性。 (2)VFP6.0版本中提供了大量的诸如“数据库设计器”、“表单设计器”、“菜单设计器”、“报表设计器”等开发设计工具和向导工具(Wizard),使以往费时费力的开发工作变得轻松自如。这些可视化的设计工具免除了开发者编写大量程序代码的工作。 4.3 程序设计(部分逻辑及代码) 4.3 创建可视化按钮 4.3.1要使鼠标指针移动到按钮上方时鼠标指针发生变化,需要在按钮的“MouseMove”事件中添加代码。 *————修改控件上鼠标指针形状 LPARAMETERS nButton, nShift, nXCoord, nYCoord This.MousePointer = 99 &&————使用自定义的鼠标指针 This.MouseIcon = "h_point.cur" &&————鼠标指针文件 4.3.2 创建可视化类 单击【首记录】按钮时,只需要将记录指针移动到表的第一条记录即可,按钮的“Click”事件代码如下: GO TOP &&到首记录 THISFORM.REFRESH &&刷新表单 单击【上记录】按钮时,首先判断记录指针是否位于第一条记录,如果是,则弹出警告,否则将记录指针向前移动一个位置,该按钮的“click”事件代码如下: *——如果到了数据表首部 IF BOF() .OR. RECNO() = 1 MessageBox("已到首记录",48,"移动记录") ELSE *——如果数据指针不位于数据表首部 SKIP-1 ENDIF *——刷新表单 THISFORM.REFRESH 单击【下记录】按钮代码: *——如果记录指针位于数据表末尾 IF EOF() or RecNO() = RecCount() MessageBox("已到末记录",48,"移动记录") *——如果记录指针不位于数据表末尾 ELSE *——记录指针下移 SKIP ENDIF *——刷新表单 THISFORM.REFRESH() 单击【末记录】按钮代码: GO BOTTOM &&到数据表末尾 THISFORM.REFRESH &&刷新表单 “MyMove”类的“Refresh”事件代码如下: *——如果数据表为空或者只有一条记录 IF BOF() .AND. EOF() .OR. RECCOUNT()<=1 THIS.Cmdtop.ENABLED=.F. THIS.Cmdpre.ENABLED=.F. THIS.Cmdnxt.ENABLED=.F. THIS.Cmdbtm.ENABLED=.F. ELSE *——如果在记录指针在数据表的末尾 IF RECNO()=RECCOUNT() .OR. EOF() THIS.Cmdtop.ENABLED=.T. THIS.Cmdpre.ENABLED=.T. THIS.Cmdnxt.ENABLED=.F. THIS.Cmdbtm.ENABLED=.F. ELSE *——如果记录指针在数据表的首部 IF RECNO()=1 .OR. BOF() THIS.Cmdtop.ENABLED=.F. THIS.Cmdpre.ENABLED=.F. THIS.Cmdnxt.ENABLED=.T. THIS.Cmdbtm.ENABLED=.T. ELSE *——如果记录指针不在数据表的首部也不在尾部 THIS.Cmdtop.ENABLED=.T. THIS.Cmdpre.ENABLED=.T. THIS.Cmdnxt.ENABLED=.T. THIS.Cmdbtm.ENABLED=.T. ENDIF ENDIF ENDIF 4.3.3“命令按钮工具栏”类 【推出】按钮的“Click”事件代码: LOCAL YN YN=Messagebox("确定退出",4+32,"资料管理系统") IF YN=6 THISFORM.Release ENDIF 6.2 创建系统主表单 6.2.1 创建主程序 *——系统环境设置 CLEAR CLEAR ALL SET ESCAPE OFF && 禁止运行的程序在按ESC键被中断 SET TALK OFF && 关闭命令显示 SET SAFETY OFF && 覆盖时不要确认 SET STAT BAR OFF && 将状态栏关闭 SET SYSMENU OFF && 可关掉VFP系统菜单区域 SET SYSMENU TO && 关闭系统菜单 SET CENTURY ON && 显示四位年代 SET DATE ANSI && 指定日期表达式的显示格式为yy.mm.dd *——避免多次运行程序 *——声明API函数“FindWindow” DECLARE Integer FindWindow IN USER32.DLL String lpClassName,String lpWindowName lpWindowName="资料管理系统" IF .NOT. FindWindow(0,lpWindowName)==0 &&寻找窗口标题 =MESSAGEBOX("程序已经运行了",48,"资料管理系统") QUIT ENDIF _Screen.Caption=lpWindowName *——声明全局变量 PUBLIC cCurUser && 声明全局变量,用来保存系统中的登录用户 PUBLIC bDataAdmin,bDataBrow,bUserAdmin,bUserBrow,bLendAdmin,bLendBrow,bSysUser,bUserPurv,bAct *——调用登录表单 DO FORM Logon && 显示登录表单 *——进入事物处理 READ EVENTS && 进入事务处理 6.2.2 创建“AutoAdd”程序 *——作用:使“000000XX”形式的编号自动加1 FUNCTION AUTOADD(nCode) *——获取字符串长度 nLen=Len(nCode) *——将字符型转换为数值型,即获取非0部分的数值 nCode = VAL(nCode) *——非0部分数字加1 nCode = nCode + 1 *——转换为字符型 nCode = ALLTRIM(STR(nCode)) *——获取转换后的字符串的长度 nLength = LEN(nCode) *——在数字之前加上前置“0” nZero="0000000000" nCode = SUBSTR(nZero,1,nLen-nLength) + nCode *——返回结果 RETURN nCode ENDFUNC 6.2.3 创建“GetPurv”程序 *——在数据库中读取登录的系统用户权限信息 *——选择“系统用户信息”表所在的工作区 SELECT Sysuser *——精确比较 SET EXACT ON *——查找登录用户 LOCATE FOR ALLTRIM(用户名)=cCurUser *——如果找到 IF FOUND() *——读取用户权限信息全局变量中 bDataAdmin=SysUser.资料信息管理 bDataBrow=SysUser.资料信息浏览 bUserAdmin=SysUser.用户信息管理 bUserBrow=SysUser.用户信息浏览 bLendAdmin=SysUser.借阅信息管理 bLendBrow=SysUser.借阅信息浏览 bSysUser=SysUser.系统用户管理 bUserPurv=SysUser.用户权限管理 bAct=SysUser.资料借还操作 ELSE *——如果登录的用户不在表中 *——结束事务处理 CLEAR EVENTS *——退出Visual FoxPro QUIT ENDIF *——模糊比较 SET EXACT OFF 6.2.4 创建系统主表单 “Init”事件: *——调用系统主菜单 DO MainMenu.MPR WITH This *——显示当前登录用户 THISFORM.OLEcontrol1.Panels(2).Text=cCurUser *——刷新表单 THISFORM.Refresh “Unload”事件: *——清除事件循环 Clear Events *——退出Visual FoxPro Quit 6.3创建系统用户管理模块 6.3.1 创建“系统登录”表单 【确定】按钮的“Click”事件代码 *——改为精确比较 SET EXACT ON *——试图登录次数自动加1 THISFORM.i=THISFORM.i+1 *——选择“系统用户信息”表所在的工作区 SELECT SysUser *——查找用户名 LOCATE FOR ALLTRIM(SysUser.用户名)=ALLTRIM(THISFORM.txt用户名.VALUE) *——如果找到用户名 |
本站发布的计算机毕业设计均是完整无错的全套作品,包含开题报告+程序+论文+源代码+翻译+答辩稿PPT |
本文选自计算机毕业设计http://myeducs.cn |