版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
PAGE3-《C語言通訊錄管理系統(tǒng)》通訊錄管理系統(tǒng)學生姓名:學院:計算機與通信工程學院班級:班學號:摘要本課程設計主要是一個簡單的通訊錄管理系統(tǒng)。通過程序中的菜單編號實現(xiàn)對數(shù)據(jù)的添加、修改、刪除等操作。在本課程設計中,系統(tǒng)開發(fā)平臺為Windows2000,程序設計語言為C語言,程序運行平臺為Windws98/2000/XP。在程序設計中采用了結(jié)構(gòu)體、鏈表的方法實現(xiàn)對數(shù)據(jù)的操作。程序通過調(diào)試運行,初步實現(xiàn)了設計目標,不過還需要很多的完善。關(guān)鍵詞程序設計;通訊錄;C語言;1引言對于日常生活中的人們來說,通訊錄管理系統(tǒng)是一個非常重要,并且非常實用的工具。有了通訊錄系統(tǒng),人們就不用再為記不住熟人們的號碼等聯(lián)系方式而煩惱了,增進了人們之間的聯(lián)系,讓人們更加方便與朋友親人聯(lián)系了。1.1課題背景通訊管理系統(tǒng)是一個很實用的系統(tǒng),不僅在人們用的手機中扮演著重要的角色,在各大商業(yè)與企業(yè)的運作中也起著非常大的作用。想當初沒有電子通訊錄系統(tǒng),人們要花很多時間去記住聯(lián)系人的聯(lián)系方式,而且有時候還會弄錯,導致一些不必要的尷尬,有了電子通訊錄系統(tǒng)自然記不住的問題迎刃而解了。本系統(tǒng)只是實現(xiàn)了一個簡單的通訊管理,通過對數(shù)組,結(jié)構(gòu)體,鏈表,以及各個模塊的應用達到一個管理的功能。1.2課程設計目的C語言現(xiàn)在是一個應用比較廣泛的語言,通過對程序的設計讓我們能更好的學習和了解它的各個方面的應用,對我們今后的學習有很大的幫助。同時,在做程序的過程中鍛煉了我們對程序的分析與編寫能力,更鍛煉了我們的實戰(zhàn)能力,為我們以后在自己的專業(yè)取得更好的成就做了一個好的鋪墊。1.3課程設計內(nèi)容本課程設計是一個通訊錄管理系統(tǒng),可以實現(xiàn)簡單的插入、刪除、添加等功能。通訊錄管理系統(tǒng)通訊錄管理系統(tǒng)信息的輸入修改數(shù)據(jù)出添加數(shù)據(jù)刪除數(shù)據(jù)圖1-3通訊錄管理系統(tǒng)2設計思路與方案2.1設計思路該個人通訊錄管理系統(tǒng)是一個對數(shù)據(jù)進行管理修改的簡單系統(tǒng),首先做出一個主菜單界面供用戶選擇需要的操作,再用各個模塊來實現(xiàn)菜單中各單獨功能的實現(xiàn),例如修改數(shù)據(jù)、插入數(shù)據(jù)、添加數(shù)據(jù)等。最后寫一個主函數(shù)調(diào)用模塊和函數(shù)實現(xiàn)通訊錄菜單中的各功能。2.2操作流程圖輸入界面的相應操作序號添加通訊錄數(shù)據(jù)顯示新增完成圖2-1輸入界面的相應操作序號添加通訊錄數(shù)據(jù)顯示新增完成3詳細實現(xiàn)3.1查看聯(lián)系人選擇查看聯(lián)系人的序號選擇查看聯(lián)系人所屬類型顯示所選類型的所有聯(lián)系人選擇查看聯(lián)系人的序號選擇查看聯(lián)系人所屬類型顯示所選類型的所有聯(lián)系人圖3-1查看聯(lián)系人實現(xiàn)此功能的代碼如下:voidoutput(structphone_info*head){ structphone_info*p1=head,*p2; system("cls"); //清屏 if(head==NULL) //如果當前鏈表頭指針為空 { printf("當前沒有任何聯(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("類別:個人類\n"); else printf("類別:商務類\n"); printf("郵箱:%s\n",p1->email); printf("\n"); if(p1->next==NULL) //如果當前指針所指向的結(jié)構(gòu)體中next指向空則鏈表輸出完畢 break; //返回 p1=p2; }}3.2新增聯(lián)系人進入菜單后選擇添加序號按要求依次輸入姓名、電話、類別、電子郵箱。如圖3-2所示。選擇新增聯(lián)系人序號選擇新增聯(lián)系人序號按照提示依次輸入要求的內(nèi)容顯示添加聯(lián)系人成功圖3-2新增聯(lián)系人實現(xiàn)此功能的代碼如下:structphone_info*new_info(structphone_info*head)//新增{ structphone_info*p1,*p2,*p; charc; intflag; system("cls"); //清屏 for(;;) { if(n==15) //判斷當前聯(lián)系人數(shù)目是否超過系統(tǒng)限制 { printf("存儲空間已滿,不能再錄入新數(shù)據(jù)!\n\n"); system("pause"); returnhead; } if(n==0) //判斷當前聯(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("請輸入要新增的聯(lián)系人姓名:\n(如果輸入“0” scanf("%s",p2->name); if(strcmp(p2->name,"0")==0) //判斷輸入的姓名是否為“0 { free(p2); //為“0” returnhead; //返回 } printf("\n請輸入聯(lián)系人的電話號碼:\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; //標志位賦“0 free(p2); system("cls"); break; //退出循環(huán) } p=p->next; } if(flag==0) //判斷標志位是否為“0 continue; //如果為“0” printf("\n請輸入聯(lián)系人的類別:\n(\"A\"為辦公類\"B\"為個人類\"C\"為商務類)\n"); scanf("%c",&c); //保存上一次輸入的回車鍵 scanf("%c",&p2->type); printf("\n請輸入聯(lián)系人的電子郵箱:\n"); scanf("%s",p2->email); while(p1->next!=NULL) p1=p1->next; //找到鏈表的尾部 p1->next=p2; //將鏈表的尾部指向新添加的聯(lián)系人 p2->next=NULL; //新的鏈表尾部賦結(jié)束標記 system("cls"); printf("新增成功\n\n"); n++; //保存的聯(lián)系人數(shù)目加1 } returnhead;}3.3撥號聯(lián)系人進入菜單后選擇撥號聯(lián)系人,然后輸入要撥號的姓名,會提示撥號成功,即實現(xiàn)了對聯(lián)系人的撥號。選擇撥號聯(lián)系人序號選擇撥號聯(lián)系人序號輸入要撥號聯(lián)系人的名字顯示撥號成功圖3-3撥號聯(lián)系人實現(xiàn)此功能的代碼如下:voiddiag(structphone_info*head){ charname[20]; structphone_info*p1; system("cls"); for(;;) { if(n==0) //判斷當前聯(lián)系人數(shù)目是否為0 { printf("當前沒有任何聯(lián)系人信息\n\n"); system("pause"); return; } system("cls"); output(head); //調(diào)用輸出函數(shù)顯示當前所有聯(lián)系人的信息 printf("請輸入要撥號的聯(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é)點 { printf("\n撥號成功\n\n"); system("pause"); break; } p1=p1->next; //找到下一節(jié)點 if(p1==NULL) //指針為空 { printf("\n姓名為%s的聯(lián)系人不存在!\n\n",name); system("pause"); break; } } } }}4運行環(huán)境與結(jié)果4.1運行環(huán)境在本課程設計中,系統(tǒng)開發(fā)平臺為WindowsXP,程序設計語言為VisualC++6.0,程序的運行環(huán)境為VisualC++6.0。VisualC++一般分為三個版本:學習版、專業(yè)版和企業(yè)版,不同的版本適合于不同類型的應用開發(fā)。實驗中可以使用這三個版本的任意一種,在本課程設計中,以VisualC++6.0為編程環(huán)境。MicrosoftVisualC++6.0是Microsoft公司的MicrosoftVisualStudio6.0開發(fā)工具箱中的一個C++程序開發(fā)包。VisualC++包中除包括C++編譯器外,還包括所有的庫、例子和為創(chuàng)建Windows應用程序所需要的文檔。自1993年Microsoft公司推出VisualC++1.0后,隨著其新版本的不斷問世,VisualC++已成為專業(yè)程序員進行軟件開發(fā)的首選工具。VisualC++從最早期的1.0版本,發(fā)展到最新的7.0版本,VisualC++已經(jīng)有了很大的變化,在界面、功能、庫支持方面都有許多的增強。最新的7.0版本在編譯器、MFC類庫、編輯器以及聯(lián)機幫助系統(tǒng)等方面都比以前的版本做了較大改進。VisualC++6.0是Microsoft公司推出的目前使用最廣泛的基于Windows平臺的可視化編程環(huán)境。VisualC++6.0是在以往版本不斷更新的基礎(chǔ)上形成的,由于其功能強大,靈活性好,完全課擴展以及具有強大的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)建工程、打開工程、建立、打開和編輯文件、編譯、鏈接、運行、調(diào)試應用程序。4.2運行結(jié)果主操作界面在執(zhí)行程序的時候會看到如下的操作界面,輸入相應的序號即可進入下一步操作。如圖所示:圖4-1主操作界面查看聯(lián)系人。結(jié)果如圖所示:圖4-2查看聯(lián)系人增加聯(lián)系人。結(jié)果如圖所示:圖4-3增加聯(lián)系人撥號聯(lián)系人。圖4-4撥號聯(lián)系人5結(jié)束語這次課程設計是大學入學以來的第一次專業(yè)實踐性的課程,從此次的實踐中讓我深深的體會到“從實踐中學習”這句話的重要性。從設計中可以學到很多課本上學不到的東西,盡管這次設計中遇到了很多的阻礙,但是看到自己設計出來的成果還是值得的。設計的過程不僅復習鞏固了學過的知識,同時也接受到了更多的新知識,讓自己更加的充實。從此次設計中讓我充分的認識到課本知識必須要有,但僅僅知道課本上的知識不去運用也是枉然。如今這個飛速發(fā)展的社會需要的不是那種理論人才,而是理論能與實踐相結(jié)合的人,這樣才能從中得到更多。通過本次設計我發(fā)現(xiàn)現(xiàn)在對專業(yè)知識掌握的還不很好,有很多方面需要進一步的提高,在今后的學習中一定要好好的努力,認真的去體會知識的內(nèi)涵再正確的加以運用,這樣才會達到學習的最佳效果。參考文獻[1]楊路明.《C語言程序設計教程》.北京:北京郵電大學出版社,2000.1[2]譚浩強.《C程序設計》.北京:北京清華大學出版社,1999.1[3]向南平.《實用C語言程序設計》.長沙中南工業(yè)大學出版社,1994.4[4]北京金洪恩電腦有限公司.《C/C++程序設計入門》.天津:天津電子出版社,2003.4[5]王志雄,田小梅.《數(shù)據(jù)結(jié)構(gòu)-C語言描述》.北京:北京工業(yè)大學出版社,2002.3附錄:源程序代碼#include<stdio.h>#include<string.h>#include<malloc.h>#include<windows.h>intn=0; //定義全局變量存儲電話聯(lián)系人個數(shù)structphone_info //定義結(jié)構(gòu)體存儲聯(lián)系人信息{ charname[20]; //姓名 charphone[20]; //電話 chartype; //分類 charemail[20]; //郵箱 structphone_info*next; //指向下一個節(jié)點的指針};/*錯誤函數(shù)*///所需參數(shù):無//函數(shù)功能:顯示錯誤信息//返回參數(shù):無voiderror(){ printf("代碼錯誤\n\n"); system("pause");}/*輸出函數(shù)*///所需參數(shù):鏈表頭指針//函數(shù)功能:輸出鏈表中的聯(lián)系人信息//返回參數(shù):無voidoutput(structphone_info*head){ structphone_info*p1=head,*p2; system("cls"); //清屏 if(head==NULL) //如果當前鏈表頭指針為空 { printf("當前沒有任何聯(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("類別:個人類\n"); else printf("類別:商務類\n"); printf("郵箱:%s\n",p1->email); printf("\n"); if(p1->next==NULL) //如果當前指針所指向的結(jié)構(gòu)體中next指向空則鏈表輸出完畢 break; //返回 p1=p2; }}/*新增函數(shù)*///所需參數(shù):鏈表頭指針//函數(shù)功能:新增聯(lián)系人信息并自動添加到鏈表末尾//返回參數(shù):鏈表頭指針structphone_info*new_info(structphone_info*head)//新增{ structphone_info*p1,*p2,*p; charc; intflag; system("cls"); //清屏 for(;;) { if(n==15) //判斷當前聯(lián)系人數(shù)目是否超過系統(tǒng)限制 { printf("存儲空間已滿,不能再錄入新數(shù)據(jù)!\n\n"); system("pause"); returnhead; } if(n==0) //判斷當前聯(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("請輸入要新增的聯(lián)系人姓名:\n(如果輸入“0” scanf("%s",p2->name); if(strcmp(p2->name,"0")==0) //判斷輸入的姓名是否為“0 { free(p2); //為“0” returnhead; //返回 } printf("\n請輸入聯(lián)系人的電話號碼:\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; //標志位賦“0 free(p2); system("cls"); break; //退出循環(huán) } p=p->next; } if(flag==0) //判斷標志位是否為“0 continue; //如果為“0” printf("\n請輸入聯(lián)系人的類別:\n(\"A\"為辦公類\"B\"為個人類\"C\"為商務類)\n"); scanf("%c",&c); //保存上一次輸入的回車鍵 scanf("%c",&p2->type); printf("\n請輸入聯(lián)系人的電子郵箱:\n"); scanf("%s",p2->email); while(p1->next!=NULL) p1=p1->next; //找到鏈表的尾部 p1->next=p2; //將鏈表的尾部指向新添加的聯(lián)系人 p2->next=NULL; //新的鏈表尾部賦結(jié)束標記 system("cls"); printf("新增成功\n\n"); n++; //保存的聯(lián)系人數(shù)目加1 } returnhead;}/*撥號函數(shù)*///所需參數(shù):鏈表頭指針//函數(shù)功能:在鏈表中查找指定的聯(lián)系人并模擬撥號效果//返回參數(shù):無voiddiag(structphone_info*head){ charname[20]; structphone_info*p1; system("cls"); for(;;) { if(n==0) //判斷當前聯(lián)系人數(shù)目是否為0 { printf("當前沒有任何聯(lián)系人信息\n\n"); system("pause"); return; } system("cls"); output(head); //調(diào)用輸出函數(shù)顯示當前所有聯(lián)系人的信息 printf("請輸入要撥號的聯(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é)點 { printf("\n撥號成功\n\n"); system("pause"); break; } p1=p1->next; //找到下一節(jié)點 if(p1==NULL) //指針為空 { printf("\n姓名為%s的聯(lián)系人不存在!\n\n",name); system("pause"); break; } } } }}/*釋放函數(shù)*///所需參數(shù):鏈表頭指針//函數(shù)功能:釋放鏈表存儲空間的內(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) //判斷當前聯(lián)系人數(shù)目是否為0 { printf("當前沒有任何聯(lián)系人信息\n\n"); system("pause"); return; //返回 } for(;;) { system("cls"); printf("1.查看辦公類聯(lián)系人\n"); printf("2.查看個人類聯(lián)系人\n"); printf("3.查看商務類聯(lián)系人\n"); printf("0.返回\n"); printf("\n請輸入操作步驟的代碼:"); scanf("%d",&c); switch(c) { case1:type='a';break; case2:type='b';break; case3:type='c';break; case0:return; default:error(); } flag=0; //標志位賦予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等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 春節(jié)學員活動策劃方案(3篇)
- 清真宴席活動策劃方案(3篇)
- 礦井施工方案范本(3篇)
- 雨棚抹灰施工方案(3篇)
- 2025年中職生態(tài)環(huán)境保護與修復(生態(tài)工程施工)試題及答案
- 2025年中職營養(yǎng)學(營養(yǎng)評估)試題及答案
- 2025年中職會計法規(guī)(會計法規(guī)基礎(chǔ))試題及答案
- 2025年高職地圖數(shù)據(jù)說明轉(zhuǎn)換技術(shù)(說明轉(zhuǎn)換實操)試題及答案
- 2025年高職(汽車檢測與維修技術(shù))汽車故障診斷儀使用試題及答案
- 2025年高職高分子材料與工程(塑料成型技術(shù))試題及答案
- (2025年)四川省自貢市紀委監(jiān)委公開遴選公務員筆試試題及答案解析
- 《生態(tài)環(huán)境重大事故隱患判定標準》解析
- 戶外探險俱樂部領(lǐng)隊管理制度
- 移動通信基站天線基礎(chǔ)知識專題培訓課件
- 《軍隊政治工作手冊》出版
- 電子商務專業(yè)教師教學創(chuàng)新團隊建設方案
- 智慧校園網(wǎng)投資建設運營方案
- 2023年中國海洋大學環(huán)科院研究生培養(yǎng)方案
- GB/T 16927.1-2011高電壓試驗技術(shù)第1部分:一般定義及試驗要求
- DB32∕T 4107-2021 民用建筑節(jié)能工程熱工性能現(xiàn)場檢測標準
- OECD稅收協(xié)定范本中英對照文本
評論
0/150
提交評論