1. 程式人生 > 其它 >Linux編譯安裝LNMP+redis+mongodb

Linux編譯安裝LNMP+redis+mongodb

題目要求:

通訊錄
電話、姓名、級別
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;
		}
	}
}