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