通讯录1)
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <getch.h>
#include <string.h>
static char name[50][20] = {}; //姓名
static char sex[50] = {}; //性别
static char tel[50][13] = {}; //电话
static int count = 0; //有效联系人的个数
//任意键继续
void anykey_continue(void)
{
puts("任意键继续...");
stdin->_IO_read_ptr = stdin->_IO_read_end;
getch();
}
//打印提示信息
void show_msg(const char* msg,double sec)
{
printf("%s",msg);
fflush(stdout);
usleep(sec*1000000);
}
void add(void)
{
if(50 <= count)
{
printf("系统维护中,请稍候哦~");
return;
}
int i = 0;
while(sex[i]) i++;
printf("请输入姓名,性别,电话:");
scanf("%s %c %s",name[i],&sex[i],tel[i]);
count++;
show_msg("添加联系人成功\n",1.5);
}
void del(void)
{
char key[20] = {};
printf("请输入要替换的姓名:");
scanf("%s",key);
for(int i=0; i<50; i++)
{
if(sex[i])
{
if(0 == strcmp(name[i],key))
{
printf("删除%s %s %s联系人成功",name[i],'w'==sex[i]?"女":"男",tel[i]);
sex[i] = 0;
count--;
show_msg("",1.5);
return;
}
}
}
printf("没找到联系人%s,检查查询条件\n",key);
show_msg("",1.5);
}
void modify(void)
{
char key[20] = {};
printf("请输入要修改的联系人的姓名:");
scanf("%s",key);
for(int i=0; i<50; i++)
{
if(sex[i])
{
if(0 == strcmp(name[i],key))
{
printf("将修改联系人%s %s %s\n",name[i],'w'==sex[i]?"女":"男",tel[i]);
printf("请输入姓名,性别,电话:");
scanf("%s %c %s",name[i],&sex[i],tel[i]);
show_msg("修改联系人成功",1.5);
return;
}
}
}
printf("没找到联系人%s,检查查询条件\n",key);
show_msg("",1.5);
}
void find(void)
{
char key[20] = {};
printf("请输入要查找的联系人的姓名或者电话:");
scanf("%s",key);
for(int i=0; i<50; i++)
{
if(sex[i])
{
if(0 == strcmp(name[i],key) || NULL != strstr(tel[i],key))
{
printf("找到的联系人%s %s %s\n",name[i],'w'==sex[i]?"女":"男",tel[i]);
anykey_continue();
return;
}
}
}
printf("没找到联系人%s,检查查询条件\n",key);
show_msg("",1.5);
}
void list(void)
{
for(int i=0; i<50; i++)
{
if(sex[i])
{
printf("%s %s %s\n",name[i],'w'==sex[i]?"女":"男",tel[i]);
}
}
anykey_continue();
}
char menu(void)
{
system("clear");
puts("-----欢迎使用指针通讯录-----");
puts("1.添加联系人");
puts("2.删除联系人");
puts("3.修改联系人");
puts("4.查询联系人");
puts("5.遍历联系人");
puts("6.退出通讯录");
puts("----------------------------");
puts("请输入命令:");
char ch = getch();
printf("%c\n",ch); //为了回显
return ch;
}
int main(int arhc,const char* argv[])
{
for(;;)
{
switch(menu())
{
case '1':add(); break;
case '2':del(); break;
case '3':modify(); break;
case '4':find(); break;
case '5':list(); break;
case '6':return 0;
}
}
}
2)
#include <stdio.h>
#include <string.h>
#include <getch.h>
#include <stdlib.h>
char name[50][20] = {};
char delname[20] = {};
char channame[20] = {};
char seekname[20] = {};
char sex[50][3] = {};
char tel[50][13] = {};
char seektel[13] = {};
char str[2] = {};
int cnt = 0;
void add(void)
{
while(cnt<50)
{
printf("请输入姓名:");
scanf("%s",name[cnt]);
printf("请输入性别(w/n):");
scanf("%s",sex[cnt]);
printf("请输入电话号码:");
scanf("%s",tel[cnt]);
cnt++;
printf("是否添加?(y/n)");
scanf("%s",str);
if(strcmp(str,"n") == 0) return;
}
}
void del(void)
{
while(cnt>0)
{
printf("请输入要删除的联系人姓名:");
scanf("%s",delname);
for(int i=0; i<cnt; i++)
{
if(strcmp(delname,name[i]) == 0)
{
printf("姓名:%s 性别:%s 号码:%s\n",name[i],sex[i],tel[i]);
printf("请确认是否删除?(y/n)");
scanf("%s",str);
if(strcmp(str,"n") == 0) break;
else if(strcmp(str,"y") == 0)
{
for(int j=i; j<cnt; j++)
{
name[j][0] = name[j+1][0];
sex[j][0] = sex[j+1][0];
tel[j][0] = tel[j+1][0];
}
printf("已成功删除!");
break;
}
}
}
cnt--;
printf("是否继续删除?(y/n)");
scanf("%s",str);
if(strcmp(str,"n") == 0) return;
}
}
void change(void)
{
for(;;)
{
printf("请输入需要替换的名字:");
scanf("%s",channame);
for(int i=0; i<cnt; i++)
{
if(strcmp(name[i],channame) == 0)
{
printf("姓名:%s 性别:%s 号码:%s\n",name[i],sex[i],tel[i]);
printf("请确认是否替换?(y/n)");
scanf("%s",str);
if(strcmp(str,"n") == 0) break;
else if(strcmp(str,"y") == 0)
{
printf("请输入姓名:");
scanf("%s",name[i]);
printf("请输入性别(w/n):");
scanf("%s",sex[i]);
printf("请输入电话号码:");
scanf("%s",tel[i]);
printf("已成功修改");
break;
}
}
}
printf("是否继续替换?(y/n)");
scanf("%s",str);
if(strcmp(str,"n") == 0) return;
else if(strcmp(str,"y") == 0) continue;
}
}
void seek(void)
{
int sum = 0;
for(;;)
{
printf("请问将采用何种查找方式?(姓名n,电话t)");
scanf("%s",str);
if(strcmp(str,"n") == 0)
{
printf("请输入姓名:");
scanf("%s",seekname);
for(int i=0; i<cnt; i++)
{
if(strcmp(seekname,name[i]) == 0)
{
sum++;
printf("姓名:%s 性别:%s 号码:%s\n",name[i],sex[i],tel[i]);
}
}
if(sum == 0)
{
printf("没有找到该名字");
}
}
else if(strcmp(str,"t") == 0)
{
printf("请输入电话或连续数字:");
scanf("%s",seektel);
for(int i=0; i<cnt; i++)
{
if(strstr(tel[i],seektel) != NULL)
{
sum++;
printf("姓名:%s 性别:%s 号码:%s\n",name[i],sex[i],tel[i]);
}
}
if(sum == 0)
{
printf("没有找到该名字");
}
}
printf("是否继续查找?(y/n)");
scanf("%s",str);
if(strcmp(str,"n") == 0) return;
else if(strcmp(str,"y") == 0) continue;
}
}
void show(void)
{
for(int i=0; i<cnt; i++)
{
printf("姓名:%s 性别:%s 号码:%s\n",name[i],sex[i],tel[i]);
}
printf("是否退出显示?(y/n)");
scanf("%s",str);
if(strcmp(str,"n") == 0) return;
}
int main(int arhc,const char* argv[])
{
for(;;)
{
system("clear");
puts("-------欢迎使用指针通讯录-------");
puts("1.添加");
puts("2.删除");
puts("3.修改");
puts("4.查找");
puts("5.显示");
puts("6.退出");
puts("--------------------------------");
puts("请输入指令:");
switch(getch())
{
case '1': add(); break;
case '2': del(); break;
case '3': change(); break;
case '4': seek(); break;
case '5': show(); break;
case '6': return 0;
}
}
}