| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2181 人关注过本帖
标题:帮做个简单的登录窗口,谢谢!
只看楼主 加入收藏
qqvvvvpp
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2006-3-12
收藏
 问题点数:0 回复次数:13 
帮做个简单的登录窗口,谢谢!
谁能都帮忙做一个简单的登录系统?
要求
如密码和用户正确的话,进入另一个窗口。
提供程序源最好
谢谢!
搜索更多相关主题的帖子: 窗口 登录 
2006-03-13 22:13
清风行者
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2006-3-7
收藏
得分:0 

不好意思,我也是新学VFP,就算借楼主的帖交份作业吧,请各位高手指正。


首先要有一个表 tabid.dbf 用于存放用户名和密码,至少有“用户名”和“密码”两个字段。

设计一个登录表单,至少有两个文本框分别为text1 (用于填写用户名)和text2(用于填写密码)。至少有二个命令按钮command1(确定)和command2(取消)

再有,本人习惯添加一个标签控件 label1,并设其 Caption 初始值为“0”

command1的代码如下

*设置用户名不能为空,如允许为空则不需此步骤
If Len(Alltrim(Thisform.text1.Value))=0
  Messagebox('请输入用户名!')
  Return
Endif

*设置密码不能为空,如允许为空则不需此步骤
If Len(Alltrim(Thisform.text2.Value))=0
  Messagebox('请输入密码!')
  Return
Endif

Use tabid.Dbf In 0
Locate For Alltrim(用户名)==Alltrim(Thisform.text1.Value) &&定位到与输入用户名相同的记录

*如果没有找到相同记录时执行下面代码
If Eof()
  Use
  Messagebox('没有此用户!')
  Thisform.text1.Value=''
  Thisform.text2.Value=''
  Thisform.text1.SetFocus
  Thisform.label1.Caption=Alltrim(Str(Val(Thisform.label1.Caption)+1)) &&累计出错的次数
  If Thisform.label1.Caption='3' &&出错三次后自动退出
    Messagebox('连续三次输入错误,系统将退出!')
    Use
    Quit
  Endif
  Return
ENDIF

*找到后执行的动做
If Alltrim(Thisform.text2.Value)==Alltrim(密码)
  Use
  在这里添加在正确登录后你要继续执行的程度
Else
  Use
  Messagebox('密码错误!')
  Thisform.text2.Value=''
  Thisform.text2.SetFocus
  Thisform.label1.Caption=Alltrim(Str(Val(Thisform.label1.Caption)+1))
  If Thisform.label1.Caption='3' &&出错三次后自动退出
    Messagebox('连续三次输入错误,系统将退出!')
    Use
    Quit
  Endif
  Return
ENDIF

没做测试。为使代码在帖子里美观,句首加入了全角空格,所以不能直接复制代码。请高手指正!

[此贴子已经被作者于2006-3-14 20:43:54编辑过]

2006-03-14 19:53
动力
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2006-3-16
收藏
得分:0 
类似的代码很多书上都有的.可以去参考.
2006-03-16 16:06
wangjiayang
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2006-3-15
收藏
得分:0 
程序可以在改简单一些

很荣幸在这跟大家一起交流!
2006-03-16 19:39
zxb2896802
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2006-9-12
收藏
得分:0 

最简单的
use 表名字
loca for allt(thisform.输入用户名的文本框)=allt(表中用户名字段)and allt(thisform.输入密码的文本框)=allt(表中用户名字段)
if found()
执行语句
else
执行语句
endif
use

2006-09-13 20:10
啸凡
Rank: 8Rank: 8
等 级:贵宾
威 望:45
帖 子:1356
专家分:885
注 册:2006-2-22
收藏
得分:0 
一般来说,最好有一段限制输入次数的代码,用户名以下拉组合框来实现方便一些。

两人行已有我师……
2006-09-14 08:05
btchongzi
Rank: 1
等 级:新手上路
帖 子:72
专家分:0
注 册:2006-8-22
收藏
得分:0 

