没有她的通讯录(C语言实现)

在这里插入图片描述

ERC1155 批量转移

🚀write in front🚀
📝个人主页:认真写博客的夏目浅石.
🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝
📣系列专栏:夏目的C语言宝藏
💬总结:希望你看完之后,能对你有所帮助,不足请指正!共同学习交流 🖊
✉️如果无聊的话,就来逛逛我的博客栈吧stack-frame.cn

sql优化

VGG

文章目录

uart


前言

本篇博客夏目浅石带着大家学习大一期末大作业—通讯录的实现,说真的,完成通讯录之前,夏目已经完成了三子棋游戏,扫雷,猜数字游戏这样类似的大作业类型的任务,所以这里会更加熟练的写出来我完成通讯录的逻辑以及C语言代码实现过程。

miktex


一、通讯录前期准备

1.1菜单函数的实现

1.先实现菜单函数,能够实现与用户的交互

Floyd算法

代码如下:

实用功能教程

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

1.2菜单的功能

1.用switch选择语句do——while循环语句来实现各自的功能

远程debug

代码如下:

目标检测

int main()
{
	int input;
	
	//创建通讯录 
	Contact 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 6:
				SortContact(&con);
			case 0:
				printf("退出通讯录\n");
				break;
			default:
				printf("选择错误\n");
				break;
		}
	} while (input);
	return 0;
}

1.3关于联系人结构体的创建

结构体的创建
第一个结构体peoInfo是是用来存放人的信息,第二个结构体Contact通讯录的信息data是以第一个结构体为类型的数组sz用来记录当前通讯录中实际的人数。

ios证书

代码如下:

深度学习

//人的信息
typedef struct peoInfo
{
	char name[NAME_MAX];
	int age;
	char sex[SEX_MAX];
	char addr[ADDR_MAX];
	char tele[TELE_MAX];
}peoInfo;

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

1.4全局变量的定义

利用宏定义处理

keychron

代码如下:

小程序用户拒绝授权后重新授权

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>

#define MAX 100
#define NAME_MAX 20
#define SEX_MAX 5
#define ADDR_MAX 30
#define TELE_MAX 12

二、通讯录的功能实现

2.1初始化通讯录

代码如下:

实时定位

//初始化 
void InitContact(Contact* pc)
{
	pc->sz=0;
	memset(pc->data,0,sizeof(pc->data));
}

2.2添加联系人

代码如下:

centos安装jenkins

//增加联系人
void AddContact(Contact* pc)
{
	if(pc->sz==MAX)
	{
		printf("已满\n");
		return;
	}
	
	printf("请输入名字:>");
	scanf("%s",pc->data[pc->sz].name);
	printf("请输入年龄:>");
	scanf("%d",&(pc->data[pc->sz].age));
	printf("请输入性别:>");
	scanf("%s",pc->data[pc->sz].sex);
	printf("请输入地址:>");
	scanf("%s",pc->data[pc->sz].addr);
	printf("请输入电话:>");
	scanf("%s",pc->data[pc->sz].tele);
	sz++;
}

2.3联系人

代码如下:

以太坊

//显示联系人 
void ShowContact(const Contact* pc)
{
	int i=0;
	printf("%-20s\t%4s\t%-5s\t%-20s\t%-12s\n","名字","年龄","性别","地址","电话");
	for(i=0;i<pc->sz;i++)
	{
		printf("%-20s\t%4d\t%-5s\t%-20s\t%-12s\n",pc->data[i].name,pc->data[i].age,pc->data[i].sex,pc->data[i].addr,pc->data[i].tele);
	}
}

2.4删除联系人

先查找,再删除

DOM

代码如下:

SQL索引


int FindByName(Contact* pc,char names[])
{
	for(int i=0;i<pc->sz;++i)
	{
		if(strcmp(pc->data[i].name,names)==0)
		{
			return i;
		}	
	}
	return -1;
}

//删除联系人 
void DelContact(Contact* pc)
{
	char names[NAME_MAX]={0};
	
	if(pc->sz==0) 
	{
		printf("通讯录为空,无法删除\n");
		return;
	}
	//删除
	//找到要删除的人
	printf("请输入要删除的人的名字:>");
	scanf("%s",names);
	
	int ret = FindByName(pc,names);
	
	if(-1==ret)
	{
		printf("要删除的人不存在\n");
		return; 
	}
	
	//删除
	int j=0;
	for(j=ret;j<pc->sz-1;++j)
	{
		pc->data[j]=pc->data[j+1];
	}
	pc->sz--;
	printf("删除成功\n");
}

2.5查找联系人

代码如下:

最小生成树


