📄 userset.cpp
字号:
// Userset.cpp : implementation file
//
#include "stdafx.h"
#include "st6.h"
#include "Userset.h"
#include "md5.h"
extern _ConnectionPtr pMyConnect;
// CUserset dialog
IMPLEMENT_DYNAMIC(CUserset, CDialog)
CUserset::CUserset(CWnd* pParent /*=NULL*/)
: CDialog(CUserset::IDD, pParent)
, str_user(_T(""))
, str_oldpassword(_T(""))
, str_newpassword(_T(""))
{
}
CUserset::~CUserset()
{
}
void CUserset::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Text(pDX, IDC_EDIT_USER, str_user);
DDX_Text(pDX, IDC_EDIT_OLDPASSWORD, str_oldpassword);
DDX_Text(pDX, IDC_EDIT_NEWPASSWORD, str_newpassword);
DDX_Control(pDX, IDC_TREE1, m_tree_user);
}
BEGIN_MESSAGE_MAP(CUserset, CDialog)
ON_BN_CLICKED(IDOK, &CUserset::OnBnClickedOk)
ON_BN_CLICKED(IDC_BUTTON_DEL, &CUserset::OnBnClickedButtonDel)
ON_BN_CLICKED(IDC_BUTTON_UPDATE, &CUserset::OnBnClickedButtonUpdate)
ON_NOTIFY(NM_DBLCLK, IDC_TREE1, &CUserset::OnNMDblclkTree1)
END_MESSAGE_MAP()
// CUserset message handlers
void CUserset::OnBnClickedOk()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
if( str_user == _T("") )
{
AfxMessageBox(_T("请输入用户名!"));
return;
}
else
{
if ( str_user.GetLength() > 20 )
{
AfxMessageBox(_T("用户名超出限制!"));
return;
}
//转换为小写字母
str_user.MakeLower();
_RecordsetPtr m_pRs;
CString m_strSql;
bool bHad = FALSE;
m_strSql.Format(_T("select SN from USER_TABLE where ( U_NAME='") + str_user + _T("')") );
m_pRs.CreateInstance( __uuidof(Recordset) );
m_pRs->Open( _bstr_t(m_strSql), _variant_t((IDispatch *)pMyConnect,true), adOpenKeyset, adLockOptimistic, adCmdText);
try
{
if ( m_pRs->GetRecordCount() > 0 )
{
m_pRs->MoveFirst();
while(m_pRs->adoEOF==VARIANT_FALSE)
{
//Retrieve column's value:
_variant_t TheValue;
TheValue = m_pRs->Fields->GetItem(_variant_t("SN"))->Value;
if( TheValue.vt != VT_NULL )
{
_bstr_t s1=(_bstr_t)TheValue;
CString sn = s1;
bHad = TRUE;
}
//Do something what you want to do: ......
m_pRs->MoveNext();
}
}
}
catch (_com_error &e)
{
::MessageBox(NULL,e.Description(),(LPCTSTR)(_T("警告")),MB_OK);
}
m_pRs->Close();
if ( bHad )
{
AfxMessageBox(_T("用户名已存在,请选择其它用户名!"));
return;
}
if( str_oldpassword == _T("") )
{
AfxMessageBox(_T("请输入密码!"));
return;
}
if ( str_oldpassword.GetLength() > 20 )
{
AfxMessageBox(_T("密码超出限制!"));
return;
}
CWnd* pWnd;
CString str_class;
CString str_temp;
//class
pWnd = GetDlgItem(IDC_COMBO_CLASS);
pWnd->GetWindowText(str_temp);
str_class =str_temp.Left(1);
//md5
TCHAR * pszTest = str_oldpassword.GetBuffer(str_oldpassword.GetLength());
str_oldpassword.ReleaseBuffer();
int iLen = 2 * wcslen(pszTest);//CString,TCHAR汉字算一个字符,因此不用普通计算长度
char* chRtn = new char[iLen+1];
wcstombs(chRtn,pszTest,iLen+1);//转换成功返回为非负值
char *ch_tmp = MD5String(chRtn);
CString str_password_tmp;
str_password_tmp = ch_tmp;
_RecordsetPtr m_pRecordset;
_variant_t RecordsAffected;
//m_strSql.Format(_T("INSERT INTO USER_TABLE(U_NAME,U_PASSWORD,CLASS) VALUES ('") + str_user + _T("','") + str_oldpassword + _T("',") +str_class+ _T(")"));
m_strSql.Format(_T("INSERT INTO USER_TABLE(U_NAME,U_PASSWORD,CLASS) VALUES ('") + str_user + _T("','") + str_password_tmp + _T("',") +str_class+ _T(")"));
bool bSuccess = pMyConnect->Execute(_bstr_t(m_strSql),&RecordsAffected,adCmdText);
if( !bSuccess )
{
AfxMessageBox(_T("增加用户失败!"));
return;
}
AfxMessageBox(_T("增加用户成功!"));
str_user = _T("");
str_oldpassword = _T("");
str_newpassword = _T("");
InitClass();
UpdateData( FALSE );
ListTree();
}
}
void CUserset::OnBnClickedButtonDel()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
if( str_user == _T("") )
{
AfxMessageBox(_T("请输入用户名!"));
return;
}
else
{
str_user.MakeLower();
if( str_user == _T("admin") )
{
AfxMessageBox(_T("不能删除此用户名!"));
return;
}
_RecordsetPtr m_pRs;
CString m_strSql;
bool bHad = FALSE;
m_strSql.Format(_T("select SN from USER_TABLE where ( U_NAME='") + str_user + _T("')") );
m_pRs.CreateInstance( __uuidof(Recordset) );
m_pRs->Open( _bstr_t(m_strSql), _variant_t((IDispatch *)pMyConnect,true), adOpenKeyset, adLockOptimistic, adCmdText);
try
{
if ( m_pRs->GetRecordCount() > 0 )
{
m_pRs->MoveFirst();
while(m_pRs->adoEOF==VARIANT_FALSE)
{
//Retrieve column's value:
_variant_t TheValue;
TheValue = m_pRs->Fields->GetItem(_variant_t("SN"))->Value;
if( TheValue.vt != VT_NULL )
{
_bstr_t s1=(_bstr_t)TheValue;
CString sn = s1;
bHad = TRUE;
}
//Do something what you want to do: ......
m_pRs->MoveNext();
}
}
}
catch (_com_error &e)
{
::MessageBox(NULL,e.Description(),(LPCTSTR)(_T("警告")),MB_OK);
}
m_pRs->Close();
if ( !bHad )
{
AfxMessageBox(_T("用户名不存在,请检查用户名!"));
return;
}
/*if( str_oldpassword == _T("") )
{
AfxMessageBox(_T("请输入密码!"));
return;
}*/
_RecordsetPtr m_pRecordset;
_variant_t RecordsAffected;
m_strSql.Format(_T("DELETE FROM USER_TABLE WHERE(U_NAME='") + str_user + _T("')"));
bool bSuccess = pMyConnect->Execute(_bstr_t(m_strSql),&RecordsAffected,adCmdText);
if( !bSuccess )
{
AfxMessageBox(_T("删除用户失败!"));
return;
}
AfxMessageBox(_T("删除用户成功!"));
str_user = _T("");
str_oldpassword = _T("");
str_newpassword = _T("");
UpdateData( FALSE );
ListTree();
}
}
void CUserset::OnBnClickedButtonUpdate()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
if( str_user == _T("") )
{
AfxMessageBox(_T("请输入用户名!"));
return;
}
else
{
str_user.MakeLower();
_RecordsetPtr m_pRs;
CString m_strSql;
bool bHad = FALSE;
m_strSql.Format(_T("select SN from USER_TABLE where ( U_NAME='") + str_user + _T("')") );
m_pRs.CreateInstance( __uuidof(Recordset) );
m_pRs->Open( _bstr_t(m_strSql), _variant_t((IDispatch *)pMyConnect,true), adOpenKeyset, adLockOptimistic, adCmdText);
try
{
if ( m_pRs->GetRecordCount() > 0 )
{
m_pRs->MoveFirst();
while(m_pRs->adoEOF==VARIANT_FALSE)
{
//Retrieve column's value:
_variant_t TheValue;
TheValue = m_pRs->Fields->GetItem(_variant_t("SN"))->Value;
if( TheValue.vt != VT_NULL )
{
_bstr_t s1=(_bstr_t)TheValue;
CString sn = s1;
bHad = TRUE;
}
//Do something what you want to do: ......
m_pRs->MoveNext();
}
}
}
catch (_com_error &e)
{
::MessageBox(NULL,e.Description(),(LPCTSTR)(_T("警告")),MB_OK);
}
m_pRs->Close();
if ( !bHad )
{
AfxMessageBox(_T("用户名不存在,请选择其它用户名!"));
return;
}
if( str_oldpassword == _T("") )
{
AfxMessageBox(_T("请输入密码!"));
return;
}
//md5
char * lpsz = (char*)(LPCTSTR)str_oldpassword;
char *ch_tmp = MD5String(lpsz);
CString str_password_tmp;
str_password_tmp = ch_tmp;
bool bOK = FALSE;
m_strSql.Format(_T("select SN from USER_TABLE where ( U_NAME='") + str_user + _T("' and U_PASSWORD='") + str_password_tmp + _T("')") );
//m_strSql.Format(_T("select SN from USER_TABLE where ( U_NAME='") + str_user + _T("' and U_PASSWORD='") + str_oldpassword + _T("')") );
m_pRs->Open( _bstr_t(m_strSql), _variant_t((IDispatch *)pMyConnect,true), adOpenKeyset, adLockOptimistic, adCmdText);
try
{
if ( m_pRs->GetRecordCount() > 0 )
{
m_pRs->MoveFirst();
while(m_pRs->adoEOF==VARIANT_FALSE)
{
//Retrieve column's value:
_variant_t TheValue;
TheValue = m_pRs->Fields->GetItem(_variant_t("SN"))->Value;
if( TheValue.vt != VT_NULL )
{
_bstr_t s1=(_bstr_t)TheValue;
CString sn = s1;
bOK = TRUE;
}
//Do something what you want to do: ......
m_pRs->MoveNext();
}
}
}
catch (_com_error &e)
{
::MessageBox(NULL,e.Description(),(LPCTSTR)(_T("警告")),MB_OK);
}
m_pRs->Close();
if ( !bOK )
{
AfxMessageBox(_T("密码不正确,请重新输入!"));
return;
}
if( str_newpassword == _T("") )
{
AfxMessageBox(_T("请输入更新密码!"));
return;
}
if ( str_newpassword.GetLength() > 20 )
{
AfxMessageBox(_T("请输入更新密码!"));
return;
}
//md5
lpsz = (char*)(LPCTSTR)str_newpassword;
ch_tmp = MD5String(lpsz);
str_password_tmp = ch_tmp;
_RecordsetPtr m_pRecordset;
_variant_t RecordsAffected;
//m_strSql.Format(_T("UPDATE USER_TABLE SET U_PASSWORD='") + str_newpassword + _T("' WHERE U_NAME='") + str_user + _T("'"));
m_strSql.Format(_T("UPDATE USER_TABLE SET U_PASSWORD='") + str_password_tmp + _T("' WHERE U_NAME='") + str_user + _T("'"));
bool bSuccess = pMyConnect->Execute(_bstr_t(m_strSql),&RecordsAffected,adCmdText);
if( !bSuccess )
{
AfxMessageBox(_T("更新密码失败!"));
return;
}
AfxMessageBox(_T("更新密码成功!"));
str_user = _T("");
str_oldpassword = _T("");
str_newpassword = _T("");
UpdateData( FALSE );
}
}
BOOL CUserset::OnInitDialog()
{
CDialog::OnInitDialog();
InitClass();
DWORD dwStyle = GetWindowLong(m_tree_user.m_hWnd,GWL_STYLE);
dwStyle |= TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT;
SetWindowLong(m_tree_user.m_hWnd,GWL_STYLE,dwStyle);
ListTree();
return FALSE;// 将焦点设置到控件,否则返回 TRUE
}
void CUserset::InitClass()
{
CComboBox* pWnd;
CString str_temp;
pWnd = (CComboBox*)GetDlgItem(IDC_COMBO_CLASS);
pWnd->ResetContent();
for( int i=0; i < 4; i++ )
{
str_temp.Format(_T("%d"),i+1);
str_temp = str_temp + _T("级权限");
pWnd->InsertString(i,str_temp);
}
}
void CUserset::ListTree()
{
m_tree_user.DeleteAllItems();
//创建节点
//父节点
hRoot = m_tree_user.InsertItem(_T("用户列表"),0,1,TVI_ROOT,TVI_LAST);
_RecordsetPtr m_pRs;
CString m_strSql;
m_strSql.Format(_T("select U_NAME,CLASS from USER_TABLE where ( SN > 0)") );
m_pRs.CreateInstance( __uuidof(Recordset) );
m_pRs->Open( _bstr_t(m_strSql), _variant_t((IDispatch *)pMyConnect,true), adOpenKeyset, adLockOptimistic, adCmdText);
try
{
if ( m_pRs->GetRecordCount() > 0 )
{
_variant_t TheValue;
m_pRs->MoveFirst();
while(m_pRs->adoEOF==VARIANT_FALSE)
{
//Retrieve column's value:
CString str111;
CString str222;
TheValue = m_pRs->Fields->GetItem(_variant_t("U_NAME"))->Value;
if( TheValue.vt != VT_NULL )
{
_bstr_t s1=(_bstr_t)TheValue;
CString str_temp1 = s1;
str111 = str_temp1;
}
TheValue = m_pRs->Fields->GetItem(_variant_t("CLASS"))->Value;
if( TheValue.vt != VT_NULL )
{
_bstr_t s2=(_bstr_t)TheValue;
CString str_temp2 = s2;
str222 = str_temp2;
}
CString str_temp = str111 + _T("(") +str222 + _T("级权限)");
HTREEITEM sub_son = m_tree_user.InsertItem( str_temp,0,1,hRoot,TVI_LAST);
//Do something what you want to do: ......
m_pRs->MoveNext();
}
}
}
catch (_com_error &e)
{
::MessageBox(NULL,e.Description(),(LPCTSTR)(_T("警告")),MB_OK);
}
m_pRs->Close();
}
void CUserset::OnNMDblclkTree1(NMHDR *pNMHDR, LRESULT *pResult)
{
// TODO: 在此添加控件通知处理程序代码
HTREEITEM hItem = m_tree_user.GetSelectedItem();
if ( hItem != hRoot )
{
CString str_temp = m_tree_user.GetItemText( hItem );
str_user = str_temp.Left( str_temp.GetLength() - 6 );
str_oldpassword = _T("");
str_newpassword = _T("");
InitClass();
UpdateData( FALSE );
}
*pResult = 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -