以二维数组实现简易的电话号码软件

/*
编写一个简易的电话号码软件,要求如下:
1)可以存储人名和电话(提示用二维字符数组,第一维数组存放姓名,第二维存放电话)
2)可以输入(增加)、根据姓名为条件查找、修改和删除电话。

*/

#include <stdio.h>
#include <windows.h>

#pragma warning (disable:4996)

#define ROW 128//最多可存储128人的电话,要扩充人数可直接修改此值
#define COL1 9//姓名所占字节 
#define COL2 12/号码所占字节

void menu();//菜单
void add(char tel[][COL1 + COL2], int *personNum);//增加电话
void change(char tel[][COL1 + COL2], int *personNum);//修改电话
void del(char tel[][COL1 + COL2], int *personNum);//删除电话
void lookup(char tel[][COL1 + COL2], int *personNum);//查找电话


int main()
{
	char tel[ROW][COL1 + COL2] = { 0 };
	int n=0;       //选项
	int personNum = 0;//人数
	while (1)
	{
		menu();
		scanf("%d", &n);
		switch (n)
		{
		case 1:
			add(tel, &personNum);
			system("cls");//清除屏幕
			break;
		case 2:
			del(tel, &personNum);
			system("cls");
			break;
		case 3:
			change(tel, &personNum);
			system("cls");
			break;
		case 4:
			lookup(tel, &personNum);
			break;
		case 5:
			exit(0);
			break;
		default:
			printf("输入错误,请重新输入\n");
			break;
		}
	}
	system("pause");
	return 0;
}

void menu()
{//菜单
	printf("请输入您操作选项:\n");
	printf("    1、增加      \n");
	printf("    2、删除      \n");
	printf("    3、修改      \n");
	printf("    4、查找      \n");
	printf("    5、退出      \n");
}

void add(char tel[][COL1 + COL2], int *personNum)
{//增加电话
	printf("请输入要增加的人的姓名:");
	scanf("%s", tel[*personNum]);
	printf("请输入要增加的人的电话:");
	scanf("%s", tel[*personNum] + COL1);
	(*personNum)++;
}

void change(char tel[][COL1 + COL2], int *personNum)
{//修改电话
	char name[8] = { 0 };
	printf("请输入要修改的人的姓名:");
	scanf("%s", name);
	for (int i = 0; i <= *personNum; i++)
	{
		if (strcmp(tel[i], name) == 0)
		{
			printf("请输入要修改的人的电话:");
			scanf("%s", tel[i] + COL1);
			return;
		}
	}
	printf("未找到这个人");
}

void del(char tel[][COL1 + COL2], int *personNum)
{//删除电话
	char name[8] = { 0 };
	printf("请输入要修改的人的姓名:");
	scanf("%s", name);
	for (int i = 0; i <= *personNum; i++)
	{
		if (strcmp(tel[i], name) == 0)
		{
			for (int j = i; j <= *personNum; j++)
			{
				for (int k = 0; k < COL1 + COL2; k++)

				{
					tel[j][k] = tel[j + 1][k];
				}
			}
			(*personNum)--;
			return;
		}
	}
	printf("未找到这个人");
}

void lookup(char tel[][COL1 + COL2], int *personNum)
{//查找电话
	char name[8] = { 0 };
	printf("请输入要查找的人的姓名:");
	scanf("%s", name);
	for (int i = 0; i <= *personNum; i++)
	{
		if (strcmp(tel[i], name) == 0)
		{
			printf("要查找的人的的电话是:");
			for (int j = COL1; j < COL1 + COL2; j++)
			{
				printf("%c", tel[i][j]);
			}
			printf("\n");
			return;
		}
	}
	printf("未找到这个人");
}


运行截图:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值