通讯录管理系统

通讯录管理系统

1、系统需求

通讯录是一个可以记录亲人、好友信息的工具。

本教程主要利用C++来实现一个通讯录管理系统

系统中需要实现的功能如下:

  • 添加联系人:向通讯录中添加新人,信息包括(姓名、性别、年龄、联系电话、家庭住址)最多记录1000人
  • 显示联系人:显示通讯录中所有联系人信息
  • 删除联系人:按照姓名进行删除指定联系人
  • 查找联系人:按照姓名查看指定联系人信息
  • 修改联系人:按照姓名重新修改指定联系人
  • 清空联系人:清空通讯录中所有信息
  • 退出通讯录:退出当前使用的通讯录

花了我好几个小时时间终于写出来了,也算对前几天的学习做一个回顾吧!

功能比较简单,没有进行文件的读取保存

#include<iostream>
#include<stdlib.h>
using namespace std;
#define MAX 1000//最大存储人数

//定义通讯录内联系人结构体
struct addressPerson{
    string name;//姓名
    string addr;//地址
    string phone;//电话
    int sex;//性别,用1来代替男,2来代替女  其它提示错误
};
//定义通讯录结构体
struct addressBooks{
    addressPerson personaddr[MAX];//通讯录能存储人数个数
    int sizes;//当前通讯录中人书

};
void showMenu(){//显示菜单
    cout<<"*************************"<<endl;
    cout<<"***** 1、添加联系人 *****"<<endl;
    cout<<"***** 2、显示联系人 *****"<<endl;
    cout<<"***** 3、删除联系人 *****"<<endl;
    cout<<"***** 4、查找联系人 *****"<<endl;
    cout<<"***** 5、修改联系人 *****"<<endl;
    cout<<"***** 6、清空联系人 *****"<<endl;
    cout<<"***** 0、退出通讯录 *****"<<endl;
    cout<<"*************************"<<endl;
    cout<<"请输入选项:";
}

//添加联系人
//实现添加联系人功能,联系人上限为1000人
void addPerson(addressBooks *abs){
    if(abs->sizes==MAX){
        cout<<"通讯录已满,无法添加"<<endl;
        return;
    }
    else{
        string name;
        cout<<"请输入姓名:";
        cin>>name;
        abs->personaddr[abs->sizes].name=name;
        cout<<"1--男"<<"\t"<<"2--女"<<endl;
        cout<<"请输入性别:";
        int sex ;
        while(1){
            cin>>sex;
            if(sex==1||sex==2){
                abs->personaddr[abs->sizes].sex=sex;
                break;
            }else{
                cout<<"输入有错,请重新输入"<<endl;
            }
        }
        cout<<"请输入电话:";
        string phone;
        cin>>phone;
        abs->personaddr[abs->sizes].phone=phone;
        cout<<"请输入地址:";
        string addr;
        cin>>addr;
        abs->personaddr[abs->sizes].addr=addr;
    }
    abs->sizes++;//更新通讯录人数
    system("pause");
    system("cls");
}
//显示联系人
void showPerson(addressBooks *abs){
    if(abs->sizes==0){
        cout<<"通讯录为空!"<<endl;
        system("pause");
        system("cls");
    }else{
    for(int i=0;i<abs->sizes;i++){
        cout<<"姓名:"<<abs->personaddr[i].name<<"\t";
        cout<<"性别:"<<(abs->personaddr[i].sex==1?"男":"女")<<"\t\t";
        cout<<"电话:"<<abs->personaddr[i].phone<<"\t";
        cout<<"地址:"<<abs->personaddr[i].addr<<endl;
    }
    system("pause");
    system("cls");
    }
}
//判断联系人是否存在
//此函数在查找、删除、修改联系人过程中都会用到,因此将其封装为一个函数
int isExist(addressBooks *abs,string name){
    for(int i=0;i<abs->sizes;i++){
        if(abs->personaddr[i].name==name){
            return i;//返回查找到联系人当前索引
        }
    }
    return -1;
}

//删除联系人
//按照姓名进行删除指定联系人
void deletePerson(addressBooks *abs){
    cout<<"请输入要删除姓名:";
    string name;
    cin>>name;
    int ret=isExist(abs,name);
    cout<<ret<<endl;
    if(ret!=-1){
        for(int i=ret;i<abs->sizes-1;i++){
            abs->personaddr[i]=abs->personaddr[i+1];
        }
        abs->sizes--;
        cout<<"删除成功"<<endl;
    }else cout<<"查无此人"<<endl;
    system("pause");
    system("cls");

}

//查找联系人
//按姓名查找指定联系人信息
void findPerson(addressBooks *abs){
    string name;
    cout<<"请输入需要查找姓名:";
    cin>>name;
    int ret=isExist(abs,name);
    if(ret!=-1){
        cout<<"姓名:"<<abs->personaddr[ret].name<<"\t";
        cout<<"性别:"<<(abs->personaddr[ret].sex==1?"男":"女")<<"\t\t";
        cout<<"电话:"<<abs->personaddr[ret].phone<<"\t";
        cout<<"地址:"<<abs->personaddr[ret].addr<<endl;
    }else cout<<"查无此人"<<endl;
    system("pause");
    system("cls");
}
//修改联系人
void changePerson(addressBooks *abs){
    cout<<"请输入需要修改人姓名:";
    string name;
    cin>>name;
    int ret=isExist(abs,name);
    if(ret!=-1){
        int exit=1;
        while(exit){
            int select;
            cout<<"请输入要修改信息:\n";
            cout<<"1、姓名\n";
            cout<<"2、姓别\n";
            cout<<"3、电话\n";
            cout<<"4、地址\n";
            cout<<"0、退出\n";
            cin>>select;
            switch(select){
            case 1:{
                string newName;
                cout<<"请输入新姓名:";
                cin>>newName;
                abs->personaddr[ret].name=newName;
                cout<<"修改完成"<<endl;
                system("pause");
                system("cls");
                break;
            }
            case 2:{
                int newSex;
                cout<<"1--男"<<"2--女"<<endl;
                cout<<"请输入新姓别:";
                cin>>newSex;
                abs->personaddr[ret].sex=newSex;
                cout<<"修改完成"<<endl;
                system("pause");
                system("cls");
                break;
            }
            case 3:{
                string newPhone;
                cout<<"请输入新电话:";
                cin>>newPhone;
                abs->personaddr[ret].phone=newPhone;
                cout<<"修改完成"<<endl;
                system("pause");
                system("cls");
                break;
            }
            case 4:{
                string newAddr;
                cout<<"请输入新地址:";
                cin>>newAddr;
                abs->personaddr[ret].addr=newAddr;
                cout<<"修改完成"<<endl;
                system("pause");
                system("cls");
                break;
            }
            case 0:
                exit=0;
                break;
            default :
                cout<<"输入错误,请重新输入";
            }
        }
    }else cout<<"未找到要修改联系人"<<endl;
    system("pause");
    system("cls");
}

//清空联系人
void clearPerson(addressBooks *abs){
    cout<<"确定要清空通讯录吗?清空之后将无法恢复!Y/N"<<endl;
    string makesure;
    cin>>makesure;
    if(makesure=="Y"){
        abs->sizes=0;
    }else if(makesure=="N"){
        system("pause");
        system("cls");
        return ;
    }else{
        cout<<"命令输入错误,请重新输入!"<<endl;
    }
    system("pause");
    system("cls");
}
int main(){
    //菜单
    addressBooks abs;//声明
    abs.sizes=0;
    int select = 0;
    while(1){
        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 0://退出登录
                cout<<"欢迎下次使用"<<endl;
                system("pause");
                return 0;
                break;
            default :
            	cout<<"命令输入错误,请重新输入!"<<endl;
                system("pause");
                system("cls");
                break;
        }
    }
    system("pause");
    system("cls");
}
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值