數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)模擬手機(jī)號(hào)碼薄管理_第1頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)模擬手機(jī)號(hào)碼薄管理_第2頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)模擬手機(jī)號(hào)碼薄管理_第3頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)模擬手機(jī)號(hào)碼薄管理_第4頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)模擬手機(jī)號(hào)碼薄管理_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、課程設(shè)計(jì)報(bào)告( 20112012年度第2學(xué)期)實(shí)驗(yàn)名稱:數(shù)據(jù)結(jié)構(gòu)與算法 題 目:模擬手機(jī)號(hào)碼薄管理 院 系:控制與計(jì)算機(jī)工程學(xué)院班 級(jí):信安1102班 學(xué) 號(hào):1111290201 學(xué)生姓名: 阿克偉 指導(dǎo)教師: 焦?jié)櫤?設(shè)計(jì)周數(shù):1周 成 績: 日期:2012年7月5日一、課程設(shè)計(jì)的目的與要求1 目的: 應(yīng)用數(shù)據(jù)結(jié)構(gòu)和算法來設(shè)計(jì)相應(yīng)的程序,培養(yǎng)學(xué)生問題求解模塊的框架設(shè)計(jì)和詳細(xì)設(shè)計(jì)、相關(guān)程序?qū)崿F(xiàn)和調(diào)試能力,完成創(chuàng)新能力和實(shí)踐能力的訓(xùn)練。2 要求: 用高級(jí)程序設(shè)計(jì)語言c編碼,用vc+開發(fā)平臺(tái)調(diào)試3 二、設(shè)計(jì)正文(一) 課程設(shè)計(jì)題目(二) 需求分析(三) 概要設(shè)計(jì)(四) 詳細(xì)設(shè)計(jì)(五) 調(diào)試分析(

2、六) 使用說明三、課程設(shè)計(jì)總結(jié)或結(jié)論1 完成的工作2 未完成的工作3 所需做的改進(jìn)四、參考文獻(xiàn) 1 作者1, 作者2. 書名. 出版單位, 版本. 出版日期附錄(設(shè)計(jì)流程圖、程序、測試數(shù)據(jù)等) 一、課程設(shè)計(jì)題目編寫一個(gè)程序,模擬手機(jī)的電話薄管理系統(tǒng),電話薄按姓名排序,插入新用戶,用折半查找,所有信息用文件保存。二、需求分析 本程序用c語言編寫,在vc+開發(fā)平臺(tái)進(jìn)行調(diào)試;采用順序表完成對(duì)電話薄的建立、聯(lián)系人的查找、刪除、修改、插入、及導(dǎo)入聯(lián)系人等功能。 輸入的形式和輸入值的范圍:菜單中選擇功能時(shí)需輸入功能相應(yīng)的編號(hào);插入元素時(shí)需要輸入聯(lián)系人的姓名,電話號(hào)碼;刪除元素時(shí)輸入要?jiǎng)h除聯(lián)系人的姓名;查找

3、操作時(shí)需要輸入聯(lián)系人姓名,修改聯(lián)系人信息時(shí)需要輸入聯(lián)系人姓名和新的聯(lián)系人信息,導(dǎo)入聯(lián)系人信息時(shí)需要輸入要導(dǎo)入文件的文件名稱。在菜單操作中輸入都為整數(shù),在其余各項(xiàng)功能操作中輸入為字符串; 輸出的形式:在所有操作中都顯示操作是否成功也可通過顯示聯(lián)系人功能進(jìn)行檢查。其中刪除操作后顯示刪除的聯(lián)系人的信息,查找操作后顯示要找到聯(lián)系人的信息。 該程序的所達(dá)到的功能:完成順序表的建立、插入、刪除、查找,修改操作 測試數(shù)據(jù):a 在創(chuàng)建操作中依次輸入3、12345,、bbbb、34567、cccc 、23456、aaaa;創(chuàng)建一個(gè)號(hào)碼薄。b 在插入操作中輸入dddd、45678;插入號(hào)碼薄的最后。c 在刪除操作

