用C语言写了个简单的通讯录

文章目录

  • 每日一言
  • 代码
    • contacts.h
    • contacts.c
    • test.c
  • 结语

每日一言

我们所爱之物昭示着我们究竟是谁。 --托马斯·阿奎纳


代码

contacts.h

#pragma once

#define _CRT_SECURE_NO_WARNINGS 1

#define MAX 10//通讯录最大存储量

#include
#include
#include
#include
#include

typedef struct Peo
{
	char name[10];//姓名
	int age;//年龄
	int number;//电话号码
}Peo;

void menu();//菜单
void InitContacts(Peo* peo, int* num);//初始化通讯录
void PrintContacts(const Peo* const peo, const int num);//打印通讯录
void AddContacts(Peo* peo, int* pnum);//添加通讯录
void DeleteContacts(Peo* peo, int* num);//删除通讯录
void SortByNameContacts(Peo* peo, const int* num);//按照名字排序
void FindBynameContacts(const Peo* peo, int num);//按照名字查找

contacts.c

#include "contacts.h"

enum { 退出, 输入, 查找, 排序, 删除, 查看 };

int main()
{
	int input = 0;//输入的选项
	int num = 0;//通讯录里的人数
	Peo peo[MAX];
	InitContacts(peo, &num);
	menu();
	do
	{
		printf("请输入:");
		scanf("%d", &input);
		//InitContacts(&peo,&num);
		system("cls");
		menu();
		switch (input)
		{
		case 退出:
			printf("退出通讯录\n"); 
			break;
		case 输入:
			AddContacts(peo, &num);
			break;
		case 查找:
			FindBynameContacts(peo, num);
			break;
		case 排序:
			SortByNameContacts(peo, &num);
			PrintContacts(peo, num);
			break;
		case 删除:
			PrintContacts(peo, num);
			DeleteContacts(peo, &num);
			break;
		case 查看:
			PrintContacts(peo, num);
			break;
		default:
			printf("输入错误\n");
		}
	} while (input);
	return 0;
}

test.c

#include "contacts.h"

void menu()
{
	printf("*************************************\n");
	printf("**  1. 输入            2. 查找     **\n");
	printf("**  3. 排序            4. 删除     **\n");
	printf("**  5. 查看            0. 退出     **\n");
	printf("*************************************\n");
}

void InitContacts(Peo*peo, int* num)
{
	memset(peo, 0, sizeof(*peo));
	*num = 0;
}

void PrintContacts(const Peo* const peo,const int num)
{

	printf("---------------------------------------------------------------------\n");
	printf("%-10s %-10s %-10s %-10s\n","编号", "姓名", "年龄", "电话号码");
	int i = 0;
	for (i = 0; i < num; i++)
	{
		printf("%-10d %-10s %-10d %-10d\n", i+1 ,peo[i].name, peo[i].age, peo[i].number);
	}
	printf("---------------------------------------------------------------------\n");
}

void AddContacts(Peo* peo, int* pnum)
{

	if (*pnum < MAX)
	{
		printf("请依次输入姓名,年龄,电话号码:");
		scanf("%s %d %d", peo[*pnum].name, &peo[*pnum].age, &peo[*pnum].number);
		(*pnum)++;
		printf("添加成功\n");
	}
	else
	{
		printf("通讯录已满,无法添加\n");
	}
}

void DeleteContacts(Peo* peo, int* num)
{

	if (*num > 0)
	{
		printf("请输入要删除的编号:");
		int n = 0;
		scanf("%d", &n);
		if (*num >= n)
		{
			for (int i = --n; i < *num; i++)
			{
				peo[i].age = peo[i + 1].age;
				strcpy(peo[i].name, peo[i + 1].name);
				peo[i].number = peo[i + 1].number;
			}
			(*num)--;
			printf("删除成功\n");
		}
		else
			printf("要删除的编号不存在\n");
	}
	else
	{
		printf("通讯录为空,无法删除\n");
	}
}

int Cmp(const void* p1, const void* p2)
{
	return strcmp((*(Peo*)p1).name, (*(Peo*)p2).name);
}

void SortByNameContacts(Peo* peo, const int* num)
{
	if (*num > 0)
	{
		qsort(peo, *num, sizeof(Peo), Cmp);
	}
	else
	{
		printf("通讯录为空,无法排序\n");
	}
}

void FindBynameContacts(const Peo* peo,int num)
{
	if (num > 0)
	{
		printf("请输入要查找的姓名:");
		char s[10] = { 0 };
		scanf("%s", &s);
		int i = 0;
		bool f = true;
		printf("---------------------------------------------------------------------\n");
		printf("%-10s %-10s %-10s %-10s\n", "编号", "姓名", "年龄", "电话号码");
		for (i = 0; i < num; i++)
		{
			if (strcmp(peo[i].name, s)==0)
			{
				f = false;
				printf("%-10d %-10s %-10d %-10d\n", i + 1, peo[i].name, peo[i].age, peo[i].number);
			}
		}
		printf("---------------------------------------------------------------------\n");
		if (f)
		{
			printf("查无此人\n");
		}
	}
	else
	{
		printf("通讯录为空,无法查找\n");
	}

}

结语

请给自己些耐心,一口吃不成胖子。
山外青山楼外楼,莫把百尺当尽头。
保持空杯心态加油努力吧!


都看到这里啦!真棒(*^▽^*)

可以给作者一个免费的赞赞吗,这将会鼓励我继续创作,谢谢大家

编程小白写作,如有纰漏或错误,欢迎指正


你可能感兴趣的:(C语言,c语言,算法,开发语言)