C项目-通讯录-2007-12

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define null 0
#define TYPE struct telbook

void menue();
void add();
void list();
void over();
void findByname();
void findBytel();
void updateByname();
void updateBytel();
void detelByname();
void detelBytel();

struct telbook
{
  char name[50];
  int tel;
  struct telbook *next;
}*head,*pf;
int count=0;

 

void menue()
{
    int flag; 
    printf("***************************************/n");
    printf("***  请选择:                       ***/n");
    printf("***  1:添加一个新联系人            ***/n");
    printf("***  2:列出所有联系人              ***/n");
    printf("***  3:根据姓名查找某人信息        ***/n");
    printf("***  4:根据电话号码查找某人信息    ***/n");
    printf("***  5:根据姓名修改某人信息        ***/n");
    printf("***  6:根据电话号码修改某人信息    ***/n");
    printf("***  7:根据姓名删除某人信息        ***/n");
    printf("***  8:根据电话号码删除某人信息    ***/n");
 printf("***  0:退出系统                    ***/n");
 printf("***************************************/n");
    printf("/n/n/n/n");


    scanf("%d",&flag);

 while(flag!=1&&flag!=0&&flag!=2&&flag!=3&&flag!=4&&flag!=5&&flag!=6&&flag!=7&&flag!=8)
 {
  printf("请选择正确的操作:/n");

  scanf("%d",&flag);
 }
 switch(flag)
 {
   case 1 :add();menue();break;
   case 2 :list();menue();break;
   case 3 :findByname();menue();break;
   case 4 :findBytel();menue();break;
   case 5 :updateByname();menue();break;
   case 6 :updateBytel();menue();break;
   case 7 :detelByname();menue();break;
   case 8 :detelBytel();menue();break;
   case 0 :over();
   default:;
 }

}

void findBytel()
{
    TYPE *p=head;
 int  tel;
 int flag=0;
    printf("请输入电话号码:/n");
    scanf("%d",&tel);
 printf("姓名/t电话号码/t:/n");
    while(p)
 {
   if(p->tel==tel)
   {
     printf("%s/t",p->name);
     printf("%d/t/n",p->tel);
  flag=1;
   }
   p=p->next;
 }
   if(flag==0)
     printf("没有你要查找的号码的人的信息!/n");
}

void findByname()
{
 TYPE *p=head;
 char name[20];
 int flag=0;
    printf("请输入姓名:/n");
    scanf("%s",name);
 printf("姓名/t电话号码/t:/n");
    while(p)
 {
   if(strcmp(name,p->name)==0)
   {
     printf("%s/t",p->name);
     printf("%d/t/n",p->tel);
  flag=1;
   }
   p=p->next;
 }
   if(flag==0)
     printf("没有你要查找的人的信息!/n");
}

void main()
{
   
  menue();
}

void add()
{
 TYPE *pb;
 pb=(struct telbook *)malloc(sizeof(struct telbook));
 while(pb==null)
 {
  printf("申请空间失败!/n");
     pb=(struct telbook *)malloc(sizeof(struct telbook));
 }
 printf("请输入联系人的姓名:/n");
 scanf("%s",&pb->name);
 printf("请输入联系人的电话号码:/n");
 scanf("%d",&pb->tel);
 pb->next=null;
 if(count==0)
 {
    pf=head=pb;
    count++;
 }
 else
 {
   pf->next=pb;
   pf=pb;
   count++;
 }
 printf("添加信息成功:/n");
 
}


void list()
{
  struct telbook *p=head;

  printf("姓名/t电话号码/t:/n");
  while(p!=null)
  {
    printf("%s/t",p->name);
 printf("%d/t",p->tel);
 printf("/n");
 p=p->next;
  }
}
void updateByname()
{
   TYPE *p=head;
   char name[20];
   int flag=0;
   int tel;
   printf("请输入姓名:/n");
   scanf("%s",name);
 
   while(p)
   {
    if(strcmp(p->name,name)==0)
    {
      printf("输入新号码:/n");
      scanf("%d",&tel);
      p->tel=tel;
      flag=9;
   printf("修改成功!/n");
     }
      p=p->next;
     }
   if(flag==0)
      printf("没有 查询的人/n");
}
     
void updateBytel()
{
   TYPE *p=head;
   char name[20];
   int flag=0;
   int tel;
   printf("请输入电话号码:/n");
   scanf("%d",&tel);
   while(p)
{
   if(p->tel==tel)
   {
   printf("输入新姓名:/n");
      scanf("%s",name);
      strcpy(p->name,name);
   flag=9;
      printf("修改成功!/n");
      }
      p=p->next;
      }
      if(flag==0)
      printf("没有 查询的人/n");
      }


void detelByname()
  {
     TYPE *p,*q;
     char name[20];
     int flag;
  q=p=head;
     flag=0;
     printf("请输入姓名:/n");
     scanf("%s",name);
     while(p)
     {
        if(strcmp(p->name,name)==0)
           q->next=p->next;
          q=p;
          p=p->next;
          free(p);
    flag=9;
    printf("删除成功/n");

  }
    if(flag==0)printf("没有要删除的信息/n");
}

void detelBytel()
  {
     TYPE *p,*q;
     int flag=0;
     int tel;
  q=p=head;
     printf("请输入电话号码:/n");
     scanf("%d",&tel);
     while(p)
     {
        if(p->tel==tel)
  {
            q->next=p->next;
            q=p;
            p=p->next;
   free(p);
   flag=1;
   printf("删除成功/n");
           
  }

  }
    if(flag==0)
  printf("没有要删除的人/n");
}


void over()
{
  TYPE *pb,*p;
  pb=p=head;
  while(pb)
  {
    p=pb;
 pb=pb->next;
 free(p);
  }
  exit(1);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值