📄 coursectrl.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 + -