家谱标准管理专业系统设计方案报告_第1页
家谱标准管理专业系统设计方案报告_第2页
家谱标准管理专业系统设计方案报告_第3页
家谱标准管理专业系统设计方案报告_第4页
家谱标准管理专业系统设计方案报告_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目录第一章绪论 2第二章 需求分析 32.1题目 32.2设计任务 32.3数据测试 3第三章概要设计 33.1设计思想 33.2实现办法 4第四章详细设计 44.1功能构想 44.2界面设计 44.3增长成员 54.3.1添加子女 54.3.2添加配偶 54.4修改成员 64.4.1修改个人信息 64.4.2修改父母信息 64.4.3修改兄弟姐妹信息 64.4.4修改子女信息 7第五章调试分析 7第六章测试成果 9致谢 10参照文献 11附录 11第一章绪论当前,诸多家庭家谱丢失,家庭某些关系混乱,为了避免这一问题,制定一家谱程序。家谱用于记录某家族历代家族成员状况与关系,实现对一种家族所有资料进行收集整顿。支持对家谱存储、更新、查询、记录等操作。并用计算机永久储存家族数据,以便随时调用。需求分析2.1题目家谱管理系统2.2设计任务系统总体阐明:以树形构造存储家族信息,只考虑三代(祖父,爸爸,叔叔,姑姑,自己,兄弟姐妹,堂兄弟姐妹),只考虑每个人有0或者1个兄弟姐妹状况。注意每个结点构造。记录记录家族成员人数,查询家族成员辈份。完毕功能详细阐明:1.输入家族成员状况,建立树构造(涉及创立二叉树);2.记录家族成员人数和每一种家庭成员人数(涉及树遍历);3.查询家族成员辈份状况(任意输入两个家庭成员,查询她们关系,父子,祖孙,兄弟,堂兄弟,共同祖先)。4.选做,考虑每个人有各种兄弟姐妹状况。2.3数据测试测试数据有:田迎新陈瑞英田紫藤田紫恒孙超李美霖……..第三章概要设计3.1设计思想创立一棵树,存储家庭关系,数据类型有intNum;//记录这个人拥有几种子女 charName[20];//记录这个人姓名 charSex;//标示节点种类有女(0)男(1) structTreeNode*NextNode[20];//记录这个人子女 structTreeNode*Parent;//记录这个节点父节点3.2实现办法完毕功能函数有voidCreatTree(TreeNode*Tree);//创立树voidOutPutAll(TreeNode*Tree);//遍历并输出树中内容voidfirstoftxt();//写入文献开始信息voidofAll(TreeNode*Tree);//写入文献函数voidifAll();//读取文献函数TreeNode*SearchTree(TreeNode*Tree,charname[],intlength);//查找结点函数voidMainMenue(TreeNode*Tree);//主菜单voidSubMenue1(TreeNode*Tree);//修改成员信息菜单voidSubMenue2(TreeNode*Tree);//添加新成员菜单voidChange(TreeNode*Tree);//修改成员信息voidAddNew(TreeNode*Tree);//添加新成员voidOutPutMessage(TreeNode*Tree,charname[],intlength);//输出已经查找到人信息第四章详细设计4.1功能构想构想好总体规划之后,便开始设计程序中需要用到各个功能函数,初步构想是要先实现最基本几项功能,其中数据操作有:增长成员,修改成员资料,删除成员;数据存取有:打开家谱,新建家谱,保存家谱;数据查询有:查看某代信息,按姓名查找,查当作员关系,等等。4.2界面设计cout<<"\n\n\t*****请选取你操作****"; cout<<"\n\t1:输入家谱信息建立多叉树"; cout<<"\n\t2:在家族中查找某人并输出她或(她)相应信息"; cout<<"\n\t3:添加新成员"; cout<<"\n\t4:输出整个家谱信息"; cout<<"\n\t5:修改某个人信息";cout<<"\n\t6:家谱信息存入文献"; cout<<"\n\t7:读取家谱信息文献"; cout<<"\n\t8:退出整个程序\n\t";if(选取1){CreatTree(TreeNode*Tree);}Elseif(选取2){OutPutMessage(TreeNode*Tree,charname[],intlength);}Elseif(选取3){AddNew(TreeNode*Tree);}Elseif(选取4){OutPutAll(TreeNode*Tree);}Elseif(选取5){Change(TreeNode*Tree);}Elseif(选取6){ofAll(TreeNode*Tree);}Elseif(选取7){ifAll();}Else{exit(0);}4.3增长成员4.3.1添加子女 NewNode=newTreeNode;cout<<"\n\n\t请输入添加人员姓名:"; cin>>NewNode->Name; cout<<"\n\n\t请输入添加人员性别女(0)男(1):"; cin>>NewNode->Sex; num=Tree->Num; NewNode->NextNode[0]=newTreeNode; NewNode->NextNode[0]=NULL; NewNode->Num=0; NewNode->Parent=Tree; Tree->NextNode[num+1]=NewNode; Tree->Num=Tree->Num+1; cout<<"\n\n\t子女信息添加成功";4.3.2添加配偶 NewNode=newTreeNode; cout<<"\n\n\t请输入添加人员姓名:"; cin>>NewNode->Name; cout<<"\n\n\t请输入添加人员性别女(0)男(1):"; cin>>NewNode->Sex; NewNode->Parent=Tree; Tree->NextNode[0]=NewNode;4.4修改成员4.4.1修改个人信息cout<<"\n\n\t请输入修改姓名(如果不需要修改就输入'0',然后按Enter键继续):\n";cin>>name;if(strcmp(name,"0")!=0)strcpy(Tree->Name,name);cout<<"\n\n\t与否要修改性别:(如果需要就输入'1',不需要修改就输入'0'然后按Enter键继续):\n";cin>>flag;if(flag==1){ if(Tree->Sex=='0') Tree->Sex='1'; elseTree->Sex='0';}4.4.2修改父母信息cout<<"\n\n\t请输入"<<Parent[0]<<"要修改姓名(如果不需要修改就输入'0',然后按Enter键继续):\n";cin>>name;if(strcmp(name,"0")!=0) strcpy(Tree->Parent->Name,name);cout<<"\n\n\t请输入"<<Parent[1]<<"要修改姓名(如果不需要修改就输入'0',然后按Enter键继续):\n";cin>>name;if(strcmp(name,"0")!=0) strcpy(Tree->Parent->NextNode[0]->Name,name);4.4.3修改兄弟姐妹信息cout<<"\n\n\t请输入"<<NewNode->NextNode[i]->Name<<"修改姓名(如果不需要修改就输入'0',然后按Enter键继续):\n";cin>>name;if(strcmp(name,"0")!=0) strcpy(NewNode->NextNode[i]->Name,name); cout<<"\n\n\t与否要修改性别(如果需要就输入'1'不需要修改就输入'0'然后按Enter键继续):\n";cin>>flag;if(flag==1){ if(NewNode->NextNode[i]->Sex=='0') NewNode->NextNode[i]->Sex='1'; elseNewNode->NextNode[i]->Sex='0';}4.4.4修改子女信息cout<<"\n\n\t请输入"<<Tree->NextNode[i]->Name<<"修改姓名(如果不需要修改就输入'0',然后按Enter键继续):\n";cin>>name;if(strcmp(name,"0")!=0) strcpy(Tree->NextNode[i]->Name,name);cout<<"\n\n\t与否要修改性别(如果需要就输入'1',不需要修改就输入'0'然后按Enter键继续):\n";cin>>flag;if(flag==1){ if(Tree->NextNode[i]->Sex=='0') Tree->NextNode[i]->Sex='1'; else Tree->NextNode[i]->Sex='0';}第五章调试分析1.进入系统2.建立家谱3.查看信息4.添加成员5.修改信息第六章测试成果爸爸姓名田迎新妈妈姓名陈瑞英姐姐田紫藤姐夫孙超本人田紫恒李美霖致谢感谢孙红艳教师辛苦辅导与教诲,让我学到了诸多知识,提高了很大能力。与此同步,也感谢教师为我辛苦验收课设,耐心解说,让我也受益匪浅。此后,我一定会努力学习,用我实际行动来回报家长,感谢我教师,为学校争光,努力为咱们国家,贡献出一份微薄贡献!参照文献[1]《数据构造》C++语言版严蔚敏吴伟民编著清华大学出版社[2]《数据库数据构造软件工程课程设计指引及习题解答》徐志才方贤文刘士喜编北京师范大学出版社[3]《C++语言程序设计》何钦铭颜晖主编高等教诲出版社附录#include<iostream.h>#include<string.h>#include<stdio.h>//getchar可以将键入信息存到缓冲区,按Enter键将进行输入#include<stdlib.h>//system头文献,exit头文献#include<fstream.h>intMATEFLAG=0;typedefstructTreeNode{ intNum;//记录这个人拥有几种子女 charName[20];//记录这个人姓名 charSex;//标示节点种类有女(0)男(1) structTreeNode*NextNode[20];//记录这个人子女 structTreeNode*Parent;//记录这个节点父节点}TreeNode;voidCreatTree(TreeNode*Tree);//创立树voidOutPutAll(TreeNode*Tree);//遍历并输出树中内容voidfirstoftxt();//写入文献开始信息voidofAll(TreeNode*Tree);//写入文献函数voidifAll();//读取文献函数TreeNode*SearchTree(TreeNode*Tree,charname[],intlength);//查找结点函数voidMainMenue(TreeNode*Tree);//主菜单voidSubMenue1(TreeNode*Tree);//修改成员信息菜单voidSubMenue2(TreeNode*Tree);//添加新成员菜单voidChange(TreeNode*Tree);//修改成员信息voidAddNew(TreeNode*Tree);//添加新成员voidOutPutMessage(TreeNode*Tree,charname[],intlength);//输出已经查找到人信息//主函数voidmain(){ TreeNode*Tree; Tree=newTreeNode; Tree->Parent=NULL; strcpy(Tree->Name,"0");MainMenue(Tree);}//添加新成员voidAddNew(TreeNode*Tree){ SubMenue2(Tree);}//输出副菜单voidSubMenue2(TreeNode*Tree){charc; intnum; charname[20]; TreeNode*NewNode; while(1) { system("cls"); cout<<"\t"; cout<<"\n\n\t*****请选取你操作****"; cout<<"\n\t***1:添加某个人子女信息****"; cout<<"\n\t***2:添加某个人配偶信息-*****"; cout<<"\n\t***3:退出-*********\n\t"; cout<<"请输入:"; cin>>c; switch(c) { case'1': cout<<"\n\n\t请输入那个人名字:"; cin>>name; Tree=SearchTree(Tree,name,20); if(Tree==NULL) { cout<<"\n\n\t****该家谱图中没有"<<name<<"这个人信息,请确认与否输入错误*****\n"; break; } if(Tree->Parent==NULL&&Tree->NextNode[0]==NULL||Tree->Parent!=NULL&&Tree->Name!=Tree->Parent->NextNode[0]->Name) { cout<<"\n\n\t"<<Tree->Name<<"至今还没有配偶请先添加配偶!"; break; } if(Tree->Parent==NULL&&(Tree->Num>20||Tree->Num<0)) Tree->Num=0; if(MATEFLAG==1) Tree=Tree->Parent; NewNode=newTreeNode; cout<<"\n\n\t请输入添加人员姓名:"; cin>>NewNode->Name; cout<<"\n\n\t请输入添加人员性别女(0)男(1):"; cin>>NewNode->Sex; num=Tree->Num; NewNode->NextNode[0]=newTreeNode; NewNode->NextNode[0]=NULL; NewNode->Num=0; NewNode->Parent=Tree; Tree->NextNode[num+1]=NewNode; Tree->Num=Tree->Num+1; cout<<"\n\n\t子女信息添加成功"; break; case'2': cout<<"\n\n\t请输入那个人名字:"; cin>>name; Tree=SearchTree(Tree,name,20); if(Tree->Parent!=NULL&&strcmp(Tree->Name,Tree->Parent->NextNode[0]->Name)==0||Tree->NextNode[0]!=NULL) { cout<<"\n\n\t已有了配偶"; break; } if(Tree==NULL) { cout<<"\n\n\t****该家谱图中没有"<<name<<"这个人信息,请确认与否输入错误*****\n"; break; } NewNode=newTreeNode; cout<<"\n\n\t请输入添加人员姓名:"; cin>>NewNode->Name; cout<<"\n\n\t请输入添加人员性别女(0)男(1):"; cin>>NewNode->Sex; NewNode->Parent=Tree; Tree->NextNode[0]=NewNode; break; case'3': cout<<"\n\n\t本项服务到此结束"; break; case'\n': break; default: cout<<"\n\n\t对不起!你选取不在服务范畴之内!"; cout<<"\n\t请您再次选取所需服务项!"; cout<<"\n\t谢谢合伙!\n\t";break; } if(c=='3') break; }}//修改某个人信息voidChange(TreeNode*Tree){charname[20]; TreeNode*NewNode; cout<<"\n\t请输入你要修改人信息:";cin>>name; NewNode=SearchTree(Tree,name,20); if(NewNode==NULL){ cout<<"\n\n\t****该家谱图中没有"<<name<<"这个人信息,请确认与否输入错误*****\n"; return; } else { SubMenue1(NewNode); }}//输出副菜单voidSubMenue1(TreeNode*Tree){ charc; intflag,i; charname[20]; charParent[2][20]; TreeNode*NewNode; while(1) { system("cls"); cout<<"\t"; cout<<"\n\n\t*****请选取你操作****"; cout<<"\n\t***1:修改个人信息******"; cout<<"\n\t***2:修改父母信息******"; cout<<"\n\t***3:修改兄弟姐妹信息*****"; cout<<"\n\t***4:修改子女信息******"; cout<<"\n\t***5:修改配偶信息******"; cout<<"\n\t***6:退出-*********\n\t"; cout<<"请输入:"; cin>>c; switch(c) { case'1': cout<<"\n\n\t请输入修改姓名(如果不需要修改就输入'0',然后按Enter键继续):\n"; cin>>name; if(strcmp(name,"0")!=0) strcpy(Tree->Name,name); cout<<"\n\n\t与否要修改性别:(如果需要就输入'1',不需要修改就输入'0'然后按Enter键继续):\n"; cin>>flag; if(flag==1) { if(Tree->Sex=='0') Tree->Sex='1'; elseTree->Sex='0'; } cout<<"\n\n\t个人信息修改成功!"; cout<<"\n按Enter键继续操作......"<<endl; getchar(); break; case'2': if(Tree->Parent==NULL) //判断是不是头节点 { cout<<"\n\t是这个家谱图里最顶端人没有父母信息!"<<endl; cout<<"\n按Enter键继续操作......"<<endl; getchar(); break; } if(MATEFLAG==1) //判断是不是入赘或加入此间 { if(Tree->Sex=='0') { cout<<"\n\n\t她是嫁入此间因此父母信息不在家谱内涉及!"; cout<<"\n按Enter键继续操作......"<<endl; getchar(); } else { cout<<"\n\n\t她是入赘此间因此父母信息不在家谱内涉及!"; cout<<"\n按Enter键继续操作......"<<endl; getchar(); } break; } if(Tree->Parent->Sex=='0') { strcpy(Parent[0],"妈妈"); strcpy(Parent[1],"爸爸"); } else { strcpy(Parent[0],"爸爸"); strcpy(Parent[1],"妈妈"); } cout<<"\n\n\t请输入"<<Parent[0]<<"要修改姓名(如果不需要修改就输入'0',然后按Enter键继续):\n"; cin>>name; if(strcmp(name,"0")!=0) strcpy(Tree->Parent->Name,name); cout<<"\n\n\t请输入"<<Parent[1]<<"要修改姓名(如果不需要修改就输入'0',然后按Enter键继续):\n"; cin>>name; if(strcmp(name,"0")!=0) strcpy(Tree->Parent->NextNode[0]->Name,name); cout<<"\n\n\t父母信息修改成功"<<endl; cout<<"\n按Enter键继续操作......"<<endl; getchar(); break; case'3': NewNode=Tree->Parent; if(NewNode==NULL) //判断是不是头节点 { cout<<"\n\t是这个家谱图里最顶端人没有兄弟姐妹信息!"<<endl; cout<<"\n按Enter键继续操作......"<<endl; getchar();break; } if(MATEFLAG==1) //判断是不是入赘或加入此间 { if(Tree->Sex=='0') {cout<<"\n\n\t她是嫁入此间因此兄弟姐妹信息不在家谱内涉及!"; cout<<"\n按Enter键继续操作......"<<endl; getchar(); } else {cout<<"\n\n\t她是入赘此间因此兄弟姐妹信息不在家谱内涉及!"; cout<<"\n按Enter键继续操作......"<<endl; getchar(); } break; } if(NewNode->Num==1) { cout<<"\n\n\t没有兄弟姐妹!"; cout<<"\n按Enter键继续操作......"<<endl; getchar(); break; } else { for(i=1;i<=NewNode->Num;i++) { if(NewNode->NextNode[i]->Name!=Tree->Name) { cout<<"\n\n\t请输入"<<NewNode->NextNode[i]->Name<<"修改姓名(如果不需要修改就输入'0',然后按Enter键继续):\n"; cin>>name; if(strcmp(name,"0")!=0) strcpy(NewNode->NextNode[i]->Name,name); cout<<"\n\n\t与否要修改性别(如果需要就输入'1'不需要修改就输入'0'然后按Enter键继续):\n"; cin>>flag; if(flag==1) { if(NewNode->NextNode[i]->Sex=='0') NewNode->NextNode[i]->Sex='1'; elseNewNode->NextNode[i]->Sex='0'; } } } } cout<<"\n\n\t兄弟姐妹信息修改成功"<<endl; cout<<"\n按Enter键继续操作......"<<endl; getchar(); break; case'4': if(Tree->Num==0) { cout<<"\n\n\t至今还没有子女!"; cout<<"\n按Enter键继续操作......"<<endl; getchar(); break; } if(Tree->Parent!=NULL) if(strcmp(Tree->Name,Tree->Parent->NextNode[0]->Name)==0)//如果她是入赘或者是嫁入就需用配偶节点完毕修改 { Tree=Tree->Parent; } for(i=1;i<=Tree->Num;i++) { cout<<"\n\n\t请输入"<<Tree->NextNode[i]->Name<<"修改姓名(如果不需要修改就输入'0',然后按Enter键继续):\n"; cin>>name; if(strcmp(name,"0")!=0) strcpy(Tree->NextNode[i]->Name,name); cout<<"\n\n\t与否要修改性别(如果需要就输入'1',不需要修改就输入'0'然后按Enter键继续):\n"; cin>>flag; if(flag==1) { if(Tree->NextNode[i]->Sex=='0') Tree->NextNode[i]->Sex='1'; else Tree->NextNode[i]->Sex='0'; } } cout<<"\n\n\t子女信息修改成功"<<endl; cout<<"\n按Enter键继续操作......"<<endl; getchar(); break; case'5': if(Tree->Parent!=NULL) { if(Tree->NextNode[0]==NULL&&strcmp(Tree->Name,Tree->Parent->NextNode[0]->Name)!=0) { cout<<"\n\n\t至今还没有配偶!"; cout<<"\n按Enter键继续操作......"<<endl; getchar(); break; } if(strcmp(Tree->Name,Tree->Parent->NextNode[0]->Name)==0) { cout<<"\n\n\t请输入"<<Tree->Parent->Name<<"修改姓名(如果不需要修改就输入'0',然后按Enter键继续):\n"; cin>>name; if(strcmp(name,"0")!=0) strcpy(Tree->Parent->Name,name); } else { cout<<"\n\n\t请输入"<<Tree->NextNode[0]->Name<<"修改姓名(如果不需要修改就输入'0',然后按Enter键继续):\n"; cin>>name; if(strcmp(name,"0")!=0) strcpy(Tree->NextNode[0]->Name,name); } } else { if(Tree->NextNode[0]==NULL) { cout<<"\n\n\t至今还没有配偶!"; } else { cout<<"\n\n\t请输入"<<Tree->NextNode[0]->Name<<"修改姓名(如果不需要修改就输入'0'然后按Enter键继续):\n"; cin>>name; if(strcmp(name,"0")!=0) strcpy(Tree->NextNode[0]->Name,name); } } cout<<"\n\n\t配偶信息修改成功"<<endl; cout<<"\n按Enter键继续操作......"<<endl; getchar(); break; case'6': cout<<"\n\n\t本项服务到此结束"; break; default: cout<<"\n\n\t对不起!你选取不在服务范畴之内!"; cout<<"\n\t请您再次选取所需服务项!"; cout<<"\n\t谢谢合伙!"<<endl; cout<<"\n按Enter键继续操作......"<<endl; getchar(); break; } if(c=='6') break; }}//输出主菜单voidMainMenue(TreeNode*Tree){ charc; charname[20]; while(1) { system("cls"); cout<<"\t"; cout<<"\n\n\t*****请选取你操作****"; cout<<"\n\t1:输入家谱信息建立多叉树"; cout<<"\n\t2:在家族中查找某人并输出她或(她)相应信息"; cout<<"\n\t3:添加新成员"; cout<<"\n\t4:输出整个家谱信息"; cout<<"\n\t5:修改某个人信息";cout<<"\n\t6:家谱信息存入文献"; cout<<"\n\t7:读取家谱信息文献"; cout<<"\n\t8:退出整个程序\n\t"; cout<<"请输入:"; cin>>c; switch(c) { case'1'://输入家谱信息建立多叉树 TreeNode*NewNode; NewNode=newTreeNode; cout<<"\n\t请输入姓名:"; cin>>Tree->Name; cout<<"\n\t请输入性别女(0)男(1):"; cin>>Tree->Sex; Tree->Parent=NewNode; Tree->Parent=NULL; CreatTree(Tree); cout<<"\n\t家谱图已经建立成功\n\n"; cout<<"\n按Enter键继续操作......"<<endl; getchar(); break; case'2'://在家族中查找某人并输出她或(她)相应信息 if(strcmp(Tree->Name,"0")==0) { cout<<"\n\t家谱图多叉树尚未建立请先建立树\n"; cout<<"\n按Enter键继续操作......"<<endl; getchar(); break; } cout<<"\n\t请输入你要查找人姓名:"; cin>>name; OutPutMessage(SearchTree(Tree,name,20),name,20); cout<<"\n\n\t**********\n\t";cout<<"\n按Enter键继续操作......"<<endl; getchar(); break; case'3'://添加新成员 if(strcmp(Tree->Name,"0")==0) {cout<<"\n\t******家谱图多叉树尚未建立请先建立树******\n"; cout<<"\n按Enter键继续操作......"<<endl; getchar(); break; } AddNew(Tree); cout<<"\n按Enter键继续操作......"<<endl;getchar();break; case'4'://输出整个家谱信息 if(strcmp(Tree->Name,"0")==0) {cout<<"\n\t******家谱图多叉树尚未建立请先建立树******\n"; cout<<"\n按Enter键继续操作......"<<endl; getchar(); break; } cout<<"\n\n\t整个家谱重要信息如下:"; OutPutAll(Tree); cout<<"\n按Enter键继续操作......"<<endl; getchar(); break; case'5'://修改某个人信息 if(strcmp(Tree->Name,"0")==0) {cout<<"\n\t******家谱图多叉树尚未建立请先建立树******\n"; cout<<"\n按Enter键继续操作......"<<endl; getchar(); break; } Change(Tree); cout<<"\n按Enter键继续操作......"<<endl; getchar(); break; case'6'://家谱信息存入文献 if(strcmp(Tree->Name,"0")==0) {cout<<"\n\t******家谱图多叉树尚未建立请先建立树******\n"; cout<<"\n按Enter键继续操作......"<<endl; getchar(); break;} firstoftxt(); ofAll(Tree); cout<<"\n按Enter键继续操作......"<<endl; getchar(); break; case'7'://读取家谱信息文献 ifAll(); cout<<"\n请按Enter键继续操作......"<<endl; getchar(); break; case'8'://退出整个程序 cout<<"\n\n\t本次服务到此结束"; cout<<"\n\t欢迎下次使用"; cout<<"\n\t谢谢\n\n"; exit(0);break; default: cout<<"\n\n\t对不起!你选取不在服务范畴之内!"; cout<<"\n\t请您再次选取所需服务项!"; cout<<"\n\t谢谢合伙!\n\t"; cout<<"\n按Enter键继续操作......"<<endl; getchar(); break; } }}//创立树voidCreatTree(TreeNode*Node){ inti; intflag; TreeNode*NewNode; NewNode=newTreeNode;Node->NextNode[0]=NewNode; Node->NextNode[0]=NULL; cout<<"\n\t请输入"<<Node->Name<<"配偶姓名:"; cin>>NewNode->Name; cout<<"\n\t请输入"<<Node->Name<<"子女数目:";cin>>Node->Num; if((Node->Num)==0&&strcmp(NewNode->Name,"0")==0) return; if(Node->Sex=='0') NewNode->Sex='1'; else NewNode->Sex='0'; NewNode->Num=0; NewNode->NextNode[0]=NULL; Node->NextNode[0]=NewNode; Node->NextNode[0]->Parent=Node; for(i=1;i<=Node->Num;i++) { NewNode=newTreeNode; cout<<"\n\t请输入"<<Node->Name<<"第"<<i<<"子女名字:"; cin>>NewNode->Name; cout<<"\n\t请输入"<<Node->Name<<"第"<<i<<"子女性别女(0)男(1):"; cin>>NewNode->Sex; NewNode->Num=0; NewNode->Parent=Node; Node->NextNode[i]=NewNode; CreatTree(Node->NextNode[i]); }}//遍历并输出树中内容voidOutPutAll(TreeNode*Tree){ inti,flag=0; cout<<"\n\t****************************"; cout<<"\n\t姓名:"<<Tree->Name<<"性别:"; if(Tree->Sex=='0') { flag=1; cout<<"女"; } else cout<<"男"; if(!(Tree->NextNode[0])) { cout<<"\n\t******至今没有配偶和子女******\n"; return; }if(flag==1) cout<<"\n\t丈夫姓名:"<<Tree->NextNode[0]->Name; else cout<<"\n\t妻子姓名:"<<Tree->NextNode[0]->Name; for(i=1;i<=Tree->Num;i++) { cout<<"\n\t第"<<i<<"个子女姓名:"<<Tree->NextNode[i]->Name<<"性别:"; if(Tree->NextNode[i]->Sex=='0') cout<<"女"; else cout<<"男"; } cout<<"\n\t"; for(i=1;i<=Tree->Num;i++) { OutPutAll(Tree->NextNode[i]); }}//家谱信息存入文献voidfirstoftxt(){ fstreamoutf("D:\\f1.txt",ios::out|ios::trunc); if(!outf) { cerr<<"打开文献错误!"<<endl; return; } else { outf<<"\n\n\t******整个家谱重要信息如下:"<<endl; } outf.close();}voidofAll(TreeNode*Tree){ fstreamoutf("D:\\f1.txt",ios::out|ios::ate|ios::app); if(!outf) { cerr<<"打开文献错误!"<<endl; return; } else { inti,flag=0; outf<<"\n\t****************************"; outf<<"\n\t姓名:"<<Tree->Name<<"性别:"; if(Tree->Sex=='0') { flag=1; outf<<"女"; } else outf<<"男"; if(!(Tree->NextNode[0])) { outf<<"\n\t******至今没有配偶和子女******\n"; return; }if(flag==1) outf<<"\n\t丈夫姓名:"<<Tree->NextNode[0]->Name; else outf<<"\n\t妻子姓名:"<<Tree->NextNode[0]->Name; for(i=1;i<=Tree->Num;i++) {outf<<"\n\t第"<<i<<"个子女姓名:"<<Tree->NextNode[i]->Name<<"性别:"; if(Tree->NextNode[i]->Sex=='0') outf<<"女"; else outf<<"男"; } outf<<"\n\t"; for(i=1;i<=Tree->Num;i++) { ofAll(Tree->NextNode[i]); } } outf.close(); cout<<"\n\t******家谱信息存入文献成功!**********"<<endl;}//读取家谱信息voidifAll(){ chars[100]; ifstreaminf("D:\\f1.txt",ios::in);if(!inf) { cerr<<"文献打开错误!"<<endl; return; } inf.getline(s,100); cout<<s<<'\n'; while(!inf.eof()) { inf.getline(s,100); cout<<s<<'\n'; } inf.close(); cout<<"\n\t*********家谱信息文献读取成功!**********"<<endl;}//在树中通过遍历查找某个人TreeNode*SearchTree(TreeNode*Tree,charname[],intlength){ inti; TreeNode*NewNode; if(strcmp(Tree->Name,name)==0) { if(length==0) MATEFLAG=1; else MATEFLAG=0; returnTree; } if(Tree->NextNode[0]==NULL) returnNULL; for(i=0;i<=Tree->Num;i++) { if(i==0) NewNode=SearchTree(Tree->NextNode[i],name,0); else NewNode=SearchTree(Tree->NextNode[i],name,20); if(NewNode!=NULL) returnNewNode; } returnNULL;}//输出已经查找到人信息voidOutPutMessage(TreeNode*Tree,charname[],intlength){ intflag=0,i; TreeNode*NewNode; cout<<"\n\n\t**********"; if(Tree==NULL) { cout<<"\n\n\t****该家谱图中没有"<<name<<"这个人信息,请确认与否输入错误*****\n"; co

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论