C++通讯录(基础版本)

#include <iostream>
#include <stdio.h>
#include <stdio_ext.h>
#include <stdlib.h>
#include <string>
#include <unistd.h>

using namespace std;

int i = 0;                                              //定义全局变量i

/*定义Contact类,包含的编号、姓名、性别、电话、qq号、住址、备注等信息*/
class Contact
{
    private:
        string m_name;
        string m_ismale;
        string m_tel;
        string m_qq;
        string m_address;
        string m_remark;
    public:
        void setname(string name);
        void setmale(string ismale);
        void settel(string tel);
        void setqq(string qq);
        void setaddress(string address);
        void setremark(string remark);
        void print( int j);
        string getname();
        string getmale();
        string gettel();
        string getqq();
        string getaddress();
        string getremark();
};

void Contact::setname(string name)
{
    m_name = name;
}

void Contact::setmale(string ismale)
{
    m_ismale = ismale;
}

void Contact::settel(string tel)
{
    m_tel = tel;
}

void Contact::setqq(string qq)
{
    m_qq = qq;
}

void Contact::setaddress(string address)
{
    m_address = address;
}

void Contact::setremark(string remark)
{
    m_remark = remark;
}

void Contact::print( int j)
{
    cout<<"**************"<<endl;
    cout<<"编号:"<<j<<endl;
    cout<<"姓名:"<<m_name<<endl;
    cout<<"性别:"<<m_ismale<<endl;
    cout<<"电话:"<<m_tel<<endl;
    cout<<"QQ号:"<<m_qq<<endl;
    cout<<"地址:"<<m_address<<endl;
    cout<<"备注:"<<m_remark<<endl;
    cout<<endl;
}

string Contact::getname()
{
    return m_name;
}

string Contact::getmale()
{
    return m_ismale;
}

string Contact::gettel()
{
    return m_tel;
}

string Contact::getqq()
{
    return m_qq;
}

string Contact::getaddress()
{
    return m_address;
}

string Contact::getremark()
{
    return m_remark;
}


void clear()
{
    system("clear");                                                //清屏
}

void interface()                                                    //界面函数,输出主界面
{
    cout<<"         *********************************************************************************       "<<endl;
    cout<<"         *                                       *               "<<endl;
    cout<<"     *                                               *       "<<endl;
    cout<<"     |                                               |       "<<endl;
    cout<<"     |                      通  讯  录                      |       "<<endl;
    cout<<"     |                                               |       "<<endl;
    cout<<"     |                   ~~~~~~~~                    |       "<<endl;
    cout<<"     |                     1、添加好友;                       |       "<<endl;
    cout<<"     |                     2、查看列表;                       |       "<<endl;
    cout<<"     |                     3、删除好友;                       |       "<<endl;
    cout<<"     |                     4、查找好友;                       |       "<<endl;
    cout<<"     |                     5、修改信息;                       |       "<<endl;
    cout<<"     |                     6、退出程序;                       |       "<<endl;
    cout<<"     |                   ~~~~~~~~                    |       "<<endl;
    cout<<"     |                                               |       "<<endl;
    cout<<"     |           功能:1.ADD、2.LIST、3.DELETE、4.SEEK、5.REVISE、6.EXIT         |       "<<endl;
    cout<<"     |           请在下面输入1、2、3、4、5、6选择你的操作。                |       "<<endl;
    cout<<"     |                                               |       "<<endl;
    cout<<"     *                                               *       "<<endl;
    cout<<"         *                                       *               "<<endl;
    cout<<"         *********************************************************************************       "<<endl;
}

void add(Contact *p)
{
    char c;
    string name;
    string ismale;
    string tel;
    string qq;
    string address;
    string remark;

    do
    {
        clear();

        cout<<"请输入联系人姓名:";
        __fpurge(stdin);
        cin>>name;
        p[i].setname(name);

        cout<<"请输入联系人性别:";
        __fpurge(stdin);
        cin>>ismale;
        p[i].setmale(ismale);

        cout<<"请输入联系人电话:";
        __fpurge(stdin);
        cin>>tel;
        p[i].settel(tel);

        cout<<"请输入联系人QQ号:";
        __fpurge(stdin);
        cin>>qq;
        p[i].setqq(qq);

        cout<<"请输入联系人住址:";
        __fpurge(stdin);
        cin>>address;
        p[i].setaddress(address);

        cout<<"请输入联系人备注:";
        __fpurge(stdin);
        cin>>remark;
        p[i].setremark(remark);

        i++;

        cout<<"是否继续添加:(y/other):";
        __fpurge(stdin);

        cin>>c;
    }while( c == 'y');
}

