addresss.cpp
#include <iostream>
#include<string>
#include"address.h"
#include"AddressList.h"
#include"AddressBook.h"
int main( )
{
new AddressBook;
return 0;
}
ostream& operator<<(ostream& os,const RecordList& c_r1)
{
RecordList::const_iterator it;
RecordList::const_iterator it_end=c_r1.end( );
for(it=c_r1.begin( );it!=it_end;it++)
{
os<<(*it)-name<<'\n'<<(*it)->tel<<'\n';
}
return os;
}
istream& operator>> (istream& is,RecordList& r1)
{
Record* rec;
string name;
while(true)
{
getline(is,name);
if(name==" ")
break;
rec=new Record;
rec->name=name;
getline(is,rec->tel);
r1.push_back(rec);
}
return is;
}
addressList.h
#ifndef H_ADDRESSLIST_H_AAA
#define H_ADDRESSLIST_H_AAA
#include <iostream.h>
#include <string>
#include "address.h"
using namespace std;
class AddressList
{
protected:
RecordList recList;
public:
typedef RecordList::iterator Iterator;
virtual void addRecord(Record* rec);
virtual Iterator removeRecord(Iterator it);
virtual Iterator findRecord(string pattern,int type,Iterator from);
virtual void saveRecords(ostream& os);
virtual int loadRecords(istream& is);
virtual ~AddressList( );
const int size( ) const{return (int)recList.size( );}
const bool empty( ) const {return recList.empty( );}
virtual void clear( ) {recList.clear( );}
Iterator first( ){return recList.begin( );}
Iterator pastEnd( ){return recList.end( );}
};
#endif H_ADDRESS_H_AAA
下面是addressList.cpp
#include"AddressList.h"
AddressList::~AddressList( )
{
recList.clear( );
}
void AddressList::addRecord(Record* rec)
{
if(rec!=NULL)
{
recList.push_back(rec);
}
}
AddressList::Iterator AddressList::removeRecord(AddressList::Iterator it)
{
return recList.erase(it);
}
AddressList::Iterator AddressList::findRecord(
string pattern,int type,AddressList::Iterator from)
{
Iterator it;
Iterator it_end=recList.end( );
for(it=from;it!=it_end;it++)
{
if((type==1&&(*it)->name==pattern)||(type==2&&(*it)->tel==pattern))
break;
}
return it;
}
void AddressList ::saveRecords(ostream &os)
{
os<<recList;
}
int AddressList::loadRecords(istream &is)
{
int ori=size();
is>>recList;
return size( )-ori;
}