




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
設(shè)計(jì)題目及需求:能按遞增的順序自動(dòng)進(jìn)行條目編號(hào)。調(diào)整后續(xù)條目的編號(hào)。2.刪除通訊人(刪除功能)3.保存通訊錄(保存功能)4.讀取通訊錄文件(讀取功能)5.查找通訊人(查找功能)6.添加通訊人(添加功能)7.修改通訊人信息(修改功能)8.退出通訊錄系統(tǒng)成功。2.按類型查找3.查看所有人先讀取通訊錄文件。進(jìn)入添加功能以后,可以按提示添加通訊人信息。者先讀取通訊錄文件。修改功能是和刪除功能一樣,也是通過姓名進(jìn)行查找的。#defineIDstructtel//宏定義,方便以后的使用structtel{chartele[15];//電話charstyle[15];//類型charmail[20];//郵箱ID*next;};{intchoice;//存放用戶的選擇intj=0;//這個(gè)j是用于功能之間的配合使用while(1){system("cls");//清屏printf("\n\n");printf("\t1.建立通訊錄\n");printf("\t2.刪除通訊人\n");printf("\t3.保存通訊錄\n");printf("\t4.讀取通訊錄文件\n");printf("\t5.查找通訊人\n");printf("\t6.添加通訊人\n");printf("\t7.修改通訊人信息\n");printf("\t8.退出通訊錄系統(tǒng)\n");printf("\t\t\t\t\tMadeby元達(dá)鵬\n");printf("\n\n");scanf("%d",&choice);//輸入功能getchar();//吸收回車鍵switch(choice){case1:j=1;//讓功能7可以進(jìn)得去break;case2:break;case3:Save(head);//保存函數(shù)break;case4:j=2;//讓功能7可以進(jìn)得去break;case5:Search(head);//查找break;case6:if((j==1)||(j==2))//當(dāng)你進(jìn)入過創(chuàng)建或者讀取之后才可以進(jìn)入添加{}else{printf("在你添加通訊人的時(shí)候請(qǐng)先創(chuàng)建通訊錄或者讀取通訊錄文件\n\n");printf("請(qǐng)按任意鍵返回主菜單\n");getch();//按下任意鍵就進(jìn)入下一條語(yǔ)句的函數(shù)}break;case7:if((j==1)||(j==2))//當(dāng)你進(jìn)入過創(chuàng)建或者讀取之后才可以進(jìn)入添加{}else{printf("在你刪除通訊人的時(shí)候請(qǐng)先創(chuàng)建通訊錄或者讀取通訊錄文件\n\n");printf("請(qǐng)按任意鍵返回主菜單\n");getch();//按下任意鍵就進(jìn)入下一條語(yǔ)句的函數(shù)}break;case8:exit(0);//退出break;default:printf("你輸入錯(cuò)了吧,請(qǐng)你重新輸入\n");}}}<><>保存文件保存文件N輸入待刪除人的輸入待刪除人的Y保存保存312Y輸出該所有相同輸出該所有相同Y通訊錄中是否存在通訊錄中是否存在輸入待修改人的名修改該人的信息修改該人的信息#defineIDstructtel//宏定義,方便以后的使用structtel{chartele[15];//電話charstyle[15];//類型charmail[20];//郵箱ID*next;};inttotal=0;//通訊錄人數(shù)的統(tǒng)計(jì)/**********************************************************************************************/ID*Create(){total=0;intk=0;inti=0;ID*head,*p1,*p2,*p3;//創(chuàng)建一個(gè)頭指針和兩個(gè)可用于移動(dòng)的指針charsaveflag;//這個(gè)字符用來接收是否保存的Yory的while(1)//這個(gè)循環(huán)可以實(shí)現(xiàn)多次添加通訊人{(lán)p1=(ID*)malloc(sizeof(ID));//給p1分配一個(gè)動(dòng)態(tài)存儲(chǔ)空間printf("請(qǐng)輸入姓名,當(dāng)你不想錄入時(shí),在姓名處輸入*,結(jié)束錄入\n");{if(total==0)//當(dāng)記錄人數(shù)為0時(shí)做以下事情{printf("你輸入了0條記錄,單鏈表沒有創(chuàng)建...\n");free(p1);//釋放p1空間}else{break;//跳出while循環(huán)}}printf("請(qǐng)輸入電話號(hào)碼:\n");scanf("%s",p1->tele);printf("請(qǐng)輸入類別:辦公類、個(gè)人類、商務(wù)類\n");scanf("%s",p1->style);printf("請(qǐng)輸入郵箱:\n");scanf("%s",p1->mail);if(k>0){{{free(p1);printf("你重復(fù)輸入了,這一條不保存。請(qǐng)按任意鍵返回主菜單\n");i=1;printf("請(qǐng)按任意鍵返回主菜單\n");getch();//按下任意鍵就進(jìn)入下一條語(yǔ)句的函數(shù)break;}{i=0;break;//跳出第一個(gè)循環(huán)}}if(i==1){break;//跳出第二個(gè)循環(huán)}}{}else{}total++;//這是錄入一個(gè)人后,總數(shù)就加1}if(i==0){free(p1);printf("\n新建通訊錄成功,共有%d個(gè)聯(lián)系人,是否保存?(Y/N)\n",total);getchar();//這個(gè)getchar是吸收回車鍵的,十分重要scanf("%c",&saveflag);//寫入一個(gè)字符if(saveflag=='y'||saveflag=='Y')//判斷它是不是為YorySave(head);//進(jìn)入到保存函數(shù)里面,保存到文件里面elseprintf("\n沒有保存到成功保存到文件,請(qǐng)?jiān)诜祷刂鞑藛魏筝斎?保存通訊錄。\n");}returnhead;//返回一個(gè)頭指針,這個(gè)是最重要的,因?yàn)樵诤竺娴暮瘮?shù)中,大部分都是要頭}/*************************************************************************************************/{FILE*fp;//定義一個(gè)文件指針,接收fopen的返回值,用于最后的關(guān)閉文件ID*t;//定義一個(gè)指針,從頭到尾遍歷一遍單鏈表,向文件中寫入if((fp=fopen("","w"))==NULL)//打開文件來寫入{printf("打開文件失??!\n");getch();//輸入任意鍵進(jìn)入下一步exit(0);//退出}while(t!=NULL)//只要t指針不為空{(diào)fwrite(t,sizeof(ID),1,fp);//把鏈表的東西寫入文件中t=t->next;//把指針往后移}fclose(fp);//把文件關(guān)閉printf("文件保存成功\n");printf("請(qǐng)按任意鍵返回主菜單\n");getch();//按下任意鍵就進(jìn)入下一條語(yǔ)句的函數(shù)}/*************************************************功能:讀取文件中的信息并將其放入單鏈表中*************************************************/{FILE*fp;//定義一個(gè)文件指針,接收fopen的返回值,用于最后的關(guān)閉文件針charch;//定義一個(gè)變量來存放文件的第一個(gè)字符,但在這個(gè)函數(shù)里面主要是用來判斷文件if((fp=fopen("","r"))==NULL)//這可以判斷有沒有文件給你去讀取{printf("打開文件失?。]有該文件\n\n");printf("請(qǐng)按任意鍵退出程序\n");getch();//一個(gè)在網(wǎng)上查到的函數(shù),用于你可以按任意鍵進(jìn)入下一步exit(0);//退出程序}/******這是在網(wǎng)上查到的一段有關(guān)于文件的程序******/ch=fgetc(fp);//這是在網(wǎng)上查到的一個(gè)有關(guān)文件的函數(shù),返回值是文件的第一個(gè)字符,當(dāng){printf("文件為空,請(qǐng)重新建立一個(gè)通訊錄\n");printf("請(qǐng)按任意鍵返回主菜單\n");getch();//按下任意鍵就進(jìn)入下一條語(yǔ)句的函數(shù)return(head);//返回一個(gè)指針,因?yàn)檫@個(gè)函數(shù)要有一個(gè)返回值,所以把頭指針返回出去}else{rewind(fp);//這個(gè)函數(shù)是把一個(gè)文件的位置指針從新移至開頭,不然的話會(huì)出現(xiàn)一個(gè)組數(shù)}/*************************************************/t1=(ID*)malloc(sizeof(ID));//開始申請(qǐng)動(dòng)態(tài)空間,用t1接著while(!feof(fp))//feof函數(shù)的功能是判斷這個(gè)文件是不是結(jié)束了,如果結(jié)束了,返回一個(gè){if(fread(t1,sizeof(ID),1,fp)!=1)//根據(jù)書上的定義,fread函數(shù)的類型為int型,返回break;//如果沒有讀取的內(nèi)容,則結(jié)束total++;//人數(shù)加1t1->next=(ID*)malloc(sizeof(ID));//把在申請(qǐng)動(dòng)態(tài)空間的同時(shí),把t1的next指向下一t2=t1;//讓t2和t1指向同一個(gè)地方}free(t1);//把后來的t1申請(qǐng)多出來的空間清空掉fclose(fp);//關(guān)閉文件printf("文件已經(jīng)成功讀取\n");printf("請(qǐng)按任意鍵返回主菜單\n");getch();//按下任意鍵就進(jìn)入下一條語(yǔ)句的函數(shù)returnhead;//返回一個(gè)頭指針,因?yàn)樵跊]有創(chuàng)建一個(gè)單鏈表和文件的時(shí)候,就是靠這個(gè)頭}/*************************************************功能:可以通過姓名查詢,也可以通過類別查詢*************************************************/{ID*p;//定義一個(gè)結(jié)構(gòu)體變量,用來放頭指針intflag,searchflag=1;//變量flag是用來判斷是不是有符合要求的數(shù)據(jù),變量searchflagcharch[10];//數(shù)組ch用來放輸入的類型printf("請(qǐng)輸入你希望通過什么方式查詢:(請(qǐng)輸入序號(hào))\n");printf("1.姓名\n");printf("2.類別\n");printf("3.所有人\n");getchar();//吸收回車鍵{case1:{flag=0;//初始化為0printf("\n請(qǐng)輸入待查找者的首字母,或者查找者的姓:\n");scanf("%c",&c);//存放你的要求,首字母或姓getchar();//吸收回車鍵{{printf("%d.",count);}}if(flag==0)//這表示為沒有找到相關(guān)數(shù)據(jù){printf("\n對(duì)不起,未能找到符合條件的記錄\n");}printf("\n查找完畢,是否需要重新查詢?Y/N\n");getchar();//吸收回車鍵{searchflag=1;//回到while繼續(xù)從頭開始}else{searchflag=0;//回到while并且退出system("cls");//為了美觀,在網(wǎng)上找了清屏函數(shù)}}break;case2:{flag=0;//初始化為0,scanf("%s",ch);//用字符數(shù)據(jù)接收字符串getchar();//吸收回車鍵{{printf("%d.",count);}}if(flag==0)//這表示為沒有找到相關(guān)數(shù)據(jù){printf("\n對(duì)不起,未能找到符合條件的記錄\n");}printf("\n查找完畢,是否需要重新查詢?Y/N\n");getchar();{searchflag=1;//回到while繼續(xù)從頭開始}else{searchflag=0;//回到while并且退出system("cls");//為了美觀,在網(wǎng)上找了清屏函數(shù)}}break;case3:{printf("%d.",count);}printf("查找完成!請(qǐng)按任意鍵返回主菜單\n");getch();//輸入任意鍵函數(shù)system("cls");//為了美觀,在網(wǎng)上找了清屏函數(shù)break;default:printf("你輸入錯(cuò)了吧,請(qǐng)你輸入任意鍵返回主菜單...\n");getch();//一個(gè)在網(wǎng)上查到的函數(shù),用于你可以按任意鍵進(jìn)入下一步}}/*************************************************************************************************/{charsaveflag;//存放是或者否inti;//i是這個(gè)函數(shù)的關(guān)鍵,因?yàn)槲覈L試了很多種方法,都是有這樣那樣的問題,雖然這個(gè)chars[10];//存放輸入的名字system("cls");//清屏printf("請(qǐng)輸入要?jiǎng)h除的姓名:\n");scanf("%s",s);getchar();{{i=1;//當(dāng)存在一樣的名字時(shí),i=1break;}{i=0;//不存在一樣的名字時(shí),i=1break;}}if(i==1)//當(dāng)i=1時(shí),開始找那個(gè)一樣名字的結(jié)點(diǎn)在哪里{{}}if(i==0)//當(dāng)i=0時(shí),就是沒有這個(gè)名字的人,返回主菜單{printf("對(duì)不起,沒有找到要?jiǎng)h除的通訊名單,請(qǐng)檢查你要?jiǎng)h除的姓名是否正確\n");printf("請(qǐng)按任意鍵返回主菜單\n");getch();//按下任意鍵就進(jìn)入下一條語(yǔ)句的函數(shù)}{printf("你要?jiǎng)h除的通訊錄人為:\n");printf("姓名:%s\t電話printf("請(qǐng)確定是否要?jiǎng)h除該記錄?Y/N?\n");scanf("%c",&saveflag);//輸入,存放YorNgetchar();//吸收回車鍵if(saveflag=='y'||saveflag=='Y')//當(dāng)輸入是的時(shí)候{elsefree(p1);//把p1結(jié)點(diǎn)的空間釋放printf("該電話記錄已刪除成功,是否存盤?Y/N?\n");getchar();//吸收回車鍵{Save(head);//調(diào)用保存函數(shù)total--;//人數(shù)減一}else{printf("請(qǐng)?jiān)谕顺鱿到y(tǒng)之前返回主菜單按3進(jìn)行保存\n");printf("請(qǐng)按任意鍵返回主菜單\n");getch();//按下任意鍵就進(jìn)入下一條語(yǔ)句的函數(shù)}}else{printf("該通訊錄沒有被刪除\n");printf("請(qǐng)按任意鍵返回主菜單\n");getch();//按下任意鍵就進(jìn)入下一條語(yǔ)句的函數(shù)}}return(head);//return一個(gè)已經(jīng)進(jìn)行修改的鏈表的頭指針}/*************************************************************************************************/{charsaveflag;//存放是或者否intk=0;inti=0;add=(ID*)malloc(sizeof(ID));//申請(qǐng)動(dòng)態(tài)存儲(chǔ)空間system("cls");//清屏{}printf("請(qǐng)輸入添加人的姓名:\n");printf("請(qǐng)輸入添加人的電話號(hào)碼:\n");scanf("%s",add->tele);printf("請(qǐng)輸入添加人的類型:\n");scanf("%s",add->style);printf("請(qǐng)輸入添加人的郵箱:\n");scanf("%s",add->mail);{{free(add);printf("你重復(fù)輸入了,這一條不保存。請(qǐng)按任意鍵返回主菜單\n");i=1;printf("請(qǐng)按任意鍵返回主菜單\n");getch();//按下任意鍵就進(jìn)入下一條語(yǔ)句的函數(shù)break;}{i=0;break;//跳出第一個(gè)循環(huán)}}if(i==0){{}else{}total++;free(p1);printf("新添加電話號(hào)碼成功,是否存盤?(Y/N)\n");getchar();//吸收回車鍵scanf("%c",&saveflag);//輸入,存放YorNif(saveflag=='y'||saveflag=='Y')//當(dāng)輸入是的時(shí)候{Save(head);//調(diào)用保存函數(shù)total++;}else{printf("請(qǐng)?jiān)谕顺鱿到y(tǒng)之前返回主菜單按3進(jìn)行保存\n");printf("請(qǐng)按任意鍵返回主菜單\n");getch();//按下任意鍵就進(jìn)入下一條語(yǔ)句的函數(shù)}}return(head);//return一個(gè)已經(jīng)進(jìn)行修改的鏈表的頭指針}/*************************************************************************************************/{charsaveflag;//存放YorNcharn[10];//存放待修改人的姓名inti;//作用和刪除的一樣領(lǐng)導(dǎo)這個(gè)函數(shù)system("cls");//清屏printf("請(qǐng)輸入要修改的姓名:\n");scanf("%s",n);{{i=1;//當(dāng)存在一樣的名字時(shí),i=1break;}else{i=0;//不存在一樣的名字時(shí),i=1break;}}if(i==1)//當(dāng)i=1時(shí),開始找那個(gè)一樣名字的結(jié)點(diǎn)在哪里{{}}if(i==0)//當(dāng)i=0時(shí),就是沒有這個(gè)名字的人,返回主菜單{printf("對(duì)不起,沒有找到要?jiǎng)h除的通訊名單,請(qǐng)檢查你要?jiǎng)h除的姓名是否正確\n");printf("請(qǐng)按任意鍵返回主菜單\n");getch();//按下任意鍵就進(jìn)入下一條語(yǔ)句的函數(shù)}{printf("你要修改的電話記錄為:\n");printf("請(qǐng)輸入修改后的號(hào)碼:\n");scanf("%s",p1->tele);printf("請(qǐng)輸入修改后的類型:\n");scanf("%s",p1->style);printf("請(qǐng)輸入修改后的郵箱:\n");scanf("%s",p1->mail);printf("該電話記錄已修改成功\n");printf("通訊人已經(jīng)新建成功,是否進(jìn)行保存?(Y/N)\n");getchar();//吸收回車scanf("%c",&saveflag);if(saveflag=='y'||saveflag=='Y')//當(dāng)輸入是的時(shí)候Save(head);//調(diào)用保存函數(shù)elseprintf("請(qǐng)?jiān)谕顺鱿到y(tǒng)之前返回主菜單按3進(jìn)行保存\n");printf("請(qǐng)按任意鍵返回主菜單\n");getch();//按下任意鍵就進(jìn)入下一條語(yǔ)句的函數(shù)}return(head);//return一個(gè)已經(jīng)進(jìn)行修改的鏈表的頭指針}/*************************************************************************************************/{intchoice;//存放用戶的選擇intj=0;//這個(gè)j是用于功能之間的配合使用while(1){system("cls");//清屏printf("\n\n");pri
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權(quán)】 ISO/IEC 23090-7:2022/AMD1:2024 EN Information technology - Coded representation of immersive media - Part 7: Immersive media metadata - Amendment 1: Common metadata for imme
- 【正版授權(quán)】 ISO 7718-2:2025 EN Aircraft - Passenger doors interface requirements for connection of passenger boarding bridge or passenger transfer vehicle - Part 2: Upper deck doors
- 【正版授權(quán)】 ISO 16900-11:2025 EN Respiratory protective devices - Methods of test and test equipment - Part 11: Determination of field of vision
- 【正版授權(quán)】 IEC 81355-1:2024 EN/FR Industrial systems,installations and equipment and industrial products - Classification and designation of information - Part 1: Basic rules and clas
- 2025年集成電路代工廠商業(yè)秘密保護(hù)合同
- 2025年動(dòng)力調(diào)諧陀螺平臺(tái)項(xiàng)目建議書
- 提升學(xué)校藝術(shù)教育影響力的策略計(jì)劃
- 醫(yī)院宣傳工作總結(jié)與改進(jìn)方法計(jì)劃
- 班級(jí)傳統(tǒng)文化傳承活動(dòng)的計(jì)劃
- 營(yíng)養(yǎng)科膳食服務(wù)效果評(píng)估與改進(jìn)計(jì)劃
- 部編版一年級(jí)語(yǔ)文下冊(cè)語(yǔ)文園地五《單元拓展-字族文》教學(xué)設(shè)計(jì)
- 靜脈輸液法操作并發(fā)癥的預(yù)防及處理
- 牙外傷的遠(yuǎn)期并發(fā)癥監(jiān)測(cè)
- 2024年中國(guó)成人心肌炎臨床診斷與治療指南解讀課件
- 全國(guó)川教版信息技術(shù)八年級(jí)下冊(cè)第一單元第2節(jié)《制作創(chuàng)意掛件》信息技術(shù)教學(xué)設(shè)計(jì)
- DL-T-1846-2018變電站機(jī)器人巡檢系統(tǒng)驗(yàn)收規(guī)范
- 重大事故隱患判定標(biāo)準(zhǔn)與相關(guān)事故案例培訓(xùn)課件(建筑)
- 《我的寒假生活》
- 陜2018TJ 040建筑節(jié)能與結(jié)構(gòu)一體化 復(fù)合免拆保溫模板構(gòu)造圖集
- DZ/T 0430-2023 固體礦產(chǎn)資源儲(chǔ)量核實(shí)報(bào)告編寫規(guī)范(正式版)
- (高清版)WST 442-2024 臨床實(shí)驗(yàn)室生物安全指南
評(píng)論
0/150
提交評(píng)論