📄 usermanager.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 + -