(完整word版)家譜管理系統_第1頁
(完整word版)家譜管理系統_第2頁
(完整word版)家譜管理系統_第3頁
(完整word版)家譜管理系統_第4頁
(完整word版)家譜管理系統_第5頁
已閱讀5頁,還剩23頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、洛陽理工學院課程設計報告課程名稱數據結構課程設計設計題目家譜管理系統專業計算機科學與技術班級B150405學號B15080822姓名宋士龍完成日期2016年12月30計課程設計任務書設計題目:家譜管理系統設計內容與要求:【問題描述】:實現具有下列功能的家譜管理系統1) .輸入文件以存放最初家譜中各成員的信息,成員的信息中均應包含以下內容:姓名、出生日期、婚否、地址、健在否、死亡日期(若其已死亡),也可附加其它信息、但不是必需的。2) .實現數據的存盤和讀盤。3) .顯示家譜。4) .按照出生日期查詢成員名單。5) .按照姓名查詢,輸出成員信息(包括其本人、父親、孩子的信息)。6).修改某成員信

2、息。【基本要求】:界面要求:有合理的提示,每個功能可以設立菜單,根據提示,可以完成相關的功能要求。存儲結構:學生自己根據系統功能要求自己設計,但是要求相關數據要存儲在數據文件中。測試數據:要求使用1、全部合法數據;2、局部非法數據。進行程序測試,以保證程序的穩定。測試數據及測試結果請在上交的資料中寫明。指導教師:年月日課程設計評語成績:指導教師:年月日洛陽理工學院課程設計報告1、算法思想本程序是一個管理家譜的系統,通過這個系統可以對家族成員進行創建、顯示、查找、修改、以及保存家譜和讀取家譜功能。該系統分為以下幾個模塊,分別是:創建家譜,顯示家譜、按姓名和生日查找家庭成員、修改家譜、存盤、讀盤以

3、及退出系統。本程序用到的存儲形式為多叉樹,因為家譜中每個人既有父母又有孩子,而且孩子的個數并不確定,所以用多叉樹來存儲最為合適。用多叉樹來存儲,就用用到多叉樹的遞歸創建及遞歸遍歷。因為是多叉樹,所以遍歷時用廣度優先搜索合適。本函數最主要的思想就是遞歸調用,每個子函數中都會用到遞歸。定義結構體時給定指針數組的最大容量,來規定家譜中最多可以存多少人。定義一個家族樹的指針變量用來當每個子函數的參數,從而將其返回到主函數中。以下時算法思想流程圖:、模塊劃分1.intmain():主函數2.voidCreatTree(TreeNode*Tree)創建家族樹3.voidOutPutAll(TreeNode

4、*Tree):顯示家譜4.voidMenue(TreeNode*Tree):主菜單5.voidSubMenue1(TreeNode*Tree)副菜單(修改選項菜單)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、按姓名查找到的家譜成洛陽理工學院課程設計報告2員10. voidOutPutMessage1(TreeNode*Tree,charbirth,intlength):輸出按生日查找到的家譜成員11. voidSaveFamily(TreeNode*root):保存家譜12. voidReadFamily(TreeNode*root):讀取家譜三、數據結構typedefstructTreeNode(intChildNum;/記錄這個人擁有幾個兒女charName20;/記錄這個人的姓名charbirthday20;/生日intmarriage;/婚否(1表示結婚,0表示沒結婚)intdeath;/

6、生死(1表示活著,0表示過世)charKind;/標示節點的種類有女G男Bcharaddress100;/住址charlivemassage50;/死亡日期(如果其已經死亡)structTreeNode*NextNode20;/記錄這個人的兒女structTreeNode*Parent;記錄這個節點的父節點TreeNode,*tree;四、測試第一組數據為:爺爺,奶奶,爸爸,媽媽,我,二叔,二嬸,姐姐,三叔,三嬸,弟弟一共三代11個人。其中爺爺是根節點,奶奶為爺爺的配偶,同時也是爺爺的第一個后繼節點。爸爸,二叔,三叔為爺爺的子女。爸爸的配偶是媽媽,爸爸的子女是我。二叔的配偶是二嬸,子女是姐姐。

7、三叔的的配偶是三嬸,三叔的的子女是弟弟。進入程序之后,首先進行創建家譜,然后進行存盤,之后進行修改和查詢等步驟。退出程序在進入程序時,進行讀盤。之后在進行其他操作,程序完成之后退出即可。洛陽理工學院課程設計報告3第一組數據測試截圖為:-牛掌*虹廿*一*-*,*“n*訴李姓名:蕾雀出生日ffl;1966.05.0&家庭住址:由奈省臨沂市性割;B B 男衰子姓名:媽媽是否健在 n-n-健在.0 0去世L1簫1個子女的姓君;我出生日期;1996,10.23家庭住扯:山東皆臨沂市性別B男tt*-*#*tt*-*#*-n=*#-n=*#-*-#*-*-#*-*-*-*#*#姓名:我出生日期:1為 6 6

8、 一1Q,就冢露住址:山東省臨折市性割:B勇至今沒有配偶和子女w*-w*-w*w*-_-_林率_-*樹*w*w*件*徒名:姐姐出生日a:1991.02.14家庭住址,山東省陸滑市性別:G女至今沒有配隅和于女!CA,U5ersfldirTiinDkTQpicech5ng.rx-一*-一一一-*豐*-一*-一一一-避名:爺爺出生日:1944.09.20慕庭住址:山奈省臨訴市性別:妻子姓名:蠣剃是否值在健在-卜去世L0盆1個子女的姓名;爸琶出生日期:19.阿M冢女存圮:山東省臨折市性別E男第個子女的姓宅:二叔出生日期:19沌一呻一前家庭住址:山親省臨沂市性別 R R 男描,中子女的姓名;三叔出生日期

9、-1第上旎,14槌家強住址:山東省陸祈市性別B男是否便在O健在.5 去世L0是否蕓在U-登在,是否健莊n-健茂,是否豈在門-健在,。-.七廿:,00-去世)10(Fiffii0圖1家族樹是否健在印-舞在.。-去世:1 1是否謎在(1-更在,L是否健在U-舞在.卜會世:1 1姓名:二叔出生日S0J97D.06.0&家庭住址1由京省陸折市妻子姓名;二坤是否健在口-健在,卜去世);1第1個子女的姓名:姐旭出生日期=1991-02.1991-02.14家庭住址:山茱者臨沂市性別:R男性丹施女是否嚏在血箜在A 去世,】是否健在U-健在.A 去世狂 i i是否暨在血哩在.仍去世】洛陽理工學院課程設計報告4

10、*=t*3*姓名:三叔出生目期:1977.02.148家庭住址:山東者臨沂市性別:E身妻子排名:一.岬是杏健石(1健在.卜去世)1童1個子女的姓君;第弟出生百旃:WOOL臨能靠吭存&山東省臨所市性別E男-*-一一-*=!*-一!*一一-更敦拘音半:弟茂出生日凌:期1.Q3.費贏庭住址:山東省I與訴市.性別;史身.是否博在1-舞在.A 去由:1 1W*W*I-3-3IVJIHxTvTJI圖2顯示家譜是否健在O理在.5 去世 J J:1是否健在印-舞在.。-去世:1 1洛陽理工學院課程設計報告5CUsersWifninDesktopkecheng.exe*+*+迎使用家族管廷系統b*s*g*土麗入

11、家譜信息建立例日:翰出整個家潔佶息。;貌出三日期在我其人D:按姓名查找.某人E:修改芹個人的信息F;存盤&茗盤H;退出座中程序請輸入你要直找的人的姓名:胡弟*-申申申 1您所要找的大己經找到信息如下所示:姓名:弟弟出主日朔成001一。咨.懿家陸住址:山東省臨折市性刑 5 輿母親姓名:三辭是否健在 u-u-在,o-ifi)o-ifi):1 1父親姓名;三靚誨裙至今還沒有配i禺和核于申*4申4申4*4圖3按照姓名查找家族成員C:U5FrsadminDe3ktcipicechcngBexe虹*蛭率率*歡迎使用家族首理.系統甘*版妃輸入家漕信息建立樹B;輸出盼辛家譜信息C:生三岐直改ELD;瑟姓名查找

12、某人修改某個人的信息F:存盤G;讀盤U:退出整個程序*昵存家請*輸KX件名及保存位置eg;D;Mampl.txt):D:WJI.FI;.tst新建丈件成功.艾件及其息役為:DAJIAPLr.txt圖4存盤第二組數據為:洛陽理工學院課程設計報告6第二組數據測試截屏為:C:UsersadminDe5ktopkecheng.exe=率一-請炫擇你的操作-一4*-A!修改個人的信 ft*4)率*季*B:寇喪玄母的宿,*-*-?C:修改子女的信息*率*-*-D:退出-*-一*雄*畢圖5修改家族成員的信息圖4王家家族樹IX洛陽理工學院課程設計報告7rfC:ysei3adminDesktopkecheng.

13、eKeX*i青選擇你的操作*-一-率率A!修改個人的信息*4*-*-*-:修改父母的站息-*整B_-率率*-C;瞥改子女的信息*專f*-*一一一*D!退出-*-一*4*=*請簌入悼改的姓名;如果不需蓮修改就都久%然后援土21憾箍續王小二是否要慘改性別:如果需萼就錯入不需要椽改枕輸入熟后按Enter筮蜓續0請輸入恰改的出生日期:加果不需蔓修改就輸入定薄后按EtU#鍵縫續0清輸入修改的家眶地址:如果不需要修改就輸入娥后按EnMr鍵爵續0個人信息修改成功清按Em歆!爆續探作卿拼音半:圖6修改某個人的具體信息您聽要找的人己經找到信息如下所示:姓名:王小二出生日期:WQ如家庭住扯:落陽性劇:E男圖7按照

14、生日查找某人一杵*加*44歡迎使用家族營理系笑*D:按姓名查我某人E:穆改窠個人的信息F:存盤讀盤N:溫出整個程序一4:輸入家譜信息建立材B;輸出聚個家譜信息按出生日期查找某人洛陽理工學院課程設計報告8C;05ersMadminDe5ktopMtecheng.exe*狄迎使用家族if珪系Ert*D:撞姓名白找某人E:慘改某個人的信息F:存查G:詼塑H:退出整個程序*讀恩家潔*忡$*簌入文件名及其網徑,以便從中漆耽露譜:丈件遂其路樣何: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/保存的文件名的最大長度intFLAG=0;inta=1;typedefstructTreeNodeintChildNum;/記錄這個人擁有幾個兒女charName20;/記錄這個人的姓名charbirthday20;/生日intmarriage;/婚否(1表示結婚,0表示沒結婚)intdeath;/生死(1表示活著,0表示過世)/輸入家譜信息建立村&船出整佇家諳信息C:按出生期查援某氏洛陽理工學院課程設計報告9charKind;/標示節點的種類有女G男Bch

17、araddress100;/住址charlivemassage50;/死亡日期(如果其已經死亡)structTreeNode*NextNode20;/記錄這個人的兒女structTreeNode*Parent;記錄這個節點的父節點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()/主函數(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*歡迎使用家族管理系統

20、*nn);printf(nttA:輸入家譜信息建立樹);洛陽理工學院課程設計報告10printf(nttB:輸出整個家譜信息);printf(nttC:按出生日期查找某人);printf(nttD:按姓名查找某人);printf(nttE:修改某個人的信息);printf(nttF:存盤);printf(nttG昴);printf(nttH:退出整個程序nt);c=getchar();switch(c)(caseA:TreeNode*NewNode;NewNode=(TreeNode*)malloc(sizeof(TreeNode);printf(nt請輸入姓名:);scanf(%s”,Tre

21、e-Name);printf(nt請輸入性別女G男B:);getchar();scanf(%c”,&(Tree-Kind);Tree-Parent=NewNode;Tree-Parent=NULL;/CreatTree(Tree);/printf(nt家譜圖已經建立成功nn);printf(nnt請按Enter鍵繼續操作);getchar();break;caseB:if(strcmp(Tree-Name,0”)=0)(printf(nt家譜圖的多叉樹尚未建立請先建立樹n);getchar();break;printf(nnt整個家譜的主要信息如下:);OutPutAll(Tree);getc

22、har();break;caseC:if(strcmp(Tree-birthday,0”)=0)(printf(nt家譜圖的多叉樹尚未建立請先建立樹n);getchar();break;洛陽理工學院課程設計報告11printf(nt請輸入你要查找的出生日期:,洛陽理工學院課程設計報告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、樹尚未建立請先建立樹n);getchar();break;printf(nt請輸入你要查找的人的姓名: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家譜圖的多叉樹尚未建立請先建立樹getchar();break;n);Change(Tree);getchar();break;caseF:if(strcmp(Tree-Name,0”)=0)pri

24、ntf(nt家譜圖的多叉樹尚未建立請先建立樹getchar();break;n);SaveFamily(Tree);getchar();break;caseG:/*if(strcmp(Tree-Name,0)=0)printf(nt家譜圖的多叉樹尚未建立請先建立樹getchar();break;n);洛陽理工學院課程設計報告13洛陽理工學院課程設計報告14*/ReadFamily(&Tree);getchar();break;caseH:printf(nnt本次服務至V此結束);printf(nt歡迎下次使用);printf(nt謝謝nn);break;casen:break;default:

25、printf(nnt對不起!你的選擇不在服務范圍之內!);printf(nt請您再次選擇所需的服務項!);printf(nt謝謝nt);getchar();break;if(c=H|c=f)break;getchar();voidCreatTree(TreeNode*Node)/創建樹inti;TreeNode*NewNode;NewNode=(TreeNode*)malloc(sizeof(TreeNode);Node-NextNode0=NewNode;Node-NextNode0=NULL;printf(nt請輸入出生日期:);scanf(%s”,Node-birthday);print

26、f(nt請輸入家庭住址:);getchar();scanf(%s,Node-address);printf(nt請輸入是否建在(1-是或0-否):”);scanf(%d”,&(Node-death);if(Node-death=0)printf(nt請輸入去世日期:);scanf(%s”,Node-livemassage);elseif(Node-death=1)printf(nt仍然建在);printf(nt請輸入%s的配偶的姓名(輸入0代表沒結婚):,Node-Name);scanf(%s,NewNode-Name);洛陽理工學院課程設計報告15if(strcmp(NewNode-Name

27、,0)!=0)(printf(t請輸入配偶的出生日期:);scanf(%s”,NewNode-birthday);printf(nt請輸入家庭住址:);getchar();scanf(%s,NewNode-address);printf(nt請輸入是否建在(1-是或0-否):”);scanf(%d”,&(NewNode-death);if(NewNode-death=0)(printf(nt請輸入去世日期:);scanf(%s,NewNode-livemassage);elseif(NewNode-death=1)printf(-nt仍然建在);printf(nt請輸入%s的子女的數目(當子女

28、輸入0時便停止輸入該成員有關信息):,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請輸入%s的第%d子女的名字:,Node-Name,i);scanf(%s,NewNode-Name);printf(nt請輸入%s的第%d子女的性別女G男B:,Node-Name,i);getchar();scanf(%c,&NewNode-Kind);NewNode-ChildNum=-1;NewNode-Parent=Node;Node-NextNodei=NewNode;CreatTree(Node-NextNodei);/從子女的數目開始voidOutPutAll(TreeNode*Tree)(

30、洛陽理工學院課程設計報告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至今沒有配偶和子女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個子女的姓名:%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性洛陽理工學院課程設計報告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*該家譜圖中沒有%s這個人的信息請確認是否輸入錯誤*n,name);return;printf(nnt您所要找的人已經找到信息如下所示:);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性/標記他(她)的性別洛陽理工學院課程設計報告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她是嫁入此家族的所以親生父母信息不在家譜內包括);printf(nt丈夫姓名:%s”,NewNode-Name);elseprintf(-nnt他是入贅此家族的所以親生父母信息不在家譜內包括);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)/判斷它是不是根節點如果是的話就沒有父母兄弟信息printf(nt是這個家譜圖里最年長的人,name);elseif(NewNode-Kind=G|NewNode-Kind=g)判斷父親節點是父親還是母親printf(nt母親姓名:s”,NewNode-Name);/輸出他(她)的父母親的信息printf(nt父親姓洛陽理工學院課程設計報告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至今還沒有孩子,name);elseprintf(nt%s至今還沒有配偶和孩子n”,Tree-Name);TreeNode*SearchTree1(TreeNode*Tree,charbirth,intlength)inti;TreeNode*NewNode;if(strcmp(Tree-birthday,birth)=0)洛陽理工

40、學院課程設計報告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*該家譜圖中沒有出生日期為%s這個人的信息請確認是否輸入錯誤*n,birth);return;printf(nnt您所要找的人已經找到信息如下所示:);printf(nnt姓名:%s出生日期:s家庭住址:s性別:%c”,Tree-Name,Tree-birthday,Tree-address,Tree-Kind);if(Tree-Kind=G|Tree-Kind=g)flag=1;/標記他(她)的性別printf(女);elseprintf(男);voidChange(TreeNode*T

42、ree)/修改某個人的信息charname20;TreeNode*NewNode;printf(nnt*洛陽理工學院課程設計報告21printf(nt請輸入你要修改的人的姓名:nt);scanf(%s”,name);NewNode=SearchTree(Tree,name,20);if(NewNode=NULL)printf(nnt*該家譜圖中沒有%s這個人的信息請確認是否輸入錯誤*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-*-請選擇你的操作-*-);printf(nt-*-*-*-A:修改個人的信息-*-*-*-*-*-*-);printf(nt-*-*-*-B:修改父母的信息-*-*-*-*-*-*-);printf(nt-*-*-*-C:修改子女的信息-*-*-*-*-*-*-);printf(nt-*-*-*-D:退出-*-*-*-*-*-*-*-*-*-nt);c=getchar();switch(c)c

44、aseA:printf(-nnt請輸入修改的姓名:如果不需要修改就輸入0然后按Enter鍵繼續nt);scanf(%s,name);if(strcmp(name,0)!=0)strcpy(Tree-Name,name);printf(-nnt是否要修改性別:如果需要就輸入1不需要修改就輸入0然后按Enter鍵繼續nt);scanf(%d”,&flag);if(flag=1)(if(Tree-Kind=G|Tree-Kind=g)Tree-Kind=B;elseTree-Kind=G;洛陽理工學院課程設計報告22printf(nnt請輸入修改的出生日期:如果不需要修改就輸入0然后按Enter鍵繼

45、續nt);scanf(%s”,birth);if(strcmp(birth,0”)!=0)strcpy(Tree-birthday,birth);printf(-nnt請輸入修改的家庭地址:如果不需要修改就輸入0然后按Enter鍵繼續nt);scanf(%s,address1);if(strcmp(address1,0”)!=0)strcpy(Tree-address,address1);printf(nnt個人信息修改成功);break;caseB:if(Tree-Parent=NULL)/判斷是不是頭節點(printf(nt是這個家譜圖里最頂端的人沒有父母信息!,name);break;i

46、f(FLAG=1)判斷是不是入贅或加入此間的(if(Tree-Kind=G|Tree-Kind=g)(printf(nnt她是嫁入此間的所以父母信息不在家譜內包括);else(printf(-nnt他是入贅此間的所以父母信息不在家譜內包括);break;if(Tree-Parent-Kind=G|Tree-Parent-Kind=g)(strcpy(Parent0,”母親);strcpy(Parent1,”父親);else(strcpy(Parent0,”父親);strcpy(Parent1,”母親);printf(nnt請輸入%s要修改的姓名:如果不需要修改就輸入0然后按Enter鍵繼續nt

47、”,Parent0);scanf(%s”,name);if(strcmp(name,0”)!=0)strcpy(Tree-Parent-Name,name);printf(-nnt請輸入%s要修改的姓名:如果不需要修改就輸入0洛陽理工學院課程設計報告23然后按Enter鍵繼續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至今還沒有子女);b

48、reak;if(Tree-Parent!=NULL)if(strcmp(Tree-Name,Tree-Parent-NextNode0-Name)=0)/如果他是入贅或者是嫁入的就需用配偶節點完成修改(Tree=Tree-Parent;for(i=1;iChildNum;i+)(printf(-nnt請輸入s修改的姓名:如果不需要修改就輸入0然后按Enter鍵繼續nt,Tree-NextNodei-Name);scanf(%s,name);if(strcmp(name,0”)!=0)strcpy(Tree-NextNodei-Name,name);printf(-nnt是否要修改性別:如果需要

49、就輸入1不需要修改就輸入0然后按Enter鍵繼續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本項服務到此結束);break;casen:break;default:printf(nnt對不起!你的選擇不在服務范圍之內!);洛陽理工學院課程設計報告24printf(nt請您再次選擇所需的服務項!);printf(nt謝謝合作!nt

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論