首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >C语言-手机通讯录的实现(静态版)

C语言-手机通讯录的实现(静态版)

作者头像
HABuo
发布于 2024-11-19 18:30:08
发布于 2024-11-19 18:30:08
1.1K0
举报

1.通讯录需要哪些文件

一共三个文件:头文件、通讯录函数源文件、主函数源文件。

1)头文件:用来进行函数声明、以及类型的定义。

2)通讯录函数文件:用来实现我们所需要的函数的。

3)主函数文件:程序逻辑实现、编译执行的文件。

如下图所示:

2.通讯录的实现步骤

2.1 打印主界面

代码语言:javascript
复制
void menu()
{
	printf("****************************************");
	printf("********  1.add      2.del    **********");
	printf("********  3.search   4.modify **********");
	printf("********        0.exit        **********");
	printf("****************************************");
	printf("****************************************");
}

2.2 主函数的逻辑实现

主函数内使用dowhile循环体来实现这样的一个循环,具体的不同功能,采用了switch语句,通过输入不同数值来进入不同的功能区。

代码语言:javascript
复制
int main()
{
	int input = 0;
	//定义通讯录
	Contact con;
	//初始化
	init_contact(&con);
	do 
	{
		menu();
		printf("请输入:");
		scanf("%d", &input);
		switch (input)
		{
		case add:
			addcontact(&con);
			print(&con);
			break;
		case del:
			delcontact(&con);
			print(&con);
			break;
		case search:
			searchcontact(&con);
			break;
		case modify:
			modifycontact(&con);
			print(&con);
			break;
		case exit:
			break;
		default:
			printf("输入错误,请重新输入:\n");
			break;
		}
	} while (input);
	return 0;
}

2.3 初始化函数

初始化函数采用了库函数memset,memset怎么使用,见本人博客内存库函数的讲解。

代码语言:javascript
复制
void init_contact(Contact* pd) //初始化
{
	pd->sz = 0;
	memset(pd->data, 0, sizeof(pd->data));
}

2.4 增加用户信息函数

代码语言:javascript
复制
void addcontact(Contact* pa) //增加用户信息
{
	if (pa->sz >= MAX)
	{
		printf("通讯录已满");
		return;
	}
	printf("请输入名字:");
	scanf("%s", &pa->data[pa->sz].name);
	printf("请输入性别:");
	scanf("%s", &pa->data[pa->sz].sex);
	printf("请输入年龄:");
	scanf("%d", &pa->data[pa->sz].age);
	printf("请输入电话:");
	scanf("%s", &pa->data[pa->sz].tele);
	printf("请输入地址:");
	scanf("%s", &pa->data[pa->sz].address);
	pa->sz++;
	printf("输入完成\n");
}

2.5 打印所有用户信息函数

代码语言:javascript
复制
void print(const Contact* p) //打印用户
{
	int i = 0;
	//标题
	printf("%-10s\t%-5s\t%-5s\t%-8s\t%-8s\n", "名称","性别","年龄","电话","地址");
	for (i = 0; i < p->sz; i++)
	{
		printf("%-10s\t", p->data[i].name);
		printf("%-5s\t", p->data[i].sex);
		printf("%-5d\t", p->data[i].age);
		printf("%-8s\t", p->data[i].tele);
		printf("%-8s\t", p->data[i].address);
		printf("\n");
	}
}

2.6 查找用户信息函数

代码语言:javascript
复制
void searchcontact(const Contact* ps) //查找用户信息
{
	int i = 0;
	char sech[10] = { 0 };
	printf("请输入要查找的用户名称:");
	scanf("%s", &sech);
	for (i = 0; i < ps->sz; i++)
	{
		if (strcmp(sech, ps->data[i].name) == 0)
		{
			printf("找到了\n");
			break;
		}
	}
	if (i == ps->sz)
	{
		printf("没找到\n");
	}
}

2.7 删除用户信息函数

代码语言:javascript
复制
void delcontact(Contact* pd) //删除用户信息
{
	if (pd->sz == 0)
	{
		printf("通讯录内无用户\n");
	}
	char del[10] = { 0 };
	printf("请输入要删除的用户名称:");
	scanf("%s", &del);
	for (int i = 0; i < pd->sz; i++)
	{
		if (strcmp(del, pd->data[i].name) == 0)
		{
			for (; i < pd->sz; i++)
			{
				pd->data[i] = pd->data[i + 1];
			}
		}
	}
	pd->sz--;
	printf("删除成功\n");
}

2.8 修改用户信息函数

代码语言:javascript
复制
void modifycontact(Contact* pm) //修改用户信息
{
	int i = 0;
	char modify[10] = { 0 };
	printf("请输入要修改的用户名称:");
	scanf("%s", &modify);
	for (i = 0; i < pm->sz; i++)
	{
		if (strcmp(modify, pm->data[i].name) == 0)
		{
			printf("请输入名字:");
			scanf("%s", &pm->data[i].name);
			printf("请输入性别:");
			scanf("%s", &pm->data[i].sex);
			printf("请输入年龄:");
			scanf("%d", &pm->data[i].age);
			printf("请输入电话:");
			scanf("%s", &pm->data[i].tele);
			printf("请输入地址:");
			scanf("%s", &pm->data[i].address);
			printf("修改成功\n");
			break;
		}
	}
	if (i == pm->sz)
	{
		printf("无此用户\n");
	}
}

3.总代码

3.1 主函数文件

代码语言:javascript
复制
#define _CRT_SECURE_NO_WARNINGS 1
#include"contact.h"


void menu()
{
	printf("****************************************\n");
	printf("********  1.add      2.del    **********\n");
	printf("********  3.search   4.modify **********\n");
	printf("********        0.exit        **********\n");
	printf("****************************************\n");
	printf("****************************************\n");
}
enum Option
{
	exit,
	add,
	del,
	search,
	modify,
};

int main()
{
	int input = 0;
	//定义通讯录
	Contact con;
	//初始化
	init_contact(&con);
	do 
	{
		menu();
		printf("请输入:");
		scanf("%d", &input);
		switch (input)
		{
		case add:
			addcontact(&con);
			print(&con);
			break;
		case del:
			delcontact(&con);
			print(&con);
			break;
		case search:
			searchcontact(&con);
			break;
		case modify:
			modifycontact(&con);
			print(&con);
			break;
		case exit:
			break;
		default:
			printf("输入错误,请重新输入:\n");
			break;
		}
	} while (input);
	return 0;
}

3.2 通讯录函数文件

代码语言:javascript
复制
#define _CRT_SECURE_NO_WARNINGS 1
#include"contact.h"


void init_contact(Contact* pd) //初始化
{
	pd->sz = 0;
	memset(pd->data, 0, sizeof(pd->data));
}
void print(const Contact* p) //打印用户
{
	int i = 0;
	//标题
	printf("%-10s\t%-5s\t%-5s\t%-8s\t%-8s\n", "名称","性别","年龄","电话","地址");
	for (i = 0; i < p->sz; i++)
	{
		printf("%-10s\t", p->data[i].name);
		printf("%-5s\t", p->data[i].sex);
		printf("%-5d\t", p->data[i].age);
		printf("%-8s\t", p->data[i].tele);
		printf("%-8s\t", p->data[i].address);
		printf("\n");
	}
}
void addcontact(Contact* pa) //增加用户信息
{
	if (pa->sz >= MAX)
	{
		printf("通讯录已满");
		return;
	}
	printf("请输入名字:");
	scanf("%s", &pa->data[pa->sz].name);
	printf("请输入性别:");
	scanf("%s", &pa->data[pa->sz].sex);
	printf("请输入年龄:");
	scanf("%d", &pa->data[pa->sz].age);
	printf("请输入电话:");
	scanf("%s", &pa->data[pa->sz].tele);
	printf("请输入地址:");
	scanf("%s", &pa->data[pa->sz].address);
	pa->sz++;
	printf("输入完成\n");
}

void searchcontact(const Contact* ps) //查找用户信息
{
	int i = 0;
	char sech[10] = { 0 };
	printf("请输入要查找的用户名称:");
	scanf("%s", &sech);
	for (i = 0; i < ps->sz; i++)
	{
		if (strcmp(sech, ps->data[i].name) == 0)
		{
			printf("找到了\n");
			break;
		}
	}
	if (i == ps->sz)
	{
		printf("没找到\n");
	}
}

void delcontact(Contact* pd) //删除用户信息
{
	if (pd->sz == 0)
	{
		printf("通讯录内无用户\n");
	}
	char del[10] = { 0 };
	printf("请输入要删除的用户名称:");
	scanf("%s", &del);
	for (int i = 0; i < pd->sz; i++)
	{
		if (strcmp(del, pd->data[i].name) == 0)
		{
			for (; i < pd->sz; i++)
			{
				pd->data[i] = pd->data[i + 1];
			}
		}
	}
	pd->sz--;
	printf("删除成功\n");
}


void modifycontact(Contact* pm) //修改用户信息
{
	int i = 0;
	char modify[10] = { 0 };
	printf("请输入要修改的用户名称:");
	scanf("%s", &modify);
	for (i = 0; i < pm->sz; i++)
	{
		if (strcmp(modify, pm->data[i].name) == 0)
		{
			printf("请输入名字:");
			scanf("%s", &pm->data[i].name);
			printf("请输入性别:");
			scanf("%s", &pm->data[i].sex);
			printf("请输入年龄:");
			scanf("%d", &pm->data[i].age);
			printf("请输入电话:");
			scanf("%s", &pm->data[i].tele);
			printf("请输入地址:");
			scanf("%s", &pm->data[i].address);
			printf("修改成功\n");
			break;
		}
	}
	if (i == pm->sz)
	{
		printf("无此用户\n");
	}
}

3.3 头文件

代码语言:javascript
复制
#pragma once
#include<stdio.h>
#include<string.h>
#define MAX_NAME 20
#define MAX_SEX 10
#define MAX_TELE 20
#define MAX_ADDRESS 20
#define MAX 1000

typedef struct contact
{
	char name[MAX_NAME];
	char sex[MAX_SEX];
	int age;
	char tele[MAX_TELE];
	char address[MAX_ADDRESS];
}contact;

typedef struct Contact //建立通讯录
{
	contact data[MAX];
	int sz;
}Contact;


void print(const Contact* p);
void init_contact(Contact* pd);
void addcontact(Contact* pa);
void searchcontact(const Contact* ps);
void delcontact(Contact* pd);
void modifycontact(Contact* pm);
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-10-24,如有侵权请联系 cloudcommunity@tencent.com 删除
目录
  • 1.通讯录需要哪些文件
  • 2.通讯录的实现步骤
    • 2.1 打印主界面
    • 2.2 主函数的逻辑实现
    • 2.3 初始化函数
    • 2.4 增加用户信息函数
    • 2.5 打印所有用户信息函数
    • 2.6 查找用户信息函数
    • 2.7 删除用户信息函数
    • 2.8 修改用户信息函数
  • 3.总代码
    • 3.1 主函数文件
    • 3.2 通讯录函数文件
    • 3.3 头文件
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档