版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
C語言課程設(shè)計題目:通訊錄管理系統(tǒng)設(shè)計者:院系:數(shù)理學(xué)院專業(yè):信息與計算科學(xué)班號:123111學(xué)號:指導(dǎo)教師:吳湘寧20題目規(guī)定通訊錄管理系統(tǒng)是含有數(shù)據(jù)插入、更新、刪除、顯示和查詢功效的電話簿管理程序。(1)數(shù)據(jù)涉及姓名、工作單位、電話號碼和E-MAIL地址等。(2)可對統(tǒng)計中的姓名和電話號碼進(jìn)行更新。(3)可增加和刪除統(tǒng)計。(4)可顯示全部的保存的統(tǒng)計。(5)可按姓名或電話號碼進(jìn)行查詢。需求分析信息統(tǒng)計要寄存到文獻(xiàn)中,要實現(xiàn)文獻(xiàn)的輸入、輸出功效;實現(xiàn)數(shù)據(jù)的添加、刪除、更新和顯示,要提供輸入、刪除、更新和顯示功效;要實現(xiàn)按人名或電話號碼進(jìn)行查詢,因而要提供查找功效;應(yīng)當(dāng)提供鍵盤式選擇菜單以實現(xiàn)功效選擇。采用模塊化,由上到下的設(shè)計辦法,通過數(shù)字選擇菜單功效,上級菜單可進(jìn)入下級菜單,下級菜單可返回上級菜單??傮w設(shè)計根據(jù)上面得需求分析,系統(tǒng)有菜單選擇、數(shù)據(jù)輸入、數(shù)據(jù)查找、數(shù)據(jù)更新、數(shù)據(jù)的存儲等功效。能夠?qū)⑾到y(tǒng)設(shè)計分為四大模塊,即顯示、查找、更新(涉及增加和刪除)和退出,如圖1所示。其中,重要功效是顯示、查詢和更新三個模塊。通訊錄管理系統(tǒng)顯示通訊錄管理系統(tǒng)顯示查詢更新退出圖1系統(tǒng)功效模塊圖具體設(shè)計4.1主函數(shù)主函數(shù)設(shè)計比較簡潔,只提供輸入、功效解決和輸出部分得函數(shù)調(diào)用。其中各功效模塊采用菜單方式選擇。另外,菜單部分也能夠?qū)懗龊瘮?shù)。具體流程圖如圖2所示。圖2主函數(shù)流程圖圖2主函數(shù)流程圖顯示一系列功效選項開始輸入n,判斷n與否是1~4根據(jù)n的值調(diào)用各功效模塊函數(shù)結(jié)束【程序】main(){ intn,w; do { puts("***************通訊錄管理系統(tǒng)***************\n"); puts("********************菜單********************\n"); puts("1.顯示通訊錄\n"); puts("2.查找\n"); puts("3.更新\n"); puts("4.退出\n"); puts("********************************************\n"); printf("選擇功效(1-4):"); scanf("%d",&n); if(n<1||n>4) { w=1; getchar(); } else{w=0;} }while(w==1); switch(n)/*選擇功效*/ { case1:list();break;/*列出通訊錄*/ case2:find();break;/*查找*/ case3:choose();break;/*更新通訊錄*/ case4:printf("謝謝使用!\n\n");/*退出*/ }}4.2各功效模塊設(shè)計★數(shù)據(jù)構(gòu)造通訊錄的數(shù)據(jù)信息:姓名、工作單位、電話號碼、E-MAIL均采用字符型數(shù)組,用構(gòu)造體的形式,把各信息作為構(gòu)造的組員。構(gòu)造體變量能夠是指針類型,構(gòu)造體的類型以下:structpersons{ charname[100]; charaddress[100]; charnumber[100]; charemail[100];}per[N];/*N為通訊錄總?cè)藬?shù)*/注:per[N]中的N為統(tǒng)計的總個數(shù),程序中用宏定義的方式,能夠隨時在源程序宏定義中修改。本程序的宏定義為#defineN100?!颾ack():返回菜單,作為公示函數(shù),提供從各個子模塊返回主菜單或者退出,程序以下:voidback(){ intn,m,w; do { puts("**************************************************\n"); puts("1.返回主菜單2.退出\n"); scanf("%d",&m); if(m!=1&&m!=2) { w=1; getchar(); } else{w=0;} }while(w==1); if(m==2) { puts("**************************************************\n"); printf("謝謝使用!\n\n"); exit(0); } if(m==1) { do { puts("*******************通訊錄管理系統(tǒng)*****************\n"); puts("************************菜單**********************\n"); puts("1.顯示通訊錄\n"); puts("2.查找\n"); puts("3.更新通訊錄\n"); puts("4.退出"); puts("\n**************************************************\n"); printf("請選擇功效(1-4):"); scanf("%d",&n); if(n<1||n>4) { w=1; getchar(); } else{w=0;} }while(w==1); puts("\n**************************************************\n"); switch(n)/*選擇功效*/ { case1:list();break;/*列出通訊錄*/ case2:find();break;/*查找*/ case3:alter();break;/*更新通訊錄*/ case4:printf("謝謝使用!\n\n");exit(0); /*退出*/ } }}顯示通訊錄模塊【分析】要從文獻(xiàn)讀入統(tǒng)計,還要統(tǒng)計統(tǒng)計的總個數(shù)。由于讀入文獻(xiàn)的某些基本功效在其它地方還可能要用到,為了方便,在此都寫成對應(yīng)的功效函數(shù),這樣程序看起來構(gòu)造更簡樸更清晰?!境绦颉縱oidlist()/*讀入數(shù)據(jù)并顯示*/{ n=loadfiles(); printf_files(n-1); printf("\n"); back();/*返回主菜單或者退出*/}注:這里n作為全局變量,統(tǒng)計文獻(xiàn)統(tǒng)計的總個數(shù)。loadfiles():讀入統(tǒng)計函數(shù)?!境绦颉縤ntloadfiles(){ FILE*fp; inti; if((fp=fopen("通訊錄.txt","r"))==NULL)/*判斷文獻(xiàn)與否存在*/ { printf("不能打開文獻(xiàn)\n"); return0; } for(i=0;!feof(fp);i++)/*從文獻(xiàn)讀入數(shù)據(jù),保存在per構(gòu)造體數(shù)組中*/ fscanf(fp,"%s%s%s%s",per[i].name,per[i].address,per[i].number,per[i].email); fclose(fp);/*關(guān)閉文獻(xiàn)*/ return(i);/*返回統(tǒng)計個數(shù)*/}printf_one():顯示一條信息?!痉治觥繛榱朔奖忝織l統(tǒng)計的顯示及修改,在此特意設(shè)計了該函數(shù)?!境绦颉縱oidprintf_one(inti){ printf("%s%s%s%s\n",per[i].name,per[i].address,per[i].number,per[i].email);}printf_files():顯示n條信息。【程序】voidprintf_files(intn){ intj; printf("姓名工作地址電話Email\n"); for(j=0;j<n;j++)/*用for循環(huán)實現(xiàn)統(tǒng)計的全部顯示*/ printf_one(j); getch();}這樣就實現(xiàn)了顯示通訊錄的功效,以下圖:查找模塊【分析】要實現(xiàn)通過姓名或者電話號碼來查找統(tǒng)計,需要判斷鍵入的姓名(電話號碼)在文獻(xiàn)中與否對應(yīng)存在。用條件判斷語句選擇是用哪種方式查找。find():查找函數(shù)?!境绦颉縱oidfind(){ inti,k,p=-1;/*p初賦值-1,用來背面判斷要查找的內(nèi)容存不存在*/ charm[100],d[100]; n=loadfiles();/*載入文獻(xiàn)統(tǒng)計并統(tǒng)計總信息條數(shù)*/ printf("\n*********************查找功效*********************\n"); printf("按什么查找?\n"); printf("1.姓名2.電話號碼\n"); scanf("%d",&k); if(k==1) { printf("請輸入姓名:"); scanf("%s",&m); for(i=0;i<n;i++) { if(strcmp(m,per[i].name)==0)/*判斷鍵入的名字在通訊錄中有無*/ { p=i;/*如果有,p被賦值*/ puts("\n**************************************************\n"); printf("姓名工作地址電話Email\n"); printf("%s%s%s%s\n\n",per[p].name,per[p].address,per[p].number,per[p].email); break; } } if(p==-1) /*p沒有被賦值,闡明輸入的姓名統(tǒng)計中沒有*/ printf("\n沒有找到!\n"); } elseif(k==2) { printf("請輸入電話號碼:"); scanf("%s",&d); for(i=0;i<n;i++) { if(strcmp(d,per[i].number)==0)/*判斷鍵入的電話號碼在通訊錄中有無*/ { p=i;/*如果有,p被賦值*/ puts("\n**************************************************\n"); printf("姓名工作地址電話Email\n"); printf("%s%s%s%s\n\n",per[p].name,per[p].address,per[p].number,per[p].email); break; } }if(p==-1) /*p沒有被賦值,闡明輸入的姓名統(tǒng)計中沒有*/ printf("\n沒有找到!\n\n"); } else printf("\n輸入錯誤!\n"); back();/*返回主菜單或者退出*/}這樣就實現(xiàn)了統(tǒng)計查找功效。以下圖:更新通訊錄模塊(此模塊運行截圖將在“系統(tǒng)運行”中給出)圖3更新功效模塊更新刪除修改增加【分析】這個模塊包含三個功效:更新、增加圖3更新功效模塊更新刪除修改增加★choose():先定義一種更新通訊錄主模塊函數(shù),用于選擇對通訊錄進(jìn)行如何的更新。【程序】voidchoose(){ intn; puts("*******************統(tǒng)計更新菜單*******************\n"); puts("1.修改\n"); puts("2.增加\n"); puts("3.刪除\n"); puts("**************************************************\n"); printf("選擇功效(1-3):"); scanf("%d",&n); switch(n)/*選擇功效*/ { case1:alt();break; case2:add();break; case3:del();break; default:printf("\n輸入錯誤!\n");back();/*返回主菜單或者退出*/ }}修改子模塊【分析】為了是更新子功效簡潔清晰,這里特意定義了choose(),alter(),alt()三個函數(shù)并有所嵌套。alt():子修改函數(shù),用于修改單個統(tǒng)計?!境绦颉縱oidalt(){ inti,p=-1,a,n;/*p=-1的功效和前面的相似*/ charm[100]; n=loadfiles();/*載入文獻(xiàn)統(tǒng)計并統(tǒng)計總信息條數(shù)*/ puts("\n*****************統(tǒng)計修改模塊*********************\n"); printf_files(n);/*顯示通訊錄*/ puts("**************************************************\n"); printf("輸入要修改人的姓名:\n"); scanf("%s",&m);for(i=0;i<n;i++) { if(strcmp(m,per[i].name)==0)/*判斷鍵入的名字在通訊錄中有無*/ { p=i; printf("\n姓名工作地址電話Email\n"); printf("%s%s%s%s\n",per[p].name,per[p].address,per[p].number,per[p].email); break; } } if(p==-1)/*p沒有被賦值,闡明輸入的姓名統(tǒng)計中沒有*/ { printf("輸入錯誤!\n"); back(); /*返回主菜單或者退出*/ } puts("**************************************************\n"); printf("請輸入要修改的選項:\n");/*選擇要修改的選項*/ printf("1.姓名\n"); printf("2.工作地點\n"); printf("3.電話號碼\n"); printf("4.Email\n"); scanf("%d",&a); switch(a)/*選擇后修改構(gòu)造體*/ { case1:printf("姓名改為:");scanf("%s",per[p].name);break; case2:printf("工作地點改為:");scanf("%s",per[p].address);break; case3:printf("電話號碼改為:");scanf("%s",per[p].number);break; case4:printf("Email改為:");scanf("%s",per[p].email);break; default:printf("輸入錯誤!");back();/*不想更改能夠按別的鍵鍵返回主菜單或退出*/ }}alter():主修改函數(shù),并將修改后的新統(tǒng)計保存到文獻(xiàn)中?!境绦颉縱oidalter(){ FILE*fp1; intj,n; if((fp1=fopen("通訊錄.txt","r+"))==NULL)/*用讀寫的方式打開文獻(xiàn)*/ { printf("不能打開文獻(xiàn)"); exit(0); } n=loadfiles();/*載入文獻(xiàn)統(tǒng)計并統(tǒng)計總信息條數(shù)*/ choose();/*調(diào)用更新主模塊函數(shù)*/ for(j=0;j<n;j++)/*用for循環(huán)將更新后的內(nèi)容覆蓋保存到文獻(xiàn)里面*/ { fputs(per[j].name,fp1);fputs("\t",fp1); fputs(per[j].address,fp1);fputs("\t",fp1); fputs(per[j].number,fp1);fputs("\t",fp1); fputs(per[j].email,fp1);fputs("\t",fp1);fputs("\n",fp1); } fclose(fp1);/*關(guān)閉文獻(xiàn)*/ puts("\n**************************************************"); printf("保存成功!\n"); back();/*返回主菜單或者退出*/}增加子模塊【分析】增加子模塊比較簡樸,用追加的方式打開文獻(xiàn)并追加統(tǒng)計就能夠了。add():增加函數(shù)?!境绦颉縱oidadd(){ FILE*fp2; n=loadfiles();/*載入文獻(xiàn)統(tǒng)計并統(tǒng)計總信息條數(shù)*/ printf("\n******************增加統(tǒng)計模塊********************\n\n"); printf("姓名:"); scanf("%s",per[n].name); printf("工作地點:"); scanf("%s",per[n].address); printf("電話號碼:"); scanf("%s",per[n].number); printf("Email:"); scanf("%s",per[n].email); if((fp2=fopen("通訊錄.txt","a"))==NULL)/*用追加方式打開文獻(xiàn)*/ { printf("不能打開文獻(xiàn)"); exit(0); } fputs(per[n].name,fp2);fputs("\t",fp2); fputs(per[n].address,fp2);fputs("\t",fp2); fputs(per[n].number,fp2);fputs("\t",fp2); fputs(per[n].email,fp2);fputs("\t",fp2);fputs("\n",fp2); fclose(fp2);/*關(guān)閉文獻(xiàn)*/ puts("**************************************************\n"); printf("保存成功!\n\n"); back();/*返回主菜單或者退出*/}刪除子模塊【分析】用前面查找的辦法找到要刪除的單個統(tǒng)計,再通過構(gòu)造體數(shù)組賦值的辦法從這個文獻(xiàn)起后一種文獻(xiàn)賦值給前一種文獻(xiàn),再把錢n-2個構(gòu)造體寫到文獻(xiàn)中去。del():刪除函數(shù)?!境绦颉浚ú糠志幊坦πШ颓懊娴耐瑯?,不再贅述)voiddel(){ FILE*fp3; inti,j,k,p=-1,n; charm[100]; printf("\n*****************刪除統(tǒng)計模塊*********************\n\n"); n=loadfiles(); printf_files(n-1);/*這里特意是n-1,是為了避免重復(fù)刪除時出現(xiàn)最后一條統(tǒng)計重復(fù)出現(xiàn)的狀況發(fā)生,在系統(tǒng)運行中將給出調(diào)試過程*/ puts("\n**************************************************\n"); printf("輸入要刪除統(tǒng)計的姓名:\n"); scanf("%s",m); for(i=0;i<n;i++) { if(strcmp(m,per[i].name)==0) { p=i; printf("\n姓名工作地址電話Email\n"); printf("%s%s%s%s\n",per[p].name,per[p].address,per[p].number,per[p].email); puts("**************************************************\n"); for(k=p;k<n-2;k++) per[k]=per[k+1];/*背面的構(gòu)造體數(shù)組往前推,將要刪除的覆蓋掉*/ if((fp3=fopen("通訊錄.txt","w"))==NULL) { printf("不能打開文獻(xiàn)"); exit(0); } for(j=0;j<n-2;j++)/*這里不是n-1而是n-2,由于已經(jīng)刪除了一條統(tǒng)計*/ { fputs(per[j].name,fp3);fputs("\t",fp3); fputs(per[j].address,fp3);fputs("\t",fp3); fputs(per[j].number,fp3);fputs("\t",fp3); fputs(per[j].email,fp3);fputs("\t",fp3);fputs("\n",fp3); } fclose(fp3); printf("刪除成功!\n\n"); break; } } if(p==-1) { printf("\n輸入錯誤!\n"); back(); } back();}退出功效【分析】這個也很簡樸,在switch中自動退出或用exit(0)實現(xiàn)退出。系統(tǒng)運行在這里將演示更新“通訊錄功效”的過程。在主菜單中選擇“3.更新通訊錄”,以下圖:⑴選擇修改,以下圖:輸入孔明,回車,修改工作地點為西蜀,以下圖:返回主菜單,顯示通訊錄,以下圖:“孔明”的“工作地點”已經(jīng)變成“西蜀”,修改成功。⑵選擇增加,以下圖:輸入新統(tǒng)計,回車,以下圖:返回主菜單,顯示通訊錄,以下圖:華佗來“上班”了,添加成功。⑶選擇刪除,以下圖:輸入關(guān)羽,回車,以下圖:返回主菜單,顯示通訊錄,以下圖:關(guān)羽“走麥城”去了,刪除成功?!镉嘘P(guān)在del()函數(shù)里面要寫成printf_files(n-1)的因素:這里特意是n-1,是為了避免重復(fù)刪除時出現(xiàn)最后一條統(tǒng)計重復(fù)出現(xiàn)的狀況發(fā)生。如果寫成printf_files(n),并且在刪除統(tǒng)計后再進(jìn)入刪除菜單將出現(xiàn)下圖的狀況:(這里刪除張飛)這是由于n=loadfiles()中n的值沒有隨著一條統(tǒng)計的刪除而減1造成。因此要改丞printf_files(n-1),并且這樣改了之后不管持續(xù)刪除多少條統(tǒng)計都不會出現(xiàn)最后一天統(tǒng)計重復(fù)出現(xiàn)的狀況。其之后的for(j=0;j<n-2;j++)中的n-2也是同樣的道理。有關(guān)在程序中設(shè)計back()函數(shù)的好處:只要對鍵入的東西進(jìn)行判斷,如果子功效結(jié)束或輸入錯誤,用back()函數(shù)就能返回主菜單,避免輸入錯誤而必須頻繁重新打開程序。有了back()函數(shù),實現(xiàn)了不用重新啟動就能重復(fù)執(zhí)行不同功效,并且我特旨在每一種可能結(jié)束程序的地方都添加了back()函數(shù)。只舉下面幾個例子:總結(jié)在這次c語言程序設(shè)計實習(xí),我重要碰到下面3個問題:1.缺少頭文獻(xiàn),造成有些看不懂的錯誤或警告出現(xiàn);2.文獻(xiàn)用不同的方式打開所實現(xiàn)的功效不同,有的是追加,有的是直接覆蓋;3.忘了函數(shù)定義一定要寫在其它語句前面,造成出現(xiàn)好多個錯誤。但是在這次實習(xí)中,我也有諸多收獲:1.我經(jīng)慣用調(diào)試功效一步一步跟蹤程序的運行(前面那個n-1的問題就是通過調(diào)試發(fā)現(xiàn)的),觀察變量的變化;2.有些c語言懂得忘記了,通過看書,重新溫習(xí),并且通過實踐加強(qiáng)了印象;3.有些難題通過老師的指點和自己獨立思考后得到解決后,感到很有成就感;4.由于我的c語言基礎(chǔ)較好,同窗們經(jīng)常找我?guī)兔鉀Q問題,使我在這次實習(xí)中接觸了不同的課題和不同的程序設(shè)計思路,鍛煉理解決問題的能力,提高了c語言實際應(yīng)用能力。附1:程序源代碼#include<stdio.h>#include<stdlib.h>#include<conio.h>#include<string.h>#defineN100intn;//返回主菜單voidlist();voidfind();voidalter();voidback(){ intn,m,w; do { puts("**************************************************\n"); puts("1.返回主菜單2.退出\n"); scanf("%d",&m); if(m!=1&&m!=2) { w=1; getchar(); } else{w=0;} }while(w==1); if(m==2) { puts("**************************************************\n"); printf("謝謝使用!\n\n"); exit(0); } if(m==1) { do { puts("*******************通訊錄管理系統(tǒng)*****************\n"); puts("************************菜單**********************\n"); puts("1.顯示通訊錄\n"); puts("2.查找\n"); puts("3.更新通訊錄\n"); puts("4.退出"); puts("\n**************************************************\n"); printf("請選擇功效(1-4):"); scanf("%d",&n); if(n<1||n>4) { w=1; getchar(); } else{w=0;} }while(w==1); puts("\n**************************************************\n"); switch(n)/*選擇功效*/ { case1:list();break;/*列出通訊錄*/ case2:find();break;/*查找*/ case3:alter();break;/*更新通訊錄*/ case4:printf("謝謝使用!\n\n");exit(0); /*退出*/ } }}//構(gòu)造體structpersons{ charname[100]; charaddress[100]; charnumber[100]; charemail[100];}per[N];/*N為通訊錄總?cè)藬?shù)*///載入統(tǒng)計intloadfiles(){ FILE*fp; inti; if((fp=fopen("通訊錄.txt","r"))==NULL) { printf("不能打開文獻(xiàn)\n"); return0; } for(i=0;!feof(fp);i++)/*從文獻(xiàn)讀入數(shù)據(jù),保存在per構(gòu)造體數(shù)組中*/ fscanf(fp,"%s%s%s%s",per[i].name,per[i].address,per[i].number,per[i].email); fclose(fp); return(i);/*返回信息個數(shù)*/}//顯示一條信息voidprintf_one(inti){ printf("%s%s%s%s\n",per[i].name,per[i].address,per[i].number,per[i].email);}//顯示n條信息voidprintf_files(intn){ intj; printf("姓名工作地址電話Email\n"); for(j=0;j<n;j++) printf_one(j); getch();}//列出通訊錄voidlist()/*讀入數(shù)據(jù)并顯示*/{ n=loadfiles(); printf_files(n-1); printf("\n"); back();}//查找統(tǒng)計voidfind(){ inti,k,p=-1; charm[100],d[100]; n=loadfiles();/*總信息條數(shù)*/ printf("\n*********************查找功效*********************\n"); printf("按什么查找?\n"); printf("1.姓名2.電話號碼\n"); scanf("%d",&k); if(k==1) { printf("請輸入姓名:"); scanf("%s",&m); for(i=0;i<n;i++) { if(strcmp(m,per[i].name)==0)/*判斷鍵入的名字在通訊錄中有無*/ { p=i; puts("\n**************************************************\n"); printf("姓名工作地址電話Email\n"); printf("%s%s%s%s\n\n",per[p].name,per[p].address,per[p].number,per[p].email); break; } } if(p==-1) /*p沒有被賦值,闡明輸入的姓名統(tǒng)計中沒有*/ printf("\n沒有找到!\n"); } elseif(k==2) { printf("請輸入電話號碼:"); scanf("%s",&d); for(i=0;i<n;i++) { if(strcmp(d,per[i].number)==0)/*判斷鍵入的電話號碼在通訊錄中有無*/ { p=i; puts("\n**************************************************\n"); printf("姓名工作地址電話Email\n"); printf("%s%s%s%s\n\n",per[p].name,per[p].address,per[p].number,per[p].email); break; } }if(p==-1) printf("\n沒有找到!\n\n"); } else printf("\n輸入錯誤!\n"); back();}voidalt()/*修改函數(shù)*/{ inti,p=-1,a,n; charm[100]; n=loadfiles(); puts("\n*****************統(tǒng)計修改模塊*********************\n"); printf_files(n); puts("**************************************************\n"); printf("輸入要修改人的姓名:\n"); scanf("%s",&m);for(i=0;i<n;i++) { if(strcmp(m,per[i].name)==0)/*判斷鍵入的名字在通訊錄中有無*/ { p=i; printf("\n姓名工作地址電話Email\n"); printf("%s%s%s%s\n",per[p].name,per[p].address,per[p].number,per[p].email); break; } } if(p==-1) { printf("輸入錯誤!\n"); back(); } puts("**************************************************\n"); printf("請輸入要修改的選項:\n"); printf("1.姓名\n"); printf("2.工作地點\n"); printf("3.電話號碼\n"); printf("4.Email\n"); scanf("%d",&a); switch(a) { case1:printf("姓名改為:");scanf("%s",per[p].name);break; case2:printf("工作地點改為:");scanf("%s",per[p].address);break; case3:printf("電話號碼改為:");scanf("%s",per[p].number);break; case4:printf("Email改為:");scanf("%s",per[p].email);break; default:printf("\n輸入錯誤!\n");back(); }}voidadd()/*增加函數(shù)*/{ FILE*fp2; n=loadfiles(); printf("\n******************增加統(tǒng)計模塊********************\n\n"); printf("姓名:"); scanf("%s",per[n].name); printf("工作地點:"); scanf("%s",per[n].address); printf("電話號碼:"); scanf("%s",per[n].number); printf("Email:"); scanf("%s",per[n].email); if((fp2=fopen("通訊錄.txt","a"))==NULL) { printf("不能打開文獻(xiàn)"); exit(0); } fputs(per[n].name,fp2);fputs("\t",fp2); fputs(per[n].address,fp2);fputs("\t",fp2); fputs(per[n].number,fp2);fputs("\t",fp2); fputs(per[n].email,fp2);fputs("\t",fp2);fputs("\n",fp2); fclose(fp2); puts("**************************************************\n"); printf("保存成功!\n\n"); back();}voiddel()/*刪除函數(shù)*/{ FILE*fp3; inti,j,k,p=-1,n; charm[100]; printf("\n*****************刪除統(tǒng)計模塊*********************\n\n"); n=loadfiles(); printf_files(n-1); puts("\n**************************************************\n"); printf("輸入要刪除統(tǒng)計的姓名:\n"); scanf("%s",m); for(i=0;i<n;i++) { if(strcmp(m,per[i].name)==0)/*判斷鍵入的名字在通訊錄中有無*/ { p=i; printf("\n姓名工作地址電話Email\n"); printf("%s%s%s%s\n",per[p].name,per[p].address,per[p].number,per[p].email); puts("**************************************************\n"); for(k=p;k<n-2;k++) { per[k]=per[k+1]; } if((fp3=fopen("通訊錄.txt","w"))==NULL) { printf("不能打開文獻(xiàn)"); exit(0); } for(j=0;j<n-2;j++) { fputs(per[j].name,fp3);fputs("\t",fp3); fputs(per[j].address,fp3);fputs("\t",fp3); fputs(per[j].number,fp3);fputs("\t",fp3); fputs(per[j]
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年全球及中國單水龍頭行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025-2030全球旋裝式空氣油分離器行業(yè)調(diào)研及趨勢分析報告
- 2025年全球及中國全向堆高AGV行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025年全球及中國服裝用粘膠長絲行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025-2030全球OA設(shè)備精密金屬制品行業(yè)調(diào)研及趨勢分析報告
- 2025年全球及中國IP67工業(yè)平板電腦行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025合作合同 展會活動合作協(xié)議
- 房屋代理買賣合同
- 基本建設(shè)年度借款合同
- 2025合同模板建設(shè)工程借款合同范本
- 小學(xué)高年級數(shù)學(xué)閱讀能力的培養(yǎng)與
- 包裝品質(zhì)彩盒外箱知識課件
- 神經(jīng)外科課件:神經(jīng)外科急重癥
- 頸復(fù)康腰痛寧產(chǎn)品知識課件
- 2024年低壓電工證理論考試題庫及答案
- 微電網(wǎng)市場調(diào)查研究報告
- 《民航服務(wù)溝通技巧》教案第14課民航服務(wù)人員上行溝通的技巧
- MT/T 538-1996煤鉆桿
- 小學(xué)六年級語文閱讀理解100篇(及答案)
- CB/T 467-1995法蘭青銅閘閥
- 氣功修煉十奧妙
評論
0/150
提交評論