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);
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章