0
点赞
收藏
分享

微信扫一扫

C++模拟通讯录管理系统-----C++学习笔记

大雁f 2022-02-22 阅读 33

🌴 C++学习日常(源码在底部)

C++模拟通讯录管理系统各大功能需求

🍃 C++模拟通讯录函数封装分解

🎧 声明以及头文件

#include <iostream>
using namespace std;
#include <string>
#define LOGIN_NUM 3		//登录失败次数
#define MAX_SIZE 50		//最大账号存储数
#define MAX_PERSON 200	//通讯录最大存储人数

void RegisteUser(DataBase* data);
void LoginUser(DataBase* data);
void FindPasswd(DataBase* data);
void InManage(AddressList* abs);
void AddPerson(AddressList* abs);
void DeletePerson(AddressList* abs);
void PrintPerson(AddressList* abs);
void FindPerson(AddressList* abs);
void ClearPerson(AddressList* abs);
void Modify(AddressList* abs, int i, string name);
void ModifyPerson(AddressList* abs);
void ShowMenu1();
void ShowMenu2();

👤 注册用户

struct User {
	string Account;	//账号
	string Passwd;	//密码
	string Encrypted;	//密保
};

struct DataBase {
	struct User dataBases[MAX_SIZE];	//账号数据库数组
	int d_Size;
};
//注册用户
void RegisteUser(DataBase* data) {
	string account, passwd, encrypted;
	cout << "请输入创建的账户:";
	cin >> account;
	data->dataBases[data->d_Size].Account = account;
	cout << "请输入创建的密码:";
	cin >> passwd;
	data->dataBases[data->d_Size].Passwd = passwd;
	cout << "请输入密保(找回密码):";
	cin >> encrypted;
	data->dataBases[data->d_Size].Encrypted = encrypted;
	data->d_Size++;

	cout << "创建账户成功" << endl;
	system("pause");
	system("cls");
}

📨 登录用户

//登录用户
void LoginUser(DataBase* data,AddressList* abs) {
	string account, passwd;
	int flag = 0,j = 1;
	while(true){
		if (j > LOGIN_NUM) {
			cout << "登录失败次数过3,请重新尝试" << endl;
			break;
		}
		else if (flag == 1) {
			break;
		}
		cout << "请输入登录账户:";
		cin >> account;
		cout << "请输入登录密码:";
		cin >> passwd;
		for (int i = 0; i < data->d_Size; i++) {
			if (data->dataBases[i].Account == account && data->dataBases[i].Passwd == passwd) {
				flag = 1;
				cout << "登陆成功" << endl;
				system("pause");
				system("cls");
				InManage(abs);
			}
		}
		if (flag == 0 && j <= LOGIN_NUM) {
			cout << "登录失败,请重新输入账户以及密码" << endl;
			system("pause");
			system("cls");
			j++;
		}
	}
}

🖐 找回密码

//找回密码
void FindPasswd(DataBase* data){
	int flag = 0;
	if (data->d_Size == 0){
		cout << "没有任何账户,找回密码无效" << endl;
	}
	else {
		string account, encrypted;
		cout << "请输入该账户:";
		cin >> account;
		cout << "请输入该账户的密保:";
		cin >> encrypted;
		for (int i = 0; i < data->d_Size; i++) {
			if (data->dataBases[i].Account == account && data->dataBases[i].Encrypted == encrypted){
				cout << "该账户的密码 = " << data->dataBases[i].Passwd << endl;
				flag = 1;
				break;
			}
		}
		if (flag == 1){
			cout << "成功找回密码,请记住" << endl;
			system("pause");
			system("cls");
		}
		else {
			cout << "找回密码失败,账户错误或者密保错误,请重试" << endl;
			system("pause");
			system("cls");
		}
	}
}

🐇 退出系统

1️⃣ 添加联系人功能

struct Person {
	string p_Name;	//姓名
	int p_Age;		//年龄
	string p_Phone;	//电话
	string p_Sex;	//性别
	string p_Addr;	//地址
};

