资源简介
数据结构课设,简单家谱管理系统.只给出了源代码。还有自己创建工程进行运行

代码片段和文件信息
#include“genealogy.h“
GEnealogy::GEnealogy()
{
T=NULL;//开始为空家谱
}
GEnealogy::~GEnealogy()
{
DestroyGEnealogy();//释放资源
}
void GEnealogy::NewGEnealogy()
{
//建立一空家谱,
DestroyGEnealogy();//删除原有家谱
T=NULL;
}
void GEnealogy::CreateGEnealogy()
{
DestroyGEnealogy();//删除原来家谱树结构
int n=0;//初始化数组下标,用来看有几多个数据
fstream f(“1.dat“ios::binary|ios::in);//以二进制读方式打开
if(!f)
{
cerr<<“File can‘t be open“< return;
}
f.seekg(0ios::end);//指针移到文件尾
long posEnd=f.tellg();//记录文件尾位置
f.seekg(0ios::beg);//指针移到文件头
person ParentT=new CSNode;
ParentT=NULL;
person temp[max_char_num];//定义读取数据的数组
for(int i=0;i temp[i]=new CSNode;//初始化一个地址值,且不能为空否则出错
if( posEnd == f.tellg( ) )
{
cout<<“It‘s a null Genealogy“< return;
}
while( posEnd != f.tellg() )//从头到尾读取二进制数据
{
f.read((char*)&(temp[n]->data)sizeof(Info));
n++;
}
NewGEnealogy();
T=temp[0];T->firstchild=T->nextsibling=NULL;//将第一个赋给根结点
for(int j=1;j {
FindByName(TParentTtemp[j]->data.parentname);
if(ParentT)
{
temp[j]->firstchild=temp[j]->nextsibling=NULL;
temp[j]->parent=ParentT;
if(ParentT->firstchild)
{
InsertSibling(ParentT->firstchildtemp[j]);
}
else
ParentT->firstchild=temp[j];
}
}
f.close();//关闭文件流
}
void DestroyNode(person &pnode)
{
//删除一结点
if(pnode)
{
delete pnode;
pnode=NULL;
}
}
void GEnealogy::DestroyGEnealogy()
{
//删除家谱,释放资源
PostOrderTraverse(TDestroyNode);
}
void GEnealogy::PostOrderTraverse(person &Tvoid (__cdecl *Visit)(person &T))
{
//后序遍历二叉树,并执行visit函数
if(T)
{
PostOrderTraverse(T->firstchildVisit);
PostOrderTraverse(T->nextsiblingVisit);
(*Visit)(T);
}
}
void GEnealogy::PreOrderTraverse(fstream &fperson &T void (__cdecl *Visit)(fstream &fperson &T))
{
//先序遍历二叉树,并执行visit函数
if(T)
{
(*Visit)(fT);
PreOrderTraverse(fT->firstchildVisit);
PreOrderTraverse(fT->nextsiblingVisit);
}
}
void SaveNode(fstream &f person &pnode)
{
//以二进制形式保存一个结点的info信息
if(pnode)
{
f.write ( (char * )&pnode->data sizeof(Info) ) ;
}
}
void GEnealogy::SaveGEnealogy()
{
//保存二叉树到文件
fstream f(“1.dat“ios::binary|ios::out);//以二进制写方式打开文件
if(!f)
{
cerr<<“File can‘t be open“< return;
}
PreOrderTraverse(fTSaveNode);//调用先序遍历写二叉树信息到文件
f.close();//关闭文件
}
person& GEnealogy::GetRoot()
{
//返回家谱的根结点
return T;
}
void GEnealogy::ReadNode(fstream &fperson &pnode)
{
//读取文件的Info信息到pnode中去,供createGenealogy()调用
f.read((char*)&pnode->datasizeof(Info));
}
void GEnealogy::FindByName(person& Tperson& Tnamechar* name)//search the name in info from root T
{
//查找姓名=name的人,若在家谱中,用Tname返回,否则Tname为空,Tname初始为空
if(T)
{
if(strcmp(T->data.namename)==0) //用string库的strcmp()比较两个字符串,若相等,则找到符合条件的
Tname=T;
else
{
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 4573 2005-04-02 23:27 genealogy.h
文件 4682 2005-04-02 18:21 main.cpp
文件 23060 2005-04-03 01:17 bigwork.cpp
- 上一篇:PCB识别包含程序截图和原图
- 下一篇:XY数控工作台装配图
相关资源
- 数据结构年终考题范围和答案 耿国华
- 数据库课设:图书管理系统报告
- 数据结构 朱战力 习题解答 数据结构
- 计算机图形学课设 画板
- 数据结构课程设计 6 1 彩票系统
- 教学计划编制系统
- 大数(链表、数组)实现
- 课程作业:模拟仓库管理系统
- 自己写的航空订票系统c 版--数据结构
- 数据结构实验魔王语言
- 航空订票系统_数据结构课程设计
- 多项式求和(数据结构C 版)
- 尚观培训linux董亮老师关于数据结构的
- 数据结构 知识点总结
- 华南理工大学数据结构复习提纲二
- 华南理工大学数据结构复习提纲一
- 数据结构用C 写的停车场系统源代码
- 数据结构(河北科技大学)
- 数据结构考前习题 清华大学出版社
- 数据结构课件(北邮)
- 数据结构实验 基于栈的表达式求值
- 数据结构课程设计——图书管理系统
- 成绩管理系统(数据结构)
- 数据结构-最小通信网问题
- 数据结构课程设计同学通讯录系统
- 数据结构课程设计 公园导游图
- 数据结构殷人昆版的课后答案
- 2006年湖北工业大学409数据结构试题
- 数据结构实验-魔王语言-源码加实验报
- 简单计算器的实现(数据结构)
评论
共有 条评论