📄 usermanage.cpp
字号:
// UserManage.cpp : implementation file
//
#include "stdafx.h"
#include "eq_manager_sys.h"
#include "UserManage.h"
#include "UserLogin.h"
#include "UserManage.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CUserManage dialog
CUserManage::CUserManage(CWnd* pParent /*=NULL*/)
: CDialog(CUserManage::IDD, pParent)
{
//{{AFX_DATA_INIT(CUserManage)
m_LastLogin = _T("");
m_Password = _T("");
m_PasswordRe = _T("");
m_UserName = _T("");
m_Power = _T("");
m_cPower = _T("");
//}}AFX_DATA_INIT
}
void CUserManage::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CUserManage)
DDX_Control(pDX, IDC_LIST_User, m_UserManage);
DDX_Text(pDX, IDC_EDIT_Lastlogin, m_LastLogin);
DDX_Text(pDX, IDC_EDIT_Password, m_Password);
DDX_Text(pDX, IDC_EDIT_PasswordRe, m_PasswordRe);
DDX_Text(pDX, IDC_EDIT_UserName, m_UserName);
DDX_CBString(pDX, IDC_COMBO_Power, m_Power);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CUserManage, CDialog)
//{{AFX_MSG_MAP(CUserManage)
ON_NOTIFY(NM_CLICK, IDC_LIST_User, OnClickLISTUser)
ON_BN_CLICKED(IDC_BUTTON_Insert, OnBUTTONInsert)
ON_BN_CLICKED(IDC_BUTTON_Delete, OnBUTTONDelete)
ON_BN_CLICKED(IDC_BUTTON_Modify, OnBUTTONModify)
ON_BN_CLICKED(IDC_BUTTON_Clear, OnBUTTONClear)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CUserManage message handlers
void CUserManage::ConnectDB()//function for connect DataBase
{
CString sql;
TRY
{
sql.Format("DSN=ORADB;UID=eq_system;PWD=eq_system");
m_db.OpenEx(sql,CDatabase::noOdbcDialog);
}
CATCH(CDBException,ex)
{
AfxMessageBox("问题出在连接数据库");
AfxMessageBox(ex->m_strError);
AfxMessageBox(ex->m_strStateNativeOrigin);
}
AND_CATCH(CMemoryException,pEx)
{
pEx->ReportError();
AfxMessageBox("memory exception");
}
AND_CATCH(CException,e)
{
TCHAR szError[100];
e->GetErrorMessage(szError,100);
AfxMessageBox(szError);
}
END_CATCH
InitCtrlData();
}
void CUserManage::InitControl()
{
DWORD dwExstyle=LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_HEADERDRAGDROP|
LVS_EX_ONECLICKACTIVATE|LVS_EX_UNDERLINEHOT;
m_UserManage.SetExtendedStyle(dwExstyle);
//初试化设备信息表列表框控件
m_UserManage.InsertColumn(0,"用户名",LVCFMT_CENTER,100);
m_UserManage.InsertColumn(1,"口令",LVCFMT_CENTER,100);
m_UserManage.InsertColumn(2,"用户权限",LVCFMT_CENTER,100);
m_UserManage.InsertColumn(3,"最近访问时间",LVCFMT_CENTER,120);
}
///////
void CUserManage::InitCtrlData()
{
if(!m_db.IsOpen())
{
MessageBox("数据库没打开");
return;
}
m_UserManage.DeleteAllItems();
TRY
{
CRecordset rs(&m_db);
rs.Open(CRecordset::dynaset,"select * from eq_user");
while(!rs.IsEOF())
{
CString name,password,power,lastlogin;
CString PowerName;
rs.GetFieldValue((short)0,name);
rs.GetFieldValue((short)1,password);
rs.GetFieldValue((short)2,power);
rs.GetFieldValue((short)3,lastlogin);
if(power=="1")
PowerName = "系统权限";
else
PowerName = "普通权限";
//向控件加入一条
InsertUserList(name,password,PowerName,lastlogin);
rs.MoveNext();
}
rs.Close();
}
CATCH(CDBException,ex)
{
AfxMessageBox("问题出在初试化表格");
AfxMessageBox(ex->m_strError);
AfxMessageBox(ex->m_strStateNativeOrigin);
}
AND_CATCH(CMemoryException,pEx)
{
pEx->ReportError();
AfxMessageBox("memory exception");
}
AND_CATCH(CException,e)
{
TCHAR szError[100];
e->GetErrorMessage(szError,100);
AfxMessageBox(szError);
}
END_CATCH
}
void CUserManage::InsertUserList(CString name,CString password,CString power,CString lastlogin)
{
int index=m_UserManage.GetItemCount();
LV_ITEM lvItem1;
lvItem1.mask=LVIF_TEXT;
lvItem1.iItem=index;// 行数
lvItem1.iSubItem=0;
lvItem1.pszText=(char*)(LPCTSTR)name;//第一列
//在最后一行插入记录直
m_UserManage.InsertItem(&lvItem1);
//设置该行的其他列的直
m_UserManage.SetItemText(index,1,password);
m_UserManage.SetItemText(index,2,power);
m_UserManage.SetItemText(index,3,lastlogin);
}
BOOL CUserManage::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
InitControl();//
ConnectDB();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CUserManage::OnOK()
{
// TODO: Add extra validation here
m_db.Close();
CDialog::OnOK();
}
void CUserManage::OnClickLISTUser(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
int nItem=m_UserManage.GetNextItem(-1,LVNI_SELECTED);
if(nItem!=-1)
{
//从列表框控件的第nItem+1行获取数据,以将这些数据显示在设备空间中
m_UserName=m_UserManage.GetItemText(nItem,0);
m_Password=m_UserManage.GetItemText(nItem,1);
m_Power=m_UserManage.GetItemText(nItem,2);
m_LastLogin=m_UserManage.GetItemText(nItem,3);
m_cPower = m_Power;
UpdateData(FALSE);
}
*pResult = 0;
}
void CUserManage::OnBUTTONInsert()
{
// TODO: Add your control notification handler code here
int iPower;
CString sql;
// CString cPower;
UpdateData(TRUE);
if(m_UserName!="")
{
if(m_Password!="")
{
if(m_Password==m_PasswordRe)
{
TRY
{
//CRecordset rs(&m_db);
//insert the new user info into eq_user
if(m_Power=="系统权限")
{
iPower = 1;
//cPower = "session,dba";
}
else
{
iPower = 0;
//cPower = "session";
}
sql.Format("Insert into eq_user values('%s','%s',%d,'%s')",m_UserName,m_Password,iPower,m_LastLogin);
TRACE(sql);
m_db.ExecuteSQL(sql);
//create the new user
//if it is a system user;
if(iPower==1)
{
//create the system user in Oracle
sql.Format("create user %s identified by %s",m_UserName,m_Password);
TRACE(sql);
m_db.ExecuteSQL(sql);
//grant the system user
sql.Format("grant create session,dba to %s",m_UserName);
TRACE(sql);
m_db.ExecuteSQL(sql);
}
//insert the new info into the
InitCtrlData();
//rs.Close();
}
CATCH(CDBException,ex)
{
AfxMessageBox("问题出在插入");
AfxMessageBox(ex->m_strError);
AfxMessageBox(ex->m_strStateNativeOrigin);
}
AND_CATCH(CMemoryException,pEx)
{
pEx->ReportError();
AfxMessageBox("memory exception");
}
AND_CATCH(CException,e)
{
TCHAR szError[100];
e->GetErrorMessage(szError,100);
AfxMessageBox(szError);
}
END_CATCH
}
else
MessageBox("两次输入的密码不匹配!");
}
else
MessageBox("密码不能为空!");
}
else
MessageBox("用户名不能为空!");
}
void CUserManage::OnBUTTONDelete()
{
// TODO: Add your control notification handler code here
int nItem=m_UserManage.GetNextItem(-1,LVNI_SELECTED);
if(nItem!=0)
{
if(nItem==-1)
{
AfxMessageBox("没有选择欲删除的用户!");
return;
}
CString strUserName=m_UserManage.GetItemText(nItem,0);
TRY
{
CString sql;
sql.Format("delete eq_user where user_name='%s'",strUserName);
TRACE(sql);
m_db.ExecuteSQL(sql);
///if system user,delete it from Oracle
if(m_UserManage.GetItemText(nItem,2)=="系统权限")
{
sql.Format("drop user %s cascade",strUserName);
TRACE(sql);
m_db.ExecuteSQL(sql);
}
InitCtrlData();
}
CATCH(CDBException,ex)
{
AfxMessageBox("问题出在删除");
AfxMessageBox(ex->m_strError);
AfxMessageBox(ex->m_strStateNativeOrigin);
}
AND_CATCH(CMemoryException,pEx)
{
pEx->ReportError();
AfxMessageBox("memory exception");
}
AND_CATCH(CException,e)
{
TCHAR szError[100];
e->GetErrorMessage(szError,100);
AfxMessageBox(szError);
}
END_CATCH
}
else
MessageBox("超级用户不能删除!");
}
void CUserManage::OnBUTTONModify()
{
// TODO: Add your control notification handler code here
int iPower;
if(!UpdateData())
return;
// TODO: Add your control notification handler code here
int nItem=m_UserManage.GetNextItem(-1,LVNI_SELECTED);
//如果没有选择要修改的记录返回
if(nItem==-1)
{
AfxMessageBox("没有选择欲修改的用户!");
return;
}
if(nItem==0)
{
AfxMessageBox("超级用户不能修改!");
return;
}
CString strUserName=m_UserManage.GetItemText(nItem,0);
UpdateData(TRUE);
//MessageBox(m_Power);
if(m_Power=="系统权限")
{
iPower=1;
}
else if(m_Power=="普通权限")
iPower=0;
if(m_Password!="")
{
if(m_Password==m_PasswordRe)
{
TRY
{
CString sql;
//update
sql.Format("update eq_user set User_Name='%s',"
"user_psd='%s',"
"user_power='%d',"
"last_login='%s'"
"where User_Name='%s'",m_UserName,m_Password,iPower,m_LastLogin,strUserName);
TRACE(sql);
m_db.ExecuteSQL(sql);
//if user is change from ordinary to system
if(iPower==1&&m_cPower=="普通权限")
{
//create the system user in Oracle
sql.Format("create user %s identified by %s",m_UserName,m_Password);
TRACE(sql);
m_db.ExecuteSQL(sql);
//grant the system user
sql.Format("grant create session,dba to %s",m_UserName);
TRACE(sql);
m_db.ExecuteSQL(sql);
}
//if user is changing from system to ordinary
if(iPower==0&&m_cPower=="系统权限")
{
//drop the old user from Oracle
sql.Format("drop user %s cascade",m_UserName);
TRACE(sql);
m_db.ExecuteSQL(sql);
}
InitCtrlData();
UpdateData(FALSE);
}
CATCH(CDBException,ex)
{
AfxMessageBox("问题出在更新");
AfxMessageBox(ex->m_strError);
AfxMessageBox(ex->m_strStateNativeOrigin);
}
AND_CATCH(CMemoryException,pEx)
{
pEx->ReportError();
AfxMessageBox("memory exception");
}
AND_CATCH(CException,e)
{
TCHAR szError[100];
e->GetErrorMessage(szError,100);
AfxMessageBox(szError);
}
END_CATCH
}
else
MessageBox("两次输入的密码不匹配!");
}
else
MessageBox("密码不能为空!");
}
void CUserManage::OnBUTTONClear()
{
// TODO: Add your control notification handler code here
m_UserName = "";
m_Password = "";
m_PasswordRe = "";
m_Power = "";
m_LastLogin = "";
UpdateData(FALSE);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -