小型電話號碼查詢系統(tǒng)_第1頁
小型電話號碼查詢系統(tǒng)_第2頁
小型電話號碼查詢系統(tǒng)_第3頁
小型電話號碼查詢系統(tǒng)_第4頁
小型電話號碼查詢系統(tǒng)_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

小型號碼查詢系統(tǒng)王雨娉目錄TOC\o"1-3"\u摘要11緒論12系統(tǒng)分析12.1功能需求12.2性能需求23總體設(shè)計23.1功能模塊設(shè)計23.2系統(tǒng)設(shè)計方案34詳細(xì)設(shè)計44.1系統(tǒng)信息添加和結(jié)果顯示模塊44.2系統(tǒng)信息保存和清空操作模塊64.3系統(tǒng)信息查詢模塊75調(diào)試與測試95.1調(diào)試95.2測試106結(jié)論10結(jié)束語10參考文獻(xiàn)10附錄1-用戶手冊11附錄2-源程序15摘要當(dāng)前社會已經(jīng)步入了一個信息化的時代,隨著社會勞動生產(chǎn)率的不斷提高,與之相對應(yīng)的信息查詢效勞系統(tǒng)也在不斷的完善。本程序運(yùn)用查找函數(shù)和結(jié)構(gòu)體的建立,構(gòu)建的哈希表采用再哈希的方法解決沖突,實(shí)現(xiàn)號碼及有相關(guān)信息的準(zhǔn)確查詢,同時編譯了對信息的保存和清空函數(shù),使該號碼的查詢系統(tǒng)操作起來更加自如。本文從分析課題的題目背景、題目意義、題目要求等出發(fā),分別從需求分析、總體設(shè)計、詳細(xì)設(shè)計、測試等各個方面詳細(xì)介紹了系統(tǒng)的設(shè)計與實(shí)現(xiàn)過程,最后對系統(tǒng)的完成情況進(jìn)行了總結(jié)。關(guān)鍵詞:哈希表;再哈希法;查找函數(shù)1緒論高度信息化的年代里,號碼信息系統(tǒng)的出現(xiàn)正是當(dāng)前時代開展的需要,它的出現(xiàn)給我們的工作生活無疑帶來了很多方便。編程人員通過對號碼及其相關(guān)信息查詢功能的不斷編寫和完善,來盡量滿足人們的需要。根據(jù)課程設(shè)計任務(wù)書要求,本程序的開發(fā)主要完成以下功能和性能。(1)設(shè)置一個包括用戶姓、地址、號碼的信息的結(jié)構(gòu)體。(2)編譯voidCreate()函數(shù)來創(chuàng)立結(jié)點(diǎn),運(yùn)用intApend()函數(shù)來添加結(jié)點(diǎn)信息,通過node*Input()函數(shù)來對用戶的信息進(jìn)行存儲。(3)編譯函數(shù)voidList()、voidList2()分別根據(jù)號碼和姓名的查詢方式顯示用戶信息的哈希結(jié)果,并且結(jié)果會在屏幕上顯示出來。(4)編譯voidFind(charnum[11])、voidFind2(charname[8])函數(shù)分別根據(jù)用戶的號碼和姓名對用戶的詳細(xì)信息進(jìn)行查找,當(dāng)要查詢的結(jié)果不在系統(tǒng)存儲時,屏幕上將顯示“無此記錄〞。(5)按“7”鍵退出系統(tǒng)查詢2系統(tǒng)分析2.1功能需求本程序需要對各個組分的函數(shù)進(jìn)行調(diào)用。需要有添加、按各個要求的查詢、清空、查找、退出等功能;運(yùn)用MicrosoftVisualC++6.0軟件將程序按要求編譯出來;根據(jù)數(shù)字選項(xiàng)的提示實(shí)現(xiàn)各個功能。2.2性能需求通過游戲的編譯,需要用“1〞、“2〞、“3〞、“4〞、“5〞、“6〞、“7〞選擇操作選項(xiàng),一一實(shí)現(xiàn)各個功能。退出操作時,按“7〞鍵來結(jié)束操作。3總體設(shè)計3.1功能模塊設(shè)計根據(jù)分析整個系統(tǒng)主要劃分為3個功能模塊,在系統(tǒng)信息添加和結(jié)果顯示模塊中將用戶信息存儲在結(jié)構(gòu)體structnode中;在系統(tǒng)信息保存和清空操作模塊中,根據(jù)操作需要實(shí)現(xiàn)保存和清空操作;根據(jù)屏幕上的提示去實(shí)現(xiàn)各個功能,“7〞鍵退出。如圖1所示。圖1功能模塊圖〔1〕系統(tǒng)信息添加和結(jié)果顯示模塊該模塊用結(jié)構(gòu)體實(shí)現(xiàn)用戶信息的存儲,并將儲存的信息輸出。(2)系統(tǒng)信息保存和清空操作模塊該模塊主要是根據(jù)操作者自己的需要來實(shí)現(xiàn)保存和清空函數(shù)的功能。(3)系統(tǒng)信息查詢模塊操作者通過該模塊提示去實(shí)現(xiàn)各個功能,按“7〞鍵操作退出。3.2系統(tǒng)設(shè)計方案設(shè)計小型號碼查詢要實(shí)現(xiàn)多個功能,所以采用菜單設(shè)計的方式進(jìn)行各項(xiàng)功能的查詢,既方便又簡潔。(1)系統(tǒng)循環(huán)控制:該系統(tǒng)用for循環(huán)控制實(shí)現(xiàn)號碼、用戶名、地址的輸入和查詢輸出。(2)設(shè)計抽象數(shù)據(jù)類型定義:ADTTriplet{數(shù)據(jù)對象:D={e1,e2,e3|e1,e2,e3∈ElemSet}數(shù)據(jù)關(guān)系:R1={<e1,e2><e2,e3>}根本操作:node*Input〔〕初始條件:存儲用戶名name[8]、號碼num[11]和地址adress[20]的結(jié)點(diǎn)已經(jīng)存在。操作結(jié)果:根據(jù)用戶名、號碼、地址的三個變量將信息存儲。voidList〔〕操作結(jié)果:輸出用戶名、號碼、地址。voidFind〔〕初始條件:根據(jù)用戶名〔name〕或號碼〔num〕或地址〔adress〕查找。操作結(jié)果:輸出查找結(jié)果。}ADTTriplet(3)存儲結(jié)構(gòu):用哈希表進(jìn)行存儲。(4)算法設(shè)計:用號碼、用戶名、地址建立哈希表,存儲信息,然后根據(jù)各關(guān)鍵字查找信息。4詳細(xì)設(shè)計4.1系統(tǒng)信息添加和結(jié)果顯示模塊系統(tǒng)信息添加和結(jié)果顯示模塊主要運(yùn)用node*Input()和intApend()函數(shù)實(shí)現(xiàn)節(jié)點(diǎn)的輸入和添加,然后執(zhí)行函數(shù)voidList()和voidList2()把存儲的信息輸出。如圖2和圖3。圖2voidList()用戶信息輸出的流程圖圖3voidList2()用戶信息輸出的流程圖4.2系統(tǒng)信息保存和清空操作模塊在主函數(shù)中調(diào)用voidSave()函數(shù),保存用戶的詳細(xì)信息,調(diào)用函數(shù)voidCreate()和voidCreate2()即可清空用戶信息。如圖4。圖4voidSave()系統(tǒng)信息保存的流程圖4.3系統(tǒng)信息查詢模塊信息查找分兩種情況,voidFind(charnum[11])函數(shù)是根據(jù)號碼查找用戶的其它信息,將從鍵盤輸入的號碼傳入此函數(shù),當(dāng)系統(tǒng)存有和要查找的用戶號碼一致時,系統(tǒng)將該用戶的名字和地址輸出,否那么,輸出“無此記錄〞的警告。同理,voidFind2(charname[8])函數(shù)根據(jù)用戶姓名來查找地址和號碼,兩個函數(shù)用了相同的求法。如圖5和圖6.圖5voidFind2(charname[8])按姓名查找的流程圖圖6voidFind(charnum[11])按號碼查找的流程圖5調(diào)試與測試5.1調(diào)試(1)軟件不能識別與有些有關(guān)的函數(shù)產(chǎn)生原因:缺少相關(guān)的文件頭文件。解決方法:iotream,string.h,fstream,三個頭文件缺一不可。(2)信息查找有誤產(chǎn)生原因:沒有處理好沖突問題。解決方法:修改處理沖突的函數(shù)語句,使函數(shù)正常運(yùn)行,此程序用到的處理沖突的方法有再哈希法,問題即得到解決。5.2測試此小型號碼查詢的功能都能一一實(shí)現(xiàn)了,和其相關(guān)的程序也正常運(yùn)行,成功實(shí)現(xiàn)用號碼或姓名這兩種查找方法,函數(shù)哈希的沖突也得到正確解決,對錯誤或要保存的信息可以進(jìn)行清空或保存,操作者根據(jù)提示,選擇不同的選項(xiàng),按照自己的意愿去實(shí)現(xiàn)函數(shù)的不同功能。退出時,按“7〞鍵結(jié)束。6結(jié)論數(shù)據(jù)結(jié)構(gòu)綜合訓(xùn)練順利完成,題目所要求的功能也都一一實(shí)現(xiàn)了,小型號碼查詢的功能也如愿實(shí)現(xiàn)。但是,該程序還不夠完美,假設(shè)設(shè)計相關(guān)程序,將用戶全部信息保存在新建的文件夾里,那么,就能更好的降低運(yùn)行過程中人為的造成數(shù)據(jù)喪失的可能。此程序的編譯也就更趨于完美了。結(jié)束語總算完成了這次數(shù)據(jù)結(jié)構(gòu)綜合訓(xùn)練,這次訓(xùn)練讓我深刻體會到平時的知識積累有多重要,雖然它所涉及的哈希函數(shù)是我們的課本知識,但是,僅僅局限于書本的內(nèi)容根本就缺乏以成功完成這次課程設(shè)計,在數(shù)據(jù)結(jié)構(gòu)的課外輔導(dǎo)書里我找到了很多有用的知識點(diǎn),值得借鑒的知識點(diǎn)。這次課設(shè)對我來講最大的收獲是:學(xué)好一門語言,需要不斷的去琢磨,去突破,把眼光立足于課本之外,找尋更多更有價值的知識。^_^!參考文獻(xiàn)[1]譚浩強(qiáng).C語言程序設(shè)計(第三版).清華大學(xué)出版社[2]姜靈芝,余健.C語言程序設(shè)計教程.中國電力出版社,2006[3]嚴(yán)蔚敏,吳偉民.數(shù)據(jù)結(jié)構(gòu)〔C語言版〕.清華大學(xué)出版社附錄1-用戶手冊登錄即顯示如圖5所示界面。圖5主界面在此界面通過選擇“1〞、“2〞、“3〞、“4〞、“5〞、“6〞、“7〞鍵,根據(jù)以上選項(xiàng)選擇需要操作的鍵,按“Enter〞鍵確定,函數(shù)自動開始運(yùn)行,函數(shù)運(yùn)行結(jié)束,按退出時按“Q〞鍵退出操作。選擇“1”鍵,根據(jù)要求添加用戶的姓名,地址,號碼,如圖6圖6主界面選擇“2〞鍵按姓名哈希的結(jié)果如圖7所示圖7主界面選擇“3〞鍵,然后根據(jù)提示分別選擇“8〞鍵和“9〞,結(jié)果如圖8所示。圖8主界面選擇“4〞鍵,結(jié)果如圖9所示。圖9主界面選擇“5〞鍵和“7〞鍵后的結(jié)果如圖10所示。圖10主界面附錄2-源程序#include<iostream>#include<string.h>#include<fstream>#defineNULL0unsignedintkey;unsignedintkey2;int*p;structnode//建節(jié)點(diǎn){charname[8],address[20];charnum[11];node*next;};typedefnode*pnode;typedefnode*mingzi;node**phone;node**nam;node*a;usingnamespacestd;//使用名稱空間voidHash(charnum[11])//哈希函數(shù){inti=3;key=(int)num[2];while(num[i]!=NULL){key+=(int)num[i];i++;}key=key%20;}voidHash2(charname[8])//哈希函數(shù){inti=1;key2=(int)name[0];while(name[i]!=NULL){key2+=(int)name[i];i++;}key2=key2%20;}node*Input()//輸入節(jié)點(diǎn){node*temp;temp=newnode;temp->next=NULL;cout<<"輸入姓名:"<<endl;cin>>temp->name;cout<<"輸入地址:"<<endl;cin>>temp->address;cout<<"輸入:"<<endl;cin>>temp->num;returntemp;}intApend()//添加節(jié)點(diǎn){node*newphone;node*newname;newphone=Input();newname=newphone;newphone->next=NULL;newname->next=NULL;Hash(newphone->num);Hash2(newname->name);newphone->next=phone[key]->next;phone[key]->next=newphone;newname->next=nam[key2]->next;nam[key2]->next=newname;return0;}voidCreate()//新建節(jié)點(diǎn){inti;phone=newpnode[20];for(i=0;i<20;i++){phone[i]=newnode;phone[i]->next=NULL;}}voidCreate2()//新建節(jié)點(diǎn){inti;nam=newmingzi[20];for(i=0;i<20;i++){nam[i]=newnode;nam[i]->next=NULL;}}voidList()//顯示列表{inti;node*p;for(i=0;i<20;i++){p=phone[i]->next;while(p){cout<<p->name<<'_'<<p->address<<'_'<<p->num<<endl;p=p->next;}}}voidList2()//顯示列表{inti;node*p;for(i=0;i<20;i++){p=nam[i]->next;while(p){cout<<p->name<<'_'<<p->address<<'_'<<p->num<<endl;p=p->next;}}}voidFind(charnum[11])//查找用戶信息{Hash(num);node*q=phone[key]->next;while(q!=NULL){if(strcmp(num,q->num)==0)break;q=q->next;}if(q)cout<<q->name<<"_"<<q->address<<"_"<<q->num<<endl;elsecout<<"無此記錄"<<endl;}voidFind2(charname[8])//查找用戶信息{Hash2(name);node*q=nam[key2]->next;while(q!=NULL){if(strcmp(name,q->name)==0)break;q=q->next;}if(q)cout<<q->name<<"_"<<q->address<<"_"<<q->num<<endl;elsecout<<"無此記錄"<<endl;}voidSave()//保存用戶信息{inti;node*p;for(i=0;i<20;i++){p=phone[i]->next;while(p){fstreamiiout("out.txt",ios::out);iiout<<p->name<<"_"<<p->address<<"_"<<p->num<<endl;p=p->next;}}}voidMenu()//菜單{cout<<"請在菜單中選擇你要執(zhí)行的選項(xiàng)!\n";cout<<"0.添加記錄"<<endl;cout<<"2.按姓名哈希"<<endl;cout<<"3.查找記錄"<<endl;cout<<"4.按號碼哈希"<<endl;cout<<"5.清空記錄"<<endl;cout<<"6.保存記錄"<<endl;cout<<"7.退出系統(tǒng)"<<endl;}intmain(){charnum[11];charname[8];Create();Create2(

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論