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

📄 dlgusertx.cpp

📁 用户管理系统
💻 CPP
字号:
// DlgUserTx.cpp : implementation file
//

#include "stdafx.h"
#include "Kvip.h"
#include "DlgUserTx.h"

#include "MainFrm.H"

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

/////////////////////////////////////////////////////////////////////////////
// CDlgUserTx dialog


CDlgUserTx::CDlgUserTx(CWnd* pParent /*=NULL*/)
	: CDialog(CDlgUserTx::IDD, pParent)
{
	//{{AFX_DATA_INIT(CDlgUserTx)
	m_strCode = _T("");
	m_strUser = _T("");
	m_strNote = _T("");
	m_strPassword = _T("");
	m_strPassword2 = _T("");
	//}}AFX_DATA_INIT
	m_pParent = NULL;
	m_nItem = -1;
	m_bEnabled = TRUE;
	m_bManager = FALSE;
	m_bAppend = FALSE;
}


void CDlgUserTx::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CDlgUserTx)
	DDX_Control(pDX, IDC_MASTER, m_Master);
	DDX_Control(pDX, IDC_MANAGER, m_btManager);
	DDX_Control(pDX, IDC_ENABLED, m_btEnabled);
	DDX_Text(pDX, IDC_CODE, m_strCode);
	DDX_Text(pDX, IDC_NAME, m_strUser);
	DDX_Text(pDX, IDC_NOTE, m_strNote);
	DDX_Text(pDX, IDC_PASSWORD, m_strPassword);
	DDX_Text(pDX, IDC_PASSWORD1, m_strPassword2);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CDlgUserTx, CDialog)
	//{{AFX_MSG_MAP(CDlgUserTx)
	ON_BN_CLICKED(IDC_OK, OnOK)
	ON_BN_CLICKED(IDC_CANCEL, OnCancel)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDlgUserTx message handlers

BOOL CDlgUserTx::OnInitDialog() 
{
	CDialog::OnInitDialog();
    ASSERT( m_pParent != NULL );
	
	// TODO: Add extra initialization here
	CString strSQL;
	CWnd *pWnd;
	m_RecordSetHead.SetAdoConnection(&m_pParent->m_Connection);
	m_RecordSetBody.SetAdoConnection(&m_pParent->m_Connection);
	
	if (m_bAppend == FALSE)
	{//编辑模式
	    m_strCode = m_pParent->m_Master.GetItemText(m_nItem,1);
        strSQL = "Select * From kv_user Where us_code = '" +
			      m_strCode + "'";
		if (!m_RecordSetHead.Open(strSQL))
		{
           MessageBox("错误:UST-00001 打开数据库失败!", 
		         "系统提示", MB_OK|MB_ICONEXCLAMATION);
	       PostMessage(WM_CLOSE);
		   return FALSE;
		}
		m_RecordSetHead.GetCollect("us_code", m_strCode);
		m_RecordSetHead.GetCollect("us_name", m_strUser);
		m_RecordSetHead.GetCollect("us_password", m_strPassword);
		m_RecordSetHead.GetCollect("us_enabled", m_bEnabled);
		m_RecordSetHead.GetCollect("us_manager", m_bManager);
		m_RecordSetHead.GetCollect("us_note", m_strNote);
		m_strPassword2 = m_strPassword;

        strSQL = "Select * From kv_user_tx Where ut_code = '" +
			      m_strCode + "'";
		if (!m_RecordSetBody.Open(strSQL))
		{
           MessageBox("错误:UST-00001 打开数据库失败!", 
		         "系统提示", MB_OK|MB_ICONEXCLAMATION);
	       PostMessage(WM_CLOSE);
		   return FALSE;
		}
	}
	if (m_bAppend == FALSE) 
	{
		pWnd = GetDlgItem(IDC_CODE);
		pWnd->EnableWindow(FALSE);
	}
	m_Master.SetHeadings(_T("有效,1, 40;功能编号,1,80; 说明,0, 300"));
	m_Master.SetGridLines(TRUE);
	m_Master.SetCheckboxes(TRUE);

	if (m_bEnabled)  m_btEnabled.SetCheck(1);
	if (m_bManager)  m_btManager.SetCheck(1);
    LoadData();
	UpdateData(FALSE);
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CDlgUserTx::OnOK() 
{
	// TODO: Add your control notification handler code here
    UpdateData();
	CString strEnabled, strManager, strSQL;
	CString strKey;
//有效性比较
	m_strPassword.TrimLeft();
	m_strPassword.TrimRight();
	m_strPassword.MakeUpper();
	m_strPassword2.TrimLeft();
	m_strPassword2.TrimRight();
	m_strPassword2.MakeUpper();
	m_strCode.TrimLeft();
	m_strCode.TrimRight();
	m_strCode.MakeUpper();
    if (m_strPassword != m_strPassword2)
	{
      MessageBox("错误:密码与密码确认不一致!!!", 
		         "系统提示", MB_OK|MB_ICONEXCLAMATION);
	  return ;
      
	}
    if (m_strPassword.IsEmpty())
	{
      MessageBox("错误:密码不能为空值!!!", 
		         "系统提示", MB_OK|MB_ICONEXCLAMATION);
	  return ;
      
	}
	if (m_strCode.IsEmpty())  //编号不能为空值
	 {
      MessageBox("错误:用户编号不能为空值 !!!", 
		         "系统提示", MB_OK|MB_ICONEXCLAMATION);
	  return ;
	 }
    strSQL = "Select * From kv_user Where us_code = '" +
			      m_strCode + "'";
	if ( m_bAppend &&
		 (!m_RecordSetHead.Open(strSQL) ||        //打开失败
		 m_RecordSetHead.GetRecordCount() > 0))  //编号已存在
	 {
      MessageBox("错误:用户编号不重复 !!!", 
		         "系统提示", MB_OK|MB_ICONEXCLAMATION);
	  return ;
	 }
//保存
	if (SaveData() < 0)
	{
      MessageBox("错误:UST-00002 保存数据库失败!", 
		         "系统提示", MB_OK|MB_ICONEXCLAMATION);
	  return ;
	}
//更新显示
    if (m_bAppend)// 新增
	{
	  m_nItem = m_pParent->m_Master.InsertItem(m_nItem,_T(""));
	  strKey.Format("%5d", m_pParent->m_Master.GetItemCount());
      m_pParent->m_Master.SetItemText(m_nItem, 0, strKey);
	}
    m_pParent->m_Master.SetItemText(m_nItem, 1, m_strCode);
    m_pParent->m_Master.SetItemText(m_nItem, 2, m_strUser);
	if (m_btEnabled.GetCheck() == 1)
		strEnabled = "是";
	else
		strEnabled = "否";
	if (m_btManager.GetCheck() == 1)
		strManager = "是";
	else
		strManager = "否";

    m_pParent->m_Master.SetItemText(m_nItem, 1, m_strCode);
    m_pParent->m_Master.SetItemText(m_nItem, 2, m_strUser);
    m_pParent->m_Master.SetItemText(m_nItem, 3, strEnabled);
    m_pParent->m_Master.SetItemText(m_nItem, 4, strManager);
    m_pParent->m_Master.SetItemText(m_nItem, 5, m_strNote);
	CDialog::OnOK();
}

void CDlgUserTx::OnCancel() 
{
	// TODO: Add your control notification handler code here
	CDialog::OnCancel();
}
void CDlgUserTx::LoadMenu(CMenu *pMenu)
{
 CMenu *pSubMenu;
 UINT nID;
 CString strID, str;
 for(UINT i = 0; i < pMenu->GetMenuItemCount(); i++)
 {
	 pSubMenu = pMenu->GetSubMenu(i);
	 if (pSubMenu) LoadMenu(pSubMenu);
	 nID = pMenu->GetMenuItemID(i);
	 pMenu->GetMenuString(i, str, MF_BYPOSITION);
//	 if (nID >= IDD_MENU_BEGIN && nID <= IDD_MENU_END)  //0表示结束
//	 if (str.Find('(') > 0 && nID < IDD_MENU_END)
	 if (nID > 0 && nID < MAX_MENU_ID)
	 {
	  strID.Format("%6d", nID);
      m_Master.InsertItemEx(0," ", strID, str);
	 }
 }
}
BOOL CDlgUserTx::LoadData()
{
  CString strCode;
  BOOL bFound;
  long lFunction, lID, lCode;
//装入所有功能选项
  CMainFrame *pMain = (CMainFrame*)AfxGetMainWnd();
  ASSERT( pMain != NULL);
  CMenu *pMenu = pMain->GetMenuEx();
  ASSERT( pMenu != NULL);
  LoadMenu(pMenu);
  if (m_bAppend) return true;


//取用户功能
  m_RecordSetBody.MoveFirst();
  while(!m_RecordSetBody.IsEOF())
  {
	bFound = FALSE;

   	m_RecordSetBody.GetCollect("ut_function", lFunction);
	m_RecordSetBody.GetCollect("ut_id", lID);
//对比所有功能
    for (int i =0; i < m_Master.GetItemCount(); i++)
	{
      strCode = m_Master.GetItemText(i, 1);
	  lCode = atol((LPCSTR)strCode);
	  if (lCode == lFunction) 
	  {
		  bFound = TRUE;
		  break;
	  }
	}//end for
	if (bFound == FALSE)
	{//没发现 
		  m_Master.SetCheck(i, false);
		  m_Master.SetItemData(i, 0);
	}
	else
	{//发现
		  m_Master.SetCheck(i, true);
		  m_Master.SetItemData(i, lID);
	}
   m_RecordSetBody.MoveNext();
  }// end for
  return TRUE;
}


BOOL CDlgUserTx::DestroyWindow() 
{
	// TODO: Add your specialized code here and/or call the base class
	m_RecordSetHead.Close();
	m_RecordSetBody.Close();
	return CDialog::DestroyWindow();
}


int CDlgUserTx::SaveData()
{
	BOOL bChecked;
    long lID;
	CString strSQL;
	CString strManager, strEnabled, strDate, strFunction;
	CTime tNow = CTime::GetCurrentTime();
//设置数据格式
	m_pParent->m_Connection.BeginTrans();
    if(m_btEnabled.GetCheck() == 1)
		strEnabled = "true";
	else
		strEnabled = "false";
    if(m_btManager.GetCheck() == 1)
		strManager = "true";
	else
		strManager = "false";
	strDate = tNow.Format("%Y/%m/%d");
//	strDate = "2005/12/03";
//写用户表
    if (m_bAppend)
	{// 新增用户
	  if (m_strNote.IsEmpty())
	  strSQL.Format("INSERT INTO kv_user(us_code, us_name, us_manager, us_password,us_date, us_enabled, us_note) VALUES ('%s', '%s', %s, '%s', '%s', %s, ' ')",    
			         m_strCode, m_strUser, strManager, m_strPassword, 
					 strDate, strEnabled);
	  else
	  strSQL.Format("INSERT INTO kv_user(us_code, us_name, us_manager, us_password,us_date, us_enabled, us_note) VALUES ('%s', '%s', %s, '%s', '%s', %s, '%s')",    
			         m_strCode, m_strUser, strManager, m_strPassword, 
					 strDate, strEnabled, m_strNote);
	 if(m_pParent->m_Connection.Execute((_bstr_t)strSQL,adCmdText)==FALSE) 	//执行此sql语句
		{
 	       m_pParent->m_Connection.RollbackTrans();
		   return -1;
		}
	}
	else
	{// 更新用户
	  if (m_strNote.IsEmpty())
	  strSQL.Format("UPDATE kv_user SET us_name='%s',us_manager=%s,us_password='%s',us_date='%s',us_enabled=%s,us_note = ' ' WHERE us_code = '%s'",    
			         m_strUser, strManager, m_strPassword, 
					 strDate, strEnabled,m_strCode);
	  else
	  strSQL.Format("UPDATE kv_user SET us_name='%s',us_manager=%s,us_password='%s',us_date='%s',us_enabled=%s,us_note='%s' WHERE us_code = '%s'",    
			         m_strUser, strManager, m_strPassword, 
					 strDate, strEnabled, m_strNote, m_strCode);
	  if(m_pParent->m_Connection.Execute((_bstr_t)strSQL,adCmdText)==FALSE) 	//执行此sql语句
		{
 	       m_pParent->m_Connection.RollbackTrans();
		   return -1;
		}
	}

//写用户功能表
    for (int i =0; i < m_Master.GetItemCount(); i++)
	{
      bChecked = m_Master.GetCheck(i);
	  lID = (long)m_Master.GetItemData(i);
	  strFunction = m_Master.GetItemText(i, 1);
	  if (bChecked == TRUE && lID == 0)
	  {//APPEND
		strSQL.Format("INSERT INTO kv_user_tx(ut_code, ut_function) VALUES ('%s', %s)",
			m_strCode, strFunction);
		if(m_pParent->m_Connection.Execute((_bstr_t)strSQL,adCmdText)==FALSE) 	//执行此sql语句
		{
 	       m_pParent->m_Connection.RollbackTrans();
		   return -1;
		}
	  }
	  else if (bChecked == FALSE && lID != 0)
      {//DELETE
		strSQL.Format("DELETE FROM kv_user_tx WHERE ut_id = %d", lID);
		if(m_pParent->m_Connection.Execute((_bstr_t)strSQL,adCmdText)==FALSE) 	//执行此sql语句
		{
 	       m_pParent->m_Connection.RollbackTrans();
		   return -1;
		}
      }
	}//end for
  m_pParent->m_Connection.CommitTrans();
  return 1;

}

⌨️ 快捷键说明

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