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

📄 coursectrl.cpp

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

#include "stdafx.h"
#include "EduAdministration.h"
#include "CourseCtrl.h"

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

/////////////////////////////////////////////////////////////////////////////
// CCourseCtrl dialog


CCourseCtrl::CCourseCtrl(CWnd* pParent /*=NULL*/)
	: CDialog(CCourseCtrl::IDD, pParent)
{
	//{{AFX_DATA_INIT(CCourseCtrl)
	m_type = _T("");
	m_id = _T("");
	m_hour = _T("");
	m_institute = _T("");
	m_name = _T("");
	m_specialty = _T("");
	m_teacher = _T("");
	//}}AFX_DATA_INIT
}


void CCourseCtrl::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CCourseCtrl)
	DDX_Control(pDX, IDC_LISTTEA, m_listTeacher);
	DDX_Control(pDX, IDC_LISTCOURSE, m_listCourse);
	DDX_Control(pDX, IDC_EDTSPECIALTY, m_ctlSpecialty);
	DDX_Control(pDX, IDC_EDTNAME, m_ctlName);
	DDX_Control(pDX, IDC_EDTINSTITUTE, m_ctlInstitute);
	DDX_Control(pDX, IDC_EDTHOUR, m_ctlHour);
	DDX_Control(pDX, IDC_EDTCOUID, m_ctlID);
	DDX_Control(pDX, IDC_BTNNEW, m_btnNew);
	DDX_Control(pDX, IDC_BTNEDIT, m_btnEdit);
	DDX_Control(pDX, IDC_BTNDELETE, m_btnDelete);
	DDX_CBString(pDX, IDC_COMBOTYPE, m_type);
	DDX_Text(pDX, IDC_EDTCOUID, m_id);
	DDX_Text(pDX, IDC_EDTHOUR, m_hour);
	DDX_Text(pDX, IDC_EDTINSTITUTE, m_institute);
	DDX_Text(pDX, IDC_EDTNAME, m_name);
	DDX_Text(pDX, IDC_EDTSPECIALTY, m_specialty);
	DDX_Text(pDX, IDC_EDTTEACHER, m_teacher);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CCourseCtrl, CDialog)
	//{{AFX_MSG_MAP(CCourseCtrl)
	ON_WM_SHOWWINDOW()
	ON_NOTIFY(NM_CLICK, IDC_LISTTEA, OnClickListtea)
	ON_BN_CLICKED(IDC_BTNNEW, OnBtnnew)
	ON_NOTIFY(NM_CLICK, IDC_LISTCOURSE, OnClickListcourse)
	ON_BN_CLICKED(IDC_BTNEDIT, OnBtnedit)
	ON_BN_CLICKED(IDC_BTNDELETE, OnBtndelete)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CCourseCtrl message handlers

BOOL CCourseCtrl::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	m_listTeacher.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
	m_listTeacher.InsertColumn(0,"教师代码",LVCFMT_LEFT,80);
	m_listTeacher.InsertColumn(1,"教师姓名",LVCFMT_LEFT,80);
	m_listTeacher.InsertColumn(2,"教师职称",LVCFMT_LEFT,80);

	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);

	setCourseList();

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

void CCourseCtrl::setTeaList()
{
	m_listTeacher.DeleteAllItems();
	m_pTeacher = new CTeachers();
	if(!m_pTeacher->IsOpen())
		m_pTeacher->Open();
	int i=0;
	while (!m_pTeacher->IsEOF())
	{
		m_listTeacher.InsertItem(i,m_pTeacher->m_teaID);
		m_listTeacher.SetItemText(i,1,m_pTeacher->m_teaName);
		m_listTeacher.SetItemText(i,2,m_pTeacher->m_teaTitle);
		
		i++;
		m_pTeacher->MoveNext();
	}
	m_pTeacher->Close();
	delete m_pTeacher;

}

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

void CCourseCtrl::OnClickListtea(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	UpdateData();
	if(!m_bAddMode&&!m_bEditMode)
		return;
	char s[20];
	m_listTeacher.GetItemText(m_listTeacher.GetSelectionMark(),0,s,19);
	if(s=="")
		return;
	m_pTeacher = new CTeachers();
	if(!m_pTeacher->IsOpen())
		m_pTeacher->Open();
	m_pTeacher->m_strFilter.Format("teaID='%s'",s);
	m_pTeacher->Requery();
	if(m_pTeacher->IsEOF()){
		m_pTeacher->Close();
		delete m_pTeacher;
		return;
	}
	m_teacher = m_pTeacher->m_teaName;
	UpdateData(false);
	m_pTeacher->Close();
	delete m_pTeacher;
	
	*pResult = 0;
}

void CCourseCtrl::OnBtnnew() 
{
	// TODO: Add your control notification handler code here
	if(!m_bAddMode)
	{
		setFieldNull();
		setFieldReadWrite();
		m_btnDelete.EnableWindow(false);
		m_btnEdit.EnableWindow(false);
		m_bAddMode = true;
	}
	else
	{
		UpdateData();
		if(m_id==""||m_name==""||m_institute==""||m_specialty==""||m_teacher==""){
			AfxMessageBox("信息不完整,请输入");
			return;
		}
		m_pCourse = new CCourse();
		if(!m_pCourse->IsOpen())
			m_pCourse->Open();
		m_pCourse->m_strFilter.Format("couID='%s'",m_id);
		m_pCourse->Requery();
		if(!m_pCourse->IsEOF())
		{
			AfxMessageBox("此课程已存在");
			m_pCourse->Close();
			delete m_pCourse;
			m_ctlID.SetFocus();
			return;
		}
		m_pCourse->AddNew();
		m_pCourse->m_couID = m_id;
		m_pCourse->m_couName = m_name;
		m_pCourse->m_couType = m_type;
		m_pCourse->m_institute = m_institute;
		m_pCourse->m_specialty = m_specialty;
		m_pCourse->m_couTea = m_teacher;
		m_pCourse->m_couHour = m_hour;
		m_pCourse->Update();
		m_pCourse->Close();
		delete m_pCourse;
		
		CString sc;
		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'",m_institute,m_specialty);
		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())
			{
				sc+=m_pStuCourse->m_courseIDs+" "+m_id;
				m_pStuCourse->Edit();
				m_pStuCourse->m_courseIDs = sc;
				m_pStuCourse->Update();
			}
			m_pStu->MoveNext();
		}
		m_pStuCourse->Close();
		m_pStu->Close();
		delete m_pStu;
		delete m_pStuCourse;

		int i = m_listCourse.GetItemCount();
		m_listCourse.InsertItem(i,m_id);
		m_listCourse.SetItemText(i,1,m_name);
		m_listCourse.SetItemText(i,2,m_institute);
		m_listCourse.SetItemText(i,3,m_specialty);
		m_listCourse.SetItemText(i,4,m_type);
		m_listCourse.SetItemText(i,5,m_hour);
		m_listCourse.SetItemText(i,6,m_teacher);

		setFieldNull();
		setFieldReadOnly();

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

void CCourseCtrl::setFieldNull()
{
	m_name = "";
	m_id = "";
	m_institute = "";
	m_specialty = "";
	m_hour = "";
	m_teacher = "";
	m_type = "";

	UpdateData(false);
}

void CCourseCtrl::setFieldReadWrite()
{
	m_ctlID.SetReadOnly(false);
	m_ctlName.SetReadOnly(false);
	m_ctlHour.SetReadOnly(false);
	m_ctlInstitute.SetReadOnly(false);
	m_ctlSpecialty.SetReadOnly(false);
	m_ctlID.SetFocus();
}

void CCourseCtrl::setFieldReadOnly()
{
	m_ctlHour.SetReadOnly(true);
	m_ctlInstitute.SetReadOnly(true);
	m_ctlSpecialty.SetReadOnly(true);
	m_ctlID.SetReadOnly(true);
	m_ctlName.SetReadOnly(true);
}

void CCourseCtrl::setCourseList()
{
	int i = 0;
	m_listCourse.DeleteAllItems();
	m_pCourse = new CCourse();
	if(!m_pCourse->IsOpen())
		m_pCourse->Open();
	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);

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

void CCourseCtrl::OnClickListcourse(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	if(m_bAddMode){
		if(AfxMessageBox("取消新增?",MB_YESNO)==IDYES){
			setFieldNull();
			setFieldReadOnly();

			m_btnEdit.EnableWindow(true);
			m_btnDelete.EnableWindow(true);
			m_bAddMode = false;
		}
		else
			return;
	}
	if(m_bEditMode){
		if(AfxMessageBox("取消修改?",MB_YESNO)==IDYES){
		setFieldReadOnly();
		m_bEditMode = false;
		m_btnNew.EnableWindow(true);
		m_btnDelete.EnableWindow(true);
		}
		else
			return;
	}

	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_id = s;
	m_name = m_pCourse->m_couName;
	m_institute = m_pCourse->m_institute;
	m_specialty = m_pCourse->m_specialty;
	m_type = m_pCourse->m_couType;
	m_hour = m_pCourse->m_couHour;
	m_teacher = m_pCourse->m_couTea;

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

void CCourseCtrl::OnBtnedit() 
{
	// TODO: Add your control notification handler code here
	UpdateData();
	if(!m_bEditMode)
	{
		if(m_id=="")
			return;
		setFieldReadWrite();
		m_ctlID.SetReadOnly(true);
		m_ctlInstitute.SetReadOnly(true);
		m_ctlSpecialty.SetReadOnly(true);
		m_btnDelete.EnableWindow(false);
		m_btnNew.EnableWindow(false);
		m_ctlName.SetFocus();
		m_bEditMode = true;
	}
	else
	{
		if(m_id==""||m_name==""||m_institute==""||m_specialty==""||m_teacher==""){
			AfxMessageBox("信息不完整,请输入");
			return;
		}
		m_pCourse = new CCourse();
		if(!m_pCourse->IsOpen())
			m_pCourse->Open();
		m_pCourse->m_strFilter.Format("couID='%s'",m_id);
		m_pCourse->Requery();
		if(m_pCourse->IsEOF()){
			m_pCourse->Close();
			delete m_pCourse;
			setFieldReadOnly();
			setFieldNull();
			m_btnDelete.EnableWindow(true);
			m_btnNew.EnableWindow(true);
			m_bEditMode = false;
			return;
		}
		m_pCourse->Edit();
		m_pCourse->m_couName = m_name;
		m_pCourse->m_couHour = m_hour;
		m_pCourse->m_couType = m_type;
		m_pCourse->m_couTea = m_teacher;
		m_pCourse->Update();
		m_pCourse->Close();
		delete m_pCourse;

		setFieldReadOnly();
		setCourseList();
		m_bEditMode = false;
		m_btnNew.EnableWindow(true);
		m_btnDelete.EnableWindow(true);
	}
	
}

void CCourseCtrl::OnBtndelete() 
{
	// TODO: Add your control notification handler code here
	UpdateData();
	if(m_id=="")
		return;
	if(AfxMessageBox("要删除此课程吗?",MB_YESNO)==IDNO)
		return;
	m_pCourse = new CCourse();
	if(!m_pCourse->IsOpen())
		m_pCourse->Open();
	m_pCourse->m_strFilter.Format("couID='%s'",m_id);
	m_pCourse->Requery();
	if(m_pCourse->IsEOF()){
		m_pCourse->Close();
		delete m_pCourse;
		return;
	}
	m_pCourse->Delete();
	m_pCourse->Close();
	delete m_pCourse;
	
	setFieldNull();
	setCourseList();
	
}

⌨️ 快捷键说明

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