亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C > 正文

C語言通訊錄管理系統完整版

2020-01-26 13:45:55
字體:
來源:轉載
供稿:網友

C語言實現了通訊錄的錄入信息、保存信息、插入、刪除、排序、查找、單個顯示等功能。。

完整的代碼如下:

#include <stdio.h> #include <malloc.h> //得到指向大小為Size的內存區域的首字節的指針// #include <string.h> #include <stdlib.h> //標準庫函數// #define NULL 0 #define LEN sizeof(struct address_list) //計算字節// int n; struct address_list {  char name[30];  //名字  char work[30];  //職業  char handset[30]; //手機  char email[30]; //電子郵件  char address[30]; //通訊地址  struct address_list *next; }; struct address_list *shifang(struct address_list *head); // 釋放內存函數聲明 //創建函數,不帶頭結點的鏈表 struct address_list *creat(void)   {  struct address_list *head,*p1,*p2;  char name[20];  n=0;  p1=(struct address_list *)malloc(LEN);  p2=p1; //強制內存轉換  printf("請輸入通訊錄的內容!/n姓名輸入為0時表示創建完畢!/n");  printf("請輸入姓名:");  gets(name);  if(strcmp(name,"0")!=0)  {   strcpy(p1->name,name);   printf("請輸入職業:");  gets(p1->work);   printf("請輸入手機:");  gets(p1->handset);   printf("請輸入電子郵件:"); gets(p1->email);   printf("請輸入通訊地址:"); gets(p1->address);   head=NULL;   while(1)   {    n=n+1; //記錄通訊錄人數個數    if(n==1)     head=p1;    else     p2->next=p1;    p2=p1;    printf("請輸入姓名:");    gets(name);    if(strcmp(name,"0")==0)    {     break;    }    else    {     p1=(struct address_list *)malloc(LEN);     strcpy(p1->name,name);     printf("請輸入職業:"); gets(p1->work);     printf("請輸入手機:"); gets(p1->handset);     printf("請輸入電子郵件:"); gets(p1->email);     printf("請輸入通訊地址:"); gets(p1->address);    }   }   p2->next=NULL;   return head;  }  else   return 0; } //輸出函數 void print(struct address_list *head)  {  struct address_list *p;  if(head!=NULL)  {   p=head;   printf("本通訊錄現在共有%d人:/n",n);   printf("---姓名-------職業--------手機-------Email-------通訊地址/n");   printf("==================================/n");   do   {    printf("== %s",p->name); printf("  ");    printf("%s",p->work); printf("  ");    printf("%s",p->handset); printf("  ");    printf("%s",p->email); printf("  ");    printf("%s",p->address); printf("  /n");    p=p->next;   }while(p!=NULL);   printf("==================================/n");  }  else   printf("通訊錄為空,無法輸出!/n"); } //增加函數 struct address_list *insert(struct address_list *head) {  struct address_list *p0,*p1,*p2;  char name[20];  p1=head;  printf("請輸入增加的內容:/n");  printf("請輸入姓名:"); gets(name);  if(strcmp(name,"0")==0)  {   printf("姓名不能為0,增加失敗!/n");   return(head);  }  else  {   p0=(struct address_list *)malloc(LEN);   strcpy(p0->name,name);   printf("請輸入職業:"); gets(p0->work);   printf("請輸入手機:"); gets(p0->handset);   printf("請輸入電子郵件:"); gets(p0->email);   printf("請輸入通訊地址:"); gets(p0->address);   n=n+1;   if(head==NULL)   {    head=p0;    p0->next=NULL;    return head;   }   else   {    while(strcmp(p0->name,p1->name)>0&&(p1->next!=NULL))    {     p2=p1;     p1=p1->next;    }    if(strcmp(p0->name,p1->name)<0 || strcmp(p0->name,p1->name)==0)    {     if(head==p1)     {      head=p0;     }     else     {      p2->next=p0;     }     p0->next=p1;    }    else    {     p1->next=p0;     p0->next=NULL;    }    return head;   }  } } struct address_list* delete_txl(struct address_list *head) {  struct address_list *p,*q;  char name[30];  if(head==NULL)  {   printf("通訊錄為空,無法顯示!/n");   return head;  }  p=head;  printf("請輸入需要刪除的人的姓名:");  gets(name);  if(strcmp(head->name,name)==0)  {   head=head->next;   free(p);   printf("刪除操作成功!/n");   return head;  }  else  {   q=head,p=head->next;   while(p!=NULL)   {    if(strcmp(p->name,name)==0)    {     q->next=p->next;     free(p);     printf("刪除操作成功!/n");     return head;    }    p=p->next;    q=q->next;   }  } } //顯示函數 struct address_list *display(struct address_list *head) {  struct address_list *p1,*p2;  char name[30];  int m;  if(head==NULL)  {   printf("通訊錄為空,無法顯示!/n");   return head;  }  p1=head;  m=0;  printf("請輸入需要顯示人的姓名:");  gets(name);  while(p1!=NULL)  {   while((strcmp(p1->name,name))!=0 && p1->next!=NULL)   {    p2=p1;    p1=p1->next;   }   if(strcmp(p1->name,name)==0)   {    m++;    printf("%s的通訊內容如下:/n",name);    printf("---姓名--------職業--------手機-------Email------通訊地址/n");    printf("==================================/n");    printf("== %s",p1->name);printf("  ");    printf("%s",p1->work);printf("  ");    printf("%s",p1->handset);printf("  ");    printf("%s",p1->email);printf("  ");    printf("%s",p1->address); printf("  /n");    printf("==================================/n");   }   p1=p1->next;  }  if(m==0)  {   printf("此人未在本通訊錄中!/n");  }  return(head); }  //排序函數 struct address_list *paixu(struct address_list *head) {  struct address_list *p1,*p2;  int i,j;  struct address_list1  {   char name[30];   char work[30];   char handset[30];   char email[30];   char address[30];  };  struct address_list1 px[200];  struct address_list1 temp;  if(head==NULL)  {   printf("通訊錄為空,無法排序!/n");   return(head);  }  p1=head;  for(i=0;i<n,p1!=NULL;i++)  {   strcpy(px[i].name,p1->name);   strcpy(px[i].work,p1->work);   strcpy(px[i].handset,p1->handset);   strcpy(px[i].email,p1->email);   strcpy(px[i].address,p1->address);   p2=p1;   p1=p1->next;  }  head=shifang(head);  for(j=0;j<n-1;j++)  {   for(i=j+1;i<n;i++)   {    if(strcmp(px[i].name,px[j].name)<0)    {     temp=px[i];     px[i]=px[j];     px[j]=temp;    }   }  }  p1=(struct address_list *)malloc(LEN);  p2=p1;  strcpy(p1->name,px[0].name);  strcpy(p1->work,px[0].work);  strcpy(p1->handset,px[0].handset);  strcpy(p1->email,px[0].email);  strcpy(p1->address,px[0].address);   head=p1;  for(i=1;i<n;i++)  {   p1=(struct address_list *)malloc(LEN);   strcpy(p1->name,px[i].name);   strcpy(p1->work,px[i].work);   strcpy(p1->handset,px[i].handset);   strcpy(p1->email,px[i].email);   strcpy(p1->address,px[i].address);   p2->next=p1;   p2=p1;  }  p2->next=NULL;  printf("按姓名排序后為:/n");  print(head);  return(head); } //姓名查找函數 struct address_list *search(struct address_list *head) {  struct address_list *p1,*p2;  int m;  char name[30];  if(head==NULL)  {   printf("通訊錄為空,無法分類查找!/n");   return(head);  }  p1=head;  printf("********************/n");  printf("** 請輸入需要查找的姓名 **/n");  printf("********************/n");  m=0;  gets(name);  while(p1!=NULL)  {   while(strcmp(p1->name,name)!=0&&p1->next!=NULL)   {    p2=p1;    p1=p1->next;   }   if(strcmp(p1->name,name)==0)   {    m++;    printf("你查找的內容是:/n");    printf("+++++++++++++++++++++++++++++++++++/n");    printf("++ %s  %s  %s  %s  %s/n",p1->name,p1->work,p1->handset,p1->email,p1->address);    printf("+++++++++++++++++++++++++++++++++++/n");   }   p1=p1->next;    if(m==0)   {    printf("此人未在本通訊錄中!/n");   }   break;  }   return(head); }  //釋放內存函數 struct address_list *shifang(struct address_list *head) {  struct address_list *p1;  while(head!=NULL)  {   p1=head;   head=head->next;   free(p1);  }  return(head); }  //文件寫入函數 void save(struct address_list *head) {  FILE *fp;  struct address_list *p1;  char tong[30];  if(head==NULL)  {   printf("通訊錄為空,無法存儲!/n");   return;  }  printf("請輸入保存后的文件名:");  gets(tong);  fp=fopen("(tong).txt","w");  if(fp==NULL)  {   printf("cannot open file/n");   return;  }  p1=head;  fprintf(fp,"姓名 職業  手機  Email  通訊地址/n");  for(;p1!=NULL;)  {   fprintf(fp,"%s  %s  %s  %s  %s/n",p1->name,p1->work,p1->handset,p1->email,p1->address);   p1=p1->next;  }  printf("保存完畢!/n");  fclose(fp); }  //文件讀出函數 struct address_list *load(struct address_list *head) {  FILE *fp;  char tong[30];  struct address_list *p1,*p2;  printf("請輸入要輸出的文件名:");  gets(tong);  fp=fopen("(tong).txt","r");  if(fp==NULL)  {   printf("此通訊錄名不存在,無法輸出!/n");   return(head);  }  else  {   head=shifang(head);  }  p1=(struct address_list *)malloc(LEN);  fscanf(fp,"%s%s%s%s%s",&p1->name,&p1->work,&p1->handset,&p1->email,&p1->address);  if(feof(fp)!=0)  {   printf("文件為空,無法打開!/n");   return(head);  }  else  {   rewind(fp);   p2=p1;   head=p1;   n=0;   while(feof(fp)==0)   {    fscanf(fp,"%s%s%s%s%s",&p1->name,&p1->work,&p1->handset,&p1->email,&p1->address);    if(feof(fp)!=0)     break;    p2->next=p1;    p2=p1;    p1=(struct address_list *)malloc(LEN);    n=n+1;   }   p2->next=NULL;   p1=head;   head=head->next;   n=n-1;   free(p1);   print(head);   printf("打開完畢!/n");   return(head);  }  fclose(fp); }  //綜合操作函數 struct address_list *menu(struct address_list *head) {  char num[10];  while(1)  {   printf("*********************/n");   printf("*** 1 姓名查找  ****/n");   printf("*** 2 單個顯示  ****/n");   printf("*** 3 增加   ****/n");   printf("*** 4 退出   ****/n");   printf("*********************/n");   printf("請輸入您選擇的操作:");   gets(num);   switch(*num)   {   case '1':    {     head=search(head);       //姓名查找     print(head);    }    break;   case '2':    {     head=display(head);       //顯示    }    break;   case '3':    {     head=insert(head);       //增加     print(head);    }    break;   case '4':    return head;   default:    printf("操作錯誤,此項不存在!/n");    break;   }   if(strcmp(num,"6")==0)    break;  }  return head; } //主函數 void main() {  struct address_list *head=NULL;  char num[10];  printf("*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/n");  printf("*=*    程序說明    *=*/n");  printf("*=* 請及時保存創建完畢的通訊錄內容! *=*/n");  printf("*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/n");  while(1)  {   printf("************************/n");   printf("***  1 創建通訊錄  ****/n");   printf("***  2 按名字排序  ****/n");   printf("***  3 綜合操作  ****/n");   printf("***  4 保存   ****/n");   printf("***  5 打開   ****/n");   printf("***  6 刪除   ****/n");   printf("***  7 退出   ****/n");   printf("************************/n");   printf("請輸入您選擇的操作:");   gets(num);   switch(*num)   {   case '1':    {     if(head==NULL)     {      head=creat();        //創建      print(head);     }     else     {      head=shifang(head);      head=creat();        //重新創建      print(head);     }    }    break;   case '2':    {     head=paixu(head);        //排序    }    break;   case '3':    {     head=menu(head);        //綜合操作    }    break;   case '4':    {     save(head);         //文件保存     print(head);    }    break;   case '5':    {     head=load(head);        //文件輸出    }    break;   case '6':    {     head=delete_txl(head);       //刪除     print(head);    }    break;   case '7':    head=shifang(head);    break;   default:    printf("操作錯誤,此項不存在!/n");    break;   }   if(strcmp(num,"7")==0)    break;  } }

 以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久精品国产2020观看福利| 亚洲男人天堂2024| 亚洲欧洲自拍偷拍| 日韩综合中文字幕| 久久亚洲欧美日韩精品专区| 日韩精品中文字幕有码专区| 欧美日韩免费看| 在线观看国产欧美| 久久国产视频网站| 亚洲免费电影一区| 国产女人精品视频| 精品少妇v888av| 狠狠躁18三区二区一区| 97在线视频国产| 日韩精品免费电影| 亚洲第一免费播放区| 亚洲国产精品99| 精品久久久久久中文字幕一区奶水| 中文字幕日韩综合av| 久久精品国产亚洲精品2020| 欧美国产日韩中文字幕在线| 2019av中文字幕| 亚洲新声在线观看| 久久精品这里热有精品| 国产精品中文字幕在线观看| 亚洲国产精品va在线看黑人动漫| 日韩免费看的电影电视剧大全| 欧美黑人国产人伦爽爽爽| 不用播放器成人网| 欧美精品videosex极品1| 日本国产精品视频| 亚洲码在线观看| 午夜精品久久久久久久99热| 欧美激情视频免费观看| 尤物yw午夜国产精品视频明星| 国产亚洲美女精品久久久| 亚洲欧美中文在线视频| 国产精品成人免费电影| 日韩av最新在线观看| 国产精品视频999| 久久精品福利视频| 青青青国产精品一区二区| 亚洲第一区第二区| 国产精品国产亚洲伊人久久| 日韩不卡在线观看| 久久夜色撩人精品| 国产精品美女午夜av| 日本免费久久高清视频| 欧美性极品xxxx娇小| 91久久在线观看| 日日狠狠久久偷偷四色综合免费| 久久人体大胆视频| 国产亚洲成av人片在线观看桃| 狠狠躁夜夜躁人人爽天天天天97| 中文字幕欧美亚洲| 精品国内产的精品视频在线观看| www.美女亚洲精品| 92看片淫黄大片看国产片| 久久伊人免费视频| 欧美性少妇18aaaa视频| 久久精品国产99国产精品澳门| 日韩av在线一区| 国产91精品久久久久| 青草青草久热精品视频在线观看| 91免费视频国产| 日韩欧美精品网站| 91在线免费看网站| 精品视频—区二区三区免费| 国产热re99久久6国产精品| 欧美高清在线播放| 亚洲va欧美va国产综合剧情| 久久久久久午夜| 亚洲大胆人体视频| 成人午夜在线影院| 久久精品国产成人| 欧美性猛交xxxx免费看久久久| 国产97人人超碰caoprom| 国产精品高潮在线| 久久69精品久久久久久久电影好| 97香蕉久久夜色精品国产| 欧美精品在线免费| 综合欧美国产视频二区| 亚洲第一视频在线观看| 色一情一乱一区二区| 国产精品手机播放| 欧美性猛交xxxx免费看久久久| 中文字幕在线观看日韩| 日韩高清a**址| 欧美成人免费视频| 国产精品日韩av| 国产精品国产自产拍高清av水多| 中文字幕久热精品视频在线| 国产精品久久久久久av下载红粉| 国产激情综合五月久久| 亚洲国产天堂久久综合| 日韩国产欧美精品一区二区三区| 97久久精品国产| 91九色视频导航| 欧美激情视频一区| 欧美精品在线播放| 国产精品老女人视频| 在线观看不卡av| 欧美亚洲视频在线看网址| 亚洲免费电影一区| 欧美亚洲午夜视频在线观看| 国产美女91呻吟求| 最近2019年中文视频免费在线观看| 欧美视频免费在线| www.日韩.com| 亚洲福利在线播放| 国产精品99久久久久久久久| 97精品久久久中文字幕免费| 成人av资源在线播放| 久久亚洲综合国产精品99麻豆精品福利| 久久99热精品这里久久精品| 欧美成人剧情片在线观看| 日韩成人在线观看| 欧美一区二区三区……| 亚洲成人av片在线观看| 97香蕉超级碰碰久久免费的优势| 78m国产成人精品视频| 成人免费视频网| 亚洲欧美激情一区| 热久久免费国产视频| 国语自产精品视频在线看一大j8| 久久av在线看| 亚洲欧美国产日韩天堂区| 国产成人自拍视频在线观看| 97在线精品国自产拍中文| 精品福利樱桃av导航| 欧美性黄网官网| 精品国产乱码久久久久久婷婷| 国内精品一区二区三区四区| 亚洲图片欧洲图片av| 亚洲精品98久久久久久中文字幕| 欧美一区二粉嫩精品国产一线天| 欧美日韩亚洲一区二区三区| 亚洲精品mp4| 久久影视免费观看| 欧美国产日韩二区| 国产欧美日韩精品丝袜高跟鞋| 国产精品久久久久9999| 97精品国产97久久久久久春色| 亚洲最大福利视频| 久久九九免费视频| 一区二区三区www| 精品国模在线视频| 欧美二区乱c黑人| 久久久久久12| 国产区精品在线观看| 一区二区日韩精品| 茄子视频成人在线| 欧美在线日韩在线| 日韩av不卡在线| 亚洲区在线播放| 国产精品电影观看| 国产91在线视频| 亚洲日本中文字幕| 日韩欧美国产免费播放| 国产激情999| 久久久久久久久久国产精品| 色综合视频一区中文字幕| 国自产精品手机在线观看视频| 亚洲一区二区少妇|