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

首頁 > 編程 > C++ > 正文

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

2020-05-23 13:32:39
字體:
來源:轉載
供稿:網友

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

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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
www.日本久久久久com.| 国产精品久在线观看| 欧美国产精品日韩| 亚洲国产日韩精品在线| 精品在线观看国产| 精品久久在线播放| 日韩经典中文字幕在线观看| 国产精品99久久久久久白浆小说| 欧美xxxx做受欧美.88| 81精品国产乱码久久久久久| 亚洲精品在线看| 亚洲福利在线播放| 日韩av色在线| 午夜精品在线观看| 亚洲福利影片在线| 日本高清久久天堂| 久热精品视频在线观看| 精品国产91乱高清在线观看| 亚洲色在线视频| 欧美亚洲激情在线| 久久久av免费| 久久久噜噜噜久久中文字免| 在线观看91久久久久久| 亚洲视频999| 亚洲人成在线观看| 亚洲qvod图片区电影| 另类天堂视频在线观看| 国产精品久久久久久久久粉嫩av| 26uuu另类亚洲欧美日本老年| 懂色aⅴ精品一区二区三区蜜月| 亚洲影院色无极综合| 91精品国产综合久久久久久蜜臀| 日韩极品精品视频免费观看| 26uuu亚洲国产精品| 国产精品www| 国产精品吴梦梦| 精品久久香蕉国产线看观看亚洲| 成人有码视频在线播放| 午夜精品美女自拍福到在线| 在线精品播放av| 亚洲人成人99网站| 日韩女在线观看| 91精品国产综合久久香蕉最新版| 欧美日韩人人澡狠狠躁视频| 欧美激情一区二区三级高清视频| 51午夜精品视频| 欧美黑人巨大xxx极品| 日韩最新在线视频| 久久精品国产99国产精品澳门| 亚洲精品乱码久久久久久金桔影视| 91在线免费网站| 亚洲一区二区福利| 亚洲一区二区国产| 成人网页在线免费观看| 欧美视频专区一二在线观看| 亚洲男人天堂久| 亚洲无限乱码一二三四麻| 91久久精品视频| 国产精品扒开腿做爽爽爽的视频| 国产精品mp4| 欧美日韩日本国产| 国模吧一区二区三区| 95av在线视频| 亚洲美女av在线播放| 国精产品一区一区三区有限在线| 97香蕉久久夜色精品国产| 91久久在线播放| 亚洲免费视频网站| 91在线观看免费高清完整版在线观看| 福利精品视频在线| 精品一区二区电影| 欧美在线精品免播放器视频| 韩国19禁主播vip福利视频| 午夜精品视频网站| 亚洲伊人久久大香线蕉av| 亚洲永久在线观看| 超碰日本道色综合久久综合| 成人免费直播live| 日韩av一卡二卡| 欧美另类在线播放| 国产精品偷伦视频免费观看国产| 日韩亚洲欧美中文高清在线| 一区二区三区国产在线观看| 日本欧美爱爱爱| 黄色一区二区三区| 国产精品永久在线| 欧美大片va欧美在线播放| 国产欧美一区二区三区四区| 亚洲精品日韩丝袜精品| 亚洲国产精品中文| 原创国产精品91| 国产拍精品一二三| 欧美成人午夜激情视频| 色婷婷综合成人av| 欧美在线观看网址综合| 中文欧美在线视频| 亚洲成av人影院在线观看| 538国产精品一区二区在线| 久久久午夜视频| 91嫩草在线视频| 欧美日韩国产精品一区二区三区四区| 粉嫩av一区二区三区免费野| 亚洲一区二区三区视频| 久久久人成影片一区二区三区观看| 久久久久久久久久久久久久久久久久av| 久久中文字幕在线| 国产精品久久网| 亚洲一区二区日本| 国产精品女人久久久久久| 最近2019年好看中文字幕视频| 91视频国产精品| 日韩中文字幕视频在线| 尤物yw午夜国产精品视频| 美女精品视频一区| 国产亚洲人成a一在线v站| 亚洲大胆人体在线| 亚洲精品电影在线| 日韩国产高清污视频在线观看| 亚洲欧美中文日韩v在线观看| 国产精品一区二区女厕厕| 性金发美女69hd大尺寸| 国产视频精品自拍| 538国产精品一区二区在线| 久久久国产精彩视频美女艺术照福利| 国产精品www网站| 精品国产乱码久久久久久虫虫漫画| 日韩中文在线中文网三级| 中文字幕在线成人| 高清欧美一区二区三区| 日韩欧美在线中文字幕| 亚洲四色影视在线观看| 日韩欧美aⅴ综合网站发布| 欧美电影免费观看高清完整| 亚洲精品v欧美精品v日韩精品| 久久久之久亚州精品露出| 亚洲毛片在线观看.| 亚洲美女免费精品视频在线观看| 中文字幕日韩精品在线| 欧美大胆a视频| 欧美电影免费观看电视剧大全| 国产精品三级在线| www.欧美免费| 91在线播放国产| 国产福利精品在线| 国产精品高清在线| 久久成人18免费网站| 国产精品丝袜白浆摸在线| 成人精品一区二区三区电影免费| 久久久久免费精品国产| 精品国产一区二区三区久久| 国产精品丝袜视频| 日韩欧美成人区| 国产成人精品电影久久久| 亚洲va码欧洲m码| 精品无码久久久久久国产| 亚洲精品美女视频| 亚洲人成77777在线观看网| 国产成人免费91av在线| 国产精品久久久久久中文字| 亚洲视频777| 久久成人亚洲精品| 久久久久久国产精品| 国产日本欧美在线观看| 日韩欧美在线视频|