通讯录管理系统—C++
用C++的部分基础语法写了一个简单的不完善的通讯录管理系统。
我用的是VS2022。
#include <iostream>
using namespace std;
#define MAX 1000
//联系人
struct Person {
string m_Name;
//1--男 2--女
int m_Sex;
int m_Age;
string m_Phone;
string m_Address;
};
//通讯录
struct Addressbooks {
Person personArray[MAX];
int m_Size;
};
//菜单显示
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;
}
//检测联系人是否存在
int isExist(Addressbooks* abs, string phone) {//如果存在,返回其下标;如果不存在,返回-1
for (int i = 0; i < abs->m_Size; i++) {
//如果存在
if (abs->personArray[i].m_Phone == phone) {
return i;
}
//如果不存在
else {
;
}
}
cout << "查无此人!" << endl;
return -1;
}
//1、添加联系人
void addPerson(Addressbooks* abs) {
//判断通讯录是否已满
if (abs->m_Size == MAX) {
cout << "通讯录已满,不能添加!" << endl;
return;
}
//添加联系人信息
else {
//姓名
cout << "请输入姓名:";
cin >> abs->personArray[abs->m_Size].m_Name;
//性别
while (1) {
cout << "1--男 2--女" << endl;
cout << "请输入性别:";
int sex = 0;
cin >> sex;
//判断性别输入是否正确
if (sex == 1 || sex == 2) {
abs->personArray[abs->m_Size].m_Sex = sex;
break;
}
else {
cout << "输入错误,请重新输入!";
}
}
//年龄
while (1) {
cout << "请输入年龄:";
int age = 0;
cin >> age;
if (age < 0) {
cout << "输入错误,请重新输入!" << endl;
}
else {
abs->personArray[abs->m_Size].m_Age = age;
break;
}
}
//号码
cout << "请输入号码:";
cin >> abs->personArray[abs->m_Size].m_Phone;
//住址
cout << "请输入住址:";
cin >> abs->personArray[abs->m_Size].m_Address;
cout << "添加成功!" << endl;
//更新通讯录人数
abs->m_Size++;
}
}
//2、显示联系人
void showPerson(Addressbooks* abs) {
//判断通讯录是否为空
if (abs->m_Size == 0) {
cout << "通讯录为空!" << endl;
}
else {
for (int i = 0; i < abs->m_Size; i++) {
//姓名
cout << "姓名:" << abs->personArray[i].m_Name << "\t";
//性别
if (abs->personArray[i].m_Sex == 1) {
cout << "性别:" << "男" << "\t";
}
else {
cout << "性别:" << "女" << "\t";
}
//年龄
cout << "年龄:" << abs->personArray[i].m_Age << "\t";
//号码
cout << "号码:" << abs->personArray[i].m_Phone << "\t";
//住址
cout << "住址:" << abs->personArray[i].m_Address << endl;
}
}
}
//3、删除联系人
void deletePerson(Addressbooks* abs, int person) {
//逻辑删除
for (int i = person; i < abs->m_Size - 1; i++) {//注意数组的越界访问
abs->personArray[i] = abs->personArray[i + 1];
}
cout << "删除成功!" << endl;
//更新通讯录人数
abs->m_Size--;
}
//4、查找联系人
void findPerson(Addressbooks* abs) {
//检测联系人是否存在
cout << "请输入要查找联系人的手机号码:";
string phone;
cin >> phone;
int person = isExist(abs, phone);
//所找联系人存在
if (person != -1) {
cout << "姓名:" << abs->personArray[person].m_Name << "\t";
cout << "性别:" << (abs->personArray[person].m_Sex == 1 ? "男" : "女") << "\t";//三目运算符
cout << "年龄:" << abs->personArray[person].m_Age << "\t";
cout << "号码:" << abs->personArray[person].m_Phone << "\t";
cout << "住址:" << abs->personArray[person].m_Address << endl;
}
else {
;
}
}
//5、修改联系人
void modifyPerson(Addressbooks* abs) {
cout << "请输入要修改联系人的手机号码:";
string phone;
cin >> phone;
int person = isExist(abs, phone);
if (person != -1) {//找到了
//修改
//判断通讯录是否已满
if (abs->m_Size == MAX) {
cout << "通讯录已满,不能添加!" << endl;
return;
}
//修改联系人信息
else {
cout << "1--修改该联系人的全部信息 2--修改该联系人的局部信息" << endl;
cout << "请输入您的选择:";
int select;
cin >> select;
//1--修改该联系人的全部信息
if (select == 1) {
cout << "以下是(1--修改该联系人的全部信息)部分";
cout << endl;
cout << "输入要修改的信息!" << endl;
//姓名
cout << "请输入姓名:";
cin >> abs->personArray[person].m_Name;
//性别
while (1) {
cout << "1--男 2--女" << endl;
cout << "请输入性别:";
int sex;
cin >> sex;
//判断性别输入是否正确
if (sex == 1 || sex == 2) {
abs->personArray[person].m_Sex = sex;
break;
}
else {
cout << "输入错误!";
}
}
//年龄
while (1) {
cout << "请输入年龄:";
if (abs->personArray[person].m_Age < 0) {
cout << "输入错误,请重新输入!" << endl;
}
else {
cin >> abs->personArray[person].m_Age;
break;
}
}
//号码
cout << "请输入号码:";
cin >> abs->personArray[person].m_Phone;
//住址
cout << "请输入住址:";
cin >> abs->personArray[person].m_Address;
cout << "修改成功!" << endl;
}
//2--修改该联系人的部分信息
else {
//联系人所拥有的信息的序号
//1--姓名 2--性别 3--年龄 4--号码 5--住址
cout << "以下是(2--修改该联系人的局部信息)部分";
cout << endl;
cout << "1--姓名 2--性别 3--年龄 4--号码 5--住址" << endl;
cout << "请输入您的选择:";
int choice;
cin >> choice;
while (1) {
switch (choice) {
case 1: {
//姓名
cout << "请输入姓名:";
cin >> abs->personArray[person].m_Name;
//判断是否继续修改
cout << "是否继续修改" << endl;
//1--停止修改 2--继续修改
cout << "1--停止修改 2--继续修改" << endl;
cout << "请输入您的选择:";
int option;
cin >> option;
if (option ==1) {
//停止修改
break;
}
else {
//继续修改
;
}
}
case 2: {
//性别
while (1) {
cout << "1--男 2--女" << endl;
cout << "请输入性别:";
int sex;
cin >> sex;
//判断性别输入是否正确
if (sex == 1 || sex == 2) {
abs->personArray[person].m_Sex = sex;
break;
}
else {
cout << "输入错误!";
}
}
//判断是否继续修改
cout << "是否继续修改" << endl;
//1--停止修改 2--继续修改
cout << "1--停止修改 2--继续修改" << endl;
cout << "请输入您的选择:";
int option;
cin >> option;
if (option == 1) {
//停止修改
break;
}
else {
//继续修改
;
}
}
case 3: {
//年龄
while (1) {
cout << "请输入年龄:";
if (abs->personArray[person].m_Age < 0) {
cout << "输入错误,请重新输入!" << endl;
}
else {
cin >> abs->personArray[person].m_Age;
break;
}
}
//判断是否继续修改
cout << "是否继续修改" << endl;
//1--停止修改 2--继续修改
cout << "1--停止修改 2--继续修改" << endl;
cout << "请输入您的选择:";
int option;
cin >> option;
if (option == 1) {
//停止修改
break;
}
else {
//继续修改
;
}
}
case 4: {
//号码
cout << "请输入号码:";
cin >> abs->personArray[person].m_Phone;
//判断是否继续修改
cout << "是否继续修改" << endl;
//1--停止修改 2--继续修改
cout << "1--停止修改 2--继续修改" << endl;
cout << "请输入您的选择:";
int option;
cin >> option;
if (option == 1) {
//停止修改
break;
}
else {
//继续修改
;
}
}
case 5: {
//住址
cout << "请输入住址:";
cin >> abs->personArray[person].m_Address;
//判断是否继续修改
cout << "是否继续修改" << endl;
//1--停止修改 2--继续修改
cout << "1--停止修改 2--继续修改" << endl;
cout << "请输入您的选择:";
int option;
cin >> option;
if (option == 1) {
//停止修改
break;
}
else {
//继续修改
;
}
}
default:
break;
}
cout << "修改成功" << endl;
break;
}
}
}
}
else {
;
}
}
//6、清空联系人
void clearPerson(Addressbooks* abs) {
//逻辑清空
abs->m_Size = 0;
cout << "清理成功!" << endl;
}
int main() {
//创建通讯录变量
Addressbooks abs;
abs.m_Size = 0;
while (1) {
//显示菜单
showMenu();
int select = 0;
cin >> select;
switch (select)
{
case 1://1、添加联系人
addPerson(&abs);
break;
case 2: //2、显示联系人
showPerson(&abs);
break;
case 3: {//3、删除联系人
//检测联系人是否存在
string phone;
cout << "请输入要删除联系人的手机号:";
cin >> phone;
int person = isExist(&abs, phone);
//删除联系人
deletePerson(&abs, person);
break;
}
case 4://4、查找联系人
findPerson(&abs);
break;
case 5://5、修改联系人
modifyPerson(&abs);
break;
case 6://6、清空联系人
clearPerson(&abs);
break;
case 0://0、退出通讯录
cout << "退出通讯录,欢迎下次使用!" << endl;
return 0;
default:
break;
}
system("pause");
system("cls");
}
}