番外篇之通讯录
- 互联网
- 2025-07-21 19:26:52

前言:用到的知识点有枚举、结构体、数组,快速排序(用的名字排序)
下面是测试函数:
test.c #define _CRT_SECURE_NO_WARNINGS 1 #include"contact.h" void menu() { printf("**********************************\n"); printf("*****请输入你要进行的操作*********\n"); printf("*****1.Add: 添加联系人***********\n"); printf("*****2.Sub: 删除联系人***********\n"); printf("*****3.Mod: 修改联系人***********\n"); printf("*****4.Show: 展示联系人***********\n"); printf("*****5:Sort: 对联系人进行排序*****\n"); printf("*****6:Check:查找联系人*****\n"); printf("*****0:Exit: 退出操作*************\n"); } int main() { int input = 0; Set arr[MAX_people] = { 0 }; int sz = 0; do { menu(); scanf("%d", &input); switch (input) { case Exit: printf("退出操作\n"); break; case Add: printf("请输入你要添加的联系人个数:>"); scanf("%d", &sz); Addpeople(arr,sz); break; case Sub: printf("开始输入删除联系人的信息:>\n"); Subpeople(arr, sz); break; case Mod: printf("开始展示联系人信息:>\n"); Modpeople(arr, sz); break; case Show: Showpeople(arr, sz); break; case Sort: //用名字来排序 qsort(arr, sz,sizeof(arr[0]),Sort_quickly); break; case Check: Checkpeople(arr, sz); break; default: printf("您的操作有误,请重新操作\n"); } } while (input); return 0; }下面是contact.c文件里面的函数实现
#include"contact.h" void Addpeople(Set arr[], int sz) { int i = 0; for (; i < sz; i++) { printf("请输入名字:"); scanf("%s", arr[i].name); printf("请输入性别:"); scanf("%s", arr[i].sex); printf("请输入你与他的关系:"); scanf("%s", arr[i].rel); printf("请输入他的地址:"); scanf("%s", arr[i].address); printf("请输入电话号码:"); scanf("%lld", &arr[i].phone_number); putchar('\n'); } } void Subpeople(Set arr[], int* sz) { printf("输入你要删除的名字:"); char a[20] = { 0 }; scanf("%s", a); int i = 0; int j = 0; for (i = 0; i < sz; i++) { if (strcmp(arr[i].name, a) == 0) { for (j = i; j < sz; j++) { arr[j] = arr[j + 1]; } sz--; } } if (arr[j].name != '\0') printf("你删除的联系人不存在\n"); } void Modpeople(Set arr[], const int sz) { printf("请输入你想要修改人的姓名:"); char a[20] = {0}; scanf("%s", a); int i = 0; int j = 0; for (i = 0; i < sz; i++) { if (strcmp(arr[i].name, a) == 0) { printf("请输入修改后的所有信息:"); scanf("%s%s%s%s%lld",&arr[i].name, &arr[i].sex, &arr[i].rel, &arr[i].address, &arr[i].phone_number); } } } void Showpeople(Set* arr, int sz) { int i = 0; printf("姓名 性别 关系 地址 电话号码\n"); for (; i < sz; arr++,i++) { printf("%-20s%-10s%-10s%-20s%-13lld\n", arr->name, arr->sex, arr->rel, arr->address, arr->phone_number); } } int Sort_quickly(void* p1, void* p2) { return strcmp(((Set*)p1)->name , ((Set*)p2)->name); } void Checkpeople(Set arr[], int sz) { printf("请输入你要查找的联系人姓名:"); char s[20] = { 0 }; scanf("%s", s); for (int i = 0; i < sz; i++) { if (strcmp(arr[i].name, s) == 0) { printf("已经寻找到该联系人的信息:>\n"); printf("%-20s%-10s%-10s%-20s%-13lld\n", arr[i].name, arr[i].sex, arr[i].rel, arr[i].address, arr[i].phone_number); } } }下面是头文件contact.h进行函数声明
#pragma once #define MAX_people 100 #include<stdio.h> #include<string.h> enum number { Exit, Add, Sub, Mod, Show, Sort, Check, }; typedef struct Stu { char name[20]; char sex[10]; char rel[10]; char address[20]; long long int phone_number; }Set; void Addpeople(Set arr[], int sz);//添加联系人 void Subpeople(Set arr[], int* sz);//删除联系人 void Modpeople(Set arr[], int sz);//修改联系人 void Showpeople(Set* arr, int sz);//展示你的联系人 int Sort_quickly(void*, void*);//排序函数 void Checkpeople(Set arr[],int sz);//查找联系人