添加修改密码函数以及界面

This commit is contained in:
~ Alone 2024-05-19 16:14:27 +08:00
parent 5caf65c869
commit 6d5c509d01
6 changed files with 169 additions and 57 deletions

View File

@ -28,6 +28,7 @@ BEGIN_MESSAGE_MAP(LogInDlg, MyDialog)
// ON_NOTIFY(BCN_HOTITEMCHANGE, IDC_CHECK1, &LogInDlg::OnBnHotItemChangeCheck1)
// ON_NOTIFY(NM_THEMECHANGED, IDC_CHECK1, &LogInDlg::OnNMThemeChangedCheck1)
ON_BN_CLICKED(IDC_CHECK1, &LogInDlg::OnBnClickedCheck1)
ON_WM_CTLCOLOR()
END_MESSAGE_MAP()
@ -38,7 +39,7 @@ BOOL LogInDlg::OnInitDialog()
CImage img;
img.Load(_T("../aike/res/background.jpg"));
//SetBackground(img);
PaintDlg();
//PaintDlg();
// TODO: 在此添加额外的初始化
//PaintDlg();
FixedSize();
@ -50,11 +51,28 @@ BOOL LogInDlg::OnInitDialog()
rt.MoveToXY(270, 240);
AddButton(2, rt);
SetLClick(2, [this](int i) {CloseClick(i); });
if (IsLogin)
{
GetDlgItem(IDC_EDIT3)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC3)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_EDIT4)->ShowWindow(SW_HIDE);
}
else
{
GetDlgItem(IDC_EDIT1)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_CHECK1)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC1)->SetWindowText(_T("密 码:"));
GetDlgItem(IDC_STATIC2)->SetWindowText(_T("确认密码:"));
}
return TRUE; // return TRUE unless you set the focus to a control
// 异常: OCX 属性页应返回 FALSE
}
VOID LogInDlg::LoginClick(int id)
{
CaikeDlg* dlg = (CaikeDlg*)m_Parent;
if (IsLogin)
{
CString Name, Pass, tmp;
GetDlgItemText(IDC_EDIT1, Name);
@ -68,11 +86,14 @@ VOID LogInDlg::LoginClick(int id)
return;
}
}
CaikeDlg* dlg = (CaikeDlg*)m_Parent;
switch (dlg->CheckUser(Name, Pass, sys))
else
{
Name = _T("系统管理员");
}
switch (dlg->CheckUser(Name, Pass, 1))
{
case 0:
MessageBox(_T("账号不存在"), _T("温馨提示"));
MessageBox(_T("账号不存在,或该账号不允许登录电脑端"), _T("温馨提示"));
break;
case 1:
if (sys)
@ -93,6 +114,42 @@ VOID LogInDlg::LoginClick(int id)
break;
}
}
else
{
CString Pass, Pass1,Pass2, tmp;
GetDlgItemText(IDC_EDIT2, Pass);
GetDlgItemText(IDC_EDIT3, Pass1);
GetDlgItemText(IDC_EDIT4, Pass2);
if (Pass != Pass1)
{
MessageBox(_T("两次输入的密码不一致"), _T("温馨提示"));
return;
}
if (Pass.GetLength() > 16)
{
MessageBox(_T("密码长度不能超过16位"), _T("温馨提示"));
return;
}
switch (dlg->ChangePass(dlg->LogName, Pass2, Pass))
{
case 0:
MessageBox(_T("账号不存在"), _T("温馨提示"));
break;
case 1:
MessageBox(_T("密码修改成功"), _T("温馨提示"));
MyDialog::OnOK();
break;
case 2:
MessageBox(_T("旧密码密码输入错误"), _T("温馨提示"));
break;
case 3:
MessageBox(_T("SQL语句执行错误"), _T("温馨提示"));
break;
default:
break;
}
}
}
VOID LogInDlg::CloseClick(int id)
{
@ -101,26 +158,6 @@ VOID LogInDlg::CloseClick(int id)
}
//void LogInDlg::OnBnHotItemChangeCheck1(NMHDR* pNMHDR, LRESULT* pResult)
//{
// 此功能要求 Internet Explorer 6 或更高版本。
// 符号 _WIN32_IE 必须是 >= 0x0600。
// LPNMBCHOTITEM pHotItem = reinterpret_cast<LPNMBCHOTITEM>(pNMHDR);
// TODO: 在此添加控件通知处理程序代码
// *pResult = 0;
//}
//void LogInDlg::OnNMThemeChangedCheck1(NMHDR* pNMHDR, LRESULT* pResult)
//{
// 该功能要求使用 Windows XP 或更高版本。
// 符号 _WIN32_WINNT 必须 >= 0x0501。
// TODO: 在此添加控件通知处理程序代码
// *pResult = 0;
//}
void LogInDlg::OnBnClickedCheck1()
{
GetDlgItem(IDC_EDIT1)->EnableWindow(!((CButton*)GetDlgItem(IDC_CHECK1))->GetCheck());

View File

@ -25,8 +25,7 @@ public:
virtual BOOL OnInitDialog();
VOID LoginClick(int id);
VOID CloseClick(int id);
// afx_msg void OnBnHotItemChangeCheck1(NMHDR* pNMHDR, LRESULT* pResult);
// afx_msg void OnNMThemeChangedCheck1(NMHDR* pNMHDR, LRESULT* pResult);
afx_msg void OnBnClickedCheck1();
virtual void OnOK();
BOOL IsLogin = TRUE;
};

Binary file not shown.

View File

@ -162,6 +162,8 @@ void CaikeDlg::OnCommand(UINT id)
MyDialog::OnCancel();
break;
case IDR_MENU2 + 5:
dlg.IsLogin = FALSE;
dlg.DoModal();
break;
default:
break;
@ -467,8 +469,14 @@ BOOL CaikeDlg::CheckAuthority(CString Authority)
return TRUE;
}
INT CaikeDlg::CheckUser(CString Name, CString Pass, BOOL isSystem)
//检查账号密码
INT CaikeDlg::CheckUser(CString Name, CString Pass, int type)
{
BOOL isSystem = FALSE;
if (Name == _T("系统管理员"))
{
isSystem = TRUE;
}
CString tmp;
_RecordsetPtr m_pRecor;
_variant_t var;
@ -476,7 +484,7 @@ INT CaikeDlg::CheckUser(CString Name, CString Pass, BOOL isSystem)
{
string str = (CStringA)Pass;
AES aes;
Pass = (CStringA)(aes.EncryptionAES(str, "aikehotel1998092")).c_str();
Pass = (CStringA)(aes.EncryptionAES(str, AesKey)).c_str();
}
if (isSystem)
{
@ -498,7 +506,21 @@ INT CaikeDlg::CheckUser(CString Name, CString Pass, BOOL isSystem)
}
else
{
switch (type)
{
case 1:
tmp.Format(_T("select Passwords from staff where JobID = '%s' and Computer = '1'"), Name);
break;
case 2:
tmp.Format(_T("select Passwords from staff where JobID = '%s' and web = '1'"), Name);
break;
case 3:
tmp.Format(_T("select Passwords from staff where JobID = '%s' and mobile = '1'"), Name);
break;
default:
tmp.Format(_T("select Passwords from staff where JobID = '%s'"), Name);
break;
}
AdoSql.QuerySql(tmp, m_pRecor);
if (!m_pRecor->GetadoEOF())
{
@ -521,6 +543,54 @@ INT CaikeDlg::CheckUser(CString Name, CString Pass, BOOL isSystem)
return 0;
}
//修改密码
INT CaikeDlg::ChangePass(CString Name, CString OPass, CString NPass)
{
BOOL isSystem = FALSE;
if (Name == _T("系统管理员"))
{
isSystem = TRUE;
}
int tmp = CheckUser(Name, OPass, 0);
CString sqlStr;
if (OPass != _T(""))
{
string str = (CStringA)OPass;
AES aes;
OPass = (CStringA)(aes.EncryptionAES(str, AesKey)).c_str();
}
if (NPass != _T(""))
{
string str = (CStringA)NPass;
AES aes;
NPass = (CStringA)(aes.EncryptionAES(str, AesKey)).c_str();
}
if (tmp ==1)
{
if (isSystem)
{
sqlStr.Format(_T("if not exists (select 1 from config where vkey = 'passwords')\r\nINSERT INTO config (vkey,value) VALUES ('passwords','%s')\r\nelse\r\nUPDATE config SET value = '%s' WHERE vkey = 'passwords'"), NPass, NPass);
tmp = AdoSql.ImplementSQL(sqlStr);
}
else
{
sqlStr.Format(_T("update staff set Passwords = '%s' where JobID = '%s'"), NPass, Name);
tmp = AdoSql.ImplementSQL(sqlStr);
}
if (tmp != TRUE)
{
return 3;
}
return 1;
}
else
{
return tmp;
}
}
//设置登录信息
VOID CaikeDlg::SetLogInInfo(CString info)
{
CImage img;

View File

@ -80,8 +80,9 @@ public:
VOID MoveAllWin(); //移动所有窗口和按钮
VOID HideAllBt(BOOL Hide = TRUE); //隐藏所有按钮
BOOL CheckAuthority(CString Authority); //检查权限
INT CheckUser(CString Name, CString Pass, BOOL isSystem); //检查账号密码
VOID SetLogInInfo(CString info);
INT CheckUser(CString Name, CString Pass, int type); //检查账号密码
INT ChangePass(CString Name, CString OPass, CString NPass); //修改密码
VOID SetLogInInfo(CString info); //设置登录信息
VOID SetUpClick(int id); //设置按钮
VOID HomepageClick(int id); //回到主页
VOID RoomSetUpClick(int id); //点击房间设置

View File

@ -21,6 +21,11 @@
#define IDC_EDIT1 1002
#define IDC_EDIT2 1003
#define IDC_CHECK1 1004
#define IDC_STATIC1 1005
#define IDC_STATIC2 1006
#define IDC_EDIT3 1007
#define IDC_EDIT4 1008
#define IDC_STATIC3 1009
#define ID_32771 32771
#define ID_32772 32772
#define ID_SHOW_MENU 32773
@ -32,7 +37,7 @@
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 144
#define _APS_NEXT_COMMAND_VALUE 32775
#define _APS_NEXT_CONTROL_VALUE 1005
#define _APS_NEXT_CONTROL_VALUE 1007
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif