6.38电话薄程序。
一、问题描述:
建立一个结构体数组,存放若干人的信息,包括:姓名,电话,职业,住址。要求这个管理小程序可以完成的任务:
(1)电话簿的内容显示。(2)按姓名、电话查询联系人信息。
(3)按输入的关键字修改联系人的信息。
(4)用指向该数组的指针完成上述功能。
(5)输出如下菜单,用switch语句实现根据用户输入的选择执行相应的操作。
1.显示所有联系人信息
2.查询联系人信息
3.修改联系人信息
二、代码实现:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
//定义结构体数组
struct address
{
char name[20];
char phone[20];
char work[20];
char place[20];
}a[100]={{"hj","110","police","yantai"},{"yj","120","doctor","beijing"}};
struct address *p;//定义指向结构体的指针
int n=2;
//输出联系人的列表
void List()
{
system("cls");//清屏函数
int i;
printf("****************************Address List***************************************\n\n");
printf("name phone work place \n\n");
for(p=a,i=0;i<n;i++,p++)
{
printf("%-20s%-15s%-20s%-20s\n",p->name,p->phone,p->work,p->place);
}
system("pause");
}
//查找联系人函数
void Research()
{
void DChange();
int g;
int i;
char t[20];
printf(" Please Input name or phone number:\n");
scanf("%s",t);
for(p=a, i=0;i<n;i++,p++)
{//strcmp函数做字符串对比
if ((strcmp(t,a[i].name)==0)||(strcmp(t,a[i].phone)==0))
{
printf("name phone work place \n\n");
printf("%-20s%-15s%-20s%-20s\n",p->name,p->phone,p->work,p->place);
p=&a[i];
printf("What do you want to do?\n");
printf("1:return 2:change 3:quit \n");
scanf("%d",&g);
switch(g)
{
case 1:return;break;
case 2:DChange();break;
case 3:exit(0);
}
}
if((i==n-1)&& ((strcmp(t,a[i].name)!=0)&&(strcmp(t,a[i].phone)!=0)))
{
printf("Don't hava this record\n");
}
}
system("pause");
}
void Change()
{
void Research();
printf("What persons information do you want to change?\n");
Research();
}
void DChange()
{
void ChangeName();
void ChangePhone();
void ChangeWork();
void ChangePlace();
printf("what do you want to change?\n");
printf("1:name 2:phone 3:work 4:place\n");
int k;
scanf("%d",&k);
switch(k)
{
case 1:ChangeName();break;
case 2:ChangePhone();break;
case 3:ChangeWork();break;
case 4:ChangePlace();break;
}
}
void ChangeName()
{
printf("Please Input name:\n");
scanf("%s",p->name);
printf("Change name successful\n");
return;
}
void ChangePhone()
{
printf("Please Input phone:\n");
scanf("%s",p->phone);
printf("Change phone successful\n");
return;
}
void ChangeWork()
{
printf("Please Input work:\n");
scanf("%s",p->work);
printf("Change work successful\n");
return;
}
void ChangePlace()
{
printf("Please Input place:\n");
scanf("%s",p->place);
printf("Change place successful\n");
return;
}
int main()
{
int i;
int s;
system("cls");
while(1)
{
system("cls");
printf("******************************MENU*********************************************\n\n");
printf(" 0:List record of the address\n");
printf(" 1:Research record\n");
printf(" 2:Change a record \n");
printf(" 3:Quit\n");
printf("*******************************************************************************\n\n");
do{
printf("\n Input your choice(0 ~ 3):");
scanf("%d",&s);
}while(s<0||s>3);
switch(s)
{
case 0:List();break;
case 1:Research();break;
case 2:Change();break;
case 3:exit(0);
}
}
return 0;
}