


版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、學校C+程序設計課程設計報告選題名稱:通信錄管理系統系(院):計算機與信息技術學院專業:計算機科學與技術專業班級:08級計科(2)班姓 名:錢冰冰 學 號:20085101125指導教師:李艷麗學年學期:20102011 學年 第 1 學期2011 年_L月3 日摘要:此系統主要管理信息有:聯系人的姓名、地址、手機、Email。本系統的主要功能有聯系人信息的添加、查找、刪除,修改,保存記錄到外存,從外存中讀 取記錄,能對聯系人信息按姓名或電話號碼進行查找,并能保存信息到文件以 及從文件中讀取信息等功能。關鍵詞:查找;刪除;添加;文件保存及讀取1需求分析錯誤!未定義書簽1.1功能需求分析:1.2
2、環境需求分析:1.3方法需求分析錯誤!未定義書簽。112概要設計2.1系統功能模塊圖 12.2設計思想 23詳細設計 3.1設計原理 23.2主要代碼描述 24操作說明 11121需求分析1.1功能需求分析簡易通信錄管理系統主要有4大模塊:聯系人信息從文件中讀入和寫出,聯 系人信息的添加和刪除,聯系人信息的查詢和聯系人信息的顯示。1.11通信錄的讀入和寫出模塊主要功能是讀出要管理的通信錄文檔,保存修改后的通信錄文檔。實際生活 中通信錄的文件主要以 word或excel保存,為了方便操作我在調式本系統中成 績文件采用了 txt的文檔格式保存,當然以 word文檔形式保存也是可以的。1.12通信錄
3、的添加和刪除模塊主要功能是輸入、添加、刪除人員信息的操作。添加操作是根據用戶的要求 實現的。例如用戶可以輸入要刪除人員的姓名刪除人員的信息。 此程序輸入人員 信息時就保存到數據結構中相應的變量中。1.13通信錄的查詢模塊主要功能是按照用戶的要求查詢人員的信息。其中用戶可以選擇查詢單獨或 特定一組聯系人的信息,還可以修改聯系人的信息。1.14通信錄的顯示模塊此項功能運用使得用戶可以瀏覽所有聯系人的信息。1.2環境需求分析操作系統:Win dows 2007開發軟件:Visual C+ 6.01.3方法需求分析由于數組存放數據的時候要先確定數組的規模,不能動態的分配內存空間, 而單鏈表是非連續存放
4、的,可以對內存空間進行動態分配,此系統是用單鏈表完 成的。然后定義鏈表的結點類型為結構就可以實現對聯系人姓名和電話的保存。每次只要返回頭指針,就可以對整個鏈表進行操作,因此選鏈表來存放學生 信息。2概要設計2.1系統功能模塊圖誦信錄管理系統費記錄顯一喬記錄查詢記錄保畫錄修改記錄2.2設計思想通信錄管理系統是用面向對象的方法設計, 由于數組的存放是連續的,而單 鏈表是非連續存放的,是動態分配內存空間,因此此系統采用單鏈表來完成。 各 個功能模塊的實現主要轉變到對單鏈表的遍歷,添加和刪除結點。3詳細設計3.1設計原理通信錄管理系統以菜單選擇,通過調用各個函數,對單鏈表的遍歷,實現不 同的功能,不同
5、函數處理后返回的只是一個頭結點, 但是通過頭結點可以找到所 有鏈表中的信息,只要有函數,找到頭指針就能進行相應的操作, 所以模塊化的 程序方便以后添加或者刪除某些功能,程序中通過system( “cis ”)清屏函數實現界面的轉換,主函數中的循環保證程序不會退出, 一個循環和一個清屏函數實 現了主菜單和各子畫面的切換(子函數)。這樣的話各個子函數都可以調用一開 始輸入的數據,這樣就實現了各個不同函數調用時都能使用整個系統連續起來 了。作為一個通信錄管理系統,增加了文件的讀入和寫出功能,增加了程序的實 用性。3.2主要代碼描述3.21通信錄信息保存到文件中并讀入和C的文件操作方式不同的是,C+I
6、/O系統管理兩個與一個文件相聯系的 指針。一個是讀指針,它說明輸入操作在文件中的位置;另一個是寫指針,它下次寫操作的位置。每次執行輸入或輸出時,相應的指針自動變化。所以,C+的 文件定位分為讀位置和寫位置的定位,對應的成員函數是seekg()和seekp(),seekg()是設置讀位置,seekp是設置寫位置。而這次的程序用的是指針來定位, 其代碼如下:vode file_write(c onst node *pc) /保存結點char file name20;ofstream ofile;countvv請輸入文件名(包括路徑)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();取當前指針位置while(!iofile.eof( )&(n ame!=n ame1) iofile.seekg(54);/20+14+20 iofile.read( name1,15);/pos=iofile.tellg();if(iofile.eof()cout數據不存在! 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通信錄刪除刪除通信錄信息是這樣實現的:通過兩個輔助指針找到鏈表中要刪除的學生 信息所在的結點,讓輔助指針的前驅輔助指針指向輔助指針的后一結點,這樣輔助指針所指項就自動從鏈表中刪除了,然后輸出該學生的信息以確認是否是該學 生,是的話按任一鍵就可刪除,最后返回頭指針。具體代碼如下:void DelData(TelBook *head)TelBook *start,*prese nt=head;char in_n ame20;coutvv輸入要刪除的名字:;cinin_n ame;if(head=N
12、ULL) /鏈表為空的情況cout列表是空的。n ame,in _n ame)=0) /比較名字是否相等。cout 要刪除的內容存在。e ndl;cout 要刪除的內容是:n amee ndl;coutaddresse ndl;couttele ndl;coutmobe ndl;coutemail next!=NULL)head=head-n ext;elsecout 沒有你要找的名字! ; break;/在此插入確認語句? 1coute ndl;start=present; /present 與 head 結點的對調prese nt=head;head=start;/在此插入確認語句? 2i
13、f(prese nt=head) /被刪除的節點是頭節點start=head;head=head-n ext;delete start; /頭結點不能被直接被刪除start=NULL;cout已刪除。;return;被刪除節點不是for(start=head;start!=prese nt;start=start- n ext) /頭節點。找到被刪除節點的前一節點。if(start- n ext=prese nt)start- n ext=prese nt-n ext;delete prese nt;prese nt=NULL;cout已刪除。;return;return;coutvv請輸入相
14、應的序號選擇要執行的任務endl;3.23通信錄添加void CreateList(TelBook *&head)/這里如果參數換成TelBook *head,意義就完全不同了,head變成了復制而不 是在原有鏈上操作了TelBook *s,*p; / 初始化*s *p 兩個指針,使s指向TelBook,p指向s指 向的結點的上一個結點(p假設存在)cout(添加記錄一直到輸入人名為0時結束。) s-n ame; /輸入姓名coutAddress :;cin s-address; /輸入地址couts-tel; /輸入電話coutMobile :;cin s-mob; /輸入手機coutEma
15、il :;cins-email; / 輸入 Emailwhile(Right(s-email)cout輸入有誤,請重新輸入endl;cout s-email; / 最后修飾要加上email輸入有誤時的判斷,提示重新輸入 while(strcmp(s- name,OO) /插入一個新的記錄if(head=NULL) /判斷列表是否已經存在。若不存在,則首先自動新建一個鏈表。coutvv 列表不存在,新建一個鏈表。next=s; /else中的兩條語句不能顛倒,但上一行的p=s;與下一行的 p=s;等價?為發現調換之后有什么區別/ p=s;s=new TelBook;cout s-n ame; /
16、輸入姓名coutAddress :;cin s-address; /輸入地址cout s-tel; /輸入電話coutMobile :;cin s-mob; /輸入手機coutEmail :;cin s-email; /輸入Emailwhile(Right(s-email)cout 輸入有誤,請重新輸入 s-email; /最后修飾要加上email輸入有誤時的判斷,提示重新輸入p- next=NULL;delete s; /釋放名字為0的結點。return;coutvv請輸入相應的序號選擇要執行的任務 name,00)if(head=NULL) /判斷列表是否存在,若是空表,則自動生成一個鏈表
17、,使TelBook作為第一個結點coutvv列表不存在,新建一個列表next=NULL; /下一個結點為 NULLelse /若鏈表不為空時,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的結點。return;4操作說明一個通信錄管理系統如果不能進行文檔的讀出和寫入的操作,功能再多,程序關閉后,所做的操作都將沒有,這就失去了實際的意義。此系統當用戶退出系 統時,用戶可以選擇是否保存已做的修改
18、。當用戶任意選擇一個操作時,系統將會提示。此外在輸入號碼時,輸入錯誤的數字系統可以提示錯誤,但是如果輸入 標點和字母時,系統將會出錯,因此輸入成績時不可以輸入字母和標點。此外, 注意適當的使用鏈表初始化,防止出現意外錯誤,例如,一開始不初始化就顯示 學生信息,由于鏈表還未創建,會出現內存不能為read的錯誤。提示是否返回主菜單,如果不返回則自動提示退出系統,選擇是的話返回主菜單。總 結通過這次課程設計,我對很多的函數有了新的認識,也學會運用多種函數, 我也明白寫軟件的基本過程和基本方法。 寫軟件的過程中我又學到曾經自己不知 道的函數或是自己不會的函數的用法。 特別是文件的開啟和關閉,讀與寫。這次 課程設計課總的來說讓我受益匪淺。在軟件的設計過程中遇到拉很多的困難。在軟件一次一次的調試失敗下曾經 想過要放棄。我最后還是讓自己堅持下來,毫不畏懼困難,在同學的幫助與講解 下我總算是順利的完成軟件的設計。雖然在調試程序遇到拉很多的困難,當軟件調試成功時
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 糖果與巧克力行業市場調研方法與數據分析技巧考核試卷
- 四川省德陽中學江縣2025屆初三5月第一次聯考化學試題試卷含解析
- 松原職業技術學院《家具設計與制作》2023-2024學年第二學期期末試卷
- 天津市職業大學《水工鋼筋混凝土結構學》2023-2024學年第二學期期末試卷
- 六枝特區2025屆數學三下期末學業水平測試模擬試題含解析
- 駕駛員安全責任協議書
- 房產產權轉讓協議二零二五年
- 二零二五融資及管理服務協議書
- 二零二五版房子抵押合同
- 種植業年度盤點
- 2023年軟件正版化工作總結八篇
- 酒店報銷水單經典模板
- 給水泵檢修方案
- 《運營管理》第2版題庫與參考答案
- KEGG代謝通路中文翻譯
- GB∕T 17832-2021 銀合金首飾 銀含量的測定 溴化鉀容量法(電位滴定法)
- 低成本自動化的開展與案例77頁PPT課件
- 梅州市部分飲用水源保護區調整方案
- 地面沉降監測技術要求
- 基本建設項目建設成本管理規定解讀
- 金色的魚鉤課本劇
評論
0/150
提交評論