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

📄 graduate.cpp

📁 教学管理系统实现了高校教务、教学和学生三大方面的自动化以及交互式管理
💻 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 + -