C++通讯管理系统实现

1 系统需求

使用C++实现一个通讯录管理系统
使用Clion+Cygwin环境
系统中实现的功能如下

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

2 创建项目

3 菜单功能

shouMenu函数:

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;
}

在主方法中调用该菜单界面

4 退出功能

int main() {
    int select; // 功能选项
    bool flag = true; // 判断是否退出通讯录
    while(flag){
        showMenu(); // 调用菜单界面
        cout <<"请输入您的选择(数字):";
        cin >> select;
        switch (select) {
            case 1:
                break;
            case 2:
                break;
            case 3:
                break;
            case 4:
                break;
            case 5:
                break;
            case 6:
                break;
            case 0: // 退出通讯录
                cout<<"感谢您的使用!"<<endl;
                flag = false;
                break;
            default:
                cout<<"您输入有误,请重新输入!";
                break;
        }
    }
    return 0;
}

5 添加联系人

5.1 设计联系人结构体

struct Person{ // 联系人结构体,封装联系人的姓名,性别,电话,地址信息
    string name; // 姓名
    string gender; // 性别
    string phone_number; // 电话
    string address; // 住址
};

5.2 设计通讯录结构体

#define Max_SIZE 1000 // 最大人数
struct AddressBook {
    struct Person persons[Max_SIZE]; //通讯录中保存的联系人数组
    int size; //通讯录的人数
};

5.3 main函数中创建通讯录

    AddressBook address_book; // 创建通讯录结构体变量
	address_book.size = 0; // 初始化通讯录人数为0

5.4 封装添加联系人函数

void addPerson(AddressBook &addressBook) {
    if (addressBook.size == Max_SIZE) { // 若联系人满,则无法添加
        cout << "通讯录已满无法添加" << endl;
        return;
    }
    string name;
    string gender;
    string phone_number;
    string address;
    cout << "请输入姓名:";
    cin >> name;
    cout << "请输入性别:";
    cin >> gender;
    cout << "请输入电话:";
    cin >> phone_number;
    cout << "请输入地址:";
    cin >> address;
    addressBook.persons[addressBook.size].name = name;
    addressBook.persons[addressBook.size].gender = gender;
    addressBook.persons[addressBook.size].phone_number = phone_number;
    addressBook.persons[addressBook.size].address = address;
    addressBook.size++;
    cout << "添加成功!!!" << endl;
}

6 显示联系人

6.1 封装显示联系人函数

void showPerson(AddressBook addressBook) {
    if (addressBook.size == 0) { // 无联系人,则输出为空
        cout << "联系人为空" << endl;
        return;
    }
    cout<<"联系人信息如下:"<<endl;
    cout<<"----------------------------------------"<<endl;
    for(int i = 0;i<addressBook.size;i++){
        cout<<"姓名:"<<addressBook.persons[i].name<<"\t";
        cout<<"性别"<<addressBook.persons[i].gender<<"\t";
        cout<<"电话号码:"<<addressBook.persons[i].phone_number<<"\t";
        cout<<"住址:"<<addressBook.persons[i].address<<endl;
        cout<<"----------------------------------------"<<endl;
    }
}

6.2 测试显示联系功能

case 2: // 显示联系人
                showPerson(address_book);
                getchar();
                cout << "输入任意键继续" << endl;
                getchar();
                break;

7 删除联系人

删除联系人的实现步骤:

  • 封装检测联系人是否存在
  • 封装删除联系人功能功能
  • 测试删除联系人功能

7.1 封装检测联系人是否存在函数

int isExist(AddressBook addressBook, string name) {
    for (int i = 0; i < addressBook.size; i++) {
        if (addressBook.persons[i].name == name) {
            return i;
        }
    }
    return -1;
}

7.2 封装删除联系人功能功能

void deletePerson(AddressBook &addressBook){
    string name;
    cout<<"请输入要删除的联系人姓名";
    cin >> name;
    int flag = isExist(addressBook,name);
    if(flag == -1){
        cout<<"查无此人"<<endl;
    }
    else{
        if(flag == addressBook.size){
            addressBook.size--;
        }
        else{
            for(int i = flag;i<addressBook.size-1;i++){
                addressBook.persons[i] = addressBook.persons[i+1];
                addressBook.size--;
            }
        }
        cout<<"删除成功"<<endl;
    }
}

7.3 测试删除联系人功能

case 5: // 删除联系人
                deletePerson(address_book);
                getchar();
                cout << "输入任意键继续" << endl;
                getchar();
                break;

8 查找联系人

实现步骤:

  • 封装查找联系人函数
  • 测试功能

8.1 封装查找联系人函数

void findPerson(AddressBook addressBook){
    string name;
    cout << "请输入要查找的联系人姓名:";
    cin >> name;
    int flag = isExist(addressBook, name);
    if (flag == -1) {
        cout << "查无此人" << endl;
    } 
    else {
        cout << "姓名:" << addressBook.persons[flag].name << "\t";
        cout << "性别" << addressBook.persons[flag].gender << "\t";
        cout << "电话号码:" << addressBook.persons[flag].phone_number << "\t";
        cout << "住址:" << addressBook.persons[flag].address << endl;
    }
}

8.2 测试功能

case 3: // 查找联系人
                findPerson(address_book);
                getchar();
                cout << "输入任意键继续" << endl;
                getchar();
                break;

9 修改联系人

实现步骤:

  • 封装修改联系人函数
  • 测试联系人修改功能

9.1 封装修改联系人函数

void modifyPerson(AddressBook addressBook) {
    string name;
    cout << "请输入要查找的联系人姓名:";
    cin >> name;
    int flag = isExist(addressBook, name);
    if (flag == -1) {
        cout << "查无此人" << endl;
    } else {
        string name;
        string gender;
        string phone_number;
        string address;
        cout << "请输入姓名:";
        cin >> name;
        cout << "请输入性别:";
        cin >> gender;
        cout << "请输入电话:";
        cin >> phone_number;
        cout << "请输入地址:";
        cin >> address;
        addressBook.persons[flag].name = name;
        addressBook.persons[flag].gender = gender;
        addressBook.persons[flag].phone_number = phone_number;
        addressBook.persons[flag].address = address;
        cout << "修改成功!!!" << endl;
    }
}

9.2 测试联系人修改功能

case 4: // 修改联系人
                modifyPerson(address_book);
                getchar();
                cout << "输入任意键继续" << endl;
                getchar();
                break;

10 清空联系人

  • 封装清空联系人函数
  • 测试清空联系人

10.1 封装清空联系人函数

void cleanPerson(AddressBook &addressBook){
    addressBook.size = 0;
    cout<<"通讯录已清空"<<endl;
}

10.2 测试清空联系人

case 6: // 清空联系人
                cleanPerson(address_book);
                getchar();
                cout << "输入任意键继续" << endl;
                getchar();
                break;

11 源代码

源代码评论私聊发

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值