CPosition

 

//CPosition.cpp

//

#include <iostream>

#include <string>

#include <vector>

#include <conio.h>

using namespace std;

struct PositionInfo

{

    string province;

    string city;

    string county;

}*pPosition;

 

using namespace std;//using standard namespace

 

class CPosition

{

protected:

public:

 

public:

CPosition();

~CPosition();

PositionInfo GetStruct();

void CpyPosition( CPosition& dest, const CPosition& src );

void InitPosition(vector<PositionInfo*> src);

void AddPosition( string province, string city, string county );

void DelPosition( string province, string city, string county );

vector<PositionInfo*>::iterator FindPosition( const string province, const string city, const string county ) ;

void ModifyPosition( const string srcprovince, const string srccity, const string srccounty, string province, string city, string county);

void Print() const;

vector<PositionInfo*> GetVector() const;

PositionInfo* GetPosition( vector<PositionInfo*> ::iterator iter ) const ;

 

 

private:

vector<PositionInfo*> m_vInfo;

};

 

CPosition::CPosition()

{

 

}

 

CPosition::~CPosition()

{

    //delete all information of position

    for( size_t st = 0; st < m_vInfo.size(); st ++ )

    {

        DelPosition( m_vInfo[st] -> province, m_vInfo[st] -> city, m_vInfo[st] -> county );

    }

    m_vInfo.clear();

}

 

void CPosition::InitPosition(vector<PositionInfo*> src)

{

    m_vInfo = src;

}

 

void CPosition::CpyPosition( CPosition& dest, const CPosition& src )

{

    dest = src;

}

 

void CPosition::AddPosition( string province, string city, string county )

{

    if( !province.empty() )

    {

        PositionInfo* pPosition = new PositionInfo;

        pPosition -> province = province;

        pPosition -> city = city;

        pPosition -> county = county;

        m_vInfo.push_back( pPosition );

    }

    else

    {

        cout<<"ERROR Position info is input!!"<<endl;

    }

}

 

void CPosition::DelPosition( string province, string city ,string county )

{

    bool bflag = false;

    vector<PositionInfo*>::iterator it = m_vInfo.begin();

    for( ; it != m_vInfo.end(); it++)

 

    {

 

        if( (*it) -> province == province && (*it) -> city == city && (*it) -> county == county )

        {

            delete (*it);

            m_vInfo.erase( it );

            bflag = true;

            break;

        }

    }

    if( false == bflag )

    {

            cout<<"This Position is not exist!!You can't delete it."<<endl;

    }

}

 

 vector<PositionInfo*>::iterator  CPosition::FindPosition( const string province, const string city, const string county ) 

{

    bool bflag = false;

    vector<PositionInfo*>::iterator it = m_vInfo.begin();

    for( ; it != m_vInfo.end(); it++)

    {

        if( (*it) -> province == province && (*it) -> city == city && (*it) -> county == county )

        {   

            cout<<"This Position is found."<<endl;

            bflag = true;

            break;

        }

    }

    if( false == bflag )

    {

        cout<<"This Position can't be found!!"<<endl;

    }

    return it;

}

 

void CPosition::Print() const

{

    for( size_t st = 0; st < m_vInfo.size(); st++ )

    {

        cout << "province = " << m_vInfo[st] -> province

             << "/t"

             << "city = " << m_vInfo[st] -> city

             << "/t" 

             << "county = " <<m_vInfo[st] -> county

             << endl;

    }

}

void CPosition::ModifyPosition( string srcprovince, string srccity, string srccounty, string province, string city, string county)

{

    vector<PositionInfo*>::iterator it = m_vInfo.begin();

    for( ; it != m_vInfo.end(); it++)

    {

        if( (*it) -> province == srcprovince && (*it) -> city == srccity && (*it) -> county == srccounty )

        {

            (*it) -> province = province;

            (*it) -> city = city;

            (*it) -> county = county; 

            break;

        }

    }

}

 

PositionInfo* CPosition::GetPosition( vector<PositionInfo*> ::iterator iter) const

{

    return (*iter);

}

 

vector<PositionInfo*> CPosition::GetVector() const

{

    return this -> m_vInfo;

}

int main(int argc, char* argv[])

{

    CPosition p;

    cout << "Add Member!" << endl;

    //add member

    p.AddPosition( "shanghai", "jingan", "sss" );

    p.AddPosition( "guangdong", "shenzhen", "nanshan" );

    p.AddPosition( "sichuan", "chengdu", "chenghua" );

    p.AddPosition( "shanghai", "jingan", "sss" );

    p.AddPosition( "shanghai", "jingan", "sss" );

 

    //print out

    p.Print();

 

    vector<PositionInfo*> ::iterator iter;

    iter = p.FindPosition( "shanghai", "jingan", "sss" );

    PositionInfo* pP = p.GetPosition( iter );

    cout  << (pP) -> province << (pP) -> county <<endl;

    cout  << (*iter) -> province << (*iter) -> county <<endl;

    p.ModifyPosition( "shanghai", "jingan", "sss", "beijing","chaoyang","xian");

    iter = p.FindPosition( "beijing","chaoyang","xian" );

    cout << "Delete Member!" << endl;

    //delete member

    p.DelPosition( "beijing","chaoyang","xian" );

    //print out after delete

    p.Print();

    iter = p.FindPosition( "beijing","chaoyang","xian" );

    CPosition q;

    q.InitPosition(p.GetVector());

    q.Print();

    getch();

 

    return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值