3.9.5 用户管理界面的实现(1)
该界面只允许具有管理员权限的用户进行管理操作,其中又分为用户添加、注销用户、修改用户信息功能,下面分别进行介绍。
当用户输入完信息后,单击【添加用户】按钮,输入数据无误后可操作成功。按钮实现代码参考如下:
代码位置:见光盘中本章源代码的SYSDLG类。
- 1 void SYSDLG::OnAdduser()
- 2 {
- 3 UpdateData();
- 4 CString tempstr;
- 5 m_combo.GetLBText(m_combo.GetCurSel(),tempstr); //获取组合框选项
- 6 if(m_id!=""&&m_name!="")
- 7 {
- 8 while(!m_pRecordset->_EOF) //记录没有到最后
- 9 {
- 10 CString str = ((LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("opername"));
- 11 str.TrimRight(); //获取管理员姓名
- 12 if(str==m_id)
- 13 {
- 14 AfxMessageBox("该用户名已存在!\r\n请重新选择新用户进行注册!");
- 15 m_id=m_name=m_pass=m_passr="";
- 16 UpdateData(false);
- 17 return;
- 18 }
- 19 m_pRecordset->MoveNext(); //记录后移
- 20 }
- 21 if(m_pass==m_passr) //密码确认相同
- 22 {
- 23 CString str,str2;
- 24 _variant_t va; //构造插入记录语句
- 25 str.Format("insert into tb_operator values('%s','%s','%s','%s')",m_id,m_name, m_pass,tempstr);
- 26 m_pRecordset =m_pConnection->Execute(_bstr_t(str),&va,adCmdText); //执行插入
- 27 AfxMessageBox("添加成功!!");
- 28 m_id=m_name=m_pass=m_passr="";
- 29 UpdateData(false); //显示输出
- 30 ShowData(); //显示在列表中输出
- 31 }
- 32 else
- 33 {
- 34 AfxMessageBox("对不起!确认密码不正确!\r\n请您重新输入!");
- 35 m_passr="";
- 36 UpdateData(false);
- 37 return;
- 38 }
- 39 }
- 40 else
- 41 {
- 42 AfxMessageBox("请输入正确的用户名!");
- 43 return;
- 44 }
- 45 }
第5行代码实现对用户权限组合框选中权限的获取。
第9~20行代码主要是判断数据表中是否有待注册新用户的id,如果有,则不允许再重复注册。
第21~38行代码实现判断两次输入的密码是否一致,即密码验证,如果不一致,则终止注册。
第30行代码完成列表框中用户的更新显示。
上面的代码中ShowData()封装完成列表框中用户的更新显示。该函数代码参考如下:
代码位置:见光盘中本章源代码的SYSDLG类。
- 1 void SYSDLG::ShowData()
- 2 {
- 3 _variant_t va; //执行查询返回记录集
- 4m_pRecordset =m_pConnection->Execute("select * from tb_operator order by operid", &va,adCmdText);
- 5 for(int i=m_list.GetCount();i>=0;i--) //删除列表列标题
- 6 m_list.DeleteString(i);
- 7 int k=0;
- 8 while(!m_pRecordset->_EOF) //记录没有到最后
- 9 {
- 10 CString str1 = ((LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("opername"));
- 11 CString str2 = ((LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("operlevel"));
- 12 str1.TrimRight(); //去掉管理员名右边的空格
- 13 str2.TrimRight(); //去掉权限右边的空格
- 14 m_list.InsertString(k,str1+"["+str2+"]"); //插入到组合框中
- 15 k++;
- 16 m_pRecordset->MoveNext(); //记录后移
- 17 }
- 18 }