📄 userdlg.cpp
字号:
// UserDlg.cpp : implementation file
//
#include "stdafx.h"
#include "售货系统.h"
#include "UserDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
extern CDatabase m_database;
extern CString username;
extern CString userpower;
/////////////////////////////////////////////////////////////////////////////
// CUserDlg dialog
CUserDlg::CUserDlg(CWnd* pParent /*=NULL*/)
: CDialog(CUserDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CUserDlg)
//}}AFX_DATA_INIT
}
void CUserDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CUserDlg)
DDX_Control(pDX, IDC_DELUSER, m_deluser);
DDX_Control(pDX, IDC_CHANGE_PASSWORD, m_changepassword);
DDX_Control(pDX, IDC_ADDUSER, m_adduser);
DDX_Control(pDX, IDC_USER_LIST, m_userlist);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CUserDlg, CDialog)
//{{AFX_MSG_MAP(CUserDlg)
ON_BN_CLICKED(IDC_USER_CANCEL, OnUserCancel)
ON_BN_CLICKED(IDC_ADDUSER, OnAdduser)
ON_BN_CLICKED(IDC_SERACHUSER, OnSerachuser)
ON_BN_CLICKED(IDC_DELUSER, OnDeluser)
ON_BN_CLICKED(IDC_CHANGE_PASSWORD, OnChangePassword)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CUserDlg message handlers
void CUserDlg::OnUserCancel()
{
if(MessageBox("确定退出系统1?","提醒",MB_YESNO|MB_DEFBUTTON2|MB_ICONQUESTION)!=IDNO){
exit(0);
}
}
void CUserDlg::OnAdduser()
{
CAdduserDlg adduserdlg;
adduserdlg.DoModal();
CString sql;
sql.Format("select * from 用户密码表");
OnRefreshData(sql);
}
BOOL CUserDlg::OnInitDialog()
{
CDialog::OnInitDialog();
m_userlist.InsertColumn(0,"用户名");//初始list control控件
m_userlist.InsertColumn(1,"权限");
CRect r;
m_userlist.GetWindowRect(&r);
int wid=r.Width()/2;
m_userlist.SetColumnWidth(0,wid);//设置list control控件中每栏的长度
m_userlist.SetColumnWidth(1,wid);
//设置list control控件的表格样式
m_userlist.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
CString sql;
sql.Format("select * from 用户密码表");
OnRefreshData(sql);//更新list control数据的函数,其内容为用户密码表内容
CPowerSet m_powerset;
m_powerset.m_pDatabase=&m_database;//指明数据库
sql.Format("select * from 用户权限表 where 权限名 ='%s'",userpower);
m_powerset.Open(AFX_DB_USE_DEFAULT_TYPE,sql);//进行查询,打开一个权限表数据集
if(!m_powerset.IsEOF()){//如果查询结果不为空
if(m_powerset.m_column2!=1){
m_adduser.EnableWindow(FALSE);//添加用户按钮不可用
m_deluser.EnableWindow(FALSE);//删除用户按钮不可用
}
if(m_powerset.m_column3!=1){
m_changepassword.EnableWindow(FALSE);//修改用户密码不可用
}
}
return TRUE;
}
void CUserDlg::OnRefreshData(CString sql){
m_userlist.DeleteAllItems();
CUserSet m_userset;
m_userset.m_pDatabase=&m_database;
m_userset.Open(AFX_DB_USE_DEFAULT_TYPE,sql);
m_userset.MoveFirst();
int i=0;
while(!m_userset.IsEOF()){
while(m_userset.IsDeleted()){
m_userset.MoveNext();
}
m_userlist.InsertItem(i,m_userset.m_column1);
m_userlist.SetItemText(i,1,m_userset.m_column3);
m_userset.MoveNext();
}
}
void CUserDlg::OnSerachuser()
{
CString sql;
CSerchuserDlg searchdlg;
int i=searchdlg.DoModal();
if(searchdlg.m_select){
sql=searchdlg.sql;
OnRefreshData(sql);
}
}
void CUserDlg::OnDeluser()
{
CString sql;
CString execsql;
CString item;
sql.Format("select * from 用户密码表");
int preindex=-1;
int index=-1;
CUserSet m_userset;
m_userset.m_pDatabase=&m_database;
m_userset.Open(AFX_DB_USE_DEFAULT_TYPE,sql);
if(m_userset.IsEOF()){
MessageBox("没有可删除用户");
return;
}
if (m_userlist.GetNextItem(index,LVNI_SELECTED) == -1){
MessageBox("请先选中一条记录");
return;
}
//删除所有被选中的用户
while ((index = m_userlist.GetNextItem(preindex,LVNI_SELECTED)) != -1) {
item=m_userlist.GetItemText(index,0);//从选中的记录中获取用户名
item.TrimLeft();
item.TrimRight();
if(strcmp(item,username)==0){
MessageBox("不能删除自身");
return;
}
try{
//生成删除用户的SQL语句
execsql.Format("delete from 用户密码表 where 用户名='%s'",item);
m_database.ExecuteSQL(execsql);
}
catch(CDBException e1){
AfxMessageBox("数据库操作失败");
}
catch(CMemoryException e2){
AfxMessageBox("数据库操作失败");
}
preindex=index;
}
OnRefreshData(sql);//更新list control的显示数据
}
void CUserDlg::OnChangePassword()
{
CChangePasswordDlg passworddlg;
passworddlg.DoModal();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -