![數(shù)據(jù)結(jié)構(gòu)家譜管理系統(tǒng)_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/7/1e563205-cfc2-499c-a7f4-7c53c277bceb/1e563205-cfc2-499c-a7f4-7c53c277bceb1.gif)
![數(shù)據(jù)結(jié)構(gòu)家譜管理系統(tǒng)_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/7/1e563205-cfc2-499c-a7f4-7c53c277bceb/1e563205-cfc2-499c-a7f4-7c53c277bceb2.gif)
![數(shù)據(jù)結(jié)構(gòu)家譜管理系統(tǒng)_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/7/1e563205-cfc2-499c-a7f4-7c53c277bceb/1e563205-cfc2-499c-a7f4-7c53c277bceb3.gif)
![數(shù)據(jù)結(jié)構(gòu)家譜管理系統(tǒng)_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/7/1e563205-cfc2-499c-a7f4-7c53c277bceb/1e563205-cfc2-499c-a7f4-7c53c277bceb4.gif)
![數(shù)據(jù)結(jié)構(gòu)家譜管理系統(tǒng)_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/7/1e563205-cfc2-499c-a7f4-7c53c277bceb/1e563205-cfc2-499c-a7f4-7c53c277bceb5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、/題目:家譜資料管理/要求:家譜用于記錄某家族歷代家族成員的情況與關(guān)系?,F(xiàn)編制一個(gè)家譜資料管理軟件,/實(shí)現(xiàn)對(duì)一個(gè)家族所有的資料進(jìn)行收集整理。支持對(duì)家譜的增加,刪除,更新,統(tǒng)計(jì)等。/#include <stdio.h>#include <stdlib.h>#include <string.h>int MATEFLAG=0;typedef struct TreeNodeint Num; /記錄這個(gè)人擁有幾個(gè)兒女char Name20; /記錄這個(gè)人的姓名char Kind; /標(biāo)示節(jié)點(diǎn)的種類有女G男Bstruct TreeNode * NextNode20; /
2、記錄這個(gè)人的兒女struct TreeNode * Parent; /記錄這個(gè)節(jié)點(diǎn)的父節(jié)點(diǎn)TreeNode;void CreatTree(TreeNode *Tree);void OutPutAll(TreeNode *Tree);TreeNode * SearchTree(TreeNode *Tree,char name,int length);void MainMenue(TreeNode *Tree);void SubMenue1(TreeNode * Tree);void SubMenue2(TreeNode *Tree);void Change(TreeNode * Tree);vo
3、id AddNew(TreeNode * Tree);void OutPutMessage(TreeNode * Tree,char name,int length);/主函數(shù)void main()TreeNode *Tree;Tree=(TreeNode *)malloc(sizeof(TreeNode);Tree->Parent =NULL;strcpy(Tree->Name,"0"); MainMenue(Tree);/添加新的成員void AddNew(TreeNode * Tree)SubMenue2(Tree);/輸出副菜單void SubMenue
4、2(TreeNode *Tree) char c;int num;char name20;TreeNode * NewNode;getchar();while(1)system("cls");printf("t"); printf("nnt -*-請(qǐng)選擇你的操作-*- ");printf("nt-*-*-*-A:添加某個(gè)人的子女的信息-*-*-*-*- ");printf("nt-*-*-*-B:添加某個(gè)人配偶的信息-*-*-*-*-*- ");printf("nt-*-*-*-C:退
5、出-*-*-*-*-*-*-*-*-*-nt");c=getchar();switch(c)case 'A': printf("nnt請(qǐng)輸入那個(gè)人的名字:nt");scanf("%s",name);Tree=SearchTree(Tree,name,20);if(Tree=NULL)printf("nnt*該家譜圖中沒有%s這個(gè)人的信息請(qǐng)確認(rèn)是否輸入錯(cuò)誤*n",name);break;if(Tree->Parent=NULL&&Tree->NextNode0=NULL|Tree-&
6、gt;Parent!=NULL&&Tree->Name!=Tree->Parent->NextNode0->Name)printf("nnt%s至今還沒有配偶請(qǐng)先添加配偶",Tree->Name);break;if(Tree->Parent=NULL&&(Tree->Num>20|Tree->Num<0)Tree->Num=0;if(MATEFLAG=1) Tree=Tree->Parent;NewNode=(TreeNode *)malloc(sizeof(TreeNo
7、de);printf("nnt請(qǐng)輸入添加人員姓名:nt");scanf("%s",NewNode->Name);printf("nnt請(qǐng)輸入添加人員性別女G男B:nt");scanf("%1s",&NewNode->Kind);num=Tree->Num;NewNode->NextNode0=(TreeNode *)malloc(sizeof(TreeNode);NewNode->NextNode0=NULL;NewNode->Num=0;NewNode->Pare
8、nt=Tree;Tree->NextNodenum+1=NewNode;Tree->Num=Tree->Num+1; printf("nnt-子女的信息添加成功-");break;case 'B': printf("nnt請(qǐng)輸入那個(gè)人的名字:nt");scanf("%s",name);Tree=SearchTree(Tree,name,20);if(Tree->Parent!=NULL&&strcmp(Tree->Name,Tree->Parent->NextN
9、ode0->Name)=0|Tree->NextNode0!=NULL)printf("nnt已經(jīng)有了配偶");break;if(Tree=NULL)printf("nnt*該家譜圖中沒有%s這個(gè)人的信息請(qǐng)確認(rèn)是否輸入錯(cuò)誤*n",name);break;NewNode=(TreeNode *)malloc(sizeof(TreeNode);printf("nnt請(qǐng)輸入添加人員姓名:nt");scanf("%s",NewNode->Name);printf("nnt請(qǐng)輸入添加人員性別女G男
10、B:nt");scanf("%1s",&NewNode->Kind);NewNode->Parent=Tree;Tree->NextNode0=NewNode;break;case 'C': printf("nnt-本項(xiàng)服務(wù)到此結(jié)束-");break; case 'n': break;default: printf("nnt-對(duì)不起!你的選擇不在服務(wù)范圍之內(nèi)!- ");printf("nt-請(qǐng)您再次選擇所需的服務(wù)項(xiàng)!- ");printf(&quo
11、t;nt-謝謝合作!-nt");break;if (c='C'|c='c') /?break; printf("nnt-請(qǐng)按Enter鍵繼續(xù)操作-");getchar();getchar();/修改某個(gè)人的信息void Change(TreeNode * Tree) char name20;TreeNode * NewNode;printf("nt請(qǐng)輸入你要修改的人的信息:nt"); scanf("%s",name); NewNode=SearchTree(Tree,name,20);if(N
12、ewNode=NULL) printf("nnt*該家譜圖中沒有%s這個(gè)人的信息請(qǐng)確認(rèn)是否輸入錯(cuò)誤*n",name);return;else SubMenue1(NewNode);/輸出副菜單void SubMenue1(TreeNode * Tree)char c;int flag,i;char name20;char Parent220;TreeNode * NewNode;getchar();while(1)system("cls");printf("t"); printf("nnt -*-請(qǐng)選擇你的操作-*- &qu
13、ot;);printf("nt-*-*-*-A:修改個(gè)人的信息-*-*-*-*-*-*- ");printf("nt-*-*-*-B:修改父母的信息-*-*-*-*-*-*- ");printf("nt-*-*-*-C:修改兄弟姐妹的信息-*-*-*-*-*- ");printf("nt-*-*-*-D:修改子女的信息-*-*-*-*-*-*- ");printf("nt-*-*-*-E:修改配偶的信息-*-*-*-*-*-*- ");printf("nt-*-*-*-F:退出-*-*
14、-*-*-*-*-*-*-*-nt");c=getchar();switch(c)case 'A': 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(&q
15、uot;%d",&flag); if (flag=1)if(Tree->Kind='G'|Tree->Kind='g')Tree->Kind='B'else Tree->Kind='G'printf("nnt個(gè)人信息修改成功");break;case 'B':if(Tree->Parent=NULL) /判斷是不是頭節(jié)點(diǎn)printf("nt是這個(gè)家譜圖里最頂端的人沒有父母信息!",name); break;if (MATEFLA
16、G=1) /判斷是不是入贅或加入此間的if(Tree->Kind='G'|Tree->Kind='g') printf("nnt她是嫁入此間的所以父母信息不在家譜內(nèi)包括");elseprintf("nnt他是入贅此間的所以父母信息不在家譜內(nèi)包括");break;if(Tree->Parent->Kind='G'|Tree->Parent->Kind='g')strcpy(Parent0,"母親");strcpy(Parent1,&quo
17、t;父親");else strcpy(Parent0,"父親");strcpy(Parent1,"母親");printf("nnt請(qǐng)輸入%s要修改的姓名:如果不需要修改就輸入0然后按Enter鍵繼續(xù)nt",Parent0);scanf("%s",name);if(strcmp(name,"0")!=0)strcpy(Tree->Parent->Name,name);printf("nnt請(qǐng)輸入%s要修改的姓名:如果不需要修改就輸入0然后按Enter鍵繼續(xù)nt&qu
18、ot;,Parent1);scanf("%s",name);if(strcmp(name,"0")!=0)strcpy(Tree->Parent->NextNode0->Name,name); printf("nnt-父母的信息修改成功-");break;case 'C':NewNode=Tree->Parent;if(NewNode=NULL) /判斷是不是頭節(jié)點(diǎn)printf("nt是這個(gè)家譜圖里最頂端的人沒有兄弟姐妹信息!",name); break;if (MATEFL
19、AG=1) /判斷是不是入贅或加入此間的if(Tree->Kind='G'|Tree->Kind='g') printf("nnt她是嫁入此間的所以兄弟姐妹信息不在家譜內(nèi)包括");elseprintf("nnt他是入贅此間的所以兄弟姐妹信息不在家譜內(nèi)包括");break;if(NewNode->Num=1)printf("nnt沒有兄弟姐妹");break;elsefor(i=1;i<=NewNode->Num;i+)if(NewNode->NextNodei->
20、;Name!=Tree->Name)printf("nnt請(qǐng)輸入%s修改的姓名:如果不需要修改就輸入0然后按Enter鍵繼續(xù)nt",NewNode->NextNodei->Name);scanf("%s",name);if(strcmp(name,"0")!=0)strcpy(NewNode->NextNodei->Name,name);printf("nnt是否要修改性別:如果需要就輸入'1'不需要修改就輸入'0'然后按Enter鍵繼續(xù)nt");sca
21、nf("%d",&flag);if (flag=1)if(NewNode->NextNodei->Kind='G'|NewNode->NextNodei->Kind='g')NewNode->NextNodei->Kind='B'else NewNode->NextNodei->Kind='G' printf("nnt-兄弟姐妹的信息修改成功-");break;case 'D':if(Tree->Num=0)pri
22、ntf("nnt至今還沒有子女");break;if (Tree->Parent !=NULL)if (strcmp(Tree->Name,Tree->Parent->NextNode0->Name)=0) /如果他是入贅或者是嫁入的就需用配偶節(jié)點(diǎn)完成修改Tree=Tree->Parent;for(i=1;i<=Tree->Num;i+)printf("nnt請(qǐng)輸入%s修改的姓名:如果不需要修改就輸入0然后按Enter鍵繼續(xù)nt",Tree->NextNodei->Name);scanf(&qu
23、ot;%s",name);if(strcmp(name,"0")!=0)strcpy(Tree->NextNodei->Name,name);printf("nnt是否要修改性別:如果需要就輸入'1'不需要修改就輸入'0'然后按Enter鍵繼續(xù)nt");scanf("%d",&flag);if (flag=1)if(Tree->NextNodei->Kind='G'|Tree->NextNodei->Kind='g')
24、Tree->NextNodei->Kind='B'else Tree->NextNodei->Kind='G' printf("nnt-子女的信息修改成功-");break;case 'E':if(Tree->Parent!=NULL)if (Tree->NextNode0=NULL&&strcmp(Tree->Name,Tree->Parent->NextNode0->Name)!=0)printf("nnt至今還沒有配偶");b
25、reak;if (strcmp(Tree->Name,Tree->Parent->NextNode0->Name)=0)printf("nnt請(qǐng)輸入%s修改的姓名:如果不需要修改就輸入0然后按Enter鍵繼續(xù)nt",Tree->Parent->Name);scanf("%s",name);if(strcmp(name,"0")!=0)strcpy(Tree->Parent->Name,name);elseprintf("nnt請(qǐng)輸入%s修改的姓名:如果不需要修改就輸入0然后按E
26、nter鍵繼續(xù)nt",Tree->NextNode0->Name);scanf("%s",name);if(strcmp(name,"0")!=0)strcpy(Tree->NextNode0->Name,name);elseif(Tree->NextNode0=NULL)printf("nnt至今還沒有配偶");elseprintf("nnt請(qǐng)輸入%s修改的姓名:如果不需要修改就輸入0然后按Enter鍵繼續(xù)nt",Tree->NextNode0->Name);s
27、canf("%s",name);if(strcmp(name,"0")!=0)strcpy(Tree->NextNode0->Name,name); printf("nnt-配偶的信息修改成功-");break;case 'F': printf("nnt-本項(xiàng)服務(wù)到此結(jié)束-");break; case 'n': break;default: printf("nnt-對(duì)不起!你的選擇不在服務(wù)范圍之內(nèi)!-");printf("nt-請(qǐng)您再次選擇所
28、需的服務(wù)項(xiàng)!-");printf("nt-謝謝合作!-nt");break;if (c='F'|c='f')break; printf("nnt-請(qǐng)按Enter鍵繼續(xù)操作-");getchar();getchar();/輸出主菜單void MainMenue(TreeNode *Tree)char c;char name20;while(1)system("cls");printf("t"); printf("nnt -*-請(qǐng)選擇你的操作-*-");pr
29、intf("nt-A:輸入家譜信息建立多叉樹-");printf("nt-B:在家族中查找某人并輸出他或(她)的相應(yīng)信息-");printf("nt-C:添加新的成員-");printf("nt-D:輸出整個(gè)家譜信息-");printf("nt-E:修改某個(gè)人的信息-");printf("nt-F:退出整個(gè)程序-nt");c=getchar();switch(c)case 'A':TreeNode * NewNode;NewNode=(TreeNode *)m
30、alloc(sizeof(TreeNode);printf("nt請(qǐng)輸入姓名:nt");scanf("%s",Tree->Name);printf("nt請(qǐng)輸入性別女G男B:nt");getchar();scanf("%c",&(Tree->Kind);Tree->Parent=NewNode;Tree->Parent=NULL;CreatTree(Tree);printf("nt-家譜圖已經(jīng)建立成功-nn");printf("nnt-請(qǐng)按Enter鍵繼
31、續(xù)操作-");getchar();break;case 'B':if(strcmp(Tree->Name,"0")=0)printf("nt家譜圖的多叉樹尚未建立請(qǐng)先建立樹n");getchar();break;printf("nt請(qǐng)輸入你要查找的人的姓名:nt");scanf("%s",name);OutPutMessage(SearchTree(Tree,name,20),name,20); printf("nnt-*-*-*-*-*-*-*-*-*-*-nt"
32、;);getchar();break;case 'C':if(strcmp(Tree->Name,"0")=0)printf("nt家譜圖的多叉樹尚未建立請(qǐng)先建立樹n");getchar();break;AddNew(Tree);getchar();break;case 'D':if(strcmp(Tree->Name,"0")=0)printf("nt家譜圖的多叉樹尚未建立請(qǐng)先建立樹n");getchar();break;printf("nnt整個(gè)家譜的主要信
33、息如下:");OutPutAll(Tree);getchar();break;case 'E':if(strcmp(Tree->Name,"0")=0)printf("nt家譜圖的多叉樹尚未建立請(qǐng)先建立樹n");getchar();break;Change(Tree);getchar();break;case 'F': printf("nnt-本次服務(wù)到此結(jié)束-");printf("nt-歡迎下次使用-");printf("nt-謝謝-nn");b
34、reak;case 'n': break;default: printf("nnt-對(duì)不起!你的選擇不在服務(wù)范圍之內(nèi)!-");printf("nt-請(qǐng)您再次選擇所需的服務(wù)項(xiàng)!-");printf("nt-謝謝合作!-nt");getchar();break;if (c='F'|c='f')break;getchar();/創(chuàng)建樹void CreatTree(TreeNode *Node)int i;TreeNode *NewNode;NewNode=(TreeNode *)malloc(
35、sizeof(TreeNode); Node->NextNode0=NewNode;Node->NextNode0=NULL;/Node->Parent =NULL;printf("nt請(qǐng)輸入%s的子女的數(shù)目:nt",Node->Name); scanf("%d",&(Node->Num);printf("nt請(qǐng)輸入%s的配偶的姓名:nt",Node->Name);scanf("%s",NewNode->Name);if(Node->Num)=0&&a
36、mp;strcmp(NewNode->Name,"0")=0)return ;if (Node->Kind='G'|Node->Kind='g')NewNode->Kind='B'else NewNode->Kind='G'NewNode->Num=0;NewNode->NextNode0=NULL;Node->NextNode0=NewNode;Node->NextNode0->Parent=Node;for(i=1;i<=Node->N
37、um;i+)NewNode=(TreeNode *)malloc(sizeof(TreeNode);printf("nt請(qǐng)輸入%s的第%d子女的名字nt",Node->Name,i);scanf("%s",NewNode->Name);printf("nt請(qǐng)輸入%s的第%d子女的性別女G男B:nt",Node->Name,i);getchar();scanf("%c",&NewNode->Kind);NewNode->Num=0;NewNode->Parent=Node;
38、Node->NextNodei=NewNode;CreatTree(Node->NextNodei);/遍歷并輸出樹中的內(nèi)容void OutPutAll(TreeNode *Tree)int i, flag=0;printf("nt-*-*-*-*-*-*-*-*-*-");printf("nt姓名:%s 性別:",Tree->Name);if (Tree->Kind='G'|Tree->Kind='g')flag=1;printf("女");else printf(&qu
39、ot;男");if (!(Tree->NextNode0) printf("nt至今沒有配偶和子女n");return; if(flag=1)printf("nt丈夫 姓名:%s",Tree->NextNode0->Name);elseprintf("nt妻子 姓名:%s",Tree->NextNode0->Name);for(i=1;i<=Tree->Num;i+)printf("nt第%d個(gè)子女的姓名:%s 性別:",i,Tree->NextNodei-
40、>Name,Tree->NextNodei->Kind);if (Tree->NextNodei->Kind='G'|Tree->NextNodei->Kind='g')printf("女");else printf("男");printf("nt");for(i=1;i<=Tree->Num;i+)OutPutAll(Tree->NextNodei);/在樹中經(jīng)過遍歷查找某個(gè)人TreeNode * SearchTree(TreeNode *T
41、ree,char name,int length)int i;TreeNode *NewNode; if(strcmp(Tree->Name,name)=0)if(length=0) MATEFLAG=1;else MATEFLAG=0;return Tree;if(Tree->NextNode0=NULL)return NULL;for(i=0;i<=Tree->Num;i+)if (i=0) NewNode=SearchTree(Tree->NextNodei,name,0); else NewNode=SearchTree(Tree->NextNode
42、i,name,20);if (NewNode!=NULL) return NewNode; return NULL;/輸出已經(jīng)查找到的人的信息void OutPutMessage(TreeNode * Tree,char name,int length) int flag=0,i;TreeNode *NewNode; printf("nnt-*-*-*-*-*-*-*-*-*-*-");if(Tree=NULL)printf("nnt*該家譜圖中沒有%s這個(gè)人的信息請(qǐng)確認(rèn)是否輸入錯(cuò)誤*n",name); return;printf("nnt您所
43、要找的人已經(jīng)找到信息如下所示:");printf("nnt姓名:%st性別:",name); if (Tree->Kind='G'|Tree->Kind='g') flag=1; /標(biāo)記他(她)的性別printf("女");else printf("男"); NewNode=Tree->Parent;if (MATEFLAG=1)if(flag=1) printf("nnt她是嫁入此間的所以父母信息不在家譜內(nèi)包括");printf("nt丈夫 姓
44、名:%s",NewNode->Name);elseprintf("nnt他是入贅此間的所以父母信息不在家譜內(nèi)包括");printf("nt妻子 姓名:%s",NewNode->Name);if (NewNode->Num)>0) /判斷他(她)是否有孩子printf("nt的孩子的信息如下:"); /輸出他(她)的孩子的信息for(i=1;i<=NewNode->Num;i+)printf("nt姓名:%s 性別:",NewNode->NextNodei->Name);if (NewNode->NextNodei->Kind='G'|NewNode->Kind='
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 企業(yè)改造合同范本
- 2025年中國智能化節(jié)能裝置行業(yè)市場(chǎng)需求預(yù)測(cè)及投資戰(zhàn)略規(guī)劃報(bào)告
- 中介房子銷售合同范例
- 農(nóng)村電廠維修合同范本
- 業(yè)主委托拍攝合同范例
- 出售移動(dòng)廠房合同范本
- 供應(yīng)發(fā)票合同范本
- 中國一次性注射器市場(chǎng)全面調(diào)研及行業(yè)投資潛力預(yù)測(cè)報(bào)告
- 產(chǎn)品外銷合同范本
- 冷庫銷售安裝合同范本
- 政治校本課程
- 川2020J146-TJ 建筑用輕質(zhì)隔墻條板構(gòu)造圖集
- (完整)讀歌詞猜歌名
- 八年級(jí)下開學(xué)第一課主題班會(huì)
- 初中英語人教版 八年級(jí)上冊(cè) 單詞默寫表 漢譯英
- pcs-9611d-x說明書國內(nèi)中文標(biāo)準(zhǔn)版
- GB/T 1634.1-2004塑料負(fù)荷變形溫度的測(cè)定第1部分:通用試驗(yàn)方法
- 無人機(jī)航拍技術(shù)理論考核試題題庫及答案
- T∕CMATB 9002-2021 兒童肉類制品通用要求
- 工序勞務(wù)分包管理課件
- 暖通空調(diào)(陸亞俊編)課件
評(píng)論
0/150
提交評(píng)論