c语言小项目--通讯录-创新互联

创新互联专业为企业提供曲阜网站建设、曲阜做网站、曲阜网站设计、曲阜网站制作等企业网站建设、网页设计与制作、曲阜企业网站模板建站服务,10年曲阜做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。

今天我们试着用c语言实现简单通讯录的制作,功能大致如下:

//1.存放好友信息
//2.增加好友信息
//3.删除好友信息
//4.查找好友信息
//5.修改好友信息

了解相应功能后我们试着构建一个菜单:

void menu()//菜单
{
 printf("*************************************\n");
 printf("******1.add            2.del  *******\n");
 printf("******3.search         4.modify  ****\n");
 printf("******5.show           0.exit      **\n");
 printf("*************************************\n");
}

接下来就是创建通讯录了,先定义用户相关信息,并枚举相关变量

enum MY { MAX = 100,MAX_NAME=20,MAX_SEX=5,MAX_TELE=12,MAX_ADDR=30 };

struct people 
{
 char name[MAX_NAME];
 int age;
 char sex[MAX_SEX];
 char tele[MAX_TELE];
 char addr[MAX_ADDR];
}; 

接着定义通讯录的类型

struct Contact
{
 struct people data[MAX]; //存放用户信息
 int size;                            //记录当前已经有的用户数量
};

然后初始化通讯录,默认所有信息为0

void InitContact(struct Contact* ps)
{
 memset(ps->data, 0, sizeof(ps->data));
 ps->size = 0;
}

通讯录初始化后,就要开始完善它的功能的

//增加好友信息
void addContact(struct Contact* ps)
{
 if (ps->size == MAX)
 {
     printf("通讯录已满\n");
 }
 else
 {
     printf("请输入名字:");
     scanf("%s", ps->data[ps->size].name);
     printf("请输入年龄:");
     scanf("%d", &(ps->data[ps->size].age));
     printf("请输入性别:");
     scanf("%s", ps->data[ps->size].sex);
     printf("请输入电话:");
     scanf("%s", ps->data[ps->size].tele);
     printf("请输入地址:");
     scanf("%s", ps->data[ps->size].addr);
     ps->size++;
     printf("添加成功\n");
 }
}
//显示好友信息
void ShowContact(struct Contact* ps)
{
 if (ps->size == 0)
 {
     printf("通讯录为空\n");
 }
 else
 {
     printf("%20s\t %4s\t %5s\t %12s\t %20s\n","名字","年龄","性别","电话","地址");
     for (int i = 0; i< ps->size; i++)
     {
         printf("%20s\t %4d\t %5s\t %12s\t %20s\n",
             ps->data[i].name,
             ps->data[i].age,
             ps->data[i].sex,
             ps->data[i].tele,
             ps->data[i].addr );
     }
 }
}
//删除好友信息
void DelContact(struct Contact* ps)
{
 char name[MAX_NAME];
 printf("请输入要删除人的名字:");
 scanf("%s", name);
 int i = 0;
 //1.查找要删除的人在什么位置
 for (int i = 0; i< ps->size; i++)
 {
     if (strcmp(ps->data[i].name, name) == 0)
     {
         break;
     }
 }
 //2.删除
 if (i == ps->size)
 {
     printf("要删除的人不存在\n");
 }
 else
 {
     int j = 0;
     for (j = i; j< ps->size-1; j++)
     {
         ps->data[j] = ps->data[j + 1];
     }
     ps->size--;
     printf("删除成功\n");
 }
 
}
//查找指定的人
void SearchContact(struct Contact* ps)
{
 char name[MAX_NAME];
 printf("请输入查找人的名字");
 scanf("%s", name);
 int i = 0;
 //1.查找的人在什么位置
 for (int i = 0; i< ps->size; i++)
 {
     if (strcmp(ps->data[i].name, name) == 0)
     {
         break;
     }
 }
 if (i == ps->size)
 {
     printf("查找的人不存在\n");
 }
 else
 {
     printf("%20s\t %4s\t %5s\t %12s\t %20s\n", "名字", "年龄", "性别", "电话", "地址");
     printf("%20s\t %4d\t %5s\t %12s\t %20s\n",
         ps->data[i].name,
         ps->data[i].age,
         ps->data[i].sex,
         ps->data[i].tele,
         ps->data[i].addr);
     
 }
};
//修改好友信息
void ModifyContact(struct Contact* ps)
{
 char name[MAX_NAME];
 printf("请输入修改人的名字");
 scanf("%s", name);
 int i = 0;
 //1.修改的人在什么位置
 for (int i = 0; i< ps->size; i++)
 {
     if (strcmp(ps->data[i].name, name) == 0)
     {
         break;
     }
 }
 if (i == ps->size)
 {
     printf("修改的人不存在\n");
 }
 else
 {
     printf("请输入名字:");
     scanf("%s", ps->data[i].name);
     printf("请输入年龄:");
     scanf("%d", &(ps->data[i].age));
     printf("请输入性别:");
     scanf("%s", ps->data[i].sex);
     printf("请输入电话:");
     scanf("%s", ps->data[i].tele);
     printf("请输入地址:");
     scanf("%s", ps->data[i].addr);
     printf("修改成功\n");
 }
}

最后就是将其全部存入主函数中