下面是我写的一个程序里的代码
SELECT 授权用户
locate for ALLTRIM(thisform.text2.value)==ALLTRIM(授权用户.用户名) and ALLTRIM(thisform.text1.Value)==ALLTRIM(授权用户.授权密码)
if !eof()
if alltrim(级别)=="管理员" &&这一段是权限设置
PUBLIC jb,username
jb=1
username=alltrim(姓名)
else
public jb,username
jb=0
username=alltrim(姓名)
endif

do 菜单.mpr
DO maintool &&这是一个工具栏


thisform.release
else
#define missmatch_loc "用户或口令错,请重新登录!"
wait window missmatch_loc timeout 1
thisform.text2.value=''
thisform.text1.value=''
thisform.text1.setfocus
thisform.text2.setfocus
numcount=numcount+1
if numcount=4
numcount=0
mess =messagebox("三次口令错,将退出程序!",4+16+2,"退出")
clear event
release thisform
endif
ENDIF

2006-09-14 11:20
xingtaihh
Rank: 1
等 级:新手上路
帖 子:51
专家分:0
注 册:2005-12-14
收藏
得分:0 

我想顺便提一个问题,就是dbf文件加密问题,像上述方法固然可以实现验证密码,但懂vfp的人可以通过打开dbf文件来获得“授权用户和授权密码”,如何通过程序的方法来实现dbf文件加密,请大家赐教。

2006-09-14 16:38
wzxc
Rank: 9Rank: 9Rank: 9
来 自:齐鲁大地
等 级:贵宾
威 望:39
帖 子:985
专家分:1296
注 册:2006-4-25
收藏
得分:0 
镆a^;:9876
謮朢\fpz*
铕{{杘GHkX
lmno
这是四个密码的加密效果,原来的值是由字母和数字组成。
将原来的字符串逐个分解,将其ascii码值进行运算后,组成新的字符串。
这是最笨的方法了。
当然还可以通过各种高级的加密函数进行运算,如系统函数sys(2007)
?SYS(2007,'abc')
得到20810


认真看书学习,弄通Fox主义。
2006-09-14 20:19
xingtaihh
Rank: 1
等 级:新手上路
帖 子:51
专家分:0
注 册:2005-12-14
收藏
得分:0 

版主说的结果正是我想要的,可我不知道该如何实现上述功能,还请明示,我的程序是下面这样的,就是密码库的数据实际上公开的,只要是会VFP就能打开就能看到,如何将其加密,验证时再解密,请版主帮忙解决。谢了!
i=i+1
SELECT mima
LOCATE FOR mima.username=THISFORM.combo1.Value
DO CASE
CASE i<=3 AND FOUND() AND THISFORM.text1.Value=mima.password &&输入次数未超过3次且用户名正确、口令正确
operat=THISFORM.combo1.Value
INSERT INTO login(user_id,user_name,login_time) VALUES(mima.user_id,mima.user_name,DATETIME())
messagebox("正在登陆系统!",0+48+0,"登陆!")
thisform.release
do c:\gz\menu\menu.mpr
CASE i<=3 AND FOUND() AND THISFORM.text1.Value!=mima.password &&输入次数未超过3次且用户名正确、口令不正确
MESSAGEBOX("你输入的密码有误,请重新输入!","系统提示信息")
THISFORM.Text1.Value=""
THISFORM.Text1.Setfocus
CASE i<=3 AND NOT FOUND() &&输入次数未超过3次且用户名不正确
MESSAGEBOX("操作员选择有误,请重新输入!","系统提示信息")
THISFORM.combo1.Value=""
THISFORM.Text1.Value=""
THISFORM.combo1.Setfocus
CASE i>3 &&输入次数超过3次
MESSAGEBOX("您是非法用户,本系统将自动退出!","系统提示信息")
quit
ENDCASE


[此贴子已经被作者于2006-9-14 22:35:51编辑过]

2006-09-14 22:26
快速回复:帮做个简单的登录窗口,谢谢!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.062308 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved