⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 userdlg.cpp

📁 成绩管理系统
💻 CPP
字号:
// UserDlg.cpp : implementation file
//

#include "stdafx.h"
#include "stu.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_UserNm = _T("");
	m_UserPsd1 = _T("");
	m_UserPsd2 = _T("");
	//}}AFX_DATA_INIT
}


void CUserDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CUserDlg)
	DDX_Control(pDX, IDC_USERPSD2, m_EditUsPsd2);
	DDX_Control(pDX, IDC_USERPSD1, m_EditUsPsd1);
	DDX_Control(pDX, IDC_USERNM, m_EditUsNm);
	DDX_Control(pDX, IDC_SAVEUSER, m_btnSaveUser);
	DDX_Control(pDX, IDC_NEWUSER, m_btnNewUser);
	DDX_Control(pDX, IDC_EDITUSER, m_btnEditUser);
	DDX_Control(pDX, IDC_DELUSER, m_btnDelUser);
	DDX_Control(pDX, IDC_CANUSER, m_btnCanUser);
	DDX_Control(pDX, IDC_USERGRID, m_UserLB);
	DDX_Text(pDX, IDC_USERNM, m_UserNm);
	DDX_Text(pDX, IDC_USERPSD1, m_UserPsd1);
	DDX_Text(pDX, IDC_USERPSD2, m_UserPsd2);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CUserDlg, CDialog)
	//{{AFX_MSG_MAP(CUserDlg)
	ON_BN_CLICKED(IDC_EXITUSER, OnExituser)
	ON_BN_CLICKED(IDC_CANUSER, OnCanuser)
	ON_BN_CLICKED(IDC_NEWUSER, OnNewuser)
	ON_BN_CLICKED(IDC_EDITUSER, OnEdituser)
	ON_BN_CLICKED(IDC_DELUSER, OnDeluser)
	ON_BN_CLICKED(IDC_SAVEUSER, OnSaveuser)
	ON_LBN_SELCHANGE(IDC_USERGRID, OnSelchangeUsergrid)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CUserDlg message handlers

BOOL CUserDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
    bAdd=FALSE;
	bEdit=FALSE;

	if(!rsUser.IsOpen()) rsUser.Open();
	if(rsUser.GetRecordCount()>0)
	{
		CString strUser;
		rsUser.MoveFirst();
        do 
		{
			rsUser.GetFieldValue("cUser", strUser);
			m_UserLB.AddString(strUser);
			rsUser.MoveNext();
		} while(! rsUser.IsEOF());
		rsUser.MoveLast();
		m_UserLB.SetCurSel(rsUser.GetRecordCount()-1);
		m_UserNm=rsUser.m_cUser;
		m_UserPsd1=rsUser.m_cPsd;
		m_UserPsd2=m_UserPsd1;
		UpdateData(FALSE);
	}
	else
		m_UserLB.ResetContent();
  	
	SetBtnState();
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CUserDlg::OnNewuser() 
{
   bEdit=FALSE;
   bAdd=TRUE;
   SetBtnState();   
}


void CUserDlg::SetBtnState()
{
	m_EditUsNm.EnableWindow(bAdd || bEdit);
	m_EditUsPsd1.EnableWindow(bAdd || bEdit);
	m_EditUsPsd2.EnableWindow(bAdd || bEdit);
	if(bAdd)
	{
		m_UserNm=_T("");
		m_UserPsd1=_T("");
        m_UserPsd2=_T("");
		UpdateData(FALSE);
	}
	if(!rsUser.IsOpen()) rsUser.Open();
	if(rsUser.GetRecordCount()<1)
	{
		m_UserLB.ResetContent();
		if(bEdit) bEdit=FALSE;
	}
	
	m_btnNewUser.EnableWindow(!(bAdd || bEdit));
	m_btnEditUser.EnableWindow((!(bAdd || bEdit)) && rsUser.GetRecordCount()>0);
	m_btnDelUser.EnableWindow((!(bAdd || bEdit)) && rsUser.GetRecordCount()>0);
	m_btnSaveUser.EnableWindow((bAdd || bEdit));
	m_btnCanUser.EnableWindow((bAdd || bEdit));
	if(bAdd || bEdit) m_EditUsNm.SetFocus();
}

void CUserDlg::OnEdituser() 
{
   bAdd=FALSE;
   bEdit=TRUE;
   SetBtnState();
}

