⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 userdlg.cpp

📁 车友管理系统
💻 CPP
字号:
// UserDlg.cpp : implementation file
//

#include "stdafx.h"
#include "车友.h"
#include "UserDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CUserDlg dialog

#include "LoginDlg.h"

CUserDlg::CUserDlg(DWORD dwUser, CWnd* pParent /*=NULL*/)
	:m_dwUser(dwUser), CDialog(CUserDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CUserDlg)
	m_udepwd = _T("");
	m_udename = _T("");
	m_udepwdr = _T("");
	m_udeonp = _T("");
	m_udenpr = _T("");
	m_udenp = _T("");
	//}}AFX_DATA_INIT
}


void CUserDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CUserDlg)
	DDX_Control(pDX, IDC_UD_LIST, m_udlist);
	DDX_Control(pDX, IDC_UD_CPURVIEW, m_udcpv);
	DDX_Text(pDX, IDC_UD_ENP, m_udepwd);
	DDV_MaxChars(pDX, m_udepwd, 16);
	DDX_Text(pDX, IDC_UD_ENAME, m_udename);
	DDV_MaxChars(pDX, m_udename, 18);
	DDX_Text(pDX, IDC_UD_ENPR, m_udepwdr);
	DDV_MaxChars(pDX, m_udepwdr, 16);
	DDX_Text(pDX, IDC_UD_EONP, m_udeonp);
	DDV_MaxChars(pDX, m_udeonp, 16);
	DDX_Text(pDX, IDC_UD_EONPR, m_udenpr);
	DDV_MaxChars(pDX, m_udenpr, 16);
	DDX_Text(pDX, IDC_UD_EOP, m_udenp);
	DDV_MaxChars(pDX, m_udenp, 16);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CUserDlg, CDialog)
	//{{AFX_MSG_MAP(CUserDlg)
	ON_BN_CLICKED(IDC_UD_BADD, OnUdBadd)
	ON_BN_CLICKED(IDC_UD_BDEL, OnUdBdel)
	ON_BN_CLICKED(IDC_UD_BHELP, OnUdBhelp)
	ON_BN_CLICKED(IDC_UD_BMODIFY, OnUdBmodify)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CUserDlg message handlers

BOOL CUserDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	if(m_dwUser < 1)
	{
		GetDlgItem(IDC_UD_ENAME)->EnableWindow(FALSE);
		GetDlgItem(IDC_UD_CPURVIEW)->EnableWindow(FALSE);
		GetDlgItem(IDC_UD_ENP)->EnableWindow(FALSE);
		GetDlgItem(IDC_UD_ENPR)->EnableWindow(FALSE);
		GetDlgItem(IDC_UD_BADD)->EnableWindow(FALSE);
		GetDlgItem(IDC_UD_BDEL)->EnableWindow(FALSE);
	}
	USERINFO theUser;
	char * strOper[] = { {"信息录入员"},{"系统管理员"} };
	UINT size = sizeof(USERINFO);
	LPBYTE bt = new unsigned char[sizeof(theUser)];
	CString strID;
	strID.Format("User%04u",0);
	int lastID;
	lastID = AfxGetApp()->GetProfileInt("用户","LastID",0);
	for(int i=0;i<lastID && AfxGetApp()->GetProfileBinary("用户",strID,&bt,&size);i++)
	{
		memcpy(&theUser,bt,sizeof(theUser));
		CString strInfo;
		strInfo.Format("%s [%s]",theUser.name,strOper[theUser.oper]);
		m_udlist.AddString(strInfo);
		strID.Format("User%04u",i+1);
	}
	if(lastID > 0)
		m_udlist.SetCurSel(0);
	delete [] bt;
	m_udcpv.SetCurSel(0);
	return TRUE;
}
void CUserDlg::OnUdBadd() 
{
	UpdateData();
	char * strq[] = { {"信息录入员"},{"系统管理员"} };
	int purview = m_udcpv.GetCurSel();
	if(m_udename.IsEmpty())
	{
		MessageBox("请指定用户名称。","输入错误",MB_OK);//|MB_ICONQUESION);
		GetDlgItem(IDC_UD_ENAME)->SetFocus();
		return;
	}
	if(purview == -1)
	{
		MessageBox("请指定用户权限。","输入错误",MB_OK);//|MB_ICONQUESION);
		GetDlgItem(IDC_UD_CPURVIEW)->SetFocus();
		return;
	}
	if(m_udepwd.Compare(m_udepwdr))
	{
		MessageBox("两次输入的密码不一致,请重新输入。","密码验证错",MB_OK);//|MB_ICONQUESTION);
		m_udepwd.Empty();
		m_udepwdr.Empty();
		UpdateData(FALSE);
		GetDlgItem(IDC_UD_ENP)->SetFocus();
		return;
	}
	int LastID = AfxGetApp()->GetProfileInt("用户","LastID",0);
	CString strID;
	strID.Format("User%04u",LastID);
	USERINFO user;
	ZeroMemory(&user,sizeof(user));
	strcpy(user.name,m_udename);
	user.oper = purview;
	strcpy(user.password,m_udepwd);
	if(AfxGetApp()->WriteProfileBinary("用户",strID,(LPBYTE)&user,sizeof(user)))
	{
		CString str = m_udename + " [" + strq[purview] + "]";
		m_udlist.AddString(str);
		LastID++;
		AfxGetApp()->WriteProfileInt("用户","LastID",LastID);
	}
	else
	{
		MessageBox("数据写入出错。","错误",MB_OK|MB_ICONSTOP);
		return;
	}
	m_udcpv.SetCurSel(0);
	m_udename.Empty();
	m_udepwd.Empty();
	m_udepwdr.Empty();
	UpdateData(FALSE);	
}
void CUserDlg::OnUdBdel() 
{
	int s;
	CString strValue;
	s = m_udlist.GetCurSel();
	if(s<0)
	{
		MessageBox("请从右下角的列表中选择一个要删除用户。","指定用户错",MB_OK|MB_ICONSTOP);
		return;
	}
	if(s==0)
	{
		AfxMessageBox("为保证至少保留一个系统管理员,此用户不允许被删除,但您可以修改其密码。",MB_OK|MB_ICONSTOP);
		return;
	}
	m_udlist.GetText(s,strValue);
	strValue = "确认删除此用户(" + strValue + ")吗?";
	if(MessageBox(strValue,"确认删除用户",MB_OKCANCEL|MB_ICONQUESTION) != IDOK)
		return;
	int nLastID = AfxGetApp()->GetProfileInt("用户","LastID",0);
	if(! nLastID)
		return;
	HKEY key;
	if(nLastID != (s+1))
	{
		strValue.Format("User%04u",nLastID-1);
		USERINFO user;
		UINT btsize = sizeof(user);
		LPBYTE bt = new unsigned char[btsize];
		AfxGetApp()->GetProfileBinary("用户",strValue,&bt,&btsize);
		memcpy(&user,bt,btsize);
		delete [] bt;
		strValue.Format("User%04u",s);
		AfxGetApp()->WriteProfileBinary("用户",strValue,(LPBYTE)&user,btsize);
	}
	nLastID--;
	AfxGetApp()->WriteProfileInt("用户","LastID",nLastID);
	strValue.Format("User%04u",nLastID);
	::RegOpenKey(HKEY_USERS,".Default\\SoftWare\\HMN-SOFT\\车友\\用户",&key);
	::RegDeleteValue(key,strValue);
	::RegCloseKey(key);
	m_udlist.DeleteString(s);
}
void CUserDlg::OnUdBhelp() 
{
	MessageBox("在“注销”或者“修改密码”之前,请首先从右下角的列表框里选择一个用户。","帮助信息",MB_OK);
}
void CUserDlg::OnUdBmodify() 
{
	UpdateData(TRUE);
	int s = m_udlist.GetCurSel();
	if(s<0)
	{
		MessageBox("请从右下角的列表中选择一个用户。","指定用户错",MB_OK|MB_ICONSTOP);
		return;
	}
	CString str;
	str.Format("User%04u",s);
	USERINFO user;
	UINT btsize = sizeof(user);
	LPBYTE bt = new unsigned char[btsize];
	AfxGetApp()->GetProfileBinary("用户",str,&bt,&btsize);
	memcpy(&user,bt,btsize);
	delete [] bt;
	if(m_udenp.Compare(user.password))
	{
		AfxMessageBox("该用户的原密码不正确,请重新输入。",MB_OK|MB_ICONSTOP);
		SetDlgItemText(IDC_UD_EOP,"");
		GetDlgItem(IDC_UD_EOP)->SetFocus();
		return;
	}
	if(m_udeonp.Compare(m_udenpr))
	{
		AfxMessageBox("两次输入的密码不一致,请重新输入。",MB_OK|MB_ICONSTOP);
		SetDlgItemText(IDC_UD_EONP,"");
		SetDlgItemText(IDC_UD_EONPR,"");
		GetDlgItem(IDC_UD_EONP)->SetFocus();
		return;
	}
	strcpy(user.password,m_udeonp);
	AfxGetApp()->WriteProfileBinary("用户",str,(LPBYTE)&user,btsize);	
	AfxMessageBox("密码修改成功!请牢记。",MB_OK);
	SetDlgItemText(IDC_UD_EOP,"");
	SetDlgItemText(IDC_UD_EONP,"");
	SetDlgItemText(IDC_UD_EONPR,"");
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -