[c/c++] Mission de programmation classique : système de gestion de carnet d'adresses

# 1. Présentation du programme

***Ce programme est en C++. Si vous avez besoin de la version C, vous pouvez consulter mon prochain article pour le code complet. ***

Écrire un petit programme capable d'ajouter, de modifier, de supprimer, de rechercher et de parcourir les informations d'identité des contacts (y compris l'âge, le sexe, le numéro de téléphone portable, etc.) est devenu une tâche finale pour de nombreuses écoles. Voici mon idée de code et fournir le code source.

# 2. Idées de programmation

Tout d'abord, il est nécessaire de préciser que le corps principal du programme est constitué de contacts, il est donc nécessaire de créer une classe de carnet d'adresses. Le carnet d'adresses comprend tous les contacts. Une structure imbriquée est utilisée ici.

Si tel est le cas, réfléchissez aux fonctions que vous souhaitez implémenter, telles que l'ajout, l'affichage, la modification, la recherche, la suppression et l'effacement de contacts. Écrivez les fonctions une par une pour compléter les fonctions correspondantes. (Avant cela, le cadre des fonctions principales doit d'abord être complété)

Enfin, modifiez les détails du programme via le débogage.

# 3. Partage de source de code + analyse de code

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;

· Créez d'abord une classe de personne, y compris des attributs tels que l'âge, puis créez une classe de carnet d'adresses pour enregistrer le nombre de personnes stockées (la mémoire du tableau est limitée et ne peut pas être ajoutée à l'infini).

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

·Le framework principal est construit ici, pensez à initialiser le nombre de personnes en dehors de la boucle des fonctions principales.

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

·La première fonction est implémentée ici, ajouter des contacts. Veuillez faire attention aux détails : utilisez l'adresse pour transmettre les paramètres, enregistrez le nombre de personnes et utilisez system("cls") pour effacer l'écran.

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

·Voici la deuxième fonction, itérant sur tous les contacts. Remarque : jugez si personne ne produit "Personne ne peut encore vérifier"

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

*Cette fonction est la fonction centrale des fonctions suivantes. Vous pouvez vérifier si le nom de la personne que vous avez entré est dans le carnet d'adresses. S'il existe, il renverra l'emplacement. S'il n'existe pas, il renverra un - 1 invite.

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

·Voici la fonction de suppression des contacts. L'idée de suppression : écraser les informations de la personne à supprimer par les informations de la personne suivante (écrasement dans l'ordre), ce qui peut être considéré comme une suppression.

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

·Les codes de recherche et de modification des contacts étant similaires, je ne les répéterai pas ici. La fonction d'effacement est présentée ici. En fait, vous pouvez directement régler le nombre de contacts à 0 (l'ajout l'écrasera et la recherche bloquera également les informations en dehors de la plage).

#4. Conclusion

Ceci est l'intégralité de l'introduction. Si vous avez besoin d'un code complet et directement applicable, veuillez me contacter.

Je suppose que tu aimes

Origine blog.csdn.net/m0_73747975/article/details/128738026
conseillé
Classement