#include<iostream>
#include<string>
#include"MeetingManage.h"
#include"UserManage.h"
using std::string;
using std::cin;
using std::cout;
using std::endl;
MeetingManage::MeetingManage() //实例创建时标志设为true,表示已经有一个实例化对象
{
instanceFlag=true;
}
MeetingManage* MeetingManage::getInstance() //返回指向实例化对象的指针
{
if(instanceFlag==false){
instance=new MeetingManage;
}
return instance;
}
MeetingManage::~MeetingManage() //析构函数 删除实例化对象,把标志设为false
{
delete instance;
instanceFlag=false;
}
bool MeetingManage::addMeeting( string sponsor, string participator, Date stime, Date etime, string title ) //添加会议
{
list<Meeting>::iterator it;
for(it=meetings.begin();it!=meetings.end();it++) //判断主题是否已经存在
if((*it).getTitle()==title)
return false;
UserManage* temp=UserManage::getInstance();
if(!(temp->findUserByName(participator))) //判断被邀请者是否存在
return false;
if(!Date::isValid(stime) || !Date::isValid(etime) || (stime>etime))
return false;
for(it=meetings.begin();it!=meetings.end();it++) //判断会议时间是否合理
if((*it).getSponsor()==sponsor || (*it).getParticipator()==participator)
if((stime<=(*it).getStartDate()&&etime>=(*it).getStartDate()) || (stime<=(*it).getEndDate()&&etime>=(*it).getEndDate()) || (stime>=(*it).getStartDate()&&etime<=(*it).getEndDate()))
return false;
Meeting newMeeting(sponsor,participator,stime,etime,title);
meetings.insert(meetings.end(),newMeeting);
return true;
}
bool MeetingManage::deleteMeeting(string userName,string title) //通过主题删除会议
{
list<Meeting>::iterator it;
for(it=meetings.begin();it!=meetings.end();it++)
if((*it).getTitle()==title && (*it).getSponsor()==userName)
{
meetings.erase(it);
return true;
}
return false;
}
bool MeetingManage::deleteAllMeetings( string userName ) //删除用户所有发起的会议
{
list<Meeting> temp;
list<Meeting>::iterator it;
for(it=meetings.begin();it!=meetings.end();it++)
if((it->getSponsor())!=userName)
temp.push_back(*it);
if(meetings.size()!=temp.size()){
meetings.clear();
meetings=temp;
return true;
}
else
return false;
}
bool MeetingManage::updateMeetingParticipator( string title, string newParticipator ) //更新会议的被邀请者
{
list<Meeting>::iterator it;
for(it=meetings.begin();it!=meetings.end();it++)
if((*it).getTitle()==title)
{
(*it).setParticipator(newParticipator);
return true;
}
return false;
}
bool MeetingManage::updateMeetingStartDate( string title, Date newStartDate ) //更新会议的开始时间
{
list<Meeting>::iterator it;
for(it=meetings.begin();it!=meetings.end();it++)
if((*it).getTitle()==title)
{
(*it).setStartDate(newStartDate);
return true;
}
return false;
}
bool MeetingManage::updateMeetingEndDate( string title, Date newEndDate ) //更新会议的结束时间
{
list<Meeting>::iterator it;
for(it=meetings.begin();it!=meetings.end();it++)
if((*it).getTitle()==title)
{
(*it).setEndDate(newEndDate);
return true;
}
return false;
}
Meeting* MeetingManage::queryMeetingByTitle( string title ) //通过主题查询会议
{
list<Meeting>::iterator it;
for(it=meetings.begin();it!=meetings.end();it++)
if((*it).getTitle()==title)
{
return &(*it);
}
Meeting* temp=NULL;
return temp;
}
list<Meeting> MeetingManage::queryMeetingsByTime( string userName, Date stime, Date etime ) //通过时间段查询会议
{
list<Meeting> temp;
list<Meeting>::iterator it;
if(!Date::isValid(stime) || !Date::isValid(etime) || (stime>etime))
return temp;
for(it=meetings.begin();it!=meetings.end();it++)
if((*it).getSponsor()==userName || (*it).getParticipator()==userName)
{
if((stime>=(*it).getStartDate()&&stime<=(*it).getEndDate()) || (etime>=(*it).getStartDate()&&etime<=(*it).getEndDate())|| (stime<=(*it).getStartDate()&&etime>=(*it).getEndDate()))
temp.insert(temp.end(),*it);
}
return temp;
}
list<Meeting> MeetingManage::listAllMeetings( string userName ) //列出用户的所有会议
{
list<Meeting> temp;
list<Meeting>::iterator it;
for(it=meetings.begin();it!=meetings.end();it++)
if((*it).getSponsor()==userName || (*it).getParticipator()==userName)
{
temp.insert(temp.end(),*it);
}
return temp;
}
list<Meeting> MeetingManage::listAllSponsorMeetings( string userName ) //列出用户发起的所有会议
{
list<Meeting> temp;
list<Meeting>::iterator it;
for(it=meetings.begin();it!=meetings.end();it++)
if((*it).getSponsor()==userName)
{
temp.insert(temp.end(),*it);
}
return temp;
}
list<Meeting> MeetingManage::listAllParticipateMeetings( string userName ) //列出用户被邀请的所有会议
{
list<Meeting> temp;
list<Meeting>::iterator it;
for(it=meetings.begin();it!=meetings.end();it++)
if((*it).getParticipator()==userName)
{
temp.insert(temp.end(),*it);
}
return temp;
}
bool MeetingManage::instanceFlag=false; //初始化静态成员
MeetingManage* MeetingManage::instance=NULL;
MeetingManage.cpp
最新推荐文章于 2024-03-26 14:11:47 发布