注:源码在文末链接领取
一.题目介绍:
通讯录是一个可以记录亲人,好友信息的工具
本文主要利用C++来实现一个通讯录管理系统
需要完成的功能如下:
1.添加联系人:向通讯录中添加联系人,信息包括(姓名,性别,年龄,联系电话,家庭住址),最多包括1000人。
2.显示联系人:显示通讯录中所有联系人信息。
3.删除联系人:按照姓名进行删除指定联系人。
4.查找联系人:按照姓名查看指定联系人信息。
5.修改联系人:按照姓名重新修改指定联系人的某个或多个信息。
6.清空联系人:清空通讯录中所有信息。
7.更换联系人:按照姓名更换指定联系人的所有信息。
8.退出通讯录。
二.功能实现:
1.定义结构体
#include<iostream>
#include<string>
using namespace std;
#define MAX 1000//最大人数
//联系人结构体
struct contact
{
string name;
string sex;
int age;
long long phone;
string address;
};
//通讯录结构体
struct Contacts
{
contact people[MAX];
int number;
};
2.显示菜单界面
void showmenu() { cout << "\t\t\t" << "***********************" << "\n" << "\t\t\t" << "***** " << "1.添加联系人" << "*****" << "\n" << "\t\t\t" << "***** " << "2.显示联系人" << "*****" << "\n" << "\t\t\t" << "***** " << "3.删除联系人" << "*****" << "\n" << "\t\t\t" << "***** " << "4.查找联系人" << "*****" << "\n" << "\t\t\t" << "***** " << "5.修改联系人" << "*****" << "\n" << "\t\t\t" << "***** " << "6.清空联系人" << "*****" << "\n" << "\t\t\t" << "***** " << "7.更换联系人" << "*****" << "\n" << "\t\t\t" << "***** " << "0.推出通讯录" << "*****" << "\n" << "\t\t\t" << "***********************" << endl; }
3.添加联系人
void addcontact(Contacts * per) { char flag = 'Y'; //判断人数是否大于1000,超过一千不再添加 if (per->number == MAX) { cout << "通讯录已满,不能继续添加!" << endl; return; } else { while (flag=='Y') { //1.添加姓名 string name; cout << "请输入姓名:" << endl; cin >> name; per->people[per->number].name = name; //2.添加性别 int i = 0; string sex; cout << "请输入性别:" << endl; while (i == 0) { cin >> sex; if (sex != "男" && sex != "女") { cout << "输入有误,请重新输入!" << endl; continue; } per->people[per->number].sex = sex; i = 1; } //3.添加年龄 int j = 0; int age; cout << "请输入年龄:" << endl; while (j == 0) { //超过int取值范围会出bug cin >> age; if(age<=0||age>120) { cout << "输入有误,请重新输入!" << endl; continue; } per->people[per->number].age = age; j = 1; } //4.添加电话 int m = 0; long long phone; cout << "请输入电话号码:" << endl; while (m == 0) { cin >> phone; if (phone < 10000000000 || phone>99999999999) { cout << "输入有误,请重新输入!" << endl; continue; } per->people[per->number].phone = phone; m = 1; } //5.添加地址 string address; cout << "请输入所住地址:" << endl; cin >> address; per->people[per->number].address = address; //更新通讯录 per->number++; cout << "更新成功!" << endl; system("pause"); system("cls"); //继续输入下一个 FLAG1: cout << "是否继续输入下一个?(Y或N)" << endl; cin >> flag; if (flag == 'Y') { system("cls"); continue; } else if (flag == 'N'){ system("cls"); break; } else { cout << "输入有误,请重新输入!" << endl; system("cls"); goto FLAG1; } } } }
4.检测联系人是否存在
//如果存在返回联系人具体位置 //若不存在返回-1 int existcontact(Contacts* pee, string name) { for (int i = 0; i < pee->number; i++) { if (pee->people[i].name == name) { //找到了,返回此人所在数组下标 return i; } } //遍历整个数组,未找到 return -1; }
5.显示所有联系人
void showcontact(Contacts* peo) { //判断通讯录中人数是否为0 if (peo->number == 0) { cout << "当前记录为空!" << endl; } else { for (int i = 0; i < peo->number; i++) { cout << "姓名:" << peo->people[i].name << " " << "性别:" << peo->people[i].sex << " " << "年龄:" << peo->people[i].age << " " << "电话:" << peo->people[i].phone << " " << "地址:" << peo->people[i].address << endl; } cout << "所有记录的联系人输出完毕!" << endl; } system("pause"); system("cls"); }
6.删除联系人
void delcontact(Contacts* pel) { cout << "请输入删除联系人姓名:" << endl; string name; cin >> name; if (existcontact(pel, name) == -1) { cout << "查无此人!" << endl; system("pause"); system("cls"); } else { cout << "成功找到此人!" << endl; for (int i = existcontact(pel, name); i < pel->number; i++) { //数据前移 pel->people[i] = pel->people[i + 1]; } pel->number--;//更新人员数 cout << "删除成功!" << endl; system("pause"); system("cls"); } }
7.查找联系人
void findcontact(Contacts* pem) { string name; cout << "请输入所要查找的联系人姓名:" << endl; cin >> name; int i = existcontact(pem, name); if (i == -1) { cout << "查无此人!" << endl; system("pause"); system("cls"); } else { cout << "成功找到此人!" << endl; system("pause"); system("cls"); cout << "姓名:" << pem->people[i].name << " " << "性别:" << pem->people[i].sex << " " << "年龄:" << pem->people[i].age << " " << "电话:" << pem->people[i].phone << " " << "地址:" << pem->people[i].address << endl; } system("pause"); system("cls"); }
8.清空联系人
void reset(Contacts* pec) { cout << "是否确定清空联系人?" << endl; cout << "确定(请输入1)" << endl; cout << "不确定(请输入其他数字)" << endl; cout << "请输入你的选择:" << " "; int sel = 0; cin >> sel; if (sel == 1) { cout << "确定清空!" << endl; pec->number = 0; cout << "通讯录已清空!" << endl; } else { cout << "我选择不清空!" << endl; } system("pause"); system("cls"); }
9.更换联系人
void replacement(Contacts* pef) { string name1; cout << "请输入所要更换的联系人姓名:" << " "; cin >> name1; int k = existcontact(pef, name1); if (k == -1) { cout << "查无此人!" << endl; system("pause"); system("cls"); } else { cout << "成功找到此人!" << endl; system("pause"); system("cls"); cout << "姓名:" << pef->people[k].name << " " << "性别:" << pef->people[k].sex << " " << "年龄:" << pef->people[k].age << " " << "电话:" << pef->people[k].phone << " " << "地址:" << pef->people[k].address << endl; //修改姓名 string name2; cout << "请输入修改后联系人的姓名:" << " "; cin >> name2; pef->people[k].name = name2; //修改性别 int i = 0; string sex; cout << "请输入性别:" << endl; while (i == 0) { cin >> sex; if (sex != "男" && sex != "女") { cout << "输入有误,请重新输入!" << endl; continue; } pef->people[k].sex = sex; i = 1; } //修改年龄 int j = 0; int age; cout << "请输入年龄:" << endl; while (j == 0) { cin >> age; if (age <= 0 || age > 120) { cout << "输入有误,请重新输入!" << endl; continue; } pef->people[k].age = age; j = 1; } //修改电话 int m = 0; long long phone; cout << "请输入电话号码:" << endl; while (m == 0) { cin >> phone; if (phone < 10000000000 || phone>99999999999) { cout << "输入有误,请重新输入!" << endl; continue; } pef->people[k].phone = phone; m = 1; } //修改地址 string address; cout << "请输入所住地址:" << endl; cin >> address; pef->people[k].address = address; } cout << "姓名:" << pef->people[k].name << " " << "性别:" << pef->people[k].sex << " " << "年龄:" << pef->people[k].age << " " << "电话:" << pef->people[k].phone << " " << "地址:" << pef->people[k].address << endl; system("pause"); system("cls"); }
10.主函数编写
int main() { Contacts peo; peo.number = 0; int select = 0; FLAG2: while(true){ showmenu(); cout << "请输入指令:" << endl; cin >> select; system("cls");//清屏 switch (select) { case 1://1.添加联系人 addcontact(&peo); break; case 2://2.显示联系人 showcontact(&peo); break; case 3://3.删除联系人 delcontact(&peo); break; case 4://4.查找联系人 findcontact(&peo); break; case 5://5. 修改联系人 revisecontact(&peo); break; case 6://6.清空联系人 reset(&peo); break; case 7://7.更换联系人 replacement(&peo); break; case 0://退出系统 cout << "您已经退出该系统,欢迎下次使用!" << endl; system("pause"); return 0; default: cout << "输入有误,请重新输入!" << endl; goto FLAG2; }; } }
三.源码领取:
Gitee链接: