




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
PAGE重慶科技學(xué)院《C語言程序設(shè)計(jì)》課程設(shè)計(jì)報(bào)告學(xué)院:_電氣與信息工程學(xué)院_專業(yè)班級(jí):學(xué)生姓名:學(xué)號(hào):設(shè)計(jì)地點(diǎn)(單位)________I515________________
設(shè)計(jì)題目:__________個(gè)人通訊錄管理系統(tǒng)_____________完成日期:指導(dǎo)教師評(píng)語:___________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________成績(五級(jí)記分制):________________
指導(dǎo)教師(簽字):________________ 重慶科技學(xué)院《C語言程序設(shè)計(jì)》課程設(shè)計(jì)報(bào)告PAGE31摘要本次課程設(shè)計(jì)的題目為個(gè)人通訊錄管理系統(tǒng),要求將程序中所輸入的聯(lián)系人姓名、電話和地址信息這三個(gè)數(shù)據(jù)以文本方式保存在磁盤中,并且能夠?qū)λ鶅?chǔ)存的聯(lián)系人信息進(jìn)行顯示、查詢、修改、刪除等功能。我編寫的程序從整體上看可分為兩個(gè)部分,一部分為文件的建立、讀取和保存,另一部分為通訊錄功能的實(shí)現(xiàn)。在文件部分,我通過readfile()函數(shù)和writefile()函數(shù)從而實(shí)現(xiàn)了對(duì)磁盤上數(shù)據(jù)的進(jìn)行寫和讀,通過剛開始的界面提示可以知道文件是否建立,以免丟失數(shù)據(jù),我還為用戶設(shè)計(jì)了保存退出和不保存退出兩大功能供用戶做選擇。在模塊功能實(shí)現(xiàn)部分,通過scanf從鍵盤上輸入的數(shù)字放到switch()case循環(huán)中來實(shí)現(xiàn)調(diào)用zengjia()、shanchu()、xiugai()、chazhao()等十五個(gè)函數(shù)來實(shí)現(xiàn)“添加”、“查詢和顯示”、“修改”、“刪除”等不同功能。關(guān)鍵字:文件、數(shù)組、循環(huán)、函數(shù)
重慶科技學(xué)院課程設(shè)計(jì)任務(wù)書設(shè)計(jì)題目:個(gè)人通訊錄管理系統(tǒng)學(xué)生姓名蔣洪山課程名稱C語言程序設(shè)計(jì)課程設(shè)計(jì)專業(yè)班級(jí)電自專2011地點(diǎn)I515起止時(shí)間2012年12月17日-12月28日設(shè)計(jì)內(nèi)容及要求建立一通訊錄,輸入姓名、電話號(hào)碼、住址等信息,然后對(duì)通信簿進(jìn)行顯示、查找、添加、修改及刪除。進(jìn)一步掌握利用C語言進(jìn)行程序設(shè)計(jì)的能力;進(jìn)一步理解和運(yùn)用結(jié)構(gòu)化程序設(shè)計(jì)的思想和方法;初步掌握開發(fā)一個(gè)小型實(shí)用系統(tǒng)的基本方法;學(xué)會(huì)調(diào)試一個(gè)較長程序的基本方法;學(xué)會(huì)利用流程圖表示算法。根據(jù)題目要求,運(yùn)用所學(xué)知識(shí),完成設(shè)計(jì)和實(shí)現(xiàn)工作,并按照書寫規(guī)范,撰寫課程設(shè)計(jì)報(bào)告。設(shè)計(jì)參數(shù)(1)系統(tǒng)分析、設(shè)計(jì)正確。(2)結(jié)果以圖表方式顯示。(3)界面簡潔、美觀。(4)報(bào)告格式規(guī)范。進(jìn)度要求周一:明確設(shè)計(jì)任務(wù),學(xué)習(xí)相關(guān)基礎(chǔ)知識(shí)周二:熟悉各知識(shí)點(diǎn),進(jìn)行基礎(chǔ)練習(xí)周三:根據(jù)題目要求,進(jìn)行設(shè)計(jì)和實(shí)現(xiàn)周四:根據(jù)題目要求,進(jìn)行設(shè)計(jì)和實(shí)現(xiàn)周五:撰寫報(bào)告,進(jìn)行答辯參考資料[1]何欽銘顏暉.《C語言程序設(shè)計(jì)》.高等教育出版社.2008年[2]譚浩強(qiáng)張基溫.《C語言程序設(shè)計(jì)教程》.高等教育出版社.2006年其它說明1.本表應(yīng)在每次實(shí)施前一周由負(fù)責(zé)教師填寫二份,院系審批后交院系辦備案,一份由負(fù)責(zé)教師留用。2.若填寫內(nèi)容較多可另紙附后。3.一題多名學(xué)生共用的,在設(shè)計(jì)內(nèi)容、參數(shù)、要求等方面應(yīng)有所區(qū)別。教研室主任:指導(dǎo)教師:雷亮2012年12月10日目錄第一章軟件需求分析說明書 11.1設(shè)計(jì)軟件的目的分析 11.2軟件的界面要求 11.3詳細(xì)的功能分析 11.3.1創(chuàng)建文件 11.3.2添加聯(lián)系人 11.3.3顯示和查詢聯(lián)系人 11.3.4刪除聯(lián)系人 11.3.5修改聯(lián)系人 11.3.6保存退出與不保存退出 11.4設(shè)計(jì)要求分析 21.5軟件的數(shù)據(jù)結(jié)構(gòu)分析 21.5.1軟件的函數(shù) 21.5.2文件的調(diào)用和保存 2第二章系統(tǒng)分析與設(shè)計(jì) 32.1軟件界面設(shè)計(jì) 32.2軟件的數(shù)據(jù)(結(jié)構(gòu))設(shè)計(jì) 32.2.1軟件的文件功能 32.2.2文件內(nèi)部的數(shù)據(jù)格式 32.3軟件的模塊圖 32.4軟件的流程圖 42.4.1添加聯(lián)系人程序流程圖 42.4.2顯示和查找聯(lián)系人程序流程圖 52.4.3刪除聯(lián)系人流程圖 52.4.4修改聯(lián)系人流程圖 6第三章軟件的實(shí)現(xiàn) 83.1函數(shù)聲明 83.2zhucaidan()主菜單函數(shù) 83.3main()主函數(shù) 93.4readfile()讀取文件函數(shù) 93.5writefile()聯(lián)系人寫入文件函數(shù) 103.6zengjia()增加聯(lián)系人函數(shù) 113.7shanchu()刪除函數(shù)主界面 113.8xianshi()顯示和查詢函數(shù) 123.9xianshi()顯示所有人函數(shù) 133.10chazhao_xingming()姓名查詢函數(shù) 133.11chazhao_dianhua()按號(hào)碼查詢函數(shù) 143.12shanchu_dange()刪除單個(gè)聯(lián)系人函數(shù) 153.13shanchu_quanbu()刪除所有聯(lián)系人函數(shù) 153.14shanchu_xingming()按姓名刪除聯(lián)系人函數(shù) 163.15shanchu_dianhua()按電話號(hào)碼刪除函數(shù) 173.16xiugai()修改函數(shù)主體界面 183.17xiugai_xingming()按姓名修改 193.18xiugai_dianhua()按號(hào)碼修改聯(lián)系人函數(shù) 20第四章軟件測試 224.1文件導(dǎo)入界面 224.2軟件的主界面 224.3添加聯(lián)系人模塊 224.4顯示和查找聯(lián)系人界面 234.4.1主界面 234.4.2無聯(lián)系人的顯示界面 234.4.3有聯(lián)系人的顯示界面 244.4.4按姓名查找 244.4.5按電話號(hào)碼查找 244.5刪除聯(lián)系人模塊 254.5.1刪除聯(lián)系人主界面 254.5.2沒有對(duì)應(yīng)聯(lián)系人的刪除界面 254.5.3按姓名刪除 254.5.4按電話號(hào)碼刪除 264.6修改聯(lián)系人模塊 264.6.1修改聯(lián)系人主菜單 264.6.2按姓名修改 274.6.3按電話修改 274.7退出 284.7.1保存退出 284.7.2不保存退出 28第五章 總結(jié)與體會(huì) 29致謝 30參考文獻(xiàn) 31第一章軟件需求分析說明書1.1設(shè)計(jì)軟件的目的分析本軟件要求用C語言建立一通訊錄,輸入姓名、電話號(hào)碼、住址等信息,然后對(duì)通信錄進(jìn)行顯示、查找、添加、修改及刪除。1.2軟件的界面要求本軟件要求軟件的界面簡潔、美觀,讓人一目了然,使用起來方便。于是我設(shè)計(jì)的軟件首先提示您是否有通訊錄文件存在,如沒有文件,則自動(dòng)建立一個(gè),如有文件存在,則提示導(dǎo)入成功,讓人直觀明白的了解文件的情況。按任意鍵便可以進(jìn)入主菜單,在主菜單上顯示出軟件的功能,通過輸入數(shù)字0到5來進(jìn)行選擇便可以實(shí)現(xiàn)你所需要的功能,每個(gè)模塊進(jìn)入模塊內(nèi)部實(shí)現(xiàn)軟件的具體功能,實(shí)現(xiàn)您所需要的功能。1.3詳細(xì)的功能分析該系統(tǒng)用下面六個(gè)功能模塊編寫,每個(gè)模塊執(zhí)行不同的功能,體現(xiàn)了模塊化設(shè)計(jì)的思想。下面六個(gè)模塊都是利用C語言文件,向文件中添加數(shù)據(jù)、修改數(shù)據(jù)、查詢數(shù)據(jù)、刪除數(shù)據(jù)和保存數(shù)據(jù)。1.3.1創(chuàng)建文件用fopen()建立一個(gè)文本文件,然后向其中輸入數(shù)據(jù)(例如,向文件中輸入“姓名”,“地址”,“號(hào)碼”等),并對(duì)文件進(jìn)行命名。1.3.2添加聯(lián)系人通過鍵盤輸入通訊錄人員的姓名、電話號(hào)碼、地址信息便可實(shí)現(xiàn)將信息添加到通訊錄文件內(nèi),添加完畢后,系統(tǒng)會(huì)自動(dòng)詢問你是否繼續(xù)添加,如你想繼續(xù)添加,再通過鍵盤輸入通訊錄人員的姓名、電話號(hào)碼、地址信息即可實(shí)現(xiàn)繼續(xù)添加。1.3.3顯示和查詢聯(lián)系人通過前面第一個(gè)模塊打得錄入我們便可以執(zhí)行第二個(gè)模塊,通過第二個(gè)模塊我們可以進(jìn)行對(duì)聯(lián)系人進(jìn)行顯示和查找。我通過調(diào)用showall()函數(shù)來進(jìn)行顯示所有的聯(lián)系人,showall()函數(shù)可以實(shí)現(xiàn)逐個(gè)顯示聯(lián)系人。對(duì)于查找聯(lián)系人我則采用了search()函數(shù)來進(jìn)行查找聯(lián)系人,我提供了兩種查找方法:=1\*GB3①按照姓名查找;=2\*GB3②按照電話號(hào)碼查找。1.3.4刪除聯(lián)系人我調(diào)用deletecd()函數(shù)來實(shí)現(xiàn)刪除功能,同樣我也提供給了兩種刪除方法:=1\*GB3①全部刪除;=2\*GB3②單個(gè)刪除。其中全部刪除會(huì)提示是否全部刪除,以免誤刪。1.3.5修改聯(lián)系人我調(diào)用modify()函數(shù)來實(shí)現(xiàn)修改功能,我同樣提供了兩種修改方法:=1\*GB3①對(duì)姓名進(jìn)行修改;=2\*GB3②對(duì)電話號(hào)碼進(jìn)行修改。修改完畢后會(huì)提示是否據(jù)需修改。1.3.6你還在為誤添加、誤修改、誤刪除后悔嗎?還想回到以前的數(shù)據(jù)嗎?這個(gè)擔(dān)憂在我的程序中您就不必?fù)?dān)心了,我為程序提供了兩種退出方式:=1\*GB3①保存退出;=2\*GB3②不保存退出。完全解決您的后顧之憂。1.4設(shè)計(jì)要求分析=1\*GB3①進(jìn)一步掌握利用C語言進(jìn)行程序設(shè)計(jì)的能力;=2\*GB3②進(jìn)一步理解和運(yùn)用結(jié)構(gòu)化程序設(shè)計(jì)的思想和方法;=3\*GB3③初步掌握開發(fā)一個(gè)小型實(shí)用系統(tǒng)的基本方法;=4\*GB3④學(xué)會(huì)調(diào)試一個(gè)較長程序的基本方法;=5\*GB3⑤學(xué)會(huì)利用流程圖表示算法。⑥根據(jù)題目要求,運(yùn)用所學(xué)知識(shí),完成設(shè)計(jì)和實(shí)現(xiàn)工作,并按照書寫規(guī)范,撰寫課程設(shè)計(jì)報(bào)告。1.5軟件的數(shù)據(jù)結(jié)構(gòu)分析1.5.1軟件的函數(shù)本軟件采用了不同的函數(shù)來進(jìn)行定義不同模塊的功能,通過調(diào)用不同的函數(shù),可以實(shí)現(xiàn)不同的功能。軟件中采用了五個(gè)主體函數(shù)來實(shí)現(xiàn)添加聯(lián)系人,修改聯(lián)系人,查找聯(lián)系人,顯示聯(lián)系人,刪除聯(lián)系人的功能。1.5.2文件的調(diào)用和保存本軟件通過文本方式對(duì)用戶所錄入的信息進(jìn)行保存。通過保存下來的文本,您可以在電腦磁盤中找到您存入文件的位置,打開后便可以找到您所錄入的通訊錄信息。
第二章系統(tǒng)分析與設(shè)計(jì)2.1軟件界面設(shè)計(jì)畫出軟件全部輸入、輸出數(shù)據(jù)的界面,并對(duì)每一個(gè)界面進(jìn)行詳細(xì)的操作說明2.2軟件的數(shù)據(jù)(結(jié)構(gòu))設(shè)計(jì)軟件調(diào)用不同的函數(shù)來實(shí)現(xiàn)不同的功能,通過反復(fù)調(diào)用函數(shù)來實(shí)現(xiàn)反復(fù)輸入。代碼中通過scanf從鍵盤上輸入不同的數(shù)字選項(xiàng),然后通過swtichcase()來實(shí)現(xiàn)對(duì)不同函數(shù)的調(diào)用。2.2.1軟件的文件功能軟件采用了文本文檔進(jìn)行存取,我在C盤建立了一個(gè)txl文本文檔用于存取輸入的信息,打開C盤后就能直接看到您錄入的信息,很方便和快捷。2.2.2文件內(nèi)部的數(shù)據(jù)格式我采用了readfile()函數(shù)來讀取文件,使用if((fp=fopen("c:\\通訊錄.txt","r"))==NULL)以只讀方式打開判定文件是否為空,如果不空,則使用fseek(fp,0,2);文件位置指針移動(dòng)到文件末尾以來進(jìn)行寫入數(shù)據(jù)。使用writefile()將聯(lián)系人寫入文件,用if((fp=fopen("c:\\通訊錄.txt","w"))==NULL)以只寫的方式來對(duì)判定文件是否為空,如果不為空,則從鍵盤上錄入所需要錄入的信息存到相應(yīng)的文件中。最后通過fclose(fp)來關(guān)閉文件,回到主界面上等待用戶輸入新的操作。2.3軟件的模塊圖軟件的模塊圖很直觀的反映出軟件能夠?qū)崿F(xiàn)的功能,由下面的模塊圖可以很直觀的看出我設(shè)計(jì)的通訊錄軟件能夠方便的實(shí)現(xiàn)添加聯(lián)系人、顯示聯(lián)系人、刪除聯(lián)系人、修改聯(lián)系人功能,另外,我設(shè)計(jì)的軟件還實(shí)現(xiàn)了保存退出和不保存退出功能,這個(gè)功能很獨(dú)特。①在增加聯(lián)系人部分,我用了三個(gè)函數(shù)調(diào)用來分別實(shí)現(xiàn)錄入聯(lián)系人姓名、號(hào)碼、地址。②在顯示和查詢聯(lián)系人部分,我也有三個(gè)模塊:逐個(gè)顯示聯(lián)系人,按姓名查詢,按號(hào)碼查詢。③在刪除聯(lián)系人部分,我設(shè)計(jì)了三個(gè)界面,可以實(shí)現(xiàn)全部刪除,單個(gè)刪除,回到主菜單。④在修改聯(lián)系人模塊,我也設(shè)計(jì)了三個(gè)界面,按姓名修改,按號(hào)碼修改,回到主菜單。⑤最后我設(shè)計(jì)了保存退出和不保存退出,針對(duì)那些修改后卻又后悔修改的用戶需要。主界面添加聯(lián)系人主界面添加聯(lián)系人刪除聯(lián)系人保存退出修改聯(lián)系人不保存退出輸入姓名輸入號(hào)碼顯示聯(lián)系人按姓名查詢?nèi)縿h除刪除單個(gè)按姓名修改按號(hào)碼修改保存退出不保存退出輸入地址按號(hào)碼查詢回主菜單回主菜單2.4軟件的流程圖由于程序流程圖較為復(fù)雜,我采用了分塊畫出程序流程圖2.4.1添加聯(lián)系人程序流程圖由添加聯(lián)系人的程序流程圖可以看出,在添加聯(lián)系人板塊上,我設(shè)計(jì)了三種信息,輸入姓名,輸入電話和輸入地址,輸入完成后會(huì)提示是否繼續(xù)輸入,如果輸入y后則可以繼續(xù)輸入,輸入n后返回主菜單。主界面主界面添加聯(lián)系人輸入姓名輸入電話輸入地址是否繼續(xù)添加Y/yN/n開始圖2.2添加聯(lián)系人程序流程圖2.4.2顯示和查找聯(lián)系人程序流程圖在主菜單上輸入2后便可以進(jìn)入顯示和查詢聯(lián)系人的主界面,我為您提供了三個(gè)選項(xiàng),1.顯示全部2.按姓名查詢3.按電話查詢。輸入對(duì)應(yīng)的數(shù)字便可以實(shí)現(xiàn)對(duì)應(yīng)的功能,同理,系統(tǒng)會(huì)在您查詢完畢后詢問您是否繼續(xù)查詢,操作同上。主界面主界面顯示全部Y/yN/n開始圖2.3顯示和查找聯(lián)系人程序流程圖2.4.3刪除聯(lián)系人流程圖在刪除聯(lián)系人流程圖上,我設(shè)計(jì)了全部刪除和單個(gè)刪除功能,單個(gè)刪除設(shè)計(jì)了按照姓名刪除和按電話號(hào)碼刪除兩種選擇,在刪除時(shí),系統(tǒng)都會(huì)詢問您是否刪除,以免誤刪。主界面主界面刪除所有單個(gè)刪除N/n按電話刪除刪除成功Y/y開始圖2.4刪除聯(lián)系人流程圖2.4.4修改聯(lián)系人流程圖修改聯(lián)系人界面上我設(shè)計(jì)了按姓名修改和按號(hào)碼修改兩種方式,當(dāng)選擇時(shí)系統(tǒng)會(huì)提示您是否修改,若不修改則返回主界面,若選擇是,則系統(tǒng)會(huì)該處三個(gè)修改項(xiàng)目:修改姓名,修改電話,修改地址,修改完畢后系統(tǒng)會(huì)提示您是否繼續(xù)修改,如不修改,則又返回主界面等待輸入。主界面主界面修改聯(lián)系人Y/yN/nY/yN/n開始圖2.5修改聯(lián)系人流程圖
第三章軟件的實(shí)現(xiàn)3.1函數(shù)聲明voidzhucaidan();/*主菜單函數(shù)*/voidzengjia();/*增加聯(lián)系人函數(shù)*/voidreadfile();/*文件中讀入函數(shù)*/voidwritefile();/*文件中寫入函數(shù)*/voidxiugai();/*修改聯(lián)系人函數(shù)*/ voidxiugai_xingming();/*姓名修改*/ voidxiugai_dianhua();/*電話號(hào)碼修改*/voidchazhao();/*查找聯(lián)系人函數(shù)*/ voidchazhao_xingming();/*按姓名查找*/ voidchazhao_dianhua();/*按號(hào)碼查找*/voidshanchu();/*刪除聯(lián)系人函數(shù)*/ voidshanchu_quanbu();/*全部刪除*/ voidshanchu_dange();/*單個(gè)刪除*/voidxianshi();/*號(hào)碼顯示*/3.2zhucaidan()主菜單函數(shù)其源代碼如下:voidzhucaidan(){ charc; system("cls"); printf("\n\t\t|歡迎您使用通訊錄管理系統(tǒng)1.0beat版|"); printf("\n\t\t|1-添加聯(lián)系人2-查詢和顯示聯(lián)系人|"); printf("\n\t\t|3-刪除聯(lián)系人4-修改聯(lián)系人|"); printf("\n\t\t|5-保存退出0-不保存退出|"); printf("\n\t\t||"); printf("\n\t\t請(qǐng)選擇您所所要的服務(wù):"); c=getch(); switch(c)/*對(duì)于上邊的選擇項(xiàng)目*/ { case'1':zengjia();break; case'2':chazhao();break; case'3':shanchu();break; case'4':xiugai();break; case'5':writefile();break; case'0':exit(0); default:zhucaidan();/*如果沒有則返回主菜單等待輸入*/ }}較難語句分析:system("cls");清除輸入在屏幕上的數(shù)據(jù);c=getch();將鍵盤上輸入的數(shù)據(jù)賦予c;switch(c)case:實(shí)現(xiàn)對(duì)主菜單上的選項(xiàng)的控制;3.3main()主函數(shù)main()函數(shù)的源代碼見下:voidmain()/*主函數(shù)main*/{ readfile();/*讀入文件*/ while(1)/*循環(huán)(永遠(yuǎn)進(jìn)行)*/ { zhucaiidan();/*調(diào)用主菜單函數(shù)*/ }}main()函數(shù)功能分析:main()函數(shù)通過調(diào)用readfile()函數(shù)和循環(huán)menu()函數(shù)實(shí)現(xiàn)對(duì)入文件和界面進(jìn)行控制。3.4readfile()讀取文件函數(shù)其源代碼如下:voidreadfile(){ if((fp=fopen("c:\\通訊錄.txt","r"))==NULL)/*以只讀方式打開判定文件是否為空*/ { printf("\n\t\t\t通訊錄文件不存在");/*判斷結(jié)論*/ if((fp=fopen("同通訊錄.txt","w"))==NULL)/*只寫方式判斷*/ { printf("\n\t\t建立失敗");/*為空結(jié)論*/ exit(0);/*退出*/ } else/*不為空則執(zhí)行else*/ { printf("\n\t歡迎使用通訊錄管理系統(tǒng)"); printf("\n\t通訊錄文件已建立"); printf("\n\t按任意鍵進(jìn)入主菜單"); printf("\n\t"); getch(); return; } exit(0); } fseek(fp,0,2);/*文件位置指針移動(dòng)到文件末尾*/ if(ftell(fp)>0)/*文件不為空*/ { rewind(fp);/*文件位置指針移動(dòng)到文件開始位置*/ for(n=0;!feof(fp)&&fread(&txl[n],sizeof(structtongxunlu),1,fp);n++); printf("\n\t歡迎使用通訊錄管理系統(tǒng)1.0beat版"); printf("\n\t文件導(dǎo)入成功"); printf("\n\t按任意鍵返回主菜單"); printf("\n\t"); getch(); return; } printf("\n\t歡迎使用通訊錄管理系統(tǒng)1.0beat版"); printf("\n\t文件導(dǎo)入成功"); printf("\n\t通訊錄文件中無任何紀(jì)錄"); printf("\n\t按任意鍵返回主菜單"); printf("\n\t"); getch(); return;}較難語句分析:if((fp=fopen("c:\\通訊錄.txt","r"))==NULL)以只讀方式打開判定文件是否為空; fseek(fp,0,2);文件位置指針移動(dòng)到文件末尾;ftell(fp):返回當(dāng)前文件位置,也就是說返回FILE指針當(dāng)前位置; rewind(fp);文件位置指針移動(dòng)到文件開始位置;feof(fp)檢測流上的文件結(jié)束符;fread(&txl[n],sizeof(structtongxunlu),1,fp);n++)從fp指向的文件中向txl[n]中讀入一個(gè)(structtongxunlu)類型的值并輸出后面的內(nèi)容。若沒有成功執(zhí)行就不輸出后面的內(nèi)容。voidreadfile()函數(shù)的功能分析:首先由 if((fp=fopen("c:\\通訊錄.txt","r"))==NULL)判斷文件是否存在,如果不存在,則顯示通訊錄文件不存在,如果文件為空,則顯示建立失??;若建立成功,則顯示通訊錄文件已建立,然后利用fseek(fp,0,2);將文件位置指針移動(dòng)到文件末尾等待輸入。3.5writefile()聯(lián)系人寫入文件函數(shù)函數(shù)源程序見下:voidwritefile()/*聯(lián)系人寫入文件*/{ inti; if((fp=fopen("c:\\通訊錄.txt","w"))==NULL) { printf("\n\t\t文件打開失敗"); } for(i=0;i<n;i++) { if(fwrite(&txl[i],sizeof(structtongxunlu),1,fp)!=1) { printf("\n\t\t寫入文件錯(cuò)誤!\n"); } } fclose(fp);/*關(guān)閉文件*/ printf("\n\t");/*輸出提示信息*/ printf("\n\t\t通訊錄文件已保存"); printf("\n\t\t謝謝使用,歡迎再次使用!\n"); printf("如果對(duì)本軟件有疑問,請(qǐng)到我們官網(wǎng)()提出您的問題,我們將為您解答.\n"); printf("我們的軟件有不足之處,歡迎到官網(wǎng)()反映,我們將努力改正!"); printf("\n\t\t按任意鍵退出程序\n\t\t");/*輸出完畢*/ exit(0); printf("\n\t");}較難語句分析:fp=fopen("c:\\通訊錄.txt","w"))以只寫的方式打開c:\\txl.txt文件賦予fp;if(fwrite(&txl[i],sizeof(structtongxunlu),1,fp)!=1)從fp指向的文件中向txl[n]中寫入一個(gè)(structtongxunlu)類型的值并輸出后面的內(nèi)容。若沒有成功執(zhí)行就不輸出后面的內(nèi)容。fclose(fp);關(guān)閉文件writefile()聯(lián)系人寫入文件函數(shù)的功能分析:將c:\\通訊錄.txt文件以只讀方式打開付給fp,如果為空則輸出“文件打開失敗”;若果成功則執(zhí)行if(fwrite(&txl[i],sizeof(structtongxunlu),1,fp)!=1),如果寫入(structtongxunlu)成功則關(guān)閉文件,若果不成功則輸出“寫入文件錯(cuò)誤!”。3.6zengjia()增加聯(lián)系人函數(shù)其源程序如下:voidzengjia(){ printf("\n\t\t請(qǐng)輸入聯(lián)系人信息\n"); printf("\n\t\t輸入聯(lián)系人姓名:"); scanf("%s",txl[n].xingming);/*鍵盤輸入*/ printf("\n\t\t輸入聯(lián)系人電話號(hào)碼:"); scanf("%s",txl[n].dianhua); printf("\n\t\t輸入聯(lián)系人地址:"); scanf("%s",txl[n].dizhi); n++;/*統(tǒng)計(jì)個(gè)數(shù)*/ printf("\n\t\t是否繼續(xù)添加聯(lián)系人?(Y/N):");/*是否繼續(xù)輸入聯(lián)系人.*/ if(getch()=='y') zengjia(); return;}功能分析:調(diào)用zengjia()函數(shù)后,就可以通過txl[n].xingming,txl[n].dianhua,txl[n].dizhi數(shù)組從鍵盤上輸入聯(lián)系人的姓名,電話,地址,輸入完畢后,系統(tǒng)會(huì)提示是否繼續(xù)輸入,輸入“y”后,則再次調(diào)用zengjia();函數(shù),如此循環(huán),直到不輸入聯(lián)系人為止。3.7shanchu()刪除函數(shù)主界面原函數(shù)代碼:voidshanchu(){ charc; if(n==0)/*如果通訊錄中沒有一個(gè)記錄輸出以下部分*/ { printf("\n\t\t對(duì)不起,文件中無任何紀(jì)錄"); printf("\n\t\t按任意鍵返回主菜單"); getch(); return; } system("cls");/*清屏*/ printf("\n\t\t刪除菜單"); printf("\n\t\t|1-刪除所有2-刪除單個(gè)|"); printf("\n\t\t|3-返回主菜單|"); printf("\n\t\t|"); printf("\n\t\t請(qǐng)選擇您所所要的服務(wù):"); c=getch();/*輸入的賦予choice*/ switch(c) { case'1':shanchu_quanbu();break; case'2':shanchu_dange();break; case'3':zhucaidan();break; default:zhucaidan();break; }}函數(shù)功能分析:通過界面上的數(shù)字選項(xiàng),調(diào)用shanchu_quanbu()、shanchu_dange();和zhucaidan()函數(shù)來實(shí)現(xiàn)不同的刪除功能。3.8xianshi()顯示和查詢函數(shù)函數(shù)源程序:voidchazhao(){ charc; system("cls"); printf("\n\t\t顯示和查詢聯(lián)系人"); printf("\n\t\t|1-逐個(gè)顯示所有2-按姓名查詢|"); printf("\n\t\t|3-按電話查詢4-返回主菜單|"); printf("\n\t\t|"); printf("\n\t\t請(qǐng)選擇您所所要的服務(wù):"); c=getch(); switch(c) { case'1':xianshi();break;/*顯示所有號(hào)碼*/ case'2':chazhao_xingming();break;/*調(diào)用按姓名查詢函數(shù)*/ case'3':chazhao_dianhua();break;/*調(diào)用按號(hào)碼查詢函數(shù)*/ case'4':zhucaidan();break;/*主菜單*/ }}函數(shù)功能分析:首先通過getch();從鍵盤上輸入選項(xiàng),通過switchcase()來調(diào)用xianshi()、chazhao_xingming()chazhao_dianhua()三個(gè)函數(shù)實(shí)現(xiàn)不同的功能。3.9xianshi()顯示所有人函數(shù)函數(shù)源程序:voidxianshi()//顯示所有聯(lián)系人函數(shù){ inti; system("cls");//清楚屏幕 if(n!=0) { printf("\n\t\t歡迎您查詢通訊錄所有聯(lián)系人信息"); for(i=0;i<n;i++)/*依次序顯示*/ { printf("\n\t\t姓名:%s",txl[i].xingming); printf("\n\t\t電話:%s",txl[i].dianhua); printf("\n\t\t地址:%s",txl[i].dizhi); printf("\n\t\t"); if(i+1<n) { printf("\n\t\t"); system("pause");//返回錯(cuò)誤信息 } } printf("\n\t\t"); } else/*無聯(lián)系人*/ printf("\n\t\t通訊錄中無任何紀(jì)錄"); printf("\n\t\t按任意鍵返回主菜單:"); getch(); return;}功能分析:通過for(i=0;i<n;i++)循環(huán)實(shí)現(xiàn)依次序顯示聯(lián)系人。3.10chazhao_xingming()姓名查詢函數(shù)函數(shù)源程序:voidchazhao_xingming()//按姓名查詢{ intmark=0; inti; charname[20];printf("\n\t\t按姓名查找"); printf("\n\t\t請(qǐng)輸入您要查找的姓名:"); scanf("%s",name); for(i=0;i<n;i++) { if(strcmp(txl[i].xingming,name)==0) { printf("\n\t\t以下是您查找的聯(lián)系人信息"); printf("\n\t\t姓名:%s",txl[i].xingming); printf("\n\t\t電話:%s",txl[i].dianhua); printf("\n\t\t地址:%s",txl[i].dizhi); printf("\n\t\t"); mark++; getch(); return; } } if(mark==0) { printf("\n\t\t沒有找到聯(lián)系人的信息"); printf("\n\t\t按任意鍵返回主菜單"); getch(); return; }}功能分析:通過scanf("%s",name)從鍵盤上輸入的姓名利用 if(strcmp(txl[i].xingming,name)==0)進(jìn)行對(duì)比,確認(rèn)是否有該聯(lián)系人。3.11chazhao_dianhua()按號(hào)碼查詢函數(shù)函數(shù)源程序:voidchazhao_dianhua(){ intmark=0; inti; charphone[15]; printf("\n\t\t按電話查找"); printf("\n\t\t請(qǐng)輸入電話號(hào)碼:"); scanf("%s",phone); for(i=0;i<n;i++) { if(strcmp(txl[i].dianhua,phone)==0)//對(duì)比查找函數(shù) { printf("\n\t\t以下是您查找的學(xué)生信息"); printf("\n\t\t姓名:%s",txl[i].xingming); printf("\n\t\t電話:%s",txl[i].dianhua); printf("\n\t\t地址:%s",txl[i].dizhi); printf("\n\t\t"); printf("\n\t\t按任意鍵返回主菜單:"); mark++; getch(); return; } } if(mark==0) { printf("\n\t\t沒有找到聯(lián)系人的信息"); printf("\n\t\t按任意鍵返回主菜單"); getch(); return; }}功能分析:通過scanf("%s",name)從鍵盤上輸入的電話號(hào)碼利用if(strcmp(txl[i].dianhua,phone)==0)進(jìn)行對(duì)比查找,確認(rèn)是否有該聯(lián)系人。3.12shanchu_dange()刪除單個(gè)聯(lián)系人函數(shù)函數(shù)源程序:voidshanchu_dange()//刪除單個(gè)聯(lián)系人{(lán) charc; printf("\n\t"); printf("\n\t\t1-按姓名刪除2-按電話刪除"); printf("\n\t\t請(qǐng)選擇您所所要的服務(wù):"); printf("\n\t"); c=getch(); switch(c) { case'1':shanchu_xingming();break; case'2':shanchu_dianhua();break; }}函數(shù)功能分析:這個(gè)函數(shù)調(diào)用shanchu_xingming()函數(shù)和shanchu_dianhua()函數(shù)來通過從鍵盤上輸入的姓名或者電話號(hào)碼來實(shí)現(xiàn)刪除功能。3.13shanchu_quanbu()刪除所有聯(lián)系人函數(shù)函數(shù)源程序如下:voidshanchu_quanbu()//刪除所有聯(lián)系人{(lán) printf("\n\t\t確認(rèn)刪除?(y/n)"); if(getch()=='y') { fclose(fp); if((fp=fopen("通訊錄.txt","w"))==NULL)/*文件空輸出*/ { printf("\n\t\t不能打開文件,刪除失敗"); readfile(); } n=0; printf("\n\t\t紀(jì)錄已刪除,按任意鍵返回主菜單"); getch(); return; } else return;}deleteall()刪除所有函數(shù)功能分析:首先在刪除前系統(tǒng)會(huì)提示是否刪除,如果確認(rèn)刪除,則系統(tǒng)將檢查文件輸出是否為空,如果為空,則顯示“不能打開文件,刪除失敗”,并且馬上調(diào)用函數(shù)readfile();重新讀入文件;如果文件存在,則顯示“紀(jì)錄已刪除,按任意鍵返回主菜單”。3.14shanchu_xingming()按姓名刪除聯(lián)系人函數(shù)函數(shù)源程序?yàn)椋簐oidshanchu_xingming()//按姓名刪除聯(lián)系人{(lán) inti,m,mark=0,a=0; charname[20]; printf("\n\t\t請(qǐng)輸入要?jiǎng)h除聯(lián)系人姓名:"); scanf("%s",name);/*鍵盤輸入姓名*/ for(i=a;i<n;i++) { if(strcmp(txl[i].xingming,name)==0)//對(duì)比字符串查找到要?jiǎng)h除的聯(lián)系人 { printf("\n\t\t以下是您要?jiǎng)h除的聯(lián)系人紀(jì)錄:"); printf("\n\t\t"); printf("\n\t\t姓名:%s",txl[i].xingming); printf("\n\t\t電話:%s",txl[i].dianhua); printf("\n\t\t地址:%s",txl[i].dizhi); printf("\n\t\t"); printf("\n\t\t是否刪除?(y/n)"); if(getch()=='y')//實(shí)現(xiàn)刪除功能 { for(m=i;m<n-1;m++) txl[m]=txl[m+1];/*將通訊錄的想前移*/ n--; mark++; printf("\n\t\t刪除成功"); printf("\n\t\t是否繼續(xù)刪除?(y/n)"); if(getch()=='y') shanchu_xingming();/*繼續(xù)調(diào)用刪除函數(shù)*/ return; } else return; } continue; } if(mark==0) { printf("\n\t\t沒有該聯(lián)系人的紀(jì)錄"); printf("\n\t\t是否繼續(xù)刪除?(y/n)"); if(getch()=='y') shanchu_xingming(); return; }}較難語句分析:if(strcmp(txl[i].xingming,name)==0)對(duì)比輸入的名字與文件中存在的名字是否一致。②txl[j]=txl[j+1];將通訊錄信息向前移功能分析:shanchu_xingming()函數(shù)功能分析:首先通過scanf("%s",name);從鍵盤上輸入姓名,通過if(strcmp(txl[i].xingming,name)==0)對(duì)比輸入的名字與文件中存在的名字是否一致,如果一致,則顯示出聯(lián)系人信息,并給出是否修改,輸入y后,則通過txl[j]=txl[j+1];將通訊錄后面的數(shù)據(jù)向前移一個(gè)單位。3.15shanchu_dianhua()按電話號(hào)碼刪除函數(shù)函數(shù)源程序:voidshanchu_dianhua()//按電話號(hào)碼刪除聯(lián)系人{(lán) inti,m,mark=0;/*變量定義*/ charphone[20]; printf("\n\t\t請(qǐng)輸入要?jiǎng)h除聯(lián)系人電話號(hào)碼:"); scanf("%s",phone); if(n==0) { printf("\n\t\t對(duì)不起,文件中無任何紀(jì)錄"); printf("\n\t\t按任意鍵返回主菜單"); getch(); return; } for(i=0;i<n;i++) { if(strcmp(txl[i].dianhua,phone)==0) { printf("\n\t\t以下是您要?jiǎng)h除的聯(lián)系人紀(jì)錄:"); printf("\n\t\t姓名:%s",txl[i].xingming); printf("\n\t\t電話:%s",txl[i].dianhua); printf("\n\t\t地址:%s",txl[i].dizhi); printf("\n\t\t是否刪除?(y/n)"); if(getch()=='y') { for(m=i;m<n-1;m++)//遞推替換實(shí)現(xiàn)刪除 txl[m]=txl[m+1]; n--; mark++;//記錄刪除次數(shù) printf("\n\t\t刪除成功"); printf("\n\t\t是否繼續(xù)刪除?(y/n)"); if(getch()=='y') shanchu_dianhua(); return; } else return; } continue; } if(mark==0) { printf("\n\t\t沒有該聯(lián)系人的紀(jì)錄"); printf("\n\t\t是否繼續(xù)刪除?(y/n)"); if(getch()=='y') return; }}函數(shù)功能分析:首先通過scanf("%s",phone);從鍵盤上輸入電話號(hào)碼,通過if(strcmp(txl[i].dianhua,phone)==0)對(duì)比輸入的名字與文件中存在的號(hào)碼是否一致,如果一致,則顯示出聯(lián)系人信息,并給出是否修改,輸入y后,則通過txl[j]=txl[j+1];將通訊錄后面的數(shù)據(jù)向前移一個(gè)單位。3.16xiugai()修改函數(shù)主體界面函數(shù)的源代碼:voidxiugai()/*修改函數(shù)*/{charc;if(n==0){ printf("\n\t\t對(duì)不起,文件中無任何紀(jì)錄"); printf("\n\t\t按任意鍵返回主菜單"); getch(); return; }system("cls"); printf("\n\t\t修改聯(lián)系人菜單"); printf("\n\t\t|1-按姓名修改2-按電話修改|"); printf("\n\t\t|任意鍵-按返回主菜單|"); printf("\n\t\t"); c=getch(); switch(c) { case'1':xiugai_xingming();break; case'2':xiugai_dianhua();break; default:zhucaidan();break; }}功能分析:通過c=getch()將鍵盤上輸入的數(shù)字賦予c,通過swtichcase來實(shí)現(xiàn)對(duì)xiugai_xingming()和xiugai_dianhua()函數(shù)的調(diào)用。3.17xiugai_xingming()按姓名修改函數(shù)源代碼:voidxiugai_xingming(){ charc; inti,mark=0; charname[20]; printf("\n\t\t請(qǐng)輸入要修改的聯(lián)系人姓名:"); scanf("%s",name); if(n==0) { printf("\n\t\t文件中無任何聯(lián)系人"); printf("\n\t\t按任意鍵返回主菜單"); getch();mark++; return; } for(i=0;i<n;i++) { if(strcmp(txl[i].xingming,name)==0) { printf("\n\t\t以下是您要修改的聯(lián)系人信息"); printf("\n\t\t姓名:%s",txl[i].xingming); printf("\n\t\t電話:%s",txl[i].dianhua); printf("\n\t\t地址:%s",txl[i].dizhi); printf("\n\t\t是否修改(y/n)"); if(getch()=='y') { printf("\n\t請(qǐng)選擇修改信息"); printf("\n\t1-修改姓名2-修改電話"); printf("\n\t3-修改地址"); printf("\n\t"); printf("\n\t請(qǐng)選擇您所所要的服務(wù):"); scanf("%s",&c); switch(c) { case'1':printf("\n\t請(qǐng)輸入新姓名:"); scanf("%s",txl[i].xingming);break; case'2':printf("\n\t請(qǐng)輸入新電話:%s"); scanf("%s",txl[i].dianhua);break; case'3':printf("\n\t請(qǐng)輸入新地址:"); scanf("%s",txl[i].dizhi);break; } } } } if(mark==0) { printf("\n\t\t沒有找到聯(lián)系人信息"); printf("\n\t是否繼續(xù)修改?(Y/N):"); if(getch()=='y') xiugai_xingming(); return; }}功能分析:通過if(strcmp(txl[i].xingming,name)==0)來比較是否有該聯(lián)系人,如果有,則系統(tǒng)彈出修改項(xiàng)目,通過 scanf("%s",&c);錄入的數(shù)據(jù)來實(shí)現(xiàn)對(duì)姓名、電話、地址的修改。3.18xiugai_dianhua()按號(hào)碼修改聯(lián)系人函數(shù)函數(shù)源代碼:voidxiugai_dianhua(){ charc,phone[15]; inti,mark=0; printf("\n\t\t請(qǐng)輸入要修改聯(lián)系人的號(hào)碼:"); scanf("%s",phone); if(n==0) { printf("\n\t\t文件中無任何聯(lián)系人"); printf("\n\t\t按任意鍵返回主菜單"); getch();mark++; return; } for(i=0;i<n;i++) { if(strcmp(txl[i].dianhua,phone)==0) { printf("\n\t\t以下是您要修改的聯(lián)系人信息"); printf("\n\t\t姓名:%s",txl[i].xingming); printf("\n\t\t電話:%s",txl[i].dianhua); printf("\n\t\t地址:%s",txl[i].dizhi); printf("\n\t\t是否修改(y/n)"); if(getch()=='y') { printf("\n\t請(qǐng)選擇修改信息"); printf("\n\t1-修改姓名2-修改電話"); printf("\n\t3-修改地址"); printf("\n\t"); printf("\n\t請(qǐng)選擇您所所要的服務(wù):"); scanf("%s",&c); switch(c) { case'1':printf("\n\t請(qǐng)輸入新姓名:"); scanf("%s",txl[i].xingming);break; case'2':printf("\n\t請(qǐng)輸入新電話:"); scanf("%s",txl[i].dianhua);break; case'3':printf("\n\t請(qǐng)輸入新地址:"); sca
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 淀粉在化妝品的滑石粉替代應(yīng)用考核試卷
- 稀有金屬在量子計(jì)算領(lǐng)域的應(yīng)用考核試卷
- 歐陽修的春秋筆法宋代士大夫如何改寫唐史
- 2025年租房經(jīng)營民宿的合同范本
- 2025年度品牌推廣服務(wù)合同
- 2025授權(quán)代建合同示范文本
- 2025房產(chǎn)交易居間合同范本
- 《2025年終止服務(wù)合同范本》
- 隧道工程-橋梁及結(jié)構(gòu)工程施工圖設(shè)計(jì)說明
- 蘇教版九年級(jí)下冊(cè)數(shù)學(xué)(全冊(cè)知識(shí)點(diǎn)考點(diǎn)梳理、重點(diǎn)題型分類鞏固練習(xí))(提高版)(家教、補(bǔ)習(xí)、復(fù)習(xí)用)
- 中藥飲片出庫單
- 國開2023春《語言學(xué)概論》形考任務(wù)1-3+大作業(yè)參考答案
- 宿舍樓施工方案方案
- 甲醇-水精餾塔
- 中國話劇史專題知識(shí)
- GB/T 15544.1-2023三相交流系統(tǒng)短路電流計(jì)算第1部分:電流計(jì)算
- GB/T 90.3-2010緊固件質(zhì)量保證體系
- GB/T 18799-2020家用和類似用途電熨斗性能測試方法
- 科技公司涉密計(jì)算機(jī)軟件安裝審批表
- GA/T 1369-2016人員密集場所消防安全評(píng)估導(dǎo)則
- GA 1517-2018金銀珠寶營業(yè)場所安全防范要求
評(píng)論
0/150
提交評(píng)論