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

📄 userset.cpp

📁 自已做的简单的库存管理软件。包含员工信息管理等
💻 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 + -