通訊錄系統(tǒng)設(shè)計(jì)_第1頁
通訊錄系統(tǒng)設(shè)計(jì)_第2頁
通訊錄系統(tǒng)設(shè)計(jì)_第3頁
通訊錄系統(tǒng)設(shè)計(jì)_第4頁
通訊錄系統(tǒng)設(shè)計(jì)_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

/九江學(xué)院信息科學(xué)和技術(shù)學(xué)院《數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)》報(bào)告書題目:通訊錄管理系統(tǒng)專業(yè):信息管理和信息系統(tǒng)班級(jí):A1021姓名:溫曉慧學(xué)號(hào):03同組人員:無指導(dǎo)老師:胡慧設(shè)計(jì)時(shí)間:2012年03月19日~2012年03月23日目錄《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計(jì)報(bào)告書 11.課程設(shè)計(jì)(實(shí)訓(xùn))支配 32.系統(tǒng)需求分析和功能設(shè)計(jì) 33.總體設(shè)計(jì) 44.程序模塊設(shè)計(jì) 65.技術(shù)難點(diǎn)和分析 76.系統(tǒng)測試 87.心得體會(huì) 98.參考文獻(xiàn) 10課程設(shè)計(jì)(實(shí)訓(xùn))支配1.通訊錄管理系統(tǒng),一個(gè)聯(lián)系人其中應(yīng)當(dāng)包含以下信息:姓名,性別,年齡,電話,email,qq.考慮到通訊錄管理系統(tǒng)中經(jīng)常實(shí)施的操作插入,查找工作,所以我選擇用鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu),創(chuàng)建一個(gè)單鏈表來實(shí)現(xiàn)系統(tǒng)所須要的功能。typedefstruct{ charname[20]; charsex[3]; intage; charphone[15]; charemail[30]; charqq[15];}Pinformation;typedefstructplist{ PinformationPeson_Inf; structplist*next;}LinkNode;定義后進(jìn)行初始化,并輸入數(shù)據(jù)2.LinkNode*Inputln();此子函數(shù)實(shí)現(xiàn)單個(gè)聯(lián)系人信息的輸入3.LinkNode*CreateLinklist(void);在這個(gè)子函數(shù)中調(diào)用LinkNode*Inputln()函數(shù),進(jìn)行創(chuàng)建鏈表并輸入信息4.接下來進(jìn)行一系列操作voidInsert(LinkNode*L)函數(shù)實(shí)現(xiàn)添加聯(lián)系人5.在進(jìn)行查找的時(shí)候,考慮到聯(lián)系人關(guān)系中號(hào)碼是主碼,所以我選定按電話號(hào)碼查找另一方面,一般大家在運(yùn)用通訊錄時(shí)查找時(shí),都用姓名查找,所以此程序中葉設(shè)置了依據(jù)名字查找函數(shù)voidSearchname(LinkNode*L,chararray[N])實(shí)現(xiàn)按名字查詢聯(lián)系人函數(shù)voidSearchphone(LinkNode*L,chararray[N])實(shí)現(xiàn)按電話號(hào)碼查詢聯(lián)系人6.在考慮進(jìn)行刪除設(shè)計(jì)時(shí),我也選定了兩種刪除方式供操作者選擇voidDelectname(LinkNode*L,chararray[N])該子函數(shù)實(shí)現(xiàn)的功能是依據(jù)姓名刪除voidDelectphone(LinkNode*L,chararray[N])實(shí)現(xiàn)的功能是依據(jù)號(hào)碼刪除7.顯示輸出voidDisplay(LinkNode*L)我單獨(dú)把它做成一個(gè)模塊,這樣可以便利程序結(jié)構(gòu)須要,當(dāng)進(jìn)行一系列操作時(shí)候可以干脆調(diào)用此函數(shù)進(jìn)行顯示輸出8.最終我在程序設(shè)計(jì)中引入了文件。在運(yùn)行程序輸入數(shù)據(jù)后,在指定的路徑下系統(tǒng)自動(dòng)生成文件并存儲(chǔ)之前輸入的數(shù)據(jù),下次干脆從文件中導(dǎo)入信息進(jìn)行操作voidSaveInf(LinkNode*L)該子函數(shù)實(shí)現(xiàn)保存數(shù)據(jù)到文件夾中并退出LinkNode*CreateLinklist2();此子函數(shù)實(shí)現(xiàn)在創(chuàng)建鏈表同時(shí)讀取之前文件中的信息進(jìn)行操作。系統(tǒng)需求分析和功能設(shè)計(jì)(依據(jù)課題的要求進(jìn)行簡潔的需求分析,設(shè)計(jì)相應(yīng)的數(shù)據(jù)流圖,得出相應(yīng)的系統(tǒng)功能須要,系統(tǒng)數(shù)據(jù)流圖)通訊錄管理系統(tǒng)需求分析:此系統(tǒng)是一個(gè)通訊錄管理系統(tǒng),在此系統(tǒng)中,通訊錄應(yīng)當(dāng)須要實(shí)現(xiàn)插入信息、刪除信息、查找信息、當(dāng)在菜單欄下執(zhí)行完這些操作后最重要的是要利用文件對(duì)信息進(jìn)行保存,以便下次可以接著進(jìn)行操作通訊錄聯(lián)系人信息應(yīng)當(dāng)包含姓名、性別、年齡、電話號(hào)碼、email、qq等。通訊錄管理建立文件存儲(chǔ)信息刪除某個(gè)聯(lián)系人信息添加新的聯(lián)系人更新通訊錄查看文件信息查看與顯示保存信息到通訊錄聯(lián)系人信息錄入建立通訊錄 建立文件存儲(chǔ)信息刪除某個(gè)聯(lián)系人信息添加新的聯(lián)系人更新通訊錄查看文件信息查看與顯示保存信息到通訊錄聯(lián)系人信息錄入建立通訊錄3.總體設(shè)計(jì)(依據(jù)功能需求,設(shè)計(jì)系統(tǒng)的總體結(jié)構(gòu)。系統(tǒng)總體功能模塊圖,菜單的設(shè)計(jì))答:設(shè)定三個(gè)文件main.cpp、head.cpp、head.hMain.cpp只放主函數(shù),head.cpp中放各個(gè)子函數(shù)模塊、head.h中只放結(jié)構(gòu)體定義和函數(shù)聲明菜單設(shè)計(jì),我接受swicth語句進(jìn)行選擇操作,用戶輸入指令,分別設(shè)置0中6.選擇相應(yīng)的操作在查詢和刪除這兩個(gè)操作中又嵌套switch語句提示用戶按姓名或者號(hào)碼進(jìn)行相應(yīng)操作系統(tǒng)總體功能模塊圖如下:結(jié)束保存并退出操作從文件中讀取信息輸出顯示按名字按號(hào)碼刪除按號(hào)碼查按名字查查詢?cè)兲砑勇?lián)系人創(chuàng)建鏈表并手動(dòng)輸入信息接收指令顯示頁面操作結(jié)束保存并退出操作從文件中讀取信息輸出顯示按名字按號(hào)碼刪除按號(hào)碼查按名字查查詢?cè)兲砑勇?lián)系人創(chuàng)建鏈表并手動(dòng)輸入信息接收指令顯示頁面操作4.程序模塊設(shè)計(jì)(設(shè)計(jì)并編寫輸入\輸出、查詢\統(tǒng)計(jì)、數(shù)據(jù)維護(hù)等功能模塊的應(yīng)用程序,每個(gè)人設(shè)計(jì)2個(gè)以上的模塊,一個(gè)組完成一個(gè)完整的系統(tǒng),數(shù)據(jù)庫訪問,存儲(chǔ)過程調(diào)用等作重點(diǎn)闡述)答:在此程序中,本著自頂向下,逐步求精的原則,在模塊設(shè)計(jì)上,我將分別建立多個(gè)模塊,分別是:voidShowMenu(void);//顯示用戶操作界面LinkNode*Inputln();//錄入單個(gè)通訊者的信息LinkNode*CreateLinklist(void);//創(chuàng)建鏈表,在創(chuàng)建鏈表的同時(shí)此函數(shù)調(diào)用了前面的逐個(gè)聯(lián)系人信息輸入函數(shù)voidInsert(LinkNode*L);//添加聯(lián)系人voidSearchname(LinkNode*L,chararray[N]);//按名字查詢聯(lián)系人voidSearchphone(LinkNode*L,chararray[N]);//按電話號(hào)碼查詢聯(lián)系人voidDelectname(LinkNode*L,chararray[N]);//依據(jù)姓名刪除voidDelectphone(LinkNode*L,chararray[N]);//依據(jù)號(hào)碼刪除voidDisplay(LinkNode*L);//顯示輸出voidSaveInf(LinkNode*L);//保存到文件夾中LinkNode*CreateLinklist2();//創(chuàng)建鏈表同時(shí)讀取之前文件中的信息進(jìn)行操作在此程序中各個(gè)模塊之間的聯(lián)系如下圖:Inputln()Inputln()SaveInf()CreateLinklist2()Display()Delectphone()Delectname()Searchphone()Searchname()Insert()CreateLinklist()ShowMenu()Main()SaveInf()CreateLinklist2()Display()Delectphone()Delectname()Searchphone()Searchname()Insert()CreateLinklist()ShowMenu()Main()按名字查找并刪除信息的程序流程圖如下:(以此為典例)起先起先定義定義p,q指針,q指向第一個(gè)數(shù)據(jù)輸入名字輸入名字q指向數(shù)據(jù)不為空且輸入名字和q指向的結(jié)點(diǎn)中的名字相同q指向數(shù)據(jù)不為空且輸入名字和q指向的結(jié)點(diǎn)中的名字相同 不滿足前者狀況下q不為空q為空q不為空q為空P指針后移一位,q指針也后移一位P指針后移一位,q指針也后移一位把q指向的下一位賦給p的下一位,釋放q輸出無此人把q指向的下一位賦給p的下一位,釋放q輸出無此人結(jié)束輸出刪除結(jié)束輸出刪除成功結(jié)束結(jié)束5.技術(shù)難點(diǎn)和分析(主要內(nèi)容:本課題在設(shè)計(jì)過程中所遇到的技術(shù)難點(diǎn)及解決方法。)答:在此次編程中,對(duì)于建立鏈表存儲(chǔ),進(jìn)行相應(yīng)操作都比較快的實(shí)現(xiàn)了,但是,為了讓此程序有確定的好用性,在老師題目未作要求方面,我加入了文件存儲(chǔ),為了實(shí)現(xiàn)在菜單欄中輸入的數(shù)據(jù)能夠在文件中存儲(chǔ)下來,并能夠再次供運(yùn)用者運(yùn)用查看。在把菜單中輸入的數(shù)據(jù)存儲(chǔ)到文件當(dāng)中,我編寫以下子函數(shù):voidSaveInf(LinkNode*L){ FILE*fp;//定義一個(gè)文件指針 LinkNode*p;//定義一個(gè)指向鏈表的指針 fp=NULL;//文件指針指向空 p=L->next;//讓p指向下一個(gè) fp=fopen("D:\\C++\\程序\\A102103wenxiaohui\\a.txt","a");//打開文件a.txt并追加數(shù)據(jù) while(p)//當(dāng)p為空時(shí),退出循環(huán) { fprintf(fp,"%s%s%d%s%s%s\n",p->Peson_I,p->Peson_Inf.sex,p->Peson_Inf.age,p->Peson_Inf.phone,p->Peson_Inf.email,p->Peson_Inf.qq);/把鏈表結(jié)點(diǎn)中的數(shù)據(jù)逐個(gè)讀入fp指向的文件中 p=p->next; } fclose(fp);//關(guān)閉文件以上功能實(shí)現(xiàn)并為遇到大問題當(dāng)我想實(shí)現(xiàn),每次進(jìn)入菜單欄后能夠調(diào)用之前保存在文件中的信息時(shí),不知從何下手,我要導(dǎo)入文件中存儲(chǔ)的內(nèi)容得有鏈表來存放,但是我的程序中是先得選擇建立鏈表,而每次的建立鏈表都伴隨著輸入數(shù)據(jù),后經(jīng)老師指導(dǎo),我選擇了編寫一個(gè)新的子函數(shù)實(shí)現(xiàn)在導(dǎo)入文件數(shù)據(jù)的同時(shí)建立鏈表,每次從文件中導(dǎo)入一行數(shù)據(jù)時(shí),就申請(qǐng)一個(gè)空間來存儲(chǔ)數(shù)據(jù),這樣就達(dá)到了我功能設(shè)計(jì)的要求,這個(gè)函數(shù)如下:LinkNode*CreateLinklist2(){ LinkNode*L,*s,*p;\\定義三個(gè)鏈表指針 L=(LinkNode*)malloc(sizeof(LinkNode));\\申請(qǐng)頭結(jié)點(diǎn)空間,讓L指向它 L->next=NULL;\\把L指向的下一個(gè)置為空 p=L;\\讓指針p指向頭結(jié)點(diǎn) charvar1[20],var2[3],var4[15],var5[30],var6[15];\\定義多個(gè)變量來存放從文件中讀取的數(shù)據(jù),此變量所占字節(jié)大小應(yīng)當(dāng)和結(jié)構(gòu)體定義中的成員變量所占字節(jié)大小一樣 intvar3; FILE*fp;\\定義指向文件的指針 if((fp=fopen("D:\\C++\\程序\\A102103wenxiaohui\\a.txt","r"))==NULL)\\以讀寫方式打開文件a.txt. { printf("打開不成功!\n");\\假如不存在文件則打開不成功 exit(1);\\打開不成功,則強(qiáng)制退出 } while(!feof(fp))\\假如打開成功則用此while語句推斷文件是否到了末尾。結(jié)束 { fscanf(fp,"%s%s%d%s%s%s\n",var1,var2,&var3,var4,var5,var6);\\逐個(gè)從文件中讀取數(shù)據(jù)放到變量中 s=(LinkNode*)malloc(sizeof(LinkNode));\\申請(qǐng)一個(gè)新的空間以便存儲(chǔ)從文件中讀取的數(shù)據(jù),指針s指向該空間 strcpy(s->Peson_I,var1);\\把文件中第一個(gè)數(shù)據(jù)放到新申請(qǐng)空間中 strcpy(s->Peson_Inf.sex,var2);\\把文件中其次個(gè)數(shù)據(jù)放到新申請(qǐng)空間中 s->Peson_Inf.age=var3;\\把文件中第一個(gè)數(shù)據(jù)放到新申請(qǐng)空間中 strcpy(s->Peson_Inf.phone,var4);\\把文件中第一個(gè)數(shù)據(jù)放到新申請(qǐng)空間中 strcpy(s->Peson_Inf.email,var5);\\把文件中第一個(gè)數(shù)據(jù)放到新申請(qǐng)空間中 strcpy(s->Peson_Inf.qq,var6);\\把文件中第一個(gè)數(shù)據(jù)放到新申請(qǐng)空間中 p->next=s;\\把s指向的空間和頭結(jié)點(diǎn)建立連接 p=s; \\指針p向后移 } s->next=NULL;\\跳出循環(huán)后把s指針指向空 fclose(fp);\\關(guān)閉文件 returnL;\\返回鏈表} 6.系統(tǒng)測試(主要內(nèi)容:測試環(huán)境描述,測試系統(tǒng)結(jié)構(gòu),系統(tǒng)功能測試,測試數(shù)據(jù)

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論