版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、洛陽(yáng)理工學(xué)院課程設(shè)計(jì)報(bào)告課程名稱數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)設(shè)計(jì)題目家譜管理系統(tǒng)專業(yè)計(jì)算機(jī)科學(xué)與技術(shù)班級(jí)B150405學(xué)號(hào)B15080822姓名宋士龍完成日期2016年12月30計(jì)課程設(shè)計(jì)任務(wù)書設(shè)計(jì)題目:家譜管理系統(tǒng)設(shè)計(jì)內(nèi)容與要求:【問(wèn)題描述】:實(shí)現(xiàn)具有下列功能的家譜管理系統(tǒng)1) .輸入文件以存放最初家譜中各成員的信息,成員的信息中均應(yīng)包含以下內(nèi)容:姓名、出生日期、婚否、地址、健在否、死亡日期(若其已死亡),也可附加其它信息、但不是必需的。2) .實(shí)現(xiàn)數(shù)據(jù)的存盤和讀盤。3) .顯示家譜。4) .按照出生日期查詢成員名單。5) .按照姓名查詢,輸出成員信息(包括其本人、父親、孩子的信息)。6).修改某成員信
2、息?!净疽蟆浚航缑嬉螅河泻侠淼奶崾荆總€(gè)功能可以設(shè)立菜單,根據(jù)提示,可以完成相關(guān)的功能要求。存儲(chǔ)結(jié)構(gòu):學(xué)生自己根據(jù)系統(tǒng)功能要求自己設(shè)計(jì),但是要求相關(guān)數(shù)據(jù)要存儲(chǔ)在數(shù)據(jù)文件中。測(cè)試數(shù)據(jù):要求使用1、全部合法數(shù)據(jù);2、局部非法數(shù)據(jù)。進(jìn)行程序測(cè)試,以保證程序的穩(wěn)定。測(cè)試數(shù)據(jù)及測(cè)試結(jié)果請(qǐng)?jiān)谏辖坏馁Y料中寫明。指導(dǎo)教師:年月日課程設(shè)計(jì)評(píng)語(yǔ)成績(jī):指導(dǎo)教師:年月日洛陽(yáng)理工學(xué)院課程設(shè)計(jì)報(bào)告1、算法思想本程序是一個(gè)管理家譜的系統(tǒng),通過(guò)這個(gè)系統(tǒng)可以對(duì)家族成員進(jìn)行創(chuàng)建、顯示、查找、修改、以及保存家譜和讀取家譜功能。該系統(tǒng)分為以下幾個(gè)模塊,分別是:創(chuàng)建家譜,顯示家譜、按姓名和生日查找家庭成員、修改家譜、存盤、讀盤以
3、及退出系統(tǒng)。本程序用到的存儲(chǔ)形式為多叉樹,因?yàn)榧易V中每個(gè)人既有父母又有孩子,而且孩子的個(gè)數(shù)并不確定,所以用多叉樹來(lái)存儲(chǔ)最為合適。用多叉樹來(lái)存儲(chǔ),就用用到多叉樹的遞歸創(chuàng)建及遞歸遍歷。因?yàn)槭嵌嗖鏄?,所以遍歷時(shí)用廣度優(yōu)先搜索合適。本函數(shù)最主要的思想就是遞歸調(diào)用,每個(gè)子函數(shù)中都會(huì)用到遞歸。定義結(jié)構(gòu)體時(shí)給定指針數(shù)組的最大容量,來(lái)規(guī)定家譜中最多可以存多少人。定義一個(gè)家族樹的指針變量用來(lái)當(dāng)每個(gè)子函數(shù)的參數(shù),從而將其返回到主函數(shù)中。以下時(shí)算法思想流程圖:、模塊劃分1.intmain():主函數(shù)2.voidCreatTree(TreeNode*Tree)創(chuàng)建家族樹3.voidOutPutAll(TreeNode
4、*Tree):顯示家譜4.voidMenue(TreeNode*Tree):主菜單5.voidSubMenue1(TreeNode*Tree)副菜單(修改選項(xiàng)菜單)6.voidChange(TreeNode*Tree)修改家譜7.TreeNode*SearchTree(TreeNode*Tree,charname,intlength)按照姓名查找家譜成員8.TreeNode*SearchTree1(TreeNode*Tree,charbirth,intlength)按照生日查找家譜成員9.voidOutPutMessage(TreeNode*Tree,charname,intlength)輸出
5、按姓名查找到的家譜成洛陽(yáng)理工學(xué)院課程設(shè)計(jì)報(bào)告2員10. voidOutPutMessage1(TreeNode*Tree,charbirth,intlength):輸出按生日查找到的家譜成員11. voidSaveFamily(TreeNode*root):保存家譜12. voidReadFamily(TreeNode*root):讀取家譜三、數(shù)據(jù)結(jié)構(gòu)typedefstructTreeNode(intChildNum;/記錄這個(gè)人擁有幾個(gè)兒女charName20;/記錄這個(gè)人的姓名charbirthday20;/生日intmarriage;/婚否(1表示結(jié)婚,0表示沒(méi)結(jié)婚)intdeath;/
6、生死(1表示活著,0表示過(guò)世)charKind;/標(biāo)示節(jié)點(diǎn)的種類有女G男Bcharaddress100;/住址charlivemassage50;/死亡日期(如果其已經(jīng)死亡)structTreeNode*NextNode20;/記錄這個(gè)人的兒女structTreeNode*Parent;記錄這個(gè)節(jié)點(diǎn)的父節(jié)點(diǎn)TreeNode,*tree;四、測(cè)試第一組數(shù)據(jù)為:爺爺,奶奶,爸爸,媽媽,我,二叔,二嬸,姐姐,三叔,三嬸,弟弟一共三代11個(gè)人。其中爺爺是根節(jié)點(diǎn),奶奶為爺爺?shù)呐渑?,同時(shí)也是爺爺?shù)牡谝粋€(gè)后繼節(jié)點(diǎn)。爸爸,二叔,三叔為爺爺?shù)淖优?。爸爸的配偶是媽媽,爸爸的子女是我。二叔的配偶是二嬸,子女是姐姐?/p>
7、三叔的的配偶是三嬸,三叔的的子女是弟弟。進(jìn)入程序之后,首先進(jìn)行創(chuàng)建家譜,然后進(jìn)行存盤,之后進(jìn)行修改和查詢等步驟。退出程序在進(jìn)入程序時(shí),進(jìn)行讀盤。之后在進(jìn)行其他操作,程序完成之后退出即可。洛陽(yáng)理工學(xué)院課程設(shè)計(jì)報(bào)告3第一組數(shù)據(jù)測(cè)試截圖為:-牛掌*虹廿*一*-*,*“n*訴李姓名:蕾雀出生日f(shuō)fl;1966.05.0&家庭住址:由奈省臨沂市性割;B B 男衰子姓名:媽媽是否健在 n-n-健在.0 0去世L1簫1個(gè)子女的姓君;我出生日期;1996,10.23家庭住扯:山東皆臨沂市性別B男tt*-*#*tt*-*#*-n=*#-n=*#-*-#*-*-#*-*-*-*#*#姓名:我出生日期:1為 6 6
8、 一1Q,就冢露住址:山東省臨折市性割:B勇至今沒(méi)有配偶和子女w*-w*-w*w*-_-_林率_-*樹*w*w*件*徒名:姐姐出生日a:1991.02.14家庭住址,山東省陸滑市性別:G女至今沒(méi)有配隅和于女!CA,U5ersfldirTiinDkTQpicech5ng.rx-一*-一一一-*豐*-一*-一一一-避名:爺爺出生日:1944.09.20慕庭住址:山奈省臨訴市性別:妻子姓名:蠣剃是否值在健在-卜去世L0盆1個(gè)子女的姓名;爸琶出生日期:19.阿M冢女存圮:山東省臨折市性別E男第個(gè)子女的姓宅:二叔出生日期:19沌一呻一前家庭住址:山親省臨沂市性別 R R 男描,中子女的姓名;三叔出生日期
9、-1第上旎,14槌家強(qiáng)住址:山東省陸祈市性別B男是否便在O健在.5 去世L0是否蕓在U-登在,是否健莊n-健茂,是否豈在門-健在,。-.七廿:,00-去世)10(Fiffii0圖1家族樹是否健在印-舞在.。-去世:1 1是否謎在(1-更在,L是否健在U-舞在.卜會(huì)世:1 1姓名:二叔出生日S0J97D.06.0&家庭住址1由京省陸折市妻子姓名;二坤是否健在口-健在,卜去世);1第1個(gè)子女的姓名:姐旭出生日期=1991-02.1991-02.14家庭住址:山茱者臨沂市性別:R男性丹施女是否嚏在血箜在A 去世,】是否健在U-健在.A 去世狂 i i是否暨在血哩在.仍去世】洛陽(yáng)理工學(xué)院課程設(shè)計(jì)報(bào)告4
10、*=t*3*姓名:三叔出生目期:1977.02.148家庭住址:山東者臨沂市性別:E身妻子排名:一.岬是杏健石(1健在.卜去世)1童1個(gè)子女的姓君;第弟出生百旃:WOOL臨能靠吭存&山東省臨所市性別E男-*-一一-*=!*-一!*一一-更敦拘音半:弟茂出生日凌:期1.Q3.費(fèi)贏庭住址:山東省I與訴市.性別;史身.是否博在1-舞在.A 去由:1 1W*W*I-3-3IVJIHxTvTJI圖2顯示家譜是否健在O理在.5 去世 J J:1是否健在印-舞在.。-去世:1 1洛陽(yáng)理工學(xué)院課程設(shè)計(jì)報(bào)告5CUsersWifninDesktopkecheng.exe*+*+迎使用家族管廷系統(tǒng)b*s*g*土麗入
11、家譜信息建立例日:翰出整個(gè)家潔佶息。;貌出三日期在我其人D:按姓名查找.某人E:修改芹個(gè)人的信息F;存盤&茗盤H;退出座中程序請(qǐng)輸入你要直找的人的姓名:胡弟*-申申申 1您所要找的大己經(jīng)找到信息如下所示:姓名:弟弟出主日朔成001一。咨.懿家陸住址:山東省臨折市性刑 5 輿母親姓名:三辭是否健在 u-u-在,o-ifi)o-ifi):1 1父親姓名;三靚誨裙至今還沒(méi)有配i禺和核于申*4申4申4*4圖3按照姓名查找家族成員C:U5FrsadminDe3ktcipicechcngBexe虹*蛭率率*歡迎使用家族首理.系統(tǒng)甘*版妃輸入家漕信息建立樹B;輸出盼辛家譜信息C:生三岐直改ELD;瑟姓名查找
12、某人修改某個(gè)人的信息F:存盤G;讀盤U:退出整個(gè)程序*昵存家請(qǐng)*輸KX件名及保存位置eg;D;Mampl.txt):D:WJI.FI;.tst新建丈件成功.艾件及其息役為:DAJIAPLr.txt圖4存盤第二組數(shù)據(jù)為:洛陽(yáng)理工學(xué)院課程設(shè)計(jì)報(bào)告6第二組數(shù)據(jù)測(cè)試截屏為:C:UsersadminDe5ktopkecheng.exe=率一-請(qǐng)炫擇你的操作-一4*-A!修改個(gè)人的信 ft*4)率*季*B:寇喪玄母的宿,*-*-?C:修改子女的信息*率*-*-D:退出-*-一*雄*畢圖5修改家族成員的信息圖4王家家族樹IX洛陽(yáng)理工學(xué)院課程設(shè)計(jì)報(bào)告7rfC:ysei3adminDesktopkecheng.
13、eKeX*i青選擇你的操作*-一-率率A!修改個(gè)人的信息*4*-*-*-:修改父母的站息-*整B_-率率*-C;瞥改子女的信息*專f*-*一一一*D!退出-*-一*4*=*請(qǐng)?bào)氲扛牡男彰?;如果不需蓮修改就都?然后援土21憾箍續(xù)王小二是否要慘改性別:如果需萼就錯(cuò)入不需要椽改枕輸入熟后按Enter筮蜓續(xù)0請(qǐng)輸入恰改的出生日期:加果不需蔓修改就輸入定薄后按EtU#鍵縫續(xù)0清輸入修改的家眶地址:如果不需要修改就輸入娥后按EnMr鍵爵續(xù)0個(gè)人信息修改成功清按Em歆!爆續(xù)探作卿拼音半:圖6修改某個(gè)人的具體信息您聽要找的人己經(jīng)找到信息如下所示:姓名:王小二出生日期:WQ如家庭住扯:落陽(yáng)性劇:E男圖7按照
14、生日查找某人一杵*加*44歡迎使用家族營(yíng)理系笑*D:按姓名查我某人E:穆改窠個(gè)人的信息F:存盤讀盤N:溫出整個(gè)程序一4:輸入家譜信息建立材B;輸出聚個(gè)家譜信息按出生日期查找某人洛陽(yáng)理工學(xué)院課程設(shè)計(jì)報(bào)告8C;05ersMadminDe5ktopMtecheng.exe*狄迎使用家族if珪系Ert*D:撞姓名白找某人E:慘改某個(gè)人的信息F:存查G:詼塑H:退出整個(gè)程序*讀恩家潔*忡$*簌入文件名及其網(wǎng)徑,以便從中漆耽露譜:丈件遂其路樣何:D:MHP1B.tit):Etit):E:JIA-titJIA-tit圖8讀盤五、源程序#include#include#include#ifdefWIN32#d
15、efineCLEARsystem(cls)#defineTipForSaveFilePositionprintf(tt輸入文件名及保存位置(eg:D:Wexample.txt):)#defineTipForReadFilePositionprintf(tt文件名及其路徑(eg:D:Wexample.txt):)#else#defineCLEARsystem(clear)#defineTipForSaveFilePositionprintf(tt輸入文件名及保存位置(eg:/home/xiong/example.txt):)#defineTipForReadFilePositionprintf(
16、tt文件名及其路徑(eg:/home/xiong/example.txt):)#endif#definemaxFileNameLen50/保存的文件名的最大長(zhǎng)度intFLAG=0;inta=1;typedefstructTreeNodeintChildNum;/記錄這個(gè)人擁有幾個(gè)兒女charName20;/記錄這個(gè)人的姓名charbirthday20;/生日intmarriage;/婚否(1表示結(jié)婚,0表示沒(méi)結(jié)婚)intdeath;/生死(1表示活著,0表示過(guò)世)/輸入家譜信息建立村&船出整佇家諳信息C:按出生期查援某氏洛陽(yáng)理工學(xué)院課程設(shè)計(jì)報(bào)告9charKind;/標(biāo)示節(jié)點(diǎn)的種類有女G男Bch
17、araddress100;/住址charlivemassage50;/死亡日期(如果其已經(jīng)死亡)structTreeNode*NextNode20;/記錄這個(gè)人的兒女structTreeNode*Parent;記錄這個(gè)節(jié)點(diǎn)的父節(jié)點(diǎn)TreeNode,*tree;voidCreatTree(TreeNode*Tree);voidOutPutAll(TreeNode*Tree);voidMenue(TreeNode*Tree);voidSubMenue1(TreeNode*Tree);voidSubMenue2(TreeNode*Tree);voidChange(TreeNode*Tree);voi
18、dAddNew(TreeNode*Tree);TreeNode*SearchTree(TreeNode*Tree,charname,intlength);TreeNode*SearchTree1(TreeNode*Tree,charbirth,intlength);voidOutPutMessage(TreeNode*Tree,charname,intlength);voidOutPutMessage1(TreeNode*Tree,charbirth,intlength);voidSaveFamily(TreeNode*root);voidReadFamily(TreeNode*root);i
19、ntmain()/主函數(shù)(TreeNode*Tree;/TreeNode*Tree1;/Tree1=&(*Tree);Tree=(TreeNode*)malloc(sizeof(TreeNode);Tree-Parent=NULL;strcpy(Tree-Name,0);Menue(Tree);return0;voidMenue(TreeNode*Tree)/輸出主菜單(/*TreeNode*Tree1;Tree1=&Tree;*/charc;charname20;charbirth20;while(1)(system(cls);printf(t);printf(nntt*歡迎使用家族管理系統(tǒng)
20、*nn);printf(nttA:輸入家譜信息建立樹);洛陽(yáng)理工學(xué)院課程設(shè)計(jì)報(bào)告10printf(nttB:輸出整個(gè)家譜信息);printf(nttC:按出生日期查找某人);printf(nttD:按姓名查找某人);printf(nttE:修改某個(gè)人的信息);printf(nttF:存盤);printf(nttG昴);printf(nttH:退出整個(gè)程序nt);c=getchar();switch(c)(caseA:TreeNode*NewNode;NewNode=(TreeNode*)malloc(sizeof(TreeNode);printf(nt請(qǐng)輸入姓名:);scanf(%s”,Tre
21、e-Name);printf(nt請(qǐng)輸入性別女G男B:);getchar();scanf(%c”,&(Tree-Kind);Tree-Parent=NewNode;Tree-Parent=NULL;/CreatTree(Tree);/printf(nt家譜圖已經(jīng)建立成功nn);printf(nnt請(qǐng)按Enter鍵繼續(xù)操作);getchar();break;caseB:if(strcmp(Tree-Name,0”)=0)(printf(nt家譜圖的多叉樹尚未建立請(qǐng)先建立樹n);getchar();break;printf(nnt整個(gè)家譜的主要信息如下:);OutPutAll(Tree);getc
22、har();break;caseC:if(strcmp(Tree-birthday,0”)=0)(printf(nt家譜圖的多叉樹尚未建立請(qǐng)先建立樹n);getchar();break;洛陽(yáng)理工學(xué)院課程設(shè)計(jì)報(bào)告11printf(nt請(qǐng)輸入你要查找的出生日期:,洛陽(yáng)理工學(xué)院課程設(shè)計(jì)報(bào)告12scanf(%s,birth);OutPutMessage1(SearchTree1(Tree,birth,20),birth,20);printf(nnt-*-*-*-*-*-nt);getchar();break;caseD:if(strcmp(Tree-Name,0”)=0)printf(nt家譜圖的多叉
23、樹尚未建立請(qǐng)先建立樹n);getchar();break;printf(nt請(qǐng)輸入你要查找的人的姓名:nt);scanf(%s”,name);OutPutMessage(SearchTree(Tree,name,20),name,20);printf(nnt-*-*-*-*-*-nt);getchar();break;caseE:if(strcmp(Tree-Name,0”)=0)printf(nt家譜圖的多叉樹尚未建立請(qǐng)先建立樹getchar();break;n);Change(Tree);getchar();break;caseF:if(strcmp(Tree-Name,0”)=0)pri
24、ntf(nt家譜圖的多叉樹尚未建立請(qǐng)先建立樹getchar();break;n);SaveFamily(Tree);getchar();break;caseG:/*if(strcmp(Tree-Name,0)=0)printf(nt家譜圖的多叉樹尚未建立請(qǐng)先建立樹getchar();break;n);洛陽(yáng)理工學(xué)院課程設(shè)計(jì)報(bào)告13洛陽(yáng)理工學(xué)院課程設(shè)計(jì)報(bào)告14*/ReadFamily(&Tree);getchar();break;caseH:printf(nnt本次服務(wù)至V此結(jié)束);printf(nt歡迎下次使用);printf(nt謝謝nn);break;casen:break;default:
25、printf(nnt對(duì)不起!你的選擇不在服務(wù)范圍之內(nèi)!);printf(nt請(qǐng)您再次選擇所需的服務(wù)項(xiàng)!);printf(nt謝謝nt);getchar();break;if(c=H|c=f)break;getchar();voidCreatTree(TreeNode*Node)/創(chuàng)建樹inti;TreeNode*NewNode;NewNode=(TreeNode*)malloc(sizeof(TreeNode);Node-NextNode0=NewNode;Node-NextNode0=NULL;printf(nt請(qǐng)輸入出生日期:);scanf(%s”,Node-birthday);print
26、f(nt請(qǐng)輸入家庭住址:);getchar();scanf(%s,Node-address);printf(nt請(qǐng)輸入是否建在(1-是或0-否):”);scanf(%d”,&(Node-death);if(Node-death=0)printf(nt請(qǐng)輸入去世日期:);scanf(%s”,Node-livemassage);elseif(Node-death=1)printf(nt仍然建在);printf(nt請(qǐng)輸入%s的配偶的姓名(輸入0代表沒(méi)結(jié)婚):,Node-Name);scanf(%s,NewNode-Name);洛陽(yáng)理工學(xué)院課程設(shè)計(jì)報(bào)告15if(strcmp(NewNode-Name
27、,0)!=0)(printf(t請(qǐng)輸入配偶的出生日期:);scanf(%s”,NewNode-birthday);printf(nt請(qǐng)輸入家庭住址:);getchar();scanf(%s,NewNode-address);printf(nt請(qǐng)輸入是否建在(1-是或0-否):”);scanf(%d”,&(NewNode-death);if(NewNode-death=0)(printf(nt請(qǐng)輸入去世日期:);scanf(%s,NewNode-livemassage);elseif(NewNode-death=1)printf(-nt仍然建在);printf(nt請(qǐng)輸入%s的子女的數(shù)目(當(dāng)子女
28、輸入0時(shí)便停止輸入該成員有關(guān)信息):,Node-Name);scanf(%d”,&(Node-ChildNum);if(Node-ChildNum)=0&strcmp(NewNode-Name,0)=0)return;if(Node-Kind=G|Node-Kind=g)NewNode-Kind=B;elseNewNode-Kind=G;NewNode-ChildNum=0;NewNode-NextNode0=NULL;Node-NextNode0=NewNode;Node-NextNode0-Parent=Node;/孩子的父母for(i=1;iChildNum;i+)(NewNode=(T
29、reeNode*)malloc(sizeof(TreeNode);a+;printf(nt請(qǐng)輸入%s的第%d子女的名字:,Node-Name,i);scanf(%s,NewNode-Name);printf(nt請(qǐng)輸入%s的第%d子女的性別女G男B:,Node-Name,i);getchar();scanf(%c,&NewNode-Kind);NewNode-ChildNum=-1;NewNode-Parent=Node;Node-NextNodei=NewNode;CreatTree(Node-NextNodei);/從子女的數(shù)目開始voidOutPutAll(TreeNode*Tree)(
30、洛陽(yáng)理工學(xué)院課程設(shè)計(jì)報(bào)告16inti,flag=0;*”uint.nxtprintf(nt姓名:%s出生日期:%s另1J:%c”,Tree-Name,Tree-birthday,Tree-address,Tree-Kind);if(Tree-Kind=G|Tree-Kind=g)(flag=1;printf(女);elseprintf(男);printf(t是否健在(1-健在,0-去世):,if(Tree-death=1)printf(1);elseif(Tree-death=0)printf(0);if(!(Tree-NextNode0)(printf(nt至今沒(méi)有配偶和子女n);retur
31、n;if(flag=1)printf(nt丈夫姓名:%s,Tree-NextNode0-Name);elseprintf(nt妻子姓名:%s,Tree-NextNode0-Name);printf(t是否健在(1-健在,0-去世):,if(Tree-death=1)printf(1);elseif(Tree-death=0)printf(0);for(i=1;iChildNum;i+)(printf(nt第%d個(gè)子女的姓名:%s出生日期:%s家庭住址:%s性別%c,i,Tree-NextNodei-Name,Tree-NextNodei-birthday,Tree-NextNodei-addr
32、ess,Tree-NextNodei-Kind);if(Tree-NextNodei-Kind=G|Tree-NextNodei-Kind=g)printf(女);elseprintf(男);printf(t是否健在(1-健在,0-去世):);if(Tree-death=1)printf(1);elseif(Tree-death=0)printf(0);printf(nt);for(i=1;iChildNum;i+)(OutPutAll(Tree-NextNodei);家庭住址:%s性洛陽(yáng)理工學(xué)院課程設(shè)計(jì)報(bào)告17TreeNode*SearchTree(TreeNode*Tree,charnam
33、e,intlength)(inti;TreeNode*NewNode;if(strcmp(Tree-Name,name)=0)(if(length=0)FLAG=1;elseFLAG=0;returnTree;if(Tree-NextNode0=NULL)returnNULL;for(i=0;iChildNum;i+)(if(i=0)NewNode=SearchTree(Tree-NextNodei,name,0);elseNewNode=SearchTree(Tree-NextNodei,name,20);if(NewNode!=NULL)returnNewNode;returnNULL;v
34、oidOutPutMessage(TreeNode*Tree,charname,intlength)(intflag=0,i;TreeNode*NewNode;printf(nnt-*-*-*-*-*-*-*-*-*-*-);if(Tree=NULL)(printf(nnt*該家譜圖中沒(méi)有%s這個(gè)人的信息請(qǐng)確認(rèn)是否輸入錯(cuò)誤*n,name);return;printf(nnt您所要找的人已經(jīng)找到信息如下所示:);printf(nnt姓名:%s出生日期:%s家庭住址別:%c”,name,Tree-birthday,Tree-address,Tree-Kind);if(Tree-Kind=G|Tre
35、e-Kind=g)(flag=1;printf(女);elseprintf(男);%s性/標(biāo)記他(她)的性別洛陽(yáng)理工學(xué)院課程設(shè)計(jì)報(bào)告18printf(t是否健在(1-健在,0-去世):,if(Tree-death=1)printf(1);elseif(Tree-death=0)printf(0);NewNode=Tree-Parent;if(FLAG=1)if(flag=1)printf(nnt她是嫁入此家族的所以親生父母信息不在家譜內(nèi)包括);printf(nt丈夫姓名:%s”,NewNode-Name);elseprintf(-nnt他是入贅此家族的所以親生父母信息不在家譜內(nèi)包括);prin
36、tf(nt妻子姓名:%s”,NewNode-Name);if(NewNode-ChildNum)0)判斷他(她)是否有孩子printf(nt的孩子的信息如下:);輸出他(她)的孩子的信息for(i=1;iChildNum;i+)printf(nt姓名:%s性別:,NewNode-NextNodei-Name);if(NewNode-NextNodei-Kind=G|NewNode-Kind=g)printf(女);elseprintf(男);printf(t是否健在(1-健在,0-去世):);if(Tree-death=1)printf(1);elseif(Tree-death=0)print
37、f(0);return;if(NewNode=NULL)/判斷它是不是根節(jié)點(diǎn)如果是的話就沒(méi)有父母兄弟信息printf(nt是這個(gè)家譜圖里最年長(zhǎng)的人,name);elseif(NewNode-Kind=G|NewNode-Kind=g)判斷父親節(jié)點(diǎn)是父親還是母親printf(nt母親姓名:s”,NewNode-Name);/輸出他(她)的父母親的信息printf(nt父親姓洛陽(yáng)理工學(xué)院課程設(shè)計(jì)報(bào)告19名:%s”,NewNode-NextNode0-Name);elseprintf(nt母親姓名:%s”,NewNode-NextNode0-Name);printf(nt父 親 姓名:%s,NewN
38、ode-Name);if(Tree-NextNode0!=NULL)/判斷他(她)是否有配偶if(flag=1)/輸出他(她)的配偶的信息printf(nt丈夫姓名:%s”,Tree-NextNode0-Name);elseprintf(nt妻子姓名:%s”,Tree-NextNode0-Name);if(Tree-ChildNum0)/判斷他(她)是否有孩子printf(nt的孩子的信息如下:); 輸出他(她)的孩子的信息for(i=1;iChildNum;i+)printf(nt姓名:%s性別: ”,Tree-NextNodei-Name);if(Tree-NextNodei-Kind=G
39、|Tree-Kind=g)printf(女);elseprintf(男);printf(t是否健在(1-健在,0-去世):,if(Tree-death=1)printf(1);elseif(Tree-death=0)printf(0);elseprintf(nt%s至今還沒(méi)有孩子,name);elseprintf(nt%s至今還沒(méi)有配偶和孩子n”,Tree-Name);TreeNode*SearchTree1(TreeNode*Tree,charbirth,intlength)inti;TreeNode*NewNode;if(strcmp(Tree-birthday,birth)=0)洛陽(yáng)理工
40、學(xué)院課程設(shè)計(jì)報(bào)告20if(length=0)FLAG=1;elseFLAG=0;returnTree;if(Tree-NextNode0=NULL)returnNULL;for(i=0;iChildNum;i+)if(i=0)NewNode=SearchTree1(Tree-NextNodei,birth,0);elseNewNode=SearchTree1(Tree-NextNodei,birth,20);if(NewNode!=NULL)returnNewNode;returnNULL;voidOutPutMessage1(TreeNode*Tree,charbirth,intlength
41、)intflag=0,i;TreeNode*NewNode;if(Tree=NULL)printf(nnt*該家譜圖中沒(méi)有出生日期為%s這個(gè)人的信息請(qǐng)確認(rèn)是否輸入錯(cuò)誤*n,birth);return;printf(nnt您所要找的人已經(jīng)找到信息如下所示:);printf(nnt姓名:%s出生日期:s家庭住址:s性別:%c”,Tree-Name,Tree-birthday,Tree-address,Tree-Kind);if(Tree-Kind=G|Tree-Kind=g)flag=1;/標(biāo)記他(她)的性別printf(女);elseprintf(男);voidChange(TreeNode*T
42、ree)/修改某個(gè)人的信息charname20;TreeNode*NewNode;printf(nnt*洛陽(yáng)理工學(xué)院課程設(shè)計(jì)報(bào)告21printf(nt請(qǐng)輸入你要修改的人的姓名:nt);scanf(%s”,name);NewNode=SearchTree(Tree,name,20);if(NewNode=NULL)printf(nnt*該家譜圖中沒(méi)有%s這個(gè)人的信息請(qǐng)確認(rèn)是否輸入錯(cuò)誤*n,name);return;elseSubMenue1(NewNode);voidSubMenue1(TreeNode*Tree)/輸出副菜單charc;intflag,i;charname20;charbirt
43、h20;charaddress150;charParent220;TreeNode*NewNode;getchar();while(1)system(cls);printf(t);printf(nnt-*-請(qǐng)選擇你的操作-*-);printf(nt-*-*-*-A:修改個(gè)人的信息-*-*-*-*-*-*-);printf(nt-*-*-*-B:修改父母的信息-*-*-*-*-*-*-);printf(nt-*-*-*-C:修改子女的信息-*-*-*-*-*-*-);printf(nt-*-*-*-D:退出-*-*-*-*-*-*-*-*-*-nt);c=getchar();switch(c)c
44、aseA:printf(-nnt請(qǐng)輸入修改的姓名:如果不需要修改就輸入0然后按Enter鍵繼續(xù)nt);scanf(%s,name);if(strcmp(name,0)!=0)strcpy(Tree-Name,name);printf(-nnt是否要修改性別:如果需要就輸入1不需要修改就輸入0然后按Enter鍵繼續(xù)nt);scanf(%d”,&flag);if(flag=1)(if(Tree-Kind=G|Tree-Kind=g)Tree-Kind=B;elseTree-Kind=G;洛陽(yáng)理工學(xué)院課程設(shè)計(jì)報(bào)告22printf(nnt請(qǐng)輸入修改的出生日期:如果不需要修改就輸入0然后按Enter鍵繼
45、續(xù)nt);scanf(%s”,birth);if(strcmp(birth,0”)!=0)strcpy(Tree-birthday,birth);printf(-nnt請(qǐng)輸入修改的家庭地址:如果不需要修改就輸入0然后按Enter鍵繼續(xù)nt);scanf(%s,address1);if(strcmp(address1,0”)!=0)strcpy(Tree-address,address1);printf(nnt個(gè)人信息修改成功);break;caseB:if(Tree-Parent=NULL)/判斷是不是頭節(jié)點(diǎn)(printf(nt是這個(gè)家譜圖里最頂端的人沒(méi)有父母信息!,name);break;i
46、f(FLAG=1)判斷是不是入贅或加入此間的(if(Tree-Kind=G|Tree-Kind=g)(printf(nnt她是嫁入此間的所以父母信息不在家譜內(nèi)包括);else(printf(-nnt他是入贅此間的所以父母信息不在家譜內(nèi)包括);break;if(Tree-Parent-Kind=G|Tree-Parent-Kind=g)(strcpy(Parent0,”母親);strcpy(Parent1,”父親);else(strcpy(Parent0,”父親);strcpy(Parent1,”母親);printf(nnt請(qǐng)輸入%s要修改的姓名:如果不需要修改就輸入0然后按Enter鍵繼續(xù)nt
47、”,Parent0);scanf(%s”,name);if(strcmp(name,0”)!=0)strcpy(Tree-Parent-Name,name);printf(-nnt請(qǐng)輸入%s要修改的姓名:如果不需要修改就輸入0洛陽(yáng)理工學(xué)院課程設(shè)計(jì)報(bào)告23然后按Enter鍵繼續(xù)nt,Parent1);scanf(%s,name);if(strcmp(name,0”)!=0)strcpy(Tree-Parent-NextNode0-Name,name);printf(nnt父母的信息修改成功);break;caseC:if(Tree-ChildNum=0)(printf(nnt至今還沒(méi)有子女);b
48、reak;if(Tree-Parent!=NULL)if(strcmp(Tree-Name,Tree-Parent-NextNode0-Name)=0)/如果他是入贅或者是嫁入的就需用配偶節(jié)點(diǎn)完成修改(Tree=Tree-Parent;for(i=1;iChildNum;i+)(printf(-nnt請(qǐng)輸入s修改的姓名:如果不需要修改就輸入0然后按Enter鍵繼續(xù)nt,Tree-NextNodei-Name);scanf(%s,name);if(strcmp(name,0”)!=0)strcpy(Tree-NextNodei-Name,name);printf(-nnt是否要修改性別:如果需要
49、就輸入1不需要修改就輸入0然后按Enter鍵繼續(xù)nt);scanf(%d,&flag);if(flag=1)(if(Tree-NextNodei-Kind=G|Tree-NextNodei-Kind=g)Tree-NextNodei-Kind=B;elseTree-NextNodei-Kind=G;printf(nnt子女的信息修改成功);break;caseD:printf(nnt本項(xiàng)服務(wù)到此結(jié)束);break;casen:break;default:printf(nnt對(duì)不起!你的選擇不在服務(wù)范圍之內(nèi)!);洛陽(yáng)理工學(xué)院課程設(shè)計(jì)報(bào)告24printf(nt請(qǐng)您再次選擇所需的服務(wù)項(xiàng)!);printf(nt謝謝合作!nt
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 幼兒園工作總結(jié)感恩每一天
- 2024年設(shè)備監(jiān)理師考試題庫(kù)含答案(綜合卷)
- 演藝經(jīng)紀(jì)人的工作總結(jié)
- 服裝行業(yè)的搭配顧問(wèn)工作總結(jié)
- 建材行業(yè)行政后勤工作總結(jié)
- 2025年高考?xì)v史一輪復(fù)習(xí)之文化傳承與文化創(chuàng)新
- 花藝裝飾行業(yè)美工工作技能總結(jié)
- 2024年設(shè)備監(jiān)理師考試題庫(kù)及答案【真題匯編】
- 2024消防安全知識(shí)教育總結(jié)范文(35篇)
- 農(nóng)村蓋房傷亡合同(2篇)
- 校車安全逃生技能培訓(xùn)學(xué)習(xí)
- (新版)電網(wǎng)規(guī)劃專業(yè)知識(shí)考試題庫(kù)(含答案)
- 學(xué)校心理危機(jī)干預(yù)流程圖
- 杏醬生產(chǎn)工藝
- 融資擔(dān)保業(yè)務(wù)風(fēng)險(xiǎn)分類管理辦法
- 年會(huì)抽獎(jiǎng)券可編輯模板
- 靜電場(chǎng)知識(shí)點(diǎn)例題結(jié)合
- 道德寶章·白玉蟾
- GB∕T 41170.2-2021 造口輔助器具的皮膚保護(hù)用品 試驗(yàn)方法 第2部分:耐濕完整性和黏合強(qiáng)度
- 防雷裝置檢測(cè)質(zhì)量管理手冊(cè)
- 水上拋石護(hù)坡施工方案
評(píng)論
0/150
提交評(píng)論