C++課程設(shè)計(jì)-電話簿管理_第1頁
C++課程設(shè)計(jì)-電話簿管理_第2頁
C++課程設(shè)計(jì)-電話簿管理_第3頁
C++課程設(shè)計(jì)-電話簿管理_第4頁
C++課程設(shè)計(jì)-電話簿管理_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、.Visual C+課程設(shè)計(jì)報(bào)告題目:電話薄管理姓名: 學(xué)號(hào): 班級(jí):提交時(shí)間:1.程序任務(wù): 功能介紹:一個(gè)電話薄管理小程序。利用文本文件存儲(chǔ)電話簿數(shù)據(jù),具有添加、刪除、顯示和查詢聯(lián)系人號(hào)碼的功能。(1) 將電話薄數(shù)據(jù)和相應(yīng)的函數(shù)封裝在類中,改寫程序使之結(jié)構(gòu)化。(2) 增加記錄修改功能,能選擇修改用戶的姓名、電話。(3) 增加錄入時(shí)間的顯示及存儲(chǔ)。(4) 增加缺省的查詢方式,即查詢時(shí)只輸入姓名的首字母,所有符合這一條件的電話資料均在屏幕上顯示。平定難易等級(jí):A級(jí)。2. 所完成的功能: 程序大致流程圖如下。:程序關(guān)閉help_me()write_list_tolist()znsearch_by

2、_name()modify_record()delete_record()search_by_name()display_list()add_record()增加記錄顯示記錄查找記錄 幫助退出程序智能查詢修改記錄刪除記錄主界面2.1原程序各功能分析與說明 原程序采用結(jié)構(gòu)化的設(shè)計(jì)方法,通過直接構(gòu)建鏈表來實(shí)現(xiàn)增加記錄,顯示記錄,根據(jù)姓氏查找號(hào)碼,刪除號(hào)碼,幫助,退出等基本功能。 原程序在主函數(shù)中在do-while循環(huán)中插入choice選擇結(jié)構(gòu)來對(duì)用戶需要執(zhí)行的功能進(jìn)行選擇,增加記錄功能通過函數(shù)add_record()函數(shù)來完成,而函數(shù)add_record()里面又含有幾個(gè)子函數(shù)。顯示記錄功能是通過

3、display_list()功能來完成的,查找記錄功能是通過search_by_name()函數(shù)來完成的,刪除記錄功能是通過delete_record()來完成的,幫助功能是通過help_me()函數(shù)來完成,最后在退出之前,執(zhí)行delete_list()函數(shù)來完成相關(guān)記錄的保存等工作。2.2課程設(shè)計(jì)要求的實(shí)現(xiàn) 1.類的結(jié)構(gòu) 因?yàn)檎n程設(shè)計(jì)要求將原程序的電話簿數(shù)據(jù)和相應(yīng)的函數(shù)封裝在類中,于是我就定義了一個(gè)Phone_Book的類,但是在封裝成類的時(shí)候我遇到了很多問題。首先是面對(duì)如此多的函數(shù)和結(jié)構(gòu)我不知道如何把他們封裝到一個(gè)類里面去,因此我反復(fù)的看了書上有關(guān)類的定義,構(gòu)造函數(shù),析構(gòu)函數(shù)等內(nèi)容,然后定

4、義了姓,名,電話號(hào)碼三個(gè)字符數(shù)組,這三個(gè)成員都是私有的,然后我再把原程序中的函數(shù)進(jìn)行了函數(shù)原型說明,并在后面定義了函數(shù)內(nèi)容,類的封裝的基本結(jié)構(gòu)就成功了。2.增加時(shí)間 根據(jù)樣例程序說明第二部分的講解和在網(wǎng)上查找了一些資料,我知道了time.h這個(gè)頭文件的作用,因此我在代碼頂部添加了time.h這個(gè)頭文件,然后定義了tm的指針成員CurrentTime,我再網(wǎng)上查得獲得當(dāng)前時(shí)間的代碼是time_t timedata=time(0);CurrentTime=localtime(& timedata);new_rec_ptr->nYear=CurrentTime->tm_year+

5、1900;new_rec_ptr->nMonth=CurrentTime->tm_mon+1;new_rec_ptr->nDay=CurrentTime->tm_mday;new_rec_ptr->nHour=CurrentTime->tm_hour;new_rec_ptr->nMinute=CurrentTime->tm_min;基本完成了記錄時(shí)間的功能。3.增加修改功能 我在類中定義了void modify_record()函數(shù),用來修改用戶的姓名、電話。在函數(shù)中,我運(yùn)用了if-else,switch等語句并用search_by_name()

6、函數(shù)找到欲修改的節(jié)點(diǎn),對(duì)函數(shù)修改,并且可以選擇修改哪一項(xiàng),相關(guān)代碼如下,void Phone_Book:modify_record(void) int n; char last_name120; char first_name115; char phone_num112; search_by_name();/此時(shí)current_ptr指向欲修改的節(jié)點(diǎn) if(current_ptr) cout<<"你想修改當(dāng)前記錄的哪一項(xiàng)?" cout<<"n1.姓:" cout<<"n2.名:" cout<&

7、lt;"n3.電話:n" cin>>n; switch(n) case 1: cout<<"請(qǐng)輸入新的姓:" cin>>last_name1; cin.ignore(20,'n'); strcpy(current_ptr->last_name, last_name1); break; case 2: cout<<"請(qǐng)輸入新的名:" cin>>first_name1; cin.ignore(15,'n'); strcpy(current_p

8、tr->first_name, first_name1); break; case 3: cout<<"請(qǐng)輸入新的電話號(hào)碼:" cin>>phone_num1; cin.ignore(12,'n'); strcpy(current_ptr->phone_num, phone_num1); break; default: cout<<"請(qǐng)重新選擇!" break; ; cout<<"修改成功!n" cout<<current_ptr->last

9、_name<<' '<<current_ptr->first_name<< endl; cout<<current_ptr->phone_num<<endl; getch(); else cout<<"請(qǐng)重新輸入!n" system("cls"); 4.首字母查詢 我通過這面這個(gè)函數(shù)實(shí)現(xiàn)了這個(gè)功能。 znsearch_by_name() /智能查找某一記錄 system("cls");char last_name_string20;/

10、定義一字符型數(shù)組用來存放last_namecurrent_ptr = head_ptr; / 移current_ptr指針至鏈?zhǔn)譪in.ignore(20,'n');cout << "n請(qǐng)輸入你想查詢(或修改)者的姓: "cin.get(last_name_string,20); /輸入姓并保存在last_name_string if(current_ptr != NULL) / 如果 current_ptr 不為空,查找開始 while( current_ptr!=NULL )if( strcmp(current_ptr->last_na

11、me, last_name_string) = 0)temp_ptr=current_ptr;cout << "n找到信息n"cout << endl;cout << "- -n"cout << "姓名 電話號(hào)碼 n"cout << "- -n"cout.unsetf(ios:left);cout.setf(ios:right);cout <<current_ptr->last_name << ' '<&

12、lt; current_ptr->first_name ;cout << setw(36) << current_ptr->phone_num << endl;current_ptr = current_ptr->next;current_ptr=temp_ptr;elsecout << "沒有找到記錄n"cout << "按回車鍵繼續(xù)n"cin.get(pause);system("cls");2.3程序的測試結(jié)果這是開始界面,因?yàn)槲矣X得原來的黑色不好看,

