這篇文章主要介紹了C語(yǔ)言如何實(shí)現(xiàn)電話簿管理系統(tǒng),具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
我們提供的服務(wù)有:成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)、微信公眾號(hào)開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、靖州ssl等。為上千企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的靖州網(wǎng)站制作公司
本文實(shí)例為大家分享了C語(yǔ)言電話簿管理系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下
/*大二實(shí)踐周所作, 時(shí)間:2017.9,11 電話簿管理系統(tǒng) */ #include<string.h> #include<stdio.h> #include<stdlib.h> #include<malloc.h> #define NULL 0 typedef struct lianxiren{ char job[30]; char number[20]; char name[10]; char email[30]; struct lianxiren*next; }lianxiren; #define LEN sizeof(lianxiren) lianxiren* creat_list() { lianxiren *head,*p1,*p2; char name[10];int n=0; head=NULL; p1=(lianxiren *)malloc(LEN); p2=p1; printf("請(qǐng)輸入姓名(姓名為0時(shí)停止創(chuàng)建):"); gets(name); if(strcmp(name,"0")==0)return 0; else { strcpy(p1->name,name); printf("請(qǐng)輸入電話號(hào)碼:");gets(p1->number); printf("請(qǐng)輸入工作單位:");gets(p1->job); printf("請(qǐng)輸入E-mail:");gets(p1->email); } while(1) { n++; if(n==1) head=p1; else p2->next=p1; p2=p1; printf("請(qǐng)輸入姓名(姓名為0時(shí)停止創(chuàng)建):"); gets(name); if(strcmp(name,"0")==0)break; else{ p1=(lianxiren*)malloc(LEN); strcpy(p1->name,name); printf("請(qǐng)輸入電話號(hào)碼:");gets(p1->number); printf("請(qǐng)輸入工作單位:");gets(p1->job); printf("請(qǐng)輸入E-mail:");gets(p1->email);} }p2->next=NULL; return head; }//鏈表創(chuàng)建函數(shù) lianxiren* shifang_list(lianxiren*head) { lianxiren*p1; for(;head!=NULL;) { p1=head; head=head->next; free(p1); } return head; }//釋放鏈表函數(shù) void print_list(lianxiren*head) { void caidan(); int n=0; printf("現(xiàn)在通訊錄中有如下成員:"); while(head!=NULL) { printf("\n名字:");puts(head->name); printf("\n電話號(hào)碼:");puts(head->number); printf("\n工作單位:");puts(head->job); printf("\nE-mail:");puts(head->email); putchar('\n'); head=head->next;n++; if(n%8==0){ printf("按回車鍵顯示下一頁(yè)"); getchar(); system("cls"); caidan(); } } printf("總共%d個(gè)聯(lián)系人\n",n); }//打印鏈表函數(shù) int length(lianxiren*head) { int n = 0; lianxiren *p; p = head; while(p != NULL) { p = p->next; n++; } return n; } void paixu1(lianxiren*head) { void caidan(); int n=length(head); int i,j; lianxiren temp,*p; p=head; lianxiren a[100]; for(i=1;i<=n;i++) { strcpy(a[i].name,p->name); strcpy(a[i].number,p->number); strcpy(a[i].job,p->job); strcpy(a[i].email,p->email); p=p->next; } for(i=1;i<=n-1;i++) { for(j=1;j<=n-i;j++) {if(strcmp(a[j].number,a[j+1].number)>0) { temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; } } } printf("現(xiàn)在通訊錄中有如下成員:"); for(i=1;i<=n;i++) { printf("\n名字:");puts(a[i].name); printf("\n電話號(hào)碼:");puts(a[i].number); printf("\n工作單位:");puts(a[i].job); printf("\nE-mail:");puts(a[i].email); putchar('\n'); if(i%8==0){ printf("按回車鍵顯示下一頁(yè)"); getchar(); system("cls"); caidan(); } } printf("總共%d個(gè)聯(lián)系人\n",n); } void paixu2(lianxiren*head) { void caidan(); int n=length(head);int i,j; lianxiren temp,*p; p=head; lianxiren a[100]; for(i=1;i<=n;i++) { strcpy(a[i].name,p->name); strcpy(a[i].number,p->number); strcpy(a[i].job,p->job); strcpy(a[i].email,p->email); p=p->next; } for(i=1;i<=n-1;i++) { for(j=1;j<=n-i;j++) {if(strcmp(a[j].name,a[j+1].name)>0) { temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; } } } printf("現(xiàn)在通訊錄中有如下成員:"); for(i=1;i<=n;i++) { printf("\n名字:");puts(a[i].name); printf("\n電話號(hào)碼:");puts(a[i].number); printf("\n工作單位:");puts(a[i].job); printf("\nE-mail:");puts(a[i].email); putchar('\n'); if(i%8==0){ printf("按回車鍵顯示下一頁(yè)"); getchar(); system("cls"); caidan(); } } printf("總共%d個(gè)聯(lián)系人\n",n); } void paixu_list(lianxiren*head) { void caidan(); if(head==NULL) {printf("電話簿為空,請(qǐng)重新創(chuàng)建!"); return; } char a; printf("1,按電話號(hào)碼升序排序\n2,按姓名字母升序排序\n"); printf("請(qǐng)選擇一種排序方法:"); a=getchar(); getchar(); switch(a){ case'1':paixu1(head);break; case'2':paixu2(head);break; default:printf("輸入有誤!\n");break; } } void chazhao1(lianxiren*head) {if(head==NULL) { printf("電話簿為空,請(qǐng)重新創(chuàng)建"); return; } char name[10]; printf("請(qǐng)輸入名字:");gets(name); while(strcmp(name,head->name)!=0) {head=head->next; if(head==NULL){printf("電話簿未有此聯(lián)系人\n"); return;} } printf("%s的電話號(hào)碼為:",name); puts(head->number); printf("\n工作單位:");puts(head->job); printf("\nE-mail:");puts(head->email); }//通過名字查找 void chazhao2(lianxiren*head) {if(head==NULL) { printf("電話簿為空,請(qǐng)重新創(chuàng)建"); return; } char number[20]; printf("請(qǐng)輸入電話號(hào)碼:");gets(number); while(strcmp(number,head->number)!=0) {head=head->next; if(head==NULL){printf("電話簿未有此聯(lián)系人\n"); return;} } printf("%s的主人為:",number); puts(head->name); printf("\n工作單位:");puts(head->job); printf("\nE-mail:");puts(head->email); }//通過電話號(hào)碼查找 void chazhao(lianxiren*head) { int n; printf(" 1,通過名字查找\n 2,通過電話號(hào)碼查找\n 3,退出\n請(qǐng)選擇你需要的服務(wù):"); scanf("%d",&n); getchar(); while(1) { switch(n){ case 1:{chazhao1(head);printf("請(qǐng)選擇服務(wù)項(xiàng):");scanf("%d",&n);getchar();}break; case 2:{chazhao2(head);printf("請(qǐng)選擇服務(wù)項(xiàng):");scanf("%d",&n);getchar();}break; case 3:return;break; default:{printf("輸入不正確!");printf("請(qǐng)選擇服務(wù)項(xiàng):");scanf("%d",&n);getchar();}break; }} }//查找聯(lián)系人 void add_list(lianxiren*head) { lianxiren*p1,*p2,*h; char name[10]; printf("請(qǐng)輸入名字(名字為0時(shí)停止)"); gets(name); if(strcmp(name,"0")!=0) { p1=(lianxiren*)malloc(LEN); strcpy(p1->name,name); printf("請(qǐng)輸入電話號(hào)碼:");gets(p1->number); printf("請(qǐng)輸入工作單位:");gets(p1->job); printf("請(qǐng)輸入E-mail:");gets(p1->email); } else return; h=p1; while(1) { p2=p1; printf("請(qǐng)輸入名字(名字為0時(shí)停止)"); gets(name); if(strcmp(name,"0")==0)break; else{ p1=(lianxiren*)malloc(LEN); strcpy(p1->name,name); printf("請(qǐng)輸入電話號(hào)碼:");gets(p1->number); printf("請(qǐng)輸入工作單位:");gets(p1->job); printf("請(qǐng)輸入E-mail:");gets(p1->email); p2->next=p1; } } p1=head->next; head->next=h; p2->next=p1; }//添加鏈表函數(shù) lianxiren*xiugai_list(lianxiren*head) { char a[20]; printf("請(qǐng)輸入聯(lián)系人名字或電話:"); gets(a); if(head==NULL) { printf("電話簿為空,請(qǐng)重新創(chuàng)建"); return head; } lianxiren*p=head; while(strcmp(a,p->name)!=0&&strcmp(a,p->number)!=0) { p=p->next; if(p==NULL){printf("電話簿未有此聯(lián)系人\n"); return head;} } printf("查找到了!"); printf("\n名字:");puts(p->name); printf("\n電話號(hào)碼:");puts(p->number); printf("\n工作單位:");puts(p->job); printf("\nE-mail:");puts(p->email); putchar('\n'); int n; while(1) {printf("請(qǐng)選擇操作項(xiàng)(1,名字2,電話號(hào)碼3,工作單位4,E-mail 5,退出):"); scanf("%d",&n); getchar(); switch(n) { case 1:{printf("請(qǐng)輸入名字:");gets(p->name);}break; case 2:{printf("請(qǐng)輸入電話號(hào)碼:");gets(p->number);}break; case 3:{printf("請(qǐng)輸入工作單位:");gets(p->job);}break; case 4:{printf("請(qǐng)輸入E-mail:");gets(p->email);}break; case 5:return head;break; default:printf("輸入錯(cuò)誤!");break; } } }//修改鏈表函數(shù) lianxiren*delete_list(lianxiren*head) { char a[20]; printf("請(qǐng)輸入聯(lián)系人名字或電話:"); gets(a); if(head==NULL) { printf("電話簿為空,請(qǐng)重新創(chuàng)建"); return head; } lianxiren*p=head,*p1; while(strcmp(a,p->name)!=0&&strcmp(a,p->number)!=0) { p1=p; p=p->next; if(p==NULL){printf("電話簿未有此聯(lián)系人\n"); return head;} } printf("查找到了!"); printf("\n名字:");puts(p->name); printf("\n電話號(hào)碼:");puts(p->number); printf("\n工作單位:");puts(p->job); printf("\nE-mail:");puts(p->email); putchar('\n'); char n; printf("是否刪除該聯(lián)系人(Y/N)"); n=getchar(); switch(n) { case 'y': case 'Y':{if(p==head){head=p->next;free(p);}else{p1->next=p->next;free(p);}printf("成功刪除!");}break; case 'N': case 'n':printf("取消刪除!");break; default:printf("輸入錯(cuò)誤!");break; } return head; }//刪除鏈表函數(shù) void save_list(lianxiren*head) {FILE *fp; if((fp=fopen("dianhuabu.dat","wb"))==NULL) { printf("File cannot be opened\n"); exit(0);} if(head==NULL) { printf("通訊錄為空\(chéng)n"); return; } lianxiren*p1=head; while(p1!=NULL) { if(fwrite(p1,LEN,1,fp)!=1){ printf("cannot open file\n"); return;} p1=p1->next; } printf("保存完畢!\n"); fclose(fp); }//文件寫入函數(shù) lianxiren*load_list(lianxiren*head) {FILE *fp; if((fp=fopen("dianhuabu.dat","rb"))==NULL) { printf("電話簿為空,請(qǐng)重新創(chuàng)建\n"); exit(0);} lianxiren*p1,*p2; p1=(lianxiren*)malloc(LEN); if(fread(p1,LEN,1,fp)==0) {printf("電話簿為空,請(qǐng)重新創(chuàng)建"); return head; } head=p1; p2=p1; p1=(lianxiren*)malloc(LEN); while(fread(p1,LEN,1,fp)) { p2->next=p1; p2=p1; p1=(lianxiren*)malloc(LEN); } p2->next=NULL; free(p1); return(head); fclose(fp); }//文件讀取函數(shù) int kouling() { char s[20]; printf("請(qǐng)輸入口令:"); int n=0; while(n<3) {scanf("%s",s); getchar(); if(strcmp(s,"20160390527")==0) return 0; else{n++; if(n==3){ printf("抱歉,輸入錯(cuò)誤\n"); return 1;} printf("口令錯(cuò)誤,請(qǐng)重新輸入\n"); } }return 1; }//口令驗(yàn)證,密碼為:20160390527 void caidan() { printf(" 歡迎進(jìn)入電話簿系統(tǒng) \n"); printf("********************************************\n"); printf(" 1、創(chuàng)建電話簿(會(huì)將原有電話簿覆蓋)\n"); printf(" 2、查找聯(lián)系人 \n"); printf(" 3、添加聯(lián)系人 \n"); printf(" 4、修改聯(lián)系人 \n"); printf(" 5、刪除聯(lián)系人 \n"); printf(" 6、查看電話簿(排序) \n"); printf(" 7、退出系統(tǒng) \n"); printf("********************************************\n"); }//菜單界面 void main() { if(kouling()) return;//口令驗(yàn)證 system("cls"); caidan();//進(jìn)入菜單界面 printf(" 請(qǐng)選擇你所需要的服務(wù):"); int n;scanf("%d",&n); getchar(); lianxiren*head; while(1){ system("cls"); caidan(); switch(n){ case 1:{ head=creat_list(); system("cls"); caidan(); print_list(head); save_list(head); shifang_list(head); printf("********************************************\n"); printf("\n如需要其他服務(wù),請(qǐng)重新輸入:"); scanf("%d",&n); getchar();}break;//創(chuàng)建電話簿(創(chuàng)建鏈表、寫入文件,釋放鏈表) case 2:{ head=load_list(head); chazhao(head); shifang_list(head); printf("********************************************\n"); printf("\n如需要其他服務(wù),請(qǐng)重新輸入:"); scanf("%d",&n); getchar();}break;//查找聯(lián)系人(讀入文件、查找函數(shù)、釋放鏈表) case 3:{ head=load_list(head); add_list(head); system("cls"); caidan(); print_list(head); save_list(head); shifang_list(head); printf("********************************************\n"); printf("\n如需要其他服務(wù),請(qǐng)重新輸入:"); scanf("%d",&n); getchar();}break;//添加聯(lián)系人(讀入文件、添加鏈表、寫入文件、釋放鏈表) case 4:{ head=load_list(head); head=xiugai_list(head); save_list(head); shifang_list(head); printf("********************************************\n"); printf("\n如需要其他服務(wù),請(qǐng)重新輸入:"); scanf("%d",&n); getchar();}break;//修改聯(lián)系人(讀入文件,修改鏈表、寫入文件、釋放鏈表) case 5:{ head=load_list(head); head=delete_list(head); save_list(head); shifang_list(head); printf("********************************************\n"); printf("\n如需要其他服務(wù),請(qǐng)重新輸入:"); scanf("%d",&n); getchar();}break;//刪除聯(lián)系人(讀入文件,刪除鏈表、寫入文件、釋放鏈表) case 6:{ head=load_list(head); paixu_list(head); shifang_list(head); printf("********************************************\n"); printf("\n如需要其他服務(wù),請(qǐng)重新輸入:"); scanf("%d",&n); getchar();}break;//查看電話簿(讀入文件,排序鏈表、釋放鏈表) case 7:{ system("cls"); return;}break;//退出 default:{ printf("\n輸入有誤,請(qǐng)重新輸入:"); scanf("%d",&n); getchar();}break; }} }
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“C語(yǔ)言如何實(shí)現(xiàn)電話簿管理系統(tǒng)”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來學(xué)習(xí)!
網(wǎng)站題目:C語(yǔ)言如何實(shí)現(xiàn)電話簿管理系統(tǒng)
地址分享:http://jinyejixie.com/article42/poecec.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、網(wǎng)站設(shè)計(jì)、ChatGPT、定制開發(fā)、虛擬主機(jī)、動(dòng)態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)