#include<iostream>
#include<string>
using namespace std;
#define MAX 1000
//联系人和通讯录结构体
struct linkman
{
string NAME;
string SEX;
int AGE;
string PHONE;
string ADDRESS;
};
struct addresslist
{
linkman person[MAX];
int size=0;
};
//显示菜单
void menu()
{
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;
}
//1、添加联系人
void add(addresslist* p1,int* p2)
{
if (*p2 == MAX-1) {
cout << "人数已满,无法添加" << endl;
}
if (*p2 < MAX - 1) {
//姓名
string name;
cout << "请输入姓名" << endl;
cin >> name;
p1->person[*p2].NAME = name;
//性别
string sex;
cout << "请输入性别" << endl;
cin >> sex;
p1->person[*p2].SEX = sex;
//年龄
int age;
cout << "请输入年龄" << endl;
cin >> age;
p1->person[*p2].AGE = age;
//联系电话
string phone;
cout << "请输入联系电话" << endl;
cin >> phone;
p1->person[*p2].PHONE = phone;
//请输入家庭地址
string address;
cout << "请输入家庭住址" << endl;
cin >> address;
p1->person[*p2].ADDRESS = address;
cout << "添加成功" << endl;
(*p2)++;
}
system("pause");
system("cls");
}
//2、显示联系人
void show(addresslist* p1, int* p2)
{
if ((*p2) == 0){
cout << "通讯录为空!" << endl;
}
else{
for (int i = 0; i < *p2; i++){
cout << "姓名:" << p1->person[i].NAME << "\t";
cout << "性别:" << p1->person[i].SEX << "\t";
cout << "年龄:" << p1->person[i].AGE << "\t";
cout << "联系电话:" << p1->person[i].PHONE << "\t";
cout << "家庭住址:" << p1->person[i].ADDRESS << endl;
}
}
system("pause");
system("cls");
}
//判断联系人是否存在
int isexist(addresslist* p1, int* p2,string* p3)
{
for (int i = 0; i < *p2; i++) {
if (p1->person[i].NAME == *p3) {
return i;
}
}
return MAX;
}
//3、删除联系人
void expurgate(addresslist* p1, int* p2)
{
if ((*p2) == 0) {
cout << "通讯录为空,无法删除!" << endl;
}
else {
string name;
cout << "请输入你要删除的联系人姓名" << endl;
cin >> name;
//判断这个人是否存在
int result=isexist(p1, p2,&name);
if (result == MAX) {
cout << "查无此人" << endl;
}
//删除该联系人
int len = *p2;//原长度
for (int i = 0; i < *p2; i++) {
if (p1->person[i].NAME == name) {
for (int j = i; j < len; j++) {
p1->person[j] = p1->person[j + 1];
}
cout << "删除成功!" << endl;
(*p2)--;
}
}
}
system("pause");
system("cls");
}
//4、查找联系人
void seek(addresslist* p1, int* p2)
{
if ((*p2) == 0) {
cout << "通讯录为空!" << endl;
}
else {
cout << "请输入您想查找的联系人的姓名" << endl;
string name;
cin >> name;
//判断这个人是否存在
int result = isexist(p1, p2, &name);
if (result == MAX) {
cout << "查无此人" << endl;
}
else{
cout << "姓名:" << p1->person[result].NAME << "\t";
cout << "性别:" << p1->person[result].SEX << "\t";
cout << "年龄:" << p1->person[result].AGE << "\t";
cout << "联系电话:" << p1->person[result].PHONE << "\t";
cout << "家庭住址:" << p1->person[result].ADDRESS << endl;
}
}
system("pause");
system("cls");
}
//5、修改联系人
void change(addresslist* p1, int* p2)
{
if ((*p2) == 0) {
cout << "通讯录为空!" << endl;
}
else {
cout << "请输入您想修改的联系人的姓名" << endl;
string name;
cin >> name;
//判断这个人是否存在
int result = isexist(p1, p2, &name);
if (result == MAX) {
cout << "查无此人" << endl;
}
//修改联系人
for (int i = 0; i < *p2; i++) {
if (p1->person[i].NAME == name) {
//姓名
string name;
cout << "请输入修改后的姓名" << endl;
cin >> name;
p1->person[i].NAME = name;
//性别
string sex;
cout << "请输入修改后的性别" << endl;
cin >> sex;
p1->person[i].SEX = sex;
//年龄
int age;
cout << "请输入修改后的年龄" << endl;
cin >> age;
p1->person[i].AGE = age;
//联系电话
string phone;
cout << "请输入修改后的电话" << endl;
cin >> phone;
p1->person[i].PHONE = phone;
//家庭住址
string address;
cout << "请输入修改后的家庭地址" << endl;
cin >> address;
p1->person[i].ADDRESS = address;
cout << "修改成功!" << endl;
}
}
}
system("pause");
system("cls");
}
//6、清空通讯录
void clean(int* p2)
{
char choice;
if ((*p2) == 0) {
cout << "通讯录为空!" << endl;
}
else
{
cout << "确定要清空通讯录吗?(y是/n否)" << endl;
while (true)
{
cin >> choice;
if ((choice == 'y') || (choice == 'n')) {
if (choice == 'y') {
(*p2) = 0;
cout << "已清空通讯录" << endl;
break;
}
else
break;
}
else
cout << "输入错误,请重新输入" << endl;
}
}
system("pause");
system("cls");
}
//主函数
int main()
{
addresslist addressbook;
addressbook.size = 0;
int choice;
while(true)
{
menu();
cin >> choice;
switch(choice)
{
case 1://1、添加联系人
add(&addressbook,&addressbook.size);
break;
case 2://2、显示联系人
show(&addressbook, &addressbook.size);
break;
case 3://3、删除联系人
expurgate(&addressbook, &addressbook.size);
break;
case 4://4、查找联系人
seek(&addressbook, &addressbook.size);
break;
case 5://5、修改联系人
change(&addressbook, &addressbook.size);
break;
case 6://6、清空通讯录
clean(&addressbook.size);
break;
case 0://退出通讯录
return 0;
default:
cout << "输入错误,请重新输入" << endl;
break;
//输入错误
}
}
return 0;
}
通讯录管理系统
最新推荐文章于 2024-10-18 22:48:33 发布