家谱管理系统设计报告.docx
《家谱管理系统设计报告.docx》由会员分享,可在线阅读,更多相关《家谱管理系统设计报告.docx(15页珍藏版)》请在冰点文库上搜索。
![家谱管理系统设计报告.docx](https://file1.bingdoc.com/fileroot1/2023-6/30/1f210b8a-5081-4ab8-985a-9534a4322a61/1f210b8a-5081-4ab8-985a-9534a4322a611.gif)
家谱管理系统设计报告
第一章绪论
目前,很多家庭家谱丢失,家庭一些关系混乱,为了避免这一问题,制定一家谱程序。
家谱用于记录某家族历代家族成员的情况与关系,实现对一个家族所有的资料进行收集整理。
支持对家谱的存储、更新、查询、统计等操作。
并用计算机永久储存家族数据,方便随时调用。
第二章需求分析
题目
家谱管理系统
设计任务
系统总体说明:
以树形结构存储家族信息,只考虑三代(祖父,父亲,叔叔,姑姑,自己,兄弟姐妹,堂兄弟姐妹),只考虑每个人有0或者1个兄弟姐妹的情况。
注意每个结点结构。
统计统计家族成员人数,查询家族成员辈份。
完成功能的详细说明:
1.输入家族成员情况,建立树结构(涉及创建二叉树);
2.统计家族成员人数和每一个家庭成员人数(涉及树的遍历);
3.查询家族成员辈份情况(任意输入两个家庭成员,查询他们的关系,父子,祖孙,兄弟,堂兄弟,共同的祖先)。
4.选做,考虑每个人有多个兄弟姐妹的情况。
数据测试
测试的数据有:
田迎新陈瑞英田紫藤田紫恒孙超李美霖……..
第三章概要设计
设计思想
创建一棵树,存储家庭关系,数据类型有
intNum;入系统
2.建立家谱
3.查看信息
4.添加成员
5.修改信息
第六章测试结果
父亲姓名田迎新母亲姓名陈瑞英姐姐田紫藤姐夫孙超本人田紫恒李美霖
致谢
感谢孙红艳老师辛苦教导与教诲,让我学到了很多知识,提高了很大的能力。
与此同时,也感谢老师为我辛苦验收课设,耐心讲解,让我也受益匪浅。
今后,我一定会努力学习,用我的实际行动来回报家长,感谢我的老师,为学校争光,努力为我们的国家,贡献出一份微薄的贡献!
参考文献
[1]《数据结构》C++语言版 严蔚敏 吴伟民编著清华大学出版社2011
[2]《数据库数据结构软件工程课程设计指导及习题解答》徐志才 方贤文 刘士喜编北京师范大学出版社2011
[3]《C++语言程序设计》何钦铭颜晖主编高等教育出版社2008
附录
#include<>
#include<>
#include<>...."<getchar();
break;
case'2':
if(Tree->Parent==NULL)...."<getchar();break;
}
if(MATEFLAG==1)...."<getchar();
}
else
{cout<<"\n\n\t他是入赘此间的所以父母信息不在家谱内包括!
";
cout<<"\n--------------按Enter键继续操作......"<getchar();
}break;
}
if(Tree->Parent->Sex=='0')
{strcpy(Parent[0],"母亲");
strcpy(Parent[1],"父亲");
}
else
{strcpy(Parent[0],"父亲");
strcpy(Parent[1],"母亲");
}
cout<<"\n\n\t请输入"<\n";
cin>>name;
if(strcmp(name,"0")!
=0)
strcpy(Tree->Parent->Name,name);
cout<<"\n\n\t请输入"<\n";
cin>>name;
if(strcmp(name,"0")!
=0)
strcpy(Tree->Parent->NextNode[0]->Name,name);
cout<<"\n\n\t-------------父母的信息修改成功----------------"<cout<<"\n--------------按Enter键继续操作......"<getchar();break;
case'3':
NewNode=Tree->Parent;
if(NewNode==NULL)...."<getchar();break;}
if(MATEFLAG==1)...."<getchar();
}
else
{cout<<"\n\n\t他是入赘此间的所以兄弟姐妹信息不在家谱内包括!
";
cout<<"\n--------------按Enter键继续操作......"<getchar();
}break;}
if(NewNode->Num==1)
{cout<<"\n\n\t没有兄弟姐妹!
";
cout<<"\n--------------按Enter键继续操作......"<getchar();break;}
else
{for(i=1;i<=NewNode->Num;i++)
{if(NewNode->NextNode[i]->Name!
=Tree->Name)
{cout<<"\n\n\t请输入"<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------------兄弟姐妹的信息修改成功-------------"<cout<<"\n--------------按Enter键继续操作......"<getchar();break;
case'4':
if(Tree->Num==0)
{cout<<"\n\n\t至今还没有子女!
";
cout<<"\n--------------按Enter键继续操作......"<getchar();break;}
if(Tree->Parent!
=NULL)
if(strcmp(Tree->Name,Tree->Parent->NextNode[0]->Name)==0)...."<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键继续操作......"<getchar();break;}
if(strcmp(Tree->Name,Tree->Parent->NextNode[0]->Name)==0)
{cout<<"\n\n\t请输入"<Parent->Name<<"修改的姓名(如果不需要修改就输入'0',然后按Enter键继续):
\n";
cin>>name;
if(strcmp(name,"0")!
=0)
strcpy(Tree->Parent->Name,name);
}
else
{cout<<"\n\n\t请输入"<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请输入"<NextNode[0]->Name<<"修改的姓名(如果不需要修改就输入'0'然后按Enter键继续):
\n";
cin>>name;
if(strcmp(name,"0")!
=0)
strcpy(Tree->NextNode[0]->Name,name);
}
}
cout<<"\n\n\t---------------配偶的信息修改成功----------------"<cout<<"\n--------------按Enter键继续操作......"<getchar();break;
case'6':
cout<<"\n\n\t----------------本项服务到此结束-----------------";break;
default:
cout<<"\n\n\t--------对不起!
你的选择不在服务范围之内!
---------";
cout<<"\n\t-----------请您再次选择所需的服务项!
-------------";
cout<<"\n\t------------------谢谢合作!
----------------------"<cout<<"\n--------------按Enter键继续操作......"<getchar();break;}
if(c=='6')
break;
}
}
...."<getchar();break;
case'2':
...."<getchar();break;}
cout<<"\n\t请输入你要查找的人的姓名:
";
cin>>name;
OutPutMessage(SearchTree(Tree,name,20),name,20);
cout<<"\n\n\t-----*----*----*----*----*----*----*----*----*----*----\n\t";
cout<<"\n--------------按Enter键继续操作......"<getchar();break;
case'3':
...."<getchar();break;}
AddNew(Tree);
cout<<"\n--------------按Enter键继续操作......"<case'4':
...."<getchar();break;}
cout<<"\n\n\t整个家谱的主要信息如下:
";
OutPutAll(Tree);
cout<<"\n--------------按Enter键继续操作......"<getchar();break;
case'5':
...."<getchar();break;}
Change(Tree);
cout<<"\n--------------按Enter键继续操作......"<getchar();break;
case'6':
...."<getchar();break;}
firstoftxt();
ofAll(Tree);
cout<<"\n--------------按Enter键继续操作......"<getchar();break;
case'7':
...."<getchar();break;
case'8':
...."<getchar();break;}
}
}
...."<getchar();return;
}
cout<<"\n\n\t******您所要找的人已经找到信息如下所示:
";
cout<<"\n\n\t姓名:
"<";
if(Tree->Sex=='0')
{flag=1;//标记他(她)的性别
cout<<"女";
}
else
cout<<"男";
NewNode=Tree->Parent;
if(MATEFLAG==1)
{if(flag==1)
{cout<<"\n\n\t她是嫁入此间的所以父母信息不在家谱内包括!
";
cout<<"\n\t丈夫姓名:
"<Name;}
else
{cout<<"\n\n\t他是入赘此间的所以父母信息不在家谱内包括!
";
cout<<"\n\t妻子姓名:
"<Name;}
if((NewNode->Num)>0)//判断他(她)是否有孩子
{cout<<"\n\t孩子的信息如下:
";//输出他(她)的孩子的信息
for(i=1;i<=NewNode->Num;i++)
{cout<<"\n\t姓名:
"<NextNode[i]->Name<<"性别:
";
if(NewNode->NextNode[i]->Sex=='0'||NewNode->Sex=='0')
cout<<"女";
else
cout<<"男";
}
}
return;
}
if(NewNode==NULL)//判断它是不是根节点如果是的话就没有父母兄弟信息
cout<<"\n\t是这个家谱图里最顶端的人没有父母和兄弟姐妹信息!
";
else
{if(NewNode->Sex=='0')//判断父亲节点是父亲还是母亲
{//输出他(她)的父母亲的信息
cout<<"\n\t母亲姓名:
"<Name;
cout<<"\n\t父亲姓名:
"<NextNode[0]->Name;
}
else
{cout<<"\n\t母亲姓名:
"<NextNode[0]->Name;
cout<<"\n\t父亲姓名:
"<Name;}
if(NewNode->Num>1)//判断他(她)是否有兄弟姐妹
{//输出他(她)的兄弟姐妹的信息
cout<<"\n\t"<";
for(i=1;i<=NewNode->Num;i++)
{if(NewNode->NextNode[i])
cout<<"\n\t姓名:
"<NextNode[i]->Name<<"性别:
";
if(NewNode->NextNode[i]->Sex=='0'||Tree->Sex=='0')
cout<<"女";
else
cout<<"男";
}
}
else
cout<<"\n\t"<Name<<"没有兄弟姐妹!
";
}
if(Tree->NextNode[0]!
=NULL)//判断他(她)是否有配偶
{//输出他(她)的配偶的信息
if(flag==1)
cout<<"\n\t丈夫姓名:
"<NextNode[0]->Name;
else
cout<<"\n\t妻子姓名:
"<NextNode[0]->Name;
if(Tree->Num>0)//判断他(她)是否有孩子
{cout<<"\n\t孩子的信息如下:
";//输出他(她)的孩子的信息
for(i=1;i<=Tree->Num;i++)
{cout<<"\n\t姓名:
"<NextNode[i]->Name<<"性别:
";
if(Tree->NextNode[i]->Sex=='0'||Tree->Sex=='0')
cout<<"女";
else
cout<<"男";
}
}
else
cout<<"\n\t"<";
}
else
cout<<"\n\t"<Name<<"至今还没有配偶和孩子!
\n";
}