我的第一个C++项目

材料天坑选手跨考408,从零学习C++,慢慢来吧。。。。。

跟着B站黑马程序员的视频做的第一个超级简单项目。。一个简单至极的通讯录,虽然很low不过是自己一点点敲出来的,继续努力!

可以实现功能如下:

  • 添加&删除联系人
  • 显示所有联系人
  • 按名字查找&删除联系人
  • 清空联系人列表

前天发的时候不会用排版,6月4日重新编辑一下

#include<iostream>
using namespace std;
#include<string>

//联系人上限MAX
#define MAX 1000

//联系人结构体
struct Person {
    //姓名
    string name;
    //性别  1男  2女
    int sex;
    //年龄
    int age;
    //电话
    string phone;
    //住址
    string address;
};
//通讯录结构体
struct AddressBooks {
    //联系人数组
    struct Person pArr[MAX];
    //当前联系人个数
    int perNum;
};

//菜单函数
void showMenu() {
    system("pause");
    system("cls");
    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;
}
//显示第i个联系人的信息
void print_onePerson(AddressBooks *p,int i) {
    cout << "姓名:" << p->pArr[i].name << "\t";
    cout << "性别:" << (p->pArr[i].sex == 1 ? "男" : "女") << "\t";
    cout << "年龄:" << p->pArr[i].age << "\t";
    cout << "电话:" << p->pArr[i].phone << "\t";
    cout << "住址:" << p->pArr[i].address << endl;
}
//按姓名查找函数
int findName(AddressBooks *p,string t) {
    for (int i = 0; i < p->perNum; i++) {
        if (t==p->pArr[i].name) {
            return i;//返回目标联系人的序号
        }
    }
    return -1;//如果没有查找到,返回-1
}
//1、添加联系人函数
void addPerson(AddressBooks *p) {
    if (p->perNum==MAX) {
        cout << "通讯录已满,无法添加" << endl;
    }
    else {
        //姓名
        cout << "请输入姓名:" << endl;
        cin >> p->pArr[p->perNum].name;
        //性别  1男  2女
        int tempsex;
        //输入正确退出循环,输入错误则重新输入,直到输入正确
        while (true) {
            cout << "请输入性别:" << endl;
            cout << "1 --- 男" << endl;
            cout << "2 --- 女" << endl;
            cin >> tempsex;
            if (tempsex == 1 || tempsex == 2) {
                p->pArr[p->perNum].sex = tempsex;
                break;
            }
            cout << "*****输入有误,请重新输入*****" << endl;
        }
        //年龄
        int tempage;
        while (true) {
            cout << "请输入年龄:" << endl;
            cin >> tempage;
            if (tempage > 0 && tempage < 200) {
                p->pArr[p->perNum].age = tempage;
                break;
            }
            cout << "*****输入有误,请重新输入*****" << endl;
            cout << "***** 正确范围:1~199 *****" << endl;
        }
        //电话
        cout << "请输入电话:" << endl;
        cin >> p->pArr[p->perNum].phone;
        //住址
        cout << "请输入住址:" << endl;
        cin >> p->pArr[p->perNum].address;

        cout << "***** 添加成功! *****" << endl;
        p->perNum++;
    }    
}
//2、显示联系人函数
void showPerson(AddressBooks *p) {
    //判断通讯录是否为0
    //0--提示为通讯录空;其他--显示联系人
    if (p->perNum==0) {
        cout << "通讯录为空" << endl;
    }
    else {
        for (int i = 0; i < p->perNum;i++) {
            print_onePerson(p,i);
        }
    }
}
//3、删除联系人函数
void delePerson(AddressBooks *p) {
    cout << "请输入您要删除的联系人姓名" << endl;
    string tempname;
    cin >> tempname;
    int result =findName(p, tempname);
    if (result ==-1) {
        cout << "查无此人" << endl;
    }
    else {
        cout << "找到此人" << endl;
        for (int i = result; i < p->perNum;i++) {
            p->pArr[i] = p->pArr[i + 1];
        }
        cout << "删除成功" << endl;
        p->perNum--;
    }
}
//4、查找联系人函数
void findPerson(AddressBooks *p) {
    string name_case4;
    cout << "请输入查找联系人的姓名:" << endl;
    cin >> name_case4;
    int tempResult = findName(p, name_case4);
    if (tempResult == -1) {
        cout << "查无此人" << endl;
    }
    else {
        cout << "找到此人" << endl;
        print_onePerson(p, tempResult);
    }
}
//5、修改联系人函数
void editPerson(AddressBooks *p) {
    cout << "请输入您要修改的联系人姓名" << endl;
    string name;
    cin >> name;
    int tempResult = findName(p, name);
    if (tempResult == -1) {
        cout << "查无此人,无法修改!" << endl;
    }
    else {
        cout << "找到此人,信息如下:" << endl;
        print_onePerson(p, tempResult);
        cout << "开始修改联系人信息" << endl;
        cout << "*****************************" << endl;
        //姓名
        cout << "请输入姓名:" << endl;
        cin >> p->pArr[tempResult].name;
        //性别  1男  2女
        int tempsex;
        //输入正确退出循环,输入错误则重新输入,直到输入正确
        while (true) {
            cout << "请输入性别:" << endl;
            cout << "1 --- 男" << endl;
            cout << "2 --- 女" << endl;
            cin >> tempsex;
            if (tempsex == 1 || tempsex == 2) {
                p->pArr[tempResult].sex = tempsex;
                break;
            }
            cout << "*****输入有误,请重新输入*****" << endl;
        }
        //年龄
        int tempage;
        while (true) {
            cout << "请输入年龄:" << endl;
            cin >> tempage;
            if (tempage > 0 && tempage < 200) {
                p->pArr[tempResult].age = tempage;
                break;
            }
            cout << "*****输入有误,请重新输入*****" << endl;
            cout << "***** 正确范围:1~199 *****" << endl;
        }
        //电话
        cout << "请输入电话:" << endl;
        cin >> p->pArr[tempResult].phone;
        //住址
        cout << "请输入住址:" << endl;
        cin >> p->pArr[tempResult].address;

        cout << "***** 修改成功! *****" << endl;
    }
}
//6、清空联系人函数
void cleanPerson(AddressBooks *p) {
    cout << "您确定清空通讯录吗?\n(确定清空--1  取消清空--0)"
        << endl;
    int b;
    cin >> b;
    while (!(b==1||b==0)) {
        cout << "您的输入有误,请重新输入\n(确定清空--1  取消清空--0)" << endl;
        cin >> b;
    }
    if (b) {
        p->perNum = 0;
        cout << "已清空通讯录!" << endl;
    }
    else {
        cout << "取消清空!" << endl;
    }
    
}
int main() {
    
    int choose;
    //创建,初始化通讯录abs
    struct AddressBooks abs;
    abs.perNum = 0;

    while (1) {//利用while使用户一直使用
        showMenu();
        cin >> choose;
        switch (choose) {
        case 1://添加联系人
            addPerson(&abs);
            break;
        case 2://显示联系人
            showPerson(&abs);
            break;
        case 3://删除联系人
            delePerson(&abs);
            break;
        case 4://查找联系人
            findPerson(&abs);
            break;
        case 5://修改联系人
            editPerson(&abs);
            break;
        case 6://清空联系人
            cleanPerson(&abs);
            break;
        case 0://退出联系人
        {
            cout << "欢迎下次使用!" << endl;
            system("pause");
            return 0;
            break;
        }
        default:
            break;
        }
    }
    system("pause");
    return 0;
}

发个文章记录自己的成长,欢迎批评指正!

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值