VFP的登录表单的设计

作者在 2006-12-16 18:28:00 发布以下内容

     经常发现有朋友不能很好地设计VFP的登录界面,主要存在的问题有:

     (1)无论输入什么都能正常登录;(2)无论输入什么都不能正常登录;(3)输入一个正确的用户无论密码怎样都能正常登录;等等,不一而足。

     检查发现,产生这些问题的原因是多方面的,但程序思路不对是肯定的。我们知道,登录的首要条件是用户名和密码都同时满足要求才对。同时,比较用户名和密码的时候不能只作不精确地比较,而是要做精确比较;用户名和密码必须同时进行比较。在查找了用户名和密码之后,正常查找的结果要么正确(此时系统登录成功),要么错误。针对登录错误的情况,记录登录次数。为了保证次数的连续性,必须在初始化部分设置次数为全局变量,以后在本表单的别的场合,就能正常使用。当然,还要注意很多细节,比如控件属性的设计,各种情况的考虑等。

    先建立一个表单,表单里面添加2个标签,2个文本框,2个命令按钮。设置标签的caption值,设置命令按钮的caption值,设置文本框的inputmask值。对各对象进行布局。

    程序设计在对控件完成上述工作以后进行。这里,主要针对表单的初始化部分(init事件)和确定命令按钮(command1.click)。

(1)在表单的初始化部分:
PUBLIC S
S=0
IF FILE("管理员.dbf")
  USE 管理员.dbf
ELSE
  CREATE TABLE 管理员 (用户名 C(8),密码 C(16))
  INSERT INTO 管理员 VALUES ("SYSTEM","123456")
ENDIF
THISFORM.TEXT1.INPUTMASK=REPLICATE("X",8)
THISFORM.TEXT1.VALUE=''
THISFORM.TEXT2.INPUTMASK=REPLICATE("X",16)
THISFORM.TEXT2.VALUE=''
THISFORM.TEXT2.PASSWORDCHAR='*'

(2)在确定等命令按钮部分:
CTEXT1=THISFORM.TEXT1.VALUE
CTEXT2=THISFORM.TEXT2.VALUE
IF EMPTY(CTEXT1) OR EMPTY(CTEXT2)
  DO CASE
  CASE EMPTY(CTEXT1) AND EMPTY(CTEXT2)
    MESSAGEBOX("请输入用户名和密码",46,"用户登录")
    THISFORM.TEXT1.SETFOCUS
  CASE EMPTY(CTEXT1) AND !EMPTY(CTEXT2)
    MESSAGEBOX("请输入用户名",46,"用户登录")
    THISFORM.TEXT1.SETFOCUS
  CASE !EMPTY(CTEXT1) AND EMPTY(CTEXT2)
    MESSAGEBOX("请输入密码",46,"用户登录")
    THISFORM.TEXT2.SETFOCUS
  ENDCASE
ELSE
  LOCATE ALL FOR 用户名=CTEXT1 AND 密码=CTEXT2
  IF FOUND()
    DO FORM 图书管理信息系统
    CLOSE ALL
    THISFORM.RELEASE
  ELSE
    S=S+1
    IF S>=3
      MESSAGEBOX("三次登录错误!退出系统!",46,"错误")
      THISFORM.RELEASE
      QUIT
    ELSE
      MESSAGEBOX("用户名或密码不正确!",46,"错误")
      THISFORM.TEXT2.VALUE=''
      THISFORM.TEXT1.SETFOCUS
      THISFORM.REFRESH
    ENDIF
  ENDIF
ENDIF

VFP程序 | 阅读 13570 次
文章评论,共0条
游客请输入验证码
浏览116656次