版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
PAGEPAGE25課程設(shè)計(jì)報(bào)告課程名稱C語言程序設(shè)計(jì)課題名稱通訊錄管理系統(tǒng)專業(yè)汽車服務(wù)班級(jí)0901班學(xué)號(hào)200902180114姓名伏鑠臻指導(dǎo)教師王寧陳多2010年9月12日
湖南工程學(xué)院課程設(shè)計(jì)任務(wù)書課程名稱C語言程序設(shè)計(jì)課題通訊錄管理系統(tǒng)專業(yè)班級(jí)汽車服務(wù)0901學(xué)生姓名伏鑠臻學(xué)號(hào)200902180114指導(dǎo)老師王寧陳多審批王寧陳多任務(wù)書下達(dá)日期2010年9月12日任務(wù)完成日期2010年9月13日通訊錄管理系統(tǒng)通訊錄管理系統(tǒng)要求分析及其主要功能1、問題描述:通過該系統(tǒng)實(shí)現(xiàn)對(duì)通訊錄信息進(jìn)行錄入、顯示、修改、刪除、插入、排序、保存等操作的管理。2、功能要求:1)、本系統(tǒng)采用一個(gè)包含N個(gè)數(shù)據(jù)的結(jié)構(gòu)體數(shù)組,每個(gè)數(shù)據(jù)的結(jié)構(gòu)應(yīng)當(dāng)包括:編號(hào)、姓名、電話號(hào)碼。2)本系統(tǒng)顯示這樣的菜單:請(qǐng)選擇系統(tǒng)功能項(xiàng):通訊信息錄入通訊信息顯示通訊信息保存通訊信息刪除通訊信息修改通訊信息查詢按編號(hào)查詢按姓名查詢按電話號(hào)碼查詢g.退出系統(tǒng)3)、執(zhí)行一個(gè)具體的功能之后,程序?qū)⒅匦嘛@示菜單。4)、將通訊信息保存到文件中。3、算法提示:1)、數(shù)據(jù)結(jié)構(gòu):結(jié)構(gòu)體類型數(shù)組2)、數(shù)據(jù)庫結(jié)構(gòu):下表構(gòu)成該系統(tǒng)的基本數(shù)據(jù)庫。編號(hào)姓名電話號(hào)碼charcharChar4、測(cè)試數(shù)據(jù):紀(jì)錄數(shù)205、其它對(duì)該系統(tǒng)有興趣的同可以在實(shí)現(xiàn)上述基本功能后,完善系統(tǒng)的其它功能功能模塊的劃分系統(tǒng)功能模塊圖:主菜單錄入顯示主菜單錄入顯示刪除修改保存查詢C查詢hacha查詢編號(hào)查詢姓名查詢電話查詢編號(hào)查詢姓名查詢電話查詢錄入:可以添加通訊錄記錄,依次輸入編號(hào)、姓名、電話號(hào)碼后,會(huì)提示是否繼續(xù)添加。顯示:可以以橫排形式輸出所有通訊錄里的記錄刪除:輸入欲刪除的那個(gè)人的名字后,會(huì)自動(dòng)刪除他(她)的記錄內(nèi)容查詢:可以選擇用姓名、電話、編號(hào)三種方式查詢修改:輸入欲修改的那個(gè)人的名字后,再依次輸入編號(hào)、姓名、年齡、電話號(hào)碼、即可完成修改保存:,輸入文件名(帶后綴名)后,即可將通訊錄信息保存到文件主要功能的實(shí)現(xiàn)詳細(xì)設(shè)計(jì)主函數(shù)voidemain()通過主函數(shù)main()利用無限次循環(huán)結(jié)構(gòu)for(;;)和switch()結(jié)構(gòu)實(shí)現(xiàn)各函數(shù)的調(diào)用。系統(tǒng)根據(jù)數(shù)字選項(xiàng)來調(diào)用函數(shù)。菜單選擇函數(shù)intmenu_select()這是一個(gè)無參函數(shù),主要實(shí)現(xiàn)“功能選擇”的界面,在這個(gè)界面里有顯示系統(tǒng)的九大功能,根據(jù)每個(gè)功能前面的序號(hào)進(jìn)行選擇。等執(zhí)行完每一個(gè)函數(shù)功能后,再自行返回該函數(shù)。輸入記錄函數(shù)intInput()這是一個(gè)無參函數(shù),用數(shù)組函數(shù)輸入所需記錄人員的信息。用字符sign來標(biāo)記是否將繼續(xù)記錄輸入信息。顯示記錄函數(shù)Display();此函數(shù)利用for循環(huán)從輸入第一個(gè)人的信息至最后一個(gè)人的信息全都顯示出來。使用if語句。刪除記錄函數(shù)Delete_a_record()用比較字符串處理函數(shù)strcmp()逐一比較輸入的字符串,是否相同,無相同,則顯示無此人,若輸入的字符串和s【】中的某一個(gè)相同,則用函數(shù)strcpy(),只取字符串1的地址,即刪去了字符串2的內(nèi)容,從而刪除記錄。流程圖如圖一。查詢記錄函數(shù)Query_a_record()該函數(shù)先用while循環(huán)來判斷查詢方式是否正確,再用if語句來判斷輸入的m的值,從而選擇查詢方式。如姓名查詢,同樣用strcmp()函數(shù)將輸入的姓名與s【】比較,若匹配則顯示此人信息,不匹配則顯示無此人。其它查詢方式類似。流程圖如圖二所示。輸入刪除的姓名輸入刪除的姓名輸出“通訊錄沒有此人”刪除該記錄YN輸入查詢的名稱判斷是否有此人判斷是否有此人輸出“通訊錄中沒此人”顯示此人所有信息YN開始開始結(jié)束結(jié)束圖一圖二修改數(shù)據(jù)函數(shù)Change()該函數(shù)先是調(diào)用strcmp()函數(shù)進(jìn)行匹配,若無匹配顯示無此人,若有則對(duì)該人的信息通過scanf()重新記錄,即對(duì)該人信息進(jìn)行修改。開始開始輸入修改的姓名判斷是否有此人輸出“通訊錄中無此人”依次輸入修改的內(nèi)容YN結(jié)束保存數(shù)據(jù)函數(shù)WritetoText(pe,n)通過文件指針來保存所要保存的文件。四、程序調(diào)試程序調(diào)試與分析在程序運(yùn)行前總有一些錯(cuò)誤或警告,最開始顯示主菜單函數(shù)后,當(dāng)進(jìn)入其他功能項(xiàng)時(shí)主菜單在TC屏幕上消失,后了解到用system(“c\s)可以控該現(xiàn)象使主菜單一直顯示。與此相似的還有system(“pause”)都是有關(guān)的函數(shù)。文件的保存沒有涉及了解,經(jīng)過查尋料了解到(fp=fopen(filename,"w"))==NULL這句話是說打開文件,打開只寫文件,若文件存在則文件長(zhǎng)度為0,即該文件消失,若文件不存在則建立該文件。而fprintf是寫數(shù)據(jù)到打開的文件中,調(diào)試過程中經(jīng)常因排版不太整齊而多次去修改,Printf和字符所在寬度影響排版。在通訊信息查詢這一模塊中,特別是對(duì)按編號(hào)查詢這一項(xiàng)與電話查詢和姓名查詢不一樣不能用strcmp()函數(shù)配對(duì)查找因?yàn)闆]有留意字符串?dāng)?shù)組來定義數(shù)編號(hào)。運(yùn)行時(shí)程序出現(xiàn)了錯(cuò)誤后經(jīng)該正將子符串?dāng)?shù)組改為字符型。程序雖能運(yùn)行但按編號(hào)查詢時(shí)運(yùn)行結(jié)果不能正常輸出查詢信息還自動(dòng)終止程序。經(jīng)過再次檢測(cè)原來是最基本scanf()函程序數(shù)中取地址的&沒有寫。當(dāng)加上程序正常運(yùn)行。測(cè)試:1).顯示的主菜單界面在開始由于錄入界面通訊信息顯示在函數(shù)中寫成了保存而出現(xiàn)下面界面,經(jīng)過修改后正確顯示。2).錄入界面:在錄入的時(shí)候經(jīng)常因?yàn)榘聪翬NTER鍵太快,而導(dǎo)致一些信息的錄入損失,后檢測(cè)是因?yàn)榫幪?hào)的查詢方式有誤導(dǎo)致,修改后無次現(xiàn)象,程序正常運(yùn)行。3).顯示界面:由于受字符串的寬度影響,姓名過長(zhǎng)時(shí)導(dǎo)致年齡不能對(duì)齊顯示,增加域?qū)捄蟠爽F(xiàn)象可避免。4).刪除界面:5).查詢界面:以姓名查詢方式為例:由于程序在編號(hào)查詢時(shí)的程序代碼編寫錯(cuò)誤,程序雖然能運(yùn)行,但是按編號(hào)查詢時(shí)顯示無此人,經(jīng)過對(duì)程序的修改最終正常運(yùn)行。6).修改界面:7).保存界面:8)退出系統(tǒng):總結(jié)在這一次C語言別課程設(shè)計(jì),通過對(duì)程序的設(shè)計(jì)進(jìn)一步提高了自己對(duì)程序的認(rèn)識(shí),也收獲了各方面許多東西在課程設(shè)計(jì)方面,加深了已有知識(shí)的了解和鞏固,如對(duì)字符串處理函數(shù)的認(rèn)識(shí),對(duì)for循環(huán)與while循環(huán)的認(rèn)識(shí)與使用。更加了解了自己的模糊概念,在此次程序設(shè)計(jì)中清晰明了。像reture語句,在此次設(shè)計(jì)中可以了解到可以將整個(gè)函數(shù)賦給n,即將return中的返回值賦給n。了解到一些新的知識(shí),如與系統(tǒng)有關(guān)的函數(shù)system()。還有文件的保存,以前從未涉及的知識(shí)這次得以擴(kuò)充。還有有重新體會(huì)到了文檔的編版,受益匪淺。不僅在學(xué)習(xí)方面在與同學(xué)合作過程中體會(huì)到了同學(xué)間合作的快樂。在設(shè)計(jì)過程中相互請(qǐng)教,相互討論如何使程序正確運(yùn)行。經(jīng)不斷的合作修改終將程序運(yùn)行出來。不僅如此,我還在老師要求的基礎(chǔ)上,參考其它資料,在此次設(shè)計(jì)中對(duì)于信息的錄入還添加了年齡這一信息的記錄,完善程序。同時(shí)讓我體會(huì)到在電腦上一個(gè)簡(jiǎn)單的記錄運(yùn)行之后所付出的努力,可想而之,復(fù)雜的運(yùn)行操作后會(huì)有更大更復(fù)雜的一系列程序構(gòu)成。讓我體會(huì)到程序的博大精深和奧妙無窮。在剛開始接受這個(gè)程序設(shè)計(jì)課題時(shí),原本以為自己什么也不會(huì)做,但隨著對(duì)其它程序的理解,和對(duì)相關(guān)資料的查找了解,慢慢的加深了對(duì)該課題的了解與掌握,直至和大家一起把程序運(yùn)行出來。同時(shí)發(fā)現(xiàn)了許多缺點(diǎn),一不小心就出現(xiàn)錯(cuò)誤。像scanf()函數(shù)的使用,既然忘了寫&,而且越簡(jiǎn)單卻越難找出錯(cuò)誤,所以一定要細(xì)心,而且要有耐心??傊?,這次程序設(shè)計(jì)使我得到了巨大的收獲。附件主要原程序代碼/*10.3.2源程序*//******頭文件(.h)***********/#include"stdio.h"/*I/O函數(shù)*/#include"stdlib.h"/*標(biāo)準(zhǔn)庫函數(shù)*/#include"string.h"/*字符串函數(shù)*/#include"ctype.h"/*字符操作函數(shù)*/#defineM50/*定義常數(shù)表示記錄數(shù)*/typedefstruct/*定義數(shù)據(jù)結(jié)構(gòu)*/{charname[20];/*姓名*/charunits[30];/*單位*/chartele[10];/*電話*/}ADDRESS;/******以下是函數(shù)原型*******/intenter(ADDRESSt[]);/*輸入記錄*/voidlist(ADDRESSt[],intn);/*顯示記錄*/voidsearch(ADDRESSt[],intn);/*按姓名查找顯示記錄*/intdelete(ADDRESSt[],intn);/*刪除記錄*/intadd(ADDRESSt[],intn);/*插入記錄*/voidsave(ADDRESSt[],intn);/*記錄保存為文件*/intload(ADDRESSt[]);/*從文件中讀記錄*/voiddisplay(ADDRESSt[]);/*按序號(hào)查找顯示記錄*/voidsort(ADDRESSt[],intn);/*按姓名排序*/voidqseek(ADDRESSt[],intn);/*快速查找記錄*/voidcopy();/*文件復(fù)制*/voidprint(ADDRESStemp);/*顯示單條記錄*/intfind(ADDRESSt[],intn,char*s);/*查找函數(shù)*/intmenu_select();/*主菜單函數(shù)*//******主函數(shù)開始*******/main(){inti;ADDRESSadr[M];/*定義結(jié)構(gòu)體數(shù)組*/intlength;/*保存記錄長(zhǎng)度*/clrscr();/*清屏*/for(;;)/*無限循環(huán)*/{switch(menu_select())/*調(diào)用主菜單函數(shù),返回值整數(shù)作開關(guān)語句的條件*/{case0:length=enter(adr);break;/*輸入記錄*/case1:list(adr,length);break;/*顯示全部記錄*/case2:search(adr,length);break;/*查找記錄*/case3:length=delete(adr,length);break;/*刪除記錄*/case4:length=add(adr,length);break;/*插入記錄*/case5:save(adr,length);break;/*保存文件*/case6:length=load(adr);break;/*讀文件*/case7:display(adr);break;/*按序號(hào)顯示記錄*/case8:sort(adr,length);break;/*按姓名排序*/case9:qseek(adr,length);break;/*快速查找記錄*/case10:copy();break;/*復(fù)制文件*/case11:exit(0);/*如返回值為11則程序結(jié)束*/}}}/*菜單函數(shù),函數(shù)返回值為整數(shù),代表所選的菜單項(xiàng)*/menu_select(){chars[80];intc;gotoxy(1,25);/*將光標(biāo)定為在第25行,第1列*/printf("pressanykeyentermenu\n");/*提示壓任意鍵繼續(xù)*/getch();/*讀入任意字符*/clrscr();/*清屏*/gotoxy(1,1);printf("********************MENU*********************\n\n");printf("0.Enterrecord\n");printf("1.Listthefile\n");printf("2.Searchrecordonname\n");printf("3.Deletearecord\n");printf("4.addrecord\n");printf("5.Savethefile\n");printf("6.Loadthefile\n");printf("7.displayrecordonorder\n");printf("8.sorttomakenewfile\n");printf("9.Quickseekrecord\n");printf("10.copythefiletonewfile\n");printf("11.Quit\n");printf("***********************************************\n");do{printf("\nEnteryouchoice(0~11):");/*提示輸入選項(xiàng)*/scanf("%s",s);/*輸入選擇項(xiàng)*/c=atoi(s);/*將輸入的字符串轉(zhuǎn)化為整型數(shù)*/}while(c<0||c>11);/*選擇項(xiàng)不在0~11之間重輸*/returnc;/*返回選擇項(xiàng),主程序根據(jù)該數(shù)調(diào)用相應(yīng)的函數(shù)*/}/***輸入記錄,形參為結(jié)構(gòu)體數(shù)組,函數(shù)值返回類型為整型表示記錄長(zhǎng)度*/intenter(ADDRESSt[]){inti,n;char*s;clrscr();/*清屏*/printf("\npleaseinputnum\n");/*提示信息*/scanf("%d",&n);/*輸入記錄數(shù)*/printf("pleaseinputrecord\n");/*提示輸入記錄*/printf("nameunittelephone\n");printf("\n");for(i=0;i<n;i++){scanf("%s%s%s",t[i].name,t[i].units,t[i].tele);/*輸入記錄*/printf("\n");}returnn;/*返回記錄條數(shù)*/}/*顯示記錄,參數(shù)為記錄數(shù)組和記錄條數(shù)*/voidlist(ADDRESSt[],intn){inti;clrscr();printf("\n\n*******************ADDRESS******************\n");printf("nameunittelephone\n");printf("\n");for(i=0;i<n;i++)printf("%-20s%-30s%-10s\n",t[i].name,t[i].units,t[i].tele);if((i+1)%10==0)/*判斷輸出是否達(dá)到10條記錄*/{printf("Pressanykeycontinue...\n");/*提示信息*/getch();/*壓任意鍵繼續(xù)*/}printf("************************end*******************\n");}/*查找記錄*/voidsearch(ADDRESSt[],intn){chars[20];/*保存待查找姓名字符串*/inti;/*保存查找到結(jié)點(diǎn)的序號(hào)*/clrscr();/*清屏*/printf("pleasesearchname\n");scanf("%s",s);/*輸入待查找姓名*/i=find(t,n,s);/*調(diào)用find函數(shù),得到一個(gè)整數(shù)*/if(i>n-1)/*如果整數(shù)i值大于n-1,說明沒找到*/printf("notfound\n");elseprint(t[i]);/*找到,調(diào)用顯示函數(shù)顯示記錄*/}/*顯示指定的一條記錄*/voidprint(ADDRESStemp){clrscr();printf("\n\n********************************************\n");printf("nameunittelephone\n");printf("\n");printf("%-20s%-30s%-10s\n",,temp.units,temp.tele);printf("**********************end***********************\n");}/*查找函數(shù),參數(shù)為記錄數(shù)組和記錄條數(shù)以及姓名s*/intfind(ADDRESSt[],intn,char*s){inti;for(i=0;i<n;i++)/*從第一條記錄開始,直到最后一條*/{if(strcmp(s,t[i].name)==0)/*記錄中的姓名和待比較的姓名是否相等*/returni;/*相等,則返回該記錄的下標(biāo)號(hào),程序提前結(jié)結(jié)束*/}returni;/*返回i值*/}/*刪除函數(shù),參數(shù)為記錄數(shù)組和記錄條數(shù)*/intdelete(ADDRESSt[],intn){chars[20];/*要?jiǎng)h除記錄的姓名*/intch=0;inti,j;printf("pleasedeletedname\n");/*提示信息*/scanf("%s",s);/*輸入姓名*/i=find(t,n,s);/*調(diào)用find函數(shù)*/if(i>n-1)/*如果i>n-1超過了數(shù)組的長(zhǎng)度*/printf("nofoundnotdeleted\n");/*顯示沒找到要?jiǎng)h除的記錄*/else{print(t[i]);/*調(diào)用輸出函數(shù)顯示該條記錄信息*/printf("Areyousuredeleteit(1/0)\n");/*確認(rèn)是否要?jiǎng)h除*/scanf("%d",&ch);/*輸入一個(gè)整數(shù)0或1*/if(ch==1)/*如果確認(rèn)刪除整數(shù)為1*/{for(j=i+1;j<n;j++)/*刪除該記錄,實(shí)際后續(xù)記錄前移*/{strcpy(t[j-1].name,t[j].name);/*將后一條記錄的姓名拷貝到前一條*/strcpy(t[j-1].units,t[j].units);/*將后一條記錄的單位拷貝到前一條*/strcpy(t[j-1].tele,t[j].tele);/*將后一條記錄的電話拷貝到前一條*/}n--;/*記錄數(shù)減1*/}}returnn;/*返回記錄數(shù)*/}/*插入記錄函數(shù),參數(shù)為結(jié)構(gòu)體數(shù)組和記錄數(shù)*/intadd(ADDRESSt[],intn)/*插入函數(shù),參數(shù)為結(jié)構(gòu)體數(shù)組和記錄數(shù)*/{ADDRESStemp;/*新插入記錄信息*/inti,j;chars[20];/*確定插入在哪個(gè)記錄之前*/printf("pleaseinputrecord\n");printf("************************************************\n");printf("nameunittelephone\n");printf("\n");scanf("%s%s%s",,temp.units,temp.tele);/*輸入插入信息*/printf("\n");printf("pleaseinputlocatename\n");scanf("%s",s);/*輸入插入位置的姓名*/i=find(t,n,s);/*調(diào)用find,確定插入位置*/for(j=n-1;j>=i;j--)/*從最后一個(gè)結(jié)點(diǎn)開始向后移動(dòng)一條*/{strcpy(t[j+1].name,t[j].name);/*當(dāng)前記錄的姓名拷貝到后一條*/strcpy(t[j+1].units,t[j].units);/*當(dāng)前記錄的單位拷貝到后一條*/strcpy(t[j+1].tele,t[j].tele);/*當(dāng)前記錄的電話拷貝到后一條*/}strcpy(t[i].name,);/*將新插入記錄的姓名拷貝到第i個(gè)位置*/strcpy(t[i].units,temp.units);/*將新插入記錄的單位拷貝到第i個(gè)位置*/strcpy(t[i].tele,temp.tele);/*將新插入記錄的電話拷貝到第i個(gè)位置*/n++;/*記錄數(shù)加1*/returnn;/*返回記錄數(shù)*/}/*保存函數(shù),參數(shù)為結(jié)構(gòu)體數(shù)組和記錄數(shù)*/voidsave(ADDRESSt[],intn){inti;FILE*fp;/*指向文件的指針*/if((fp=fopen("record.txt","wb"))==NULL)/*打開文件,并判斷打開是否正常*/{printf("cannotopenfile\n");/*沒打開*/exit(1);/*退出*/}printf("\nSavingfile\n");/*輸出提示信息*/fprintf(fp,"%d",n);/*將記錄數(shù)寫入文件*/fprintf(fp,"\r\n");/*將換行符號(hào)寫入文件*/for(i=0;i<n;i++){fprintf(fp,"%-20s%-30s%-10s",t[i].name,t[i].units,t[i].tele);/*格式寫入記錄*/fprintf(fp,"\r\n");/*將換行符號(hào)寫入文件*/}fclose(fp);/*關(guān)閉文件*/printf("****savesuccess***\n");/*顯示保存成功*/}/*讀入函數(shù),參數(shù)為結(jié)構(gòu)體數(shù)組*/intload(ADDRESSt[]){inti,n;FILE*fp;/*指向文件的指針*/if((fp=fopen("record.txt","rb"))==NULL)/*打開文件*/{printf("cannotopenfile\n");/*不能打開*/exit(1);/*退出*/}fscanf(fp,"%d",&n);/*讀入記錄數(shù)*/for(i=0;i<n;i++)fscanf(fp,"%20s%30s%10s",t[i].name,t[i].units,t[i].tele);/*按格式讀入記錄*/fclose(fp);/*關(guān)閉文件*/printf("Youhavesuccessreaddatafromfile!!!\n");/*顯示保存成功*/returnn;/*返回記錄數(shù)*/}/*按序號(hào)顯示記錄函數(shù)*/voiddisplay(ADDRESSt[]){intid,n;FILE*fp;/*指向文件的指針*/if((fp=fopen("record.txt","rb"))==NULL)/*打開文件*/{printf("cannotopenfile\n");/*不能打開文件*/exit(1);/*退出*/}printf("Enterordernumber...\n");/*顯示信息*/scanf("%d",&id);/*輸入序號(hào)*/fscanf(fp,"%d",&n);/*從文件讀入記錄數(shù)*/if(id>=0&&id<n)/*判斷序號(hào)是否在記錄范圍內(nèi)*/{fseek(fp,(id-1)*sizeof(ADDRESS),1);/*移動(dòng)文件指針到該記錄位置*/print(t[id]);/*調(diào)用輸出函數(shù)顯示該記錄*/printf("\r\n");}elseprintf("no%dnumberrecord!!!\n",id);/*如果序號(hào)不合理顯示信息*/fclose(fp);/*關(guān)閉文件*/}/*排序函數(shù),參數(shù)為結(jié)構(gòu)體數(shù)組和記錄數(shù)*/voidsort(ADDRESSt[],intn){inti,j,flag;ADDRESStemp;/*臨時(shí)變量做交換數(shù)據(jù)用*/for(i=0;i<n;i++){flag=0;/*設(shè)標(biāo)志判斷是否發(fā)生過交換*/for(j=0;j<n-1;j++)if((strcmp(t[j].name,t[j+1].name))>0)/*比較大小*/{flag=1;strcpy(,t[j].name);/*交換記錄*/strcpy(temp.units,t[j].units);strcpy(temp.tele,t[j].tele);strcpy(t[j].name,t[j+1].name);strcpy(t[j].units,t[j+1].units);strcpy(t[j].tele,t[j+1].tele);strcpy(t[j+1].name,);strcpy(t[j+1].units,temp.units);strcpy(t[j+1].tele,temp.tele);}if(flag==0)break;/*如果標(biāo)志為0,說明沒有發(fā)生過交換循環(huán)結(jié)束*/}printf("sortsucess!!!\n");/*顯示排序成功*/}/*快速查找,參數(shù)為結(jié)構(gòu)體數(shù)組和記錄數(shù)*/voidqseek(ADDRESSt[],intn){chars[20];intl,r,m;printf("\nPleasesortbeforeqseek!\n");/*提示確認(rèn)在查找之前,記錄是否已排序*/printf("pleaseenternameforqseek\n");/*提示輸入*/scanf("%s",s);/*輸入待查找的姓名*/l=0;r=n-1;/*設(shè)置左邊界與右邊界的初值*/while(l<=r)/*當(dāng)左邊界<=右邊界時(shí)*/{m=(l+r)/2;/*計(jì)算中間位置*/if(strcmp(t[m].name,s)==0)/*與中間結(jié)點(diǎn)姓名字段做比較判是否相等*/{print(t[m]);/*如果相等,則調(diào)用print函數(shù)顯示記錄信息*/return;/*返回*/}if(strcmp(t[m].name,s)<0)/*如果中間結(jié)點(diǎn)小*/l=m+1;/*修改左邊界*/elser=m-1;/*否則,中間結(jié)點(diǎn)大,修改右邊界*/}if(l>r)/*如果左邊界大于右邊界時(shí)*/printf("notfound\n");/*顯示沒找到*/}/*復(fù)制文件*/voidcopy(){charoutfile[20];/*目標(biāo)文件名*/inti,n;ADDRESStemp[M];/*定義臨時(shí)變量*/FILE*sfp,*tfp;/*定義指向文件的指針*/clrscr();/*清屏*/if((sfp=fopen("record.txt","rb"))==NULL)/*打開記錄文件*/{printf("cannotopenfile\n");/*顯示不能打開文件信息*/exit(1);/*退出*/}printf("Enteroutfilename,forexamplec:\\f1\\te.txt:\n");/*提示信息*/scanf("%s",outfile);/*輸入目標(biāo)文件名*/if((tfp=fopen(outfile,"wb"))==NULL)/*打開目標(biāo)文件*/{printf("cannotopenfile\n");/*顯示不能打開文件信息*/exit(1);/*退出*/}fscanf(sfp,"%d",&n);/*讀出文件記錄數(shù)*/fprintf(tfp,"%d",n);/*寫入目標(biāo)文件數(shù)*/fprintf(tfp,"\r\n");/*寫入換行符*/for(i=0;i<n;i++){fscanf(sfp,"%20s%30s%10s\n",temp[i].name,temp[i].units,temp[i].tele);/*讀入記錄*/fprintf(tfp,"%-20s%-30s%-10s\n",temp[i].name,temp[i].units,temp[i].tele);/*寫入記錄*/fprintf(tfp,"\r\n");/*寫入換行符*/}fclose(sfp);/*關(guān)閉源文件*/fclose(tfp);/*關(guān)閉目標(biāo)文件*/printf("youhavesuccesscopyfile!!!\n");/*顯示復(fù)制成功*/} }}參考文獻(xiàn)1、C語言程序設(shè)計(jì)教程,譚浩強(qiáng),張基溫清華大學(xué)出版社,20062、C程序設(shè)計(jì)題解與上機(jī)指導(dǎo),譚浩強(qiáng),清華大學(xué)出版社,20063、零起點(diǎn)一本通天合教育電子科技大學(xué)出版社,20094、C語言實(shí)用程序薈萃,西安電子科技大學(xué)出版社,19935、C語言函數(shù)手冊(cè),機(jī)械工業(yè)出版社,19996、C語言的實(shí)際應(yīng)用,安徽科學(xué)技術(shù)出版社,2000:機(jī)械工程學(xué)院課程設(shè)計(jì)評(píng)分表課題名稱:通訊錄管理系統(tǒng)項(xiàng)目評(píng)價(jià)設(shè)計(jì)方案的合理性與創(chuàng)造性設(shè)計(jì)與調(diào)試結(jié)果設(shè)計(jì)說明書的質(zhì)量答辯陳述與回答問題情況課程設(shè)計(jì)周表現(xiàn)情況綜合成績(jī)教師簽名:日期:(注:1.此頁附在課程設(shè)計(jì)報(bào)告最后一頁;2.綜合成績(jī)按優(yōu)、良、中、及格和不及格五級(jí)評(píng)定。)基于C8051F單片機(jī)直流電動(dòng)機(jī)反饋控制系統(tǒng)的設(shè)計(jì)與研究基于單片機(jī)的嵌入式Web服務(wù)器的研究MOTOROLA單片機(jī)MC68HC(8)05PV8/A內(nèi)嵌EEPROM的工藝和制程方法及對(duì)良率的影響研究基于模糊控制的電阻釬焊單片機(jī)溫度控制系統(tǒng)的研制基于MCS-51系列單片機(jī)的通用控制模塊的研究基于單片機(jī)實(shí)現(xiàn)的供暖系統(tǒng)最佳啟停自校正(STR)調(diào)節(jié)器單片機(jī)控制的二級(jí)倒立擺系統(tǒng)的研究基于增強(qiáng)型51系列單片機(jī)的TCP/IP協(xié)議棧的實(shí)現(xiàn)基于單片機(jī)的蓄電池自動(dòng)監(jiān)測(cè)系統(tǒng)基于32位嵌入式單片機(jī)系統(tǒng)的圖像采集與處理技術(shù)的研究基于單片機(jī)的作物營(yíng)養(yǎng)診斷專家系統(tǒng)的研究基于單片機(jī)的交流伺服電機(jī)運(yùn)動(dòng)控制系統(tǒng)研究與開發(fā)基于單片機(jī)的泵管內(nèi)壁硬度測(cè)試儀的研制基于單片機(jī)的自動(dòng)找平控制系統(tǒng)研究基于C8051F040單片機(jī)的嵌入式系統(tǒng)開發(fā)基于單片機(jī)的液壓動(dòng)力系統(tǒng)狀態(tài)監(jiān)測(cè)儀開發(fā)模糊Smith智能控制方法的研究及其單片機(jī)實(shí)現(xiàn)一種基于單片機(jī)的軸快流CO〈,2〉激光器的手持控制面板的研制基于雙單片機(jī)沖床數(shù)控系統(tǒng)的研究基于CYGNAL單片機(jī)的在線間歇式濁度儀的研制基于單片機(jī)的噴油泵試驗(yàn)臺(tái)控制器的研制基于單片機(jī)的軟起動(dòng)器的研究和設(shè)計(jì)基于單片機(jī)控制的高速快走絲電火花線切割機(jī)床短循環(huán)走絲方式研究基于單片機(jī)的機(jī)電產(chǎn)品控制系統(tǒng)開發(fā)基于PIC單片機(jī)的智能手機(jī)充電器基于單片機(jī)的實(shí)時(shí)內(nèi)核設(shè)計(jì)及其應(yīng)用研究基于單片機(jī)的遠(yuǎn)程抄表系統(tǒng)的設(shè)計(jì)與研究基于單片機(jī)的煙氣二氧化硫濃度檢測(cè)儀的研制基于微型光譜儀的單片機(jī)系統(tǒng)單片機(jī)系統(tǒng)軟件構(gòu)件開發(fā)的技術(shù)研究基于單片機(jī)的液體點(diǎn)滴速度自動(dòng)檢測(cè)儀的研制基于單片機(jī)系統(tǒng)的多功能溫度測(cè)量?jī)x的研制基于PIC單片機(jī)的電能采集終端的設(shè)計(jì)和應(yīng)用基于單片機(jī)的光纖光柵解調(diào)儀的研制氣壓式線性摩擦焊機(jī)單片機(jī)控制系統(tǒng)的研制基于單片機(jī)的數(shù)字磁通門傳感器基于單片機(jī)的旋轉(zhuǎn)變壓器-數(shù)字轉(zhuǎn)換器的研究基于單片機(jī)的光纖Bragg光柵解調(diào)系統(tǒng)的研究單片機(jī)控制的便攜式多功能乳腺治療儀的研制基于C8051F020單片機(jī)的多生理信號(hào)檢測(cè)儀基于單片機(jī)的電機(jī)運(yùn)動(dòng)控制系統(tǒng)設(shè)計(jì)Pico專用單片機(jī)核的可測(cè)性設(shè)計(jì)研究基于MCS-51單片機(jī)的熱量計(jì)基于雙單片機(jī)的智能遙測(cè)微型氣象站MCS-51單片機(jī)構(gòu)建機(jī)器人的實(shí)踐研究基于單片機(jī)的輪軌力檢測(cè)基于單片機(jī)的GPS定位儀的研究與實(shí)現(xiàn)基于單片機(jī)的電液伺服控制系統(tǒng)用于單片機(jī)系統(tǒng)的MMC卡文件系統(tǒng)研制基于單片機(jī)的時(shí)控和計(jì)數(shù)系統(tǒng)性能優(yōu)化的研究基于單片機(jī)和CPLD的粗光柵位移測(cè)量系統(tǒng)研究單片機(jī)控制的后備式方波UPS提升高職學(xué)生單片機(jī)應(yīng)用能力的探究基于單片機(jī)控制的自動(dòng)低頻減載裝置研究基于單片機(jī)控制的水下焊接電源的研究基于單片機(jī)的多通道數(shù)據(jù)采集系統(tǒng)基于uPSD3234單片機(jī)的氚表面污染測(cè)量?jī)x的研制基于單片機(jī)的紅外測(cè)油儀的研究96系列單片機(jī)仿真器研究與設(shè)計(jì)基于單片機(jī)的單晶金剛石刀具刃磨設(shè)備的數(shù)控改造基于單片機(jī)的溫度智能控制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)基于MSP430單片機(jī)的電梯門機(jī)控制器的研制基于單片機(jī)的氣體測(cè)漏儀的研究基于三菱M16C/6N系列單片機(jī)的CAN/USB協(xié)議轉(zhuǎn)換器基于單片機(jī)和DSP的變壓器油色譜在線監(jiān)測(cè)技術(shù)研究基于單片機(jī)的膛壁溫度報(bào)警系統(tǒng)設(shè)計(jì)基于AVR單片機(jī)的低壓無功補(bǔ)償控制器的設(shè)計(jì)基于單片機(jī)船舶電力推進(jìn)電機(jī)監(jiān)測(cè)系統(tǒng)基于單片機(jī)網(wǎng)絡(luò)的振動(dòng)信號(hào)的采集系統(tǒng)基于單片機(jī)的大容量數(shù)據(jù)存儲(chǔ)技術(shù)的應(yīng)用研究基于單片機(jī)的疊圖機(jī)研究與教學(xué)方法實(shí)踐基于單片機(jī)嵌入式Web服務(wù)器技術(shù)的研究及實(shí)現(xiàn)基于AT89S52單片機(jī)的通用數(shù)據(jù)采集系統(tǒng)基于單片機(jī)的多道脈沖幅度分析儀研究機(jī)器人旋轉(zhuǎn)電弧傳感角焊縫跟蹤單片機(jī)控制系統(tǒng)基于單片機(jī)的控制系統(tǒng)在PLC虛擬教學(xué)實(shí)驗(yàn)中的應(yīng)用研究基于單片機(jī)系統(tǒng)的網(wǎng)絡(luò)通信研究與應(yīng)用基于PIC16F877單片機(jī)的莫爾斯碼自動(dòng)譯碼系統(tǒng)設(shè)計(jì)與研究基于單片機(jī)的模糊控制器在工業(yè)電阻爐上的應(yīng)用研究基于雙單片機(jī)沖床數(shù)控系統(tǒng)的研究與開發(fā)基于Cygnal單片機(jī)的μC/OS-Ⅱ的研究基于單片機(jī)的一體化智能差示掃描量熱儀系統(tǒng)研究基于TCP/IP協(xié)議的單片機(jī)與Internet互聯(lián)的研究與實(shí)現(xiàn)變頻調(diào)速液壓電梯單片機(jī)控制器的研究基于單片機(jī)γ-免疫計(jì)數(shù)器自動(dòng)換樣功能的研究與實(shí)現(xiàn)HYPERLINK"/detail.htm
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 租賃廠房合同協(xié)議
- 招標(biāo)文件評(píng)審的實(shí)踐操作與評(píng)審標(biāo)準(zhǔn)
- 家庭護(hù)理家政工雇傭合同
- 土地居間合作合同書
- 現(xiàn)金贖樓服務(wù)合同還款還款監(jiān)管政策
- 借款保證協(xié)議模板
- 個(gè)人社會(huì)救助借款合同范本
- 河砂礫石采購協(xié)議
- 林業(yè)采伐合作合同
- 抗洪項(xiàng)目論證招標(biāo)
- 卵圓孔未閉封堵術(shù)術(shù)前宣教
- 中建室外落地式卸料平臺(tái)施工方案
- 《回收式自身輸血》課件
- 自主實(shí)習(xí)申請(qǐng)表
- 醫(yī)用耗材配送服務(wù)方案
- 2022-2023學(xué)年廣東省清遠(yuǎn)市英德市人教PEP版五年級(jí)上學(xué)期11月期中英語試卷
- 2021 IPC-1401A中文版 企業(yè)社會(huì)責(zé)任管理體系標(biāo)準(zhǔn)評(píng)審稿
- FREE高考英語核心詞匯1783
- 武松人物介紹
- 比色法和分光光度法
- 化學(xué)概論知到章節(jié)答案智慧樹2023年東北師范大學(xué)
評(píng)論
0/150
提交評(píng)論