/*3. 电话薄程序。建立一个结构体数组,存放若干人的信息,包括:姓名,电话,职业,住址。要求这个管理小程序可以完成的任务:
(1)电话簿的内容显示。
(2)按姓名、电话查询联系人信息。
(3)按输入的关键字修改联系人的信息。
(4)用指向该数组的指针完成上述功能。
(5)输出如下菜单,用 switch 语句实现根据用户输入的选择执行相应的操作。
1. 显示所有联系人信息
2. 查询联系人信息
3. 修改联系人信息*/
#include <stdio.h>
#include <string.h>
#include<stdlib.h>
struct tele
{
char name[20];
char tel[12];
char career[10];
char add[10];
};
void chaxun(struct tele su[300],int M)
{
char n[12];
int i;
printf("请输入要查询的姓名或电话:\n");
scanf("%s",n);
for(i=0;i<=M;i++)
{
if(strcmp(su[i].name,n) == 0||strcmp(su[i].tel,n) == 0)
{
printf("result:\t%s\t%s\t%s\t%s\n",su[i].name,su[i].tel,su[i].career,su[i].add);
break;
}
}
if(i==M+1)
printf("没有该联系人!\n");
}
int scan(struct tele su[],int i)
{
while(1)
{
i++;
printf("请输入第%d位联系人姓名 电话 职业 住址:\n",i);
scanf("%s",su[i].name);
if((su[i].name[0])=='#') //输入以#结束
break;
scanf(" %s %s %s",su[i].tel,su[i].career,su[i].add);
}
return i-1;
}
void print(struct tele su[],int n)
{
int j;
for(j=1;j<=n;j++)
printf("%d:\t%s\t%s\t%s\t%s\n",j,su[j].name,su[j].tel,su[j].career,su[j].add);
}
void change(struct tele su[],int M)
{
char n[12];
int i;
printf("请输入要修改成员的姓名或电话:\n");
scanf("%s",n);
for(i=0;i<=M;i++)
{
if(strcmp(su[i].name,n) == 0||strcmp(su[i].tel,n) == 0)
break;
}
if(i>M)
printf("没有该联系人!\n");
else
{
printf("请输入要修改成员的信息:\n");
scanf("%s %s %s %s%*c",su[i].name,su[i].tel,su[i].career,su[i].add);
printf("修改完成!\n");
}
}
int main()
{
int i=0,a,n;
struct tele su[300];
n=scan(su,i);
while(1)
{
system("cls"); //执行控制台命令cls,就是CMD下面的cls,功能是清屏,清除所有显示的信息
printf(" 请输入通讯录菜单选项(1--显示通讯录成员)(2--查询通讯录成员)(3--修改通讯录成员)(0--关闭):\n");
fflush(stdin); //用来清空输入缓存,以便不影响后面输入的东西
scanf("%d",&a);
if(a==0) break;
switch(a)
{
case 1:
printf("通讯录成员:\n");
print(su,n);
break;
case 2:chaxun(su,n);
break;
case 3:change(su,n);
break;
}
system("pause");
}
return 0;
}
(1)电话簿的内容显示。
(2)按姓名、电话查询联系人信息。
(3)按输入的关键字修改联系人的信息。
(4)用指向该数组的指针完成上述功能。
(5)输出如下菜单,用 switch 语句实现根据用户输入的选择执行相应的操作。
1. 显示所有联系人信息
2. 查询联系人信息
3. 修改联系人信息*/
#include <stdio.h>
#include <string.h>
#include<stdlib.h>
struct tele
{
char name[20];
char tel[12];
char career[10];
char add[10];
};
void chaxun(struct tele su[300],int M)
{
char n[12];
int i;
printf("请输入要查询的姓名或电话:\n");
scanf("%s",n);
for(i=0;i<=M;i++)
{
if(strcmp(su[i].name,n) == 0||strcmp(su[i].tel,n) == 0)
{
printf("result:\t%s\t%s\t%s\t%s\n",su[i].name,su[i].tel,su[i].career,su[i].add);
break;
}
}
if(i==M+1)
printf("没有该联系人!\n");
}
int scan(struct tele su[],int i)
{
while(1)
{
i++;
printf("请输入第%d位联系人姓名 电话 职业 住址:\n",i);
scanf("%s",su[i].name);
if((su[i].name[0])=='#') //输入以#结束
break;
scanf(" %s %s %s",su[i].tel,su[i].career,su[i].add);
}
return i-1;
}
void print(struct tele su[],int n)
{
int j;
for(j=1;j<=n;j++)
printf("%d:\t%s\t%s\t%s\t%s\n",j,su[j].name,su[j].tel,su[j].career,su[j].add);
}
void change(struct tele su[],int M)
{
char n[12];
int i;
printf("请输入要修改成员的姓名或电话:\n");
scanf("%s",n);
for(i=0;i<=M;i++)
{
if(strcmp(su[i].name,n) == 0||strcmp(su[i].tel,n) == 0)
break;
}
if(i>M)
printf("没有该联系人!\n");
else
{
printf("请输入要修改成员的信息:\n");
scanf("%s %s %s %s%*c",su[i].name,su[i].tel,su[i].career,su[i].add);
printf("修改完成!\n");
}
}
int main()
{
int i=0,a,n;
struct tele su[300];
n=scan(su,i);
while(1)
{
system("cls"); //执行控制台命令cls,就是CMD下面的cls,功能是清屏,清除所有显示的信息
printf(" 请输入通讯录菜单选项(1--显示通讯录成员)(2--查询通讯录成员)(3--修改通讯录成员)(0--关闭):\n");
fflush(stdin); //用来清空输入缓存,以便不影响后面输入的东西
scanf("%d",&a);
if(a==0) break;
switch(a)
{
case 1:
printf("通讯录成员:\n");
print(su,n);
break;
case 2:chaxun(su,n);
break;
case 3:change(su,n);
break;
}
system("pause");
}
return 0;
}