通讯录管理(C/C++)

百忙之中抽出了点时间来制作了一个通讯录的管理系统,各位觉得有用的话可以借鉴学习一下,当然,有疑问或代码上的问题欢迎指出(当时本人写的比较急,所以测试没怎么到底,海涵!!!)

/*create the Mail_list**********/
/***author :ysj***************/
#include<iostream>
#include<stdio.h>
#include<string>
#include<windows.h>
const int MAX = 1e3;
using namespace std;
struct person  //a person;
{
    string m_name; //people name
    string m_sex;  // people sex
    int m_age; //people Age
    string m_phone; // people phone_number;
    string m_add; //people address;
};
struct Addressbooks //main_list
{
    struct person personArray[MAX];
    int m_size;
};

void addperson(Addressbooks *abs)  //添加联系人
{
    if(abs->m_size==MAX)
    {
        cout<<"通讯录已满,无法添加"<<endl;
        return;
    }
    string name;
    cout<<"请输入联系人姓名"<<endl;
    getchar();
    cin>>name;
    abs->personArray[abs->m_size].m_name=name;
    cout<<"请输入性别(1--男,2--女)"<<endl;
    int sex=0;
    while(true)
    {
        cin>>sex;
        if(sex==1)
        {
            abs->personArray[abs->m_size].m_sex="男";
            break;
        }
        if(sex==2)
        {
            abs->personArray[abs->m_size].m_sex="女";
            break;
        }
        cout<<"输入非法,请重新输入"<<endl;
    }
    cout<<"请输入联系人年龄"<<endl;
    int age=0;
    while(1)
    {
        cin>>age;
        if(age>0)
        {
            abs->personArray[abs->m_size].m_age=age;
            break;
        }
        cout<<"输入非法,请重新输入"<<endl;
    }
    cout<<"请输入联系人电话"<<endl;
    string number;
    while(true)
    {
        cin>>number;
        if(number.length()==11)
        {
            abs->personArray[abs->m_size].m_phone=number;
            break;
        }
        cout<<"输入非法,请重新输入"<<endl;
    }
    cout<<"请输入联系人家庭住址"<<endl;
    string addre;
    while(true)
    {
        cin>>addre;
        if(addre.length()>0)
        {
            abs->personArray[abs->m_size].m_add=addre;
            break;
        }
        cout<<"输入非法,请重新输入"<<endl;
    }
    cout<<"添加该联系人成功"<<endl;
    abs->m_size++;
    system("pause");
    system("CLS");
}

void showperson(Addressbooks *abs)  //显示所有联系人
{
    if(abs->m_size==0)
    {
        cout<<"通讯录为空"<<endl;
        system("pause");
        system("CLS");
        return;
    }
    for(int i=0;i<abs->m_size;i++)
    {
        cout<<"通讯人列表"<<endl<<endl;
        printf(">>>%d号通讯人:\n",i+1);
        cout<<"姓名:-> "<<abs->personArray[i].m_name<<"\t";
        cout<<"性别:-> "<<abs->personArray[i].m_sex<<"\t";
        cout<<"年龄:-> "<<abs->personArray[i].m_age<<"\t";
        cout<<"电话:-> "<<abs->personArray[i].m_phone<<"\t";
        cout<<"地址:-> "<<abs->personArray[i].m_add<<endl;
    }
    system("pause");
    system("CLS");
}

int isexist(Addressbooks *abs,string name)
{
    for(int i=0;i<abs->m_size;i++)
        if(abs->personArray[i].m_name==name)
            return i;
    return -1;
}

void deleteperson(Addressbooks *abs) //删除联系人
{
    if(abs->m_size==0)
    {
        cout<<"通讯录为空,非法操作!"<<endl<<endl;
        system("pause");
        system("CLS");
        return;
    }
    cout<<"请输入你要删除的联系人姓名:"<<endl;
    string name;
    while(true)
    {
        cin>>name;
        if(isexist(abs,name)==-1)
        {
            cout<<"该联系人不存在,请重新输入"<<endl;
        }
        else if(isexist(abs,name)!=-1)
        {
            int mid=isexist(abs,name);
            for(int i=mid;i<abs->m_size;i++)
            {
                abs->personArray[i]=abs->personArray[i+1];
            }
            abs->m_size--;
            break;
        }
    }
    cout<<"删除成功"<<endl;
    system("pause");
    system("CLS");
}

int isfind(Addressbooks *abs,string name)
{
    for(int i=0;i<abs->m_size;i++)
        if(abs->personArray[i].m_name==name)
            return i;
    return -1;
}

