


版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、學(xué)校C+程序設(shè)計(jì)課程設(shè)計(jì)報(bào)告選題名稱:通信錄管理系統(tǒng)系(院):計(jì)算機(jī)與信息技術(shù)學(xué)院專業(yè):計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)班級(jí):08級(jí)計(jì)科(2)班姓 名:錢冰冰 學(xué) 號(hào):20085101125指導(dǎo)教師:李艷麗學(xué)年學(xué)期:20102011 學(xué)年 第 1 學(xué)期2011 年_L月3 日摘要:此系統(tǒng)主要管理信息有:聯(lián)系人的姓名、地址、手機(jī)、Email。本系統(tǒng)的主要功能有聯(lián)系人信息的添加、查找、刪除,修改,保存記錄到外存,從外存中讀 取記錄,能對(duì)聯(lián)系人信息按姓名或電話號(hào)碼進(jìn)行查找,并能保存信息到文件以 及從文件中讀取信息等功能。關(guān)鍵詞:查找;刪除;添加;文件保存及讀取1需求分析錯(cuò)誤!未定義書簽1.1功能需求分析:1.2
2、環(huán)境需求分析:1.3方法需求分析錯(cuò)誤!未定義書簽。112概要設(shè)計(jì)2.1系統(tǒng)功能模塊圖 12.2設(shè)計(jì)思想 23詳細(xì)設(shè)計(jì) 3.1設(shè)計(jì)原理 23.2主要代碼描述 24操作說(shuō)明 11121需求分析1.1功能需求分析簡(jiǎn)易通信錄管理系統(tǒng)主要有4大模塊:聯(lián)系人信息從文件中讀入和寫出,聯(lián) 系人信息的添加和刪除,聯(lián)系人信息的查詢和聯(lián)系人信息的顯示。1.11通信錄的讀入和寫出模塊主要功能是讀出要管理的通信錄文檔,保存修改后的通信錄文檔。實(shí)際生活 中通信錄的文件主要以 word或excel保存,為了方便操作我在調(diào)式本系統(tǒng)中成 績(jī)文件采用了 txt的文檔格式保存,當(dāng)然以 word文檔形式保存也是可以的。1.12通信錄
3、的添加和刪除模塊主要功能是輸入、添加、刪除人員信息的操作。添加操作是根據(jù)用戶的要求 實(shí)現(xiàn)的。例如用戶可以輸入要?jiǎng)h除人員的姓名刪除人員的信息。 此程序輸入人員 信息時(shí)就保存到數(shù)據(jù)結(jié)構(gòu)中相應(yīng)的變量中。1.13通信錄的查詢模塊主要功能是按照用戶的要求查詢?nèi)藛T的信息。其中用戶可以選擇查詢單獨(dú)或 特定一組聯(lián)系人的信息,還可以修改聯(lián)系人的信息。1.14通信錄的顯示模塊此項(xiàng)功能運(yùn)用使得用戶可以瀏覽所有聯(lián)系人的信息。1.2環(huán)境需求分析操作系統(tǒng):Win dows 2007開(kāi)發(fā)軟件:Visual C+ 6.01.3方法需求分析由于數(shù)組存放數(shù)據(jù)的時(shí)候要先確定數(shù)組的規(guī)模,不能動(dòng)態(tài)的分配內(nèi)存空間, 而單鏈表是非連續(xù)存放
4、的,可以對(duì)內(nèi)存空間進(jìn)行動(dòng)態(tài)分配,此系統(tǒng)是用單鏈表完 成的。然后定義鏈表的結(jié)點(diǎn)類型為結(jié)構(gòu)就可以實(shí)現(xiàn)對(duì)聯(lián)系人姓名和電話的保存。每次只要返回頭指針,就可以對(duì)整個(gè)鏈表進(jìn)行操作,因此選鏈表來(lái)存放學(xué)生 信息。2概要設(shè)計(jì)2.1系統(tǒng)功能模塊圖誦信錄管理系統(tǒng)費(fèi)記錄顯一喬記錄查詢記錄保畫錄修改記錄2.2設(shè)計(jì)思想通信錄管理系統(tǒng)是用面向?qū)ο蟮姆椒ㄔO(shè)計(jì), 由于數(shù)組的存放是連續(xù)的,而單 鏈表是非連續(xù)存放的,是動(dòng)態(tài)分配內(nèi)存空間,因此此系統(tǒng)采用單鏈表來(lái)完成。 各 個(gè)功能模塊的實(shí)現(xiàn)主要轉(zhuǎn)變到對(duì)單鏈表的遍歷,添加和刪除結(jié)點(diǎn)。3詳細(xì)設(shè)計(jì)3.1設(shè)計(jì)原理通信錄管理系統(tǒng)以菜單選擇,通過(guò)調(diào)用各個(gè)函數(shù),對(duì)單鏈表的遍歷,實(shí)現(xiàn)不 同的功能,不同
5、函數(shù)處理后返回的只是一個(gè)頭結(jié)點(diǎn), 但是通過(guò)頭結(jié)點(diǎn)可以找到所 有鏈表中的信息,只要有函數(shù),找到頭指針就能進(jìn)行相應(yīng)的操作, 所以模塊化的 程序方便以后添加或者刪除某些功能,程序中通過(guò)system( “cis ”)清屏函數(shù)實(shí)現(xiàn)界面的轉(zhuǎn)換,主函數(shù)中的循環(huán)保證程序不會(huì)退出, 一個(gè)循環(huán)和一個(gè)清屏函數(shù)實(shí) 現(xiàn)了主菜單和各子畫面的切換(子函數(shù))。這樣的話各個(gè)子函數(shù)都可以調(diào)用一開(kāi) 始輸入的數(shù)據(jù),這樣就實(shí)現(xiàn)了各個(gè)不同函數(shù)調(diào)用時(shí)都能使用整個(gè)系統(tǒng)連續(xù)起來(lái) 了。作為一個(gè)通信錄管理系統(tǒng),增加了文件的讀入和寫出功能,增加了程序的實(shí) 用性。3.2主要代碼描述3.21通信錄信息保存到文件中并讀入和C的文件操作方式不同的是,C+I
6、/O系統(tǒng)管理兩個(gè)與一個(gè)文件相聯(lián)系的 指針。一個(gè)是讀指針,它說(shuō)明輸入操作在文件中的位置;另一個(gè)是寫指針,它下次寫操作的位置。每次執(zhí)行輸入或輸出時(shí),相應(yīng)的指針自動(dòng)變化。所以,C+的 文件定位分為讀位置和寫位置的定位,對(duì)應(yīng)的成員函數(shù)是seekg()和seekp(),seekg()是設(shè)置讀位置,seekp是設(shè)置寫位置。而這次的程序用的是指針來(lái)定位, 其代碼如下:vode file_write(c onst node *pc) /保存結(jié)點(diǎn)char file name20;ofstream ofile;countvv請(qǐng)輸入文件名(包括路徑)n;cin file name;ofile.ope n(file
7、name,ios:app|ios:bi nary);if(!ofile)coutvv你輸入的文件名有誤!n;exit(0);ofile.write(pc-Name,15); ofile.write(pc-Addr,20);ofile.write(pc-Tele,14); ofile.write(pc-E-mail,20);node *file_read(c onst char *file name)node * head,*p n,*pt;char name15,addr20,tele14,e-mail20;head=0;ifstream ifile;ifile.ope n(file name
8、,ios:i n|ios:bi nary);if(!ifile)coutvv文件不存在! n;exit(0);if(ifile.eof()coutvv文件為空! n;exit(1);while(!ifile.eof()ifile.read( name,15);ifile.read(addr,20);ifile.read(tele,14);ifile.read(e-mail,20);pn=new no de;strcpy(p n-Name, name);strcpy(p n-Addr,addr);strcpy(p n-Tele,tele);strcpy(p n-E-mail,e-mail);if
9、(head=0)head=p n;pt=p n;pn-n ext=0;elsept- n ext=p n;pt=p n;pn-n ext=0;return head;node *file_delete( node *pc)char *n ame1,* name2 ,n ame15,file name30; int pos;n ame=pc-Name;fstream iofile;iofile.ope n(file name,ios:i n| ios:out|ios:bi nary); if(!iofile)coutvv文件不存在! n;exit(0);if(iofile.eof()cout文件
10、為空! n;exit(1);iofile.read( name1,15);pos=iofile.tellg();取當(dāng)前指針位置while(!iofile.eof( )&(n ame!=n ame1) iofile.seekg(54);/20+14+20 iofile.read( name1,15);/pos=iofile.tellg();if(iofile.eof()cout數(shù)據(jù)不存在! n;exit(0);elseiofile.seekg(54,ios:cur);while(!iofile.eof()iofile.read( name2,8192)int n=iofile.gco un t(
11、);iofile.seekg(pos-15);iofile.write( name2, n);3.22通信錄刪除刪除通信錄信息是這樣實(shí)現(xiàn)的:通過(guò)兩個(gè)輔助指針找到鏈表中要?jiǎng)h除的學(xué)生 信息所在的結(jié)點(diǎn),讓輔助指針的前驅(qū)輔助指針指向輔助指針的后一結(jié)點(diǎn),這樣輔助指針?biāo)疙?xiàng)就自動(dòng)從鏈表中刪除了,然后輸出該學(xué)生的信息以確認(rèn)是否是該學(xué) 生,是的話按任一鍵就可刪除,最后返回頭指針。具體代碼如下:void DelData(TelBook *head)TelBook *start,*prese nt=head;char in_n ame20;coutvv輸入要?jiǎng)h除的名字:;cinin_n ame;if(head=N
12、ULL) /鏈表為空的情況cout列表是空的。n ame,in _n ame)=0) /比較名字是否相等。cout 要?jiǎng)h除的內(nèi)容存在。e ndl;cout 要?jiǎng)h除的內(nèi)容是:n amee ndl;coutaddresse ndl;couttele ndl;coutmobe ndl;coutemail next!=NULL)head=head-n ext;elsecout 沒(méi)有你要找的名字! ; break;/在此插入確認(rèn)語(yǔ)句? 1coute ndl;start=present; /present 與 head 結(jié)點(diǎn)的對(duì)調(diào)prese nt=head;head=start;/在此插入確認(rèn)語(yǔ)句? 2i
13、f(prese nt=head) /被刪除的節(jié)點(diǎn)是頭節(jié)點(diǎn)start=head;head=head-n ext;delete start; /頭結(jié)點(diǎn)不能被直接被刪除start=NULL;cout已刪除。;return;被刪除節(jié)點(diǎn)不是for(start=head;start!=prese nt;start=start- n ext) /頭節(jié)點(diǎn)。找到被刪除節(jié)點(diǎn)的前一節(jié)點(diǎn)。if(start- n ext=prese nt)start- n ext=prese nt-n ext;delete prese nt;prese nt=NULL;cout已刪除。;return;return;coutvv請(qǐng)輸入相
14、應(yīng)的序號(hào)選擇要執(zhí)行的任務(wù)endl;3.23通信錄添加void CreateList(TelBook *&head)/這里如果參數(shù)換成TelBook *head,意義就完全不同了,head變成了復(fù)制而不 是在原有鏈上操作了TelBook *s,*p; / 初始化*s *p 兩個(gè)指針,使s指向TelBook,p指向s指 向的結(jié)點(diǎn)的上一個(gè)結(jié)點(diǎn)(p假設(shè)存在)cout(添加記錄一直到輸入人名為0時(shí)結(jié)束。) s-n ame; /輸入姓名coutAddress :;cin s-address; /輸入地址couts-tel; /輸入電話coutMobile :;cin s-mob; /輸入手機(jī)coutEma
15、il :;cins-email; / 輸入 Emailwhile(Right(s-email)cout輸入有誤,請(qǐng)重新輸入endl;cout s-email; / 最后修飾要加上email輸入有誤時(shí)的判斷,提示重新輸入 while(strcmp(s- name,OO) /插入一個(gè)新的記錄if(head=NULL) /判斷列表是否已經(jīng)存在。若不存在,則首先自動(dòng)新建一個(gè)鏈表。coutvv 列表不存在,新建一個(gè)鏈表。next=s; /else中的兩條語(yǔ)句不能顛倒,但上一行的p=s;與下一行的 p=s;等價(jià)?為發(fā)現(xiàn)調(diào)換之后有什么區(qū)別/ p=s;s=new TelBook;cout s-n ame; /
16、輸入姓名coutAddress :;cin s-address; /輸入地址cout s-tel; /輸入電話coutMobile :;cin s-mob; /輸入手機(jī)coutEmail :;cin s-email; /輸入Emailwhile(Right(s-email)cout 輸入有誤,請(qǐng)重新輸入 s-email; /最后修飾要加上email輸入有誤時(shí)的判斷,提示重新輸入p- next=NULL;delete s; /釋放名字為0的結(jié)點(diǎn)。return;coutvv請(qǐng)輸入相應(yīng)的序號(hào)選擇要執(zhí)行的任務(wù) name,00)if(head=NULL) /判斷列表是否存在,若是空表,則自動(dòng)生成一個(gè)鏈表
17、,使TelBook作為第一個(gè)結(jié)點(diǎn)coutvv列表不存在,新建一個(gè)列表next=NULL; /下一個(gè)結(jié)點(diǎn)為 NULLelse /若鏈表不為空時(shí),p-n ext=s;p=s;s=new TelBook;cout s-n ame;cout s-tel;do coutemail : s-email;while(Right(s-email);p- next=NULL;delete s; /釋放名字為0的結(jié)點(diǎn)。return;4操作說(shuō)明一個(gè)通信錄管理系統(tǒng)如果不能進(jìn)行文檔的讀出和寫入的操作,功能再多,程序關(guān)閉后,所做的操作都將沒(méi)有,這就失去了實(shí)際的意義。此系統(tǒng)當(dāng)用戶退出系 統(tǒng)時(shí),用戶可以選擇是否保存已做的修改
18、。當(dāng)用戶任意選擇一個(gè)操作時(shí),系統(tǒng)將會(huì)提示。此外在輸入號(hào)碼時(shí),輸入錯(cuò)誤的數(shù)字系統(tǒng)可以提示錯(cuò)誤,但是如果輸入 標(biāo)點(diǎn)和字母時(shí),系統(tǒng)將會(huì)出錯(cuò),因此輸入成績(jī)時(shí)不可以輸入字母和標(biāo)點(diǎn)。此外, 注意適當(dāng)?shù)氖褂面湵沓跏蓟?,防止出現(xiàn)意外錯(cuò)誤,例如,一開(kāi)始不初始化就顯示 學(xué)生信息,由于鏈表還未創(chuàng)建,會(huì)出現(xiàn)內(nèi)存不能為read的錯(cuò)誤。提示是否返回主菜單,如果不返回則自動(dòng)提示退出系統(tǒng),選擇是的話返回主菜單???結(jié)通過(guò)這次課程設(shè)計(jì),我對(duì)很多的函數(shù)有了新的認(rèn)識(shí),也學(xué)會(huì)運(yùn)用多種函數(shù), 我也明白寫軟件的基本過(guò)程和基本方法。 寫軟件的過(guò)程中我又學(xué)到曾經(jīng)自己不知 道的函數(shù)或是自己不會(huì)的函數(shù)的用法。 特別是文件的開(kāi)啟和關(guān)閉,讀與寫。這次 課程設(shè)計(jì)課總的來(lái)說(shuō)讓我受益匪淺。在軟件的設(shè)計(jì)過(guò)程中遇到拉很多的困難。在軟件一次一次的調(diào)試失敗下曾經(jīng) 想過(guò)要放棄。我最后還是讓自己堅(jiān)持下來(lái),毫不畏懼困難,在同學(xué)的幫助與講解 下我總算是順利的完成軟件的設(shè)計(jì)。雖然在調(diào)試程序遇到拉很多的困難,當(dāng)軟件調(diào)試成功時(shí)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年老年護(hù)理專業(yè)資格考試試題及答案
- CCF全國(guó)青少年信息學(xué)奧林匹克聯(lián)賽NOIP 2020真題
- 員工包吃伙食合同協(xié)議
- 商業(yè)保理轉(zhuǎn)讓合同協(xié)議
- 德佑簽定金協(xié)議后簽買賣合同
- 售車購(gòu)銷合同協(xié)議
- 母嬰店投資入股合同協(xié)議
- 2025合作協(xié)議合同模板
- 2025按摩師勞動(dòng)合同范本
- 2025廣州產(chǎn)品經(jīng)銷合同范本
- 電力營(yíng)銷業(yè)務(wù)培訓(xùn)課件
- 中醫(yī)養(yǎng)生館運(yùn)營(yíng)方案項(xiàng)目市場(chǎng)調(diào)研報(bào)告
- 2015山東省水利水電建筑工程預(yù)算定額((下冊(cè)))
- 大話務(wù)場(chǎng)景保障
- 詢價(jià)文件(模板)
- 衛(wèi)生監(jiān)督協(xié)管服務(wù)
- 氣管切開(kāi)病人的護(hù)理PPT課件-(1)1
- 餐廳水單萬(wàn)能模板-可打印
- 電工電子實(shí)訓(xùn)-DT830B
- 新概念英語(yǔ)青少版-2B全單元課件-unit-25(共32張)
- 初中八年級(jí)上冊(cè)信息技術(shù)《用Python編程》教學(xué)設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論