📄 userdlg.cpp
字号:
/**
* <p> Title: 用户设置功能的窗口类实现 </p>
* <p> Description:提供对用户的增删改查等功能 </p>
* <p> Copyright: Copyright (c) 2005-12-17 </p>
* <p> Company: bjut </p>
* @author gaok
* @version 1.0
* @Created on 2005-12-17
*/
#include "stdafx.h"
#include "STMis.h"
#include "LoginRSet.h"
#include "UserDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CUserDlg dialog
/*
* 构造函数
*/
CUserDlg::CUserDlg(CWnd* pParent /*=NULL*/)
: CDialog(CUserDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CUserDlg)
m_bIsAdmin = FALSE; // 是否是管理员
m_strUser = _T(""); // 用户名
m_strPass = _T(""); // 密码
m_strRePass = _T(""); // 确认密码
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
}
void CUserDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CUserDlg)
DDX_Control(pDX, IDOK, m_bntOK);
DDX_Control(pDX, IDC_BUTTON_NEW, m_bntNew);
DDX_Control(pDX, IDC_BUTTON_DELETE1, m_bntDelete);
DDX_Control(pDX, IDC_BUTTON_CANCEL, m_bntCancel);
DDX_Control(pDX, IDC_EDIT2, m_ctrPass);
DDX_Control(pDX, IDC_EDIT1, m_ctrUser);
DDX_Control(pDX, IDC_LIST_USERNAME, m_ctrList);
DDX_Control(pDX, IDC_CHECK1, m_ctrIsAdmin);
DDX_Check(pDX, IDC_CHECK1, m_bIsAdmin);
DDX_Text(pDX, IDC_EDIT1, m_strUser);
DDX_Text(pDX, IDC_EDIT2, m_strPass);
DDX_Text(pDX, IDC_EDIT3, m_strRePass);
// NOTE: the ClassWizard will add DDX and DDV calls here
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CUserDlg, CDialog)
//{{AFX_MSG_MAP(CUserDlg)
ON_NOTIFY(NM_CLICK, IDC_LIST_USERNAME, OnClickListUsername)
ON_BN_CLICKED(IDC_BUTTON_NEW, OnButtonNew)
ON_BN_CLICKED(IDC_BUTTON_DELETE1, OnButtonDelete)
ON_BN_CLICKED(IDC_BUTTON_CANCEL, OnButtonCancel)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CUserDlg message handlers
/*
* 初始化用户列表
*/
BOOL CUserDlg::OnInitDialog()
{
CDialog::OnInitDialog();
if (!m_IsAdmin) { // 如果是普通用户,屏蔽增加,修改,删除按钮,只允许查询,察看
m_bntNew.EnableWindow(FALSE);
m_bntDelete.EnableWindow(FALSE);
}
m_ctrList.InsertColumn(0,"用户名");
m_ctrList.SetExtendedStyle(LVS_EX_FULLROWSELECT);
m_ctrList.SetColumnWidth(0,135);
RefreshData();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
/*
* 执行某操作(修改,删除,增加)后刷新用户列表的记录
*/
void CUserDlg::RefreshData()
{
m_ctrList.DeleteAllItems();
m_ctrList.SetRedraw(FALSE);
CLoginRSet m_recordset(&m_database); // 用户数据库表
CString strSQL;
strSQL="select * from ST_USER_PSWD where ST_SCBZ=false"; // 查询所有未删除的用户名
if(!m_recordset.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL))
{
MessageBox("打开数据库失败!","数据库错误",MB_OK);
return ;
}
int i=0;
while(!m_recordset.IsEOF())
{
m_ctrList.InsertItem(i,m_recordset.m_ST_USER); // 将用户名加到用户列表中
m_recordset.MoveNext();
i++;
}
m_recordset.Close();
m_ctrList.SetRedraw(TRUE);
//UpdateData(FALSE);
}
/*
* 点击用户列表的某一条记录时,在用户资料中显示用户名和密码及是否是管理员
*/
void CUserDlg::OnClickListUsername(NMHDR* pNMHDR, LRESULT* pResult)
{
CString strSQL;
UpdateData(TRUE);
CLoginRSet m_recordset(&m_database); // 用户数据库表
int i = m_ctrList.GetSelectionMark();
m_strUser = m_ctrList.GetItemText(i,0);
strSQL.Format("select * from ST_USER_PSWD where ST_SCBZ=false and ST_USER='%s'",m_strUser);
if(!m_recordset.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL))
{
MessageBox("打开数据库失败!","数据库错误",MB_OK);
return ;
}
m_strPass = m_recordset.m_ST_PSWD;
m_strRePass = m_strPass;
m_bIsAdmin = m_recordset.m_ST_ISADMIN;
m_recordset.Close();
UpdateData(FALSE);
*pResult = 0;
}
/*
* 点击新增按钮
*/
void CUserDlg::OnButtonNew()
{
m_strUser = ""; // 用户名
m_strPass = ""; // 密码
m_strRePass = ""; // 确认密码
m_bIsAdmin = FALSE; // 是否是管理员,默认为否
m_ctrIsAdmin.EnableWindow(TRUE);
m_ctrUser.EnableWindow(TRUE); // 用户名输入框变成可编辑
m_ctrUser.SetFocus(); // 焦点在用户名输入框内
UpdateData(FALSE);
}
/*
* 点击删除按钮,只是将表中的是否删除字段置为1
*/
void CUserDlg::OnButtonDelete()
{
UpdateData(TRUE);
if(m_strUser=="")
{
MessageBox("请选择一个用户!");
return;
}
UserVariable* vSt = new UserVariable(); // 生成一个变量对象,存储各个表用到的变量
vSt->user = m_strUser; // 用户名
UserAction* uaUserAction = new UserAction(vSt);
uaUserAction->del();
/* 刷新用户列表 */
RefreshData();
m_strUser = "";
m_strPass = "";
m_strRePass = "";
m_bIsAdmin = FALSE;
UpdateData(FALSE);
}
/*
* 点击保存按钮
*/
void CUserDlg::OnOK()
{
UpdateData(TRUE);
UserVariable* vSt = new UserVariable(); // 生成一个变量对象,存储各个表用到的变量
vSt->user = m_strUser; // 用户名
vSt->pawd=m_strPass; // 密码
vSt->isAdmin=(m_bIsAdmin == 1? true:false); // 是否是管理员,权限级别的区别
UserAction* uaUserAction = new UserAction(vSt);
if(m_ctrUser.IsWindowEnabled())
{ // 增加新用户
if(m_strUser=="")
{
MessageBox("请填写用户名!");
m_ctrUser.SetFocus();
return;
}
}
else
{ // 修改用户信息
if(m_strUser=="")
{
MessageBox("请选择一个用户!");
return;
}
}
if(m_strPass=="")
{
MessageBox("密码不能为空,请输入密码!");
m_ctrPass.SetFocus();
return;
}
if(m_strPass!=m_strRePass)
{
MessageBox("两次输入地密码不一致,请重新输入密码!");
m_ctrPass.SetFocus();
m_strPass = "";
m_strRePass = "";
UpdateData(FALSE);
return;
}
if(m_ctrUser.IsWindowEnabled())
{ // 增加新用户
// 判断用户是否已经存在
if (!uaUserAction->isEmpty()) { // 数据库中是否存在所增加的用户,如果存在
MessageBox("该用户已经存在!");
return;
}
uaUserAction->add(); // 增加新用户
}
else
{ // 修改用户信息
if(uaUserAction->isEmpty())
{ // 判断用户是否不存在
MessageBox("该用户不存在!请更新数据库");
return;
}
uaUserAction->modify();
}
RefreshData();
m_ctrUser.EnableWindow(FALSE);
}
/*
* 点击取消按钮
*/
void CUserDlg::OnButtonCancel()
{
m_strUser = "";
m_strPass = "";
m_strRePass = "";
m_bIsAdmin = FALSE;
m_ctrUser.EnableWindow(FALSE);
UpdateData(FALSE);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -