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语言小项目--通讯录-创新互联
文章路径:https://www.cdcxhl.com/article38/deogsp.html

成都网站建设公司_创新互联,为您提供企业网站制作网站排名服务器托管网页设计公司定制开发微信小程序

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

营销型网站建设