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