文末有总结表格+学习心得❤️ 建议点赞收藏!
功能 | 描述 |
---|---|
添加联系人 | 记录姓名、性别、年龄、职业等完整信息 |
显示所有联系人 | 列表展示所有联系人详细信息 |
删除联系人 | 按姓名删除指定联系人 |
查找联系人 | 按姓名查看指定联系人详情 |
修改联系人 | 按姓名修改联系人信息 |
清空通讯录 | 一键清空所有联系人数据 |
退出系统 | 安全退出通讯录程序 |
#include
#include
#include
using namespace std;
// 联系人结构体
struct Contact {
string name;
string gender;
int age;
string job;
string phone;
string address;
};
// 通讯录管理系统
class PhoneBook {
private:
Contact contacts[500]; // 最多500个联系人
int count = 0; // 当前联系人数量
public:
// 添加联系人
void addContact() {
if (count >= 500) {
cout << "⚠️ 通讯录已满!最多500人" << endl;
return;
}
cout << "\n 添加新联系人" << endl;
cout << "---------------" << endl;
cout << "姓名: ";
cin >> contacts[count].name;
cout << "性别(男/女): ";
cin >> contacts[count].gender;
cout << "年龄: ";
cin >> contacts[count].age;
cout << "职业: ";
cin >> contacts[count].job;
cout << "手机号: ";
cin >> contacts[count].phone;
cout << "家庭住址: ";
cin.ignore(); // 清除缓冲区
getline(cin, contacts[count].address);
count++;
cout << "✅ 添加成功!" << endl;
}
// 显示所有联系人
void showAll() const {
if (count == 0) {
cout << " 通讯录为空!" << endl;
return;
}
cout << "\n 通讯录列表 (" << count << "人)" << endl;
cout << "======================================================" << endl;
cout << left << setw(10) << "姓名"
<< setw(5) << "性别"
<< setw(5) << "年龄"
<< setw(10) << "职业"
<< setw(15) << "手机号"
<< "家庭住址" << endl;
cout << "------------------------------------------------------" << endl;
for (int i = 0; i < count; i++) {
cout << left << setw(10) << contacts[i].name
<< setw(5) << contacts[i].gender
<< setw(5) << contacts[i].age
<< setw(10) << contacts[i].job
<< setw(15) << contacts[i].phone
<< contacts[i].address << endl;
}
cout << "======================================================" << endl;
}
// 查找联系人(返回指针)
Contact* findContact(const string& name) {
for (int i = 0; i < count; i++) {
if (contacts[i].name == name) {
return &contacts[i]; // 返回指针
}
}
return nullptr; // 未找到
}
// 删除联系人
void deleteContact() {
string name;
cout << "\n️ 输入要删除的联系人姓名: ";
cin >> name;
for (int i = 0; i < count; i++) {
if (contacts[i].name == name) {
// 用指针操作数组元素移动
for (int j = i; j < count - 1; j++) {
contacts[j] = contacts[j + 1];
}
count--;
cout << "✅ 删除成功!" << endl;
return;
}
}
cout << "⚠️ 未找到联系人: " << name << endl;
}
// 查找联系人详情
void searchContact() const {
string name;
cout << "\n 输入要查找的联系人姓名: ";
cin >> name;
for (int i = 0; i < count; i++) {
if (contacts[i].name == name) {
cout << "\n 联系人详情" << endl;
cout << "---------------" << endl;
cout << "姓名: " << contacts[i].name << endl;
cout << "性别: " << contacts[i].gender << endl;
cout << "年龄: " << contacts[i].age << endl;
cout << "职业: " << contacts[i].job << endl;
cout << "手机号: " << contacts[i].phone << endl;
cout << "家庭住址: " << contacts[i].address << endl;
return;
}
}
cout << "⚠️ 未找到联系人: " << name << endl;
}
// 修改联系人
void modifyContact() {
string name;
cout << "\n✏️ 输入要修改的联系人姓名: ";
cin >> name;
Contact* contact = findContact(name);
if (contact != nullptr) {
cout << "\n请修改信息 (直接回车保留原值)" << endl;
cout << "--------------------------------" << endl;
string input;
cout << "姓名(" << contact->name << "): ";
cin.ignore();
getline(cin, input);
if (!input.empty()) contact->name = input;
cout << "性别(" << contact->gender << "): ";
getline(cin, input);
if (!input.empty()) contact->gender = input;
cout << "年龄(" << contact->age << "): ";
getline(cin, input);
if (!input.empty()) contact->age = stoi(input);
cout << "职业(" << contact->job << "): ";
getline(cin, input);
if (!input.empty()) contact->job = input;
cout << "手机号(" << contact->phone << "): ";
getline(cin, input);
if (!input.empty()) contact->phone = input;
cout << "家庭住址(" << contact->address << "): ";
getline(cin, input);
if (!input.empty()) contact->address = input;
cout << "✅ 修改成功!" << endl;
} else {
cout << "⚠️ 未找到联系人: " << name << endl;
}
}
// 清空通讯录
void clearAll() {
count = 0;
cout << " 通讯录已清空!" << endl;
}
};
// 显示菜单
void showMenu() {
cout << "\n 手机通讯录管理系统" << endl;
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;
cout << "请选择操作: ";
}
int main() {
PhoneBook phoneBook;
int choice = 0;
do {
showMenu();
cin >> choice;
switch(choice) {
case 1: // 添加
phoneBook.addContact();
break;
case 2: // 显示
phoneBook.showAll();
break;
case 3: // 删除
phoneBook.deleteContact();
break;
case 4: // 查找
phoneBook.searchContact();
break;
case 5: // 修改
phoneBook.modifyContact();
break;
case 6: // 清空
phoneBook.clearAll();
break;
case 0: // 退出
cout << " 感谢使用,再见!" << endl;
break;
default:
cout << "⚠️ 无效选项,请重新输入!" << endl;
}
} while(choice != 0);
return 0;
}
添加新联系人
---------------
姓名: 张三
性别(男/女): 男
年龄: 28
职业: 工程师
手机号: 1666666666
家庭住址: 北京市海淀区
✅ 添加成功!
通讯录列表 (3人)
======================================================
姓名 性别 年龄 职业 手机号 家庭住址
------------------------------------------------------
张三 男 28 工程师 1666666666 北京市海淀区
李四 女 25 设计师 13900139000 上海市浦东新区
王五 男 30 教师 13700137000 广州市天河区
======================================================
输入要查找的联系人姓名: 李四
联系人详情
---------------
姓名: 李四
性别: 女
年龄: 25
职业: 设计师
手机号: 13900139000
家庭住址: 上海市浦东新区
✏️ 输入要修改的联系人姓名: 王五
请修改信息 (直接回车保留原值)
--------------------------------
姓名(王五): 王武
性别(男):
年龄(30): 32
职业(教师): 教授
手机号(13700137000):
家庭住址(广州市天河区): 广州市天河区中山大道
✅ 修改成功!
️ 输入要删除的联系人姓名: 张三
✅ 删除成功!
通讯录已清空!
感谢使用,再见!
知识点 | 应用场景 | 代码示例 |
---|---|---|
结构体定义 | 存储联系人信息 | struct Contact { ... }; |
结构体数组 | 管理多个联系人 | Contact contacts[500]; |
指针操作 | 查找和修改联系人 | Contact* contact = findContact(name); |
const修饰符 | 保护显示函数中的数据 | void showAll() const; |
函数封装 | 每个功能独立封装 | addContact() , deleteContact() 等 |
数组操作 | 删除联系人时的数据移动 | contacts[j] = contacts[j+1]; |
输入输出控制 | 格式化显示联系人列表 | setw() , left 等操纵符 |
✨开发心得:
1️⃣ 结构体是数据容器 - 把联系人信息打包成结构体,管理更轻松
2️⃣ 指针是精准定位器 - 通过指针快速找到要操作的联系人
3️⃣ const是数据保镖 - 确保显示数据时不被意外修改
4️⃣ 函数分治策略 - 每个功能独立封装,代码清晰易维护
5️⃣ 用户交互友好 - 添加emoji和格式美化提升使用体验
本程序综合运用了C++核心知识点,代码完整可运行!