进阶C语言-通讯录的实现

在这里插入图片描述

🎈1.设计要求

🌞通过前面关于结构体及相关自定义类型的学习,我们就可以写上一个通讯录这样的程序,该程序有如下要求

  1. 可以保存100个人的信息。
  2. 增加人的信息。
  3. 删除指定联系人的信息。
  4. 查找指定联系人的信息。
  5. 修改指定联系人的信息。
  6. 排序通讯录的信息。
  7. 显示所有联系人的信息。

🎈人的信息:

  • 姓名
  • 年龄
  • 性别
  • 电话
  • 地址

✅为了使咱们的程序更加的清晰易懂,我们可以将该工程分为三个文件:

  • test.c-测试代码
  • contact.h-声明
  • contact.c-实现

🎈2.程序实现

🔭2.1打印菜单及初始化通讯录

contact.h

#pragma once
//类型的声明
#include <stdio.h>
#include <assert.h>
#include <string.h>
#define Max 100
#define NAME_MAX 10
typedef struct PepInfo
{
   
	char name[NAME_MAX];
	int age;
	char sex[5];
	char tele[12];
	char addr[20];
}PInfo;

typedef struct Contact
{
   
	PInfo data[Max];
	int sz;//用于记录当前通讯录中存放了多少个人的信息
}Contact;

//初始化通讯录
void InitContact(Contact* c);

contact.c

#define _CRT_SECURE_NO_WARNINGS 1
#include "contact.h"
void InitContact(Contact *c)
{
   
	assert(c);
	c->sz = 0;
	memset(c->data, 0, sizeof(c->data));
}

test.c

//文件用于测试通讯录的基本功能。
#define _CRT_SECURE_NO_WARNINGS 1
#include "contact.h"//自己定义的头文件用""
void menu()
{
   
	printf("***********************************\n");
	printf("********1.增加联系人***************\n");
	printf("                                   \n");
	printf("********2.删除指定联系人的信息*****\n");
	printf("                                   \n");
	printf("********3.查找指定联系人的信息*****\n");
	printf("                                   \n");
	printf("********4.修改指定联系人的信息*****\n");
	printf("                                   \n");
	printf("********5.排序通讯录的信息*********\n");
	printf("                                   \n");
	printf("********6.显示所有联系人的信息*****\n");
	printf("                                   \n");
	printf("********0.退出程序*****************\n");
	printf("***********************************\n");
}
enum Option
{
   
	EXIT,
	ADD,
	DEL,
	SEARCH,
	MODIFY,
	SHOW,
	SORT
};
int main()
{
   
	int input = 0;
	Contact con;
	//初始化函数
	InitContact(&con);
	do
	{
   
		menu();
		printf("请输入你的选择:>");
		scanf("%d", &input);
		switch (input)
		{
   
		case ADD:
			break;
		case DEL:
			break;
		case SEARCH:
			break;
		case MODIFY:
			break;
		case SHOW:
			break;
		case SORT:
			break;
		case EXIT:
			printf("退出通讯录\n");
			break;
		default:
			break;
		}
	} while (input);
	return 0;
}

🔭2.2显示所有联系人

contact.h

//显示所有联系人
void ShowContact(const Contact* c);

contact.c

void ShowContact(const Contact* c)
{
   
	assert(c);
	if (c->sz == 0)
	{
   
		printf("通讯录为空,无需打印!\n");
	}
	int i = 0;
	printf("%-20s%-5s%-5s%-12s%-30s\n", "姓名", "年龄", "性别", "电话", "地址");
	for (int i = 0; i < c->sz; i++)
	{
   
		printf("%-20s%-5s%-5s%-12s%-30s\n",
			c->data[i].name, c->data[i].age, c
  • 56
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 42
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 42
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一口⁵个团子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值