#include <iostream>
#include <string>
using namespace std;
#define Max 1000//最大人数
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;
}
// 联系人结构体
struct Person
{
string name;
int age;
int sex;// 1男 2女
string phone;
string addr;
};
// 通信录结构体
struct AddressBooks
{
Person personArray[Max]; // 通讯录保持的联系人数组
int count; // 通讯录总条数
};
// 添加联系人
void addPerson(AddressBooks* addressBooks) {// 传入通讯录的地址
//判断电话本是否满了
if (addressBooks->count >= 1000) {
cout << "通讯录以满,无法添加。" << endl;
return;
}
else {
// 输入姓名
cout << "请输入姓名:" << endl;
string name;
cin >> name;
addressBooks->personArray[addressBooks->count].name = name;
// 输入性别
while (true)
{
cout << "请输入性别:(1.男 2.女))" << endl;
int sex;
cin >> sex;
if (sex == 1 || sex == 2) {
addressBooks->personArray[addressBooks->count].sex = sex;
break;
}
else
{
cout << "输入有误,请重新输入1(男)或2(女):" << endl;
}
}
// 输入年龄
while (true)
{
cout << "请输入年龄:" << endl;
int age;
cin >> age;
if (age > 0 && age <= 200) {
addressBooks->personArray[addressBooks->count].age = age;
break;
}
else {
cout << "请输入有效的年龄数:" << endl;
}
}
// 输入联系电话
while (true)
{
cout << "请输入联系电话:" << endl;
string phone;
cin >> phone;
if (phone.size() == 11) {
addressBooks->personArray[addressBooks->count].phone = phone;
break;
}
else {
cout << "请输入有效的11位电话号码:" << endl;
}
}
// 输入联系地址
cout << "请输入联系地址:" << endl;
string addr;
cin >> addr;
addressBooks->personArray[addressBooks->count].addr = addr;
addressBooks->count++;
system("cls"); // 清屏
cout << "--- 联系人已添加成功!---:" << endl;
cout << endl;
}
}
// 显示所有人的信息
void showPerson(AddressBooks* addressBooks) {
if (addressBooks->count != 0) {
for (int i = 0; i < addressBooks->count; i++)
{
cout << "姓名:" << addressBooks->personArray[i].name << "\t";
cout << "年龄:" << addressBooks->personArray[i].age << "\t";
cout << "性别:" << (addressBooks->personArray[i].sex == 1 ? "男" : "女") << "\t";
cout << "电话:" << addressBooks->personArray[i].phone << "\t";
cout << "地址:" << addressBooks->personArray[i].addr << endl;
}
}
else
{
cout << "--- 通讯录为空 ---" << endl;
cout << endl;
}
}
// 查找联系人
int checkPerson(AddressBooks* addressBooks, string target_name) {
// return: -1 没有该联系人 / 否则返回下标
cout << "通讯录总条数:" << addressBooks->count << endl;
for (int i = 0; i < addressBooks->count; i++)
{
if (addressBooks->personArray[i].name == target_name) {
return i;
}
}
return -1;
}
void deletePerson(AddressBooks* addressBooks) {
// 通讯录中是否存在联系人
while (true)
{
cout << "请输入要删除的联系人姓名:(按0退出)" << endl;
string target_name;
cin >> target_name;
if (target_name != "0") {
int result = checkPerson(addressBooks, target_name);
if (result != -1) {
for (int i = result; i < addressBooks->count; i++)
{
addressBooks->personArray[i] = addressBooks->personArray[i + 1];
}
addressBooks->count--;
break;
}
else
{
cout << "查无此人,请重新输入:" << endl;
}
}
else {
system("cls");
return;
}
}
}
void findPerson(AddressBooks * addressBooks) {
while (true)
{
cout << "请输入要查找的联系人姓名:(按0退出)" << endl;
string target_name;
cin >> target_name;
if (target_name != "0") {
int result = checkPerson(addressBooks, target_name);
if (result != -1) {
cout << "姓名:" << addressBooks->personArray[result].name << "\t";
cout << "年龄:" << addressBooks->personArray[result].age << "\t";
cout << "性别:" << (addressBooks->personArray[result].sex == 1 ? "男" : "女") << "\t";
cout << "电话:" << addressBooks->personArray[result].phone << "\t";
cout << "地址:" << addressBooks->personArray[result].addr << endl;
cout << endl;
}
else {
cout << "查无此人,请重新输入:" << endl;
}
}
else {
system("cls"); // 清屏
return;
}
}
}
// 修改通讯录
void modifyPerson(AddressBooks* addressBooks) {
while (true)
{
cout << "请输入要修改的联系人姓名:(按0退出)" << endl;
string target_name;
cin >> target_name;
if (target_name != "0") {
int result = checkPerson(addressBooks, target_name);
if (result != -1) {
cout << endl;
cout << "--- 开始修改 ---" << endl;
// 输入姓名
cout << "请输入姓名:" << endl;
string name;
cin >> name;
addressBooks->personArray[result].name = name;
// 输入性别
while (true)
{
cout << "请输入性别:(1.男 2.女))" << endl;
int sex;
cin >> sex;
if (sex == 1 || sex == 2) {
addressBooks->personArray[result].sex = sex;
break;
}
else
{
cout << "输入有误,请重新输入1(男)或2(女):" << endl;
}
}
// 输入年龄
while (true)
{
cout << "请输入年龄:" << endl;
int age;
cin >> age;
if (age > 0 && age <= 200) {
addressBooks->personArray[result].age = age;
break;
}
else {
cout << "请输入有效的年龄数:" << endl;
}
}
// 输入联系电话
while (true)
{
cout << "请输入联系电话:" << endl;
string phone;
cin >> phone;
if (phone.size() == 11) {
addressBooks->personArray[result].phone = phone;
break;
}
else {
cout << "请输入有效的11位电话号码:" << endl;
}
}
// 输入联系地址
cout << "请输入联系地址:" << endl;
string addr;
cin >> addr;
addressBooks->personArray[result].addr = addr;
cout << "--- 联系人已修改成功!---:" << endl;
cout << endl;
}
else {
cout << "查无此人,请重新输入:" << endl;
}
}
else {
system("cls"); // 清屏
return;
}
}
}
void cleanPerson(AddressBooks * addressBooks) {
while (true)
{
cout << "是否确认清空通讯录?(Y/N)" << endl;
string target_name;
cin >> target_name;
if (target_name == "Y" || target_name == "N") {
if (target_name == "Y") {
addressBooks->count = 0;
cout << "--- 通讯录已清空 ---" << endl;
cout << endl;
break;
}
else
{
system("cls"); // 清屏
return;
}
}
else {
cout << "输入有误请重新输入" << endl;
}
}
}
int main() {
// 初始化通讯录
AddressBooks addressBooks;
addressBooks.count = 0;
// 初始化选择
int select = 0;
// 循环程序
while (true)
{
showMenu();
cout << "请选择您所需要的服务:" << endl;
cin >> select;
switch (select)
{
case 1:// 添加联系人
addPerson(&addressBooks);// 传入通讯录地址
break;
case 2:// 显示联系人
showPerson(&addressBooks);// 显示通讯录内容
break;
case 3:// 删除联系人
deletePerson(&addressBooks);// 删除联系人
break;
case 4:// 查找联系人
findPerson(&addressBooks);
break;
case 5:// 修改联系人
modifyPerson(&addressBooks);
break;
case 6:// 清空联系人
cleanPerson(&addressBooks);
break;
case 0:// 退出通讯录
cout << "系统已退出,感谢您的支持,欢迎再次使用。" << endl;
system("pause");
return 0;
default:
cout << "输入有误,请选择1-6服务,按0退出。" << endl;
break;
}
}
return 0;
}
|