通讯录管理系统

发布时间 2023-03-29 18:05:13作者: 比尔的歌
#include <stdlib.h>
#include <iostream>
#include <ostream>
#include <string>
using namespace std;

#define MAX 100 //最大容量

//联系人结构体 姓名、性别、年龄、联系电话、家庭住址
struct Person {
	string Name;  //姓名
	int Sex;     // 1为男 2为女
	int Age;     //年龄
	string Phone;   //手机号
	string Addr; //家庭住址
};

struct Addressbooks {
	struct Person personArray[MAX];
	int 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;
}

void AddPerson(Addressbooks* ans) { //添加联系人
	if (ans->size >= MAX) {
		cout << "通讯录已满,无法添加" << endl;
		return;
	} else {
		string name;
		cout << "请输入姓名:" << endl;
		cin >> name;
		ans->personArray[ans->size].Name = name;

		cout << "请输入性别:" << endl;
		cout << "1 -- 男" << endl;
		cout << "2 -- 女" << endl;
		int sex = 0;
		while (true) {
			cin >> sex;
			if (sex == 1 || sex == 2) {
				ans->personArray[ans->size].Sex = sex;
				break;
			} else {
				cout << "输入有误,请重新输入";
			}
		}

		cout << "请输入年龄:" << endl;
		int age = 0;
		cin >> age;
		ans->personArray[ans->size].Age = age;

		cout << "请输入联系电话:" << endl;
		string phone = "";
		cin >> phone;
		ans->personArray[ans->size].Phone = phone;

		cout << "请输入家庭住址:" << endl;
		string address;
		cin >> address;
		ans->personArray[ans->size].Addr = address;

		ans->size += 1;

		cout << "添加成功" << endl;
		system("pause");
		system("cls"); //清屏
	}
}

void ShowPerson(Addressbooks * ans) { //显示联系人
	if(ans->size == 0) {
		cout << "当前记录为空" << endl;
	} else {
		for(int i = 0; i < ans->size; i++) {
			cout << "姓名:" << ans->personArray[i].Name << "\t";
			cout << "性别:" << (ans->personArray[i].Sex == 1 ? "男" : "女") << "\t";
			cout << "年龄:" << ans->personArray[i].Age << "\t";
			cout << "电话:" << ans->personArray[i].Phone << "\t";
			cout << "住址:" << ans->personArray[i].Addr << endl;
		}
	}
	system("pause");
	system("cls");
}

int isExist(Addressbooks *ans , string name) { //判断联系人
	for(int i = 0; i < ans->size ; i ++) {
		if(ans->personArray[i].Name == name) {
			return i;
		}
	}
	return -1;
}

void DeletePerson(Addressbooks *ans) { //删除联系人
	cout << "请输入您要删除的联系人" << endl;
	string name;
	cin >> name;
	int res = isExist(ans , name);
	if(res != -1) {
		ans->personArray[res] = ans->personArray[res + 1];
		ans->size --;
		cout << "删除成功" << endl;
	} else {
		cout << "查无此人" << endl;
	}
	system("pause");
	system("cls");

}

void FindPerson(Addressbooks * ans) { //查找联系人
	cout << "请输入您要查找的联系人" << endl;
	string name;
	cin >> name;

	int ret = isExist(ans, name);
	if (ret != -1) {
		cout << "姓名:" << ans->personArray[ret].Name << "\t";
		cout << "性别:" << ans->personArray[ret].Sex << "\t";
		cout << "年龄:" << ans->personArray[ret].Age << "\t";
		cout << "电话:" << ans->personArray[ret].Phone << "\t";
		cout << "住址:" << ans->personArray[ret].Addr << endl;
	} else {
		cout << "查无此人" << endl;
	}

	system("pause");
	system("cls");
}

void ModifyPerson(Addressbooks * ans) { //修改联系人
	cout << "请输入您要修改的联系人" << endl;
	string name;
	cin >> name;

	int ret = isExist(ans, name);
	if (ret != -1) {
		//姓名
		string name;
		cout << "请输入姓名:" << endl;
		cin >> name;
		ans->personArray[ret].Name = name;

		cout << "请输入性别:" << endl;
		cout << "1 -- 男" << endl;
		cout << "2 -- 女" << endl;

		//性别
		int sex = 0;
		while (true) {
			cin >> sex;
			if (sex == 1 || sex == 2) {
				ans->personArray[ret].Sex = sex;
				break;
			}
			cout << "输入有误,请重新输入";
		}

		//年龄
		cout << "请输入年龄:" << endl;
		int age = 0;
		cin >> age;
		ans->personArray[ret].Age = age;

		//联系电话
		cout << "请输入联系电话:" << endl;
		string phone = "";
		cin >> phone;
		ans->personArray[ret].Phone = phone;

		//家庭住址
		cout << "请输入家庭住址:" << endl;
		string address;
		cin >> address;
		ans->personArray[ret].Addr = address;

		cout << "修改成功" << endl;
	} else {
		cout << "查无此人" << endl;
	}

	system("pause");
	system("cls");

}

void CleanPerson(Addressbooks * ans) { //清空通讯录
	ans->size = 0;
	cout << "通讯录已清空" << endl;
	system("pause");
	system("cls");
}

int main() {
	Addressbooks ans;
	ans.size = 0;
	int select = 0;
	while(1) {
		ShowMenu();
		cin >> select;
		if (select == 1) {
			AddPerson(&ans);
		} else if (select == 2) {
			ShowPerson(&ans);
		} else if (select == 3) {
			DeletePerson(&ans);
		} else if (select == 4) {
			FindPerson(&ans);
		} else if (select == 5) {
			ModifyPerson(&ans);
		} else if (select == 6) {
			CleanPerson(&ans);
		} else if (select == 0) {
			cout << "欢迎下次使用" << endl;
			return 0;
			break;
		} else {
			break;
		}
	}
	return 0;
}