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

📄 usermanager.cpp

📁 使用短信猫可以实现短信的群发
💻 CPP
字号:
// UserManager.cpp : implementation file
//

#include "stdafx.h"
#include "SMS.h"
#include "UserManager.h"

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

/////////////////////////////////////////////////////////////////////////////
// CUserManager dialog


CUserManager::CUserManager(CWnd* pParent /*=NULL*/)
	: CDialog(CUserManager::IDD, pParent)
{
	//{{AFX_DATA_INIT(CUserManager)
	//}}AFX_DATA_INIT
}


void CUserManager::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CUserManager)
	DDX_Control(pDX, IDC_USER_TAB, m_UserTab);
	DDX_Control(pDX, IDC_USER_LIST, m_UserList);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CUserManager, CDialog)
	//{{AFX_MSG_MAP(CUserManager)
	ON_NOTIFY(TCN_SELCHANGE, IDC_USER_TAB, OnSelchangeUserTab)
	ON_NOTIFY(LVN_ITEMCHANGED, IDC_USER_LIST, OnItemchangedUserList)
	ON_NOTIFY(NM_CLICK, IDC_USER_LIST, OnClickUserList)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CUserManager message handlers

BOOL CUserManager::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	

	// TODO: Add extra initialization here
	//////////////////////////////////////////////////////////////////////////
	//对用户管理对话框中的List控件添加列
	//////////////////////////////////////////////////////////////////////////
	
	m_UserList.InsertColumn(0,"用户名",LVCFMT_LEFT,180);
	m_UserList.InsertColumn(1,"用户权限",LVCFMT_LEFT,90);
	m_UserList.InsertColumn(2,"创建时间",LVCFMT_LEFT,90);
	m_UserList.SetExtendedStyle(LVS_REPORT  //为表格添加附加属性 让表格有方格线
		| LVS_EX_FULLROWSELECT  //为表格添加整行选择
		);

	//////////////////////////////////////////////////////////////////////////
	//对用户管理对话框中的Tab控件添加控件项标题
	//////////////////////////////////////////////////////////////////////////
	if( 0 == ((CSMSApp*)AfxGetApp())->IsAdministrators )
	{
		m_UserTab.InsertItem(0,"添加新用户");
		m_UserTab.InsertItem(1,"修改/删除用户");
		m_UserTab.InsertItem(2,"修改密码");
	}
	else
	{
		m_UserTab.InsertItem(0,"修改密码");
	}



	//////////////////////////////////////////////////////////////////////////
	//将对话框类对象跟具体的对话框关连起来
	//////////////////////////////////////////////////////////////////////////
	m_AddUser.Create(IDD_ADD_USER,&m_UserTab);
	m_ModifyDeleteUser.Create(IDD_MODIFY_DELETE_USER,&m_UserTab);
	m_ModifyUserPassword.Create(IDD_MODIFY_USER_PASSWORD,&m_UserTab);


	DoTab(0);//通过调用这个函数将Tab控件里的第一个该选项关连的对话框显示出来

	//从数据库中读取出用户并显示出来
	ShowUsers();

	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CUserManager::DoTab(int nTab)
{
	if (nTab>2) nTab = 2;		// 确定nTab值不能超过范围
	if (nTab<0) nTab = 0;
	BOOL bTab[3];
	bTab[0] = bTab[1] = bTab[2] = FALSE;
	bTab[nTab] = TRUE;			
	// 切换对话框的显示和隐藏
	TRACE("权限------------%d",((CSMSApp*)AfxGetApp())->IsAdministrators);

	if( 0 == ((CSMSApp*)AfxGetApp())->IsAdministrators )
	{
		SetDlgState(&m_AddUser, bTab[0]);
		SetDlgState(&m_ModifyDeleteUser, bTab[1]);
		SetDlgState(&m_ModifyUserPassword, bTab[2]);

	}
	else
	{
		SetDlgState(&m_ModifyUserPassword, bTab[0]);
	}
}
void CUserManager::SetDlgState(CWnd *pWnd, BOOL bShow)
{
	pWnd->EnableWindow(bShow);	
	if (bShow) 
	{	
		pWnd->ShowWindow(SW_SHOW);
		pWnd->CenterWindow();	// 居中显示
	}
	else	
		pWnd->ShowWindow(SW_HIDE);
}

void CUserManager::OnSelchangeUserTab(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	int nSelect = m_UserTab.GetCurSel();
	if (nSelect >= 0)
		DoTab(nSelect);
	*pResult = 0;
}