4、中輸入cccc,將姓名為cccc的聯(lián)系人信息刪除;再次在該操作中輸入hhhh,提示該聯(lián)系人不存在。d 在修改操作中輸入aaaa、gggg、67890;將aaaa的信息更新為gggg、67890。再次在該操作中輸入hhhh,提示該聯(lián)系人不存在。e 在查詢操作中輸入輸入dddd,打印聯(lián)系人dddd的信息。再次在該操作中輸入hhhh,提示該聯(lián)系人不存在。f 在顯示操作中無需輸入,顯示所有j聯(lián)系人信息。g 在保存聯(lián)系人操作中輸入lianxiren.txt,將聯(lián)系人信息保存在文件中。h 在導(dǎo)入聯(lián)系人操作中輸入lianxiren.txt,將保存聯(lián)系人信息導(dǎo)入順序表中。再次在該操作中輸入a.txt,提示文件

5、不存在或已經(jīng)損毀。三、概要設(shè)計(jì) 1)抽象數(shù)據(jù)類型:adt sqlist數(shù)據(jù)對(duì)象:d=ai|aielemtype&0in&n0 數(shù)據(jù)關(guān)系:r=|ai,ai+1 d基本操作:initlist(&sl)操作結(jié)果:構(gòu)造一個(gè)空的順序表; creatlist(sl) 初始條件:順序表sl存在;操作結(jié)果:在順序表中輸入聯(lián)系人信息; insertlist (&sl,i,x)初始條件:順序表sl已存在;操作結(jié)果:將元素x插入到順序表sl的i位置; scort(&sl)初始條件:順序表sl存在;操作結(jié)果:將順序表sl中的聯(lián)系人按姓名排序;deletelist (&sl,i,&x)初始條件:順序表sl已存在;操作結(jié)

6、果:將順序表中i位置的元素刪除,若刪除成功返回1;updatelist(sl, i,x)初始條件:順序表sl存在,有要修改的聯(lián)系人信息;操作結(jié)果:將順序表sl中i-1位置的聯(lián)系人信息用x代替; listempty(&sl)初始條件:順序表sl存在;操作結(jié)果:判斷順序表sl是否為空,若為空返回sl.length=0; displist(sl)初始條件:順序表sl存在;操作結(jié)果:將順序表sl中的聯(lián)系人信息打印出來;binsearch( sl,a)初始條件:順序表sl存在操作結(jié)果:順序表sl中查找是否元素a,若存在,返回1并打印聯(lián)系人信息;若不存在,返回0. binsearch1( sl,a)初始條

7、件:順序表sl存在;操作結(jié)果:順序表sl中查找是否元素a,若存在,返回mid+1;若不存在,返回0; savelist(sl)初始條件:順序表sl存在;操作結(jié)果:將順序表sl中聯(lián)系人信息存入文件; open(sl,fp)初始條件:要導(dǎo)入的文件存在;操作結(jié)果:將文件中的聯(lián)系人信息導(dǎo)入順序表;menu()操作結(jié)果:在屏幕上顯示操作菜單 2)本程序包含14個(gè)函數(shù):1. 主函數(shù) main()2. 菜單函數(shù) menu()3. 初始化順序表 initlist(&sl)4. 創(chuàng)建電話薄 creatlist(sl)5. 按聯(lián)系人姓名排序 scort(&sl)6. 查找聯(lián)系人信息 binsearch( sl,a

8、)、binsearch1( sl,a)7. 插入聯(lián)系人 insertlist (&sl,i,x)8. 刪除聯(lián)系人信息 deletelist (&sl,i,&x)9. 修改聯(lián)系人信息 updatelist(sl, i,x)10. 判斷電話薄是否為空 listempty(&sl)11. 顯示聯(lián)系人信息 displist(sl)12. 保存電話薄為文件 save(sl)13. 導(dǎo)入電話薄信息 open(sl,fp)3)函數(shù)間的調(diào)用關(guān)系如下:menu() save() deletelist()bisearch1()updatelist()main()displist()scort()creatlist

9、()initlist()insertlist()open()四、詳細(xì)設(shè)計(jì)為了實(shí)現(xiàn)概要設(shè)計(jì)中定義的所有的數(shù)據(jù)類型;對(duì)主程序和其他模塊寫出偽代碼算法或者畫出流程圖; 1) 結(jié)點(diǎn)類型和指針類型typedef struct phonechar name20;char no20;phone;typedef struct phone *pho;int length;int listsize;sqlist;2) 主要算法的偽代碼或者流程圖l 折半查找int binsearch(sqlist sl,char *a)int low=1,high=sl.length-1,mid;while(low=high)mi

