C语言实现通讯录

通讯录实现

功能描述

添加联系人的个人信息,删除联系人,清空通讯录。

代码

#pragma once
#include<stdio.h>
#include<assert.h>
#include<string.h>
#define MAX_NUM 10
typedef struct person
{
	char name[10];
	char sex[4];
	int age;
	char tele[12];
	char addr[20];
}person;
typedef struct contact
{
	int size;
	person person[MAX_NUM];
}contact;
void Init(contact* contact);
void add(contact* contact);
void delete(contact* contact);
void show(contact* contact);
void clear(contact* contact);
#define _CRT_SECURE_NO_WARNINGS 1
#include"contact.h"
void Init(contact* contact)
{
	assert(contact != NULL);
	contact->size = 0;
	memset(contact->person, 0 ,sizeof(contact->person));
}
void add(contact* contact)
{
	if (contact->size == MAX_NUM)
	{
		printf("通讯录已满\n");
		return;
	}
	printf("姓名:");
	scanf("%s", contact->person[contact->size].name);
	printf("性别:");
	scanf("%s", contact->person[contact->size].sex);
	printf("年龄:");
	scanf("%d", &(contact->person[contact->size].age));
	printf("电话:");
	scanf("%s", contact->person[contact->size].tele);
	printf("地址:");
	scanf("%s", contact->person[contact->size].addr);
	contact->size++;
	printf("添加成功\n");
}
void show(contact* contact)
{
	assert(contact!= NULL);
	printf("%-10s %-10s %-10s %-10s %-10s\n", "姓名", "性别", "年龄", "电话", "地址");
	for(int i=0;i<contact->size;i++)
	{
		printf("%-10s %-10s %-10d %-10s %-10s\n", contact->person[i].name, contact->person[i].sex,
			contact->person[i].age, contact->person[i].tele, contact->person[i].addr);
	}
}
int IsEmpty(contact* contact)
{
	assert(contact != NULL);
	if (contact->size == 0)
	{
		printf("通讯录为空\n");
		return 1;
	}
	return 0;
}
static int Search(contact* contact)
{
	assert(contact != NULL);
	char name[10];
	printf("请输入要删除的姓名:");
	scanf("%s",name);
	for (int i = 0; i < contact->size; i++)
	{
		if (strcmp(name, contact->person[i].name) == 0)
			return i;
	}
	return -1;
}
void delete(contact* contact)
{
	int index = Search(contact);
	if (index == -1)
	{
		printf("此人不存在\n");
		return;
	}
	
	for (int i = index; i < contact->size; i++)
	{
		strcpy(contact->person[i].name, contact->person[i + 1].name);
		strcpy(contact->person[i].sex, contact->person[i + 1].sex);
		contact->person[i].age=contact->person[i + 1].age;
		strcpy(contact->person[i].tele, contact->person[i + 1].tele);
		strcpy(contact->person[i].addr, contact->person[i + 1].addr);
	}
	contact->size--;
	printf("删除成功\n");
}
void clear(contact* contact)
{
	contact->size = 0;
}
#define _CRT_SECURE_NO_WARNINGS 1
#include"contact.h"
#include<ctype.h>
void menu()
{
	printf("*********************\n");
	printf("**1.add***2.delete***\n");
	printf("**3.show**4.clear****\n");
	printf("******0.exit*********\n");
}
int main()
{
	int input = 0;
	contact personcon;
	Init(&personcon);
	do
	{
		menu();
		printf("请选择:");
		scanf("%d", &input);
		switch (input)
		{
		case 0:
			printf("退出系统\n");
			break;
		case 1:
			add(&personcon);
			break;
		case 2:
			delete(&personcon);
			break;
		case 3:
			show(&personcon);
			break;
		case 4:
			clear(&personcon);
			break;
		default:
			break;
		}
	} while (input);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值