13、所以用了藍(lán)色的界面,挺簡單的,加入system("color 9f")這行代碼就行了。這是系統(tǒng)菜單界面,各個(gè)功能均有顯示。這是1.增加新的電話簿記錄的功能實(shí)現(xiàn)。這是2.顯示所有記錄的功能的實(shí)現(xiàn)。這是3。查找確定電話簿記錄功能的實(shí)現(xiàn)。這是4.刪除確定電話簿記錄功能的實(shí)現(xiàn)。這是5.修改確定電話簿功能的實(shí)現(xiàn)。這是6.智能查詢功能的實(shí)現(xiàn)。這是8.幫助功能的實(shí)現(xiàn)。2.4設(shè)計(jì)中遇到的問題及解決方法 因?yàn)檎n程設(shè)計(jì)要求將原程序的電話簿數(shù)據(jù)和相應(yīng)的函數(shù)封裝在類中,于是我就定義了一個(gè)Phone_Book的類,但是在封裝成類的時(shí)候我遇到了很多問題。首先是面對(duì)如此多的函數(shù)和結(jié)構(gòu)我不知道如何把他們封

14、裝到一個(gè)類里面去,因此我反復(fù)的看了書上有關(guān)類的定義,構(gòu)造函數(shù),析構(gòu)函數(shù)等內(nèi)容,然后定義了姓,名,電話號(hào)碼三個(gè)字符數(shù)組,這三個(gè)成員都是私有的,然后我再把原程序中的函數(shù)進(jìn)行了函數(shù)原型說明,并在后面定義了函數(shù)內(nèi)容,類的封裝的基本結(jié)構(gòu)就成功了。 還有就是在儲(chǔ)存的數(shù)據(jù)中提取時(shí)間信息,因?yàn)閕nfile.get()函數(shù),只能把數(shù)據(jù)賦給字符型指針,然而我定義的時(shí)間變量時(shí)整形的,所以我只有重新定義了char nYear115,nMonth115,nDay115,nHour115,nMinute115這組字符數(shù)組來儲(chǔ)存數(shù)據(jù),然后借助atoi()函數(shù)把字符型數(shù)組轉(zhuǎn)化成整形數(shù)據(jù)賦值給我之前定義的整形時(shí)間變量。3. 設(shè)

15、計(jì)中尚存在的問題在程序運(yùn)行過程中無法實(shí)時(shí)對(duì)數(shù)據(jù)信息進(jìn)行儲(chǔ)存,只能在程序結(jié)束正常退出后才可以保存當(dāng)前的數(shù)據(jù),所以如果在程序運(yùn)行過程中出現(xiàn)故障導(dǎo)致程序不能正常關(guān)閉的話,會(huì)使得數(shù)據(jù)丟失。 4.設(shè)計(jì)的感想和體會(huì)雖然拿到這個(gè)題目之后,思路很清晰。但程序做起來并不順利。首先,自從上學(xué)期學(xué)習(xí)c+以來,我并沒有自己寫過大型的程序,不知道如何去構(gòu)建程序的整體框架,并且書中所提供的源代碼給我的提示也很有限,然而題目要求將電話薄數(shù)據(jù)和相應(yīng)的函數(shù)封裝在類中,改寫程序使之結(jié)構(gòu)化。所以我只好先看課本和上網(wǎng)搜索有關(guān)類的封裝方法,并且與同學(xué)進(jìn)行討論。多看了幾遍書以后,就慢慢可以自己改了,就這樣一步一步直到結(jié)束。所以我想,無論做什么事,都是首先對(duì)自己有信心,遇事不慌,以平和的心態(tài)來對(duì)待,有一個(gè)好的開端,就會(huì)成功一大半了。再就是我在這次課程設(shè)計(jì)之中我學(xué)會(huì)了自己解決問題,并且查閱參考書的技巧為我以后的學(xué)習(xí)積累了經(jīng)驗(yàn)。 此程序的編寫讓我更加了解C+面向?qū)ο蟮奶攸c(diǎn)。它要求我能夠熟練掌握類和對(duì)象的知識(shí),復(fù)習(xí)鞏固了以前學(xué)習(xí)的內(nèi)容。C+程序設(shè)計(jì)要求我們有良好的心態(tài),嚴(yán)謹(jǐn)?shù)乃季S,和

溫馨提示

  • 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)論