www.gusucode.com > 大学排课系统,VC++实现,能实现根据教师及课程资源自动排 > 大学排课系统,VC++实现,能实现根据教师及课程资源自动排课/ARRANGE/AddTeachPlanDlg.cpp

    // AddTeachPlanDlg.cpp : implementation file
//

#include "stdafx.h"
#include "arrange.h"
#include "AddTeachPlanDlg.h"
#include "TeachPlanSet.h"
#include "CourseClassSet.h"
#include "TeacherSet.h"

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

/////////////////////////////////////////////////////////////////////////////
// CAddTeachPlanDlg dialog


CAddTeachPlanDlg::CAddTeachPlanDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CAddTeachPlanDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CAddTeachPlanDlg)
	m_ismedia = _T("");
	m_classesid = _T("");
	m_teacherid = _T("");
	m_classesnum = 0;
	m_courseid = _T("");
	m_coursename = _T("");
	m_credit = 0.0f;
	m_week = _T("");
	m_teachername = _T("");
	//}}AFX_DATA_INIT
}


void CAddTeachPlanDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CAddTeachPlanDlg)
	DDX_CBString(pDX, IDC_COMBO1, m_ismedia);
	DDX_Text(pDX, IDC_EDIT1, m_classesid);
	DDX_Text(pDX, IDC_EDIT10, m_teacherid);
	DDX_Text(pDX, IDC_EDIT2, m_classesnum);
	DDV_MinMaxInt(pDX, m_classesnum, 0, 8);
	DDX_Text(pDX, IDC_EDIT11, m_courseid);
	DDX_Text(pDX, IDC_EDIT9, m_coursename);
	DDX_Text(pDX, IDC_EDIT13, m_credit);
	DDX_Text(pDX, IDC_EDIT8, m_week);
	DDX_Text(pDX, IDC_EDIT12, m_teachername);
	DDX_Control(pDX,IDC_BUTTONRESET,m_reset);
	DDX_Control(pDX,IDOK,m_ok);
	DDX_Control(pDX,IDCANCEL,m_cancel);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CAddTeachPlanDlg, CDialog)
	//{{AFX_MSG_MAP(CAddTeachPlanDlg)
	ON_BN_CLICKED(IDC_BUTTONRESET, OnButtonreset)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CAddTeachPlanDlg message handlers

void CAddTeachPlanDlg::OnOK() 
{
	// TODO: Add extra validation here
	UpdateData(TRUE);
	CTeachPlanSet		m_pTPSet(&m_database);
	CCourseClassSet		m_pCCSet(&m_database);
	CTeacherSet			m_pTSet(&m_database);
	bool flag = true;
	CString strSQL;

	strSQL.Format("select * from  COURSE_CLASSES where classes_id = \'%s\'", m_classesid);
	m_pCCSet.Open(AFX_DB_USE_DEFAULT_TYPE, strSQL);
	if (m_pCCSet.GetRecordCount()==0)
	{
		AfxMessageBox("对不起, 此教学班号不存在,请先增加!",MB_OK|MB_ICONEXCLAMATION);
		flag = false;
		return;
	}
	m_pCCSet.MoveFirst();
	int classesnum = 0;
	while (!m_pCCSet.IsEOF())
	{
		if(m_pCCSet.m_classes_id == m_classesid)
			classesnum++;
		
			m_pCCSet.MoveNext();
			
	}

	if(m_classesnum !=	classesnum)
	{
		CString str;
		str.Format("此教学班号的班级数应为 %d.请重新输入!",classesnum);
		AfxMessageBox(str,MB_OK|MB_ICONEXCLAMATION);
		flag = false;
		return ;

	}

	strSQL.Format("select * from TEACHERS where teacher_id = \'%s\'", m_teacherid);
	m_pTSet.Open(AFX_DB_USE_DEFAULT_TYPE, strSQL);
	if (m_pTSet.GetRecordCount()==0)
	{
		AfxMessageBox("无此教师, 请先添加!",MB_OK|MB_ICONEXCLAMATION);
		flag = false;
		return ;
	}
	
	if(flag)
	{	
		m_pTPSet.Open();
		CString sMedia;
		int iMedia;
		GetDlgItemText(IDC_COMBO1, sMedia);
		if(sMedia == "是")
			iMedia = 1;
		else
			iMedia = 0;
		if(m_classesid == "" || m_classesnum ==0 || m_teacherid == "" || 
			m_teachername == "" || m_courseid =="" || m_coursename =="" ||
			m_credit == 0 || sMedia=="" ||  m_week =="")
			AfxMessageBox("The items cann't be empty!",MB_OK|MB_ICONEXCLAMATION);
		else
		{
		strSQL.Format("insert into TEACHPLAN (classes_id, classes_num, teacher_id, \
			teacher_name, course_id, course_name,credit, medium, course_week) values \
			(\'%s\',%d,\'%s\',\'%s\',\'%s\',\'%s\',%f, %d,\'%s\')",m_classesid,m_classesnum,
			m_teacherid, m_teachername, m_courseid, m_coursename, m_credit,
			iMedia, m_week);
		m_database.ExecuteSQL(strSQL);
		}
		OnButtonreset();
	}
	
	//CDialog::OnOK();
}

void CAddTeachPlanDlg::OnButtonreset() 
{
	// TODO: Add your control notification handler code here
	m_classesid.Empty();
	m_classesnum = 0;
	m_courseid.Empty();
	m_coursename.Empty();
	m_credit = 0;
	m_ismedia.Empty();
	m_teacherid.Empty();
	m_teachername.Empty();
	m_week.Empty();
	UpdateData(FALSE);
	
}

BOOL CAddTeachPlanDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	m_ok.LoadBitmaps(IDB_BUTTON,5, 5, 5, 5, 4 );
	m_reset.LoadBitmaps(IDB_BUTTON,5, 5, 5, 5, 4 );
	m_cancel.LoadBitmaps(IDB_BUTTON,5, 5, 5, 5, 4 );
	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}