10、d=(low+high)/2;if(strcmp(a,)=0)printf(ttt查到的聯(lián)系人信息如下:nn);printf(ttt姓名tt號(hào)碼nn);printf(ttt*n);printf(ttt%stt%snn,,sl.phomid.no);return 1;else if(strcmp(a,)0)high=mid-1;elselow=mid+1;printf(tttt該聯(lián)系人不存在!nn);return 0;l 插入排序void scort(sqlist &sl)/插入排序int j;for(int i

11、=2;isl.length;i+)if(strcmp(,)0)sl.pho0=sl.phoi;for(j=i-1;strcmp(,)0;j-)sl.phoj+1=sl.phoj;sl.phoj+1=sl.pho0;l 導(dǎo)入文件void open(sqlist &sl,file *fp)int i=2;initlist(sl);char fn50;phone pho;printf(請(qǐng)輸入要打開的文件名:n);scanf(%s,fn);if(fp=fopen(fn,r)=null)printf(文件

12、已損壞或文件不存在!n);exit(0);while(!feof(fp)fscanf(fp,%s%s,,pho.no);insertlist(sl,i,pho);i+;fclose(fp);五、 調(diào)試分析 在將外部磁盤文件導(dǎo)入順序表的操作中,調(diào)用insertlist()函數(shù)將聯(lián)系人信息插入順序表,用feof()判斷信息是否讀完。在生成聯(lián)系人文件時(shí),文件中有亂碼,使用for循環(huán)控制寫入文件的聯(lián)系人信息。六、使用說明程序名為phone.exe,運(yùn)行環(huán)境為dos。程序執(zhí)行后顯示:選擇1:創(chuàng)建號(hào)碼薄,要求輸入要輸入聯(lián)系人個(gè)數(shù)及信息;選擇2:插入聯(lián)系人,輸入要插入聯(lián)系人的信息;選擇3:刪

13、除聯(lián)系人,輸入要?jiǎng)h除聯(lián)系人的姓名;選擇4:修改聯(lián)系人,輸入要修改聯(lián)系人的姓名及新的聯(lián)系人信息;選擇5:查詢聯(lián)系人,輸入要查詢聯(lián)系人的姓名;選擇6:顯示所有聯(lián)系人的信息;選擇7:保存聯(lián)系人,輸入要保存的文件名稱;選擇8:導(dǎo)入聯(lián)系人,輸入要打開的文件名稱;七、測試結(jié)果1、選擇功能編號(hào)1輸入:3、12345,、bbbb、34567、cccc 、23456、aaaa;操作結(jié)果: 2、選擇功能編號(hào)2輸入:dddd、45678;操作結(jié)果:3、選擇功能編號(hào)3 輸入:cccc; 操作結(jié)果:輸入:hhhh操作結(jié)果: 4、選擇功能編號(hào)4 輸入:aaaa、gggg、67890; 操作結(jié)果 輸入:hhhh 操作結(jié)果:

14、 5、選擇功能編號(hào)5 輸入:dddd; 操作結(jié)果: 輸入:hhhh 操作結(jié)果: 6、選擇功能編號(hào)6 輸入:無需輸入; 操作結(jié)果: 7、選擇功能編號(hào)7 輸入:lianxiren.txt 操作結(jié)果: 8、選擇功能8 輸入:lianxiren.txt 操作結(jié)果: 輸入:a.txt 操作結(jié)果: 七、 課程設(shè)計(jì)總結(jié)或結(jié)論1完成的工作可以建立號(hào)碼薄,對(duì)聯(lián)系人進(jìn)行插入、刪除、修改、查詢、顯示、保存、導(dǎo)入等管理操作。 2未完成的工作 本次設(shè)計(jì)實(shí)現(xiàn)了手機(jī)上號(hào)碼薄的基本功能,但是缺少創(chuàng)新。1. 所需做的改進(jìn):需要對(duì)插入操作進(jìn)行優(yōu)化,若有重復(fù)的號(hào)碼則提示號(hào)碼存在,若同姓名不同號(hào)碼則說明聯(lián)系人有兩個(gè)號(hào)碼應(yīng)該都保存。八

15、、 參考文獻(xiàn)【1】、鄭玲等 ,c語言程序設(shè)計(jì),中國電力出版社,第一版,2009 【2】、譚強(qiáng)浩等,數(shù)據(jù)結(jié)構(gòu)教程,清華大學(xué)出版社,第二版,2008附錄:程序清單#include #include #include #include #define maxsize 1000typedef struct phonechar name20;char no20;phone;typedef struct phone *pho;int length;int listsize;sqlist;int initlist(sqlist &sl)sl.pho=(phone*)malloc(maxsize*sizeof

