Annuaire d'articles
Préface
Dans cet article, nous présenterons comment mettre en œuvre un système de gestion de carnet d'adresses. Ses fonctions sont présentées comme suit : Le carnet d'adresses peut être utilisé pour stocker les informations de 1 000 personnes. Les informations de chaque personne comprennent :Nom, sexe, âge, numéro de téléphone, adresse. Nous pouvons effectuer les opérations suivantes sur le carnet d'adresses : ajouter des informations de contact, supprimer les informations de contact spécifiées, rechercher les informations de contact spécifiées, modifier les informations de contact spécifiées, afficher toutes les informations de contact, effacer tous les contacts, tout trier par âge Personne de contact.
1. Le fichier d'en-tête du projet contient la définition de la structure, la déclaration et l'introduction des fonctions
#pragma once
#include <stdio.h>
#define MAXSIZE 1000//通讯录的最大容量
#include <string.h>//使用字符串函数
typedef struct Node
{
char name[15];//姓名
char sex[4];//性别
int age;//年龄
char tel[14];//电话号码
char address[10];//家庭住址
}Node;//
typedef struct people
{
int size;//记录当前通讯录中人数多少
Node node[MAXSIZE];//定义一个数组来记录每一个人的信息
}people;
//初始化结构体
void InitPeople(people* arr);
//向结构体中添加人数
void add(people* arr);
//展示我们通讯录中现有人物的基本信息
void show(const people* arr);
//清空通讯录
void clear(people* arr);
//通过姓名,查找通讯录中具体的那个人
int search(const people* arr);
//删除通讯录中的一个人
void del(people* arr);
//修改通讯录中一个人的信息
void modify(people* arr);
//按照通讯录中人物的年龄进行排序
void sort_contact(people* arr);
2. Mise en œuvre de fonctions spécifiques
1. Structure d'initialisation
Parce que lorsque nous avons commencé, notre carnet d'adresses n'était pas rempli d'informations de contact, donc le nombre actuel de personnes dans la structure d'initialisation est de 0.
le code s'affiche comme ci-dessous :
void InitPeople(people* arr)
{
arr->size = 0;
}
2. Ajouter des informations de contact
Lorsque notre nombre actuel de personnes n'atteint pas la limite maximale du nombre de personnes stockées dans le carnet d'adresses, nous pouvons ajouter des informations de contact au carnet d'adresses.
le code s'affiche comme ci-dessous :
void add(people* arr)
{
if (arr->size >= MAXSIZE - 1)
printf("通讯录已满,无法添加\n");
printf("请输入您要添加的姓名:>");
scanf("%s", arr->node[arr->size].name);
printf("请输入您要添加人的性别:>");
scanf("%s", arr->node[arr->size].sex);
printf("请输入您要添加人的年龄:>");
scanf("%d", &arr->node[arr->size].age);
printf("请输入您要添加人的电话号码:>");
scanf("%s", arr->node[arr->size].tel);
printf("请输入您要添加联系人的地址:>");
scanf("%s", arr->node[arr->size].address);
arr->size++;
}
3. Afficher toutes les informations de contact
Lorsque le nombre de contacts dans notre carnet d'adresses n'est pas 0, nous imprimons les informations de tous les contacts de notre carnet d'adresses.
le code s'affiche comme ci-dessous :
void show(const people* a)
{
if (a->size == 0)
{
printf("您的通讯录为空\n");
return;
}
printf("%-15s%-15s%-15s%-15s%-15s\n",
"姓名", "性别", "年龄", "电话", "住址");
for (int i = 0; i < a->size; i++)
{
printf("%-15s%-15s%-15d%-15s%-15s\n",
a->node[i].name, a->node[i].sex,
a->node[i].age, a->node[i].tel, a->node[i].address);
}
printf("\n");
}
4. Effacer le carnet d'adresses
Tant que le nombre de personnes dans le carnet d'adresses est réduit à 0, toutes les informations de contact peuvent être effacées.
le code s'affiche comme ci-dessous :
void clear(people* arr)
{
arr->size = 0;
printf("您的通讯录已经清空\n");
}
5. Rechercher un contact par son nom
le code s'affiche comme ci-dessous :
//找到匹配的人名返回下标,否则返回-1
int search(const people* arr)
{
char tem[20];
printf("请输入您要查找的人的名字:>");
scanf("%s", tem);
for (int i = 0; i < arr->size; i++)
{
if (strcmp(arr->node[i].name, tem) == 0)
{
return i;
}
}
return -1;
}
6. Supprimer des contacts
//在通讯录中查找与输入姓名相同的姓名下标,否则返回-1
int find_by_name(people *arr,char tem[])
{
if (arr->size == 0)return -1;
for (int i = 0; i < arr->size; i++)
{
if (strcmp(arr->node[i].name, tem) == 0)
return i;
}
return -1;
}
void del(people* arr)
{
printf("请输入您要删除联系人的姓名:>");
char tem[20];
scanf("%s", tem);
int ret = find_by_name(arr, tem);
if (ret == -1)printf("您要删除的联系人不存在");
else
{
for (int i = ret; i < arr->size - 1; i++)
{
strcpy(arr->node[i].name, arr->node[i + 1].name);
strcpy(arr->node[i].address, arr->node[i + 1].address);
strcpy(arr->node[i].sex, arr->node[i + 1].sex);
strcpy(arr->node[i].tel, arr->node[i + 1].tel);
arr->node[i].age = arr->node[i + 1].age;
}
arr->size--;
}
}
7. Modifier les coordonnées
int find_by_name(people *arr,char tem[])
{
if (arr->size == 0)return -1;
for (int i = 0; i < arr->size; i++)
{
if (strcmp(arr->node[i].name, tem) == 0)
return i;
}
return -1;
}
void modify(people* arr)
{
printf("请您输入您要修改哪位联系人的信息:>");
char tem[20];
scanf("%s", tem);
int ret = find_by_name(arr, tem);
if (ret == -1)
{
printf("您输入的联系人不存在于您的通讯录。\n");
}
else
{
printf("请输入您要修改的姓名:>");
scanf("%s", arr->node[ret].name);
printf("请输入您要修改人的性别:>");
scanf("%s", arr->node[ret].sex);
printf("请输入您要修改人的年龄:>");
scanf("%d", &arr->node[ret].age);
printf("请输入您要修改人的电话号码:>");
scanf("%s", arr->node[ret].tel);
printf("请输入您要修改联系人的地址:>");
scanf("%s", arr->node[ret].address);
}
}
8. Trier les contacts par âge
Utilisant principalement la fonction de bibliothèque qsort en langage C
int my_compar(const void* s1, const void* s2)
{
return ((Node*)s1)->age - ((Node*)s2)->age;
}
void sort_contact(people* arr)
{
qsort(arr->node, arr->size, sizeof(arr->node[0]), my_compar);
}
Résumer
Grâce à ce projet, nous avons une compréhension plus approfondie des structures et des fonctions. J'espère que ce blog vous sera utile.