C语言实现简易通讯录-创新互联

目录

成都创新互联公司长期为数千家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为渝北企业提供专业的网站建设、网站制作,渝北网站改版等技术服务。拥有十年丰富建站经验和众多成功案例,为您定制开发。

1.基本框架的实现

1.1 基本内容test.c

2. 函数的声明contact.h

3.函数的实现

3.1 初始化/清空联系人

3.2增加通讯录的联系人

3.3展示通讯录中所以联系人的信息

3.4通过名字找到指定的联系人

3.5通过名字搜索联系人

3.6删除联系人

3.7修改联系人

3.8通过选择的方式排序联系人

实现一个通讯录:

通讯录可以用来存储1000个人的信息,每个人的信息包括:姓名、性别、年龄、电话、住址

提供方法:

1.添加联系人信息
2.删除指定联系人信息
3.查找指定联系人信息
4.修改指定联系人信息
5.显示所有联系人信息
6.清空所有联系人
7.以名字排序所有联系人

1.基本框架的实现

我们首先在vs里创建一个test.c  和 contact .c  和 contact.h

  1. 我们在test.c来实现这个通讯录的主体内容
  2. 在contact.c的内容中来完善函数的实现
  3. contact.h的内容是定义一些变量和函数
1.1 基本内容test.c

首先我们需要打印一个菜单


void print_menu()
{
	printf("*************************************************\n");
	printf("******** 1.add           2.search          ******\n");
	printf("******** 3.del           4.modify          ******\n");
	printf("******** 5.show          6.empty           ******\n");
	printf("******** 7.sort          0.exit            ******\n");
	printf("*************************************************\n");
	


}

以上的内容就是我们需要实现的基本功能,接着我们就完善test.c中基本框架的实现

//test.c
#include"contact.h"
//实现一个通讯录;
//
//通讯录可以用来存储1000个人的信息,每个人的信息包括:姓名、性别、年龄、电话、住址
//
//提供方法:
//
//添加联系人信息
//删除指定联系人信息
//查找指定联系人信息
//修改指定联系人信息
//显示所有联系人信息
//清空所有联系人
//以名字排序所有联系人

void print_menu()
{
	printf("*************************************************\n");
	printf("******** 1.add           2.search          ******\n");
	printf("******** 3.del           4.modify          ******\n");
	printf("******** 5.show          6.empty           ******\n");
	printf("******** 7.sort          0.exit            ******\n");
	printf("*************************************************\n");
	


}
void test()
{
	int input = 0;
	Contact con;
	//初始化通讯录
	init_contact(&con);
	do
	{
		//打印菜单
		print_menu();
		scanf("%d", &input);
		switch (input)
		{
		    case 1:
				//增加函数
				add_contact(&con);
				break;
			case 2:
				//寻找
				search_contact(&con);
				break;
			case 3:
				//删除联系人
				del_contact(&con);
				break;
			case 4:
				//修改联系人
				modify_contact(&con);
				break;
			case 5:
				//展示通讯录
				show_contact(&con);
			
				break;
			case 6:
				init_contact(&con);
				printf("清除成功\n");
				break;
			case 7:
				sort_contact(&con);
				break;
			case 0:
				printf("退出成功\n");
				break;
			default :
				printf("输入有误\n");
				break;
			

		}
		

	} while (input);
}


int main()
{
	test();
	return 0;
}
2. 函数的声明contact.h

然后需要我们在contact.h中声明这些函数,并创建好通讯录需要的内容,就可以用结构体来实现。

//contact.h
#pragma once
#include#include#include
#include//通讯录可以用来存储1000个人的信息,每个人的信息包括:姓名、性别、年龄、电话、住址
#define NAME_MAX 20
#define SEX_MAX 8
#define TELE_MAX 15
#define ADDR_MAX 20
#define MAX 100



typedef struct Peoinfo
{
	char name[NAME_MAX];
	char sex[SEX_MAX];
	int age;
	char tele[TELE_MAX];
	char addr[ADDR_MAX];
}Peoinfo;

typedef struct Contact
{
	Peoinfo data[MAX];
	int sz;
}Contact;



//初始化/清空
void init_contact(Contact* pc);


//通讯录中增加
void  add_contact(Contact* pc);

//show通讯录
void show_contact( const Contact* pc);

//通讯录寻找人
int find_by_name(const Contact* pc);

//通讯录里search

void search_contact(const Contact* pc);

//删除联系人
void del_contact(Contact* pc);

//修改联系人

void modify_contact(Contact* pc);

//排序
void sort_contact(Contact* pc);
3.函数的实现 3.1 初始化/清空联系人
//初始化/清空
void init_contact(Contact* pc)
{
	assert(pc);
	pc->sz = 0;
	memset(pc->data, 0, sizeof(pc->data));
}
3.2增加通讯录的联系人
//add
void  add_contact(Contact* pc)
{
	assert(pc);
	if (pc->sz >MAX)
		printf("通讯录已满,无法添加\n");
	printf("请输入姓名:>\n");
	scanf("%s", pc->data[pc->sz].name);
	printf("请输入性别;>\n");
	scanf("%s", pc->data[pc->sz].sex);
	printf("请输入年龄;>\n");
	scanf("%d", &(pc->data[pc->sz].age));
	printf("请输入电话:>\n");
	scanf("%s", pc->data[pc->sz].tele);
	printf("请输入住址:>\n");
	scanf("%s", pc->data[pc->sz].addr);
	pc->sz++;

}
3.3展示通讯录中所以联系人的信息
//show
void show_contact(const Contact* pc)
{
	assert(pc);
	int i = 0;
	printf("%-10s\t%-5s\t%-4s\t%-15s\t%-10s\n", "姓名", "性别", "年龄", "电话", "住址");
	for (i = 0; i< pc->sz; i++)
	{
		printf("%-10s\t%-5s\t%-4d\t%-15s\t%-10s\n", pc->data[i].name, pc->data[i].sex, pc->data[i].age, pc->data[i].tele, pc->data[i].addr);
	}
}
3.4通过名字找到指定的联系人
//通讯录找人
int find_by_name(const Contact* pc)
{
	assert(pc);
	char findPeo[20];
	printf("请输入需要搜索/删除/修改数据的名字:>");
	scanf("%s", findPeo);
	int i = 0;
	for (i = 0; i< pc->sz; i++)
	{
		if (strcmp(pc->data[i].name, findPeo)==0)
		{
			
			return i;
		}
		
			
	}
	return -1;
}
3.5通过名字搜索联系人
//通讯录中搜索

void search_contact(const Contact* pc)
{
	assert(pc);
	int ret = find_by_name(pc);
	if (ret == -1)
	{
		printf("不存在此人\n");
	}
	else
	{
		printf("%-10s\t%-5s\t%-4s\t%-15s\t%-10s\n", "姓名", "性别", "年龄", "电话", "住址");
		printf("%-10s\t%-5s\t%-4d\t%-15s\t%-10s\n", 
 pc->data[ret].name,
 pc->data[ret].sex, 
 pc->data[ret].age, 
 pc->data[ret].tele, 
 pc->data[ret].addr);
	}

}
3.6删除联系人
//del

void del_contact(Contact*pc)
{
	assert(pc);
	int ret=find_by_name(pc);
	if (ret == -1)
		printf("不存在此人\n");
	else
	{
		int i = 0;
		for (i = ret; isz; i++)
		{
			pc->data[i] = pc->data[i + 1];
		}
		printf("删除成功\n");
		pc->sz -= 1;
	}
}
3.7修改联系人
//modify修改

void modify_contact(Contact* pc)
{
	assert(pc);
	int ret = find_by_name(pc);
	if (ret == -1)
		printf("不存在此人\n");
	else
	{
		
		printf("请输入姓名:>\n");
		scanf("%s", pc->data[ret].name);
		printf("请输入性别;>\n");
		scanf("%s", pc->data[ret].sex);
		printf("请输入年龄;>\n");
		scanf("%d", &(pc->data[ret].age));
		printf("请输入电话:>\n");
		scanf("%s", pc->data[ret].tele);
		printf("请输入住址:>\n");
		scanf("%s", pc->data[ret].addr);
		printf("修改成功\n");
	}
}
3.8通过选择的方式排序联系人
//sort

void sort_contact( Contact* pc)
{
	assert(pc);
	if (pc->sz == 0)
	{
		printf("通讯录为空,无法排序\n");
	}
	int k = 0;
	printf("1.按名字排序 2.按年龄排序 0.退出\n");
	printf("请选择:>");
	scanf("%d", &k);
	
	if (k == 0)
		printf("退出成功\n");
	else if (k == 1)
	{
		Peoinfo tmp;
		int i = 0;
		
		for (i = 0; i< pc->sz - 1; i++)
		{
			int j = 0;
			for (j = 0; j< pc->sz -i- 1; j++)
			{
				if (strcmp(pc->data[j].name, pc->data[j + 1].name)>0)
				{
					 tmp = pc->data[j];
					 pc->data[j] = pc->data[j + 1];
					pc->data[j + 1] = tmp;
				
					

				}
			}
		}
		
		
	}

	else if (k == 2)
	{
		int i = 0;
		Peoinfo tmp;
		for (i = 0; i< pc->sz - 1; i++)
		{
			for (int j = 0; j< pc->sz - i-1; j++)
			{
				if ((pc->data[j].age - pc->data[j + 1].age) >0)
				{
					tmp = pc->data[j];
					pc->data[j] = pc->data[j + 1];
					pc->data[j + 1] = tmp;

				}
			}
		}
	}

}

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


当前题目:C语言实现简易通讯录-创新互联
本文URL:http://hbruida.cn/article/cecgjo.html