📄 graduate.cpp
字号:
// Graduate.cpp : implementation file
//
#include "stdafx.h"
#include "EduAdministration.h"
#include "Graduate.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CGraduate dialog
CGraduate::CGraduate(CWnd* pParent /*=NULL*/)
: CDialog(CGraduate::IDD, pParent)
{
//{{AFX_DATA_INIT(CGraduate)
m_graClass = _T("");
m_outClass = _T("");
m_outGrade = _T("");
m_graGrade = _T("");
m_outInstitute = _T("");
m_graInstitute = _T("");
m_outSchoolLen = _T("");
m_outSpecialty = _T("");
m_graSpecialty = _T("");
m_outName = _T("");
m_graName = _T("");
m_num = _T("");
//}}AFX_DATA_INIT
}
void CGraduate::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CGraduate)
DDX_Control(pDX, IDC_EDTSTUNUM, m_ctlNum);
DDX_Control(pDX, IDC_EDTSTUNAME, m_ctlOutName);
DDX_Control(pDX, IDC_EDTSPECIALTY, m_ctlOutSpecialty);
DDX_Control(pDX, IDC_EDTSCHLENGTH, m_ctlOutSchLen);
DDX_Control(pDX, IDC_EDTINSTITUTE, m_ctlOutInstitute);
DDX_Control(pDX, IDC_EDTGRADE, m_ctlOutGrade);
DDX_Control(pDX, IDC_EDTCLASS, m_ctlOutClass);
DDX_Control(pDX, IDC_LISTSSTU, m_stuList);
DDX_Control(pDX, IDC_BTNSEARCH, m_btnSearch);
DDX_Control(pDX, IDC_BTNOUT, m_btnOut);
DDX_Control(pDX, IDC_BTNGRA, m_btnGraduate);
DDX_Text(pDX, IDC_EDTCLASS2, m_graClass);
DDX_Text(pDX, IDC_EDTCLASS, m_outClass);
DDX_Text(pDX, IDC_EDTGRADE, m_outGrade);
DDX_Text(pDX, IDC_EDTGRADE2, m_graGrade);
DDX_Text(pDX, IDC_EDTINSTITUTE, m_outInstitute);
DDX_Text(pDX, IDC_EDTINSTITUTE2, m_graInstitute);
DDX_Text(pDX, IDC_EDTSCHLENGTH, m_outSchoolLen);
DDX_Text(pDX, IDC_EDTSPECIALTY, m_outSpecialty);
DDX_Text(pDX, IDC_EDTSPECIALTY2, m_graSpecialty);
DDX_Text(pDX, IDC_EDTSTUNAME, m_outName);
DDX_Text(pDX, IDC_EDTSTUNAME2, m_graName);
DDX_Text(pDX, IDC_EDTSTUNUM, m_num);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CGraduate, CDialog)
//{{AFX_MSG_MAP(CGraduate)
ON_NOTIFY(NM_CLICK, IDC_LISTSSTU, OnClickListsstu)
ON_BN_CLICKED(IDC_BTNSEARCH, OnBtnsearch)
ON_BN_CLICKED(IDC_BTNOUT, OnBtnout)
ON_WM_SHOWWINDOW()
ON_BN_CLICKED(IDC_BTNGRA, OnBtngra)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CGraduate message handlers
BOOL CGraduate::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
m_btnGraduate.SetIcon(IDI_ICONGRA);
m_btnOut.SetIcon(IDI_ICONOUT);
m_btnSearch.SetIcon(IDI_ICONSEARCH);
m_bFindMode = false;
m_stuList.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
m_stuList.InsertColumn(0,"学号",LVCFMT_LEFT,80);
m_stuList.InsertColumn(1,"姓名",LVCFMT_LEFT,80);
m_stuList.InsertColumn(2,"性别",LVCFMT_LEFT,50);
m_stuList.InsertColumn(3,"学院",LVCFMT_LEFT,100);
m_stuList.InsertColumn(4,"专业",LVCFMT_LEFT,100);
m_stuList.InsertColumn(5,"年级",LVCFMT_LEFT,100);
m_stuList.InsertColumn(6,"班级",LVCFMT_LEFT,100);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CGraduate::setStuList()
{
m_stuList.DeleteAllItems();
int i=0;
m_pStu = new CStudents();
if(!m_pStu->IsOpen())
m_pStu->Open();
while (!m_pStu->IsEOF())
{
m_stuList.InsertItem(i,m_pStu->m_stuNum);
m_stuList.SetItemText(i,1,m_pStu->m_stuName);
m_stuList.SetItemText(i,2,m_pStu->m_sex);
m_stuList.SetItemText(i,3,m_pStu->m_institute);
m_stuList.SetItemText(i,4,m_pStu->m_specialty);
m_stuList.SetItemText(i,5,m_pStu->m_grade);
m_stuList.SetItemText(i,6,m_pStu->m_class);
i++;
m_pStu->MoveNext();
}
m_pStu->Close();
delete m_pStu;
}
void CGraduate::OnClickListsstu(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
if(m_bFindMode)
{
if(AfxMessageBox("退出查找?",MB_YESNO)==IDYES)
{
m_bFindMode = false;
m_btnOut.EnableWindow(true);
m_btnGraduate.EnableWindow(true);
m_btnSearch.SetIcon(IDI_ICONSEARCH);
setFieldReadOnly();
}
else
return;
}
char s[20];
m_stuList.GetItemText(m_stuList.GetSelectionMark(),0,s,19);
if(s=="")
return;
m_pStu = new CStudents();
if(!m_pStu->IsOpen())
m_pStu->Open();
m_pStu->m_strFilter.Format("stuNum='%s'",s);
m_pStu->Requery();
if(m_pStu->IsEOF()){
m_pStu->Close();
delete m_pStu;
return;
}
setFields();
m_pStu->Close();
delete m_pStu;
*pResult = 0;
}
void CGraduate::setFields()
{
m_num = m_pStu->m_stuNum;
m_outName = m_pStu->m_stuName;
m_graName = m_pStu->m_stuName;
m_outClass = m_pStu->m_class;
m_outGrade = m_pStu->m_grade;
m_outInstitute = m_pStu->m_institute;
m_outSchoolLen = m_pStu->m_schoollength;
m_outSpecialty = m_pStu->m_specialty;
m_graClass = m_pStu->m_class;
m_graGrade = m_pStu->m_grade;
m_graInstitute = m_pStu->m_institute;
m_graSpecialty = m_pStu->m_specialty;
UpdateData(false);
}
void CGraduate::setFieldReadWrite()
{
m_ctlNum.SetReadOnly(false);
m_ctlOutClass.SetReadOnly(false);
m_ctlOutGrade.SetReadOnly(false);
m_ctlOutInstitute.SetReadOnly(false);
m_ctlOutName.SetReadOnly(false);
m_ctlOutSchLen.SetReadOnly(false);
m_ctlOutSpecialty.SetReadOnly(false);
setFieldNull();
m_ctlNum.SetFocus();
}
void CGraduate::setFieldReadOnly()
{
m_ctlNum.SetReadOnly(true);
m_ctlOutClass.SetReadOnly(true);
m_ctlOutSpecialty.SetReadOnly(true);
m_ctlOutGrade.SetReadOnly(true);
m_ctlOutInstitute.SetReadOnly(true);
m_ctlOutSchLen.SetReadOnly(true);
m_ctlOutName.SetReadOnly(true);
}
void CGraduate::OnBtnsearch()
{
// TODO: Add your control notification handler code here
if(!m_bFindMode)
{
setFieldReadWrite();
m_btnGraduate.EnableWindow(false);
m_btnOut.EnableWindow(false);
m_btnSearch.SetIcon(IDI_ICONSQLSEARCH);
m_bFindMode = true;
}
else
{
UpdateData();
setFieldReadOnly();
CString s,st="";
if(m_num!=""){
s.Format("stuNum='%s'",m_num);
if(st=="")
st=s;
else
st+=" and "+s;
}
if(m_outName!=""){
s.Format("stuName='%s'",m_outName);
if(st=="")
st=s;
else
st+=" and "+s;
}
if(m_outClass!=""){
s.Format("class='%s'",m_outClass);
if(st=="")
st=s;
else
st+=" and "+s;
}
if(m_outGrade!=""){
s.Format("grade='%s'",m_outGrade);
if(st=="")
st=s;
else
st+=" and "+s;
}
if(m_outInstitute!=""){
s.Format("institute='%s'",m_outInstitute);
if(st=="")
st=s;
else
st+=" and "+s;
}
if(m_outSchoolLen!=""){
s.Format("schoollength='%s'",m_outSchoolLen);
if(st=="")
st=s;
else
st+=" and "+s;
}
if(m_outSpecialty!=""){
s.Format("specialty='%s'",m_outSpecialty);
if(st=="")
st=s;
else
st+=" and "+s;
}
m_pStu = new CStudents();
if(!m_pStu->IsOpen())
m_pStu->Open();
m_pStu->m_strFilter = st;
m_pStu->Requery();
m_stuList.DeleteAllItems();
int i = 0;
while (!m_pStu->IsEOF())
{
m_stuList.InsertItem(i,m_pStu->m_stuNum);
m_stuList.SetItemText(i,1,m_pStu->m_stuName);
m_stuList.SetItemText(i,2,m_pStu->m_sex);
m_stuList.SetItemText(i,3,m_pStu->m_institute);
m_stuList.SetItemText(i,4,m_pStu->m_specialty);
m_stuList.SetItemText(i,5,m_pStu->m_grade);
m_stuList.SetItemText(i,6,m_pStu->m_class);
i++;
m_pStu->MoveNext();
}
m_pStu->Close();
delete m_pStu;
setFieldNull();
m_bFindMode = false;
m_btnGraduate.EnableWindow(true);
m_btnOut.EnableWindow(true);
m_btnSearch.SetIcon(IDI_ICONSEARCH);
}
}
void CGraduate::setFieldNull()
{
m_num = "";
m_outName = "";
m_outClass = "";
m_outGrade = "";
m_outInstitute = "";
m_outSchoolLen = "";
m_outSpecialty = "";
m_graClass = "";
m_graGrade = "";
m_graInstitute = "";
m_graName = "";
m_graSpecialty = "";
UpdateData(false);
}
void CGraduate::OnBtnout()
{
// TODO: Add your control notification handler code here
UpdateData();
if(m_num=="")
return;
m_pStu = new CStudents();
if(!m_pStu->IsOpen())
m_pStu->Open();
m_pStu->m_strFilter.Format("stuNum='%s'",m_num);
m_pStu->Requery();
if(m_pStu->IsEOF()){
m_pStu->Close();
delete m_pStu;
return;
}
m_pStu->Delete();
m_pStu->Close();
delete m_pStu;
m_pStuCourse = new CStuCourse();
if(!m_pStuCourse->IsOpen())
m_pStuCourse->Open();
m_pStuCourse->m_strFilter.Format("stuNum='%s'",m_num);
m_pStuCourse->Requery();
if(!m_pStuCourse->IsEOF())
m_pStuCourse->Delete();
m_pStuCourse->Close();
delete m_pStuCourse;
m_pStuOut = new CStuOutLog();
if(!m_pStuOut->IsOpen())
m_pStuOut->Open();
m_pStuOut->m_strFilter.Format("stuOutNum='%s'",m_num);
m_pStuOut->Requery();
if(m_pStuOut->IsEOF())
m_pStuOut->AddNew();
else
m_pStuOut->Edit();
m_pStuOut->m_stuOutId = m_num;
m_pStuOut->m_stuOutNum = m_num;
m_pStuOut->m_stuOutName = m_outName;
m_pStuOut->m_institute = m_outInstitute;
m_pStuOut->m_specialty = m_outSpecialty;
m_pStuOut->m_grade = m_outGrade;
m_pStuOut->m_tranDate = "000";
m_pStuOut->Update();
m_pStuOut->Close();
delete m_pStuOut;
AfxMessageBox("操作完成");
setFieldNull();
m_stuList.DeleteAllItems();
setStuList();
}
void CGraduate::OnShowWindow(BOOL bShow, UINT nStatus)
{
CDialog::OnShowWindow(bShow, nStatus);
// TODO: Add your message handler code here
setStuList();
}
void CGraduate::OnBtngra()
{
// TODO: Add your control notification handler code here
UpdateData();
if(m_graSpecialty == "")
return;
m_pStu = new CStudents();
m_pStuCourse = new CStuCourse();
if(!m_pStu->IsOpen())
m_pStu->Open();
if(!m_pStuCourse->IsOpen())
m_pStuCourse->Open();
m_pStu->m_strFilter.Format("institute='%s' and specialty='%s' and grade='%s'",
m_graInstitute,m_graSpecialty,m_graGrade);
m_pStu->Requery();
while (!m_pStu->IsEOF())
{
m_pStuCourse->m_strFilter.Format("stuNum='%s'",m_pStu->m_stuNum);
m_pStuCourse->Requery();
if(!m_pStuCourse->IsEOF())
m_pStuCourse->Delete();
m_pStu->Delete();
m_pStu->MoveNext();
}
m_pStuCourse->Close();
m_pStu->Close();
delete m_pStuCourse;
delete m_pStu;
m_pStuGra = new CStuGraduate();
if(!m_pStuGra->IsOpen())
m_pStuGra->Open();
m_pStuGra->m_strFilter.Format("stuGraId='%s'",m_num);
m_pStuGra->Requery();
if(m_pStuGra->IsEOF())
m_pStuGra->AddNew();
else
m_pStuGra->Edit();
m_pStuGra->m_stuGraId = m_num;
m_pStuGra->m_institute = m_graInstitute;
m_pStuGra->m_specialty = m_graSpecialty;
m_pStuGra->m_grade = m_graGrade;
m_pStuGra->m_tranDate = "00000000";
m_pStuGra->Update();
m_pStuGra->Close();
delete m_pStuGra;
setFieldNull();
AfxMessageBox("操作完成");
setStuList();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -