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

📄 teacher.cpp

📁 为学校教导用的排课系统。
💻 CPP
字号:
// Teacher.cpp: implementation of the CTeacher class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "Lesson.h"
#include "Teacher.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
#include "Mission.h"
#define MISS(i) ((CMission *)m_MissionArray.GetAt(i))
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
IMPLEMENT_SERIAL(CTeacher,CObject,1)//支持序列化

CTeacher::CTeacher()
{

}

CTeacher::~CTeacher()
{
	for(int i=m_MissionArray.GetSize()-1;i>=0;i--)
		delete m_MissionArray.GetAt(i);
	m_MissionArray.RemoveAll();
}

void CTeacher::Serialize(CArchive &ar)
{
	if (ar.IsStoring())
	{
		// TODO: add storing code here
		ar<<m_Name;
		m_Request.Serialize(ar);
		m_MissionArray.Serialize(ar);
	}
	else
	{
		// TODO: add loading code here
		ar>>m_Name;
		m_Request.Serialize(ar);
		m_MissionArray.Serialize(ar);
	}
}

int CTeacher::GetMissionIndex(CObject * Cob)
{
	int i=0;
	CMission * Miss;
	CMission * Mission=(CMission*)Cob;
	for(i=m_MissionArray.GetSize()-1;i>=0;i--)
	{
		Miss=(CMission*)m_MissionArray.GetAt(i);
		if(Miss->m_Grade==Mission->m_Grade&&Miss->m_Class==Mission->m_Class&&!Miss->m_Subject.CompareNoCase(Mission->m_Subject))
			return i;
	}
	return -1;
}

BOOL CTeacher::Isable()
{
	int TWeek[WEEK],TStanza[STANZA];
	for(int t=0;t<WEEK;t++)TWeek[t]=0;
	for(t=0;t<STANZA;t++)TStanza[t]=0;
	//以上为初始化数组
	for(int i=m_MissionArray.GetSize()-1;i>=0;i--)
	{
		for(int j=i-1;j>=0;j--)
		{
			for(int w=0;w<WEEK;w++)
				for(int s=0;s<STANZA;s++)
					if(MISS(i)->m_Sit[w][s]&MISS(j)->m_Sit[w][s])
						return FALSE;
		}
		//以下计算数组内容
		for(int w=0;w<WEEK;w++)
			TWeek[w]+=MISS(i)->m_Info.m_WeekLesson[w];
		for(int s=0;s<STANZA;s++)
			TStanza[s]+=MISS(i)->m_Info.m_StanzaLesson[s];
	}
	//以下对特殊要求与实际课相比较
	CString str;int Stanza=0,Week=0,Num=0;
	for(i=m_Request.GetSize()-1;i>=0;i--)
	{
		str=m_Request.GetAt(i);
		if(!(str.Left(2)).CompareNoCase("第"))
		{
			str.Delete(0,2);
			Stanza=atoi(str);
			str.Delete(0,7);
			Num=atoi(str);
			if(Num<TStanza[Stanza-1])return FALSE;
		}
		if(!(str.Left(2)).CompareNoCase("星"))
		{
			str.Delete(0,4);
			Week=atoi(str);
			str.Delete(0,5);
			Num=atoi(str);
			if(Num<TWeek[Week-1])return FALSE;
		}
	}
	return TRUE;
}

⌨️ 快捷键说明

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