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

📄 userdlg.cpp

📁 可以完成学生信息的管理
💻 CPP
字号:
// UserDlg.cpp : implementation file
//

#include "stdafx.h"
#include "StuManage.h"
#include "UserDlg.h"

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

/////////////////////////////////////////////////////////////////////////////
// CUserDlg dialog
extern CStuManageApp theApp;

CUserDlg::CUserDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CUserDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CUserDlg)
	m_strUserType = _T("");
	m_strUserName = _T("");
	m_strUserPwd = _T("");
	//}}AFX_DATA_INIT
}


void CUserDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CUserDlg)
	DDX_CBString(pDX, IDC_COMBO_USER, m_strUserType);
	DDX_Control(pDX, IDC_DATAGRID_USER, m_dgUser);
	DDX_Text(pDX, IDC_EDIT_USER_NAME, m_strUserName);
	DDX_Text(pDX, IDC_EDIT_USER_PWD, m_strUserPwd);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CUserDlg, CDialog)
	//{{AFX_MSG_MAP(CUserDlg)
	ON_BN_CLICKED(IDC_ADD_USER_BTN, OnAddUserBtn)
	ON_BN_CLICKED(IDC_MODIFY_USER_BTN, OnModifyUserBtn)
	ON_BN_CLICKED(IDC_DEL_USER_BTN, OnDelUserBtn)
	ON_BN_CLICKED(IDC_EXECUTE_USER_BTN, OnExecuteUserBtn)
	ON_BN_CLICKED(IDC_LOOKFOR_USER_BTN, OnLookforUserBtn)
	ON_EN_CHANGE(IDC_EDIT_USER_NAME, OnChangeEditUserName)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

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

void CUserDlg::OnAddUserBtn() 
{
	// TODO: Add your control notification handler code here
	if(theApp.m_Level != 2)
	{
		AfxMessageBox("您无权添加用户");
		return;
	}
	m_strUserType = "";
	m_strUserName = "";
	m_strUserPwd = "";
	
	AfxMessageBox("请输入新的用户信息");
	action = 1;	
	UpdateData(FALSE);	
}

void CUserDlg::OnModifyUserBtn() 
{
	// TODO: Add your control notification handler code here
	if(theApp.m_Level != 2)
	{
		AfxMessageBox("您无权修改用户权限");
		return;
	}
	if(AfxMessageBox("确定修改此用户信息吗?",MB_YESNO)==IDYES)	
		action = 2;		
}

void CUserDlg::OnDelUserBtn() 
{
	// TODO: Add your control notification handler code here
	if(theApp.m_Level != 2)
	{
		AfxMessageBox("您无权删除用户");
		return;
	}
	if(AfxMessageBox("确定删除此用户吗?",MB_YESNO)==IDYES)	
		action = 3;	
}

void CUserDlg::OnExecuteUserBtn() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	
	CString sql,str,name;
	int level;
	sql = "select * from SysUser ";
	m_pRecordset.CreateInstance("ADODB.Recordset");
	m_pRecordset->Open((_variant_t)sql,_variant_t((IDispatch *)theApp.m_pConnection,true),adOpenDynamic,adLockPessimistic,adCmdText);       
	
	switch(action)
	{
	case 1:		
		m_pRecordset->AddNew();
		//用户名
		m_pRecordset->PutCollect("NAME",(_variant_t)m_strUserName);
		//密码
		m_pRecordset->PutCollect("PASSWORD",(_variant_t)m_strUserPwd);
		//类型
		if(m_strUserType.CompareNoCase("学生")==0)
			level = 0;
		else if(m_strUserType.CompareNoCase("教师")==0)
			level = 1;
		else if(m_strUserType.CompareNoCase("管理员")==0)
			level = 2;
		else
			return;
		str.Format("%d",level);
		m_pRecordset->PutCollect("LEVEL",(_variant_t)str);

		m_pRecordset->Update();	
		break;

	case 2:	
		if(m_pRecordset->GetRecordCount()!=0)
		{
			m_pRecordset->MoveFirst();
			while(!m_pRecordset->adoEOF)
			{
				name=m_pRecordset->GetCollect("NAME").bstrVal;
				if(name.CompareNoCase(m_strUserName) == 0)
				{
					//密码
					m_pRecordset->PutCollect("PASSWORD",(_variant_t)m_strUserPwd);
					//类型
					if(m_strUserType.CompareNoCase("学生")==0)
						level = 0;
					else if(m_strUserType.CompareNoCase("教师")==0)
						level = 1;
					else if(m_strUserType.CompareNoCase("管理员")==0)
						level = 2;
					else
						return;
					str.Format("%d",level);
					m_pRecordset->PutCollect("LEVEL",(_variant_t)str);		
				}
				m_pRecordset->MoveNext();			
			}
		}		
		break;
	case 3:
		if(m_pRecordset->GetRecordCount()!=0)
		{
			m_pRecordset->MoveFirst();
			while(!m_pRecordset->adoEOF)
			{
				name=m_pRecordset->GetCollect("NAME").bstrVal;
				if(name.CompareNoCase(m_strUserName) == 0)			
					m_pRecordset->Delete(adAffectCurrent);					
				m_pRecordset->MoveNext();			
			}
		}		
		break;		
		
	default:
		break;
	}

	m_pRecordset->Close();
	UpdateData(FALSE);
	action = 0;	
}

void CUserDlg::OnLookforUserBtn() 
{
	// TODO: Add your control notification handler code here
	MessageBox("请输入您要查找的用户名","查找提示");	
}

BOOL CUserDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	CString str;
	int level;
	m_pRecordset.CreateInstance("ADODB.Recordset");
	m_pRecordset->Open("select * from SysUser",_variant_t((IDispatch *)theApp.m_pConnection,true),adOpenDynamic,adLockPessimistic,adCmdText);       	

	if(m_pRecordset->GetRecordCount()!=0)
	{
		m_pRecordset->MoveFirst();
		m_strUserName = m_pRecordset->GetCollect("NAME").bstrVal;
		m_strUserPwd = m_pRecordset->GetCollect("PASSWORD").bstrVal;
		level = m_pRecordset->GetCollect("LEVEL").lVal;
		switch(level)
		{
		case 0:
			m_strUserType = "学生";
			break;
		case 1:
			m_strUserType = "教师";
			break;
		case 2:
			m_strUserType = "管理员";
			break;
		default:
			break;
		}
	}

	m_dgUser.SetRefDataSource(NULL);
	m_dgUser.SetRefDataSource((LPUNKNOWN)m_pRecordset);
	m_dgUser.SetColumnHeaders(2) ;
	
	m_dgUser.Refresh();
	
	UpdateData(FALSE);	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CUserDlg::OnChangeEditUserName() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);

	CString sql;
	int level;
	sql = "select * from SysUser where NAME = '"+m_strUserName+"'";
	m_pRecordset.CreateInstance("ADODB.Recordset");
	m_pRecordset->Open((_variant_t)sql,_variant_t((IDispatch *)theApp.m_pConnection,true),adOpenDynamic,adLockPessimistic,adCmdText);      

	if(m_pRecordset->GetRecordCount()!=0)
	{
		m_strUserPwd = m_pRecordset->GetCollect("PASSWORD").bstrVal;
		level = m_pRecordset->GetCollect("LEVEL").lVal;
		switch(level)
		{
		case 0:
			m_strUserType = "学生";
			break;
		case 1:
			m_strUserType = "教师";
			break;
		case 2:
			m_strUserType = "管理员";
			break;
		default:
			break;
		}
	}
	
	UpdateData(FALSE);
	m_pRecordset->Close();
}

⌨️ 快捷键说明

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