No.24 我与代码的日常:C语言实现简易通讯录

#define SIZE 1000
#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>
#include <string.h>

typedef struct PersonInfo{
	char name[1024];
	char phone[1024];
} PersonInfo;

typedef struct AddrBook{
	PersonInfo person_info[SIZE];
	int size;
}AddrBook;

AddrBook g_addr_book;

enum{
	EXIT = 0,
	ADD,
	DEL,
	MODIFY,
	FIND,
	PRINT,
	CLEAR,
};

void Init()
{
	//初始化通讯录
	int i = 0 ;
	g_addr_book.size = 0 ;
	for(i=0; i<SIZE; i++)
	{
		strcpy(g_addr_book.person_info[i].name , " ") ;
		strcpy(g_addr_book.person_info[i].phone , " ") ;
	}
}

void AddPersonInfo()
{
	//先判断通讯录此时是否已满,若满,则返回错误信息
	if(g_addr_book.size >= SIZE)
	{
		printf("通讯录已满,添加失败!\n") ;
	}

	//若通讯录没满,则提示用户输入信息进行添加操作
	printf("\n------添加一个新用户------\n") ;
	printf("请输入用户名:") ;
	scanf("%s", g_addr_book.person_info[g_addr_book.size].name) ;
	printf("请输入电话号码:") ;
	scanf("%s", g_addr_book.person_info[g_addr_book.size].phone) ;
	g_addr_book.size ++ ;
	printf("插入成功!\n") ;
	return ;
}



int Menu()
{
	int choice = 0;
	printf("\t***********************************************\n");
	printf("\t* \t \t                              *\n");
	printf("\t* \t       欢迎使用通讯录系统             *\n");
	printf("\t* \t \t                              *\n");
	printf("\t*\t\t 1.添加  2.删除               *   \n");
	printf("\t*\t\t 3.修改  4.查找               *  \n");
	printf("\t*\t\t 5.显示  6.清除               * \n");
	printf("\t*\t\t 0.退出                       *   \n");
	printf("\t* \t                                      *\n");
	printf("\t*  \t                  作者:Romeo         *\n");
	printf("\t* \t \t                              *\n");
	printf("\t* \t \t                              *\n");
	printf("\t***********************************************\n");
	printf("\n请输入相应的选择:");
	scanf("%d", &choice);
	return choice;
}

void PrintPersonInfo()
{
	//打印所有用户信息
	int i = 0 ;
	printf("------打印所有用户信息------\n") ;
	for(i=0; i<g_addr_book.size; i++)
	{
		printf("[%d] %s %s\n", i, g_addr_book.person_info[i].name, g_addr_book.person_info[i].phone) ;
	}
	printf("打印完成。共打印了%d条记录!\n", g_addr_book.size) ;
	printf("\n") ;
}

void DelPersonInfo()
{
	//按照用户编号来删除
	int num = 0 ;
	printf("------删除指定记录------\n") ;
	printf("请输入欲删除的编号:") ;
	scanf("%d", &num) ;
	//判断输入的编号是否合法
	if(num < 0 || num >= g_addr_book.size)
	{
		printf("输入的编号不合法,删除失败!\n") ;
		return ;
	}

	//1.若要删除最后一个信息,则直接 size--;
	//2.若要删除中间某个信息,则把最后一个信息覆盖到要删除的位置,再size--;
	if(num == g_addr_book.size - 1)
	{
		g_addr_book.size -- ;
	}
	else
	{
		strcpy(g_addr_book.person_info[num].name, g_addr_book.person_info[g_addr_book.size - 1].name) ;
		strcpy(g_addr_book.person_info[num].phone, g_addr_book.person_info[g_addr_book.size - 1].phone) ;
		g_addr_book.size -- ;
	}
	printf("删除成功!\n") ;
}

void ModPersonInfo()
{
	//按编号来修改某条用户的信息
	int num = 0 ;
	printf("------修改某条记录------\n") ;
	printf("请输入欲修改的编号:") ;
	scanf("%d", &num) ;
	//要先判断输入的编号是否合法
	if(num < 0 || num >= g_addr_book.size)
	{
		printf("输入的编号不合法,修改失败!\n") ;
		return ;
	}
	printf("请输入新用户名:") ;
	scanf("%s", g_addr_book.person_info[num].name) ;
	printf("请输入新电话号码:") ;
	scanf("%s", g_addr_book.person_info[num].phone) ;
	printf("修改成功!\n") ;
}

void FindPersonInfo()
{
	//根据用户名查询
	char name[1024] = {0} ;
	int count = 0 ;//计数器
	int i = 0 ;
	printf("------查找电话号码------\n") ;
	printf("请输入要查询的姓名:") ;
	scanf("%s", name) ;
	for(i=0; i<g_addr_book.size; i++)
	{
		if(strcmp(name,g_addr_book.person_info[i].name) == 0)
		{
			printf("找到1条结果!电话号码为:%s\n",g_addr_book.person_info[i].phone) ;
			count ++ ;
		}
	}
	if(0 == count)
	{
		printf("未找到记录!请检查用户名是否合法!\n") ;
	}
	else
	{
		printf("查询成功,共有%d条记录!\n", count) ;
	}
}

void ClearPersonInfo()
{
	char input[1024] = {0} ;
	printf("------清除所有用户信息------\n") ;
	printf("您真的要删除所有用户信息吗?(Yes/No)\n") ;
	scanf("%s", input) ;
	if(strcmp(input,"Yes") != 0)
	{
		printf("您已取消操作!\n") ;
		return ;
	}
	g_addr_book.size = 0 ;
	printf("清空成功!\n") ;
}

int main()
{
	Init(); //初始化通讯录
	
	while(1)
	{
		int choice = Menu();
		switch(choice)
		{
		case ADD : AddPersonInfo();
			break;
		case DEL : DelPersonInfo();
			break;
		case MODIFY : ModPersonInfo();
			break;
		case FIND : FindPersonInfo();
			break;
		case PRINT : PrintPersonInfo();
			break;
		case CLEAR : ClearPersonInfo();![在这里插入图片描述](https://img-blog.csdnimg.cn/20181113203031272.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3N0dWR5aGFyZGk=,size_16,color_FFFFFF,t_70)
			break;
		case EXIT : printf("Good-Bye!\n");
			return 0;
		default :
			break;
		}
	}
	return 0;

}

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/studyhardi/article/details/84035636