通訊錄管理系統(tǒng)設(shè)計(jì)報(bào)告_第1頁
通訊錄管理系統(tǒng)設(shè)計(jì)報(bào)告_第2頁
通訊錄管理系統(tǒng)設(shè)計(jì)報(bào)告_第3頁
通訊錄管理系統(tǒng)設(shè)計(jì)報(bào)告_第4頁
通訊錄管理系統(tǒng)設(shè)計(jì)報(bào)告_第5頁
已閱讀5頁,還剩16頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

PAGE3-《C語言通訊錄管理系統(tǒng)》通訊錄管理系統(tǒng)學(xué)生姓名:學(xué)院:計(jì)算機(jī)與通信工程學(xué)院班級(jí):班學(xué)號(hào):摘要本課程設(shè)計(jì)主要是一個(gè)簡單的通訊錄管理系統(tǒng)。通過程序中的菜單編號(hào)實(shí)現(xiàn)對(duì)數(shù)據(jù)的添加、修改、刪除等操作。在本課程設(shè)計(jì)中,系統(tǒng)開發(fā)平臺(tái)為Windows2000,程序設(shè)計(jì)語言為C語言,程序運(yùn)行平臺(tái)為Windws98/2000/XP。在程序設(shè)計(jì)中采用了結(jié)構(gòu)體、鏈表的方法實(shí)現(xiàn)對(duì)數(shù)據(jù)的操作。程序通過調(diào)試運(yùn)行,初步實(shí)現(xiàn)了設(shè)計(jì)目標(biāo),不過還需要很多的完善。關(guān)鍵詞程序設(shè)計(jì);通訊錄;C語言;1引言對(duì)于日常生活中的人們來說,通訊錄管理系統(tǒng)是一個(gè)非常重要,并且非常實(shí)用的工具。有了通訊錄系統(tǒng),人們就不用再為記不住熟人們的號(hào)碼等聯(lián)系方式而煩惱了,增進(jìn)了人們之間的聯(lián)系,讓人們更加方便與朋友親人聯(lián)系了。1.1課題背景通訊管理系統(tǒng)是一個(gè)很實(shí)用的系統(tǒng),不僅在人們用的手機(jī)中扮演著重要的角色,在各大商業(yè)與企業(yè)的運(yùn)作中也起著非常大的作用。想當(dāng)初沒有電子通訊錄系統(tǒng),人們要花很多時(shí)間去記住聯(lián)系人的聯(lián)系方式,而且有時(shí)候還會(huì)弄錯(cuò),導(dǎo)致一些不必要的尷尬,有了電子通訊錄系統(tǒng)自然記不住的問題迎刃而解了。本系統(tǒng)只是實(shí)現(xiàn)了一個(gè)簡單的通訊管理,通過對(duì)數(shù)組,結(jié)構(gòu)體,鏈表,以及各個(gè)模塊的應(yīng)用達(dá)到一個(gè)管理的功能。1.2課程設(shè)計(jì)目的C語言現(xiàn)在是一個(gè)應(yīng)用比較廣泛的語言,通過對(duì)程序的設(shè)計(jì)讓我們能更好的學(xué)習(xí)和了解它的各個(gè)方面的應(yīng)用,對(duì)我們今后的學(xué)習(xí)有很大的幫助。同時(shí),在做程序的過程中鍛煉了我們對(duì)程序的分析與編寫能力,更鍛煉了我們的實(shí)戰(zhàn)能力,為我們以后在自己的專業(yè)取得更好的成就做了一個(gè)好的鋪墊。1.3課程設(shè)計(jì)內(nèi)容本課程設(shè)計(jì)是一個(gè)通訊錄管理系統(tǒng),可以實(shí)現(xiàn)簡單的插入、刪除、添加等功能。通訊錄管理系統(tǒng)通訊錄管理系統(tǒng)信息的輸入修改數(shù)據(jù)出添加數(shù)據(jù)刪除數(shù)據(jù)圖1-3通訊錄管理系統(tǒng)2設(shè)計(jì)思路與方案2.1設(shè)計(jì)思路該個(gè)人通訊錄管理系統(tǒng)是一個(gè)對(duì)數(shù)據(jù)進(jìn)行管理修改的簡單系統(tǒng),首先做出一個(gè)主菜單界面供用戶選擇需要的操作,再用各個(gè)模塊來實(shí)現(xiàn)菜單中各單獨(dú)功能的實(shí)現(xiàn),例如修改數(shù)據(jù)、插入數(shù)據(jù)、添加數(shù)據(jù)等。最后寫一個(gè)主函數(shù)調(diào)用模塊和函數(shù)實(shí)現(xiàn)通訊錄菜單中的各功能。2.2操作流程圖輸入界面的相應(yīng)操作序號(hào)添加通訊錄數(shù)據(jù)顯示新增完成圖2-1輸入界面的相應(yīng)操作序號(hào)添加通訊錄數(shù)據(jù)顯示新增完成3詳細(xì)實(shí)現(xiàn)3.1查看聯(lián)系人選擇查看聯(lián)系人的序號(hào)選擇查看聯(lián)系人所屬類型顯示所選類型的所有聯(lián)系人選擇查看聯(lián)系人的序號(hào)選擇查看聯(lián)系人所屬類型顯示所選類型的所有聯(lián)系人圖3-1查看聯(lián)系人實(shí)現(xiàn)此功能的代碼如下:voidoutput(structphone_info*head){ structphone_info*p1=head,*p2; system("cls"); //清屏 if(head==NULL) //如果當(dāng)前鏈表頭指針為空 { printf("當(dāng)前沒有任何聯(lián)系人信息\n\n"); system("pause"); return; //返回 } printf("電話聯(lián)系薄(共%d條信息)\n\n",n); for(;;) { p2=p1->next; printf("姓名:%s\n",p1->name); printf("電話:%s\n",p1->phone); if(p1->type=='A'||p1->type=='a') printf("類別:辦公類\n"); elseif(p1->type=='B'||p1->type=='b') printf("類別:個(gè)人類\n"); else printf("類別:商務(wù)類\n"); printf("郵箱:%s\n",p1->email); printf("\n"); if(p1->next==NULL) //如果當(dāng)前指針?biāo)赶虻慕Y(jié)構(gòu)體中next指向空則鏈表輸出完畢 break; //返回 p1=p2; }}3.2新增聯(lián)系人進(jìn)入菜單后選擇添加序號(hào)按要求依次輸入姓名、電話、類別、電子郵箱。如圖3-2所示。選擇新增聯(lián)系人序號(hào)選擇新增聯(lián)系人序號(hào)按照提示依次輸入要求的內(nèi)容顯示添加聯(lián)系人成功圖3-2新增聯(lián)系人實(shí)現(xiàn)此功能的代碼如下:structphone_info*new_info(structphone_info*head)//新增{ structphone_info*p1,*p2,*p; charc; intflag; system("cls"); //清屏 for(;;) { if(n==15) //判斷當(dāng)前聯(lián)系人數(shù)目是否超過系統(tǒng)限制 { printf("存儲(chǔ)空間已滿,不能再錄入新數(shù)據(jù)!\n\n"); system("pause"); returnhead; } if(n==0) //判斷當(dāng)前聯(lián)系人數(shù)目是否為0 { head=p1=p2=(structphone_info*)malloc(sizeof(structphone_info)); //新建結(jié)構(gòu)體并將結(jié)構(gòu)體指針賦予鏈表頭指針 p1->next=NULL; } else { p1=head; p2=(structphone_info*)malloc(sizeof(structphone_info)); //新建結(jié)構(gòu)體 } printf("請(qǐng)輸入要新增的聯(lián)系人姓名:\n(如果輸入“0” scanf("%s",p2->name); if(strcmp(p2->name,"0")==0) //判斷輸入的姓名是否為“0 { free(p2); //為“0” returnhead; //返回 } printf("\n請(qǐng)輸入聯(lián)系人的電話號(hào)碼:\n"); scanf("%s",p2->phone); for(flag=1,p=head;n!=0&&p!=NULL;) //判斷是否輸入了相同的聯(lián)系人電話 { if(strcmp(p2->phone,p->phone)==0) { printf("\n錄入了相同的聯(lián)系人電話\n\n"); system("pause"); flag=0; //標(biāo)志位賦“0 free(p2); system("cls"); break; //退出循環(huán) } p=p->next; } if(flag==0) //判斷標(biāo)志位是否為“0 continue; //如果為“0” printf("\n請(qǐng)輸入聯(lián)系人的類別:\n(\"A\"為辦公類\"B\"為個(gè)人類\"C\"為商務(wù)類)\n"); scanf("%c",&c); //保存上一次輸入的回車鍵 scanf("%c",&p2->type); printf("\n請(qǐng)輸入聯(lián)系人的電子郵箱:\n"); scanf("%s",p2->email); while(p1->next!=NULL) p1=p1->next; //找到鏈表的尾部 p1->next=p2; //將鏈表的尾部指向新添加的聯(lián)系人 p2->next=NULL; //新的鏈表尾部賦結(jié)束標(biāo)記 system("cls"); printf("新增成功\n\n"); n++; //保存的聯(lián)系人數(shù)目加1 } returnhead;}3.3撥號(hào)聯(lián)系人進(jìn)入菜單后選擇撥號(hào)聯(lián)系人,然后輸入要撥號(hào)的姓名,會(huì)提示撥號(hào)成功,即實(shí)現(xiàn)了對(duì)聯(lián)系人的撥號(hào)。選擇撥號(hào)聯(lián)系人序號(hào)選擇撥號(hào)聯(lián)系人序號(hào)輸入要撥號(hào)聯(lián)系人的名字顯示撥號(hào)成功圖3-3撥號(hào)聯(lián)系人實(shí)現(xiàn)此功能的代碼如下:voiddiag(structphone_info*head){ charname[20]; structphone_info*p1; system("cls"); for(;;) { if(n==0) //判斷當(dāng)前聯(lián)系人數(shù)目是否為0 { printf("當(dāng)前沒有任何聯(lián)系人信息\n\n"); system("pause"); return; } system("cls"); output(head); //調(diào)用輸出函數(shù)顯示當(dāng)前所有聯(lián)系人的信息 printf("請(qǐng)輸入要撥號(hào)的聯(lián)系人姓名:\n(如果輸入“0” scanf("%s",name); if(strcmp(name,"0")==0) //判斷輸入的姓名是否為0 return; //返回 else { p1=head; for(;;) { if(strcmp(name,p1->name)==0) //找到指定聯(lián)系人所在節(jié)點(diǎn) { printf("\n撥號(hào)成功\n\n"); system("pause"); break; } p1=p1->next; //找到下一節(jié)點(diǎn) if(p1==NULL) //指針為空 { printf("\n姓名為%s的聯(lián)系人不存在!\n\n",name); system("pause"); break; } } } }}4運(yùn)行環(huán)境與結(jié)果4.1運(yùn)行環(huán)境在本課程設(shè)計(jì)中,系統(tǒng)開發(fā)平臺(tái)為WindowsXP,程序設(shè)計(jì)語言為VisualC++6.0,程序的運(yùn)行環(huán)境為VisualC++6.0。VisualC++一般分為三個(gè)版本:學(xué)習(xí)版、專業(yè)版和企業(yè)版,不同的版本適合于不同類型的應(yīng)用開發(fā)。實(shí)驗(yàn)中可以使用這三個(gè)版本的任意一種,在本課程設(shè)計(jì)中,以VisualC++6.0為編程環(huán)境。MicrosoftVisualC++6.0是Microsoft公司的MicrosoftVisualStudio6.0開發(fā)工具箱中的一個(gè)C++程序開發(fā)包。VisualC++包中除包括C++編譯器外,還包括所有的庫、例子和為創(chuàng)建Windows應(yīng)用程序所需要的文檔。自1993年Microsoft公司推出VisualC++1.0后,隨著其新版本的不斷問世,VisualC++已成為專業(yè)程序員進(jìn)行軟件開發(fā)的首選工具。VisualC++從最早期的1.0版本,發(fā)展到最新的7.0版本,VisualC++已經(jīng)有了很大的變化,在界面、功能、庫支持方面都有許多的增強(qiáng)。最新的7.0版本在編譯器、MFC類庫、編輯器以及聯(lián)機(jī)幫助系統(tǒng)等方面都比以前的版本做了較大改進(jìn)。VisualC++6.0是Microsoft公司推出的目前使用最廣泛的基于Windows平臺(tái)的可視化編程環(huán)境。VisualC++6.0是在以往版本不斷更新的基礎(chǔ)上形成的,由于其功能強(qiáng)大,靈活性好,完全課擴(kuò)展以及具有強(qiáng)大的Internet支持,因而在各種C++語言開發(fā)工具中脫穎而出,成為目前最為流行的C++語言集成開發(fā)環(huán)境。VisualC++6.0秉承VisualC++以前版本的優(yōu)異特性,為用戶提供了一套良好的可視化開發(fā)環(huán)境:主要包括文本編輯器、資源編輯器、工程創(chuàng)建工具、Debugger調(diào)試器等等。用戶可以在集成開發(fā)環(huán)境中創(chuàng)建工程、打開工程、建立、打開和編輯文件、編譯、鏈接、運(yùn)行、調(diào)試應(yīng)用程序。4.2運(yùn)行結(jié)果主操作界面在執(zhí)行程序的時(shí)候會(huì)看到如下的操作界面,輸入相應(yīng)的序號(hào)即可進(jìn)入下一步操作。如圖所示:圖4-1主操作界面查看聯(lián)系人。結(jié)果如圖所示:圖4-2查看聯(lián)系人增加聯(lián)系人。結(jié)果如圖所示:圖4-3增加聯(lián)系人撥號(hào)聯(lián)系人。圖4-4撥號(hào)聯(lián)系人5結(jié)束語這次課程設(shè)計(jì)是大學(xué)入學(xué)以來的第一次專業(yè)實(shí)踐性的課程,從此次的實(shí)踐中讓我深深的體會(huì)到“從實(shí)踐中學(xué)習(xí)”這句話的重要性。從設(shè)計(jì)中可以學(xué)到很多課本上學(xué)不到的東西,盡管這次設(shè)計(jì)中遇到了很多的阻礙,但是看到自己設(shè)計(jì)出來的成果還是值得的。設(shè)計(jì)的過程不僅復(fù)習(xí)鞏固了學(xué)過的知識(shí),同時(shí)也接受到了更多的新知識(shí),讓自己更加的充實(shí)。從此次設(shè)計(jì)中讓我充分的認(rèn)識(shí)到課本知識(shí)必須要有,但僅僅知道課本上的知識(shí)不去運(yùn)用也是枉然。如今這個(gè)飛速發(fā)展的社會(huì)需要的不是那種理論人才,而是理論能與實(shí)踐相結(jié)合的人,這樣才能從中得到更多。通過本次設(shè)計(jì)我發(fā)現(xiàn)現(xiàn)在對(duì)專業(yè)知識(shí)掌握的還不很好,有很多方面需要進(jìn)一步的提高,在今后的學(xué)習(xí)中一定要好好的努力,認(rèn)真的去體會(huì)知識(shí)的內(nèi)涵再正確的加以運(yùn)用,這樣才會(huì)達(dá)到學(xué)習(xí)的最佳效果。參考文獻(xiàn)[1]楊路明.《C語言程序設(shè)計(jì)教程》.北京:北京郵電大學(xué)出版社,2000.1[2]譚浩強(qiáng).《C程序設(shè)計(jì)》.北京:北京清華大學(xué)出版社,1999.1[3]向南平.《實(shí)用C語言程序設(shè)計(jì)》.長沙中南工業(yè)大學(xué)出版社,1994.4[4]北京金洪恩電腦有限公司.《C/C++程序設(shè)計(jì)入門》.天津:天津電子出版社,2003.4[5]王志雄,田小梅.《數(shù)據(jù)結(jié)構(gòu)-C語言描述》.北京:北京工業(yè)大學(xué)出版社,2002.3附錄:源程序代碼#include<stdio.h>#include<string.h>#include<malloc.h>#include<windows.h>intn=0; //定義全局變量存儲(chǔ)電話聯(lián)系人個(gè)數(shù)structphone_info //定義結(jié)構(gòu)體存儲(chǔ)聯(lián)系人信息{ charname[20]; //姓名 charphone[20]; //電話 chartype; //分類 charemail[20]; //郵箱 structphone_info*next; //指向下一個(gè)節(jié)點(diǎn)的指針};/*錯(cuò)誤函數(shù)*///所需參數(shù):無//函數(shù)功能:顯示錯(cuò)誤信息//返回參數(shù):無voiderror(){ printf("代碼錯(cuò)誤\n\n"); system("pause");}/*輸出函數(shù)*///所需參數(shù):鏈表頭指針//函數(shù)功能:輸出鏈表中的聯(lián)系人信息//返回參數(shù):無voidoutput(structphone_info*head){ structphone_info*p1=head,*p2; system("cls"); //清屏 if(head==NULL) //如果當(dāng)前鏈表頭指針為空 { printf("當(dāng)前沒有任何聯(lián)系人信息\n\n"); system("pause"); return; //返回 } printf("電話聯(lián)系薄(共%d條信息)\n\n",n); for(;;) { p2=p1->next; printf("姓名:%s\n",p1->name); printf("電話:%s\n",p1->phone); if(p1->type=='A'||p1->type=='a') printf("類別:辦公類\n"); elseif(p1->type=='B'||p1->type=='b') printf("類別:個(gè)人類\n"); else printf("類別:商務(wù)類\n"); printf("郵箱:%s\n",p1->email); printf("\n"); if(p1->next==NULL) //如果當(dāng)前指針?biāo)赶虻慕Y(jié)構(gòu)體中next指向空則鏈表輸出完畢 break; //返回 p1=p2; }}/*新增函數(shù)*///所需參數(shù):鏈表頭指針//函數(shù)功能:新增聯(lián)系人信息并自動(dòng)添加到鏈表末尾//返回參數(shù):鏈表頭指針structphone_info*new_info(structphone_info*head)//新增{ structphone_info*p1,*p2,*p; charc; intflag; system("cls"); //清屏 for(;;) { if(n==15) //判斷當(dāng)前聯(lián)系人數(shù)目是否超過系統(tǒng)限制 { printf("存儲(chǔ)空間已滿,不能再錄入新數(shù)據(jù)!\n\n"); system("pause"); returnhead; } if(n==0) //判斷當(dāng)前聯(lián)系人數(shù)目是否為0 { head=p1=p2=(structphone_info*)malloc(sizeof(structphone_info)); //新建結(jié)構(gòu)體并將結(jié)構(gòu)體指針賦予鏈表頭指針 p1->next=NULL; } else { p1=head; p2=(structphone_info*)malloc(sizeof(structphone_info)); //新建結(jié)構(gòu)體 } printf("請(qǐng)輸入要新增的聯(lián)系人姓名:\n(如果輸入“0” scanf("%s",p2->name); if(strcmp(p2->name,"0")==0) //判斷輸入的姓名是否為“0 { free(p2); //為“0” returnhead; //返回 } printf("\n請(qǐng)輸入聯(lián)系人的電話號(hào)碼:\n"); scanf("%s",p2->phone); for(flag=1,p=head;n!=0&&p!=NULL;) //判斷是否輸入了相同的聯(lián)系人電話 { if(strcmp(p2->phone,p->phone)==0) { printf("\n錄入了相同的聯(lián)系人電話\n\n"); system("pause"); flag=0; //標(biāo)志位賦“0 free(p2); system("cls"); break; //退出循環(huán) } p=p->next; } if(flag==0) //判斷標(biāo)志位是否為“0 continue; //如果為“0” printf("\n請(qǐng)輸入聯(lián)系人的類別:\n(\"A\"為辦公類\"B\"為個(gè)人類\"C\"為商務(wù)類)\n"); scanf("%c",&c); //保存上一次輸入的回車鍵 scanf("%c",&p2->type); printf("\n請(qǐng)輸入聯(lián)系人的電子郵箱:\n"); scanf("%s",p2->email); while(p1->next!=NULL) p1=p1->next; //找到鏈表的尾部 p1->next=p2; //將鏈表的尾部指向新添加的聯(lián)系人 p2->next=NULL; //新的鏈表尾部賦結(jié)束標(biāo)記 system("cls"); printf("新增成功\n\n"); n++; //保存的聯(lián)系人數(shù)目加1 } returnhead;}/*撥號(hào)函數(shù)*///所需參數(shù):鏈表頭指針//函數(shù)功能:在鏈表中查找指定的聯(lián)系人并模擬撥號(hào)效果//返回參數(shù):無voiddiag(structphone_info*head){ charname[20]; structphone_info*p1; system("cls"); for(;;) { if(n==0) //判斷當(dāng)前聯(lián)系人數(shù)目是否為0 { printf("當(dāng)前沒有任何聯(lián)系人信息\n\n"); system("pause"); return; } system("cls"); output(head); //調(diào)用輸出函數(shù)顯示當(dāng)前所有聯(lián)系人的信息 printf("請(qǐng)輸入要撥號(hào)的聯(lián)系人姓名:\n(如果輸入“0” scanf("%s",name); if(strcmp(name,"0")==0) //判斷輸入的姓名是否為0 return; //返回 else { p1=head; for(;;) { if(strcmp(name,p1->name)==0) //找到指定聯(lián)系人所在節(jié)點(diǎn) { printf("\n撥號(hào)成功\n\n"); system("pause"); break; } p1=p1->next; //找到下一節(jié)點(diǎn) if(p1==NULL) //指針為空 { printf("\n姓名為%s的聯(lián)系人不存在!\n\n",name); system("pause"); break; } } } }}/*釋放函數(shù)*///所需參數(shù):鏈表頭指針//函數(shù)功能:釋放鏈表存儲(chǔ)空間的內(nèi)容//返回參數(shù):無voidfreelist(structphone_info*head){ structphone_info*p1=head,*p2; for(;;) { if(p1->next==NULL) { free(p1); break; } else { p2=p1->next; free(p1); p1=p2; } }}/*查看函數(shù)*///所需參數(shù):鏈表頭指針//函數(shù)功能:顯示指定類別的聯(lián)系人信息//返回參數(shù):無voidlook(structphone_info*head){ structphone_info*p; intc; intflag; chartype; system("cls"); if(n==0) //判斷當(dāng)前聯(lián)系人數(shù)目是否為0 { printf("當(dāng)前沒有任何聯(lián)系人信息\n\n"); system("pause"); return; //返回 } for(;;) { system("cls"); printf("1.查看辦公類聯(lián)系人\n"); printf("2.查看個(gè)人類聯(lián)系人\n"); printf("3.查看商務(wù)類聯(lián)系人\n"); printf("0.返回\n"); printf("\n請(qǐng)輸入操作步驟的代碼:"); scanf("%d",&c); switch(c) { case1:type='a';break; case2:type='b';break; case3:type='c';break; case0:return; default:error(); } flag=0; //標(biāo)志位賦予0 p=head; while(p!=NULL) { if(p->type==type||p->type==type-32) { if(flag==0) { system("cls"); if(type=='a') pr

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論