当前位置: 首页 > news >正文

番外篇之通讯录

前言:用到的知识点有枚举、结构体、数组,快速排序(用的名字排序)

下面是测试函数:

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);//查找联系人

相关文章:

  • Java反射调用kotlin中的类,Object类,Companion对象
  • 专业pdf编辑工具PDF Expert mac中文版特点介绍
  • 【阿里云】图像识别 智能分类识别 项目开发(一)
  • Centos部署GitLab-备份恢复
  • MYSQL加密和压缩函数详解和实战(含示例)
  • hdlbits系列verilog解答(exams/m2014_q4i)-45
  • Deepin使用记录-deepin系统下安装RabbitMq
  • 知行之桥EDI系统HTTP签名验证
  • CPU、GPU、TPU内存子系统架构
  • 【STM32单片机】自动售货机控制系统设计
  • 高精度乘法
  • 某省交控高速公路分公司高效运维
  • Windows安装Hadoop运行环境
  • 单片机学习3——数码管
  • java根据时间区间计算区间中都包含那几个月
  • 【点云surface】 凹包重构
  • 改进YOLOv8 | YOLOv5系列:RFAConv续作,即插即用具有任意采样形状和任意数目参数的卷积核AKCOnv
  • Linux MMC子系统 - 6.eMMC 5.1工作模式-设备识别模式
  • Unity-链接MySql8.0
  • [网络] 字节一面~ 2. HTTP 2 与 HTTP 1.x 有什么区别
  • 影子调查丨三名“淘金客”殒命雪峰山:千余废弃金矿洞的监管难题
  • 长沙查处疑似非法代孕:有人企图跳窗,有女子被麻醉躺手术台
  • 北美票房|昔日偶像风光不再,乔什·哈内特新片开画不佳
  • 种罂粟喂鸡防病?四川广元一村民非法种植毒品原植物被罚​
  • 第19届威尼斯建筑双年展开幕,中国案例呈现“容·智慧”
  • 巴基斯坦全面恢复领空开放