www.gusucode.com > VC++双选系统毕业设计管理系统(ACCESS)-源码程序 > VC++双选系统毕业设计管理系统(ACCESS)-源码程序/code/UserDlg.cpp
//Download by http://www.NewXing.com // UserDlg.cpp : implementation file // #include "stdafx.h" #include "gradudemis.h" #include "UserDlg.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CUserDlg dialog char Label; //保存用户选择的操作 CUserDlg::CUserDlg(CWnd* pParent /*=NULL*/) : CDialog(CUserDlg::IDD, pParent) { //{{AFX_DATA_INIT(CUserDlg) m_strPass = _T(""); m_strRePass = _T(""); m_user = _T(""); m_IsAdmin = FALSE; //}}AFX_DATA_INIT } void CUserDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CUserDlg) DDX_Control(pDX, IDC_USER1, m_ctrlUser); DDX_Control(pDX, IDC_Passwd, m_ctrlPass); DDX_Control(pDX, IDC_User_LIST, m_ctrlUserList); DDX_Text(pDX, IDC_Passwd, m_strPass); DDX_Text(pDX, IDC_RePass, m_strRePass); DDX_Text(pDX, IDC_USER1, m_user); DDX_Check(pDX, IDC_IsAdmin_CHECK, m_IsAdmin); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CUserDlg, CDialog) //{{AFX_MSG_MAP(CUserDlg) ON_BN_CLICKED(IDC_Exit_BTN, OnExitBTN) ON_BN_CLICKED(IDC_EDIT, OnEdit) ON_BN_CLICKED(IDC_DEL, OnDel) ON_BN_CLICKED(IDC_ADD, OnAdd) ON_BN_CLICKED(IDC_Cancel_BTN, OnCancelBTN) ON_BN_CLICKED(IDC_IsAdmin_CHECK, OnIsAdminCHECK) ON_BN_CLICKED(IDC_Save_BTN, OnSaveBTN) ON_LBN_SELCHANGE(IDC_User_LIST, OnSelchangeUserLIST) ON_WM_DESTROY() //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CUserDlg message handlers BOOL CUserDlg::OnInitDialog() { CDialog::OnInitDialog(); // TODO: Add extra initialization here // m_ctrlUser.EnableWindow(false); if(!passwdSet.IsOpen()) //打开记录集 passwdSet.Open(); passwdSet.MoveFirst(); //移动到第一条记录 while(!passwdSet.IsEOF()) //遍历记录集 { int nIndex=m_ctrlUserList.AddString(passwdSet.m_lgn_user); //将用户名添加到列表中 UserInfo structSet; //定义用户信息结构变量 structSet.user=passwdSet.m_lgn_user; //变量的初始化 structSet.passwd=passwdSet.m_lgn_passwd; structSet.repasswd=passwdSet.m_lgn_passwd; structSet.bIsAdmin=passwdSet.m_lgn_isAdmin; m_ctrlUserList.SetItemDataPtr(nIndex,new UserInfo(structSet));//设置一个指针添加用户信息 passwdSet.MoveNext(); //移动到下条记录 } return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void CUserDlg::OnExitBTN() { // TODO: Add your control notification handler code here OnCancel(); //退出 } void CUserDlg::OnSelchangeUserLIST() { // TODO: Add your control notification handler code here int nIndex=m_ctrlUserList.GetCurSel(); //获取选择的索引号 if(nIndex!=LB_ERR) //如果没有抛出异常 { UserInfo *structSet=(UserInfo *)m_ctrlUserList.GetItemDataPtr(nIndex);//取出用户信息 m_user=structSet->user; //用户信息变量的赋值 m_strPass=structSet->passwd; m_strRePass=structSet->repasswd; m_IsAdmin=structSet->bIsAdmin; UpdateData(false); //更新数据 } } void CUserDlg::OnAdd() { // TODO: Add your control notification handler code here m_user=""; //清空编辑框 m_strPass=""; m_strRePass=""; m_IsAdmin=false; //设置不为管理员 // m_ctrlUser.EnableWindow(true); m_ctrlUser.SetFocus(); //设置焦点 UpdateData(false); //更新数据 Label='A'; //保存用户所选的操作 } void CUserDlg::OnEdit() { // TODO: Add your control notification handler code here // UpdateData(false); Label='E'; //保存用户所选的操作 } void CUserDlg::OnDel() { // TODO: Add your control notification handler code here } void CUserDlg::OnSaveBTN() //保存按钮 { // TODO: Add your control notification handler code here UpdateData(); //更新数据 if(m_user.IsEmpty()) //判断是否为空 { MessageBox("姓名不能为空"); //给出提示 m_ctrlUser.SetFocus(); //设置焦点 return; //返回 } if(m_strPass=="") //判断是否为空 { MessageBox("密码不能为空,请输入密码!"); //给出提示 m_ctrlPass.SetFocus(); //设置焦点 return; //返回 } switch (Label) //用户所选的操作 { case 'A': { //添加新用户 m_user.TrimLeft(); //去除左边的空格 m_user.TrimRight(); //去除右边的空格 if((m_ctrlUserList.FindString(-1,m_user))!=LB_ERR) //判断是否已经添加 { MessageBox("列表框中已有相同的姓名,不能添加"); //给出提示 m_user.Empty(); //清空编辑框 m_strPass.Empty(); m_strRePass.Empty(); UpdateData(false); //更新数据 m_ctrlUser.SetFocus(); //设置焦点 return; } int nIndex=m_ctrlUserList.AddString(m_user); //没有添加则添加 UserInfo structSet; //定义用户信息结构 structSet.user=m_user; //结构体赋值 structSet.passwd=m_strPass; structSet.repasswd=m_strRePass; structSet.bIsAdmin=m_IsAdmin; m_ctrlUserList.SetItemDataPtr(nIndex,new UserInfo(structSet));//设置指针 //写入数据库 if(!passwdSet.IsOpen()) passwdSet.Open(); //打开记录集 passwdSet.MoveFirst(); //移动到第一条记录 passwdSet.AddNew(); //添加新记录 passwdSet.m_lgn_user=structSet.user; //表中个字段的赋值 passwdSet.m_lgn_passwd=structSet.passwd; passwdSet.m_lgn_isAdmin=structSet.bIsAdmin; passwdSet.Update(); //更新记录 passwdSet.Requery(); //刷新记录集 passwdSet.Close(); //关闭记录集 MessageBox("用户添加成功,请记住用户名和密码!"); //给出提示 } break; case 'E': {//修改用户 if(m_strPass!=m_strRePass) //判断用户两次密码是否一致 { MessageBox("两次输入的密码不一致,请重新输入密码!");//给出提示 m_ctrlPass.SetFocus(); //设置焦点 m_strPass=""; //清空编辑框 m_strRePass=""; UpdateData(false); //更新数据 return; } CString strSQL; //定义字符串变量 strSQL.Format("select * from tab_password where lgn_user='%s'",m_user); //构造查询查询此用户信息的sql语句 MessageBox(m_user); if(passwdSet.IsOpen()) passwdSet.Close(); if(!passwdSet.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL))///////??????????????? { MessageBox("打开数据库失败!"); return; } passwdSet.Edit(); //编辑记录 passwdSet.m_lgn_user=m_user; //表中字段的赋值 passwdSet.m_lgn_passwd=m_strPass; passwdSet.m_lgn_isAdmin=m_IsAdmin; passwdSet.Update(); //更新记录集 MessageBox("用户修改成功,请记住用户名和密码!"); //给出提示 } break; default:break; } } void CUserDlg::OnCancelBTN() { // TODO: Add your control notification handler code here } void CUserDlg::OnIsAdminCHECK() { // TODO: Add your control notification handler code here } void CUserDlg::OnDestroy() { CDialog::OnDestroy(); //销毁对话框 // TODO: Add your message handler code here }