




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、家譜( 3-1)一、題目要求基本要求:從文件中讀入家庭成員建立家譜,以孩子兄弟表示法存儲(chǔ)?;竟δ埽杭易V管理,如:( 1)在家譜中添加新成員,并追加到文件中。( 2)輸出指定家庭的所有成員。( 3)確定指定成員在家族中的輩份(第幾代)。塵塵等等。二概要設(shè)計(jì)(1)功能部分:本程序共實(shí)現(xiàn)了 6 個(gè)功能分別為:1 . 讀出家譜并顯示2 .確定指定成員在家族中的輩份3 .輸出指定輩的所有成員4 .在家譜中添加新成員,并追加到文件中5 .輸出指定家庭的所有成員6 .退出本系統(tǒng)(2)各功能的算法思想:1. 讀出家譜并顯示2 / 10存儲(chǔ)結(jié)構(gòu)用棧,按照先顯示雙親,然后顯示其所有孩子的順序顯示所有的家庭成員。
2、2 .確定指定成員在家族中的輩份用求成員所在的二叉樹(shù)中的層數(shù)(按層遍歷二叉樹(shù))來(lái)確定,這里采用的是遞歸算法3 .輸出指定輩的所有成員此處定義了一個(gè)新的結(jié)構(gòu)體類(lèi)型(增加存儲(chǔ)節(jié)點(diǎn)所在的層數(shù)),定義如下:structBTNode *q;intloc;/ 存結(jié)點(diǎn)所在的層數(shù)qu10;并用一個(gè)隊(duì)列來(lái)比較顯示同輩分的所有成員。4 .在家譜中添加新成員,并追加到文件中首先,輸入一個(gè)新成員的名字;然后,輸入其雙親;之后,再添加到整個(gè)存儲(chǔ)二叉鏈表中。然后,再將新的存儲(chǔ)結(jié)構(gòu)寫(xiě)回到文件中。二叉鏈表的結(jié)點(diǎn)類(lèi)型為:typedefstruct nodeElemType data10;/ 存放成員的名字struct node
3、 *child;/ 其孩子指針struct node *brother;/ 其兄弟指針BTNode;5 .輸出指定家庭的所有成員首先,設(shè)一個(gè)棧,并設(shè)一個(gè)標(biāo)記位,先置1;然后,找到輸入的要待顯示的成員,將標(biāo)記位置0;再次,顯示其孩子和兄弟,依次下去直到顯示完其所有的親戚。6 .退出本系統(tǒng)通過(guò)一個(gè)輸入字符 q 來(lái)控制,每完成一個(gè)功能,系統(tǒng)提示是否要繼續(xù)操作:當(dāng)q為“微者“yk顯示菜單,程序繼續(xù)執(zhí)行;當(dāng) q 為其他字符時(shí),程序執(zhí)行結(jié)束,退出本系統(tǒng)。三、詳細(xì)設(shè)計(jì):通過(guò)一個(gè) do-while 語(yǔ)句來(lái)控制各個(gè)模塊的選擇和實(shí)現(xiàn)。1. 讀出家譜并顯示void display(BTNode *b)BTNode
4、*q10;/ 定義一個(gè)棧int front,rear;int k;BTNode *p;p=b;k=0;front=-1;rear=0;qrear=p;/ 頭結(jié)點(diǎn)先入棧while(frontdata ); / 頭結(jié)點(diǎn)出棧,并顯示printf();disbr(p-child);printf()n);if(p-child!=NULL) / 顯示其孩子rear+;qrear=p-child;if(p-brother!=NULL) / 顯示其兄弟 rear+;qrear=p-brother;2 .確定指定成員在家族中的輩分int generation(BTNode *b,int h,ElemType x
5、)/ 用遞歸的思想 int i;if(b=NULL)return(0);i=strcmp(b-data,x); / 比較是否相等if(i=0)return(h);int L=generation(b-child,h+1,x);if(L=0)L=generation(b-brother,h,x);return(L);3 .輸出指定輩的所有成員void layer(BTNode *t,int m) struct / 定義一個(gè)新的結(jié)點(diǎn)類(lèi)型,在孩子兄弟存儲(chǔ)結(jié)構(gòu)的基礎(chǔ)上添加一個(gè)數(shù)據(jù)域存其所在層數(shù)int loc;qu10;BTNode *q;int front,rear;BTNode *p;p=t;k=0
6、;front=-1;rear=0;qurear.q=p;qurear.loc=1;if( qurear.loc=m) / 找到 m 輩的即輸出printf(%c,p-data);while(frontchild!=NULL)rear+;qurear.q=p-child;qurear.loc=qufront.loc+1;if(m= qurear.loc)printf(%s,p-child-data);if(p-brother!=NULL)rear+;qurear.q=p-brother;qurear.loc=qufront.loc;if( qurear.loc=m)printf(%s ,p-br
7、other-data);4 .在家譜中添加新成員,并追加到文件中void add(BTNode *&b,ElemType y,ElemType x)void DispBTNode(BTNode *b,FILE *fp)char a10;int i=0;if(b!=NULL)while(b-datai!=0)ai=b-datai;i+;char filename20= ;FILE *fp;BTNode *p,*q;int i;p=FindNode(b,y);q=(BTNode *)malloc(sizeof(BTNode);else p=p-child;printf( 向文件中讀入新家譜 n);
8、scanf(%s,&filename);if(fp=fopen(filename,w)=NULL)elsefclose (fp);while(p-brother!=NULL)p=p-brother ;12 / 10for(i=0;xi!=0;i+)q-datai=xi;q-datai=0;q-child=q-brother=NULL;p-child=q;if(p-child =NULL)p-brother=q;display(b);printf(n input a filename:);puts(n cant open the file.);exit(0);DispBTNode(b,fp);a
9、i=0;if(b-child!=NULL | b-brother!=NULL)fputs(s,fp);DispBTNode(b-child,fp); / 遞歸寫(xiě)入其孩子fputs(a,fp); / 寫(xiě)入文件if (b-brother!=NULL)fputs(p,fp);DispBTNode(b-brother,fp); /fputs(t,fp);5 .輸出指定家庭的所有成員void dispfamily(BTNode *b,ElemType x) BTNode *p;BTNode *qMaxSize;int top=-1,tap=1;if(b!=NULL)top+;qtop=b;while(t
10、op-1)p=qtop;top-;if(strcmp(p-data,x)=0) / 查找此人 top=-1;tap=0;if(p-child!=NULL)top+;qtop=p-child;if(tap=0)遞歸寫(xiě)入其兄弟display(p-child); 顯示其孩子return ;top+;qtop=p-brother;if(tap=0)display(p-brother); / 顯示其兄弟return ;if(p-brother!=NULL)6 .退出本系統(tǒng)此處通過(guò)一個(gè)輸入字符q來(lái)控制,當(dāng)q為“微者詞號(hào),顯示菜單,程序繼 續(xù)執(zhí)行,當(dāng) q 為其他字符時(shí),程序執(zhí)行結(jié)束,退出本系統(tǒng)。此時(shí)q= N
11、。四:調(diào)試分析1 首先,將已有家譜存儲(chǔ)文件寫(xiě)在一個(gè)txt 文檔里,內(nèi)容為:wu(wuchang(wuxin(wujia,wuhua),wuli)輸出結(jié)果為:2調(diào)試時(shí)遇到的問(wèn)題:( 1)當(dāng)選擇功能3(添加新成員),添加完成員后,寫(xiě)回文件時(shí)出現(xiàn)了錯(cuò)誤,原本添加的為其中一個(gè)結(jié)點(diǎn)的孩子,結(jié)果寫(xiě)回文件時(shí)卻成了該結(jié)點(diǎn)的孫子,也就是本是要添加為此結(jié)點(diǎn)的孩子的兄弟,結(jié)果卻成了其孩子的孩子。最后經(jīng)過(guò)單步跟蹤發(fā)現(xiàn)寫(xiě)入文件的函數(shù)編寫(xiě)錯(cuò)誤,缺少判斷條件,經(jīng)過(guò)修改后,此問(wèn)題得到了解決。( 2)當(dāng)選擇功能0(顯示此家譜),沒(méi)有按照事先存儲(chǔ)在txt 中的文件顯示,通過(guò)認(rèn)真檢查程序中顯示成員的函數(shù)(按層遍歷)、不斷調(diào)試,發(fā)現(xiàn)
12、并不是該顯示函數(shù)的錯(cuò)誤,因?yàn)樵诠δ?(輸出指定家庭的所有成員)中,也是通過(guò)調(diào)用該函數(shù)實(shí)現(xiàn)輸出功能,于是,檢查 txt 文件中事先存儲(chǔ)的家譜成員,發(fā)現(xiàn)是由于 “( ”與 “) ”沒(méi)有匹配好,導(dǎo)致沒(méi)有按照預(yù)期想法創(chuàng)建二叉樹(shù)造成的錯(cuò)誤,通過(guò)修改 txt 文件,使得錯(cuò)誤得以解決。五、課程設(shè)計(jì)總結(jié)通過(guò)本次課程設(shè)計(jì),我覺(jué)得自己最大的收獲就是:( 1)學(xué)會(huì)了怎樣將課堂所學(xué)知識(shí)運(yùn)用到較為實(shí)際的應(yīng)用中來(lái)由于對(duì)二叉鏈表的存儲(chǔ)比較感興趣,我選做的是家譜,開(kāi)始覺(jué)得無(wú)從下手,但是經(jīng)過(guò)仔細(xì)分析后,漸漸找到一點(diǎn)思路(首先創(chuàng)建,然后分別實(shí)現(xiàn)各個(gè)功能,最后利用菜單實(shí)現(xiàn)選擇功能并輸出結(jié)果)。( 2)鍛煉提出問(wèn)題、解決問(wèn)題和自學(xué)的能力家譜的實(shí)現(xiàn)要求讀、寫(xiě)文件,于是 “如何將文件從文檔中讀出 ” , “怎么寫(xiě)入文件 ”都是要滿(mǎn)足要求必須解決的問(wèn)題。為此,我查找了
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- CBWQA/T 0001-2013自動(dòng)定壓補(bǔ)水真空脫氣機(jī)組
- CAB 1012-2012汽車(chē)裝飾用化纖制品
- 社會(huì)救助住宿服務(wù)的需求與供給平衡考核試卷
- 2024年偏三甲苯項(xiàng)目投資申請(qǐng)報(bào)告代可行性研究報(bào)告
- 虛擬世界共建:網(wǎng)絡(luò)小說(shuō)游戲改編權(quán)獨(dú)家授權(quán)補(bǔ)充協(xié)議
- 虛擬偶像直播平臺(tái)藝人經(jīng)紀(jì)代理與IP授權(quán)合同
- 質(zhì)押典當(dāng)補(bǔ)充協(xié)議
- 智能家居環(huán)境監(jiān)測(cè)系統(tǒng)軟件租賃與多用戶(hù)權(quán)限管理協(xié)議
- 智能化施工現(xiàn)場(chǎng)粉塵治理與監(jiān)測(cè)合同
- 電氣設(shè)備安裝調(diào)試工程師崗位聘用及質(zhì)量保證合同
- 低慢小無(wú)人機(jī)偵測(cè)反制系統(tǒng)要求標(biāo)準(zhǔn)
- 大氣污染治理的國(guó)內(nèi)外比較研究
- 駕考三力測(cè)試題庫(kù)附答案
- 2025屆天津市蘆臺(tái)一中高三一模-化學(xué)試卷
- 蘇教版數(shù)學(xué)一年級(jí)下冊(cè)(2024)第七單元觀察物體(一)綜合素養(yǎng)測(cè)評(píng) A 卷(含答案)
- 市政道路工程施工組織設(shè)計(jì)方案
- 2024年版豬場(chǎng)員工勞動(dòng)合同模板3篇
- Unit 6 Section A 1a-2c 說(shuō)課課件2024-2025學(xué)年人教版英語(yǔ)八年級(jí)下冊(cè)
- 2024年中國(guó)養(yǎng)老產(chǎn)業(yè)商學(xué)研究報(bào)告-銀發(fā)經(jīng)濟(jì)專(zhuān)題
- 保衛(wèi)管理員三級(jí)練習(xí)題
- DBJ51T033-2014 四川省既有建筑電梯增設(shè)及改造技術(shù)規(guī)程
評(píng)論
0/150
提交評(píng)論