《第3章程序设计.ppt》由会员分享,可在线阅读,更多相关《第3章程序设计.ppt(28页珍藏版)》请在三一文库上搜索。
1、上一次课讲到VFP中的数据查询命令,SQL查询语句,在表单中定位记录,过滤记录以及数据统计。请同学们回顾这样两个问题:,记录过滤命令格式及功能是什么?,2. VFP提供了哪4个常用统计命令?,命令格式: SET FILTER TO 表达式 IN 区号 | 别名 功能: 指定访问当前表中记录时必须满足的条件。,VFP提供了常用的4个统计命令: Count、Sum、Average、Total。,上一次课主要学习的内容,本章主要介绍在Visual FoxPro 中设计用户登录界面以及为用户密码加密。,第3章.登录处理,用户认证界面是需要进行用户认证系统必备界面。下图是金蝶K/3ERP登录界面(部分)
2、。,3.1用户登录界面,用户登录界面可以包括程序名称、用户名和密码输入的文本框、确定和退出按钮。如下图: 向该表单添加如下控件: 图标:People.ico 背景图片:login.jpg 2个文本框 (用户名、密码) 2个标签 (用户名、密码提示) 2个按钮 (确定、取消),3.1.1创建表单界面,表单常用属性说明: BorderStyle-用于设置窗口是 否允许拖动边框改变大小。 Closable-指定能否通过双击窗口菜单图标来关闭表单 MaxButton、MinButton、ControlBox-设置是否可用最大化、最小化、关闭按钮 ShowTips-鼠标指针悬停在控件区域时,是否显示To
3、olTipText的值。 ShowWindow-设置表单类型,1.表单属性说明,常用标签属性: AutoSize-根据内容自动调整控件区域大小 BackStyle-背景是否透明 Caption-标签内容 Font*-字体设置,FontBold粗体, FontItalic斜体,FontName字体名称,FontSize字体大小, FontStrikethru删除线,FontUnderLine下划线 ForeColor-标签标题文字颜色 WordWrap-标题文字是否自动折行显示,2.标签属性说明,常用文本框控件属性: ControlSource-文本框的数据源,一般为字段,运行时显示该字段的值,
4、所作修改自动保存 Height-文本框高度(点) Width-文本框宽度(点) IMEMode-得到焦点时输入法状态 PassWordChar-加密显示字符 SelectOnEntry-得以焦点时是否选中文本内容,3.文本框属性说明,常用按钮控件属性: Caption-按钮标题 Cancel-设置为.T.时,按键盘ESC键等于单击该钮。 Default-设置为.T.时,按键盘Enter键等于单击该钮。一个表单上只能有一个按钮的Cancel或Default为.T.,4.按钮控件属性说明,Name=“Logon“ &表单名称 AutoCenter=.T. &自动居中 BorderStyle=2 &
5、固定边框 Caption=“系统登录“ &表单标题 Closable=.F. &双击窗口菜单图标无效 Icon=Imageprople.ico &表单图标 MDIForm=.F. &不是MDI窗口 MaxButton=.F. &没有最大化钮 MinButton=.F. &没有最小化钮 ShowTips=.T. &显示工具提示 ShowWindow=2 &作为顶层表单 WindowState=0 &普通方式显示窗口 WindowType=1 &模式表单,5.表单属性设置,标签.autosize=.t. backstyle=0 &透明 FontName=“宋体“ FontSize=16 WordW
6、rap=.F. txt密码.PassWordChar=“*“ cmdok.Caption=“确定“ cmdok.Default=.T. cmdok.ToolTipText=“登录系统“ cmdexit.cancel=.F. cmdexit.Caption=“取消“ cmdexit.ToolTipText=“取消登录“,6.控件属性设置,步骤: 菜单:显示-Tab键次序 依次单击蓝色矩形框,设置完成后单击表单确认。,7.设置Tab次序,在VFP中,可将用户信息保存到文本文件、二进制文件或者数据库中。将信息存储在数据库中对数据的存取、查询更方便。 1.建立新的数据库 打开项目管理器-数据选项卡-数
7、据库-新建-新建数据库-文件名:Hrmdata,位置:个人文件夹-保存 2.新建表users 在项目管理器中打开新建的数据库-表-新建 -文件名:users,位置:个人文件夹-保存-编辑表结构。,3.1.2用户信息存储方式,字段名 类型 宽度 可否为空 默认值 说明 用户名 字符 20 否 主索引 密码 字符 20 否 说明: 建立表结构后,需要将表添加到表单的数据环境中,以方便操作。步骤: 激活表单,菜单:显示/数据环境/右击菜单中选择“添加”/选择数据库:Hrmdata,选择表:users/添加/关闭,.用户信息表结构,二个按钮对象的MouseMove事件过程: This.MousePoi
8、nter=99 &使用自定义的鼠标指针 This.MouseIcon=“h_point.cur“&鼠标指针文件 新建表单属性: 为了计数的需要,新建一个表单属性:trytime,修改默认值为0,操作: 激活表单/菜单:表单/新建属性/属性名:trytime,添加/在属性窗口修改其值为0,3.1.3添加代码,设计说明: 单击确定按钮时,首先检测是否输入用户名,密码,若输入则核对与表中事先保存的是否一致,如果一致则调系统主表单,否则检测出错次数,如果达到3次,退出系统,否则清空用户名和密码,等待重新输入。,.cmdok.click过程说明,*精确比较 SET EXACT ON *尝试登录词数+1
9、THISFORM.trytime = THISFORM.trytime + 1 *判断是否输入了用户名 IF ALLTRIM(THISFORM.txt用户名.VALUE)=“ MESSAGEBOX(“请输入用户名“,48,“人力资源管理系统“) THISFORM.txt用户名.SetFocus Return ENDIF *获取输入的信息 USER_N=ALLTRIM(THISFORM.txt用户名.VALUE) USER_P=ALLTRIM(THISFORM.txt密码.VALUE) *定义逻辑变量is_user,用于判断是否为合法用户,. cmdok.click代码-1/4,LOCAL Is
10、_User Is_User=.F. *遍历用户表中中所有的记录 *判断输入的用户名称和用户密码是否存在 SELECT users GO TOP DO WHILE .NOT. EOF() *寻找与输入的用户名和密码匹配的记录 Is_User=(USER_N=users.用户名).AND.(USER_P=users.密码) *如果找到 IF IS_USER EXIT ELSE SKIP ENDIF ENDDO,. cmdok.click代码-2/4,*如果正确 IF IS_USER *保存登录用户 *cCurUser=ALLTRIM(THISFORM.txt用户名.Value) *调用主界面 *D
11、O FORM MainForm *退出当前表单 THISFORM.RELEASE *如果登录不正确 ELSE *如果尝试次数达到3次 IF THISFORM.trytime = 3 MESSAGEBOX(“已经连续错误,请重启程序!“, 0+16, “人力资源管理系统“),. cmdok.click代码-3/4,THISFORM.RELEASE CLEAR EVENTS QUIT ENDIF *如果还没有到3次 MESSAGEBOX(“用户名或用户密码不正确!“,0+16,“人力资源管理系统“) THISFORM.txt用户名.Value=“ THISFORM.txt密码.Value=“ TH
12、ISFORM.txt用户名.SetFocus ENDIF *模糊比较 SET EXACT OFF,. cmdok.click代码-4/4,用户单击时弹出确认对话框,如果用户确认则。退出系统。代码: *确认对话框 YN = MESSAGEBOX(“确定退出“,4+32,“人力资源管理系统“) IF YN = 6 *退出登录表单 THISFORM.RELEASE *清除事件循环 Clear EVENTS *退出Visual FoxPro QUIT ENDIF,.退出按钮设计说明,users表中存放的用户名和密码都是非加密的。进行必要的加密处理后才能保证系统安全。加密操作中可以使用Bitxor函数,
13、该函数的格式如下: BITXOR(n1, n2) 功能:返回n1, n2两个数值型数值按位进行异或运算的结果。如果 n1 和 n2 不是整数,那么它们在位操作之前,将转换成整数。函数比较 n1 和 n2 的每个对应位。如果一个数的某一位为 0,并且另一个数相应位为 1,那么操作结果的对应位等于 1;否则等于 0。通过建立含有Bitxor自定义函数encode.prg,实现对用户名和密码的加密处理。,3.2密码处理,函数格式: encode(nStr,nCode) nStr-待加密的字符串 nCode-加密的密钥 返回值:nCode对nStr每一字符位异或运算后结果。 建立步骤: 项目/代码/程
14、序/新建/编辑代码,保存,文件名:encode.prg,位置:个人文件夹 使用方法:密钥是一个255以内的整数 加密:加密串=Encode(源串,密钥) 解密:源串=Encode(加密串,密钥),.加密函数说明,FUNCTION Encode(sStr,nCode) *声明需要使用的本地变量 LOCAL sTmpStr,cTempChr,i *sTempStr:用来保存昨时的编码或者解码后的字符串 *cTempChr:用来保存编码或者解码后的字符 *i:循环计数 *对变量赋初值 sTempStr=“ cTempChr=“ *如果未指定密钥,.加密函数代码-1/2,IF nCode=0 nCod
15、e=184 ENDIF *对字符串的每个字符进行编码 FOR i=1 TO LEN(ALLTRIM(sStr) cTempChr=BITXOR(ASC(SUBSTR(sStr,i,1),nCode) sTempStr=sTempStr+ CHR(cTempChr) ENDFOR *返回编码后的结果 RETURN sTempStr ENDFUNC,.加密函数代码-2/2,主要介绍了在Visual FoxPro 6.0中设计用户登录界面以及为用户密码加密的方法。,第3章小结,1.创建新项目操作步骤? 2.文档界面类型有哪些? 3.列出表单常用属性及作用? 4.列出常用标签属性? 5.列出常用文本框控件属性? 6.如何设置Tab次序? 7. Bitxor函数的格式及功能是什么?,第3章思考题,10.设计用户登录界面,第3章作业题,本章结束,
链接地址:https://www.31doc.com/p-2577435.html