void findperson(Addressbooks *abs) //查找联系人
{
    if(abs->m_size==0)
    {
        cout<<"通讯录为空,非法操作!"<<endl<<endl;
        system("pause");
        system("CLS");
        return;
    }
    cout<<"请输入你要查找的联系人姓名:"<<endl;
    string name;
    while(true)
    {
        cin>>name;
        if(isfind(abs,name)==-1)
        {
            cout<<"该联系人不存在,请重新输入"<<endl<<endl;
        }
        else if(isexist(abs,name)!=-1)
        {
            cout<<"找了该联系人: "<<endl<<endl;
            int mid=isfind(abs,name);
            cout<<"姓名:-> "<<abs->personArray[mid].m_name<<endl;
            cout<<"性别:-> "<<abs->personArray[mid].m_sex<<endl;
            cout<<"年龄:-> "<<abs->personArray[mid].m_age<<endl;
            cout<<"电话:-> "<<abs->personArray[mid].m_phone<<endl;
            cout<<"地址:-> "<<abs->personArray[mid].m_add<<endl<<endl;
            break;
        }
    }
    cout<<"查找成功"<<endl;
    system("pause");
    system("CLS");
}
void changeperson(Addressbooks *abs) //修改联系人
{
    if(abs->m_size==0)
    {
        cout<<"通讯录为空,非法操作!"<<endl<<endl;
        system("pause");
        system("CLS");
        return;
    }
    cout<<"请输入你要修改的联系人姓名:"<<endl;
    string name;
    while(true)
    {
        cin>>name;
        if(isfind(abs,name)==-1)
        {
            cout<<"该联系人不存在,请重新输入"<<endl<<endl;
        }
        else if(isexist(abs,name)!=-1)
        {
            cout<<"找了该联系人: "<<endl<<endl;
            int mid=isfind(abs,name);
            while(1)
            {
                cout<<"是否修改联系人姓名?(1--yes,2--no)"<<endl;
                int flag1=0;
                string name;
                cin>>flag1;
                if(flag1==1)
                {
                    cout<<"请输入你想修改后的姓名:"<<endl;
                    cin>>name;
                    abs->personArray[mid].m_name=name;
                    cout<<"修改联系人姓名成功"<<endl;
                    break;
                }
                if(flag1==2) break;
            }
            while(1)
            {
                cout<<"是否修改联系人性别?(1--yes,2--no)"<<endl;
                int flag2=0;
                cin>>flag2;
                if(flag2==1)
                {
                    if(abs->personArray[mid].m_name=="男")
                    {
                        abs->personArray[mid].m_name="女";
                        cout<<"成功修改联系人的性别为女"<<endl;
                    }
                    else if(abs->personArray[mid].m_name=="女")
                    {
                        abs->personArray[mid].m_name="男";
                        cout<<"成功修改联系人的性别为男"<<endl;
                    }
                    break;
                }
                if(flag2==2) break;
            }
            while(1)
            {
                cout<<"是否修改联系人年龄?(1--yes,2--no)"<<endl;
                int flag3=0,age,mid1=0;
                cin>>flag3;
                if(flag3==1)
                {
                    while(1)
                    {
                        cout<<"请输入你想修改后的年龄:"<<endl;
                        cin>>age;
                        if(age>0)
                        {
                            abs->personArray[mid].m_age=age;
                            cout<<"修改联系人年龄成功"<<endl;
                            mid1=1;
                            break;
                        }
                        else
                        {
                            cout<<"输入非法年龄,请重新输入"<<endl;
                        }
                    }
                }
                if(flag3==2 ||mid1)
                    break;
            }
            while(1)
            {
                cout<<"是否修改联系人电话?(1--yes,2--no)"<<endl;
                int flag4=0,mid2=0;
                string number;
                cin>>flag4;
                if(flag4==1)
                {
                    while(1)
                    {
                        cout<<"请输入你想修改后的电话号码:"<<endl;
                        cin>>number;
                        if(number.length()==11)
                        {
                            abs->personArray[mid].m_phone=number;
                            cout<<"修改联系人电话号码成功"<<endl;
                            mid2=1;
                            break;
                        }
                        else
                        {
                            cout<<"输入非法电话号码,请重新输入"<<endl;
                        }
                    }
                }
                if(flag4==2 ||mid2)
                    break;
            }
            while(1)
            {
                cout<<"是否修改联系人地址?(1--yes,2--no)"<<endl;
                int flag5=0;
                string addre;
                cin>>flag5;
                if(flag5==1)
                {
                    cout<<"请输入你想修改后的地址:"<<endl;
                    cin>>addre;
                    abs->personArray[mid].m_add=addre;
                    cout<<"修改联系人地址成功"<<endl;
                    break;
                }
                if(flag5==2) break;
            }

        }
        break;
    }
    cout<<"修改完成"<<endl;
    system("pause");
    system("CLS");
}
void clearperson(Addressbooks *abs) //清空联系人
{
    int flag=0;
    cout<<"警告:确定要清空所有联系人吗(1--yes,2--no)"<<endl;
    cin>>flag;
    if(flag==1)
    {
        abs->m_size=0;
        cout<<"操作成功,已清空所有联系人!"<<endl;
    }
    if(flag==2)
    {
        cout<<"操作成功,未清空!"<<endl;
    }
    system("pause");
    system("CLS");
    return;
}
void showMenu()//show the main menu
{
    printf("************************\n\n");
    printf("####  1.添加联系人  ####\n");
    printf("####  2.显示联系人  ####\n");
    printf("####  3.删除联系人  ####\n");
    printf("####  4.查找联系人  ####\n");
    printf("####  5.修改联系人  ####\n");
    printf("####  6.清空联系人  ####\n");
    printf("####  7.退出通讯录  ####\n\n");
    printf("************************\n");
}
int main()
{
    Addressbooks abs;
    abs.m_size=0;
    int select =0; //创建一个用户选择的变量
    while(true)
    {
        showMenu();
        cin>>select;
        switch(select)
        {
            case 1: //添加联系人
                addperson(&abs);
                break;
            case 2: //显示联系人
                showperson(&abs);
                break;
            case 3: //删除联系人
                deleteperson(&abs);
                break;
            case 4: //查找联系人
                findperson(&abs);
                break;
            case 5: //修改联系人
                changeperson(&abs);
                break;
            case 6: //清空联系人
                clearperson(&abs);
                break;
            case 7: //退出通讯录
                cout<<"欢迎以后再次使用该通讯录"<<endl;
                system("pause");
                return 0;
                break;
        }
    }
    system("pause");
    return 0;
}


在这里插入图片描述
在这里插入图片描述
以下不一一列举了,希望对大家有帮助(抱拳)
今天进步一点点。

原创文章 19 获赞 40 访问量 1万+

猜你喜欢

转载自blog.csdn.net/YSJ367635984/article/details/104912275
今日推荐