Sistema de gestión de libreta de direcciones (c/c++) con código fuente completo~

¡Hola a todos! Hoy, Xiaoran compartirá con usted un sistema de gestión de la libreta de direcciones. Si desea conocer los detalles, puede ir a la estación b para buscar el curso de c ++ de "Dark Horse Programmer". Las conferencias del maestro son muy claras y detalladas. Si tiene alguna pregunta sobre la implementación de programación del programa, puede puede hacer preguntas en el área de comentarios.

La primera es la función del programa. El programa puede realizar principalmente las siguientes funciones: 1) Agregar contactos 2) Mostrar contactos 3) Eliminar contactos 4) Buscar contactos 5) Modificar contactos 6) Borrar contactos 7) Salir de la libreta de direcciones.

Los puntos de conocimiento utilizados en el programa incluyen principalmente: estructura, matriz de estructura, puntero, función, etc.

Visualización parcial de funciones del programa

La siguiente es una demostración de algunas funciones del programa:

 

Implementación de código de cada función.

menú

Primero hacemos un menú de programa para allanar el camino para la realización de funciones posteriores.

Primero escribamos una función para mostrar el menú:

void showMenu(){
  cout<<"1.添加联系人:"<<endl;
  cout<<"2.显示联系人:"<<endl;
  cout<<"3.删除联系人:"<<endl;
  cout<<"4.查找联系人"<<endl;
  cout<<"5.修改联系人"<<endl;
  cout<<"6.清空联系人"<<endl;
  cout<<"0.退出通讯录"<<endl;
}

También puede cambiar el espacio entre líneas o agregar algunos símbolos para hacerlo más hermoso cuando se muestra el menú ~~~ 

Luego, defina una variable de tipo int select en la función principal e ingrese el valor de select desde el teclado para completar la selección de diferentes funciones.Aquí, se usa la declaración de cambio de caso para realizar.

	int select=0;//创建用户选择输入的变量
	while(1){
		showMenu();
	    cin>>select;

	switch(select)
	{
case 1://添加联系人
	break;
case 2:
	break;//显示联系人
case 3:
	break;
	
case 4: 
		break;//查找联系人
case 5:
	break;//修改联系人 按照姓名重新修改指定联系人
case 6: 
	break;//清空联系人 
case 0: //退出通讯录
		break;
default: break;
	}}

¡El marco principal de la función principal está completo ~! Las funciones subsiguientes se agregarán lentamente.

1) Agregar un contacto

Los pasos para realizar esta parte de la función son los siguientes:

1. Definir la estructura de contactos y la estructura de la libreta de direcciones

2. Crea una libreta de direcciones en la función principal

3. Paquete agregar función de contacto

El primero es definir la estructura de contactos y la estructura de la libreta de direcciones. 

//设计联系人结构体(添加联系人)
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;//记录当前联系人个数
};

La estructura de contacto incluye el nombre, el sexo, la edad, el número de teléfono y la dirección del contacto, que no se describirán aquí.

La estructura de la libreta de direcciones contiene una matriz para almacenar información de contacto y una variable para registrar el número de contactos actuales. Tenga en cuenta que el MAX máximo de la matriz es la cantidad máxima de contactos que puede almacenar la libreta de direcciones. Aquí, por comodidad, agregamos #define MAX 1000 delante del programa para modificar el valor de MAX.

Después de crear la estructura, necesitamos crear una libreta de direcciones en la función principal. Ahora mismo

Addressbooks abs;

Bueno, después de terminar el trabajo preparatorio, comenzaremos a escribir la función de agregar contactos. Tenga en cuenta que debido a que necesitamos cambiar el valor del parámetro real, el parámetro de la función debe ser un puntero para la transferencia de direcciones.

Esta función implementa principalmente las siguientes funciones: determine si la libreta de direcciones está llena, si no, agregue información de contacto, si está llena, recuerde al usuario que la libreta de direcciones está llena y no se puede agregar.

La siguiente es la implementación del código:



//1.添加联系人
void addPerson(Addressbooks * abs)
{ 
	//判断通讯录是否已满
	if(abs->m_Size==MAX){//参数中的一个项使用.,地址中的一个项使用->,这里的abs是一个地址,所以用->
		//指针要用->
		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;
		while(1){
			cin >> sex;
		if(sex==1||sex==2){
			abs->personArray[abs->m_Size].m_Sex=sex;
		break;
		}
		cout<<"输入有误,请重新输入"<<endl;
		}
		//年龄
		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");//清屏
	}}

 Para hacer que el programa sea más hermoso y fácil de leer, una vez completada la adición, se realiza la operación de limpieza de pantalla.Aquí, la función del sistema en C++ se llama system("cls")

2) Mostrar contactos

 Función para mostrar contactos

