📄 mission.cpp
字号:
// Mission.cpp: implementation of the CMission class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "Lesson.h"
#include "Mission.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
IMPLEMENT_SERIAL(CMission,CObject,1)//支持序列化
CMission::CMission()
{
m_Grade=0;
m_Class=0;
m_Num=0;
m_Name.Empty();
m_Subject.Empty();
m_Info.InitInstance();
m_pTeacher=NULL;
for(int i=0;i<WEEK;i++)
for(int j=0;j<STANZA;j++)
m_Sit[i][j]=0;
}
CMission::~CMission()
{
}
BOOL CMission::Copy(const CMission *Mission)
{
if(Mission==NULL)return FALSE;
m_Name=Mission->m_Name;
m_Grade=Mission->m_Grade;
m_Class=Mission->m_Class;
m_Num=Mission->m_Num;
m_Subject=Mission->m_Subject;
m_pTeacher=Mission->m_pTeacher;
m_Request.RemoveAll();
m_Request.Append(Mission->m_Request);
for(int i=0;i<WEEK;i++)
for(int j=0;j<STANZA;j++)
m_Sit[i][j]=Mission->m_Sit[i][j];
return TRUE;
}
void CMission::INFO::InitInstance()
{
int i;
for(i=0;i<STANZA;i++)
m_StanzaLesson[i]=0;
for(i=0;i<WEEK;i++)
m_WeekLesson[i]=0;
m_Num=0;
}
int CMission::Compute()
{
m_Info.InitInstance();
for(int i=0;i<WEEK;i++)
for(int j=0;j<STANZA;j++)
if(m_Sit[i][j])
{
m_Info.m_WeekLesson[i]++;
m_Info.m_StanzaLesson[j]++;
m_Info.m_Num++;
}
return m_Info.m_Num;
}
void CMission::Serialize(CArchive &ar)
{
if (ar.IsStoring())
{
// TODO: add storing code here
ar<<m_Name<<m_Grade<<m_Class<<m_Num<<m_Subject<<m_pTeacher;
for(int i=0;i<WEEK;i++)
for(int j=0;j<STANZA;j++)
ar<<m_Sit[i][j];
m_Info.Serialize(ar);
m_Request.Serialize(ar);
}
else
{
// TODO: add loading code here
ar>>m_Name>>m_Grade>>m_Class>>m_Num>>m_Subject>>m_pTeacher;
for(int i=0;i<WEEK;i++)
for(int j=0;j<STANZA;j++)
ar>>m_Sit[i][j];
m_Info.Serialize(ar);
m_Request.Serialize(ar);
}
}
void CMission::UpdateList(CListCtrl *pList)
{
int nIndex=pList->GetItemCount();
LV_ITEM item;
char constr[200];
CString str;
item.mask=LVIF_TEXT;
strcpy(constr,m_Subject);
item.pszText=constr;
pList->InsertItem(nIndex,constr);
str.Format("%d年级",m_Grade);
strcpy(constr,str);
item.pszText=constr;
pList->SetItemText(nIndex,1,constr);
str.Format("%d班",m_Class);
strcpy(constr,str);
item.pszText=constr;
pList->SetItemText(nIndex,2,constr);
str.Format("%d",m_Num);
strcpy(constr,str);
item.pszText=constr;
pList->SetItemText(nIndex,3,constr);
str.Empty();
for(int i=0;i<m_Request.GetSize();i++)
{
str+="|";
str+=m_Request.GetAt(i);
}
strcpy(constr,str);
item.pszText=constr;
pList->SetItemText(nIndex,4,constr);
}
BOOL CMission::Isable()
{
CString str;int Stanza,Num,Week;
for(int 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);
int nIndex=0;
for(int w=0;w<WEEK;w++)
{
if(m_Sit[w][Stanza-1])
nIndex++;
}
if(nIndex>Num)
return FALSE;
}
if(!(str.Left(2)).CompareNoCase("星"))
{
str.Delete(0,4);
Week=atoi(str);
str.Delete(0,5);
Num=atoi(str);
int nIndex=0;
for(int s=0;s<STANZA;s++)
{
if(m_Sit[Week-1][s]==TRUE)
nIndex++;
}
if(nIndex>Num)
return FALSE;
}
if(!str.Left(2).CompareNoCase("固"))
{
str.Delete(0,6);
Week=atoi(str);
str.Delete(0,3);
Stanza=atoi(str);
if(m_Sit[Week-1][Stanza-1]==FALSE)
return FALSE;
}
}
return TRUE;
}
void CMission::INFO::Serialize(CArchive &ar)
{
if (ar.IsStoring())
{
ar<<m_Num;
for(int i=0;i<WEEK;i++)
ar<<m_WeekLesson[i];
}
else
{
ar>>m_Num;
for(int i=0;i<WEEK;i++)
ar>>m_WeekLesson[i];
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -