最普通版本的通讯录:
详细见注释,包含初始化,添加,删除,查找,显示,清空等操作
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("清空联系人成功!&