void CUserManager::ShowUsers()
{
	if(m_UserList.GetItemCount()>0)
	{
		m_UserList.DeleteAllItems();
	}
	CSMSApp * pCSMSApp=(CSMSApp *)AfxGetApp();//取得App类对象的指针
	CSMSADO &Ado=pCSMSApp->m_SMSAdo;

	//这里判断数据连接是否连接成功
	if(!Ado.IsConnection())
	{
		MessageBox("连接数据库出错\n请重新设置Oracle相关信息");
		return;
	}

	CString sql;
	long isRecordSet=0;
	
	sql.Format("SELECT * FROM Users order by ID ASC");
	
	//判断是否查询到记录  查找到就返回真 没查找到就返回假
	//isRecordSet=Ado.ExecuteWithRecordset(sql);
	SQLRECORDSET rs=Ado.ExecuteWithRecordset(sql);
	//int authority=Ado.GetIntegerFieldVal(rs,"authority");
	
	if(rs->BOF)
	{
		MessageBox("用户以存在\n请重新输入");
		return;
	}

	int i=0;
	int item;
	TRACE("取出了---------%d条记录",rs->RecordCount);
	CString userName;
	int authority;
	CString createTime;
	CString authorityStr;

	while(!rs->rsEOF)
	{

		userName=Ado.GetTextFieldVal(rs,"username");
		authority=Ado.GetIntegerFieldVal(rs,"authority");
		createTime=Ado.GetDateTimeFeildTextValue(rs,"createtime");

		if(0==authority)
		{
			authorityStr="管理员";
		}
		else
		{
			authorityStr="普通员工";
		}

		item=m_UserList.InsertItem(i,userName);

		m_UserList.SetItemText(i,1,authorityStr);
		m_UserList.SetItemText(i,2,createTime);
		rs->MoveNext();//不要忘了加这一句,将游标向下移动
		i++;
	}
}



void CUserManager::OnItemchangedUserList(NMHDR* pNMHDR, LRESULT* pResult) 
{
	NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
	// TODO: Add your control notification handler code here
	//TRACE("%d",m_UserList.GetHotItem());
// 
// 	//取得被被选中行的位置
// 	POSITION pos=m_UserList.GetFirstSelectedItemPosition();
// 	//取得指定位置的Item号
// 	int nItem = m_UserList.GetNextSelectedItem(pos);
// 	TRACE1("Item %d was selected!\n", nItem);
// 	// you could do your own processing on nItem here
// 
// 	//取得当前所选项中第0列中的用户名
// 	CString userName=m_UserList.GetItemText(nItem,0);
// 	//取得当前所选项中第1列中的权限
// 	CString authority=m_UserList.GetItemText(nItem,1);
// 	m_ModifyDeleteUser.m_UserName=userName; //修改/删除对话框 中的用户名
// 
// 	if("普通员工"==authority)
// 		m_ModifyDeleteUser.m_Authority.SetCurSel(1);
// 	else if("管理员"==authority)
// 		m_ModifyDeleteUser.m_Authority.SetCurSel(0);
// 
// 	m_ModifyUserPassword.m_UserName=userName;	
// 
// 	m_ModifyDeleteUser.UpdateData(FALSE);
// 	m_ModifyUserPassword.UpdateData(FALSE);
	*pResult = 0;
}

void CUserManager::OnClickUserList(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	// TODO: Add your control notification handler code here
	//TRACE("%d",m_UserList.GetHotItem());
	
	//取得被被选中行的位置
	POSITION pos=m_UserList.GetFirstSelectedItemPosition();
	//取得指定位置的Item号
	int nItem = m_UserList.GetNextSelectedItem(pos);
	TRACE1("Item %d was selected!\n", nItem);
	// you could do your own processing on nItem here
	if(-1==nItem)
	{
		return;
	}
	//取得当前所选项中第0列中的用户名
	CString userName=m_UserList.GetItemText(nItem,0);
	//取得当前所选项中第1列中的权限
	CString authority=m_UserList.GetItemText(nItem,1);
	m_ModifyDeleteUser.m_UserName=userName; //修改/删除对话框 中的用户名
	
	if("普通员工"==authority)
		m_ModifyDeleteUser.m_Authority.SetCurSel(1);
	else if("管理员"==authority)
		m_ModifyDeleteUser.m_Authority.SetCurSel(0);
	
	m_ModifyUserPassword.m_UserName=userName;	
	
	m_ModifyDeleteUser.UpdateData(FALSE);
	m_ModifyUserPassword.UpdateData(FALSE);
	*pResult = 0;
}

BOOL CUserManager::PreTranslateMessage(MSG* pMsg) 
{
	// TODO: Add your specialized code here and/or call the base class
	if (pMsg->message == WM_KEYDOWN)
	{	
		if (pMsg->wParam == VK_RETURN)	return TRUE;
		if (pMsg->wParam == VK_ESCAPE)	return TRUE;
	} 
	return CDialog::PreTranslateMessage(pMsg);
}

⌨️ 快捷键说明

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