文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

C++实现简易的通讯录管理系统

2024-04-02 19:55

关注

本文实例为大家分享了C++实现简易通讯录管理系统的具体代码,供大家参考,具体内容如下

1. 效果图

2. 需要的知识

C++基础知识(包括变量,运算符,顺序,分支,循环)
数组
函数
指针
结构体

3. 源码

#include <iostream>
using namespace std;
#define MAX 1000  //最大联系人个数 

struct Person {
    string name;
    string sex;
    int age;
    string tell;
    string addr;
};

struct Books {
    struct Person per[MAX];
    int N;//通讯录人数
};

//函数声明
void initBooks(Books *books);
void showMenu();
void addPerson(Books *books);
void showPerson(Books *books);
int  findPerson(Books *books,string name);
void findPerson(Books *books);
void deletePerson(Books *books);
void modifyPerson(Books *books);
void clearPerson(Books *books);

//初始化通讯录,向其中加入联系人
void initBooks(Books *books) {
    books->per[books->N].name = "张三";
    books->per[books->N].sex = "男";
    books->per[books->N].age = 22;
    books->per[books->N].tell = "123456789";
    books->per[books->N].addr = "成都";
    books->N++;
    books->per[books->N].name = "李四";
    books->per[books->N].sex = "男";
    books->per[books->N].age = 23;
    books->per[books->N].tell = "123456789";
    books->per[books->N].addr = "深圳";
    books->N++;
    books->per[books->N].name = "王五";
    books->per[books->N].sex = "男";
    books->per[books->N].age = 25;
    books->per[books->N].tell = "123456789";
    books->per[books->N].addr = "北京";
    books->N++;
}

//菜单
void showMenu() {
    system("color a");
    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;
}

//添加
void addPerson(Books *books) {
    if(books->N == MAX) {
        cout<<"通讯录已满,无法添加\n";
        return;
    } else {
        string name;
        string sex;
        int age;
        string tell;
        string addr;
        cout<<"请输入姓名,性别,年龄,电话以及地址:";
        cin>>name>>sex>>age>>tell>>addr;
        books->per[books->N].name = name;
        books->per[books->N].sex = sex;
        books->per[books->N].age = age;
        books->per[books->N].tell = tell;
        books->per[books->N].addr = addr;
        books->N++;
        cout<<"添加成功\n";
    }
}

//输出
void showPerson(Books *books) {
    if(books->N == 0) {
        cout<<"当前记录为空\n";
    } else {
        cout<<"姓名\t性别\t年龄\t电话\t\t地址\n";
        for(int i=0; i<books->N; i++) {
            cout<<books->per[i].name<<"\t"
                <<books->per[i].sex<<"\t"
                <<books->per[i].age<<"\t"
                <<books->per[i].tell<<"\t"
                <<books->per[i].addr<<"\n";
        }
    }
}

//查询并返回是否存在
int findPerson(Books *books,string name) {
    for(int i=0; i<books->N; i++) {
        if(books->per[i].name== name) {
            return i;
        }
    }
    return -1;
}

//查询并输出
void findPerson(Books *books) {
    cout<<"请输入你要查找的联系人的姓名:";
    string name;
    cin>>name;
    int ret = findPerson(books,name);
    if(ret!=-1) {
        cout<<books->per[ret].name<<"\t"
            <<books->per[ret].sex<<"\t"
            <<books->per[ret].age<<"\t"
            <<books->per[ret].tell<<"\t"
            <<books->per[ret].addr<<"\n";
    } else {
        cout<<"查无此人\n";
    }
}

//删除
void deletePerson(Books *books) {
    cout<<"请输入你要删除的联系人的姓名:";
    string name;
    cin>>name;
    int ret = findPerson(books, name);
    if(ret!=-1) {
        for(int i=ret; i<books->N; i++) {
            if(books->per[i].name== name) {
                books->per[i] = books->per[i+1];
            }
        }
        books->N--;
    } else {
        cout<<"查无此人\n";
    }
}

//修改
void modifyPerson(Books *books) {
    cout<<"请输入你要修改的联系人的姓名:";
    string name;
    cin>>name;
    int ret = findPerson(books, name);
    if(ret!=-1) {
        string name;
        string sex;
        int age;
        string tell;
        string addr;
        cout<<"请输入姓名,性别,年龄,电话以及地址:";
        cin>>name>>sex>>age>>tell>>addr;
        books->per[ret].name = name;
        books->per[ret].sex = sex;
        books->per[ret].age = age;
        books->per[ret].tell = tell;
        books->per[ret].addr = addr;
        cout<<"修改成功\n";
    } else {
        cout<<"查无此人,是否选择新增(Y/N):\n";
        char flag;
        cin>>flag;
        if(flag=='Y') {
            addPerson(books);
        }
    }
}

//清空
void clearPerson(Books *books) {
    books->N = 0;
    cout<<"通讯录已清空\n";
}

int main(int argc, char** argv) {
    showMenu();
    Books books;
    books.N = 0;
    initBooks(&books);
    showPerson(&books);

    while(true) {
        showMenu();
        cout<<"请输入功能前的序号:\n";
        int select=0;
        cin>>select;
        switch(select) {
            case 1:
                addPerson(&books);
                break;
            case 2:
                showPerson(&books);
                break;
            case 3:
                deletePerson(&books);
                break;
            case 4:
                findPerson(&books);
                break;
            case 5:
                modifyPerson(&books);
                break;
            case 6:
                clearPerson(&books);
                break;
            case 0:
                cout<<"欢迎下次使用\n";
                exit(0);
            default:
                break;
        }
    }
    return 0;
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