Aprenda C ++ desde cero y escriba un sistema de administración de libreta de direcciones, que tiene la función de agregar, eliminar, verificar y modificar. Tarea de diseño del curso: sistema de gestión de la libreta de direcciones

Este código es un sistema simple de administración de la libreta de direcciones que puede agregar, mostrar, eliminar, buscar, modificar y borrar información de contacto. El siguiente es un comentario detallado sobre el código:

#include<iostream>
#include <string>  // 包含string头文件
#define MAX 1000  // 定义通讯录中联系人的最大数量

using namespace std;

// 联系人结构体
struct Person
{
	string m_Name; // 姓名
	int m_Sex; // 性别:1男 2女
	int m_Age; // 年龄
	string m_Phone; // 电话
	string m_Addr; // 住址
};

// 通讯录结构体
struct Addressbooks
{
	struct Person personArray[MAX]; // 通讯录中保存的联系人数组
	int m_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* abs)
{
	// 判断通讯录是否已满
	if (abs->m_Size == MAX)
	{
		cout << "通讯录已满,无法添加" << endl;
		return;
	}
	else
	{
		// 姓名
		string name;
		cout << "请输入姓名:" << endl;
		cin >> name;
		abs->personArray[abs->m_Size].m_Name = name;

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

		int sex = 0;
		// 输入性别,要求输入1或2,否则重新输入
		while (true)
		{
			cin >> sex;
			if (sex == 1 || sex == 2)
			{
				abs->personArray[abs->m_Size].m_Sex = sex;
				break;
			}
			cout << "输入有误,请重新输入";
		}

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

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

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

		// 更新通讯录人数
		abs->m_Size++;

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

// 显示联系人
void showPerson(Addressbooks* abs)
{
	if (abs->m_Size == 0)
	{
		cout << "当前记录为空" << endl;
	}
	else
	{
		for (int i = 0; i < abs->m_Size; i++)
		{
			cout << "姓名:" << abs->personArray[i].m_Name << "\t";
			cout << "性别:" << (abs->personArray[i].m_Sex == 1 ? "男" : "女") << "\t";
			cout << "年龄:" << abs->personArray[i].m_Age << "\t";
			cout << "电话:" << abs->personArray[i].m_Phone << "\t";
			cout << "住址:" << abs->personArray[i].m_Addr << endl;
		}
	}

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

// 判断联系人是否存在,若存在返回索引,不存在返回-1
int isExist(Addressbooks* abs, string name)
{
	for (int i = 0; i < abs->m_Size; i++)
	{
		if (abs->personArray[i].m_Name == name)
		{
			return i;
		}
	}
	return -1;
}

// 删除联系人
void deletePerson(Addressbooks* abs)
{
	cout << "请输入您要删除的联系人" << endl;
	string name;
	cin >> name;

	int ret = isExist(abs, name);
	if (ret != -1)
	{
		for (int i = ret; i < abs->m_Size; i++)
		{
			abs->personArray[i] = abs->personArray[i + 1];
		}
		abs->m_Size--;
		cout << "删除成功" << endl;
	}
	else
	{
		cout << "查无此人" << endl;
	}

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

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

	int ret = isExist(abs, name);
	if (ret != -1)
	{
		cout << "姓名:" << abs->personArray[ret].m_Name << "\t";
		cout << "性别:" << abs->personArray[ret].m_Sex << "\t";
		cout << "年龄:" << abs->personArray[ret].m_Age << "\t";
		cout << "电话:" << abs->personArray[ret].m_Phone << "\t";
		cout << "住址:" << abs->personArray[ret].m_Addr << endl;
	}
	else
	{
		cout << "查无此人" << endl;
	}

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

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

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

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

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

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

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

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

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

// 清空联系人
void cleanPerson(Addressbooks* abs)
{
	abs->m_Size = 0;
	cout << "通讯录已清空" << endl;
	system("pause");
	system("cls");
}

int main() {
	Addressbooks abs;
	abs.m_Size = 0;
	int select = 0;

	while (true)
	{
		showMenu();
		cin >> select;

		switch (select)
		{
		case 1:  // 添加联系人
			addPerson(&abs);
			break;
		case 2:  // 显示联系人
			showPerson(&abs);
			break;
		case 3:  // 删除联系人
			deletePerson(&abs);
			break;
		case 4:  // 查找联系人
			findPerson(&abs);
			break;
		case 5:  // 修改联系人
			modifyPerson(&abs);
			break;
		case 6:  // 清空联系人
			cleanPerson(&abs);
			break;
		case 0:  // 退出通讯录
			cout << "欢迎下次使用" << endl;
			system("pause");
			return 0;
			break;
		default:
			break;
		}
	}

	system("pause");

	return 0;
}

Este código es un sistema simple de administración de la libreta de direcciones, que implementa funciones como agregar contactos, mostrar contactos, eliminar contactos, buscar contactos, modificar contactos y borrar contactos.

En primer lugar, se definen dos estructuras al principio del código, a saber, Persony Addressbooks. PersonLa estructura representa la información de un contacto, incluido el nombre, el sexo, la edad, el número de teléfono y la dirección. AddressbooksLa estructura representa la libreta de direcciones, que tiene una matriz para guardar contactos personArrayy la cantidad de contactos en la libreta de direcciones m_Size.

Luego, se definen algunas funciones para lograr diferentes funciones:

  • showMenuLa función se utiliza para mostrar la interfaz del menú, incluidas opciones como agregar contactos, mostrar contactos, eliminar contactos, buscar contactos, modificar contactos, borrar contactos y salir de la libreta de direcciones.

  • addPersonLa función se utiliza para agregar contactos. Primero juzgue si la libreta de direcciones está llena; si lo está, le indicará que no se puede agregar; de lo contrario, ingrese el nombre, el sexo, la edad, el número de teléfono y la dirección del contacto en secuencia, y actualice la cantidad de contactos en la libreta de direcciones.

  • showPersonFunción para mostrar contactos. Si la libreta de direcciones está vacía, le indicará que el registro actual está vacío; de lo contrario, recorra la matriz de contactos en la libreta de direcciones y obtenga el nombre, el sexo, la edad, el número de teléfono y la dirección del contacto uno por uno.

  • isExistLa función se utiliza para determinar si el contacto con el nombre especificado existe en la libreta de direcciones. Recorra la matriz de contactos en la libreta de direcciones, si se encuentra un contacto que coincida con el nombre especificado, devuelva el índice del contacto en la matriz; si no se encuentra ningún contacto coincidente después de atravesar, devuelva -1.

  • deletePersonfunción para eliminar un contacto. Primero ingrese el nombre del contacto a eliminar y luego llame isExista la función para determinar si el contacto existe. Si existe, los contactos detrás del contacto avanzarán uno por uno y se actualizará la cantidad de contactos en la libreta de direcciones; si no existe, indicará que no se encontró a esa persona.

  • findPersonFunción para buscar contactos. Primero ingrese el nombre del contacto que desea encontrar y luego llame isExista la función para determinar si el contacto existe. Si existe, indique el nombre, el sexo, la edad, el número de teléfono y la dirección del contacto; si no existe, indicará que no existe tal persona.

  • modifyPersonLa función se utiliza para modificar la información de contacto. Primero ingrese el nombre del contacto a modificar y luego llame isExista la función para determinar si el contacto existe. Si existe, ingrese la información de contacto modificada una por una y actualice la información del contacto correspondiente en la libreta de direcciones; si no existe, indicará que no se encuentra esa persona.

  • cleanPersonLa función se utiliza para borrar todos los contactos de la libreta de direcciones, es decir, para establecer el número de contactos en la libreta de direcciones en 0.

Finalmente, en la función, mainse crea un Addressbooksobjeto absy su número de contactos se inicializa a 0. A través de un bucle infinito, muestre la interfaz del menú y llame a la función correspondiente según la elección del usuario hasta que el usuario elija salir de la libreta de direcciones.

Supongo que te gusta

Origin blog.csdn.net/dsafefvf/article/details/131483965
Recomendado
Clasificación