//查找指定联系人 
SearchContact(const Contact* pc)
{
	char names[NAME_MAX];
	printf("请输入要查找人的名字:>");
	scanf("%s",names);
	int ret = FindByName(pc,names);
	
	if(-1==ret)
	{
		printf("要查找的人不存在\n");
		return; 
	}
	//打印信息
	printf("%-20s\t%4s\t%-5s\t%-20s\t%-12s\n","名字","年龄","性别","地址","电话");
	for(i=0;i<pc->sz;i++)
	{
		printf("%-20s\t%4d\t%-5s\t%-20s\t%-12s\n",pc->data[ret].name,pc->data[ret].age,pc->data[ret].sex,pc->data[ret].addr,pc->data[ret].tele);
	}
}

2.6修改联系人

代码如下:

ViT


//修改指定联系人 
void ModifyContact(Contact* pc)
{
	//要修改就要先查找到
	char names[NAME_MAX];
	printf("请输入要查找人的名字:>");
	scanf("%s",names);
	int ret = FindByName(pc,names);
	
	if(-1==ret)
	{
		printf("要查找的人不存在\n");
		return; 
	}
	//修改,从新录入一遍
	printf("请输入名字:>");
	scanf("%s",pc->data[ret].name);
	printf("请输入年龄:>");
	scanf("%d",&(pc->data[ret].age));
	printf("请输入性别:>");
	scanf("%s",pc->data[ret].sex);
	printf("请输入地址:>");
	scanf("%s",pc->data[ret].addr);
	printf("请输入电话:>");
	scanf("%s",pc->data[ret].tele);
	
	printf("修改完成\n");
	
}

2.7对通讯录中联系人的信息进行排序

代码如下:

苹果证书

void SortContact(Contact* pc)
{
	if (pc->count == 0)
	{
		printf("通讯录中没有联系人");
	}
	else
	{													
		for (int i = 0; i < pc->count - 1; i++)
		{
			for (int j = 0; j < pc->count-i-1; j++)
			{
				if ((strcmp(pc->data[j].name, pc->data[j + 1].name)) > 0)
				{
					PeoInfo tmp = pc->data[j];
					pc->data[j] = pc->data[j+1];
					pc->data[j + 1] = tmp;
				}

			}
		}
		printf("排序成功\n");
	}
}

三、实现通讯录的所有文件展现

3.1通讯录函数绘总

#define MAX 100
#define NAME_MAX 20
#define SEX_MAX 5
#define ADDR_MAX 30
#define TELE_MAX 12
//人的信息
typedef struct peoInfo
{
	char name[20];
	int age;
	char sex[5];
	char addr[30];
	char tele[12];
}peoInfo;

typedef struct Contact
{
	peoInfo data[100];
	int sz;
}Contact;

//初始化 
void InitContact(Contact* pc);

//增加联系人 
void AddContact(Contact* pc);

//显示联系人 
void ShowContact(const Contact* pc);

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

//查找指定联系人 
void Se0archContact(Contact* pc);

//修改指定联系人 
void ModifyContact(Contact* pc);

//排序联系人 
void SortContact(Contact* pc);

3.2通讯录函数的实现

//函数实现
#define MAX 100
#define MAX 100
#define NAME_MAX 20
#define SEX_MAX 5
#define ADDR_MAX 30
#define TELE_MAX 12
//初始化 
void InitContact(Contact* pc)
{
	pc->sz=0;
	memset(pc->data,0,sizeof(pc->data));
}

//增加联系人
void AddContact(Contact* pc)
{
	if(pc->sz==MAX)
	{
		printf("已满\n");
		return;
	}
	
	printf("请输入名字:>");
	scanf("%s",pc->data[pc->sz].name);
	printf("请输入年龄:>");
	scanf("%d",&(pc->data[pc->sz].age));
	printf("请输入性别:>");
	scanf("%s",pc->data[pc->sz].sex);
	printf("请输入地址:>");
	scanf("%s",pc->data[pc->sz].addr);
	printf("请输入电话:>");
	scanf("%s",pc->data[pc->sz].tele);
	sz++;
}

//显示联系人 
void ShowContact(const Contact* pc)
{
	int i=0;
	printf("%-20s\t%4s\t%-5s\t%-20s\t%-12s\n","名字","年龄","性别","地址","电话");
	for(i=0;i<pc->sz;i++)
	{
		printf("%-20s\t%4d\t%-5s\t%-20s\t%-12s\n",pc->data[i].name,pc->data[i].age,pc->data[i].sex,pc->data[i].addr,pc->data[i].tele);
	}
}

int FindByName(Contact* pc,char names[])
{
	for(int i=0;i<pc->sz;++i)
	{
		if(strcmp(pc->data[i].name,names)==0)
		{
			return i;
		}	
	}
	return -1;
}

//删除联系人 
void DelContact(Contact* pc)
{
	char names[NAME_MAX]={0};
	
	if(pc->sz==0) 
	{
		printf("通讯录为空,无法删除\n");
		return;
	}
	//删除
	//找到要删除的人
	printf("请输入要删除的人的名字:>");
	scanf("%s",names);
	
	int ret = FindByName(pc,names);
	
	if(-1==ret)
	{
		printf("要删除的人不存在\n");
		return; 
	}
	
	//删除
	int j=0;
	for(j=ret;j<pc->sz-1;++j)
	{
		pc->data[j]=pc->data[j+1];
	}
	pc->sz--;
	printf("删除成功\n");
}


//查找指定联系人 
SearchContact(const Contact* pc)
{
	char names[NAME_MAX];
	printf("请输入要查找人的名字:>");
	scanf("%s",names);
	int ret = FindByName(pc,names);
	
	if(-1==ret)
	{
		printf("要查找的人不存在\n");
		return; 
	}
	//打印信息
	printf("%-20s\t%4s\t%-5s\t%-20s\t%-12s\n","名字","年龄","性别","地址","电话");
	for(i=0;i<pc->sz;i++)
	{
		printf("%-20s\t%4d\t%-5s\t%-20s\t%-12s\n",pc->data[ret].name,pc->data[ret].age,pc->data[ret].sex,pc->data[ret].addr,pc->data[ret].tele);
	}
}


//修改指定联系人 
void ModifyContact(Contact* pc)
{
	//要修改就要先查找到
	char names[NAME_MAX];
	printf("请输入要查找人的名字:>");
	scanf("%s",names);
	int ret = FindByName(pc,names);
	
	if(-1==ret)
	{
		printf("要查找的人不存在\n");
		return; 
	}
	//修改,从新录入一遍
	printf("请输入名字:>");
	scanf("%s",pc->data[ret].name);
	printf("请输入年龄:>");
	scanf("%d",&(pc->data[ret].age));
	printf("请输入性别:>");
	scanf("%s",pc->data[ret].sex);
	printf("请输入地址:>");
	scanf("%s",pc->data[ret].addr);
	printf("请输入电话:>");
	scanf("%s",pc->data[ret].tele);
	
	printf("修改完成\n");
	
}

void SortContact(Contact* pc)
{
	if (pc->count == 0)
	{
		printf("通讯录中没有联系人");
	}
	else
	{													
		for (int i = 0; i < pc->count - 1; i++)
		{
			for (int j = 0; j < pc->count-i-1; j++)
			{
				if ((strcmp(pc->data[j].name, pc->data[j + 1].name)) > 0)
				{
					PeoInfo tmp = pc->data[j];
					pc->data[j] = pc->data[j+1];
					pc->data[j + 1] = tmp;
				}

			}
		}
		printf("排序成功\n");
	}
}

3.3通讯录测试代码

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>

#define MAX 100
#define NAME_MAX 20
#define SEX_MAX 5
#define ADDR_MAX 30
#define TELE_MAX 12

//人的信息
typedef struct peoInfo
{
	char name[NAME_MAX];
	int age;
	char sex[SEX_MAX];
	char addr[ADDR_MAX];
	char tele[TELE_MAX];
}peoInfo;

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

//初始化通讯录 
void InitContact(Contact* pc)
{
	pc->sz=0;
	memset(pc->data,0,sizeof(pc->data));
}

//增加联系人
void AddContact(Contact* pc)
{
	if(pc->sz==MAX)
	{
		printf("已满\n");
		return;
	}
	
	printf("请输入名字:>");
	scanf("%s",pc->data[pc->sz].name);
	printf("请输入年龄:>");
	scanf("%d",&(pc->data[pc->sz].age));
	printf("请输入性别:>");
	scanf("%s",pc->data[pc->sz].sex);
	printf("请输入地址:>");
	scanf("%s",pc->data[pc->sz].addr);
	printf("请输入电话:>");
	scanf("%s",pc->data[pc->sz].tele);
	pc->sz++;
}

//显示联系人 
void ShowContact(const Contact* pc)
{
	int i=0;
	printf("%-20s\t%4s\t%-5s\t%-20s\t%-12s\n","名字","年龄","性别","地址","电话");
	for(i=0;i<pc->sz;i++)
	{
		printf("%-20s\t%4d\t%-5s\t%-20s\t%-12s\n",pc->data[i].name,pc->data[i].age,pc->data[i].sex,pc->data[i].addr,pc->data[i].tele);
	}
}

删除联系人 
//void DelContact(Contact* pc)
//{
//	char names[NAME_MAX]={0};
//	
//	if(pc->sz==0) 
//	{
//		printf("通讯录为空,无法删除\n");
//		return;
//	}
//	//删除
//	//找到要删除的人
//	printf("请输入要删除的人的名字:>");
//	scanf("%s",names);
//	int del=0;
//	for(int i=0;i<pc->sz;++i)
//	{
//		if(strcmp(pc->data[i].name,names)==0)
//		{
//			del=i;
//			break;
//		}	
//	}
//	//删除
//	int j=0;
//	for(j=del;j<pc->sz-1;++j)
//	{
//		pc->data[j]=pc->data[j+1];
//	}
//	pc->sz--;
//	printf("删除成功\n");
//}

int FindByName(Contact* pc,char names[])
{
	for(int i=0;i<pc->sz;++i)
	{
		if(strcmp(pc->data[i].name,names)==0)
		{
			return i;
		}	
	}
	return -1;
}

//删除联系人 
void DelContact(Contact* pc)
{
	char names[NAME_MAX]={0};
	
	if(pc->sz==0) 
	{
		printf("通讯录为空,无法删除\n");
		return;
	}
	//删除
	//找到要删除的人
	printf("请输入要删除的人的名字:>");
	scanf("%s",names);
	
	int ret = FindByName(pc,names);
	
	if(-1==ret)
	{
		printf("要删除的人不存在\n");
		return; 
	}
	
	//删除
	int j=0;
	for(j=ret;j<pc->sz-1;++j)
	{
		pc->data[j]=pc->data[j+1];
	}
	pc->sz--;
	printf("删除成功\n");
}

//查找指定联系人 
void SearchContact(Contact* pc)
{
	char names[NAME_MAX];
	printf("请输入要查找人的名字:>");
	scanf("%s",names);
	int ret = FindByName(pc,names);
	
	if(-1==ret)
	{
		printf("要查找的人不存在\n");
		return; 
	}
	//打印信息
	printf("%-20s\t%4s\t%-5s\t%-20s\t%-12s\n","名字","年龄","性别","地址","电话");
	for(int i=0;i<pc->sz;i++)
	{
		printf("%-20s\t%4d\t%-5s\t%-20s\t%-12s\n",pc->data[ret].name,pc->data[ret].age,pc->data[ret].sex,pc->data[ret].addr,pc->data[ret].tele);
	}
}

//修改指定联系人 
void ModifyContact(Contact* pc)
{
	//要修改就要先查找到
	char names[NAME_MAX];
	printf("请输入要查找人的名字:>");
	scanf("%s",names);
	int ret = FindByName(pc,names);
	
	if(-1==ret)
	{
		printf("要查找的人不存在\n");
		return; 
	}
	//修改,从新录入一遍
	printf("请输入名字:>");
	scanf("%s",pc->data[ret].name);
	printf("请输入年龄:>");
	scanf("%d",&(pc->data[ret].age));
	printf("请输入性别:>");
	scanf("%s",pc->data[ret].sex);
	printf("请输入地址:>");
	scanf("%s",pc->data[ret].addr);
	printf("请输入电话:>");
	scanf("%s",pc->data[ret].tele);
	
	printf("修改完成\n");	
}


void SortContact(Contact* pc)
{
	if (pc->sz == 0)
	{
		printf("通讯录中没有联系人");
	}
	else
	{													
		for (int i = 0; i < pc->sz - 1; i++)
		{
			for (int j = 0; j < pc->sz-i-1; j++)
			{
				if ((strcmp(pc->data[j].name, pc->data[j + 1].name)) > 0)
				{
					peoInfo tmp = pc->data[j];
					pc->data[j] = pc->data[j+1];
					pc->data[j + 1] = tmp;
				}

			}
		}
		printf("排序成功\n");
	}
}

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

int main()
{
	int input;
	
	//创建通讯录 
	Contact 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 6:
				SortContact(&con);
			case 0:
				printf("退出通讯录\n");
				break;
			default:
				printf("选择错误\n");
				break;
		}
	} while (input);
	return 0;
}

总结

我是夏目浅石,希望和你一起学习进步,刷题无数!!!希望各位大佬能一键三连支持一下博主,hhhh~我们下期见喽

深度优先

在这里插入图片描述
如果无聊的话,就来逛逛我的博客栈吧stack-frame.cn

Python入门

原创不易,还希望各位大佬支持一下

\textcolor{blue}{原创不易,还希望各位大佬支持一下}

原创不易,还希望各位大佬支持一下

👍

点赞,你的认可是我创作的动力!

\textcolor{9c81c1}{点赞,你的认可是我创作的动力!}

点赞,你的认可是我创作的动力!

⭐️

收藏,你的青睐是我努力的方向!

\textcolor{ed7976}{收藏,你的青睐是我努力的方向!}

收藏,你的青睐是我努力的方向!

✏️

评论,你的意见是我进步的财富!

\textcolor{98c091}{评论,你的意见是我进步的财富!}

评论,你的意见是我进步的财富!

android版本适配

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注