c语言小项目——通讯录实现

一、功能的介绍

        实现通讯录中联系人信息的增、删、查、改。

二、程序模块的介绍

1.测试文件test.c

        初始化通讯录—>联系人的增、删、查、改—>每次操作之后都打印通讯录。

#include"contact.h"
int main()
{
	int input = 0;
	struct contact con;//通讯录结构体变量
	menu();//菜单
	initcontact(&con);//初始化通讯录
	while (1)
	{
		printf("请选择菜单:");
		scanf("%d", &input);//选择菜单
		switch(input)
		{
			case add: ADDinf(&con);//增
				break;
			case del:DELinf(&con);//删
				break;
			case check:Checkinf(&con);//查
				break;
			case change:Changeinf(&con);//改
				break;
		}
		print(&con);//打印整个通讯录
	}
	return 0;
}

2.头文件contact.h

        一些库函数的头文件、宏定义、枚举、结构体类型的声明和功能块函数的声明。

#pragma once
#include
#include
#define phone_num 11//电话号码11位
#define max_peo_num 100//通讯录容量100人
#define peo_name_num 10//姓名长度
enum star//增删查改
{
	add=1,
	del,
	check,
	change,
};
struct peoinf//联系人信息
{
	char name[10];
	char phone[phone_num+1];
};
struct contact//通讯录
{
	struct peoinf data[max_peo_num];
	int size;
};
void menu();
void initcontact(struct contact*p);
void ADDinf(struct contact* p);
void DELinf(struct contact* p);
void Checkinf(struct contact* p);
void Changeinf(struct contact*p);
void print(struct contact* p);

​

3.功能函数的实现contact.c

#include"contact.h"
void menu()//菜单
{
	printf("**********************************\n");
	printf("********1.add        2.del********\n");
	printf("********3.check      4.change*****\n");
	printf("**********************************\n");
}

void initcontact(struct contact*p)//初始化通讯录
{
	memset(&p->data,0,sizeof(p->data));
	p->size = 0;
}

void ADDinf(struct contact* p)//增加联系人
{
	printf("请输入联系人姓名和电话:"); 
	scanf("%s",&(p->data[p->size].name));
	scanf("%s",&(p->data[p->size].phone));
	p->size++;
}

void DELinf(struct contact* p)//删减联系人
{
	printf("请输入被删联系人姓名:");
	char del_name[peo_name_num] = {0};
	scanf("%s",&del_name);
	for (int i = 0; i < p->size; i++)
	{
		if (strcmp(del_name, p->data[i].name) == 0)//找到要删联系人
		{
			memset(&p->data[i], 0, sizeof(p->data[0]));
			for (int j = i; j < p->size; j++)
				p->data[j] = p->data[j + 1];
		}
	}
	p->size--;
}

void Checkinf(struct contact* p)//查找联系人
{
	char check_name[peo_name_num] = {0};
	printf("请输入被查找人的姓名:");
	scanf("%s",check_name);
	for (int i=0; i < p->size; i++)
	{
		if (strcmp(check_name, &p->data[i]) == 0)//找到被找人的姓名
		{
			printf("%s %s\n", p->data[i].name, p->data[i].phone);
			return 0;
		}		
	}
	printf("没有这个联系人");
}
void Changeinf(struct contact* p)//改联系人信息
{
	char change_peo[peo_name_num] = { 0 };
	printf("请输入被更改的对象:");
	scanf("%s",&change_peo);
	for (int i = 0; i < p->size; i++)
	{
		if (strcmp(change_peo, p->data[i].name) == 0)//找到被改联系人信息
		{
			printf("%s %s\n", p->data[i].name, p->data[i].phone);
			memset(&p->data[i],0,sizeof(&p->data[0]));//删掉原有信息
			printf("请重新输入:\n");
			scanf("%s",&p->data[i].name);//填写更改后的信息
			scanf("%s",&p->data[i].phone);
		}
	}
}
void print(struct contact* p)//打印通信录
{
	printf("\n通讯录:\n");
	for (int i = 0; i < p->size; i++)
	{
			printf("%d:", i + 1);
			printf("%s ", p->data[i].name);
			printf("%s\n", p->data[i].phone);
	}
}

你可能感兴趣的:(学习,c语言,学习)