contact.h
#ifndef __CONTACT_H__
#define __CONTACT_H__
#include<stdio.h>
#include<string.h>
enum Option
{
EXIT,
ADD,
DEL,
SEARCH,
MODIFY,
SHOW,
EMPTY
};
#define MAX_NAME 20
#define MAX_SEX 5
#define MAX_ADDR 20
#define MAX_TEL 11
#define MAX 3
struct PeoInfo
{
char name[MAX_NAME];
char sex[MAX_SEX];
short age;
char tel[MAX_TEL];
char addr[MAX_ADDR];
}PeoInfo;
typedef struct Contact
{
struct PeoInfo data[MAX];
unsigned int sz;
}Contact,*pContact;
void InitContact(pContact pc);
void AddContact(pContact pc);
void ShowContact(pContact pc);
void DelContact(pContact pc);
void FindContact(pContact pc);
void ModContact(pContact pc);
void EmptyContact(pContact pc);
int SearchContact(pContact pc,char* name);
#endif //__CONTACT_H__
contact.c
#include"contact.h"
void InitContact(pContact pc)
{
pc->sz = 0;
memset(pc->data,0,sizeof(pc->data));
//printf("%d\n",sizeof(pc->data));
}
void AddContact(pContact pc)
{
if(pc->sz == MAX)
{
printf("通讯录已满!\n");
return;
}
printf("请输入姓名->");
scanf("%s",pc->data[pc->sz].name);
printf("请输入性别->");
scanf("%s",pc->data[pc->sz].sex);
printf("请输入年龄->");
scanf("%d",&pc->data[pc->sz].age);
printf("请输入电话->");
scanf("%s",pc->data[pc->sz].tel);
printf("请输入住址->");
scanf("%s",pc->data[pc->sz].addr);
pc->sz++;
printf("添加成功!\n");
}
void ShowContact(pContact pc)
{
unsigned int i = 0;
printf("姓名\t性别\t年龄\t电话\t\t住址\n");
for(i=0;i<pc->sz;i++)
{
printf("%s\t%s\t%d\t%s\t%s\n",
pc->data[i].name,pc->data[i].sex,pc->data[i].age,
pc->data[i].tel,pc->data[i].addr);
}
}
int SearchContact(pContact pc,char* name)
{
int i = 0;
int pos = -1;
for(i=0;i<pc->sz;i++)
{
if(strcmp(name,pc->data[i].name) == 0)
{
pos = i;
}
}
return pos;
}
void FindContact(pContact pc)
{
int pos = -1;
char name[MAX_NAME] = {0};
if(pc->sz == 0)
{
printf("没有可查的记录!\n");
return ;
}
printf("请输入要查询联系人的姓名->");
scanf("%s",name);
pos = SearchContact(pc,name);
if(pos == -1)
{
printf("未查到联系人信息!\n");
}
else
{
printf("姓名\t性别\t年龄\t电话\t\t住址\n");
printf("%s\t%s\t%d\t%s\t%s\n",
pc->data[pos].name,pc->data[pos].sex,pc->data[pos].age,
pc->data[pos].tel,pc->data[pos].addr);
}
}
void DelContact(pContact pc)
{
int i = 0;
int pos = -1;
char name[MAX_NAME] = {0};
if(pc->sz == 0)
{
printf("没有可以删除的记录!\n");
return ;
}
printf("请输入要删除记录的姓名->");
scanf("%s",name);
pos = SearchContact(pc,name);
if(pos == -1)
{
printf("未查到联系人信息!\n");
}
else
{
for(i=pos;i<pc->sz;i++)
{
pc->data[i] = pc->data[i+1];
}
pc->sz--;
printf("删除成功!\n");
}
}
void ModContact(pContact pc)
{
int pos = -1;
char name[MAX_NAME] = {0};
if(pc->sz == 0)
{
printf("没有可修改的联系人!\n");
return ;
}
printf("请输入要修改联系人的姓名->");
scanf("%s",name);
pos = SearchContact(pc,name);
if(pos == -1)
{
printf("未查到此联系人!\n");
}
else
{
printf("请输入姓名->");
scanf("%s",pc->data[pos].name);
printf("请输入性别->");
scanf("%s",pc->data[pos].sex);
printf("请输入年龄->");
scanf("%d",&pc->data[pos].age);
printf("请输入电话->");
scanf("%s",pc->data[pos].tel);
printf("请输入住址->");
scanf("%s",pc->data[pos].addr);
printf("修改成功!\n");
}
}
void EmptyContact(pContact pc)
{
int i = 0;
int j = 0;
if(pc->sz == 0)
{
printf("通讯录本来就是空的!\n");
return ;
}
for(i=0;i<pc->sz;i++)
{
for(j=0;j<pc->sz-1;j++)
{
pc->data[j] = pc->data[j+1];
}
}
pc->sz -= pc->sz;
printf("已清空!\n");
}
test.c
#include"contact.h"
void menu()
{
printf("*********************************************\n");
printf("** 1.Add 2.Del **\n");
printf("** 3.Search 4.Modify **\n");
printf("** 5.Show 6.Empty **\n");
printf("** 0.Exit **\n");
printf("*********************************************\n");
}
int main()
{
int input = 0;
struct Contact my_con;
InitContact(&my_con);
do
{
menu();
printf("请选择要进行的操作->");
scanf("%d",&input);
switch(input)
{
case EXIT:
break;
case ADD:
AddContact(&my_con);
break;
case DEL:
DelContact(&my_con);
break;
case SEARCH:
FindContact(&my_con);
break;
case MODIFY:
ModContact(&my_con);
break;
case SHOW:
ShowContact(&my_con);
break;
case EMPTY:
EmptyContact(&my_con);
break;
default:
printf("输入有误!\n");
break;
}
}while(input);
return 0;
}