溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么用C語言實現(xiàn)簡易通訊錄

發(fā)布時間:2021-08-11 18:53:59 來源:億速云 閱讀:140 作者:chen 欄目:編程語言

本篇內(nèi)容介紹了“怎么用C語言實現(xiàn)簡易通訊錄”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!

功能描述:

1、存儲聯(lián)系人的相關(guān)信息,包括姓名、性別、電話號碼、備注2、可輸出通訊錄全部信息3、清空通訊錄的4、用戶交互界面5、插入新聯(lián)系人信息6、查找聯(lián)系人,包括“按姓名查找”和“按電話號查找”兩種7、刪除聯(lián)系人,包括“按姓名刪除”和“按電話號刪除”兩種8、按性別篩選聯(lián)系人信息

在本次通訊錄的編寫代碼中,涉及到了C高級和數(shù)據(jù)結(jié)構(gòu)的一些知識,包括指針,結(jié)構(gòu)體,數(shù)據(jù)結(jié)構(gòu)(鏈表)等。

代碼:

#include<stdio.h>#include<stdlib.h>#include<string.h>#define SIZE 20#define OK 1#define Error 0typedef struct Node //定義一個存儲數(shù)據(jù)的結(jié)構(gòu)體{             char name[SIZE]; char s; long int number; char remark[SIZE]; struct Node *next;}Node;typedef struct Node *LinkList; //定義了結(jié)構(gòu)體指針 /************創(chuàng)建一個空的結(jié)點,作為頭結(jié)點***************/LinkList CreateEmptyLinkList(){ LinkList p; p=(LinkList)malloc(sizeof(Node));  //手動申請一個堆區(qū)的地址,為結(jié)點提供空間 if(p==NULL) { printf("CreateEmptyLinkList Error\n"); exit(0); } p->next=NULL; return p;}  /************頭插法添加新的聯(lián)系人************************/ int CreateLinkList(LinkList Q){ LinkList p; char name[SIZE],s,remark[SIZE]; long int num; p=(LinkList)malloc(sizeof(Node)); if(p==NULL) { printf("CreateLinkList Error\n"); return Error; } printf("請輸入姓名:"); scanf("%s",name); strcpy(p->name,name); printf("請輸入性別(m/男,f/女):"); scanf("%s",&s); while(s!='m'&&s!='f') { printf("輸入錯誤\n"); printf("請輸入性別(m/男,f/女):"); scanf("%s",&s); } printf("請輸入電話號碼:"); scanf("%ld",&num); printf("請輸入備注:"); scanf("%s",remark); p->s=s; p->number=num; strcpy(p->remark,remark); p->next=Q->next; Q->next=p; return OK;}/*********************制作原始聯(lián)系人信息****************/int FirstCreateLinkList(LinkList Q){ LinkList x,y,z; x=(LinkList)malloc(sizeof(Node)); if(x==NULL) { printf("CreateLinkList Error\n"); return Error; } strcpy(x->name,"LiLi"); x->s='f'; x->number=10110; x->next=Q->next; strcpy(x->remark,"LiLi"); Q->next=x; y=(LinkList)malloc(sizeof(Node)); if(y==NULL) { printf("CreateLinkList Error\n"); return Error; } strcpy(y->name,"NaNa"); y->s='f'; y->number=11100; strcpy(y->remark,"NaNa"); y->next=Q->next; Q->next=y; z=(LinkList)malloc(sizeof(Node)); if(z==NULL) { printf("CreateLinkList Error\n"); return Error; } strcpy(z->name,"LiuLiu"); z->s='m'; z->number=10000; strcpy(z->remark,"LiuLiu"); z->next=Q->next; Q->next=z; return OK;}/*****************按姓名刪除一個聯(lián)系人****************************/ int DeleteNameLinkList(LinkList L,char name1[SIZE]){ LinkList p,q; p=L; while(p->next && strcmp(p->next->name,name1)) { p=p->next; } if(!p->next) { printf("該通訊錄沒有要刪除的聯(lián)系人,刪除失??!\n"); return Error; } else { q=p->next; printf("已刪除聯(lián)系人:\n"); printf("姓名:%s\n",q->name); if(q->s=='m') printf("性別:男\(zhòng)n"); else printf("性別:女\n"); printf("電話號碼:%ld\n",q->number); printf("備注:%s\n",q->remark);   p->next=q->next; free(q); return OK; }}/*****************按號碼刪除一個聯(lián)系人****************************/ int DeleteNumLinkList(LinkList L,long int j){ LinkList p,q; p=L; while((p->next->number!=j)&&((p->next)!=NULL)) { p=p->next; if((p->next)==NULL) {  printf("該通訊錄沒有要刪除的聯(lián)系人,刪除失??!\n");  return Error; } } q=p->next; printf("已刪除聯(lián)系人:\n"); printf("姓名:%s\n",q->name); if(q->s=='m') printf("性別:男\(zhòng)n"); else printf("性別:女\n"); printf("電話號碼:%ld\n",q->number); printf("備注:%s\n",q->remark);  p->next=q->next; free(q); return OK;} /******************按姓名查找一個聯(lián)系人****************************/int FindNameLinkList(LinkList L,char name2[SIZE]){ LinkList p,q; p=L; while(strcmp(p->next->name,name2)!=0&&(p->next!=NULL)) { p=p->next; if(p->next==NULL) {  printf("該通訊錄沒有您要找的人,查找失敗\n");  return Error; } } q=p->next; printf("找到記錄:\n"); printf("姓名:%s\n",q->name); if(q->s=='m') printf("性別:男\(zhòng)n"); else printf("性別:女\n"); printf("電話號碼:%ld\n",q->number); printf("備注:%s\n",q->remark); printf("*********************************\n"); return OK;}/******************按號碼查找一個聯(lián)系人****************************/int FindNumLinkList(LinkList L,long int j){ LinkList p,q; p=L; while((p->next->number!=j)&&((p->next)!=NULL)) { p=p->next; if((p->next)==NULL) {  printf("該通訊錄沒有您要找的人,查找失敗\n");  return Error; } } q=p->next; printf("找到記錄:\n"); printf("姓名:%s\n",q->name); if(q->s=='m') printf("性別:男\(zhòng)n"); else printf("性別:女\n"); printf("電話號碼:%ld\n",q->number); printf("備注:%s\n",q->remark); printf("*********************************\n"); return OK;}/******************查找一個聯(lián)系人****************************/int FindLinkList(LinkList L){ LinkList head = L;    printf("*********************************\n"); printf("請輸入查找聯(lián)系人的方式:\n"); printf("1:按姓名\n"); printf("2:按號碼\n"); printf("0:返回\n"); printf("*********************************\n"); printf("請選擇:"); int k=3;  //確保下面while循環(huán)運行 while(k) { scanf("%d",&k); char Delname1[SIZE]; long int N; if(k>2||k<0) {  printf("輸入錯誤,請重新輸入:");  scanf("%d",&k);  while(getchar()!='\n')  printf("\n"); } switch(k) {  case 1:  printf("請輸入姓名:");  scanf("%s",Delname1);  FindNameLinkList(head,Delname1);  k=0;  break;  case 2:  printf("請輸入號碼:");  scanf("%ld",&N);  FindNumLinkList(head,N);  k=0;  break; }  }}/********************清空聯(lián)系人信息*************************/int ClearLinkList(LinkList L){ LinkList p,q; p=L->next; while(p) { q=p->next; free(p); p=q; } L->next=NULL; printf("清空所有聯(lián)系人成功\n"); return OK;} /*********************篩選所有男性聯(lián)系人**********************/int ScreenMaleLinkList(LinkList L){ LinkList p; p=L->next; int i=0; while(p) { if(p->s=='m') {  printf("姓名:%s\n",p->name);  if(p->s=='m')  printf("性別:男\(zhòng)n");  else  printf("性別:女\n");  printf("電話號碼:%ld\n",p->number);  printf("備注:%s\n",p->remark);   printf("*********************************\n"); } p=p->next; i++; } if(i==0&&!p) { printf("無男性聯(lián)系人\n"); } return OK;}/*********************篩選所女性聯(lián)系人**********************/int ScreenFemaleLinkList(LinkList L){ LinkList p; p=L->next; int i=0; while(p) { if(p->s=='f') {  printf("姓名:%s\n",p->name);  if(p->s=='m')  printf("性別:男\(zhòng)n");  else  printf("性別:女\n");  printf("電話號碼:%ld\n",p->number);  printf("備注:%s\n",p->remark);   printf("*********************************\n"); } p=p->next; i++; } if(i==0&&!p) { printf("無女性聯(lián)系人\n"); } return OK;}/************************通訊錄功能界面*****************/void FunctionalInterface(){ system ("clear"); printf("*********************************\n"); printf("歡迎使用Linux通訊錄!\n"); printf("*********************************\n"); printf("1:輸出全部聯(lián)系人信息\n"); printf("2:插入新的聯(lián)系人\n"); printf("3:刪除一個聯(lián)系人\n"); printf("4:查找某個聯(lián)系人\n"); printf("5:清空全部聯(lián)系人信息\n"); printf("6:篩選全部男性聯(lián)系人信息\n"); printf("7:篩選全部女性聯(lián)系人信息\n"); printf("0:退出\n"); printf("*********************************\n");}/*****************刪除一個聯(lián)系人****************************/ int DeleteLinkList(LinkList L){ LinkList head = L; printf("*********************************\n"); printf("請輸入刪除聯(lián)系人的方式:\n"); printf("1:按姓名\n"); printf("2:按號碼\n"); printf("0:返回\n"); printf("*********************************\n"); printf("請選擇:"); int i=3; while(i) { scanf("%d",&i); char Delname[SIZE]; long int j; if(i>2||i<0) {  printf("輸入錯誤,請重新輸入:");  scanf("%d",&i);  while(getchar()!='\n')  printf("\n"); } switch(i) {  case 1:  printf("請輸入姓名:");  scanf("%s",Delname);  DeleteNameLinkList(head,Delname);  i=0;  break;  case 2:  printf("請輸入號碼:");  scanf("%ld",&j);  DeleteNumLinkList(head,j);  i=0;  break; }  } }/*******************遍歷打印整個鏈表**********************/int PrintfLinkList(LinkList L){ LinkList p,q; q=p=L->next; int i=0; while(q) { i++; q=q->next; if(i==0&&!p) { printf("無聯(lián)系人\n"); } } printf("共有%d個聯(lián)系人\n",i); while(p) { printf("*********************************\n"); printf("姓名:%s\n",p->name); if(p->s=='m')  printf("性別:男\(zhòng)n"); else  printf("性別:女\n"); printf("電話號碼:%ld\n",p->number); printf("備注:%s\n",p->remark);  p=p->next; } printf("*********************************\n"); return OK; } int main(){ int a; LinkList head; head=CreateEmptyLinkList(); FirstCreateLinkList(head); FunctionalInterface(); while(a) { printf("請輸入您要選擇的功能:"); scanf("%d",&a); if(a>7||a<0) {  printf("輸入錯誤,請重新輸入:");  scanf("%d",&a);  while(getchar()!='\n')  printf("\n"); } switch(a) {  case 1:  PrintfLinkList(head);  break;  case 2:  CreateLinkList(head);  break;  case 3:  DeleteLinkList(head);  break;  case 4:  FindLinkList(head);  break;  case 5:  ClearLinkList(head);  break;  case 6:  ScreenMaleLinkList(head);  break;  case 7:  ScreenFemaleLinkList(head);  break;  } if(a!=0) {  printf("請按回車鍵繼續(xù):");  getchar();  if(getchar()=='\n')  FunctionalInterface(); } } printf("歡迎再次使用\n"); return 0;}

“怎么用C語言實現(xiàn)簡易通訊錄”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI