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

📄 edituser.cpp

📁 通过VC++6.0连接数据库,实现的是一个公司设备管理系统,采购设备,借出和归还设备的详细记录,提高库存管理.
💻 CPP
字号:
// EditUser.cpp : implementation file
//

#include "stdafx.h"
#include "DeviceDBS.h"
#include "EditUser.h"
#include "User.h"

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

/////////////////////////////////////////////////////////////////////////////
// CEditUser dialog

extern User user;

CEditUser::CEditUser(CWnd* pParent /*=NULL*/)
	: CDialog(CEditUser::IDD, pParent)
{
	//{{AFX_DATA_INIT(CEditUser)
	m_strBirth = _T("");
	m_strGender = _T("");
	m_strName = _T("");
	m_strPwd = _T("");
	m_bPower = 0;
	m_strUserSelected = _T("");
	m_strLoginID = _T("");
	//}}AFX_DATA_INIT

}


void CEditUser::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CEditUser)
	DDX_Control(pDX, IDC_COMBO_USERLIST, m_bUserList);
	DDX_Text(pDX, IDC_User_Birth, m_strBirth);
	DDX_Text(pDX, IDC_User_Gender, m_strGender);
	DDX_Text(pDX, IDC_User_Name, m_strName);
	DDX_Text(pDX, IDC_User_Pwd, m_strPwd);
	DDX_Text(pDX, IDC_User_Power, m_bPower);
	DDV_MinMaxInt(pDX, m_bPower, 1, 3);
	DDX_CBString(pDX, IDC_COMBO_USERLIST, m_strUserSelected);
	DDX_Text(pDX, IDC_User_ID, m_strLoginID);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CEditUser, CDialog)
	//{{AFX_MSG_MAP(CEditUser)
	ON_BN_CLICKED(IDC_ADD_USER, OnAddUser)
	ON_BN_CLICKED(IDC_DELETE_USER, OnDeleteUser)
	ON_BN_CLICKED(IDC_SAVE_MODIFY, OnSaveModify)
	ON_BN_CLICKED(IDC_CANCEL, OnCancel)
	ON_CBN_CLOSEUP(IDC_COMBO_USERLIST, OnCloseupComboUserlist)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CEditUser message handlers


void CEditUser::OnAddUser() 
{
	// TODO: Add your control notification handler code here
	m_pDB->BeginTrans();
	CRecordset rs(m_pDB);
	CString newID = _T("newID");
	newID.Format(newID+"%d",acc++);
	CString sql;
	sql.Format("insert into user_info(loginID) values('%s')",newID);
	TRACE(sql);
	m_pDB->ExecuteSQL(sql);
	m_pDB->CommitTrans();
	RefreshComboNameData();
	AfxMessageBox("添加用户成功");
}

void CEditUser::OnDeleteUser() 
{
	// TODO: Add your control notification handler code here
	CString deleteID ;
	int sIndex = m_bUserList.GetCurSel();
	if(sIndex<0)
		return;
	//获取当前选择的用户名称
	m_bUserList.GetLBText(sIndex,deleteID);
	//如果选项为空,退出
	if(m_strUserSelected.IsEmpty())
			return;

	m_pDB->BeginTrans();
	CRecordset rs(m_pDB);
	CString newID = _T("newID");
	newID.Format(newID+"%d",acc++);
	CString sql;
	sql.Format("delete from user_info where loginID='%s'",deleteID);
	TRACE(sql);
	m_pDB->ExecuteSQL(sql);
	m_pDB->CommitTrans();
	RefreshComboNameData();
	AfxMessageBox("删除用户成功");
}

void CEditUser::OnSaveModify() 
{
	// TODO: Add your control notification handler code here
	UpdateData(true);
	m_pDB->BeginTrans();
	CString sql;
	sql.Format("execute update_user_info '%s','%s','%s','%s','%s',"
		"'%d'", m_strLoginID,m_strPwd,m_strName,m_strBirth,m_strGender,m_bPower);
	TRACE(sql);
	//AfxMessageBox(sql);
	m_pDB->ExecuteSQL(sql);
	AfxMessageBox("更改成功!");
	m_pDB->CommitTrans();

	if(!m_strLoginID.Compare(user.getId()))	{
	//更新用户信息
	CRecordset rs(m_pDB);
	sql.Format("Select * from user_info "
			"where loginID = '%s' ",m_strLoginID);
	rs.Open(CRecordset::snapshot, sql);
	if(!rs.IsEOF()) {
		//更新User
		CString id;
		rs.GetFieldValue((short)0, id);
		user.setId(id);

		CString pwd;
		rs.GetFieldValue(1,pwd);
		user.setPwd(pwd);

		CString name;
		rs.GetFieldValue(2,name);
		user.setName(name);

		CString birth;
		rs.GetFieldValue(3,birth);
			user.setBirth(birth);

		CString gender;
		rs.GetFieldValue(4,gender);
		user.setGender(gender);

		CDBVariant var;
		rs.GetFieldValue(5, var, SQL_C_SSHORT);
		if (var.m_dwType != DBVT_NULL)	
			user.setPower(var.m_iVal);
		var.Clear();
	}
	}

}

void CEditUser::OnCancel() 
{
	CDialog::OnCancel();
	
}

void CEditUser::RefreshComboNameData(){
	m_bUserList.ResetContent();

	TRY{
		CRecordset rs(m_pDB);
		//打开所有的用户记录.
		rs.Open(CRecordset::dynaset, "select loginID from user_info");
		while (!rs.IsEOF()) {
			CString id;
			//获取用户ID字段值
			rs.GetFieldValue((short)0, id);
			//向用户组合框添加所有设备名称.
			m_bUserList.AddString(id);
			rs.MoveNext();	
		}
	}
	CATCH(CDBException,ex)
	{
		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 
	m_bUserList.SetCurSel(0);
	RefreshProfileInfo();
}

BOOL CEditUser::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here

	RefreshComboNameData();

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

void CEditUser::RefreshProfileInfo(){

}

void CEditUser::OnCloseupComboUserlist() 
{
	int sIndex = m_bUserList.GetCurSel();
	if(sIndex<0)
		return;
	//获取当前选择的用户名称
	m_bUserList.GetLBText(sIndex,m_strUserSelected);
	//如果选项为空,退出
	if(m_strUserSelected.IsEmpty())
			return;
	TRY{
		CRecordset rs(m_pDB);
		//打开所有的用户信息记录.
		CString sql;
		sql.Format("select * from user_info "
			"where loginID = '%s'",m_strUserSelected);
		rs.Open(CRecordset::dynaset,sql);
		if (!rs.IsEOF()) {

			CString id;
			rs.GetFieldValue((short)0, id);
			m_strLoginID = id;

			CString pwd;
			rs.GetFieldValue(1,pwd);
			m_strPwd = pwd;

			CString name;
			rs.GetFieldValue(2,name);
			m_strName = name;

			CString birth;
			rs.GetFieldValue(3,birth);
			m_strBirth = birth;

			CString gender;
			rs.GetFieldValue(4,gender);
			m_strGender = gender;

			CDBVariant var;
			rs.GetFieldValue(5, var, SQL_C_SSHORT);
			if (var.m_dwType != DBVT_NULL)	
				m_bPower = var.m_iVal;
			var.Clear();
	
		}
		UpdateData(false);
	}
	CATCH(CDBException,ex)
	{
		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 

}

⌨️ 快捷键说明

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