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

📄 stutran.cpp

📁 教学管理系统实现了高校教务、教学和学生三大方面的自动化以及交互式管理
💻 CPP
字号:
// StuTran.cpp : implementation file
//

#include "stdafx.h"
#include "EduAdministration.h"
#include "StuTran.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CStuTran dialog


CStuTran::CStuTran(CWnd* pParent /*=NULL*/)
	: CDialog(CStuTran::IDD, pParent)
{
	//{{AFX_DATA_INIT(CStuTran)
	m_fromGrade = _T("");
	m_fromTinstitute = _T("");
	m_fromSpecialty = _T("");
	m_name = _T("");
	m_num = _T("");
	m_toGrade = _T("");
	m_toInstitute = _T("");
	m_tospecialty = _T("");
	m_tranTime = _T("");
	//}}AFX_DATA_INIT
}


void CStuTran::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CStuTran)
	DDX_Control(pDX, IDC_EDTTOINSTITUTE, m_ctlToInstitute);
	DDX_Control(pDX, IDC_EDTSTUNAME, m_ctlName);
	DDX_Control(pDX, IDC_EDTSTUNUM, m_ctlNum);
	DDX_Control(pDX, IDC_BTNOK, m_btnOk);
	DDX_Control(pDX, IDC_BTNCLEAR, m_btnClear);
	DDX_Control(pDX, IDC_LISTLOG, m_logList);
	DDX_Control(pDX, IDC_BTNAUTO, m_btnAuto);
	DDX_Text(pDX, IDC_EDTGRADE, m_fromGrade);
	DDX_Text(pDX, IDC_EDTINSTITUTE, m_fromTinstitute);
	DDX_Text(pDX, IDC_EDTSPECIALTY, m_fromSpecialty);
	DDX_Text(pDX, IDC_EDTSTUNAME, m_name);
	DDX_Text(pDX, IDC_EDTSTUNUM, m_num);
	DDX_Text(pDX, IDC_EDTTOGRADE, m_toGrade);
	DDX_Text(pDX, IDC_EDTTOINSTITUTE, m_toInstitute);
	DDX_Text(pDX, IDC_EDTTOSPECIALTY, m_tospecialty);
	DDX_Text(pDX, IDC_EDTTRANTIME, m_tranTime);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CStuTran, CDialog)
	//{{AFX_MSG_MAP(CStuTran)
	ON_BN_CLICKED(IDC_BTNOK, OnBtnok)
	ON_BN_CLICKED(IDC_BTNCLEAR, OnBtnclear)
	ON_BN_CLICKED(IDC_BTNAUTO, OnBtnauto)
	ON_WM_SHOWWINDOW()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CStuTran message handlers