int main()
{
 int input = 0;
 struct Contact con;//con就是通讯录
 InitContact(&con);
 do
 {
     menu();
     printf("请选择:");
     scanf("%d", &input);
     switch (input)
     {
     case 1:
         addContact(&con);
         break;
     case 2:
         DelContact(&con);
         break;
     case 3:
         SearchContact(&con);
         break;
     case 4:
         ModifyContact(&con);
         break;
     case 5:
         ShowContact(&con);
         break;
     case 0:
         printf("退出通讯录\n");
         break;
     default:
         printf("选择错误\n");
         break;
     }
 } while (input);
 return 0;

总体代码就是这样,如果大家发现bug或者有更好的方法 ,欢迎大家一起来讨论呀,一起加油

#define _CRT_SECURE_NO_WARNINGS 1
#include#include#include//1.存放好友信息
//2.增加好友信息
//3.删除好友信息
//4.查找好友信息
//5.修改好友信息
enum MY { MAX = 100,MAX_NAME=20,MAX_SEX=5,MAX_TELE=12,MAX_ADDR=30 };
void menu()//菜单
{
	printf("*************************************\n");
	printf("******1.add            2.del  *******\n");
	printf("******3.search         4.modify  ****\n");
	printf("******5.show           0.exit      **\n");
	printf("*************************************\n");
}
//创建通讯录
struct people 
{
	char name[MAX_NAME];
	int age;
	char sex[MAX_SEX];
	char tele[MAX_TELE];
	char addr[MAX_ADDR];
};
//通讯录类型
struct Contact
{
	struct people data[MAX];//存放用户信息
	int size;//记录当前已经有的用户数量
};
//初始化通讯录
void InitContact(struct Contact* ps)
{
	memset(ps->data, 0, sizeof(ps->data));
	ps->size = 0;
}
//增加好友信息
void addContact(struct Contact* ps)
{
	if (ps->size == MAX)
	{
		printf("通讯录已满\n");
	}
	else
	{
		printf("请输入名字:");
		scanf("%s", ps->data[ps->size].name);
		printf("请输入年龄:");
		scanf("%d", &(ps->data[ps->size].age));
		printf("请输入性别:");
		scanf("%s", ps->data[ps->size].sex);
		printf("请输入电话:");
		scanf("%s", ps->data[ps->size].tele);
		printf("请输入地址:");
		scanf("%s", ps->data[ps->size].addr);
		ps->size++;
		printf("添加成功\n");
	}
}
//显示好友信息
void ShowContact(struct Contact* ps)
{
	if (ps->size == 0)
	{
		printf("通讯录为空\n");
	}
	else
	{
		printf("%20s\t %4s\t %5s\t %12s\t %20s\n","名字","年龄","性别","电话","地址");
		for (int i = 0; i< ps->size; i++)
		{
			printf("%20s\t %4d\t %5s\t %12s\t %20s\n",
				ps->data[i].name,
				ps->data[i].age,
				ps->data[i].sex,
				ps->data[i].tele,
				ps->data[i].addr );
		}
	}
}
//删除好友信息
void DelContact(struct Contact* ps)
{
	char name[MAX_NAME];
	printf("请输入要删除人的名字:");
	scanf("%s", name);
	int i = 0;
	//1.查找要删除的人在什么位置
	for (int i = 0; i< ps->size; i++)
	{
		if (strcmp(ps->data[i].name, name) == 0)
		{
			break;
		}
	}
	//2.删除
	if (i == ps->size)
	{
		printf("要删除的人不存在\n");
	}
	else
	{
		int j = 0;
		for (j = i; j< ps->size-1; j++)
		{
			ps->data[j] = ps->data[j + 1];
		}
		ps->size--;
		printf("删除成功\n");
	}
	
}
//查找指定的人
void SearchContact(struct Contact* ps)
{
	char name[MAX_NAME];
	printf("请输入查找人的名字");
	scanf("%s", name);
	int i = 0;
	//1.查找的人在什么位置
	for (int i = 0; i< ps->size; i++)
	{
		if (strcmp(ps->data[i].name, name) == 0)
		{
			break;
		}
	}
	if (i == ps->size)
	{
		printf("查找的人不存在\n");
	}
	else
	{
		printf("%20s\t %4s\t %5s\t %12s\t %20s\n", "名字", "年龄", "性别", "电话", "地址");
		printf("%20s\t %4d\t %5s\t %12s\t %20s\n",
			ps->data[i].name,
			ps->data[i].age,
			ps->data[i].sex,
			ps->data[i].tele,
			ps->data[i].addr);
		
	}
};
//修改好友信息
void ModifyContact(struct Contact* ps)
{
	char name[MAX_NAME];
	printf("请输入修改人的名字");
	scanf("%s", name);
	int i = 0;
	//1.修改的人在什么位置
	for (int i = 0; i< ps->size; i++)
	{
		if (strcmp(ps->data[i].name, name) == 0)
		{
			break;
		}
	}
	if (i == ps->size)
	{
		printf("修改的人不存在\n");
	}
	else
	{
		printf("请输入名字:");
		scanf("%s", ps->data[i].name);
		printf("请输入年龄:");
		scanf("%d", &(ps->data[i].age));
		printf("请输入性别:");
		scanf("%s", ps->data[i].sex);
		printf("请输入电话:");
		scanf("%s", ps->data[i].tele);
		printf("请输入地址:");
		scanf("%s", ps->data[i].addr);
		printf("修改成功\n");
	}
}
int main()
{
	int input = 0;
	struct Contact con;//con就是通讯录
	InitContact(&con);
	do
	{
		menu();
		printf("请选择:");
		scanf("%d", &input);
		switch (input)
		{
		case 1:
			addContact(&con);
			break;
		case 2:
			DelContact(&con);
			break;
		case 3:
			SearchContact(&con);
			break;
		case 4:
			ModifyContact(&con);
			break;
		case 5:
			ShowContact(&con);
			break;
		case 0:
			printf("退出通讯录\n");
			break;
		default:
			printf("选择错误\n");
			break;
		}
   
	} while (input);
	return 0;
}

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


文章名称:c语言小项目--通讯录-创新互联
网页地址:http://pwwzsj.com/article/deogsp.html