通讯录的简单实现

/*

*实现一个通讯录

*通讯录可以用来存储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;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值