C语言实现多版本通讯录(编译器VS2013)包含普通版本,动态版本,文件版本

最普通版本的通讯录:
详细见注释,包含初始化,添加,删除,查找,显示,清空等操作
contact.h文件

#ifndef _CONTACT_H_
#define _CONTACT_H_

#include<stdio.h>
#include<string.h>
#include<windows.h>
#pragma warning (disable:4996)

enum Oper
{
	EXIT,
	ADD,
	DEL,
	SEAR,
	SHOW,
	CLEAR,
	DESTORY
};

#define MAX_NUMBER 1000
#define MAX_NAME 10
#define SEX_NAME 5
#define TEL_NAME 11
#define ADDR_NAME 20
//抽象个人信息
typedef struct PersonIfo
{
	char name[MAX_NAME];
	char sex[SEX_NAME];
	int age;
	char tele[TEL_NAME];
	char addr[ADDR_NAME];
}PersonInfo;
//抽象通讯录
typedef struct Contact
{
	int usedsize;//有效数据个数
	PersonInfo per[MAX_NUMBER];
}Contact;
void InitContact(Contact *pcon);//通讯录初始化
void AddContact(Contact *pcon);//添加成员
void ShowContact(Contact *pcon);//打印通讯录
void DelContact(Contact *pcon);//删除成员
int SearchContact(Contact *pcon);//查找成员
void ClearContact(Contact *pcon);//清空通讯录
#endif

contact.c

#include"contact.h"
//初始化通讯录**************************************************
void InitContact(Contact *pcon)
{
	pcon->usedsize = 0;//将结构体变量中的usedsize初始化为0
	memset(pcon->per, 0, sizeof(pcon->per));//初始化结构体变量的数组void * memset ( void * ptr, int value, size_t num );
}

//添加成员*******************************************************
void AddContact(Contact *pcon)
{
	if (pcon->usedsize == MAX_NUMBER)//判断该数组是否满了?
	{
		printf("抱歉,该通讯录已满");
		return;
	}
	printf("请输入下列各项信息:\n");
	printf("请输入名字:>");
	scanf("%s", pcon->per[pcon->usedsize].name);
	printf("请输入性别:>");
	scanf("%s", pcon->per[pcon->usedsize].sex);
	printf("请输入年龄:>");
	scanf("%d", &pcon->per[pcon->usedsize].age);
	printf("请输入电话号码:>");
	scanf("%s", pcon->per[pcon->usedsize].tele);
	printf("请输入地址:>");
	scanf("%s", pcon->per[pcon->usedsize].addr);
	pcon->usedsize++;
	printf("添加联系人成功!");
}

//打印通讯录*******************************************************
void ShowContact(Contact *pcon)
{
	int i = 0;
	if (pcon->usedsize == 0)
	{
		printf("该通讯录为空,目前没有可Show的\n");
		return;
	}
	for (i = 0; i < pcon->usedsize; i++)
	{
		printf("姓名:%s   ", pcon->per[i].name);
		printf("性别:%s   ", pcon->per[i].sex);
		printf("年龄:%d   ", pcon->per[i].age);
		printf("电话号码:%s   ", pcon->per[i].tele);
		printf("地址:%s   ", pcon->per[i].addr);
		printf("\n");
	}
}

//查找联系人***************************************************
int SearchContact(Contact *pcon)
{
	int i = 0;
	char name[MAX_NAME] = { 0 };
	if (pcon->usedsize == 0)
	{
		printf("抱歉,该通讯录为空!");
		return -1;
	}
	printf("请输入要查找的联系人姓名:");
		scanf("%s", &name);
		for (i = 0; i < pcon->usedsize; i++)
		{
			if(strcmp(pcon->per[i].name, name) == 0)
			{
				return i;
			}
		}
		return -1;
}

//删除联系人*****************************************************
void DelContact(Contact *pcon)
{
	int i = 0;
	int index = SearchContact(pcon);
	if (index == -1)
	{
		printf("未找到此人!");
		return;
	}
	for (i = index; i < pcon->usedsize - 1; i++)
	{
		pcon->per[i] = pcon->per[i + 1];
	}
	pcon->usedsize--;
	printf("删除联系人成功!");
}
//清空联系人*****************************************************
void ClearContact(Contact *pcon)
{
	pcon->usedsize = 0;
	printf("清空联系人成功!&
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值