头文件contact.h
#include<stdio.h>
#include<string.h>
#ifndef __CONTACT_H__
#define __CONTACT_H__
#define MAX_NAME 20
#define MAX_SEX 5
#define MAX_ADDR 30
#define MAX_TEL 12
#define MAX 1000
typedef struct PeoInfo
{
char name[MAX_NAME];
int age;
char sex[MAX_SEX];
char addr[MAX_ADDR];
char tel[MAX_TEL];
}PeoInfo;
typedef struct Contact
{
PeoInfo contact[MAX];
int count;
}Contact, *pContact;
void init_contact(pContact pcon);
void add_contact(pContact pcon);
void delet_contact(pContact pcon);
void search_contact(pContact pcon);
void show_contact(pContact pcon);
void empty_contact(pContact pcon);
void change_contact(pContact pcon);
#endif //__CONTACT_H__
实现函数 contact.c
#include"contact.h"
#include"contact.h"
void init_contact(pContact pcon)
{
pcon->count = 0;
memset(pcon->contact, 0, sizeof(PeoInfo)*MAX);
}
void add_contact(pContact pcon)
{
if(pcon->count >= MAX)
{
printf("电话本已满");
return 0;
}
printf("请输入名字>:");
scanf("%s",pcon->contact[pcon->count].name);
printf("请输入年龄>:");
scanf("%d",&(pcon->contact[pcon->count].age));
printf("请输入性别>:");
scanf("%s",pcon->contact[pcon->count].sex);
printf("请输入电话>:");
scanf("%s",pcon->contact[pcon->count].tel);
printf("请输入地址>:");
scanf("%s",pcon->contact[pcon->count].addr);
pcon->count++;
printf("添加成功");
}
static int find_entry(pContact pcon, char name[])
{
int i = 0;
for(i=0; i<pcon->count; i++)
{
if(strcmp(name, pcon->contact[i].name) == 0)
{
return i; //找到返回下标
}
}
return -1; //未找到返回下标
}
void delet_contact(pContact pcon)
{
char name[MAX_NAME] = {0};
int pos = 0; //目标元素的下标
int i = 0;
if(pcon->count == 0)
{
printf("电话簿为空\n");
return 0;
}
printf("请输入要删除人的名字>:");
scanf("%s",&name);
pos = find_entry(pcon,name);
if(pos == -1)
{
printf("该删除人找不到\n");
return 0;
}
for(i=pos; i<pcon->count-1; i++)
{
pcon->contact[i] = pcon->contact[i+1];
}
pcon->count --;
printf("删除成功\n");
}
void search_contact(pContact pcon)
{
int i = 0;
int ret = 0;
char name[MAX_NAME] ={0};
if(pcon->count == 0)
{
printf("电话簿为空\n");
return 0;
}
printf("请输入查找姓名>:");
scanf("%s",&name);
ret = find_entry(pcon,name);
if(ret==-1)
printf("未找到");
else
{
printf("%10s %5s %5s %8s %10s\n","name","age","sex","tel","addr");
printf("%10s %5d %5s %8s %10s\n",
pcon->contact[i].name,
pcon->contact[i].age,
pcon->contact[i].sex,
pcon->contact[i].tel,
pcon->contact[i].addr);
printf("已找到\n");
}
}
void show_contact(pContact pcon)
{
int i= 0;
printf("%10s %5s %5s %8s %10s\n","name","age","sex","tel","addr");
for(i=0; i<pcon->count; i++)
{
printf("%10s %5d %5s %8s %10s\n",
pcon->contact[i].name,
pcon->contact[i].age,
pcon->contact[i].sex,
pcon->contact[i].tel,
pcon->contact[i].addr);
}
}
void empty_contact(pContact pcon)
{
pcon->count = 0;
}
void change_contact(pContact pcon)
{
int ret = 0;
char name;
printf("请输入需要修改的姓名>:");
scanf("%s",&name);
ret = find_entry(pcon,name);
if(ret!=-1)
{
printf("%10s %5s %5s %8s %10s\n","name","age","sex","tel","addr");
printf("%10s %5s %5s %8s %10s\n",
pcon->contact[ret].name,
pcon->contact[ret].age,
pcon->contact[ret].sex,
pcon->contact[ret].tel,
pcon->contact[ret].addr);
printf("请重新输入信息>:");
printf("请输入名字>:");
scanf("%s",pcon->contact[pcon->count].name);
printf("请输入年龄>:");
scanf("%d",&(pcon->contact[pcon->count].age));
printf("请输入性别>:");
scanf("%s",pcon->contact[pcon->count].sex);
printf("请输入电话>:");
scanf("%s",pcon->contact[pcon->count].tel);
printf("请输入地址>:");
scanf("%s",pcon->contact[pcon->count].addr);
printf("修改成功\n");
}
printf("抱歉,未找到");
}
框架test.c
#include"contact.h"
void menu()
{
printf("***************************************\n");
printf("************* 1.add *************\n");
printf("************* 2.delet *************\n");
printf("************* 3.search *************\n");
printf("************* 4.change *************\n");
printf("************* 5.show *************\n");
printf("************* 6.empty *************\n");
printf("************* 0.exit *************\n");
printf("***************************************\n");
}
void test()
{
int input = 0;
Contact con;
init_contact(&con);
do
{
menu();
printf("请选择>");
scanf("%d",&input);
switch(input)
{
case 1:
add_contact(&con);
break;
case 2:
delet_contact(&con);
break;
case 3:
search_contact(&con);
break;
case 4:
change_contact(&con);
break;
case 5:
show_contact(&con);
break;
case 6:
empty_contact(&con);
break;
case 0:
break;
default:printf("选择错误");
break;
}
}while(input);
}
int main()
{
test();
return 0;
}