图书管理系统的操作员信息管理界面及其功能设计

来源:互联网 发布:linux cp mv 编辑:程序博客网 时间:2024/06/10 11:41

界面设计如下:


利用ClasasWizard创建关联变量m_name,m_password,m_lever,m_list,在对话框类中创建m_recordset变量,类型为之前连接相应数据库tb_operator的类CUserSet

void CDlgOperator::LoadOperatorInfo()
{
     m_list.DeleteAllItems();
CString strSQL;
strSQL.Format("select * from tb_operator");
CUserSet recordset;
if(!recordset.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL))
{
MessageBox("打开数据库失败!","数据库错误",MB_OK);
return ;
}
int i = 0;
  while(!recordset.IsEOF())
  {
 m_list.InsertItem(i,recordset.m_name);
 m_list.SetItemText(i,1,recordset.m_password);
 // m_list.InsertColumn(i,'');
  i++;
  recordset.MoveNext();
  }
  recordset.Close();
  m_list.SetRedraw(TRUE);
  //UpdateData(FALSE);
}

BOOL CDlgOperator::OnInitDialog() 
{
CDialog::OnInitDialog();

// TODO: Add extra initialization here
m_list.InsertColumn(0,"操作员名称");
m_list.InsertColumn(1,"操作员密码");
m_list.InsertColumn(2,"操作员级别");
m_list.SetColumnWidth(0,250);
m_list.SetColumnWidth(1,200);
m_list.SetColumnWidth(2,180);
m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
LoadOperatorInfo();
return TRUE;  // return TRUE unless you set the focus to a control
             // EXCEPTION: OCX Property Pages should return FALSE
}

以上函数可以进行对话框的初始化

1添加事件的响应函数如下:

void CDlgOperator::OnBtnadd() 
{
// TODO: Add your control notification handler code here
UpdateData();
if (m_name.IsEmpty())
{
MessageBox("操作员名称不能为空!");
return ;
}
else if (m_password.IsEmpty())
{
MessageBox("操作员密码不能为空!");
return ;
}
else if (m_lever == 0)
{
MessageBox("操作员级别不能为0!");
return ;
}
CString strSQL;
strSQL.Format("select * from tb_operator where name ='%s'",m_name);
//strSQL.Format("insert into tb_operator values('%s','%s',%d)",m_name,m_password,m_lever);
if(!m_recordset.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL))
{
MessageBox("打开数据库失败!","数据库错误",MB_OK);
return ;
}
if(m_recordset.GetRecordCount()>0)
{
MessageBox("此用户名被人使用,请重新输入!");
return ;
}
else{
    m_recordset.AddNew();
m_recordset.m_name = m_name;
m_recordset.m_password = m_password;
m_recordset.Update();
m_recordset.Close();
m_list.InsertItem(0,m_name);
m_list.SetItemText(0,1,m_password);
 //m_list.SetRedraw();
UpdateData(FALSE);
}
}

2删除事件的响应函数:

void CDlgOperator::OnBtndelete() 
{
// TODO: Add your control notification handler code here
int i = m_list.GetSelectionMark();
if(0>i)
{
AfxMessageBox("请选择一条记录进行删除!");
return;
}
CString strSQL;
strSQL.Format("select * from tb_operator where name = '%s' ",m_list.GetItemText(i,0));
if(!m_recordset.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL))
{
AfxMessageBox("打开数据库失败!");
return ;
}
m_recordset.Delete();
m_recordset.Close();
m_list.DeleteItem(i);
UpdateData(FALSE);
}

3修改事件的响应函数:

void CDlgOperator::OnBtnupdate() 
{
// TODO: Add your control notification handler code here
int i= m_list.GetSelectionMark();
if(0>i)
{
AfxMessageBox("请选择一条记录进行更新!");
return;
}
CUserUpdateDlg dlg;      //自己写的一个修改的对话框
dlg.m_name = m_list.GetItemText(i,0);
dlg.m_password = m_list.GetItemText(i,1);
if(dlg.DoModal()==IDOK)
{
//打开记录集
CString strSQL;
strSQL.Format("select * from tb_operator where name='%s'",dlg.m_name);
if(!m_recordset.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL))
{
MessageBox("打开数据库失败!","数据库错误",MB_OK);
return ;
}
//判断记录是否不存在
if(m_recordset.GetRecordCount()==0)
{
m_recordset.Close();
MessageBox("该记录不存在!");
return;
}
m_recordset.Edit();
m_recordset.m_name = dlg.m_name;
m_recordset.m_password = dlg.m_password;
m_recordset.Update();
m_recordset.Close();
//更新列表
LoadOperatorInfo();
}
}

4修改对话框的设计:

void CUserUpdateDlg::OnOK() 
{
// TODO: Add extra validation here
UpdateData();
    if(m_password.IsEmpty())
{
MessageBox("密码不能为空!");
return;
}
CDialog::OnOK();
}


BOOL CUserUpdateDlg::OnInitDialog() 
{
CDialog::OnInitDialog();

// TODO: Add extra initialization here
UpdateData(FALSE);
GetDlgItem(IDC_EDITNAME)->EnableWindow(FALSE);
return TRUE;  // return TRUE unless you set the focus to a control
             // EXCEPTION: OCX Property Pages should return

}

以上就可完成操作员信息管理的功能了!

0 0
原创粉丝点击