添加登录按钮,点击基础数据验证账号权限

This commit is contained in:
~ Alone 2024-05-14 23:36:14 +08:00
parent 6f47fbc9b2
commit 824e596b9c
6 changed files with 175 additions and 41 deletions

View File

@ -5,6 +5,7 @@
#include "aike.h"
#include "afxdialogex.h"
#include "LogInDlg.h"
#include "aikeDlg.h"
// LogInDlg 对话框
@ -14,52 +15,113 @@ IMPLEMENT_DYNAMIC(LogInDlg, MyDialog)
LogInDlg::LogInDlg(CWnd* pParent /*=nullptr*/)
: MyDialog(IDD_LOGINDLG, pParent)
{
m_Parent = pParent;
}
LogInDlg::~LogInDlg()
{
}
//void LogInDlg::DoDataExchange(CDataExchange* pDX)
//{
// MyDialog::DoDataExchange(pDX);
//}
BEGIN_MESSAGE_MAP(LogInDlg, MyDialog)
ON_WM_PAINT()
ON_NOTIFY(BCN_HOTITEMCHANGE, IDC_CHECK1, &LogInDlg::OnBnHotItemChangeCheck1)
ON_NOTIFY(NM_THEMECHANGED, IDC_CHECK1, &LogInDlg::OnNMThemeChangedCheck1)
ON_BN_CLICKED(IDC_CHECK1, &LogInDlg::OnBnClickedCheck1)
END_MESSAGE_MAP()
// LogInDlg 消息处理程序
//BOOL LogInDlg::PreTranslateMessage(MSG* pMsg)
//{
// // TODO: 在此添加专用代码和/或调用基类
// myDlg->PTMessage(pMsg);
// return __super::PreTranslateMessage(pMsg);
//}
//
//
//void LogInDlg::OnPaint()
//{
// myDlg->PaintDlg();
// MyDialog::OnPaint();
//}
BOOL LogInDlg::OnInitDialog()
{
__super::OnInitDialog();
//CImage img;
//img.Load(_T("../aike/res/background.jpg"));
//myDlg->SetBackground(img);
//myDlg->PaintDlg();
CImage img;
img.Load(_T("../aike/res/background.jpg"));
//SetBackground(img);
PaintDlg();
// TODO: 在此添加额外的初始化
//PaintDlg();
FixedSize();
CRect rt = {0,0,90,30};
/*480,325*/
rt.MoveToXY(120, 240);
AddButton(1, rt);
SetLClick(1, [this](int i) {LoginClick(i); });
rt.MoveToXY(270, 240);
AddButton(2, rt);
SetLClick(2, [this](int i) {CloseClick(i); });
return TRUE; // return TRUE unless you set the focus to a control
// 异常: OCX 属性页应返回 FALSE
}
VOID LogInDlg::LoginClick(int id)
{
CString Name, Pass, tmp;
GetDlgItemText(IDC_EDIT1, Name);
GetDlgItemText(IDC_EDIT2, Pass);
BOOL sys = ((CButton*)GetDlgItem(IDC_CHECK1))->GetCheck();
if (!sys)
{
if (Name == _T(""))
{
MessageBox(_T("请输入要登陆的账号"), _T("温馨提示"));
return;
}
}
CaikeDlg* dlg = (CaikeDlg*)m_Parent;
switch (dlg->CheckUser(Name, Pass, sys))
{
case 0:
MessageBox(_T("账号不存在"), _T("温馨提示"));
break;
case 1:
if(sys)
{
dlg->LogName = _T("系统管理员");
}
else
{
dlg->LogName = Name;
}
MyDialog::OnOK();
break;
case 2:
MessageBox(_T("密码输入错误"), _T("温馨提示"));
break;
default:
break;
}
}
VOID LogInDlg::CloseClick(int id)
{
MyDialog::OnCancel();
//return VOID();
}
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());
// TODO: 在此添加控件通知处理程序代码
}

View File

@ -18,11 +18,14 @@ public:
#endif
protected:
// virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
DECLARE_MESSAGE_MAP()
public:
//virtual BOOL PreTranslateMessage(MSG* pMsg);
//afx_msg void OnPaint();
CWnd* m_Parent = NULL;
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();
};

Binary file not shown.

View File

@ -350,6 +350,21 @@ VOID CaikeDlg::MoveAllWin()
tt.MoveToX(rt.Width() - 25);
MoveButton(4, tt);
tt = { 0,0,180,180 };
CPoint pt = { (rt.Width() - 600) / 2,100 };
tt.MoveToXY(pt);
MoveButton(1000, tt);
tt.MoveToXY(pt.x + 200, pt.y);
MoveButton(2000, tt);
tt.MoveToXY(pt.x + 400, pt.y);
MoveButton(3000, tt);
tt.MoveToXY(pt.x, pt.y + 200);
MoveButton(4000, tt);
tt.MoveToXY(pt.x + 200, pt.y + 200);
MoveButton(5000, tt);
tt.MoveToXY(pt.x + 400, pt.y + 200);
MoveButton(6000, tt);
GetWindowRect(rt);
rt.MoveToXY(-50, -50);
rt.left = 150;
@ -385,10 +400,8 @@ BOOL CaikeDlg::CheckAuthority(CString Authority)
if (LogName == _T(""))
{
//MessageBox(_T("请先登录账号"), _T("温馨提示"));
ttttt = FALSE;
LogInDlg dlg;
dlg.DoModal();
ttttt = TRUE;
LogInDlg dlg(this);
if (dlg.DoModal() != IDOK)
return FALSE;
}
if (LogName == _T("系统管理员"))
@ -412,12 +425,66 @@ BOOL CaikeDlg::CheckAuthority(CString Authority)
if (tmp.Find(_T("$") + Authority + _T("$")) == -1)
{
MessageBox(_T("账号权限不足"), _T("温馨提示"));
MessageBox(_T("用户没有此权限"), _T("温馨提示"));
return FALSE;
}
return TRUE;
}
INT CaikeDlg::CheckUser(CString Name, CString Pass, BOOL isSystem)
{
CString tmp;
_RecordsetPtr m_pRecor;
_variant_t var;
if (Pass != _T(""))
{
string str = (CStringA)Pass;
AES aes;
Pass = (CStringA)(aes.EncryptionAES(str, "aikehotel1998092")).c_str();
}
if (isSystem)
{
AdoSql.QuerySql(_T("select * from config where vkey = 'passwords'"), m_pRecor);
int i = 0;
if (!m_pRecor->GetadoEOF())
{
var = m_pRecor->GetCollect("value");
if (var.vt != VT_NULL)
{
tmp = (LPCTSTR)_bstr_t(var);
}
}
if (tmp == Pass)
{
return 1;
}
return 2;
}
else
{
tmp.Format(_T("select Passwords from staff where JobID = '%s' and Computer = '1'"), Name);
AdoSql.QuerySql(tmp, m_pRecor);
if (!m_pRecor->GetadoEOF())
{
var = m_pRecor->GetCollect("Passwords");
if (var.vt != VT_NULL)
{
tmp = (LPCTSTR)_bstr_t(var);
}
if (tmp == Pass)
{
return 1;
}
return 2;
}
else
{
return 0;
}
}
return 0;
}
//设置按钮
VOID CaikeDlg::SetUpClick(int id)
{

View File

@ -49,7 +49,7 @@ public:
CString UserName; //数据库用户名
CString AdoPass; //数据库密码
CString LogName; //当前登录的账号
BOOL ttttt = TRUE;
char AesKey[18] = "aikehotel19980921"; //AES密钥
RoomSetUpDlg m_RoomSetUpDlg; //房间设置界面
CommodityDlg m_CommodityDlg; //商品信息界面
PaymentDlg PaymentDlg; //付款方式界面
@ -59,7 +59,6 @@ public:
PrintSetUpDlg PrintSetUpDlg; //打印设置界面
CouponDlg m_CouponDlg; //票券设置界面
ParameterDlg m_ParameterDlg; //参数设置界面
//MFC回调函数
// virtual BOOL PreTranslateMessage(MSG* pMsg); //截获窗口消息
afx_msg void OnSize(UINT nType, int cx, int cy); //窗口大小发生改变
@ -80,6 +79,7 @@ public:
VOID MoveAllWin(); //移动所有窗口和按钮
VOID HideAllBt(BOOL Hide = TRUE); //隐藏所有按钮
BOOL CheckAuthority(CString Authority); //检查权限
INT CheckUser(CString Name, CString Pass, BOOL isSystem); //检查账号密码
VOID SetUpClick(int id); //设置按钮
VOID HomepageClick(int id); //回到主页
VOID RoomSetUpClick(int id); //点击房间设置

View File

@ -14,11 +14,13 @@
#define IDD_COUPONDLG 139
#define IDD_DISCOUNTDLG 140
#define IDD_PARAMENTERDLG 141
#define IDD_DIALOG1 142
#define IDD_LOGINDLG 142
#define IDC_LIST1 1000
#define IDC_BUTTON1 1001
#define IDC_BUTTON2 1002
#define IDC_EDIT1 1002
#define IDC_EDIT2 1003
#define IDC_CHECK1 1004
#define ID_32771 32771
#define ID_32772 32772
#define ID_SHOW_MENU 32773
@ -30,7 +32,7 @@
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 144
#define _APS_NEXT_COMMAND_VALUE 32775
#define _APS_NEXT_CONTROL_VALUE 1002
#define _APS_NEXT_CONTROL_VALUE 1005
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif