/*
*实现一个通讯录
*通讯录可以用来存储1000个人的信息,每个人的信*息包括:
*姓名、性别、年龄、电话、住址
*
*提供方法:
*1. 添加联系人信息
*2. 删除指定联系人信息
*3. 查找指定联系人信息
*4. 修改指定联系人信息
*5. 显示所有联系人信息
*6. 清空所有联系人
*/
需要写入的头文件
#ifndef __CONTACT_H__
#define __CONTACT_H__
//各种变量的大小的预处理宏定义
#define NAME_LENGTH 20
#define SEX_LENGTH 2
#define TELE_LENGTH 11
#define ADDR_LENGTH 30
#define MAX_LENGTH 1000
//成员信息结构体的定义
struct peopleinfor
{
char name[NAME_LENGTH];
char sex[SEX_LENGTH];
int age;
char tele[TELE_LENGTH];
char addr[ADDR_LENGTH];
};
//通讯录的定义
struct contact
{
struct peopleinfor person[MAX_LENGTH];
int user_count;
};
typedef struct contact * pcon;
/*
*通讯录提供的各种功能
*/
int add_infor(pcon p);//添加联系人信息
int dele_infor(pcon p);//删除指定联系人信息
int find_infor(pcon p);//查找指定联系人信息
int motify_infor(pcon p);//修改指定联系人信息
int show_infor(pcon p);//显示所有联系人信息
void clean_infor(pcon p);//清空所有联系人
#endif//__CONTACT_H__
所引入头文件中各种功能的实现
#include<stdio.h>
#include"contact.h"
#include<string.h>
//根据输入的名字找对应的实体下标
int find_entry(pcon p)
{
char name[NAME_LENGTH];
int count;
printf("please input a name you want to find:\n");
scanf("%s",name);
for(count=0;count<p->user_count;count++)
{
if(strcmp(name,p->person[count].name) == 0)
{
return count;
}
}
return -1;
}
//添加联系人信息
int add_infor(pcon p)
{
if(p->user_count < MAX_LENGTH)
{
printf("name:");
scanf("%s",p->person[p->user_count].name);
printf("sex:");
scanf("%s",p->person[p->user_count].sex);
printf("age:");
scanf("%d",&(p->person[p->user_count].age));
printf("tele:");
scanf("%s",p->person[p->user_count].tele);
printf("addr:");
scanf("%s",p->person[p->user_count].addr);
p->user_count++;
}
else
{
printf("error\n");
return -1;
}
return 0;
}
//删除指定联系人信息
int dele_infor(pcon p)
{
int ret = find_entry(p);
if(ret >=0)
{
for(;ret<p->user_count-1;ret++)
{
p->person[ret] = p->person[ret+1];
}
p->user_count--;
}
return 0;
}
//查找指定联系人信息
int find_infor(pcon p)
{
int ret = find_entry(p);
if(ret >= 0)
{
printf("%s ",p->person[ret].name);
printf("%s ",p->person[ret].sex);
printf("%d ",p->person[ret].age);
printf("%s ",p->person[ret].tele);
printf("%s \n",p->person[ret].addr);
}
return 0;
}
//修改指定联系人信息
int motify_infor(pcon p)
{
int ret = find_entry(p);
if(ret)
{
printf("Please modified the name of the output");
scanf("%s",p->person[ret].name);
}
return 0;
}
//显示所有联系人信息
int show_infor(pcon p)
{
int i;
printf("All the contact information:\n");
if(p->user_count != 0)
{
for(i=0;i<p->user_count;i++)
{
printf("%s ",p->person[i].name);
printf("%s ",p->person[i].sex);
printf("%d ",p->person[i].age);
printf("%s ",p->person[i].tele);
printf("%s \n",p->person[i].addr);
}
}
else
{
printf("error\n");
return -1;
}
return 0;
}
//清空所有联系人
void clean_infor(pcon p)
{
p->user_count = 0;
}
主函数
#include<stdio.h>
#include"contact.h"
int main ()
{
struct contact con;
pcon p;
int value = 1;
p = &con;
p->user_count = 0;
while(value)
{
printf("input value:");
scanf("%d",&value);
if(value>=1&& value<=6)//判断所输入数字是否在1-6之间
{
switch(value)//开关控制语句
{
case 1:
add_infor(p);
break;
case 2:
dele_infor(p);
break;
case 3:
find_infor(p);
break;
case 4:
motify_infor(p);
break;
case 5:
show_infor(p);
break;
case 6:
clean_infor(p);
break;
default:
break;
}
}
else
{
printf("inpur error\n");
}
}
return 0;
}