struct AddressList {
	struct Person personArray[MAX_PERSON];	//通讯录保存信息的数组
	int p_Size;		//记录通讯录中的人数
};
//添加联系人函数
void AddPerson(AddressList* abs) {
	if (abs->p_Size == MAX_PERSON) {
		cout << "抱歉,空间已满,无法添加,请选择其他操作" << endl;
	}
	string name, sex, phone, addr;
	int age;
	cout << "请输入添加联系人的姓名:";
	cin >> name;
	abs->personArray[abs->p_Size].p_Name = name;
	cout << "请输入添加联系人的年龄:";
	cin >> age;
	abs->personArray[abs->p_Size].p_Age = age;
	cout << "请输入添加联系人的电话:";
	cin >> phone;
	abs->personArray[abs->p_Size].p_Phone = phone;
	cout << "请输入添加联系人的性别:";
	cin >> sex;
	abs->personArray[abs->p_Size].p_Sex = sex;
	cout << "请输入添加联系人的住址:";
	cin >> addr;
	abs->personArray[abs->p_Size].p_Addr = addr;

	abs->p_Size++;	//人数++

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

2️⃣ 删除联系人功能

//删除联系人函数
void DeletePerson(AddressList* abs) {
	if (abs->p_Size == 0) {
		cout << "通讯录为空" << endl;
		system("pause");
		system("cls");
	}else {
		int flag = 0;
		string name;
		cout << "请输入删除的联系人姓名:";
		cin >> name;
		for (int i = 0; i < abs->p_Size; i++) {
			if (abs->personArray[i].p_Name == name) {
				for (int j = i; j <=abs->p_Size-1; j++) {	//删除联系人(实质信息前移覆盖)
					abs->personArray[j] = abs->personArray[j+1];
				}
				abs->p_Size--;
				flag = 1;
				cout << "删除完成" << endl;
				system("pause");
				system("cls");
			}
		}
		if (flag == 0){
			cout << "没有此联系人" << endl;
			system("pause");
			system("cls");
		}
	}
}

3️⃣ 显示联系人功能

//显示联系人函数
void PrintPerson(AddressList* abs) {
	if (abs->p_Size == 0) {
		cout << "当前通讯录为空" << endl;
		system("pause");
		system("cls");
	}
	else {
		cout << "=============================================== 通讯录 ================================================" << endl;
		for (int i = 0; i < abs->p_Size; i++) {
			cout << "姓名:" << abs->personArray[i].p_Name << "\t";
			cout << "年龄:" << abs->personArray[i].p_Age << "\t";
			cout << "电话:" << abs->personArray[i].p_Phone << "\t";
			cout << "性别:" << abs->personArray[i].p_Sex << "\t";
			cout << "住址:" << abs->personArray[i].p_Addr << endl;
		}
		cout << "=======================================================================================================" << endl;
		cout << "显示成功" << endl;
		system("pause");
		system("cls");
	}
}

4️⃣ 查找联系人功能

//查找联系人函数
void FindPerson(AddressList* abs) {
	int flag = 0;
	string name;
	cout << "请输入查找的联系人姓名:";
	cin >> name;
	for (int i = 0; i < abs->p_Size; i++) {
		if (abs->personArray[i].p_Name == name) {
			cout << "===================================== 查找的联系人如下 ===========================================" << endl;
			cout << "姓名:" << abs->personArray[i].p_Name << "\t";
			cout << "年龄:" << abs->personArray[i].p_Age << "\t";
			cout << "电话:" << abs->personArray[i].p_Phone << "\t";
			cout << "性别:" << abs->personArray[i].p_Sex << "\t";
			cout << "住址:" << abs->personArray[i].p_Addr << endl;
			cout << "========================================== 查找完成 ==============================================" << endl;
			system("pause");
			system("cls");
			flag = 1;
		}
	}
	if (flag == 0) {
		cout << "查无此人" << endl;
		system("pause");
		system("cls");
	}
}

5️⃣ 清空联系人功能

//清空联系人函数
void ClearPerson(AddressList* abs) {
	string select;
	while (true) {
		cout << "请问是否执行清空?(y || Y || n || N):";
		cin >> select;
		if (select == "Y" || select == "y") {
			if (abs->p_Size == 0) {
				cout << "当前通讯录为空,清空无效" << endl;
				system("pause");
				system("cls");
			}
			else {
				abs->p_Size = 0;
				cout << "清空完成" << endl;
				system("pause");
				system("cls");
			}
			break;
		}
		else if (select == "N" || select == "n") {
			cout << "清空操作无效,退出操作" << endl;
			system("pause");
			system("cls");
			break;
		}
		else {
			cout << "输入有误,请重新输入" << endl;
		}
	}
}

6️⃣ 修改联系人功能

//修改信息函数
void Modify(AddressList* abs,int i,string name) {
	string M_name,M_sex,M_phone,M_addr;
	int M_age;
	cout << "请输入" << name << "修改后的姓名:";
	cin >> M_name;
	abs->personArray[i].p_Name = M_name;
	cout << "请输入" << name << "修改后的年龄:";
	cin >> M_age;
	abs->personArray[i].p_Age = M_age;
	cout << "请输入" << name << "修改后的电话:";
	cin >> M_phone;
	abs->personArray[i].p_Phone = M_phone;
	cout << "请输入" << name << "修改后的性别:";
	cin >> M_sex;
	abs->personArray[i].p_Sex = M_sex;
	cout << "请输入" << name << "修改后的住址:";
	cin >> M_addr;
	abs->personArray[i].p_Addr = M_addr;
	cout << "修改成功" << endl;
}

🐴 源码

#include <iostream>
using namespace std;
#include <string>
#define LOGIN_NUM 3		//登录失败次数
#define MAX_SIZE 50		//最大账号存储数
#define MAX_PERSON 200	//通讯录最大存储人数

struct User {
	string Account;	//账号
	string Passwd;	//密码
	string Encrypted;	//密保
};

struct Person {
	string p_Name;	//姓名
	int p_Age;		//年龄
	string p_Phone;	//电话
	string p_Sex;	//性别
	string p_Addr;	//地址
};

struct DataBase {
	struct User dataBases[MAX_SIZE];	//账号数据库数组
	int d_Size;
};

struct AddressList {
	struct Person personArray[MAX_PERSON];	//通讯录保存信息的数组
	int p_Size;		//记录通讯录中的人数
};

void RegisteUser(DataBase* data);
void LoginUser(DataBase* data);
void FindPasswd(DataBase* data);
void InManage(AddressList* abs);
void AddPerson(AddressList* abs);
void DeletePerson(AddressList* abs);
void PrintPerson(AddressList* abs);
void FindPerson(AddressList* abs);
void ClearPerson(AddressList* abs);
void Modify(AddressList* abs, int i, string name);
void ModifyPerson(AddressList* abs);
void ShowMenu1();
void ShowMenu2();

//注册用户
void RegisteUser(DataBase* data) {
	string account, passwd, encrypted;
	cout << "请输入创建的账户:";
	cin >> account;
	data->dataBases[data->d_Size].Account = account;
	cout << "请输入创建的密码:";
	cin >> passwd;
	data->dataBases[data->d_Size].Passwd = passwd;
	cout << "那请输入密保(找回密码):";
	cin >> encrypted;
	data->dataBases[data->d_Size].Encrypted = encrypted;
	data->d_Size++;

	cout << "创建账户成功" << endl;
	system("pause");
	system("cls");
}

//登录用户
void LoginUser(DataBase* data,AddressList* abs) {
	string account, passwd;
	int flag = 0,j = 1;
	while(true){
		if (j > LOGIN_NUM) {
			cout << "登录失败次数过3,请重新尝试" << endl;
			break;
		}
		else if (flag == 1) {
			break;
		}
		cout << "请输入登录账户:";
		cin >> account;
		cout << "请输入登录密码:";
		cin >> passwd;
		for (int i = 0; i < data->d_Size; i++) {
			if (data->dataBases[i].Account == account && data->dataBases[i].Passwd == passwd) {
				flag = 1;
				cout << "登陆成功" << endl;
				system("pause");
				system("cls");
				InManage(abs);
			}
		}
		if (flag == 0 && j <= LOGIN_NUM) {
			cout << "登录失败,请重新输入账户以及密码" << endl;
			system("pause");
			system("cls");
			j++;
		}
	}
}

//找回密码
void FindPasswd(DataBase* data){
	int flag = 0;
	if (data->d_Size == 0){
		cout << "没有任何账户,找回密码无效" << endl;
	}
	else {
		string account, encrypted;
		cout << "请输入该账户:";
		cin >> account;
		cout << "请输入该账户的密保:";
		cin >> encrypted;
		for (int i = 0; i < data->d_Size; i++) {
			if (data->dataBases[i].Account == account && data->dataBases[i].Encrypted == encrypted){
				cout << "该账户的密码 = " << data->dataBases[i].Passwd << endl;
				flag = 1;
				break;
			}
		}
		if (flag == 1){
			cout << "成功找回密码,请记住" << endl;
			system("pause");
			system("cls");
		}
		else {
			cout << "找回密码失败,账户错误或者密保错误,请重试" << endl;
			system("pause");
			system("cls");
		}

	}
}

//登录成功后进入管理系统函数
void InManage(AddressList* abs) {
	int select;
	while (true) {
		ShowMenu2();
		cout << "请输入管理操作序号:";
		cin >> select;
		if (select == 0) {
			cout << endl;
			cout << "======== 欢迎使用 ========" << endl;
			break;
		}
		switch (select) {
		case 1: AddPerson(abs);
			break;
		case 2: DeletePerson(abs);
			break;
		case 3: PrintPerson(abs);
			break;
		case 4: FindPerson(abs);
			break;
		case 5: ClearPerson(abs);
			break;
		case 6: ModifyPerson(abs);
			break;
		default:cout << "输入错误,请重新输入" << endl;
			break;
		}
	}
}

//添加联系人函数
void AddPerson(AddressList* abs) {
	if (abs->p_Size == MAX_PERSON) {
		cout << "抱歉,空间已满,无法添加,请选择其他操作" << endl;
	}
	string name, sex, phone, addr;
	int age;
	cout << "请输入添加联系人的姓名:";
	cin >> name;
	abs->personArray[abs->p_Size].p_Name = name;
	cout << "请输入添加联系人的年龄:";
	cin >> age;
	abs->personArray[abs->p_Size].p_Age = age;
	cout << "请输入添加联系人的电话:";
	cin >> phone;
	abs->personArray[abs->p_Size].p_Phone = phone;
	cout << "请输入添加联系人的性别:";
	cin >> sex;
	abs->personArray[abs->p_Size].p_Sex = sex;
	cout << "请输入添加联系人的住址:";
	cin >> addr;
	abs->personArray[abs->p_Size].p_Addr = addr;

	abs->p_Size++;	//人数++

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

//删除联系人函数
void DeletePerson(AddressList* abs) {
	if (abs->p_Size == 0) {
		cout << "通讯录为空" << endl;
		system("pause");
		system("cls");
	}else {
		int flag = 0;
		string name;
		cout << "请输入删除的联系人姓名:";
		cin >> name;
		for (int i = 0; i < abs->p_Size; i++) {
			if (abs->personArray[i].p_Name == name) {
				for (int j = i; j <=abs->p_Size-1; j++) {	//删除联系人(实质信息前移覆盖)
					abs->personArray[j] = abs->personArray[j+1];
				}
				abs->p_Size--;
				flag = 1;
				cout << "删除完成" << endl;
				system("pause");
				system("cls");
			}
		}
		if (flag == 0){
			cout << "没有此联系人" << endl;
			system("pause");
			system("cls");
		}
	}
}

//显示联系人函数
void PrintPerson(AddressList* abs) {
	if (abs->p_Size == 0) {
		cout << "当前通讯录为空" << endl;
		system("pause");
		system("cls");
	}
	else {
		cout << "=============================================== 通讯录 ================================================" << endl;
		for (int i = 0; i < abs->p_Size; i++) {
			cout << "姓名:" << abs->personArray[i].p_Name << "\t";
			cout << "年龄:" << abs->personArray[i].p_Age << "\t";
			cout << "电话:" << abs->personArray[i].p_Phone << "\t";
			cout << "性别:" << abs->personArray[i].p_Sex << "\t";
			cout << "住址:" << abs->personArray[i].p_Addr << endl;
		}
		cout << "=======================================================================================================" << endl;
		cout << "显示成功" << endl;
		system("pause");
		system("cls");
	}
}

//查找联系人函数
void FindPerson(AddressList* abs) {
	int flag = 0;
	string name;
	cout << "请输入查找的联系人姓名:";
	cin >> name;
	for (int i = 0; i < abs->p_Size; i++) {
		if (abs->personArray[i].p_Name == name) {
			cout << "===================================== 查找的联系人如下 ===========================================" << endl;
			cout << "姓名:" << abs->personArray[i].p_Name << "\t";
			cout << "年龄:" << abs->personArray[i].p_Age << "\t";
			cout << "电话:" << abs->personArray[i].p_Phone << "\t";
			cout << "性别:" << abs->personArray[i].p_Sex << "\t";
			cout << "住址:" << abs->personArray[i].p_Addr << endl;
			cout << "========================================== 查找完成 ==============================================" << endl;
			system("pause");
			system("cls");
			flag = 1;
		}
	}
	if (flag == 0) {
		cout << "查无此人" << endl;
		system("pause");
		system("cls");
	}
}

//清空联系人函数
void ClearPerson(AddressList* abs) {
	string select;
	while (true) {
		cout << "请问是否执行清空?(y || Y || n || N):";
		cin >> select;
		if (select == "Y" || select == "y") {
			if (abs->p_Size == 0) {
				cout << "当前通讯录为空,清空无效" << endl;
				system("pause");
				system("cls");
			}
			else {
				abs->p_Size = 0;
				cout << "清空完成" << endl;
				system("pause");
				system("cls");
			}
			break;
		}
		else if (select == "N" || select == "n") {
			cout << "清空操作无效,退出操作" << endl;
			system("pause");
			system("cls");
			break;
		}
		else {
			cout << "输入有误,请重新输入" << endl;
		}
	}
}

//修改信息函数
void Modify(AddressList* abs,int i,string name) {
	string M_name,M_sex,M_phone,M_addr;
	int M_age;
	cout << "请输入" << name << "修改后的姓名:";
	cin >> M_name;
	abs->personArray[i].p_Name = M_name;
	cout << "请输入" << name << "修改后的年龄:";
	cin >> M_age;
	abs->personArray[i].p_Age = M_age;
	cout << "请输入" << name << "修改后的电话:";
	cin >> M_phone;
	abs->personArray[i].p_Phone = M_phone;
	cout << "请输入" << name << "修改后的性别:";
	cin >> M_sex;
	abs->personArray[i].p_Sex = M_sex;
	cout << "请输入" << name << "修改后的住址:";
	cin >> M_addr;
	abs->personArray[i].p_Addr = M_addr;
	cout << "修改成功" << endl;
}

//修改联系人函数
void ModifyPerson(AddressList* abs) {
	if (abs->p_Size == 0){
		cout << "当前通讯录为空" << endl;
		system("pause");
		system("cls");
	}
	else {
		string name;
		cout << "请输入修改的联系人姓名:";
		cin >> name;
		for (int i = 0; i < abs->p_Size; i++){
			if (abs->personArray[i].p_Name == name){
				Modify(abs,i,name);	//调用修改信息函数
				system("pause");
				system("cls");
			}
		}
	}
}

//登录界面1函数
void ShowMenu1() {
	cout << "==========================" << endl;
	cout << "======= 1.注册用户 =======" << endl;
	cout << "======= 2.登录用户 =======" << endl;
	cout << "======= 3.找回密码 =======" << endl;
	cout << "======= 0.退出系统 =======" << endl;
	cout << "==========================" << endl;
}


//菜单界面2函数
void ShowMenu2() {
	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;
}

int main() {
	AddressList abs;
	DataBase data;
	data.d_Size = 0;	//初始数据库账号数为0
	//用户选择序号变量
	int select = 0;
	abs.p_Size = 0;		//初始化通讯录人数为0

	while (true) {
		ShowMenu1();
		cout << "请输入登录操作序号:";
		cin >> select;
		if (select == 0) {
			cout << endl;
			cout << "========= 欢迎使用通讯录系统 ==========" << endl;
			break;
		}
		switch (select) {
		case 1: RegisteUser(&data);
			break;
		case 2: LoginUser(&data,&abs);
			break;
		case 3: FindPasswd(&data);
			break;
		default:cout << "输入错误,请重新输入" << endl;
			break;
		}
	}
	system("pause");
	return 0;
}
举报

相关推荐

0 条评论