C++通讯录管理系统

通讯录管理系统

敲了几个小时代码,终于完成了,啊~~~途中遇到种种bug,但是经过一次又一次的调试,还是成功做出了如下几个功能:

0、退出通讯录

1、添加联系人

2、显示联系人

3、删除联系人

4、查找联系人

5、修改联系人

6、清空联系人

初学C++没多久,这也是第一次尝试做,代码还有待优化,适合初学者借鉴,噗哈哈。也希望能有热心大佬、小佬们能帮我指出错误,自己测试了蛮多,应该没太大问题。

源码如下,需要的小伙伴自行拿走,当然能点个赞鼓励鼓励最好啦!

#include
using namespace std;
#include
#define Max 100

//创建联系人结构体
struct person {
     
	
	string name;
	int age = 0;
	int sex = 0;//1->男 2->女
	string phone;
};
//创建通讯录结构体
struct addressBooks {
     
	//联系人结构体数组
	struct person personArr[Max];
	//通讯录中当前记录联系人个数
	int size = 0;
};

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;
}

//1、添加联系人
void addPerson(struct addressBooks* abs) {
     
	//通讯录已满,就不能再添加
	if (abs->size == Max) {
     
		cout << "通讯录已满,无法添加!" << endl;
		return;
	}
	else {
     //添加具体联系人

		//姓名
		cout << "请输入姓名:" << endl;
		string name;
		cin >> name;
		abs->personArr[abs->size].name = name;

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

		//年龄
		cout << "请输入年龄:" << endl;
		int age = 0;
		cin >> age;
		abs->personArr[abs->size].age = age;

		//电话
		cout << "请输入电话:" << endl;
		string phone;
		cin >> phone;
		abs->personArr[abs->size].phone = phone;
		//更新一下通讯录中成员人数
		abs->size++;
		cout << "添加成功!" << endl;
		system("pause");//暂停
		system("cls");//清屏
	}
}
//检测联系人是否存在
int detectPerson(struct addressBooks* abs, string name) {
     
	for (int i = 0; i < abs->size; i++) {
     

		if (name == abs->personArr[i].name) {
     //找到联系人

			return i;// i 返回联系人再数组中的位置
		}
	}
	return -1;//未找到联系人返回 -1
}
//2、显示联系人
void showBooks(struct addressBooks abs) {
     
	if (abs.size == 0) {
     
		cout << "联系人为空!" << endl;
	}
	else {
     
		cout << "当前联系人名单:" << endl;
		for (int i = 0; i < abs.size; i++) {
     
			cout << "姓名:" << abs.personArr[i].name 
				 << "\t性别:" << (abs.personArr[i].sex==1?"男":"女")//=1则输出 男 否则输出 女
				 << "\t年龄:" << abs.personArr[i].age 
				 << "\t电话:" << abs.personArr[i].phone << endl;
		}
	}
	system("pause");//暂停
	system("cls");//清屏
}

//3、删除联系人人
void deletePerson(struct addressBooks* abs) {
     
	cout << "请输入要删除联系人姓名:" << endl;
	string name;
	int y = 0;
	cin >> name;
	y=detectPerson(abs, name);//检测联系人是否存在
	
	if (y != -1) {
     //找到联系人,进行删除
		for (int i = y; i < abs->size; i++) {
     
			//数据前移一位
			abs->personArr[i] = abs->personArr[i + 1];
		}
		abs->size--;//更新通讯录人数
		cout << "删除成功!" << endl;
	}
	else {
     //未找到联系人
		cout << "未找到联系人" << endl;		
	}
	system("pause");//暂停
	system("cls");//清屏	
}
//4、查找联系人
void findPerson(struct addressBooks abs) {
     
	string name;
	int n = 0;//用来存0、1   0代表没找到联系人,1代表找到联系人
	cout << "输入要查找联系人姓名:";
	cin >> name;

	for (int i = 0; i < abs.size; i++) {
     

		if (name == abs.personArr[i].name) {
     //找到联系人

			cout << "姓名:" << abs.personArr[i].name
				<< "\t性别:" << (abs.personArr[i].sex == 1 ? "男" : "女")//=1则输出 男 否则输出 女
				<< "\t年龄:" << abs.personArr[i].age
				<< "\t电话:" << abs.personArr[i].phone << endl;
			n = 1;
		}
		if (i+1 == abs.size && n == 1) {
     //循环找完才结束函数,可将名字相同的联系人都找出,n=1说明找到了联系人
			system("pause");//暂停
			system("cls");//清屏		
		}
		if (i + 1 == abs.size && n == 0) {
     //n=0 说明未找到联系人
			cout << "未找到联系人!" << endl;			
			system("pause");//暂停
			system("cls");//清屏		
		}
	}
}
//5、修改联系人
void alterPerson(struct addressBooks* abs) {
     
	cout << "请输入要修改的联系人的姓名:" << endl;
	string name;
	int y = 0;
	cin >> name;
	y = detectPerson(abs, name);//检测联系人是否存在
	if (y != -1) {
     //找到联系人,进行修改
		
		//姓名
		cout << "请输入姓名:" << endl;
		string name;
		cin >> name;
		abs->personArr[y].name = name;

		//性别
		cout << "请输入性别:" << endl;
		cout << "1---男" << endl;
		cout << "2---女" << endl;
		int sex = 0;
		while (1) {
     
			cin >> sex;
			if (sex == 1 || sex == 2) {
     
				abs->personArr[y].sex = sex;
				break;
			}
			cout << "输入有误,请重新输入!" << endl;
		}

		//年龄
		cout << "请输入年龄:" << endl;
		int age = 0;
		cin >> age;
		abs->personArr[y].age = age;

		//电话
		cout << "请输入电话:" << endl;
		string phone;
		cin >> phone;
		abs->personArr[y].phone = phone;
		cout << "修改成功!" << endl;
	}
	else {
     //未找到联系人!
		cout << "未找到联系人!" << endl;
	}
	system("pause");//暂停
	system("cls");//清屏
}
//6、清空联系人
void emptyBooks(struct addressBooks *abs) {
     

	for (int i = 0; i <= abs->size; i++) {
     
		//数据前移一位
		abs->personArr[i] = abs->personArr[i + 1];
	}
	abs->size = 0;//清空后联系人为0个;
	cout << "联系人已清空!" << endl;
	system("pause");
	system("cls");
}

int main() {
     

	//创建通讯录
	struct addressBooks abs;
	//初始化通讯录中当前人数
	abs.size = 0;

	int select = 0;

	while (1) {
     
		showMenu();//功能菜单显示
		cout << "选择要使用的功能(输入序号):" << endl;
		cin >> select;
		if (select >=0 && select <7) {
     
			switch (select) {
     
				case 1:addPerson(&abs);		//1、添加联系人
					break;
				case 2:showBooks(abs);		//2、显示联系人
					break;
				case 3:deletePerson(&abs);	//3、删除联系人
					break;
				case 4:findPerson(abs);		//4、查找联系人
					break;
				case 5:alterPerson(&abs);	//5、修改联系人
					break;
				case 6:emptyBooks(&abs);	//6、清空联系人
					break;
				case 0: {
     					//0、退出通讯录
					cout << "欢迎下次使用!" << endl;
					system("pause");
					return 0;
				}
			}
		}
		else {
     
			cout << "没有这个选项!请重新输入!" << endl;
			system("pause");
			system("cls");
		}
	}
	return 0;
}

你可能感兴趣的:(大学生自学,个人学习记录,通讯录管理系统,c++)