电话簿要求:含有姓名、电话、重要等级;有添加,查询,显示,删除,修改,关闭等功能。
一般来说这种类型的要用结构体写,但是还没学到结构体,所以我先用全局变量的数组。
全局变量及头文件:
#include <stdio.h>
#include<getch.h>
#include<string.h>
char vip[100],x;//用于储存重要等级
char tel[100][10];//用于储存电话
char name[100][12];//用于储存姓名
void anygo(void)
添加功能:
void add(void)
{
int i = 0;
while(i<100)
{ if(0 == name[i][0]) // 用名字的第一个字符作为标志位判断有无数据
break;
i++;
}
printf("请输入姓名:\n");
scanf("%s",name[i]);
printf("请输入电话:\n");
scanf("%s",tel[i]);
printf("请输入级别:\n");
getchar();
scanf("%c",&vip[i]);
printf("添加联系人成功:%s %s %c\n",name[i],tel[i],vip[i]);
if(i==101)
printf("满了\n");
}
删除功能:
void sc(void)
{
printf("请输入要删除人的姓名或电话:");
char x[12]={};
scanf("%s",x);
getchar();
int i,j=1;
for(i=0;i<100;i++)
{
if(!strcmp(x,name[i]))//strstr用于模糊查询,strcmp用于景区内查询
{
name[i][0]=0;
j=0;\\判断有没有查到人
printf("删除成功\n");
break;
}
}
if(j)
printf("查无此人\n");//如果j没有置0表示电话簿内没有此人信息
}
查询功能
void cx (void)
{
printf("请输入要查询人姓名或电话\n");
char x[12]={};
scanf("%s",x);
getchar();
int i,j=1;
for(i=0;i<100;i++)
{
if(strstr(name[i],x)||strstr(tel[i],x))//模糊查询
{
printf("已找到联系人:");
printf("%s %s %c\n",name[i],tel[i],vip[i]);
j=0;//判断标志位
}
}
if(j)
printf("找不到此人\n");
}
显示功能:
void xs(void)
{
int i;
for(i=0;i<100;i++)
{
if(name[i][0])
{
printf("%s %s %c\n",name[i],tel[i],vip[i]);
}
}
if(i==100)
printf("显示完毕\n");
}
修改功能:
void xg(void)
{
int i=0,j=1;
printf("请输入要修改的名字");
char x[10];
scanf("%s",x);
getchar();
for(i=0;i<100;i++)
{
if(!strcmp(x,name[i])&&name[i][0]!=0)
{
printf("已找到请输入修改内容\n");
j=0;
printf("请输入姓名:");
scanf("%s",name[i]);
printf("请输入电话:");
scanf("%s",tel[i]);
printf("请输入级别:");
getchar();
scanf("%c",&vip[i]);
printf("修改联系人成功:%s %s %c\n",name[i],tel[i],vip[i]);
break;
}
if(j)
printf("查无此人\n");
}
主函数:
int main(int argc,const char* argv[])
{
for(;;)
{
printf("a:添加\n");
printf("b:删除\n");
printf("c:查询\n");
printf("d:修改\n");
printf("e:显示\n");
printf("其他任意键退出\n");
scanf("%c",&x);
switch(x)
{
case 'a':add();
break;
case 'b':sc();
break;
case 'c':cx();
break;
case 'd':xg();
break;
case 'e':xs();
break;
default:return 0;
break;
}
}
}
基本上的功能有了然后就是一些优化了,比如清屏和\n误输入判断等。