1、主控程序main.prg、启动界面(封面)face.scx、系统登录界面(口令验证窗口)pass.scx、,主菜单main_menu.mpr。程序的调用关系如下:主控程序main.prg中调用界面表单face.scx,封面中调用“口令验证窗口”表单pass.scx,口令正确则调用系统菜单main_menu.mpr。各菜单项调用相对应的表单。(一)、主控程序main.prg的代码实现为:CLEAR &清屏CLEAR ALL &从内存中释放所有的内存变量CLOSE ALL &关闭各种类型的文件SET ESCAPE OFF &禁止运行的程序和命令在按 Esc 键后被中断SET SAFETY OFF
2、&指定在改写已有文件时不显示对话框SET DELETE ON &使用范围子句处理记录的命令忽略标有删除标记的记录SET SYSMENU OFF &在程序执行期间废止 Visual FoxPro 主菜单栏RELEASE WINDOW 常用 &关闭常用工具栏SET CENTURY ON &年份以四位显示SET DATE TO ymd &日期格式为年、月、日SET MARK TO -指定日期分隔字符SET HOURS TO 24 &指定为 24-小时时间格式_SCREEN.Visible=.t._SCREEN.Caption=09级电子信息科学与技术专业系统窗口标题_SCREEN.Icon=.dod
3、.ico系统标题栏图标*判断显示器当前分辨率_SCREEN.Width=SYSMETRIC(1) _SCREEN.Height=SYSMETRIC(2)*根据分辨率不同,为系统设置不同的背景图片IF SYSMETRIC(1)=1024 _SCREEN.Picture=.imgbj.jpgELSEENDIFDO FORM .face.scx &调用登录界面表单On ShutDown do OnShutdown &退出系统时调用函数onshutdown() READ EVENTS &建立事件循环 On ShutDown &释放当前的On ShutDown命令*按菜单的“关闭”按钮退出时,出现的提示
4、框FUNCTION OnShutdown() sel=MESSAGEBOX(真的要退出吗?,4+32+256,提示)IF sel=6 *SELECT 0 *USE .dbsystemLOG *GO BOTTOM *REPLACE 离开时间 WITH DATETIME() &退出系统时记录操作员退出时间 CLOSE ALL CLEAR EVENTS &退出事件循环 QUIT &结束当前 Visual FoxPro 工作期,并将控制权返回给操作系统ENDFUNC(二)、在运行主程序后,系统调用登陆界面表单(图4)主要事件代码:FORM1的INIT事件代码:SET BELL ONSET BELL T
5、O .MUSICwelcome.wav,2?CHR(7)FORM1的UNLOAD事件代码:MUSICSILENT.WAV此两项功能分别为在打开表单时调用的音乐文件和关闭表单时调用的音乐文件。Command1的mouseup事件代码:LPARAMETERS nButton, nShift, nXCoord, nYCoordrelease thisformDO FORM .mainpass.scxTimer1的timer事件代码:Timer2的timer事件代码:为了实现五角星的闪动:IF THISFORM.label5.visible thisform.label5.visible=.f. el
6、se thisform.label5.visible=.t.endifTimer3的timer事件代码:Timer4的timer事件代码: thisform.label5.visible=.t同时在每个五角星的颜色也做了设置。(三)系统登陆表单设计界面用户在文本框输入操作员及口令,若正确则调用系统主界面(菜单)。允许输入三次,若三次均不正确刚自动退出系统。若用户输入的操作员姓名及口令正确,要完成下列工作:(1) 设置一个全局变量operat,用于记录登陆系统的操作员姓名,系统中有3个地方要用到操作员的姓名和代号:一是进入主界面后在标题栏显示的操作员姓名;二是操作员在系统管理模块的口令设置中更改
7、自己的口令,系统要知道是哪个操作员;三是退出系统时系统日志中要记录操作员的退出时间。(2) 在系统日志表log.dbf中增加一条记录,并同时记录此操作员的登录系统的时间。(3) 从权限表menuright.dbf中读出此操作员对应各菜单项的权限,并赋值给数组。(4) 调用菜单文件,显示系统主界面。事件代码:Form1的init事件代码:SET EXACT ON &精确比较PUBLIC ARRAY rr18 &数组用于实现菜单项权限PUBLIC i &i用于记录用户名及口令输入次数PUBLIC operat &operat用于保存操作员姓名 i=0THISFORM.Text1.Setfocus“
8、确定”按钮(COMMAND1)CLICK事件代码:*判断密码是否正确i=i+1SELECT operatorLOCATE FOR 操作员姓名=ALLTRIM(THISFORM.Text1.Value)DO CASE CASE i3 &输入次数超过3次禁止进入系统! THISFORM.ReleaseENDCASE 退出按钮(COMMAND2)CLICK事件代码:RELEASE THISFORMCLEAR EVENTS(四)系统菜单设计1、 学生信息管理系统的菜单在应用系统中,各个了模块是通过菜单组织在一起的。通过对人事工资管理系统功能模块的设计,可以交系统划分为3大模块:学生信息管理、学生成绩查
9、询、系统管理,具体的菜单设计见下表:75信息管理75成绩管理系统管理75信息维护75成绩查询操作员管理口令设置75信息查询权限管理系统日志数据备份数据恢复退出系统2、 在菜单设计器中实现权限设置在菜单项设计器中,通过提示选项对话框设置菜单项的跳过条件可以实现用户权限。每个操作员对每个菜单项有两种权限:0或1。“0”表示此操作员对该菜单项没有操作权,系统运行后,该菜单项为灰色。不能打开对应的表单,“1”代表该操作员对该菜单项具有操作权,系统运行后,该菜单项可用,鼠标单击菜单项能打开对应的表单。操作员对各菜单项的权限保存在表文件menuright.dbf中,在登录系统时读出该操作员对应各菜单项的权
10、限,并赋值给一个数组RR。本系统共10个菜单项,所以定义的数组也包含10个元素。3、 学生信息维护表单包换下列功能:数据录入、修改、删除、查询、浏览、保存、打印等。本表单左边是浏览窗口,便于用户浏览数据;右边是编辑窗口,主要用于输入修改数据。4、 在表单数据环境中添加表:rsb.dbf、cjb、dbf。学生人事表和成绩表的结构请打开数据库表查看。在表单数据环境的BRFOREOPENTABLES事件中添加代码:this.cursor1.exclusive=.t.5、 事件代码:THISFORM.COMMANDGROUP1.CMDTOP.ENABLED=.F.THISFORM.COMMANDGRO
11、UP1.CMDPREV.ENABLED=.F.THISFORM.COMMANDGROUP1.CMDNEXT.ENABLED=.T.THISFORM.COMMANDGROUP1.CMDBOTTOM.ENABLED=.T.THISFORM.COMMANDGROUP1.CMDADD.ENABLED=.T.THISFORM.COMMANDGROUP1.CMDEDIT.ENABLED=.T.THISFORM.COMMANDGROUP1.CMDDELETE.ENABLED=.T.THISFORM.COMMANDGROUP1.CMDFIND.ENABLED=.T.THISFORM.COMMANDGROUP1
12、.CMDPRINT.ENABLED=.T.THISFORM.COMMANDGROUP1.CMDEXIT.ENABLED=.T.THISFORM.TEXT1.READONLY=.T.THISFORM.TEXT2.READONLY=.T.THISFORM.OPTIONGROUP1.ENABLED=.F.THISFORM.TEXT3.READONLY=.T.THISFORM.TEXT4.READONLY=.T.THISFORM.TEXT5.READONLY=.T.THISFORM.TEXT6.READONLY=.T.THISFORM.CHECK1.READONLY=.T.THISFORM.EDIT1
13、.READONLY=.T.THISFORM.GRID1.READONLY=.T.THISFORM.COMMAND1.visible=.T.THISFORM.LABEL11.visible=.F.THISFORM.TEXT7.visible=.F.FORM1的CLICK事件代码:THISFORM.TEXT7.visible=.F. GRID1的afterrowclochange事件代码:LPARAMETERS nColIndexthis.setall(dynamicbackcolorIIF(This.activerowrecno(),rgb(255,255,255),rgb(0,255,0)co
14、lumnselect rsbthisform.refresh 此代码实现不现颜色显示选中的GRID对象的行及列。“第一个“按钮的CLICK事件代码:go topmandgroup1.cmdtop.enabled=.f.mandgroup1.cmdprev.enabled=.f.if not eof()mandgroup1.cmdnext.enabled=.t.mandgroup1.cmdbottom.enabled=.t.thisform.refresh“前一个“按钮的CLICK事件代码:skip -1if bof()“下一个“按钮的CLICK事件代码:skipif eof()go botto
15、mmandgroup1.cmdnext.enabled=.f.mandgroup1.cmdbottom.enabled=.f.if not bof()mandgroup1.cmdtop.enabled=.t.mandgroup1.cmdprev.enabled=.t.“最后一个“按钮的CLICK事件代码:“增加“按钮的CLICK事件代码:if this.caption=增加this.caption=保存THISFORM.COMMANDGROUP1.CMDNEXT.ENABLED=.F.THISFORM.COMMANDGROUP1.CMDBOTTOM.ENABLED=.F.THISFORM.CO
16、MMANDGROUP1.CMDEDIT.ENABLED=.F.THISFORM.COMMANDGROUP1.CMDDELETE.ENABLED=.F.THISFORM.COMMANDGROUP1.CMDFIND.ENABLED=.F.THISFORM.COMMANDGROUP1.CMDPRINT.ENABLED=.F.THISFORM.COMMANDGROUP1.CMDEXIT.ENABLED=.F.THISFORM.TEXT1.READONLY=.F.THISFORM.TEXT2.READONLY=.F.THISFORM.OPTIONGROUP1.ENABLED=.T.THISFORM.TE
17、XT3.READONLY=.F.THISFORM.TEXT4.READONLY=.F.THISFORM.TEXT5.READONLY=.F.THISFORM.TEXT6.READONLY=.F.THISFORM.CHECK1.READONLY=.F.THISFORM.EDIT1.READONLY=.F.THISFORM.COMMAND1.VISIBLE=.F.SELECT RSBAPPEND BLANKGO BOTTOMTHISFORM.TEXT1.SETFOCUS()THISFORM.REFRESHTHIS.CAPTION=THISFORM.COMMANDGROUP1.CMDTOP.ENAB
18、LED=.t.THISFORM.COMMANDGROUP1.CMDPREV.ENABLED=.t.THISFORM.COMMANDGROUP1.CMDNEXT.ENABLED=.t.THISFORM.COMMANDGROUP1.CMDBOTTOM.ENABLED=.t.THISFORM.COMMANDGROUP1.CMDADD.ENABLED=.t.THISFORM.COMMANDGROUP1.CMDEDIT.ENABLED=.t.THISFORM.COMMANDGROUP1.CMDDELETE.ENABLED=.t.THISFORM.COMMANDGROUP1.CMDFIND.ENABLED
19、=.t.THISFORM.COMMANDGROUP1.CMDPRINT.ENABLED=.t.THISFORM.COMMANDGROUP1.CMDEXIT.ENABLED=.t.THISFORM.TEXT1.READONLY=.t.THISFORM.TEXT2.READONLY=.t.THISFORM.OPTIONGROUP1.ENABLED=.f.THISFORM.TEXT3.READONLY=.t.THISFORM.TEXT4.READONLY=.t.THISFORM.TEXT5.READONLY=.t.THISFORM.TEXT6.READONLY=.t.THISFORM.CHECK1.
20、READONLY=.t.THISFORM.EDIT1.READONLY=.t.mand1.visible=.t.“删除“按钮的CLICK事件代码:XH=RSB.学号sel=messagebox(该记录学号为:+XH+chr(13)+真的要删除吗?if sel=6delete“查找“按钮的CLICK事件代码:thisform.label11.visible=.t.thisform.text7.visible=.t.thisform.text7.value=thisform.text7.setfocus()“打印“按钮的CLICK事件代码:report form .menu1rsb_bb1.frx
21、 preview for rsb.学号=alltrim(thisform.text1.value)“退出“按钮的CLICK事件代码:packthisform.release“TEXT7”的valid事件代码为:set filter to 学号=alltrim(thisform.text7.value) or 学生姓名=alltrim(thisform.text7.value)locate for 学号=alltrim(thisform.text7.value) or 学生姓名=alltrim(thisform.text7.value)set filter to6、运行界面:(如图5)(图5)7、学生信息查询菜单的设计人事信息的查询是基于RSB.dbf表,菜单提供学号,姓名,全体查询。分别利用不同的命令代码方式实现查询打印功能。各事件的代码如下:*输入编号、姓名提示标签及文本框THISFORM.Label2.Visible=.F.THISFORM.Text1.Visible=.F.THISFORM.Te
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1