家谱管理系统设计报告Word下载.docx
《家谱管理系统设计报告Word下载.docx》由会员分享,可在线阅读,更多相关《家谱管理系统设计报告Word下载.docx(37页珍藏版)》请在冰点文库上搜索。
//记录这个人的儿女
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\t--------------1:
输入家谱信息建立多叉树----------------------"
\n\t--------------2:
在家族中查找某人并输出他或(她)的相应信息----"
\n\t--------------3:
添加新的成员--------------------------------"
\n\t--------------4:
输出整个家谱信息----------------------------"
\n\t--------------5:
修改某个人的信息----------------------------"
cout<
\n\t--------------6:
家谱信息存入文件----------------------------"
\n\t--------------7:
读取家谱信息文件----------------------------"
\n\t--------------8:
退出整个程序--------------------------------\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;
\n\n\t请输入添加人员姓名:
"
cin>
>
NewNode->
Name;
\n\n\t请输入添加人员性别女(0)男
(1):
Sex;
num=Tree->
Num;
NewNode->
NextNode[0]=newTreeNode;
NextNode[0]=NULL;
Num=0;
Parent=Tree;
Tree->
NextNode[num+1]=NewNode;
Num=Tree->
Num+1;
\n\n\t-------------子女的信息添加成功----------------"
4.3.2添加配偶
NextNode[0]=NewNode;
4.4修改成员
4.4.1修改个人信息
\n\n\t请输入修改的姓名(如果不需要修改就输入'
0'
然后按Enter键继续):
\n"
cin>
name;
if(strcmp(name,"
0"
)!
=0)
strcpy(Tree->
Name,name);
\n\n\t是否要修改性别:
(如果需要就输入'
1'
不需要修改就输入'
然后按Enter键继续):
flag;
if(flag==1)
{
if(Tree->
Sex=='
)
Tree->
Sex='
elseTree->
4.4.2修改父母信息
\n\n\t请输入"
Parent[0]<
要修改的姓名(如果不需要修改就输入'
strcpy(Tree->
Parent->
Parent[1]<
NextNode[0]->
4.4.3修改兄弟姐妹的信息
NextNode[i]->
Name<
修改的姓名(如果不需要修改就输入'
strcpy(NewNode->
\n\n\t是否要修改性别(如果需要就输入'
不需要修改就输入'
if(NewNode->
NewNode->
elseNewNode->
4.4.4修改子女的信息
Tree->
else
第五章调试分析
1.进入系统
2.建立家谱
3.查看信息
4.添加成员
5.修改信息
第六章测试结果
父亲姓名田迎新母亲姓名陈瑞英姐姐田紫藤姐夫孙超本人田紫恒李美霖
致谢
感谢孙红艳老师辛苦教导与教诲,让我学到了很多知识,提高了很大的能力。
与此同时,也感谢老师为我辛苦验收课设,耐心讲解,让我也受益匪浅。
今后,我一定会努力学习,用我的实际行动来回报家长,感谢我的老师,为学校争光,努力为我们的国家,贡献出一份微薄的贡献!
参考文献
[1]《数据结构》C++语言版 严蔚敏 吴伟民编著清华大学出版社2011
[2]《数据库数据结构软件工程课程设计指导及习题解答》徐志才 方贤文 刘士喜编北京师范大学出版社2011
[3]《C++语言程序设计》何钦铭颜晖主编高等教育出版社2008
附录
#include<
iostream.h>
string.h>
stdio.h>
//getchar可以将键入的信息存到缓冲区,按Enter键将进行输入
stdlib.h>
//system的头文件,exit的头文件
fstream.h>
intMATEFLAG=0;
typedefstructTreeNode
{intNum;
}TreeNode;
voidCreatTree(TreeNode*Tree);
//-------------------------------创建树
//--------------------------------------------写入文件的开始信息
//-----------------------------------写入文件函数
//-------------------------------------------------读取文件的函数
//-------------------------------主菜单
//------------------------------修改成员信息的菜单
//-------------------------------添加新成员菜单
//---------------------------------添加新成员
//---输出已经查找到的人的信息
//主函数
voidmain()
{TreeNode*Tree;
Tree=newTreeNode;
Parent=NULL;
Name,"
);
MainMenue(Tree);
//添加新的成员
voidAddNew(TreeNode*Tree)
{SubMenue2(Tree);
//输出副菜单
voidSubMenue2(TreeNode*Tree)
{charc;
intnum;
charname[20];
TreeNode*NewNode;
while
(1)
{system("
cls"
\t"
\n\n\t---*****---请选择你的操作---****---"
\n\t---*---*---*---1:
添加某个人的子女的信息---*---*---*---*----"
\n\t---*---*---*---2:
添加某个人配偶的信息-*---*---*---*---*----"
\n\t---*---*---*---3:
退出-*---*---*---*---*---*---*---*---*----\n\t"
请输入:
cin>
c;
switch(c)
{case'
:
cout<
\n\n\t请输入那个人的名字:
cin>
Tree=SearchTree(Tree,name,20);
if(Tree==NULL)
{cout<
\n\n\t****该家谱图中没有"
name<
这个人的信息,请确认是否输入错误*****\n"
break;
}if(Tree->
Parent==NULL&
&
NextNode[0]==NULL||Tree->
Parent!
=NULL&
Name!
=Tree->
Name)
{cout<
\n\n\t"
至今还没有配偶请先添加配偶!
break;
}
if(Tree->
(Tree->
Num>
20||Tree->
Num<
0))
Tree->
if(MATEFLAG==1)
Tree=Tree->
Parent;
NewNode=newTreeNode;
cout<
num=Tree->
NewNode->
Tree->
case'
2'
if(Tree->
strcmp(Tree->
Name,Tree->
Name)==0||Tree->
NextNode[0]!
=NULL)
\n\n\t已经有了配偶"
break;
break;
}
NewNode=newTreeNode;
3'
\n\n\t----------------本项服务到此结束-----------------"
\n'
default:
\n\n\t--------对不起!
你的选择不在服务范围之内!
---------"
\n\t-----------请您再次选择所需的服务项!
-------------"
\n\t------------------谢谢合作!
----------------------\n\t"
break;
}
if(c=='
break;
//修改某个人的信息
voidChange(TreeNode*Tree)
{charname[20];
\n\t请输入你要修改的人的信息:
NewNode=SearchTree(Tree,name,20);
if(NewNode==NULL)
{cout<
return;
else
{SubMenue1(NewNode);
voidSubMenue1(TreeNode*Tree)
intflag,i;
charParent[2][20];
修改个人的信息---*---*---*---*---*---*----"
修改父母的信息---*---*---*---*---*---*----"
修改兄弟姐妹的信息---*---*---*---*---*----"
\n\t---*---*---*---4:
修改子女的信息---*---*---*---*---*---*----"
\n\t---*---*---*---5:
修改配偶的信息---*---*---*---*---*---*----"
\n\t---*---*---*---6:
if(strcmp(name,"
strcpy(Tree->