版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、c語言程序設(shè)計課程設(shè)計報告摘要木次課程設(shè)計的題口為個人通訊錄管理系統(tǒng),要求將程序屮所輸入的聯(lián)系人姓名、 電話和地址信息這三個數(shù)據(jù)以文本方式保存在磁盤中,并且能夠?qū)λ鶅Υ娴穆?lián)系人信息 進行顯示、查詢、修改、刪除等功能。我編寫的程序從整體上看可分為兩個部分,一部分為文件的建立、讀取和保存,另 一部分為通訊錄功能的實現(xiàn)。在文件部分,我通過readfile()函數(shù)和writefile()函數(shù)從而實 現(xiàn)了對磁盤上數(shù)據(jù)的進行寫和讀,通過剛開始的界而提示可以知道文件是否建立,以免 丟失數(shù)據(jù),我還為用戶設(shè)計了保存退出和不保存退出兩大功能供用戶做選擇。在模塊功 能實現(xiàn)部分,通過scanf從鍵盤上輸入的數(shù)字放到s
2、witch() case循環(huán)中來實現(xiàn)調(diào)用 zengjia()、shanchu() xiugai()> chazhao()等十五個函數(shù)來實現(xiàn)"添加"、"杳詢和顯示"、 “修改”、“刪除”等不同功能。關(guān)鍵字:文件、數(shù)組、循環(huán)、函數(shù)重慶科技學(xué)院 課程設(shè)計任務(wù)書 設(shè)計題目:個人通訊錄管理系統(tǒng)學(xué)牛姓名xxx課程名稱c語言程序設(shè)計課程設(shè)計專業(yè)班級電自專2011地點1515起止時間2012 年 12 刀 17 u-12 刀 28u設(shè)計內(nèi)容及要求建立一通訊錄,輸入姓名、電話號碼、住址等信息,然后対通信簿進行顯示、 杏找、添加、修改及刪除。進一步掌握利用c語言進行程
3、序設(shè)計的能力;進一步理解和運用結(jié)構(gòu)化程序設(shè) 計的思想和方法;初步掌握開發(fā)一個小型實用系統(tǒng)的基本方法;學(xué)會調(diào)試一個較長 程序的基本方法;學(xué)會利用流程圖表示算法。根據(jù)題目要求,運用所學(xué)知識,完成設(shè)計和實現(xiàn)工作,并按照書寫規(guī)范,撰寫 課程設(shè)計報告。設(shè) 計 參 數(shù)(1)系統(tǒng)分析、設(shè)計正確。(2)結(jié)果以圖表方式顯示。(3)界面簡潔、美觀。(4)報告格式規(guī)范。周一:明確設(shè)計任務(wù),學(xué)習(xí)相關(guān)基礎(chǔ)知識 周二:熟悉各知識點,進行基礎(chǔ)練習(xí) 周三:根據(jù)題h要求,進行設(shè)計和實現(xiàn) 周四:根據(jù)題目要求,進行設(shè)計和實現(xiàn) 周五:撰寫報告,進行答辯參考資料1 何欽銘顏暉.c語言程序設(shè)計.高等教冇出版社.2008年2 譚浩強張基溫
4、.c語言程序設(shè)計教程.高等教育出版社.2006年其 它說 明1 本表應(yīng)在每次實丿施前一周由負(fù)責(zé)教師填寫二份,院系審批后交院系辦備案,一份 由負(fù)責(zé)教師留用。2 .若填寫內(nèi)容較多可另紙附后。3.題多名學(xué)生共用的,在設(shè)計內(nèi)容、參數(shù)、要求等方面應(yīng)有所區(qū)別。教研室主任:指導(dǎo)教師:雷亮2012 年 12 月 10 口目錄第一章軟件需求分析說明書1.1設(shè)計軟件的目的分析1.2軟件的界面要求1.3詳細(xì)的功能分析1.3.1創(chuàng)建文件1.3.2添加聯(lián)系人1.3.3顯zf和查詢聯(lián)系人1.3.4刪除聯(lián)系人1.3.5修改聯(lián)系人1.3. 6保存退出與不保存退出14設(shè)計要求分析1.5軟件的數(shù)據(jù)結(jié)構(gòu)分析1.5.1軟件的函數(shù)1.
5、5.2文件的調(diào)用和保存. 第二章系統(tǒng)分析與設(shè)計2. 1軟件界面設(shè)計2.2軟件的數(shù)據(jù)(結(jié)構(gòu))設(shè)計2.2.1軟件的文件功能2.2.2文件內(nèi)部的數(shù)據(jù)格式2.3軟件的模塊圖2.4軟件的流程圖2.4.1添加聯(lián)系人程序流程圖2.4. 2顯示和查找聯(lián)系人程序流程圖2.4.3刪除聯(lián)系人流程圖2.4.4修改聯(lián)系人流程圖第三章軟件的實現(xiàn)3.1函數(shù)聲明3. 2 zhuca i dan ()主菜單函數(shù)3. 3 ma i n ()主函數(shù)3. 4 readf i le 0讀取文件函數(shù)3. 5 wr itef i le()聯(lián)系人寫入文件函數(shù)3. 6 zengj i a ()增加聯(lián)系人函數(shù)3. 7 shanchu ()刪除函
6、數(shù)主界面3. 8 x i ansh i ()顯示和查詢函數(shù)3. 9 xianshi 0顯示所有人函數(shù)3. 10 chazhao_xingming 0 姓名查詢函數(shù)3.11 chazhao3.12 shanchu3.13 shanchu3.14 shanchu3.15 shanchudianhuao按號碼查詢函數(shù)dange ()刪除單個聯(lián)系人函數(shù). quanbu ()刪除所有聯(lián)系人函數(shù). xingmingo按姓名刪除聯(lián)系人函數(shù) dianhuao按電話號碼刪除函數(shù) 111111111122223333334455688899101112121313141515163. 163. 173. 18 第
7、四章4. 14.24.34.4x i uga i 0修改函數(shù)主體界面1920222222222323xiugai_xingming()按姓名修改x i uga i _d i anhua ()按號碼修改聯(lián)系人函數(shù) 軟件測試文件導(dǎo)入界面軟件的主界面添加聯(lián)系人模塊4. 4. 1主界面顯示和查找聯(lián)系人界面4. 4. 2無聯(lián)系人的顯示界面234. 4. 3有聯(lián)系人的顯zf界面244. 4.4按姓名查找244. 4.5按電話號碼查找244. 5刪除聯(lián)系人模塊254. 5.1刪除聯(lián)系人主界面254. 5. 2沒有對應(yīng)聯(lián)系人的刪除界面254.5.3按姓名刪除254.5.4按電話號碼刪除264. 6修改聯(lián)系人模
8、塊264. 6. 1修改聯(lián)系人主菜單264.6.2按姓名修改274.6.3按電話修改274.7退出284.7. 1保存退出284.7.2不保存退出28第五章 總結(jié)與體會29致謝30參考文獻31第一章軟件需求分析說明書11設(shè)計軟件的目的分析本軟件要求用c語言建立一通訊錄,輸入姓名、電話號碼、住址等信息,然后對通 信錄進行顯示、查找、添加、修改及刪除。12軟件的界面要求本軟件要求軟件的界面簡潔、美觀,讓人一目了然,使用起來方便。于是我設(shè)計的 軟件首先提示您是否有通訊錄文件存在,如沒有文件,則口動建立一個,如有文件存在, 則提示導(dǎo)入成功,讓人直觀明白的了解文件的情況。按任意鍵便可以進入主菜單,在主
9、菜單上顯示出軟件的功能,通過輸入數(shù)字0到5來進行選擇便可以實現(xiàn)你所需要的功能, 每個模塊進入模塊內(nèi)部實現(xiàn)軟件的具體功能,實現(xiàn)您所需要的功能。13詳細(xì)的功能分析該系統(tǒng)用下面六個功能模塊編寫,每個模塊執(zhí)行不同的功能,體現(xiàn)了模塊化設(shè)計的 思想。下面六個模塊都是利用c語言文件,向文件中添加數(shù)據(jù)、修改數(shù)據(jù)、查詢數(shù)據(jù)、 刪除數(shù)據(jù)和保存數(shù)據(jù)。1.3. 1創(chuàng)建文件用fopen ()建立一個文木文件,然后向其中輸入數(shù)據(jù)(例如,向文件中輸入“姓 名”,“地址”,“號碼”等),并對文件進行命名。1.3.2添加聯(lián)系人通過鍵盤輸入通訊錄人員的姓名、電話號碼、地址信息便可實現(xiàn)將信息添加到通訊 錄文件內(nèi),添加完畢后,系統(tǒng)會
10、自動詢問你是否繼續(xù)添加,如你想繼續(xù)添加,再通過鍵 盤輸入通訊錄人員的姓名、電話號碼、地址信息即可實現(xiàn)繼續(xù)添加。1.3. 3顯示和查詢聯(lián)系人通過前面第一個模塊打得錄入我們便可以執(zhí)行第二個模塊,通過第二個模塊我們可 以進行對聯(lián)系人進行顯示和查找。我通過調(diào)用showall()函數(shù)來進行顯示所有的聯(lián)系人,showall()函數(shù)可以實現(xiàn)逐個顯 示聯(lián)系人。對于查找聯(lián)系人我則采用了 search()函數(shù)來進行查找聯(lián)系人,我提供了兩種查找方 法:按照姓名查找;按照電話號碼查找。1.3.4刪除聯(lián)系人我調(diào)用deletecd()函數(shù)來實現(xiàn)刪除功能,同樣我也提供給了兩種刪除方法:全部刪 除;單個刪除。其中全部刪除會提
11、示是否全部刪除,以免誤刪。1.3.5修改聯(lián)系人我調(diào)用modify。函數(shù)來實現(xiàn)修改功能,我同樣提供了兩種修改方法:對姓名進行 修改;對電話號碼進行修改。修改完畢后會提示是否據(jù)需修改。1.3.6保存退出與不保存退出你還在為謀添加、誤修改、誤刪除后悔嗎?還想回到以前的數(shù)據(jù)嗎?這個擔(dān)憂在我 的程序中您就不必?fù)?dān)心了,我為程序捉供了兩種退出方式:保存退出;不保存退出。完全解決您的后顧之憂。14設(shè)計要求分析 進一步掌握利用c語言進行程序設(shè)計的能力; 進一步理解和運用結(jié)構(gòu)化程序設(shè)計的思想和方法; 初步掌握開發(fā)一個小型實用系統(tǒng)的基木方法; 學(xué)會調(diào)試一個較長程序的基本方法; 學(xué)會利用流程圖表示算法。 根據(jù)題目要求
12、,運用所學(xué)知識,完成設(shè)計和實現(xiàn)工作,并按照書寫規(guī)范,撰寫課 程設(shè)計報告。15軟件的數(shù)據(jù)結(jié)構(gòu)分析1.5.1軟件的函數(shù)本軟件采用了不同的函數(shù)來進行定義不同模塊的功能,通過調(diào)用不同的函數(shù),可 以實現(xiàn)不同的功能。軟件小采用了五個主體函數(shù)來實現(xiàn)添加聯(lián)系人,修改聯(lián)系人,查 找聯(lián)系人,顯示聯(lián)系人,刪除聯(lián)系人的功能。1.5.2文件的調(diào)用和保存木軟件通過文木方式對用戶所錄入的信息進行保存。通過保存下來的文木,您可以 在電腦磁盤中找到您存入文件的位置,打開后便可以找到您所錄入的通訊錄信息。第二章系統(tǒng)分析與設(shè)計2.1軟件界面設(shè)計陸出軟件全部輸入、輸出數(shù)據(jù)的界面,并對每一個界面進行詳細(xì)的操作說明2.2軟件的數(shù)據(jù)(結(jié)構(gòu)
13、)設(shè)計軟件調(diào)用不同的函數(shù)來實現(xiàn)不同的功能,通過反復(fù)調(diào)用函數(shù)來實現(xiàn)反復(fù)輸入。代 碼屮通過scanf從鍵盤上輸入不同的數(shù)字選項,然后通過swtich case()來實現(xiàn)對不同函數(shù) 的調(diào)用。2. 2.1軟件的文件功能軟件采用了文本文檔進行存取,我在c盤建立了一個txl文本文檔用于存取輸入的 信息,打開c盤后就能直接看到您錄入的信息,很方便和快捷。2. 2. 2夬件內(nèi)部的數(shù)據(jù)格式我采用了 readfile()函數(shù)來讀取文件,使用if(fp=fopen(”c:通訊錄txt”,v)=null) 以只讀方式打開判定文件是否為空,如果不空,則使用fseek(fp,0,2);文件位置指針移動 到文件末尾以來進行
14、寫入數(shù)據(jù)。使用 writefileow聯(lián)系人寫入文件,用 if (fp=fopen(”c:通訊錄.txt“,”w”)=null) 以只寫的方式來對判定文件是否為空,如果不為空,則從鍵盤上錄入所需要錄入的信息 存到相應(yīng)的文件中。最后通過fclose(fp)來關(guān)閉文件,回到主界而上等待用戶輸入新的操 作。2. 3軟件的模塊圖軟件的模塊圖很直觀的反映出軟件能夠?qū)崿F(xiàn)的功能,由下面的模塊圖可以很直觀的 看出我設(shè)計的通訊錄軟件能夠方便的實現(xiàn)添加聯(lián)系人、顯示聯(lián)系人、刪除聯(lián)系人、修改 聯(lián)系人功能,另外,我設(shè)計的軟件還實現(xiàn)了保存退出和不保存退出功能,這個功能很獨 特。 在增加聯(lián)系人部分,我用了三個函數(shù)調(diào)用來分別
15、實現(xiàn)錄入聯(lián)系人姓名、號碼、地 址。 在顯示和查詢聯(lián)系人部分,我也有三個模塊:逐個顯示聯(lián)系人,按姓名查詢,按 號碼查詢。 在刪除聯(lián)系人部分,我設(shè)計了三個界面,可以實現(xiàn)全部刪除,單個刪除,回到主 菜單。、在修改聯(lián)系人模塊,我也設(shè)計了三個界面,按姓名修改,按號碼修改,回到主菜 單。最后我設(shè)計了保存退出和不保存退出,針對那些修改后卻又后悔修改的用戶需 要。主界面圖2.1軟件的模塊圖2.4軟件的流程圖由于程序流程圖較為復(fù)雜,我采用了分塊畫出程序流程圖2. 4.1添加聯(lián)系人程序流程圖由添加聯(lián)系人的程序流程圖可以看出,在添加聯(lián)系人板塊上,我設(shè)計了三種信息, 輸入姓名,輸入電話和輸入地址,輸入完成后會提示是否
16、繼續(xù)輸入,如果輸入y后則可 以繼續(xù)輸入,輸入n后返回主菜單。圖2.2添加聯(lián)系人程序流程圖2. 4. 2顯示和查找聯(lián)系人程序流程圖在主菜單上輸入2后便可以進入顯示和查詢聯(lián)系人的主界面,我為您提供了三個選 項,1 .顯示全部2.按姓名查詢3按電話查詢。輸入對應(yīng)的數(shù)字便可以實現(xiàn)對應(yīng)的功能, 同理,系統(tǒng)會在您查詢完畢后詢問您是否繼續(xù)查詢,操作同上。圖2.3顯示和查找聯(lián)系人程序流程圖2. 4. 3刪除聯(lián)系人流程圖在刪除聯(lián)系人流程圖上,我設(shè)計了全部刪除和單個刪除功能,單個刪除設(shè)計了按照 姓名刪除和按電話號碼刪除兩種選擇,在刪除時,系統(tǒng)都會詢問您是否刪除,以免誤刪。圖2.4刪除聯(lián)系人流程圖2.4.4修改聯(lián)系
17、人流程圖修改聯(lián)系人界而上我設(shè)計了按姓名修改和按號碼修改兩種方式,當(dāng)選擇時系統(tǒng)會捉 示您是否修改,若不修改則返冋主界面,若選擇是,則系統(tǒng)會該處三個修改項目:修改 姓名,修改電話,修改地址,修改完畢后系統(tǒng)會提示您是否繼續(xù)修改,如不修改,則又 返回主界面等待輸入。圖2.5修改聯(lián)系人流程圖第三章軟件的實現(xiàn)3.1函數(shù)聲明void zhucaidan(); /*主菜單函數(shù)*/ void zengjia();/*增加聯(lián)系人函數(shù)*/void readfile(); /*文件中讀入函數(shù)*/ void writefile(); /*文件中寫入函數(shù)*/ void xiugai(); /*修改聯(lián)系人函數(shù)*/ void
18、 xiugai_xingming(); /*姓名修改*/ void xiugai_dianhua(); /* 電話號碼修改*/ void chazhao();/*查找聯(lián)系人函數(shù)*/void chazhao_xingming(); /*按姓名查找*/ void chazhao_dianhua(); /*按號碼查找*/ void shanchu();/*刪除聯(lián)系人函數(shù)*/void shanchu_quanbu(); /*全部刪除*/ void shanchu_dange(); /*單個刪除*/void xianshi();/*號碼顯示*/3, 2 zhuca i dan ()主菜單函數(shù)其源代碼如下
19、:void zhucaidan()char c;system("clsn);printf(nnttl歡迎您使用通訊錄管理系統(tǒng)1 .obeat版-門;printf(nnttl1 添加聯(lián)系人2 查詢和顯不聯(lián)系人nprintf(nnttl3 刪除聯(lián)系人4 修改聯(lián)系人ih);printf(nnttl5 保存退出0 不保存退出in);printf(nnttli”);printf(f,ntt請選擇您所所要的服務(wù):”); c=getch();switch (c) /*對于上邊的選擇項目*/case *r:zengjia();break;case '2':chazhao();brea
20、k;case 3:shanchu();break;case '4*:xiugai();break;case '5 *:writefile();break;case 'of:exit(o);default:zhucaidan(); /*如果沒有則返冋主菜單等待輸入*/較難語句分析: system(” cis”);清除輸入在屏幕上的數(shù)據(jù); c=getch();將鍵盤上輸入的數(shù)據(jù)賦予c; switch (c) case :實現(xiàn)對主菜單上的選項的控制;3. 3 ma i n ()主函數(shù)main()函數(shù)的源代碼見下:void main() readfileo;while(l)f/
21、*主函數(shù)main*/*讀入文件*/*循壞(永遠(yuǎn)進行)*/zhucaiidan();/*調(diào)用主菜單函數(shù)*/main()函數(shù)功能分析:main。函數(shù)通過調(diào)用readfile()函數(shù)和循環(huán)mcnu()函數(shù)實現(xiàn)對入文件和界而進行控 制。3.4 readfileo讀取文件函數(shù)其源代碼如下: void readfileoif(fp=fopen(nc:通訊錄.txtn;'r")=null) /*以只讀方式打開判定文件是否為 空*/printf(hnttt通訊錄文件不存在”);/*判斷結(jié)論*/if(fp=fopen("同通訊錄.txtm,hwh)=null) /* 只寫方式判斷 *
22、/*為空結(jié)論*/*退出*/elseprintf(hntt 建立失敗”); exit(o);/*不為空則執(zhí)行else*/printf("nt- printf(nnt printf(hnt printf("nt- getch(); return ;歡迎使用通訊錄管理系統(tǒng) 通訊錄文件已建立按任意鍵進入主菜單”);”);”);”);exit(o);fseek(fp,0,2); /*文件位置指針移動到文件末尾*/ if (ftell(fp)>0) /* 文件不為空 */rewind(fp); /*文件位置指針移動到文件開始位置*/for (n=0;!feof(fp) &
23、& fread(&txln,sizeof(struct tongxunlu), 1 ,fp);n+);printf(nnt printf("nt printf("nt printf(hnt getch(); return;歡迎使用通訊錄管理系統(tǒng)1 .obeat版 文件導(dǎo)入成功按任意鍵返回主菜單");”);”);”);printf("nt printf("nt printf("nt printf("nt printf(hnt getch(); return;歡迎使用通訊錄管理系統(tǒng)l.obeat版 文件導(dǎo)入成功通
24、訊錄文件中無任何紀(jì)錄按任意鍵返回主菜單”);”);”);”);”);較難語句分析:否if (fp二fopen(c:通訊錄.txt,r)=nl;ll)以貝讀方式打開判定文fscck(fp, 0, 2);文件位置指針移動到文件末尾; ftell(fp):返冋當(dāng)前文件位置,也就是說返冋file指針當(dāng)前位置; rewind (fp);文件位置指針移動到文件開始位置;feof(fp)檢測流上的文件結(jié)束符;fread (&txln, sizeof (struct tongxunlu), 1, fp) ;n+)從 fp 扌旨向的文件中向txl n中讀入一個(struct tongxunlu)類型的值
25、并輸出后面的內(nèi)容。若沒有 成功執(zhí)行就不輸出后面的內(nèi)容。void readfileo®數(shù)的功能分析:首先由if(fp=fopen(hc:通訊錄.txtn,nrh)=null)判斷文件是否存在,如果不存 在,則顯示通訊錄文件不存在,如果文件為空,則顯示建立失??;若建立成功,則顯示 通訊錄文件已建立,然后利用fseek(fp,0,2);將文件位置指針移動到文件末尾等待輸入。 3. 5 wr itef i le()聯(lián)系人寫入文件函數(shù)函數(shù)源程序見2void writefile() /*聯(lián)系人寫入文件*/int i;if (fp=fopen(nc:® 訊錄.txt,;,w")
26、=null)printf(”ntt文件打開失敗”);for (i=0;i<n;i+)if (fwrite(&txli,sizeof(struct tongxunlu),l,fp)!=l)printf(hntt 寫入文件錯誤!n”);fclose(fp); /*關(guān)閉文件*/printf(hntj; /*輸岀提示信息*/printf("ntt通訊錄文件已保存");printf(hntt謝謝使用,歡迎再次使用!nn);printf("如果對本軟件有疑問,請到我們官網(wǎng)()提出您的問題,我們將 為您解答.);printf(n我們的軟件有不足之處,歡迎到官網(wǎng)()
27、反映,我們將努力改 正! ”);printf(hntt按任意鍵退出程序nttu);/*輸出完畢*/exit(o);printf(hnt");較難語句分析: fp=fopen(”c:通訊錄txt”,”w”)以只寫的方式打開c:txl.txt文件賦予fp; if (fwrite(&txli,sizeof(struct tongxunlu), 1 ,fp)!= 1)從 fp 指向的文件中向 txln中寫入一個(struct tongxunlu)類型的值并輸出后面的內(nèi)容。若沒有成功執(zhí)行 就不輸出后面的內(nèi)容。 fclose(fp);關(guān)閉文件wri(efile()聯(lián)系人寫入文件函數(shù)的功能
28、分析: 將c:通訊錄.txt文件以只讀方式打開付給fp,如果為空則輸出“文件打開失敗”; 若果成功則執(zhí)彳亍 if (fwrite(&txli,sizeof(struct tongxunlu),l,fp)!=l),如果寫入(struct tongxunlu)成功則關(guān)閉文件,若果不成功則輸岀“寫入文件錯誤! ”。3. 6 zengj i a ()增加聯(lián)系人函數(shù)其源程序如下:void zengjia() _printf(hntt 請輸入聯(lián)系人彳言,息、n");printf(” ntt輸入聯(lián)系人姓名:”);scanf("%sh,txln.xingming);/* 鍵盤輸入*
29、/printf(hntt輸入聯(lián)系人電話號碼:”); scanf(n%sh,txln.dianhua);printf("ntt輸入聯(lián)系人地址:”);scanf(n %su, txl n .dizhi);n+;/*統(tǒng)計個數(shù)*/printf(”ntt是否繼續(xù)添加聯(lián)系人?(y/n):”); /*是否繼續(xù)輸入聯(lián)系人泮/if (getch()=,y,) zengjia();return;功能分析:調(diào)用 zengjia()函數(shù)后,就可以通ii txln. xingming, txln.dianhua , txln.dizhi 數(shù) 組從鍵盤上輸入聯(lián)系人的姓名,電話,地址,輸入完畢后,系統(tǒng)會提示是否繼
30、續(xù)輸入, 輸入“y”后,則再次調(diào)用zengjiao;函數(shù),如此循環(huán),直到不輸入聯(lián)系人為止。3. 7 shanchu ()刪除函數(shù)主界面原函數(shù)代碼:void shanchu()char c;if(n=o)/*如果通訊錄屮沒冇一個記錄輸出以下部分*/printf(nntt對不起,文件中無任何紀(jì)錄”);printf("ntt按任意鍵返回主菜單”);getch(); return;system("cls");/* 清屏*/printf(hntt刪除菜單”);printf(nnttl1 刪除所有2刪除單個i”);printf(nnttl3 返回主菜單i");pri
31、ntf(hnttln);printf(,fntt請選擇您所所要的服務(wù):);c=getch();/*輸入的賦予 choice*/switch (c)case t:shanchu_quanbu();break;case ,2,:shanchu_dange();break;case '3':zhucaidan();break;default:zhucaidan();break;函數(shù)功能分析:通過界面上的數(shù)字選項,調(diào)用 shanchu_quanbu()> shanchu_dange();和 zhucaidan()函 數(shù)來實現(xiàn)不同的刪除功能。3. 8 xianshi ()顯示和查詢
32、函數(shù)函數(shù)源程序:void chazhao()char c;system("clsh);printf(hntt 顯示和查詢聯(lián)系人 ”);printf(nnttl1 逐個顯示所有2 按姓名查詢i”);printf(hnttl3 按電話查詢4 返回主菜單i”);printf(hnttl”);printf(hntt請選擇您所所要的服務(wù):”); c=getch();switch (c)case ,2,:chazhao_xingming();break; /*調(diào)用按姓名查詢函數(shù)*/case 3:chazhao_dianhua();break; /*調(diào)用按號碼查詢函數(shù)*/case '4
33、39;:zhucaidan();break;/*主菜單*/函數(shù)功能分析:首先通過getch();從鍵盤上輸入選項,通過switch case ()來調(diào)用xianshi()> chazhao_xingming()chazhao_dianhua ()三個函數(shù)實現(xiàn)不同的功能。3. 9 xianshi ()顯示所有人函數(shù)函數(shù)源程序:void xianshi()/顯示所有聯(lián)系人函數(shù)int i;system("cls ”);清楚屏幕 if(n!=0)”);printf(”ntt歡迎您查詢通訊錄所有聯(lián)系人信息for (i=0;i<n;i+)/*依次序顯示*/printf(hntt 姓名
34、: printf("ntt 電話: printf(nntt 地址: printf(nntt訐(i+1 vn)%s”,txli.xingming);%s",txli.dianhua);%sn,txli.dizhi);”);printf(nntt”);system(” pause");返冋錯誤信息”);/*無聯(lián)系人*/printf(nnttelseprintf(nntt通訊錄屮無任何紀(jì)錄”); printf(nntt按任意鍵返冋主菜單:”); getch();return;功能分析:通過for (i=0;i<n;i+)循環(huán)實現(xiàn)依次序顯示聯(lián)系人。3. 10 cha
35、zhao_xingming0 姓名查詢函數(shù)函數(shù)源程序:void chazhao_xingming()/按姓名查詢int mark=0; inti;char name20;printf(nntt按姓名查找”);printf(nntt請輸入您要查找的姓名:”); scanf("%sh,name);for(i=0;i<n;i+)if (strcmp(txli .xingming,name)=o)printf(hntt 以下是您查找的聯(lián)系人信息 ”);printf(nntt 姓名:%sh,txli.xingming);printf("ntt 電話:%sn,txli.dianh
36、ua);printf("ntt 地址:%sh,txli.dizhi);printf(nntt”);mark+;getch();return;訐(mark=0)printf("ntt沒有找到聯(lián)系人的信息”); printf(hntt按任意鍵返回主菜單“); getch();return;功能分析:通過scanf(h%sn,name)從鍵盤上輸入的姓名利用if(sh*cmp(txli.xingming,name)=o)進行對比,確認(rèn)是否有該聯(lián)系人。3. 11 chazhao_d i anhua 0按號碼查詢函數(shù)函數(shù)源程序:void chazhao_dianhua()int ma
37、rk=0;inti;char phone15; printf(hntt按電話查找”);printf(”ntt請輸入電話號碼:”);scanf(h%s",phone);for(i=0;i<n;i+)if (strcmp(txli.dianhua,phone)=0)/ 對比查找函數(shù)printf(nntt 以下是您查找的學(xué)生信息 ”);printf(hntt 姓名:%sh,txli.xingming);printf("ntt 電話: %sn,txli .dianhua);printf(nntt 地址:%sn,txli.dizhi);printf(hntt”);printf(
38、”ntt按任意鍵返回主菜單:”); mark+;getch();return;訐(mark=0)printf(hntt沒有找到聯(lián)系人的信息“);printf(hntt按任意鍵返回主菜單”); getch();return;功能分析:通過scanf(h%sh,name)從鍵盤上輸入的電話號碼利用if (strcmp(txli.dianhua,phone)=0)進行對比查找,確認(rèn)是否有該聯(lián)系人。3. 12 shanchu_dange ()刪除單個聯(lián)系人函數(shù)函數(shù)源程序:void shanchu_dange()刪除單個聯(lián)系人char c;printf(nnt”);printf("ntt 1
39、按姓名刪除2 按電話刪除”);printf(f,ntt請選擇您所所要的服務(wù):”); printf(hnt ”);c=getch();switch (c)case' 1 ':shanchu_xingming();break;case '2,:shanchu_dianhua();break;函數(shù)功能分析:這個函數(shù)調(diào)用shanchu_xingming()函數(shù)和shanchu_dianhua()函數(shù)來通過從鍵盤上輸 入的姓名或者電話號碼來實現(xiàn)刪除功能。3. 13 shanchu_quanbu ()刪除所有聯(lián)系人函數(shù)函數(shù)源程序如下:void shanchu_quanbu()/ff
40、llj除所有聯(lián)系人printf(nntt 確認(rèn)刪除?(y/n)u); if (getch()=,y,)fclose(fp);if (fp=fopen(uffi 訊錄.txth,nwn)=null)/* 文件空輸 ih */printf(”ntt不能打開文件,刪除失敗”); readfile();n=0;printf("ntt紀(jì)錄已刪除,按任意鍵返回主菜單”);getch();return;elsereturn;deleteall()ffl除所有函數(shù)功能分析:首先在刪除前系統(tǒng)會提示是否刪除,如果確認(rèn)刪除,則系統(tǒng)將檢查文件輸出是否為 空,如果為空,則顯示“不能打開文件,刪除失敗”,并且馬
41、上調(diào)用函數(shù)readfile();重新 讀入文件;如果文件存在,則顯示“紀(jì)錄已刪除,按任意鍵返回主菜單”。3, 14 shanchu_xingming()按姓名刪除聯(lián)系人函數(shù)函數(shù)源程序為:void shanchu_xingming()/按姓名刪除聯(lián)系人int i,m,mark=0,a=0;char name20j;printf(”ntt請輸入要刪除聯(lián)系人姓名:”);scanf(h%sh,name);/* 鍵盤輸入姓名 */for (i=a;i<n;i+)if (strcmp(txli.xingming,name) = 0) /對比字符申杳找到耍刪除的聯(lián)系人 printf(nntt以下是您要
42、刪除的聯(lián)系人紀(jì)錄:”);printf(nntt”);printf(”ntt 姓名:%sh,txli.xingming);printf("ntt 電話:%sn,txli.dianhua);printf("ntt 地址:%s",txli.dizhi);printf(nntt”);printf(”ntt 是否刪除?(y/n)u);if (getch()=,yt) /實現(xiàn)刪除功能 for (m=i;m<n-l;m+)txlm=txlm+l;/*將通訊錄的想前移*/n-;mark+;printf(hntt 刪除成功”); printf(”ntt 是否繼續(xù)刪除?(y/n
43、)u);if (getch()=,y,)shanchu_xingming();/*繼續(xù)調(diào)用刪除函數(shù)*/return;elsereturn;continue;if (mark=0)printf(nntt沒有該聯(lián)系人的紀(jì)錄”);printf(nntt 是否繼續(xù)刪除?(y/n)n);if (getch()=y)shanchu_xingming();return;較難語句分析:if (strcmp(txlil.xingming,name) = 0)對比輸入的名字與文件中存在的名字 是否一致。txlj=txlj+l; 將通訊錄信息向前移功能分析:shanchu_xingming ()函數(shù)功能分析:首先通
44、過 scanf("%s",name);從鍵盤上輸入姓名,通過 if (strcmp(txli.xingming,name) =0)對比輸入的名字與文件中存在的名字是否一致,如果一致,則顯示出聯(lián)系人信息, 并給出是否修改,輸入y后,則通過txljnxlj+l;將通訊錄后面的數(shù)據(jù)向前移一個單位。 3. 15 shanchu_d i anhua ()按電話號碼刪除函數(shù)函數(shù)源程序:void shanchu_dianhua()/按電話號碼刪除聯(lián)系人int i,m,mark=0;/*變量定義*/char phone20j;printf(”ntt請輸入要刪除聯(lián)系人電話號碼:”); sca
45、nf("%s",phone);if(n=0) printf("ntt對不起,文件中無任何紀(jì)錄”); printf(”ntt按任意鍵返回主菜單”); getch();return;for (i=0;i<n;i+)if (strcmp(txli.dianhua,phone)=0)printfcfntt以卜是您要刪除的聯(lián)系人紀(jì)錄');printf("ntt 姓名:%s",txli.xingming); printf(nntt 電話:%sn,txli.dianhua); printf(”ntt 地址:%sn,txli.dizhi);pri
46、ntf(hntt 是否刪除?(y/n)h);if (getch()=y)for (m=i;m<n-l;m+4-) /遞推替換實現(xiàn)刪除 txlm=txlm+l;n-;mark+; /記錄刪除次數(shù) printf("ntt 刪除成功”); printf(hntt 是否繼續(xù)刪除?(y/n)n);if (getch()=,y,)shanchu_dianhua();return; elsereturn;continue;if (mark=0) printf(hntt沒有該聯(lián)系人的紀(jì)錄”); printf(”ntt 是否繼續(xù)刪除?(y/n)u); if (getch()=,y,) retur
47、n ;函數(shù)功能分析:首先通過scanf(h%sn, phone);從鍵盤上輸入電話號碼,通過if (strcmp(txli. dianhua, phone) = 0)對比輸入的名字與文件中存在的號碼是否一致,如果一致,則顯示岀聯(lián)系 人信息,并給出是否修改,輸入y后,則通過txljnxlj+l;將通訊錄后面的數(shù)據(jù)向前移 一個單位。3. 16 x i uga i ()修改函數(shù)主體界面函數(shù)的源代碼:void xiugai() /*修改函數(shù)*/char c;if(n=0)printf(mntt對不起,文件中無任何紀(jì)錄”);printf(nntt按任意鍵返回主菜單”); getch();return;s
48、ystem("cls");printf(nntt修改聯(lián)系人菜單”);printf(nnttl1 按姓名修改2 按電話修改printf("nttl任意鍵-按返回主菜單printf("ntt");c=getch(); switch(c)case 11 ':xiugai_xingming();break;case 2:xiugai_dianhua();break;default:zhucaidan();break;功能分析:case來實現(xiàn)對通過c=getch()將鍵盤上輸入的數(shù)字賦予c ,通過swtich xiugai_xingming()和
49、 xiugai_dianhua()函數(shù)的調(diào)用。3. 17 xiugai_xingming()按姓名修改函數(shù)源代碼:void xiugai_xingming()char c;int i,mark=0;char name|20|;printf(nntt請輸入要修改的聯(lián)系人姓名:"); scanf(h%sh,name);if(n=0) printf(hntt文件中無任何聯(lián)系人”); printf(”ntt按任意鍵返回主菜單“); getch(); mark+;return; for(i=0;i<n;i+)if(strcmp(txli.xingming,name)=o)printf(n
50、ntt以下是您要修改的聯(lián)系人信息”);printf(hntt 姓名:%sn,txli.xingming);printf(hntt 電話:%s",txli.dianhua); printf(nntt 地址:%sm,txli.dizhi);printf(hntt 是否修改(y/n)”);if(getch()=,y,) printf(nnt請選擇修改信息”);printf("nt1 修改姓名2 修改電話”);”);printf(hnt3 修改地址n);printf(nntprintfcnm請選擇您所所耍的服務(wù):”); scanf("%s'&c);swit
51、ch(c)case t: printf("nt 請輸入新姓名:"); scanf(',%s,txli.xingming);break; case'2,:printf("nt 請輸入新電話:%sh); scanf(" %s u, txl i .dianhua) ;break; case'3':printf(hnt 請輸入新地址:"); scanf(" %sn ,txl i .dizhi) ;break;if(mark=o)printf(mntt沒有找到聯(lián)系人信息”); printf(nnt 是否繼續(xù)修改?
52、 (y/n):”); if(getch()=,y,) xiugai_xingming();return; 功能分析:通過if(strcmp(txlfi.xingming,name)=o)比較是否有該聯(lián)系人,如果有,則系統(tǒng)彈 出修改項目,通過scanf(”s”,&c);錄入的數(shù)據(jù)來實現(xiàn)對姓名、電話、地址的修改。3. 18 xiugai_dianhua ()按號碼修改聯(lián)系人函數(shù)函數(shù)源代碼:void xiugai_dianhua()char c,phone15;int i,mark=0;printf("ntt請輸入要修改聯(lián)系人的號碼:"); scanf("%s'phone);if(n=0)printf("ntt文件中無任何聯(lián)系人”);printf("ntt按任意鍵返回主菜單”); getch();mark+4-;return;for(i=0;i<n;i+)if(strcmp(txli.dianhua,phone)=0) printf(”ntt以下是您要修改的聯(lián)系人信息”);printf(nntt 姓名:%s",txli.xingming);printf("ntt 電話:%s",txli.
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 福建師范大學(xué)協(xié)和學(xué)院《現(xiàn)代港口物流管理》2021-2022學(xué)年第一學(xué)期期末試卷
- 福建師范大學(xué)《中國現(xiàn)當(dāng)代文學(xué)名家名作導(dǎo)讀》2021-2022學(xué)年第一學(xué)期期末試卷
- 阜陽師范大學(xué)《芭蕾基礎(chǔ)訓(xùn)練》2021-2022學(xué)年第一學(xué)期期末試卷
- 勝利油田受限空間作業(yè)安全管理實施細(xì)則
- 企業(yè)安全生產(chǎn)大培訓(xùn)登記表
- 2024屆上海市西南位育中學(xué)高三5月質(zhì)檢數(shù)學(xué)試題
- 2024年海南客運資格考試考題題庫及答案
- 2024年邢臺申請客運從業(yè)資格證考試題和答案
- 2024年伊春A1客運從業(yè)資格證
- 2024年昭通c1客運資格證考試
- 電氣機械系統(tǒng)的機器視覺與圖像處理
- 《白蛇緣起》賞析
- 《分紅險的銷售》課件
- 中國安格斯牛行業(yè)報告
- 射頻技術(shù)課件
- 幼兒園園長的教師隊伍建設(shè)與管理
- 電力行業(yè)網(wǎng)絡(luò)安全
- WORD操作技巧深度練習(xí)(20題)
- 提升員工營銷能力的企業(yè)教育培訓(xùn)
- 大學(xué)生社團對大學(xué)生的影響的社會調(diào)查報告
- 麻醉科臨床診療指南2020版
評論
0/150
提交評論