项目实践:电话薄程序

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;

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值