BOOL CStuTran::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	m_btnAuto.SetIcon(IDI_ICONTOOLS);
	m_btnClear.SetIcon(IDI_ICONCANCEL);
	m_btnOk.SetIcon(IDI_ICONOK);

	m_logList.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);

	m_logList.InsertColumn(0,"学号",LVCFMT_LEFT,80);
	m_logList.InsertColumn(1,"姓名",LVCFMT_LEFT,80);
	m_logList.InsertColumn(2,"原学院",LVCFMT_LEFT,100);
	m_logList.InsertColumn(3,"原专业",LVCFMT_LEFT,100);
	m_logList.InsertColumn(4,"原年级",LVCFMT_LEFT,100);
	m_logList.InsertColumn(5,"新学院",LVCFMT_LEFT,100);
	m_logList.InsertColumn(6,"新专业",LVCFMT_LEFT,100);
	m_logList.InsertColumn(7,"新年级",LVCFMT_LEFT,100);
	m_logList.InsertColumn(8,"办理时间",LVCFMT_LEFT,80);

	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CStuTran::OnBtnok() 
{
	// TODO: Add your control notification handler code here
	UpdateData();
	if(m_name==""||m_num == ""){
		AfxMessageBox("请输入学生名字和学号");
		m_ctlNum.SetFocus();
		if(m_num!="")
			m_ctlName.SetFocus();
		return;
	}
	if(m_fromGrade==""||m_fromSpecialty==""||m_fromTinstitute==""){
		AfxMessageBox("学生资料不完整,请输入");
		return;
	}
	if(m_toGrade==""||m_toInstitute==""||m_tospecialty==""||m_tranTime==""){
		AfxMessageBox("学生新资料不完整,请输入");
		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()){
		AfxMessageBox("无此学生");
		m_pStu->Close();
		delete m_pStu;
		m_ctlNum.SetFocus();
		return;
	}
	m_pStu->Edit();
	m_pStu->m_institute = m_toInstitute;
	m_pStu->m_specialty = m_tospecialty;
	m_pStu->m_grade = m_toGrade;
	m_pStu->Update();
	m_pStu->Close();
	delete m_pStu;
	
	CString s="";
	m_pCourse = new CCourse();
	if(!m_pCourse->IsOpen())
		m_pCourse->Open();
	m_pCourse->m_strFilter.Format("institute='%s' and specialty='%s'",m_toInstitute,m_tospecialty);
	m_pCourse->Requery();
	while (!m_pCourse->IsEOF())
	{
		s+=m_pCourse->m_couID + " ";
		m_pCourse->MoveNext();
	}
	m_pCourse->Close();
	delete m_pCourse;

	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->AddNew();
	else
		m_pStuCourse->Edit();
	m_pStuCourse->m_ID = m_num;
	m_pStuCourse->m_stuNum = m_num;
	m_pStuCourse->m_courseIDs = s;
	m_pStuCourse->Update();
	m_pStuCourse->Close();
	delete m_pStuCourse;

	m_pTranLog = new CStuTranLog();
	if(!m_pTranLog->IsOpen())
		m_pTranLog->Open();
	m_pTranLog->m_strFilter.Format("tranNum='%s'",m_num);
	m_pTranLog->Requery();
	if(m_pTranLog->IsEOF())
		m_pTranLog->AddNew();
	else
		m_pTranLog->Edit();
	m_pTranLog->m_tranId = m_num;
	m_pTranLog->m_tranNum = m_num;
	m_pTranLog->m_tranName = m_name;
	m_pTranLog->m_oldInstitute = m_fromTinstitute;
	m_pTranLog->m_oldSpecialty = m_fromSpecialty;
	m_pTranLog->m_oldGrade = m_fromGrade;
	m_pTranLog->m_newInstitute = m_toInstitute;
	m_pTranLog->m_newSpecialty = m_tospecialty;
	m_pTranLog->m_newGrade = m_toGrade;
	m_pTranLog->m_tranDate = m_tranTime;
	m_pTranLog->Update();
	m_pTranLog->Close();
	delete m_pTranLog;

	AfxMessageBox("操作完成");

	int i=m_logList.GetItemCount();
	m_logList.InsertItem(i,m_num);
	m_logList.SetItemText(i,1,m_name);
	m_logList.SetItemText(i,2,m_fromTinstitute);
	m_logList.SetItemText(i,3,m_fromSpecialty);
	m_logList.SetItemText(i,4,m_fromGrade);
	m_logList.SetItemText(i,5,m_toInstitute);
	m_logList.SetItemText(i,6,m_tospecialty);
	m_logList.SetItemText(i,7,m_toGrade);
	m_logList.SetItemText(i,8,m_tranTime);

	OnBtnclear();

}

void CStuTran::OnBtnclear() 
{
	// TODO: Add your control notification handler code here
	m_fromGrade = "";
	m_fromSpecialty = "";
	m_fromTinstitute = "";
	m_toGrade = "";
	m_toInstitute = "";
	m_tospecialty = "";
	m_tranTime = "";
	m_num = "";
	m_name = "";
	m_ctlNum.SetFocus();

	UpdateData(false);
	
}

void CStuTran::OnBtnauto() 
{
	// TODO: Add your control notification handler code here
	UpdateData();
	if(m_num == ""){
		AfxMessageBox("请输入学生学号");
		m_ctlNum.SetFocus();		
		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();
		AfxMessageBox("无此学生");
		m_ctlNum.SetFocus();
	}
	else
	{
		m_name = m_pStu->m_stuName;
		m_fromGrade = m_pStu->m_grade;
		m_fromSpecialty = m_pStu->m_specialty;
		m_fromTinstitute = m_pStu->m_institute;
		m_pStu->Close();
		m_ctlToInstitute.SetFocus();
		UpdateData(false);
	}
	delete m_pStu;
	
}

void CStuTran::setTranLog()
{
	m_logList.DeleteAllItems();
	m_pTranLog = new CStuTranLog();
	if(!m_pTranLog->IsOpen())
		m_pTranLog->Open();
	int i=0;
	while (!m_pTranLog->IsEOF())
	{
		m_logList.InsertItem(i,m_pTranLog->m_tranNum);
		m_logList.SetItemText(i,1,m_pTranLog->m_tranName);
		m_logList.SetItemText(i,2,m_pTranLog->m_oldInstitute);
		m_logList.SetItemText(i,3,m_pTranLog->m_oldSpecialty);
		m_logList.SetItemText(i,4,m_pTranLog->m_oldGrade);
		m_logList.SetItemText(i,5,m_pTranLog->m_newInstitute);
		m_logList.SetItemText(i,6,m_pTranLog->m_newSpecialty);
		m_logList.SetItemText(i,7,m_pTranLog->m_newGrade);
		m_logList.SetItemText(i,8,m_pTranLog->m_tranDate);

		i++;
		m_pTranLog->MoveNext();
	}
	m_pTranLog->Close();
	delete m_pTranLog;
}

void CStuTran::OnShowWindow(BOOL bShow, UINT nStatus) 
{
	CDialog::OnShowWindow(bShow, nStatus);
	
	// TODO: Add your message handler code here
	setTranLog();
}

⌨️ 快捷键说明

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