void CUserDlg::OnDeluser() 
{
   if(AfxMessageBox("您确定要删除指定的用户吗?",MB_YESNO)==IDYES)
   {
	   int nCurSel;
	   rsUser.CanUpdate(); 
	   nCurSel=m_UserLB.GetCurSel();
	   rsUser.Delete();
	   m_UserLB.DeleteString(nCurSel);
	   rsUser.Requery();
	   if(rsUser.GetRecordCount()>0)
	   {
    	   if(rsUser.GetRecordCount()<=nCurSel)
	    	   nCurSel=m_UserLB.GetCount()-1;
	   }
	   else
	   {
		   nCurSel=-1;
		   m_UserLB.ResetContent();
	   }
	   m_UserLB.SetCurSel(nCurSel);
	   if(rsUser.GetRecordCount()>0)
	   {
		   rsUser.MoveFirst();
		   rsUser.Move(nCurSel);
		   m_UserNm=rsUser.m_cUser;
		   m_UserPsd1=rsUser.m_cPsd;
		   m_UserPsd2=m_UserPsd1;
		   UpdateData(FALSE);
	   }

	   SetBtnState();	   
   }
}

void CUserDlg::OnSaveuser() 
{
	if(!ValidData()) return;

	if(bAdd)
		rsUser.AddNew();
	if(bEdit) 
		rsUser.Edit();
	if(bEdit || bAdd)
	{
		rsUser.m_cUser=m_UserNm;
		rsUser.m_cPsd=m_UserPsd1;
		rsUser.Update();
		rsUser.Requery();
		if(bAdd)
		{
			m_UserLB.AddString(m_UserNm);
			m_UserLB.SetCurSel(m_UserLB.GetCount()-1);
		}
		if(bEdit)
		{
			int nCurIdx;
			nCurIdx=m_UserLB.GetCurSel();
			m_UserLB.DeleteString(nCurIdx);
			if(nCurIdx>m_UserLB.GetCount())
			{
				nCurIdx=m_UserLB.GetCount();
				m_UserLB.AddString(m_UserNm);
			}
			else
				m_UserLB.InsertString(nCurIdx, m_UserNm);
			m_UserLB.SetCurSel(nCurIdx);
		}
		bAdd=FALSE;
		bEdit=FALSE;
		SetBtnState();
	}
}

void CUserDlg::OnExituser() 
{
	CDialog::OnOK();
}

void CUserDlg::OnCanuser() 
{
	bAdd=FALSE;
	bEdit=FALSE;
	SetBtnState();
	
}

void CUserDlg::OnSelchangeUsergrid() 
{
   if(m_UserLB.GetCurSel()>=0)
   {
	   if(rsUser.GetRecordCount()>0)
	   {
		   rsUser.MoveFirst();
		   rsUser.Move(m_UserLB.GetCurSel());
		   if(rsUser.IsEOF()) rsUser.MoveLast();
		   m_UserNm=rsUser.m_cUser;
		   m_UserPsd1=rsUser.m_cPsd;
		   m_UserPsd2=m_UserPsd1;
		   UpdateData(FALSE);
	   }
   }
}

BOOL CUserDlg::ValidData()
{
   BOOL bErr=FALSE;
   if(bEdit || bAdd)
   {
	   UpdateData(TRUE);
	   m_UserNm.TrimLeft();
	   m_UserNm.TrimRight();
	   if(m_UserNm.GetLength()<1)
	   {
		   AfxMessageBox("用户代码不能为空", MB_OK);
		   m_EditUsNm.SetFocus();
		   return bErr;
	   }
	   if(m_UserLB.GetCount()>0)
	   {
		   int nRow, nIdx;
		   BOOL bRpt;
		   bRpt=FALSE;
		   CString cItem=_T("");
		   nIdx=m_UserLB.GetCurSel();
		   for(nRow=0;nRow<m_UserLB.GetCount();nRow++)
		   {  
			   m_UserLB.GetText(nRow, cItem);
			   if(cItem==m_UserNm)
			   {
				   if(bAdd) bRpt=TRUE;
				   if(bEdit)
				   {
					   if(nIdx!=nRow) bRpt=TRUE;
					   m_UserLB.SetCurSel(nIdx);
				   }
				   if(bRpt)
				   {
					   AfxMessageBox("用户代码已经存在", MB_OK);
					   m_EditUsNm.SetFocus();
					   return bErr;
				   }
			   }
		   }
		   m_UserLB.SetCurSel(nIdx);
	   }
	   m_UserPsd1.TrimLeft();
	   m_UserPsd1.TrimRight();
	   m_UserPsd2.TrimLeft();
	   m_UserPsd2.TrimRight();
	   if(m_UserPsd1!=m_UserPsd2)
	   {
		   AfxMessageBox("两次输入的用户密码不相同。", MB_OK);
		   m_EditUsPsd1.SetFocus();
		   return bErr;
	   }
   }
   else
   {
	   return bErr;
   }
   bErr=TRUE;
   return bErr;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -