登录界面

渔夫4797 2003-12-02 11:58:23
如何用vc制作带密码检验功能的登录界面?????
...全文
158 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
yanw0212 2003-12-25
  • 打赏
  • 举报
回复
在论坛里找到你的帖自,点击管理菜单,然后给分!
lxz9117 2003-12-10
  • 打赏
  • 举报
回复
ding
canjian 2003-12-10
  • 打赏
  • 举报
回复
收藏
checkyvc6 2003-12-10
  • 打赏
  • 举报
回复
如果问题解决了话,赶快揭帖啊!

你可以对密码进行简单的加密这样文件中或者数据库中显示的密码不是昵登陆时的密码
下面给你一个加密类直接用就可以了
class CCrypt
{
public:
CCrypt();
virtual ~CCrypt();
public:
static CString Encrypt(CString S, WORD Key); // 加密函数
static CString Decrypt(CString S, WORD Key); // 解密函数
};

// 常量
#define C1 52845
#define C2 22719

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CCrypt::CCrypt()
{

}

CCrypt::~CCrypt()
{

}

CString CCrypt::Encrypt(CString S, WORD Key) // 加密函数
{
CString Result,str;
int i,j;

Result=S; // 初始化结果字符串
for(i=0; i<S.GetLength(); i++) // 依次对字符串中各字符进行操作
{
Result.SetAt(i, S.GetAt(i)^(Key>>8)); // 将密钥移位后与字符异或
Key = ((BYTE)Result.GetAt(i)+Key)*C1+C2; // 产生下一个密钥
}
S=Result; // 保存结果
Result.Empty(); // 清除结果
for(i=0; i<S.GetLength(); i++) // 对加密结果进行转换
{
j=(BYTE)S.GetAt(i); // 提取字符
// 将字符转换为两个字母保存
str="12"; // 设置str长度为2
str.SetAt(0, 65+j/26);
str.SetAt(1, 65+j%26);
Result += str;
}
return Result;
}

CString CCrypt::Decrypt(CString S, WORD Key) // 解密函数
{
CString Result,str;
int i,j;

Result.Empty(); // 清楚结果
for(i=0; i < S.GetLength()/2; i++) // 将字符串两个字母一组进行处理
{
j = ((BYTE)S.GetAt(2*i)-65)*26;
j += (BYTE)S.GetAt(2*i+1)-65;
str="1"; // 设置str长度为1
str.SetAt(0, j);
Result+=str; // 追加字符,还原字符串
}
S=Result; // 保存中间结果
for(i=0; i<S.GetLength(); i++) // 依次对字符串中各字符进行操作
{
Result.SetAt(i, (BYTE)S.GetAt(i)^(Key>>8)); // 将密钥移位后与字符异或
Key = ((BYTE)S.GetAt(i)+Key)*C1+C2; // 产生下一个密钥
}
return Result;
}

渔夫4797 2003-12-10
  • 打赏
  • 举报
回复
请问yanw0212(),我怎么给分给你?
渔夫4797 2003-12-10
  • 打赏
  • 举报
回复
非常感谢诸位!特别是yanw0212()!
yanw0212 2003-12-05
  • 打赏
  • 举报
回复
1.在对话框的OnInitDialog() 中

BOOL CAdminisLogin::OnInitDialog()
{
CDialog::OnInitDialog();
::SetFocus(m_combobox.m_hWnd);
m_combobox.DeleteString(0);
sql.Empty();
sql = "SELECT LoginName FROM t_UserInfo WHERE UserTypeID=0 AND EnableFlag<>0";
if(!m_pDb.IsOpen())
{
if(m_pDb.Open(strConnection))
{
m_pRs.Close();
m_pRs = CADORecordset(&m_pDb);
}
else
{
m_pRs.Close();
m_pDb.Close();
::MessageBox(NULL,"请确认数据库服务器是否打开,连接是否正常,然后单击“确定”按钮!","ExceptionManager提示", 0 | MB_ICONERROR );
::EnableWindow(GetDlgItem(IDOK)->m_hWnd,false);
return false;
}
}
if(m_pRs.Open(sql, CADORecordset::openQuery))
{
while(!m_pRs.IsEOF())
{
if( !m_pRs.GetFieldValue(0,LoginName) )
{
m_pRs.Close();
m_pDb.Close();
::MessageBox(NULL,"数据库操作异常!","ExceptionManager提示信息", 0 | MB_ICONASTERISK | MB_TOPMOST) ;
return false;
}
m_pRs.MoveNext();
}
}
else
{
m_pRs.Close();
m_pDb.Close();
::MessageBox(NULL,"数据库操作异常!","ExceptionManager提示信息", 0 | MB_ICONASTERISK | MB_TOPMOST) ;
return false;
}// 结束数据库查询
m_combobox.AddString(LoginName);

sql.Empty();
sql = "SELECT LoginName,LoginPWD ,UserTypeID FROM t_UserInfo WHERE EnableFlag<>0 AND UserTypeID<>0";
if(m_pRs.Open(sql, CADORecordset::openQuery))
{
while(!m_pRs.IsEOF())
{
if( !m_pRs.GetFieldValue(0,LoginName) )
{
m_pRs.Close();
m_pDb.Close();
::MessageBox(NULL,"数据库操作异常!","ExceptionManager提示信息", 0 | MB_ICONASTERISK | MB_TOPMOST) ;
return false;
}
if( !m_pRs.GetFieldValue(1,LoginPWD) )
{
m_pRs.Close();
m_pDb.Close();
::MessageBox(NULL,"数据库操作异常!","ExceptionManager提示信息", 0 | MB_ICONASTERISK | MB_TOPMOST) ;
return false;
}
if( !m_pRs.GetFieldValue(2,UserTypeID) )
{
m_pRs.Close();
m_pDb.Close();
::MessageBox(NULL,"数据库操作异常!","ExceptionManager提示信息", 0 | MB_ICONASTERISK | MB_TOPMOST) ;
return false;
}
m_combobox.AddString(LoginName);
m_pRs.MoveNext();
}
}
else
{
m_pRs.Close();
m_pDb.Close();
::MessageBox(NULL,"数据库操作异常!","ExceptionManager提示信息", 0 | MB_ICONASTERISK | MB_TOPMOST) ;
return false;
}// 结束数据库查询


return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}

2 。当用户添入了登陆名和密码后,点击登陆按钮
void CAdminisLogin::OnOK()
{
UpdateData(true);

static int count = 1;
if( m_LoginName.IsEmpty() )
{
::MessageBox(NULL,"登录名不能为空,请重新输入!","ExceptionManager提示信息" ,0 | MB_ICONHAND) ;
return;
}
bool havedata = false;

sql.Empty();
sql = "SELECT LoginPWD,UserID FROM t_UserInfo WHERE EnableFlag<>0 AND LoginName='";
sql += m_LoginName;
sql += "'";

if(m_pRs.Open(sql, CADORecordset::openQuery))
{
while(!m_pRs.IsEOF())
{
havedata = true;
if( !m_pRs.GetFieldValue(0,m_dbpassword) )
{
m_pRs.Close();
m_pDb.Close();
::MessageBox(NULL,"数据库操作异常!","ExceptionManager提示信息", 0 | MB_ICONASTERISK | MB_TOPMOST) ;
return;
}
if( !m_pRs.GetFieldValue(1,m_dbuserid) )
{
m_pRs.Close();
m_pDb.Close();
::MessageBox(NULL,"数据库操作异常!","ExceptionManager提示信息", 0 | MB_ICONASTERISK | MB_TOPMOST) ;
return;
}
m_pRs.MoveNext();
}
}
else
{
m_pRs.Close();
m_pDb.Close();
::MessageBox(NULL,"数据库操作异常!","ExceptionManager提示信息", 0 | MB_ICONASTERISK | MB_TOPMOST) ;
return;
}// 结束数据库查询

if(!havedata)
{
if (count >= 3)
{
m_pRs.Close();
m_pDb.Close();
::MessageBox(NULL,"非法用户不能登录,系统将关闭","ExceptionManager提示信息" ,0 | MB_ICONHAND) ;
PostQuitMessage(WM_QUIT);
}
else
{
::MessageBox(NULL,"登录名无效,不能登录","ExceptionManager提示信息" ,0 | MB_ICONHAND) ;
}

count ++;
return;
}
else
{
m_password.MakeUpper();
m_dbpassword.MakeUpper();
if((m_password == m_dbpassword) )
{
AdminisName.Empty();
AdminisName = m_LoginName;

AdminisID = 0;
AdminisID = m_dbuserid;

CString LogID;
LogID.Empty();
LogID.Format("%d",m_dbuserid) ;
sql.Empty();
sql = "INSERT INTO t_UserLog(UserID,LoginName,SystemFunction,HappenTime,UserAction,Description ) VALUES( ";
sql += LogID ;
sql += ",'";
sql += m_LoginName;
sql += "' ,'BasicManager', GETDATE(),'Login', '用户登录' )";

if ( !m_pDb.IsOpen() )
{
if ( !m_pDb.Open() )
{
m_pRs.Close();
m_pDb.Close();
::MessageBox(NULL,"请确认数据库服务器是否打开,连接是否正常,然后单击“确定”按钮!","ExceptionManager提示", 0 | MB_ICONERROR );
}
}
m_pDb.Execute(sql);

CDialog::OnOK();
}
else
{
if (count >= 3)
{
m_pRs.Close();
m_pDb.Close();
::MessageBox(NULL,"非法用户不能登录,系统将关闭","ExceptionManager提示信息" ,0 | MB_ICONHAND) ;
PostQuitMessage(WM_QUIT);
}
else
{
::MessageBox(NULL,"登录密码错误,不能登录","ExceptionManager提示信息" ,0 | MB_ICONHAND) ;
}
count ++;
return;
}
}
m_pRs.Close();
m_pDb.Close();
}
arvid_gs 2003-12-02
  • 打赏
  • 举报
回复
?
lifengli 2003-12-02
  • 打赏
  • 举报
回复
用数据查找的功能
bohut 2003-12-02
  • 打赏
  • 举报
回复
做一个对话框,放置你的几个editbox,至于你的密码可以存放在文件中也可以放在数据库中。

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