void list(Contact *p)
{
    clear();

    int j = 0;

    for( j = 0; j < i; j++ )
    {
        p[j].print(j);
    }
}

int findnum(string s, int *accumlate, Contact *p)
{
    int m = 0;
    int j = 0;

    for ( m = 0; m < i; m++ )
    {
        if(  s == p[m].getname() )
        {
            accumlate[j++] = m;
        }
    }
    return j;
}

void seek(Contact *p)                                               //定义查找函数,通过姓名查找
{
    char c = 0;
    do
    {
        clear();

        int j = 0;
        int temp = 0;
        int accum = 0;
        int a[20] = {0};
        string name;

        cout<<"请输入你想查找的联系人的姓名:";
        cin>>name;

        accum = findnum( name, a, p );                              //调用findnum函数,并把找到几个联系人赋给accum

        if( accum == 0 )
        {
            cout<<"此联系人不存在!"<<endl;
        }

        else if( accum == 1 )                                       //如果找到一个联系人,输出这个联系人的信息
        {
            temp = a[0];
            p[temp].print(temp);
        }

        else if( accum > 1 )                                        //找到不止一个联系人,输出全部联系人信息
        {
            cout<<"有"<<accum<<"个联系人!"<<endl;
            for( j = 0; j < accum; j++ )
            {
                temp = a[j];
                p[temp].print(temp);
            }
        }
        cout<<"是否继续查找? (y/other) :";
        __fpurge(stdin);
        cin>>c;

    }while( c == 'y' );
}

void coverdata( int j , Contact *p)                                 //定义覆盖信息函数
{
    int m = 0;
    char c = 0;
    string name;
    string ismale;
    string tel;
    string qq;
    string address;
    string remark;

    cout<<"是否删除该联系人?(y/n)";                 
    __fpurge(stdin);
    cin>>c;

    if( c == 'y' )
    {
        for( m = j; m < i; m++ )
        {
             name = p[m + 1].getname();
            p[m].setname(name);
            ismale = p[m + 1].getmale();
            p[m].setmale(ismale);
            tel = p[m + 1].gettel();
            p[m].settel(tel);
            qq = p[m + 1].getqq();
            p[m].setqq(qq);
            address = p[m + 1].getaddress();
            p[m].setaddress(address);
            remark = p[m + 1].getremark();
            p[m].setremark(remark);
        }
        i--;                                                        //将后一个的信息传给前一个
        cout<<"删除成功!"<<endl;
    }
}

void mydelete(Contact *p)                                           //定义删除联系人函数
{
    char c = 0;
    do
    {
        clear();

        int j = 0;
        int temp = 0;
        int accum = 0;
        int a[20] = {0};
        string name;

        cout<<"请输入你想删除的联系人的姓名:";
        cin>>name;

        accum = findnum( name, a ,p);                               //调用findnum函数,并把找到几个联系人赋给accum

        if( accum == 0 )
        {
            cout<<"此联系人不存在!"<<endl;
        }

        else if( accum == 1 )
        {
            temp = a[0];
            coverdata(temp, p);
        }

        else if( accum > 1 )
        {
            cout<<"有"<<accum<<"个联系人!"<<endl;                    //如果找到不止一个联系人,输出这些联系人信息,让操作者选择要删除的联系人编号
            for( j = 0; j < accum; j++ )
            {
                temp = a[j];
                p[temp].print(temp);
            }

            cout<<"请输入要删的人的编号:";
            cin>>temp;
            coverdata(temp, p);
        }

        cout<<"是否继续删除? (y/other) :";
        __fpurge(stdin);
        cin>>c;

    }while( c == 'y' );
}

void modify( int j , Contact *p)                                    //定义修改函数
{
    clear();
    p[j].print(j);

    int temp = 0;
    string ch;

    cout<<endl;
    cout<<"1--姓名"<<endl;
    cout<<"2--性别"<<endl;
    cout<<"3--电话"<<endl;
    cout<<"4--qq号"<<endl;
    cout<<"5--住址"<<endl;
    cout<<"6--备注"<<endl;
    cout<<"请输入你要修改的项:"<<endl;
    cin>>temp;
    cout<<endl;

    switch(temp)                                                    //用switch语句选择要修改的信息
    {
        case 1:{
                   cout<<"请输入你要改成的姓名:";
                   cin>>ch;
                   p[j].setname(ch);
                   cout<<"修改成功!"<<endl;
                   break;
               }

        case 2:{
                   cout<<"请输入你要改成的性别:";
                   cin>>ch;
                   p[j].setmale(ch);
                   cout<<"修改成功!"<<endl;
                   break;
               }

        case 3:{
                   cout<<"请输入你要改成的电话:";
                   cin>>ch;
                   p[j].settel(ch);
                   cout<<"修改成功!"<<endl;
                   break;
               }

        case 4:{
                   cout<<"请输入你要改成的qq号:";
                   cin>>ch;
                   p[j].setqq(ch);
                   cout<<"修改成功!"<<endl;
                   break;
               }

        case 5:{
                   cout<<"请输入你要改成的住址:";
                   cin>>ch;
                   p[j].setaddress(ch);
                   cout<<"修改成功!"<<endl;
                   break;
               }

        case 6:{
                   cout<<"请输入你要改成的备注:";
                   cin>>ch;
                   p[j].setremark(ch);
                   cout<<"修改成功!"<<endl;
                   break;
               }

        default:cout<<"输入错误!"<<endl;
    }
}

void revise(Contact *p)                                             //定义修改信息函数
{   
    char c = 0;
    do
    {
        clear();

        int j = 0;
        int temp = 0;
        int accum = 0;
        int a[20] = {0};
        string name;

        cout<<"请输入你想修改的联系人的姓名:";
        cin>>name;

        accum = findnum( name, a, p );

        if( accum == 0 )
        {
            cout<<"此联系人不存在!"<<endl;
        }

        else if( accum == 1 )
        {   
            temp = a[0];
            modify(temp, p);
        }

        else if( accum > 1 )
        {
            cout<<"有"<<accum<<"个联系人!"<<endl;
            for( j = 0; j < accum; j++ )
            {
                temp = a[j];
                p[temp].print(temp);                                //有不止一个联系人时输出所有联系人信息,让操作者选择要修改的联系人编号
            }
            cout<<"请输入你要修改的人的编号:";
            cin>>temp;
            modify(temp, p);
        }       
        cout<<"是否继续修改? (y/other) :";
        __fpurge(stdin);
        cin>>c;

    }while( c == 'y' );
}

int main()
{
    Contact *p = new Contact[100];                                  //声明类p
    for( ; ; )
    {
        int temp = 0;
        clear();
        interface();                                                //调用interface函数,输出主界面
        __fpurge(stdin);
        scanf("%d",&temp);

        switch(temp)                                                //switch语句选择功能
        {
            case 1:{
                       add(p);
                       printf("按enter返回主界面!\n");
                       __fpurge(stdin);         
                       getchar();                                   //暂停界面,有输入才退出本次选择语句
                       break;
                   }

            case 2:{
                       list(p);
                       printf("按enter返回主界面!\n");
                       __fpurge(stdin);         
                       getchar();                       
                       break;
                   }

            case 3:{
                       mydelete(p);
                       printf("按enter返回主界面!\n");
                       __fpurge(stdin);         
                       getchar();                       
                       break;
                   }

            case 4:{
                       seek(p);
                       printf("按enter返回主界面!\n");
                       __fpurge(stdin);
                       getchar();
                       break;
                   }

            case 5:{
                       revise(p);
                       printf("按enter返回主界面!\n");
                       __fpurge(stdin);         
                       getchar();                       
                       break;
                   }

            case 6:exit(0);

            default:{
                        printf("输入错误!");
                        printf("按enter返回主界面!\n");
                        __fpurge(stdin);
                        getchar();
                        break;
                    }
        }
    }

    return 0;
}
  • 8
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值