16、(phone);if(!sl.pho)printf(初始化失??!);return 0;sl.length=0;sl.listsize=maxsize;return 1;int creatlist(sqlist &sl)initlist(sl);printf(下面創(chuàng)建聯(lián)系人管理系統(tǒng)請(qǐng)按提示輸入數(shù)據(jù):n );sl.length=1;int m;printf(您一共要輸入聯(lián)系人個(gè)數(shù): n);scanf(%d,&m);for(int i=2;i=m+1;i+)printf(請(qǐng)輸入第%d個(gè)人的電話:n,i-1);scanf(%s,sl.phoi-1.no);printf(請(qǐng)輸入第%d個(gè)人的姓名:n,i-

17、1);scanf(%s,);sl.length+;printf(本次操作您一共輸入%d組聯(lián)系人信息n,m);return 1;int binsearch(sqlist sl,char *a)int low=1,high=sl.length-1,mid;while(low=high)mid=(low+high)/2;if(strcmp(a,)=0)printf(ttt查到的聯(lián)系人信息如下:nn);printf(ttt姓名tt號(hào)碼nn);printf(ttt*n);printf(ttt%stt%snn,,sl.ph

18、omid.no);return 1;else if(strcmp(a,)0)high=mid-1;elselow=mid+1;printf(tttt該聯(lián)系人不存在!nn);return 0;int binsearch1(sqlist sl,char *a)int low=1,high=sl.length-1,mid;while(low=high)mid=(low+high)/2;if(strcmp(a,)=0)printf(ttt聯(lián)系人信息如下:nn);printf(ttt姓名tt號(hào)碼nn);printf(ttt*n);printf(tt

19、t%stt%snn,,sl.phomid.no);return mid+1;else if(strcmp(a,)0)high=mid-1;elselow=mid+1;printf(tttt該聯(lián)系人不存在!nn);return 0;void save(sqlist &sl)file *fp;int i;char fn50;printf(請(qǐng)輸入要保存的文件名:n);scanf(%s,fn);if(fp=fopen(fn,w)=null)printf(文件名為空,不能保存!n);for(i=1;isl.length;i+)fprintf(fp,

20、%s %sn,,sl.phoi.no);fclose(fp);printf(文件保存成功!n);int deletelist(sqlist &sl,int i,phone &x)int j;if(isl.length)printf(您要?jiǎng)h除的人不存在,請(qǐng)檢查!n);return 0;i-;x=sl.phoi;for(j=i;jsl.length-1;j+)sl.phoj= sl.phoj+1;sl.length-;return 1;void scort(sqlist &sl)/插入排序int j;for(int i=2;isl.length;i+)if(strcmp(s

21、,)0)sl.pho0=sl.phoi;for(j=i-1;strcmp(,)=sl.listsize) printf(容量不夠!n); return 0; for(k=sl.length;k=i;k-) sl.phok=sl.phok-1; sl.phoi-1=x; sl.length=sl.length+1; return 1; void open(sqlist &sl,file *fp)int i=2;initlist(sl);char fn50;phone pho;printf(請(qǐng)輸入要打

22、開的文件名:n);scanf(%s,fn);if(fp=fopen(fn,r)=null)printf(文件已損壞或文件不存在!n);exit(0);while(!feof(fp)fscanf(fp,%s%s,,pho.no);insertlist(sl,i,pho);i+;fclose(fp);int updatelist(sqlist sl,int i,phone x)if(sl.length=0)printf(沒有數(shù)據(jù),無法更新!);return 0;sl.phoi-1=x;return 1;int listempty(sqlist &sl)return(sl.lengt

23、h=0);void displist(sqlist &sl)int i;if(listempty(sl)return;printf(ttt聯(lián)系人信息如下:nn);printf(tttt姓名tt號(hào)碼n);printf(ttt*n);for(i=1;isl.length;i+)printf(tttt%stt%s,,sl.phoi.no);printf(nn);int menu()int n;printf(ttt*歡迎使用聯(lián)系人管理系統(tǒng)*n);printf(ttt* 1、創(chuàng)建聯(lián)系人數(shù)據(jù) *n);printf(ttt* 2、插入聯(lián)系人數(shù)據(jù) *n);printf(ttt* 3、刪除聯(lián)系人數(shù)據(jù) *n);printf(ttt* 4、修改聯(lián)系人數(shù)據(jù) *n);printf(ttt* 5、按姓名查詢信息 *n);printf(ttt*

溫馨提示

  • 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)論