📄 studentinfodlg.cpp
字号:
// StudentInfoDlg.cpp : implementation file
//
#include "stdafx.h"
#include "FPSys.h"
#include "StudentInfoDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CStudentInfoDlg dialog
extern CString sID;
extern CString sAttendID;
extern int FromNameToID(CString tabName,CString attr,CString name); //通过名字获得编号
extern CString FromIDToName(CString tabName,CString attr,int id); //通过编号获得名字
CStudentInfoDlg::CStudentInfoDlg(CWnd* pParent /*=NULL*/)
: CDialog(CStudentInfoDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CStudentInfoDlg)
m_strID = _T("");
m_strName = _T("");
m_strMemo = _T("");
//}}AFX_DATA_INIT
}
void CStudentInfoDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CStudentInfoDlg)
DDX_Control(pDX, IDC_LIST_STUDENTINFO, m_listStudentInfo);
DDX_Control(pDX, IDC_COMBO_SSEX, m_cSSex);
DDX_Control(pDX, IDC_COMBO_SDEPART, m_cSDepart);
DDX_Control(pDX, IDC_COMBO_SCLASS, m_cSClass);
DDX_Control(pDX, IDC_COMBO_CLASS, m_cClass);
DDX_Control(pDX, IDC_COMBO_DEPART, m_cDepart);
DDX_Control(pDX, IDC_COMBO_SEX, m_cSex);
DDX_Text(pDX, IDC_EDIT_ID, m_strID);
DDX_Text(pDX, IDC_EDIT_NAME, m_strName);
DDX_Text(pDX, IDC_EDIT_REMARK, m_strMemo);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CStudentInfoDlg, CDialog)
//{{AFX_MSG_MAP(CStudentInfoDlg)
ON_BN_CLICKED(IDC_BTN_ADD, OnBtnAdd)
ON_BN_CLICKED(IDC_BTN_DEL, OnBtnDel)
ON_BN_CLICKED(IDC_BTN_MATCH, OnBtnMatch)
ON_BN_CLICKED(IDC_BTN_MOD, OnBtnMod)
ON_CBN_SELCHANGE(IDC_COMBO_CLASS, OnSelchangeComboClass)
ON_CBN_SELCHANGE(IDC_COMBO_DEPART, OnSelchangeComboDepart)
ON_CBN_SELCHANGE(IDC_COMBO_SCLASS, OnSelchangeComboSclass)
ON_CBN_SELCHANGE(IDC_COMBO_SDEPART, OnSelchangeComboSdepart)
ON_CBN_SELCHANGE(IDC_COMBO_SEX, OnSelchangeComboSex)
ON_CBN_SELCHANGE(IDC_COMBO_SSEX, OnSelchangeComboSsex)
ON_NOTIFY(NM_CLICK, IDC_LIST_STUDENTINFO, OnClickListStudentinfo)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CStudentInfoDlg message handlers
void CStudentInfoDlg::OnBtnAdd()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
CString str;
if(m_strID.IsEmpty()||m_strName.IsEmpty()||-1==m_cDepart.GetCurSel()||-1==m_cClass.GetCurSel())
{
MessageBox("请完整填写信息!");
return;
}
if(m_strID.GetLength()>5)
{
MessageBox("你输入的编号的长度太长了。\r\n请输入长度小于6的编号!");
m_strID.Empty();
UpdateData(FALSE);
return;
}
CString id,name,sex,depart,classes,memo;
id=m_strID; name=m_strName;
m_cSex.GetLBText(m_cSex.GetCurSel(),sex);
//m_cDepart.GetLBText(m_cDepart.GetCurSel(),depart);
m_cClass.GetLBText(m_cClass.GetCurSel(),classes);
memo=_T(m_strMemo);
int iClassID=FromNameToID("tab_Class","ClassName",classes);
CString sClassID;
sClassID.Format("%d",iClassID);
CString departId=ReturnDepartID(sClassID);
// MessageBox(departId);return;
depart=FromIDToName("tab_Depart","DepartID",atoi(departId));
InsertToDb(id,name,sex,depart,classes,memo);
GetDlgItem(IDC_EDIT_ID)->SetWindowText("");
GetDlgItem(IDC_EDIT_NAME)->SetWindowText("");
}
void CStudentInfoDlg::OnBtnDel()
{
// TODO: Add your control notification handler code here
int nItem=m_listStudentInfo.GetNextItem(-1,LVNI_SELECTED);
if(-1==nItem)
{
AfxMessageBox("请选择要删除的数据");
return;
}
CString sql;
int id;
id=atoi(m_listStudentInfo.GetItemText(nItem,0));
TRY{
sql.Format("delete from tab_Student where sId=%d",m_PreID);
TRACE(sql);
m_db.ExecuteSQL(sql);
m_listStudentInfo.DeleteItem(nItem);
}
CATCH(CDBException,ex)
{
AfxMessageBox(ex->m_strError);
AfxMessageBox(ex->m_strStateNativeOrigin);
}
AND_CATCH(CMemoryException,pEx)
{
pEx->ReportError();
AfxMessageBox("memory exception");
}
AND_CATCH(CException,e)
{
TCHAR szError[100];
e->GetErrorMessage(szError,100);
AfxMessageBox(szError);
}
END_CATCH
}
void CStudentInfoDlg::OnBtnMatch()
{
// TODO: Add your control notification handler code here
CMatchDlg dlg;
dlg.DoModal();
if(strcmp(sAttendID,"")!=0 && strcmp(sID,"")!=0)
{
TRY{
CString sql;
sql.Format("update tab_Student Set AttendID='%s' where sId='%s'",sAttendID,sID);
TRACE(sql);
m_db.ExecuteSQL(sql);
CString stemp;
int i=0;
while(i<m_listStudentInfo.GetItemCount())
{
stemp=m_listStudentInfo.GetItemText(i,0);
if(strcmp(stemp,sID)==0)
break;
i++;
}
m_listStudentInfo.SetItemText(i,6,sAttendID);
}
CATCH(CDBException,ex)
{
AfxMessageBox(ex->m_strError);
AfxMessageBox(ex->m_strStateNativeOrigin);
}
AND_CATCH(CMemoryException,pEx)
{
pEx->ReportError();
AfxMessageBox("memory exception");
}
AND_CATCH(CException,e)
{
TCHAR szError[100];
e->GetErrorMessage(szError,100);
AfxMessageBox(szError);
}
END_CATCH
}
}
void CStudentInfoDlg::OnBtnMod()
{
// TODO: Add your control notification handler code here
if(!UpdateData())
return;
if(m_strID.IsEmpty())
return;
int nItem=m_listStudentInfo.GetNextItem(-1,LVNI_SELECTED);
if(nItem==-1)
{
AfxMessageBox("没有选择要修改的信息!");
return;
}
CString m_sPreID;
m_sPreID.Format("%d",m_PreID);
if(strcmp(m_strID,m_sPreID)!=0)
{
MessageBox("不能修改学号!");
m_strID.Format("%d",m_PreID);
UpdateData(FALSE);
return;
}
int idepartId,iClassId;
CString sex,departName,departId,className,classId,memo;
m_cSex.GetLBText(m_cSex.GetCurSel(),sex);
m_cDepart.GetLBText(m_cDepart.GetCurSel(),departName);
idepartId=FromNameToID("tab_Depart","DepartName",departName);//由系名转换成系编号
departId.Format("%d",idepartId);
m_cClass.GetLBText(m_cClass.GetCurSel(),className);
iClassId=FromNameToID("tab_Class","ClassName",className);//由班级名称转换成班级编号
classId.Format("%d",iClassId);
CString sql;
sql.Format("Update tab_Student set sName='%s',sSex='%s',ClassID='%s',"
"Memo='%s' where sId=%d",m_strName,sex,classId,m_strMemo,m_PreID);
TRY
{
TRACE(sql);
m_db.ExecuteSQL(sql);
// InsertToItem(m_strID,m_strName,sex,departName,className,memo,"");
CString m_sId;
m_sId.Format("%d",m_PreID);
m_listStudentInfo.SetItemText(m_iCurItem,0,m_sId);
m_listStudentInfo.SetItemText(m_iCurItem,1,m_strName);
m_listStudentInfo.SetItemText(m_iCurItem,2,sex);
m_listStudentInfo.SetItemText(m_iCurItem,3,departName);
m_listStudentInfo.SetItemText(m_iCurItem,4,className);
m_listStudentInfo.SetItemText(m_iCurItem,5,m_strMemo);
//m_listStudentInfo.SetItemText(m_iCurItem,6,);
}
CATCH(CDBException,ex)
{
AfxMessageBox(ex->m_strError);
AfxMessageBox(ex->m_strStateNativeOrigin);
}
AND_CATCH(CMemoryException,pEx)
{
pEx->ReportError();
AfxMessageBox("memory exception");
}
AND_CATCH(CException,e)
{
TCHAR szError[100];
e->GetErrorMessage(szError,100);
AfxMessageBox(szError);
}
END_CATCH
}
void CStudentInfoDlg::OnSelchangeComboClass()
{
// TODO: Add your control notification handler code here
}
void CStudentInfoDlg::OnSelchangeComboDepart()
{
// TODO: Add your control notification handler code here
CString departName;
m_cDepart.GetLBText(m_cDepart.GetCurSel(),departName);
m_iDepFrm=1;
RefreshClass(departName);
}
void CStudentInfoDlg::OnSelchangeComboSclass()
{
// TODO: Add your control notification handler code here
}
void CStudentInfoDlg::OnSelchangeComboSdepart()
{
// TODO: Add your control notification handler code here
}
void CStudentInfoDlg::OnSelchangeComboSex()
{
// TODO: Add your control notification handler code here
}
void CStudentInfoDlg::OnSelchangeComboSsex()
{
// TODO: Add your control notification handler code here
}
void CStudentInfoDlg::OnClickListStudentinfo(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
int nItem=m_listStudentInfo.GetNextItem(-1,LVNI_SELECTED);
m_iCurItem=nItem;
if(nItem!=-1)
{
CString id=m_listStudentInfo.GetItemText(nItem,0);
m_PreID=atoi(id);
sID=id; //保存学号,用于匹配考勤号时之用
GetDlgItem(IDC_EDIT_ID)->SetWindowText(id);
CString name=m_listStudentInfo.GetItemText(nItem,1);
GetDlgItem(IDC_EDIT_NAME)->SetWindowText(name);
CString memo=m_listStudentInfo.GetItemText(nItem,5);
GetDlgItem(IDC_EDIT_REMARK)->SetWindowText(memo);
int i,iCount;
CString sex=m_listStudentInfo.GetItemText(nItem,2);
iCount=m_cSex.GetCount();
for(i=0;i<iCount;i++)
{
CString str;
m_cSex.GetLBText(i,str);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -