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

📄 user.cpp

📁 一个实用的GIS系统的系统维护模块
💻 CPP
字号:
// User.cpp : implementation file
//

#include "stdafx.h"
#include "yhgl.h"
#include "User.h"

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

#define Max 999
extern CYhglApp theApp;
int u[Max];int j=0;int a=0;
int idtemp=0;
int pidtemp=0;

CString nametemp=_T("");
CString codetemp=_T("");
CString fnametemp=_T("");
CString destemp=_T("");


/////////////////////////////////////////////////////////////////////////////
// CUser dialog


CUser::CUser(CWnd* pParent /*=NULL*/)
	: CDialog(CUser::IDD, pParent)
{
	//{{AFX_DATA_INIT(CUser)
	m_code = _T("");
	m_id = 0;
	m_name = _T("");
	m_pid = 0;
	m_fname = _T("");
	m_des = _T("");
	//}}AFX_DATA_INIT
	m_nCurrentSel = -1;
    Success = FALSE;
	m_bAutoSave = TRUE;
}


void CUser::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CUser)
	DDX_Control(pDX, IDC_LIST8, m_userlist);
	DDX_Control(pDX, IDC_BUTTON3, m_Add);
	DDX_Control(pDX, IDC_BUTTON2, m_Del);
	DDX_Control(pDX, IDC_BUTTON1, m_Edit);
	DDX_Text(pDX, IDC_EDIT4, m_code);
	DDX_Text(pDX, IDC_EDIT2, m_id);
	DDX_Text(pDX, IDC_EDIT3, m_name);
	DDX_Text(pDX, IDC_EDIT5, m_pid);
	DDX_Text(pDX, IDC_EDIT1, m_fname);
	DDX_Text(pDX, IDC_EDIT6, m_des);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CUser, CDialog)
	//{{AFX_MSG_MAP(CUser)
	ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
	ON_BN_CLICKED(IDC_BUTTON2, OnButton2)
	ON_NOTIFY(LVN_ITEMCHANGED, IDC_LIST8, OnItemchangedList8)
	ON_BN_CLICKED(IDC_BUTTON3, OnButton3)
	ON_BN_CLICKED(IDC_BUTTON4, OnButton4)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CUser message handlers

BOOL CUser::OnInitDialog() 
{
	CDialog::OnInitDialog();
	m_Del.EnableWindow(FALSE);
	::SendMessage(m_userlist.m_hWnd, LVM_SETEXTENDEDLISTVIEWSTYLE,LVS_EX_FULLROWSELECT, LVS_EX_FULLROWSELECT);
	//////////为列表控件添加列//////////
	m_userlist.InsertColumn(0,"用户ID",LVCFMT_LEFT,60);
	m_userlist.InsertColumn(1,"用户全名",LVCFMT_LEFT,100);
	m_userlist.InsertColumn(2,"登陆名",LVCFMT_LEFT,80);
	m_userlist.InsertColumn(3,"密码",LVCFMT_LEFT,60);
	m_userlist.InsertColumn(4,"权限组",LVCFMT_LEFT,60);
	m_userlist.InsertColumn(5,"说明",LVCFMT_LEFT,200);
	//////////读取数据库中的信息添加到列表控件///////////
	int nItem;
	_variant_t vUsername,vPID,vID,vUID,vCode,vFullname,vDes;
	try
	{  
		m_pRecordset1.CreateInstance("ADODB.Recordset");
		m_pRecordset1->Open("SELECT * FROM use",_variant_t((IDispatch*)theApp.m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
		Success = TRUE;
		while(!m_pRecordset1->adoEOF)
		{
		    vID=m_pRecordset1->GetCollect("ID");
			vUID = m_pRecordset1->GetCollect("UserID");
	        vUsername = m_pRecordset1->GetCollect("LogName");///取得username字段的值
	        vCode = m_pRecordset1->GetCollect("LogPassWord");
	        vPID = m_pRecordset1->GetCollect("RoleGroupID");
			vFullname=m_pRecordset1->GetCollect("UserFullName");
			vDes=m_pRecordset1->GetCollect("Description");
			u[j]=vUID.iVal;
			nItem=m_userlist.InsertItem(0xffff,(_bstr_t)vID);
			m_userlist.SetItem(nItem,0,1,(_bstr_t)vUID,NULL,0,0,0);
			m_userlist.SetItem(nItem,2,1,(_bstr_t)vUsername,NULL,0,0,0);
			m_userlist.SetItem(nItem,3,1,(_bstr_t)vCode,NULL,0,0,0);
			m_userlist.SetItem(nItem,4,1,(_bstr_t)vPID,NULL,0,0,0);
           if(vFullname.vt != VT_NULL)
		      m_userlist.SetItem(nItem,1,1,(_bstr_t)vFullname,NULL,0,0,0);
		   else 
		      m_userlist.SetItem(nItem,1,1,_T(""),NULL,0,0,0);
		   if(vDes.vt != VT_NULL)
              m_userlist.SetItem(nItem,5,1,(_bstr_t)vDes,NULL,0,0,0);
		   else
              m_userlist.SetItem(nItem,5,1,_T(""),NULL,0,0,0);
		    m_pRecordset1->MoveNext();
			j++; 
		}
	}
	catch(_com_error e)///捕捉异常
	{
		AfxMessageBox("读取数据库失败!");///显示错误信息
	}
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}



//添加用户
void CUser::OnButton1() 
{
    UpdateData();
	int k=0;
	while(k<j)
	{
	   if(u[k]==m_id)
        {
		   a=1;
		   break;
	   }
	   k++;                           
	}
	if(k==j)
	{
		 a=2;
	}
    if(m_name.GetLength()>0&&a==2)
	{
		m_pRecordset1->AddNew();
		m_nCurrentSel = m_userlist.InsertItem(0xffff,"");
		SaveData();///保存数据
		m_userlist.SetItemState(m_nCurrentSel,LVIS_SELECTED|LVIS_FOCUSED,LVIS_SELECTED|LVIS_FOCUSED);
		m_userlist.SetHotItem(m_nCurrentSel);
		m_userlist.SetFocus();
		AfxMessageBox("添加成功!");
		a=0;
	}
	else
		AfxMessageBox("用户的ID唯一!请再次输入其他的ID");
}


//删除用户
void CUser::OnButton2() 
{
    m_bAutoSave = FALSE;
	if(m_nCurrentSel >= 0)
	{
		m_userlist.DeleteItem(m_nCurrentSel);
		int count = m_userlist.GetItemCount();
		if(count <= m_nCurrentSel)
			m_nCurrentSel = count-1;
		m_pRecordset1->Delete(adAffectCurrent);
		m_pRecordset1->MoveNext();
		LoadData();
		m_userlist.SetItemState(m_nCurrentSel,LVIS_SELECTED|LVIS_FOCUSED,LVIS_SELECTED|LVIS_FOCUSED);
		m_userlist.SetFocus();
	}
	m_bAutoSave = TRUE;	
}

//在选择列表时调用
void CUser::OnItemchangedList8(NMHDR* pNMHDR, LRESULT* pResult) 
{
	NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
    if(pNMListView->uNewState&LVIS_SELECTED)
	{
     	UpdateData();
    	SaveData();///保存旧数据
	    m_nCurrentSel = pNMListView->iItem;
    	LoadData();///加载新数据
    	m_Del.EnableWindow();
	}	
	*pResult = 0;
}

//////将记录集中的数据加载到编辑框/////
void CUser::LoadData()
{
    m_pRecordset1->Move(m_nCurrentSel,_variant_t((long)adBookmarkFirst));
	vUSERID = m_pRecordset1->GetCollect("UserID");
	vUSERNAME = m_pRecordset1->GetCollect("LogName");
	vCODE = m_pRecordset1->GetCollect("LogPassWord");
	vPID = m_pRecordset1->GetCollect("RoleGroupID");
	vFULLNAME=m_pRecordset1->GetCollect("UserFullName");
    vDES=m_pRecordset1->GetCollect("Description");
    m_id = vUSERID.lVal;
	m_name = (LPCTSTR)(_bstr_t)vUSERNAME;
	m_code = (LPCTSTR)(_bstr_t)vCODE;
	m_pid = vPID.lVal;
	if(vFULLNAME.vt != VT_NULL)
	    m_fname = (LPCTSTR)(_bstr_t)vFULLNAME;
	else 
		m_fname=_T("");    
     if(vDES.vt != VT_NULL)
        m_des=(LPCTSTR)(_bstr_t)vDES;
	 else
	    m_des=_T("");
    idtemp=m_id;
	pidtemp=m_pid;
	nametemp=m_name;
	codetemp=m_code;
	destemp=m_des;
	fnametemp=m_fname;
	UpdateData(FALSE);
}


/////将编辑框的数据保存到记录集与列表框
void CUser::SaveData()
{
    if(!m_pRecordset1->adoEOF && m_nCurrentSel >= 0 && m_bAutoSave)
	{
		vUSERID = (long)m_id;
		vUSERNAME = m_name;
		vCODE = m_code;
		vPID= (long)m_pid;
		if(strcmp(m_fname,_T(""))==0)
			vFULLNAME.vt=VT_NULL;
		else
            vFULLNAME=m_fname;
		if(strcmp(m_des,_T(""))==0)
			vDES.vt=VT_NULL;
		else
            vDES=m_des;
        u[j]=m_id;
		j++;
		m_pRecordset1->PutCollect("UserID",vUSERID);
		m_pRecordset1->PutCollect("LogName",vUSERNAME);
		m_pRecordset1->PutCollect("LogPassWord",vCODE);
		m_pRecordset1->PutCollect("RoleGroupID",vPID);
		m_pRecordset1->PutCollect("UserFullName",vFULLNAME);
        m_pRecordset1->PutCollect("Description",vDES);
		m_userlist.SetItem(m_nCurrentSel,0,LVIF_TEXT,(_bstr_t)vUSERID,NULL,0,0,0);
		m_userlist.SetItem(m_nCurrentSel,2,LVIF_TEXT,(_bstr_t)vUSERNAME,NULL,0,0,0);
		m_userlist.SetItem(m_nCurrentSel,3,LVIF_TEXT,(_bstr_t)vCODE,NULL,0,0,0);
		m_userlist.SetItem(m_nCurrentSel,4,LVIF_TEXT,(_bstr_t)vPID,NULL,0,0,0);
		if(vFULLNAME.vt != VT_NULL)
		      m_userlist.SetItem(m_nCurrentSel,1,LVIF_TEXT,(_bstr_t)vFULLNAME,NULL,0,0,0);
		else 
		      m_userlist.SetItem(m_nCurrentSel,1,LVIF_TEXT,_T(""),NULL,0,0,0);
	    if(vDES.vt != VT_NULL)
              m_userlist.SetItem(m_nCurrentSel,5,LVIF_TEXT,(_bstr_t)vDES,NULL,0,0,0);
		else
              m_userlist.SetItem(m_nCurrentSel,5,LVIF_TEXT,_T(""),NULL,0,0,0);
	}
}



void CUser::OnOK() 
{
	if(Success)
	{
		m_pRecordset1->Close();
	}
	CDialog::OnOK();
}



void CUser::OnButton3() 
{
    UpdateData();        // 更新对话框数据
	if(m_userlist.GetItemCount() == 0 || m_name == "" || m_code == ""||m_id==0||m_pid==0)
	{
		AfxMessageBox("有无效信息,请选取需要修改的用户!");
		return;
	}
	else
	{
	      SaveData();
		  m_pRecordset1->Update();
		  if(m_id==idtemp&&m_pid==pidtemp&&strcmp(m_name,nametemp)==0&&strcmp(m_code,codetemp)==0&&strcmp(m_fname,fnametemp)==0&&strcmp(m_des,destemp)==0)
		  {
			  AfxMessageBox("您没有进行任何修改操作!");
		  }
		  else
		      AfxMessageBox("修改成功!");
	}
}

void CUser::OnButton4() 
{
    m_id = 0;
	m_name = _T("");
	m_fname=_T("");
	m_code = _T("");
	m_pid = 0;
	m_des=_T("");
	m_nCurrentSel = -1;
    Success = FALSE;
	m_bAutoSave = TRUE;
	UpdateData(FALSE);
}

⌨️ 快捷键说明

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