[c/c++] Asignación de programación clásica: sistema de gestión de libreta de direcciones

# 1. Introducción al programa

***Este programa es C++. Si necesita la versión C, puede consultar mi próximo artículo para obtener el código completo. ***

Escribir un pequeño programa que pueda agregar, modificar, eliminar, buscar y atravesar información de identidad de contacto (incluida la edad, el sexo, el número de teléfono móvil, etc.) se ha convertido en una tarea final para muchas escuelas. Aquí está mi idea de código y Proporcionar código fuente.

# 2. Ideas de programación

En primer lugar, es necesario dejar claro que el cuerpo principal del programa son los contactos, por lo que es necesario crear una clase de libreta de direcciones, la libreta de direcciones incluye todos los contactos, aquí se utiliza una estructura anidada.

Si es así, considere las funciones que desea implementar, como agregar, ver, modificar, buscar, eliminar y borrar contactos. Escribe funciones una por una para completar las funciones correspondientes. (Antes de esto, primero se debe completar el marco de funciones principal)

Finalmente, modifique los detalles del programa mediante la depuración.

# 3. Compartir fuente de código + análisis de código

const int my_max = 1000;
struct Contact_person
{
    string name;
    string gender;
    int age;
    string phone_number;
    string address;
};

struct Communicator
{
    struct Contact_person peopleArray[my_max];
    int people_number = 0;
}num;

·Primero cree una clase de persona, incluyendo atributos como la edad, y luego cree una clase de libreta de direcciones para registrar el número de personas almacenadas (la memoria de la matriz es limitada y no se puede agregar infinitamente).

void Main_menu()
{
    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()
{
    int choose = 0;
    num.people_number = 0; //初始化人数
    while (1)
    {
        Main_menu();
        cin >> choose;
        switch (choose)
        {
        case 1:
            addperson(&num);
            break;
        case 2:
            showpeople(&num);
            break;
        case 3:
            changepeople(&num);
            break;
        case 4:
            queryperson(&num);
            break;
        case 5:
            deleteperson(&num);
            break;
        case 6:
            clearpeople(&num);
            break;
        case 0:
            cout << "欢迎下次使用" << endl;
            
            return 0;
            break;
        default:
            cout << "输入有误" << endl;
            system("pause");
            system("cls");
            break;
        }
    }
    
    system("pause");
    return 0;
}

·El marco principal se construye aquí, recuerde inicializar el número de personas fuera del bucle de función principal.

void addperson(Communicator *num)
{
    if (num->people_number >= 1000)
    {
        cout << "人数已满" << endl;
    }
    else
    {
        string name;
        string sex;
        int age = 0;
        string phone;
        string adds;

        //1、输入姓名
        cout << "请输入联系人姓名" << endl;
        cin >> name;
        num->peopleArray[num->people_number].name = name;
        //2、输入性别
        cout << "请输入联系人性别" << endl;
        cout << "1、男" << endl;
        cout << "2、女" << endl;
        while (1)
        {
            cin >> sex;
            if (sex == "1")
            {
                num->peopleArray[num->people_number].gender = "男";
                break;
            }
            if (sex == "2")
            {
                num->peopleArray[num->people_number].gender = "女";
                break;
            }
            else
            {
                cout << "输入有误" << endl;
                continue;
            }
        }
        //3、输入年龄
        cout << "请输入联系人年龄" << endl;
        cin >> age;
        num->peopleArray[num->people_number].age = age;
        //4、输入号码
        cout << "请输入联系人电话号码" << endl;
        cin >> phone;
        num->peopleArray[num->people_number].phone_number = phone;
        //5、输入地址
        cout << "请输入联系人住址" << endl;
        cin >> adds;
        num->peopleArray[num->people_number].address = adds;

        //记录人数
        num->people_number++;

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

·Aquí se implementa la primera función, agregar contactos. Preste atención a los detalles: use la dirección para pasar parámetros, registre la cantidad de personas y use el sistema ("cls") para borrar la pantalla.

void showpeople(Communicator* num)
{
    if(!num->people_number)
    {
        cout << "暂无联系人" << endl;
    }
    else
    {
        for (int i = 0; i < num->people_number; i++)
        {
            cout << "姓名是: " << num->peopleArray[i].name << "\t";
            cout << "性别是: " << num->peopleArray[i].gender << "\t";
            cout << "年龄是: " << num->peopleArray[i].age << "\t";
            cout << "号码是: " << num->peopleArray[i].phone_number << "\t";
            cout << "住址是: " << num->peopleArray[i].address << endl;
        }
    }
    system("pause");
    system("cls");
}

·Aquí está la segunda función, iterando a través de todos los contactos. Nota: juzgue si nadie muestra "Nadie puede comprobarlo todavía"

int findpeople(Communicator * num , string name)
{
    for (int i = 0; i < num->people_number; i++)
    {
        if (num->peopleArray[i].name == name)
        {
            return i;
        }
        return -1;
    }
}

*Esta función es la función central de las siguientes funciones. Puede verificar si el nombre de la persona que ingresó está en la libreta de direcciones. Si existe, devolverá la ubicación. Si no existe, devolverá un - 1 mensaje.

void deleteperson(Communicator * abs)
{
    string name;
    if(abs->people_number == 0)
    {
        cout << "暂无人可删" << endl;
    }
    else
    {
        cout << "请输入要删除的联系人姓名" << endl;
        cin >> name;
        int a = findpeople(abs, name);
        if (a == -1)
        {
            cout << "查无此人" << endl;
        }
        else
        {
            for (int i = a; i < abs->people_number; i++)
            {
                abs->peopleArray[i] = abs->peopleArray[i + 1];
            }
            cout << "删除成功" << endl;
            abs->people_number--;
        }
    }
    system("pause");
    system("cls");
}

·Aquí está la función de eliminar contactos.La idea de eliminación: sobrescribir la información de la persona que se va a eliminar con la información de la persona siguiente (sobrescritura en secuencia), lo que puede considerarse como eliminación.

void clearpeople(Communicator* num)
{
    string choose;
    cout << "是否要清除?“是” 或 “否”" << endl;
    cin >> choose;
    while (true)
    {
      if(choose == "是")
      {
          num->people_number = 0;
          cout << "清除完成" << endl;
          break;
      }
      else if (choose == "否")
      {
          cout << "重新选择" << endl;
          break;
      }
      else
      {
          cout << "请按规定输入" << endl;
          continue;
      }
    }
    system("pause");
    system("cls");
}

·Dado que los códigos para buscar y modificar contactos son similares, no los repetiré aquí. La función de borrado se muestra aquí. De hecho, puede establecer directamente el número de contactos en 0 (agregarlo lo sobrescribirá y la búsqueda también bloqueará la información fuera del rango).

#4. Conclusión

Esta es la introducción completa. Si necesita un código completo y directamente aplicable, comuníquese conmigo.

Supongo que te gusta

Origin blog.csdn.net/m0_73747975/article/details/128738026
Recomendado
Clasificación