código fuente completo

El siguiente es el código fuente completo. Si tiene alguna pregunta sobre el programa, puede preguntar en el área de comentarios ~

#include<iostream>
using namespace std;
#include<string>

#define MAX 1000
//显示菜单界面

//设计联系人结构体(添加联系人)
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;//记录当前联系人个数
};


//1.添加联系人
void addPerson(Addressbooks * abs)
{ 
	//判断通讯录是否已满
	if(abs->m_Size==MAX){//参数中的一个项使用.,地址中的一个项使用->,这里的abs是一个地址,所以用->
		//指针要用->
		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;
		while(1){
			cin >> sex;
		if(sex==1||sex==2){
			abs->personArray[abs->m_Size].m_Sex=sex;
		break;
		}
		cout<<"输入有误,请重新输入"<<endl;
		}
		//年龄
		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");//清屏
	}}
//2.显示所有联系人
void showPerson(Addressbooks * abs){
//判断通讯录中人数是否为0,如果为0,提示记录为空
	//如果不为0,显示记录的联系人信息
	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");//清屏
}
//显示菜单
void showMenu(){
  cout<<"1.添加联系人:"<<endl;
  cout<<"2.显示联系人:"<<endl;
  cout<<"3.删除联系人:"<<endl;
  cout<<"4.查找联系人"<<endl;
  cout<<"5.修改联系人"<<endl;
  cout<<"6.清空联系人"<<endl;
  cout<<"0.退出通讯录"<<endl;
}

//3.检测联系人是否存在,如果存在,返回联系人在数组中的具体位置,不存在返回-1
//参数1 通讯录 参数2 姓名
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;//遍历结束仍然没有找到
}

//3.删除指定联系人
void deletePerson(Addressbooks *abs ){
	cout<<"请输入您要删除的联系人"<<endl;
	string name;
	cin>>name;
	int ret=isExist(abs,name);//if ret=-1.未查到该人 else 查到了
	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");
	}

//4.查找指定联系人信息
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 ==1?"男":"女")<<"\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");//清屏
}

//5.修改指定联系人信息
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;
		//性别
		int sex=0; 
			cout<<"请输入性别:"<<endl;
		cout<<"1---男"<<endl<<"2---女"<<endl;
		while(1){
			cin>>sex;
		if(sex==1||sex==2){
			abs->personArray [ret].m_Sex =sex;
			break;
		}
		cout<<"输入有误,请重新输入"<<endl;
		}
		//年龄
		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");//按任意键后清屏
}

//6.清空联系人 //实现思路:只要将记录的联系人数重置为0,就可以实现逻辑情空
void cleanPerson(Addressbooks *abs){
	abs->m_Size =0;
	cout<<"通讯录已清空"<<endl;
	system("pause");
	system("cls");
}
//主函数
int main(){
	char qingkong;
	system ("color F1");
	//创建通讯录结构体变量
	Addressbooks abs;
	//初始化通讯录当中当前人员个数

	//调用菜单
	abs.m_Size=0;
	int select=0;//创建用户选择输入的变量
	while(1){
		showMenu();
	    cin>>select;

	switch(select)
	{
case 1://添加联系人
	addPerson(& abs);
	break;//添加联系人//功能:设置上限1000人 
	//步骤:设置联系人结构体和通讯录结构体 main函数中创建通讯录 封装添加联系人函数 测试添加联系人功能
case 2:
	showPerson (& abs);//地址传递,可以改变实参的值
	break;//显示联系人
case 3://case语句如果很长的话最好用括号括起来形成一个代码段
	/*{
	cout<<"请输入删除联系人的姓名:"<<endl;
	string name;
	cin>>name;
	if(isExist ==-1)cout<<"查无此人"<<endl;
	else cout<<"找到此人"<<endl;}*/ //检测练习人是否存在
	deletePerson(&abs);
	break;//删除联系人 1.判断联系人是否存在 2.删除联系人函数
	
case 4: 
	findPerson (&abs);
		break;//查找联系人
case 5:
	modifyPerson (&abs);
	break;//修改联系人 按照姓名重新修改指定联系人
case 6: 
    cout<<"你确定要清空通讯录吗?(Y or N)" <<endl; 
    cin>>qingkong;
    if(qingkong=='Y'||qingkong=='y'){
	cleanPerson (&abs);}
	else system("pause");//按任意键继续
	system ("cls");//清屏
	break;//清空联系人 
case 0: //退出通讯录
		cout<<"欢迎下次使用"<<endl;
		system ("pause");//暂停,等待用户输入
		return 0;
		break;
default: break;
	}}}

Supongo que te gusta

Origin blog.csdn.net/jiumi45/article/details/124994895
Recomendado
Clasificación