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

📄 examctrl.cpp

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

#include "stdafx.h"
#include "EduAdministration.h"
#include "ExamCtrl.h"

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

/////////////////////////////////////////////////////////////////////////////
// CExamCtrl dialog


CExamCtrl::CExamCtrl(CWnd* pParent /*=NULL*/)
	: CDialog(CExamCtrl::IDD, pParent)
{
	//{{AFX_DATA_INIT(CExamCtrl)
	m_couName = _T("");
	m_date = _T("");
	m_endTime = _T("");
	m_invigilate = _T("");
	m_place = _T("");
	m_startTime = _T("");
	m_visitName = _T("");
	m_grade = _T("");
	//}}AFX_DATA_INIT
}


void CExamCtrl::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CExamCtrl)
	DDX_Control(pDX, IDC_EDTGRADE, m_ctlGrade);
	DDX_Control(pDX, IDC_LISTCOURSE, m_listCourse);
	DDX_Control(pDX, IDC_LISTEXAM, m_listExam);
	DDX_Control(pDX, IDC_EDTVISITNAME, m_ctlVisitName);
	DDX_Control(pDX, IDC_EDTSTARTTIME, m_ctlStartTime);
	DDX_Control(pDX, IDC_EDTPLACE, m_ctlPlace);
	DDX_Control(pDX, IDC_EDTINVIGILATE, m_ctlInvigilate);
	DDX_Control(pDX, IDC_EDTENDTIME, m_ctlEndTime);
	DDX_Control(pDX, IDC_EDTDATE, m_ctlDate);
	DDX_Control(pDX, IDC_BTNNEW, m_btnNew);
	DDX_Control(pDX, IDC_BTNEDIT, m_btnEdit);
	DDX_Control(pDX, IDC_BTNDELETE, m_btnDelete);
	DDX_Text(pDX, IDC_EDTCOUNAME, m_couName);
	DDX_Text(pDX, IDC_EDTDATE, m_date);
	DDX_Text(pDX, IDC_EDTENDTIME, m_endTime);
	DDX_Text(pDX, IDC_EDTINVIGILATE, m_invigilate);
	DDX_Text(pDX, IDC_EDTPLACE, m_place);
	DDX_Text(pDX, IDC_EDTSTARTTIME, m_startTime);
	DDX_Text(pDX, IDC_EDTVISITNAME, m_visitName);
	DDX_Text(pDX, IDC_EDTGRADE, m_grade);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CExamCtrl, CDialog)
	//{{AFX_MSG_MAP(CExamCtrl)
	ON_NOTIFY(NM_CLICK, IDC_LISTCOURSE, OnClickListcourse)
	ON_WM_SHOWWINDOW()
	ON_BN_CLICKED(IDC_BTNNEW, OnBtnnew)
	ON_NOTIFY(NM_CLICK, IDC_LISTEXAM, OnClickListexam)
	ON_BN_CLICKED(IDC_BTNEDIT, OnBtnedit)
	ON_BN_CLICKED(IDC_BTNDELETE, OnBtndelete)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CExamCtrl message handlers

BOOL CExamCtrl::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	m_btnDelete.SetIcon(IDI_ICONDELETE);
	m_btnNew.SetIcon(IDI_ICONNEW);
	m_btnEdit.SetIcon(IDI_ICONEDIT);

	m_bAddMode = false;
	m_bEditMode = false;

	m_listCourse.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
	m_listCourse.InsertColumn(0,"课程代码",LVCFMT_LEFT,80);
	m_listCourse.InsertColumn(1,"课程名称",LVCFMT_LEFT,150);
	m_listCourse.InsertColumn(2,"学院",LVCFMT_LEFT,100);
	m_listCourse.InsertColumn(3,"专业",LVCFMT_LEFT,100);
	m_listCourse.InsertColumn(4,"类型",LVCFMT_LEFT,80);
	m_listCourse.InsertColumn(5,"学时",LVCFMT_LEFT,80);
	m_listCourse.InsertColumn(6,"教师",LVCFMT_LEFT,80);

	m_listExam.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
	m_listExam.InsertColumn(0,"考试名",LVCFMT_LEFT,100);
	m_listExam.InsertColumn(1,"考试日期",LVCFMT_LEFT,80);
	m_listExam.InsertColumn(2,"考试开始时间",LVCFMT_LEFT,100);
	m_listExam.InsertColumn(3,"考试结束时间",LVCFMT_LEFT,100);
	m_listExam.InsertColumn(4,"考试地点",LVCFMT_LEFT,80);
	m_listExam.InsertColumn(5,"监考人",LVCFMT_LEFT,80);
	m_listExam.InsertColumn(6,"巡考人",LVCFMT_LEFT,80);

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

void CExamCtrl::setCourseList()
{
	m_listCourse.DeleteAllItems();
	m_pCourse = new CCourse();
	if(!m_pCourse->IsOpen())
		m_pCourse->Open();
	int i=0;
	while (!m_pCourse->IsEOF())
	{
		m_listCourse.InsertItem(i,m_pCourse->m_couID);
		m_listCourse.SetItemText(i,1,m_pCourse->m_couName);
		m_listCourse.SetItemText(i,2,m_pCourse->m_institute);
		m_listCourse.SetItemText(i,3,m_pCourse->m_specialty);
		m_listCourse.SetItemText(i,4,m_pCourse->m_couType);
		m_listCourse.SetItemText(i,5,m_pCourse->m_couHour);
		m_listCourse.SetItemText(i,6,m_pCourse->m_couTea);

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

void CExamCtrl::OnClickListcourse(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	if(!m_bAddMode&&!m_bEditMode)
		return;
	UpdateData();
	char s[20];
	m_listCourse.GetItemText(m_listCourse.GetSelectionMark(),0,s,19);
	if(s=="")
		return;
	m_pCourse = new CCourse();
	if(!m_pCourse->IsOpen())
		m_pCourse->Open();
	m_pCourse->m_strFilter.Format("couID='%s'",s);
	m_pCourse->Requery();
	if(m_pCourse->IsEOF()){
		m_pCourse->Close();
		delete m_pCourse;
		return;
	}
	m_couName = m_pCourse->m_couName;
	UpdateData(false);
	m_pCourse->Close();
	delete m_pCourse;

	*pResult = 0;
}

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

void CExamCtrl::setExamList()
{
	m_listExam.DeleteAllItems();
	m_pExam = new CExam();
	m_pCourse = new CCourse();
	if(!m_pExam->IsOpen())
		m_pExam->Open();
	int i = 0;
	while (!m_pExam->IsEOF())
	{
		m_listExam.InsertItem(i,m_pExam->m_examID);
		m_listExam.SetItemText(i,1,m_pExam->m_examDate);
		m_listExam.SetItemText(i,2,m_pExam->m_examStartTime);
		m_listExam.SetItemText(i,3,m_pExam->m_examEndTime);
		m_listExam.SetItemText(i,4,m_pExam->m_examplace);
		m_listExam.SetItemText(i,5,m_pExam->m_invigilate);
		m_listExam.SetItemText(i,6,m_pExam->m_visitName);

		i++;
		m_pExam->MoveNext();
	}
	m_pExam->Close();
	delete m_pExam;
	delete m_pCourse;
}

void CExamCtrl::setFieldNull()
{
	m_couName = "";
	m_date = "";
	m_endTime = "";
	m_grade = "";
	m_invigilate = "";
	m_place = "";
	m_startTime = "";
	m_visitName = "";

	UpdateData(false);
}

void CExamCtrl::setFieldReadWrite()
{
	m_ctlDate.SetReadOnly(false);
	m_ctlEndTime.SetReadOnly(false);
	m_ctlGrade.SetReadOnly(false);
	m_ctlInvigilate.SetReadOnly(false);
	m_ctlPlace.SetReadOnly(false);
	m_ctlStartTime.SetReadOnly(false);
	m_ctlVisitName.SetReadOnly(false);

	m_ctlGrade.SetFocus();
}

void CExamCtrl::setFieldReadOnly()
{
	m_ctlDate.SetReadOnly(true);
	m_ctlEndTime.SetReadOnly(true);
	m_ctlGrade.SetReadOnly(true);
	m_ctlInvigilate.SetReadOnly(true);
	m_ctlPlace.SetReadOnly(true);
	m_ctlStartTime.SetReadOnly(true);
	m_ctlVisitName.SetReadOnly(true);
}

void CExamCtrl::OnBtnnew() 
{
	// TODO: Add your control notification handler code here
	if(!m_bAddMode)
	{
		setFieldNull();
		setFieldReadWrite();
		m_btnEdit.EnableWindow(false);
		m_btnDelete.EnableWindow(false);
		m_btnNew.SetIcon(IDI_ICONSAVE);
		m_bAddMode = true;
	}
	else
	{
		UpdateData();
		if(m_couName == ""||m_date==""||m_endTime==""||m_grade==""||
			m_invigilate==""||m_place==""||m_startTime==""||m_visitName==""){
			AfxMessageBox("信息不完整,请输入");
			return;
		}
		CString s;
		s=m_grade+" "+m_couName;
		m_pExam = new CExam();
		if(!m_pExam->IsOpen())
			m_pExam->Open();
		m_pExam->m_strFilter.Format("examID='%s'",s);
		m_pExam->Requery();
		if(!m_pExam->IsEOF())
		{
			m_pExam->Close();
			delete m_pExam;
			AfxMessageBox("此考试已存在");
			return;
		}
		m_pCourse = new CCourse();
		if(!m_pCourse->IsOpen())
			m_pCourse->Open();
		m_pCourse->m_strFilter.Format("couName='%s'",m_couName);
		m_pCourse->Requery();
		if(m_pCourse->IsEOF()){
			m_pCourse->Close();
			delete m_pCourse;
			m_pExam->Close();
			delete m_pExam;
			setFieldNull();
			setFieldReadOnly();

			m_bAddMode = false;
			m_btnNew.SetIcon(IDI_ICONNEW);
			m_btnEdit.EnableWindow(true);
			m_btnDelete.EnableWindow(true);
			return;
		}
		m_pExam->AddNew();
		m_pExam->m_examID = s;
		m_pExam->m_couID = m_pCourse->m_couID;
		m_pExam->m_examDate = m_date;
		m_pExam->m_examplace = m_place;
		m_pExam->m_examStartTime = m_startTime;
		m_pExam->m_examEndTime = m_endTime;
		m_pExam->m_invigilate = m_invigilate;
		m_pExam->m_visitName = m_visitName;
		m_pExam->Update();
		m_pExam->Close();
		delete m_pExam;
		m_pCourse->Close();
		delete m_pCourse;

		int i = m_listExam.GetItemCount();
		m_listExam.InsertItem(i,s);
		m_listExam.SetItemText(i,1,m_date);
		m_listExam.SetItemText(i,2,m_startTime);
		m_listExam.SetItemText(i,3,m_endTime);
		m_listExam.SetItemText(i,4,m_place);
		m_listExam.SetItemText(i,5,m_invigilate);
		m_listExam.SetItemText(i,6,m_visitName);

		setFieldNull();
		setFieldReadOnly();

		m_bAddMode = false;
		m_btnNew.SetIcon(IDI_ICONNEW);
		m_btnEdit.EnableWindow(true);
		m_btnDelete.EnableWindow(true);
		
	}
	
}

void CExamCtrl::OnClickListexam(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	if(m_bAddMode)
	{
		if(AfxMessageBox("取消新增?",MB_YESNO)==IDYES){
			setFieldReadOnly();
			m_btnDelete.EnableWindow(true);
			m_btnEdit.EnableWindow(true);
			m_btnNew.SetIcon(IDI_ICONNEW);
			m_bAddMode = false;
		}
		else
			return;
	}

	char s[20];
	m_listExam.GetItemText(m_listExam.GetSelectionMark(),0,s,19);
	if(s=="")
		return;
	m_pExam = new CExam();
	if(!m_pExam->IsOpen())
		m_pExam->Open();
	m_pExam->m_strFilter.Format("examID='%s'",s);
	m_pExam->Requery();
	if(m_pExam->IsEOF()){
		m_pExam->Close();
		delete m_pExam;
		return;
	}
	m_pCourse = new CCourse();
	if(!m_pCourse->IsOpen())
		m_pCourse->Open();
	m_pCourse->m_strFilter.Format("couID='%s'",m_pExam->m_couID);
	m_pCourse->Requery();
	if(m_pCourse->IsEOF()){
		m_pExam->Delete();
		m_pExam->Close();
		delete m_pExam;
		m_pCourse->Close();
		delete m_pCourse;
		return;
	}
	CString st;
	char *strg;
	
	st=m_pExam->m_examID;
	int i = st.Find(" ");
	strg = st.GetBuffer(i);
	m_grade = "";
	for(int j=0;j<i;j++){
		m_grade+=strg[j];
	}
	m_couName = m_pCourse->m_couName;
	m_date = m_pExam->m_examDate;
	m_endTime = m_pExam->m_examEndTime;
	m_invigilate = m_pExam->m_invigilate;
	m_place = m_pExam->m_examplace;
	m_startTime = m_pExam->m_examStartTime;
	m_visitName = m_pExam->m_visitName;
	UpdateData(false);

	m_pExam->Close();
	m_pCourse->Close();
	delete m_pCourse;
	delete m_pExam;
	*pResult = 0;
}

void CExamCtrl::OnBtnedit() 
{
	// TODO: Add your control notification handler code here
	UpdateData();
	if(!m_bEditMode){
		if(m_couName==""||m_grade=="")
			return;
		setFieldReadWrite();
		m_btnNew.EnableWindow(false);
		m_btnDelete.EnableWindow(false);
		m_btnEdit.SetIcon(IDI_ICONSAVE);
		m_ctlGrade.SetReadOnly(true);
		m_bEditMode = true;
		}
	else
	{
		if(m_couName==""||m_grade=="")
			return;
		CString s;
		s=m_grade + " " + m_couName;
		m_pExam = new CExam();
		if(!m_pExam->IsOpen())
			m_pExam->Open();
		m_pExam->m_strFilter.Format("examID='%s'",s);
		m_pExam->Requery();
		if(m_pExam->IsEOF()){
			m_pExam->Close();
			delete m_pExam;
			setFieldReadOnly();
			m_btnNew.EnableWindow(true);
			m_btnDelete.EnableWindow(true);
			m_btnEdit.SetIcon(IDI_ICONEDIT);
			m_bEditMode = false;
			return;
		}
		m_pExam->Edit();
		m_pExam->m_examDate = m_date;
		m_pExam->m_examStartTime = m_startTime;
		m_pExam->m_examEndTime = m_endTime;
		m_pExam->m_examplace = m_place;
		m_pExam->m_invigilate = m_invigilate;
		m_pExam->m_visitName = m_visitName;
		m_pExam->Update();
		m_pExam->Close();
		delete m_pExam;

		setFieldReadOnly();
		m_btnNew.EnableWindow(true);
		m_btnDelete.EnableWindow(true);
		m_btnEdit.SetIcon(IDI_ICONEDIT);
		m_bEditMode = false;
		setExamList();
	}
	
}

void CExamCtrl::OnBtndelete() 
{
	// TODO: Add your control notification handler code here
	UpdateData();
	if(m_couName==""||m_grade=="")
		return;
	if(AfxMessageBox("确定要删除吗?",MB_YESNO)==IDNO)
		return;
	CString s;
	s=m_grade+" "+m_couName;
	m_pExam = new CExam();
	if(!m_pExam->IsOpen())
		m_pExam->Open();
	m_pExam->m_strFilter.Format("examID='%s'",s);
	m_pExam->Requery();
	if(m_pExam->IsEOF()){
		m_pExam->Close();
		delete m_pExam;
	}
	m_pExam->Delete();
	m_pExam->Close();
	delete m_pExam;

	setFieldNull();
	setExamList();
	
}

⌨️ 快捷键说明

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