通信录

题目要求:

通信录
电话、姓名、级别
char tel[100][12];
char name[100][10];
char level[100];
1.添加联系人
2.删除联系人
3.查询联系人
4.修改联系人
5.列出联系人

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <string.h>
#include <getch.h>

char name[100][10];
char tel[100][12];
char level[100];

void anykey_continue(void)
{
	stdin->_IO_read_ptr = stdin->_IO_read_end;
	puts("按任意键继续...");
	getch();
	stdin->_IO_read_ptr = stdin->_IO_read_end;
}

char* get_str(char* str,size_t size)
{
	// 限制输入的字符度
	fgets(str,size,stdin);
	// 计算实际输入的字符数量
	size_t len = strlen(str);
	// 判断最一个字符是否是'\n'
	if('\n' == str[len-1])
	{
		// 删除'\n'
		str[len-1] = '\0';
	}
	else
	{
		// 清理输入缓冲区
		stdin->_IO_read_ptr = stdin->_IO_read_end;
	}
	return str;
}

void add(void)
{
	int i = 0;
	while(level[i])i++;

	printf("请输入姓名:");
	get_str(name[i],10);
	printf("请输入电话:");
	get_str(tel[i],12);
	printf("请输入级别:");
	scanf("%c",&level[i]);
	printf("姓名:%s 电话:%s 级别:%c 添加联系人成功!\n",
		name[i],tel[i],level[i]);
	sleep(1);
}

void del(void)
{
	char key[10];
	printf("请输入要删除的联系人姓名:");
	get_str(key,10);

	for(int i=0; i<100; i++)
	{
		if(level[i] && !strcmp(key,name[i]))
		{
			printf("姓名:%s 电话:%s 级别:%c 删除联系人成功!\n",name[i],tel[i],level[i]);
			level[i] = 0;
			sleep(1);
			return;
		}
	}
	printf("未找到联系人,删除失败!\n");
	sleep(1);
}

void mod(void)
{
	char key[10];
	printf("请输入要修改的联系人姓名:");
	get_str(key,10);
	
	for(int i=0; i<100; i++)
	{
		if(level[i] && !strcmp(key,name[i]))
		{
			puts("请重新输入联系人信息!");
			printf("请输入姓名:");
			get_str(name[i],10);
			printf("请输入电话:");
			get_str(tel[i],12);
			printf("请输入级别:");
			scanf("%c",&level[i]);
			printf("姓名:%s 电话:%s 级别:%c 修改联系人成功!\n",name[i],tel[i],level[i]);
			sleep(1);
			return;
		}
	}
	printf("未找到联系人,无法修改!\n");
	sleep(1);
}

void find(void)
{
	char key[12];
	printf("请输入要查询的关键字:");
	get_str(key,12);
	
	for(int i=0; i<100; i++)
	{
		if(level[i] && (strstr(name[i],key) || strstr(tel[i],key)))
		{
			printf("%s %s %c\n",name[i],tel[i],level[i]);
		}
	}
	anykey_continue();
}

void list(void)
{
	for(int i=0; i<100; i++)
	{
		if(level[i])
		{
			printf("%s %s %c\n",name[i],tel[i],level[i]);
		}
	}
	anykey_continue();
}

int get_cmd(char start,char end)
{
	puts("------------------");
	printf("请输入指令:");
	for(;;)
	{
		char cmd = getch();
		if(start <= cmd && cmd <= end)
		{
			printf("%c\n",cmd);
			return cmd;
		}
	}
}

void menu(void)
{
	system("clear");
	puts("*****欢迎使用通讯录*****");
	puts("1、添加联系人");
	puts("2、删除联系人");
	puts("3、修改联系人");
	puts("4、查询联系人");
	puts("5、显示联系人");
	puts("6、退出");
}

int main()
{
	for(;;)
	{
		menu();
		switch(get_cmd('1','6'))
		{
		case '1': add(); break;
		case '2': del(); break;
		case '3': mod(); break;
		case '4': find(); break;
		case '5': list(); break;
		case '6': return 0;
		}
	}
}

上一篇:freopen函数的使用以及freopen与fopen的区别


下一篇:MySQL基础:DML语句总结