数据结构家谱图代码文档格式.docx
《数据结构家谱图代码文档格式.docx》由会员分享,可在线阅读,更多相关《数据结构家谱图代码文档格式.docx(29页珍藏版)》请在冰豆网上搜索。
//字体颜色的改变
printf("
***************家谱信息功能表*************\n"
);
SetConsoleTextAttribute(consolehwnd,FOREGROUND_INTENSITY+FOREGROUND_BLUE|FOREGROUND_GREEN);
1:
新建一个根节点\n"
2:
以添加成员节点构造家谱图\n"
3:
家谱树的层次显示\n"
4家谱树保存到文件!
\n"
5:
家谱树读入文件!
:
家谱信息的删除\n"
6:
结束程序\n"
************按以上功能表进行操作*************\n"
SetConsoleTextAttribute(consolehwnd,FOREGROUND_INTENSITY+FOREGROUND_BLUE+FOREGROUND_GREEN+FOREGROUND_RED);
for(i=1;
i<
=100;
)
{
printf("
请输入你在功能表上的选项:
"
);
scanf("
%d"
&
chose);
if(1<
=chose<
=11)
break;
else
printf("
你输入的选项不正确,请重新输入!
}
switch(chose)
case1:
system("
cls"
//在控制台程序使用清屏函数
InPut(T);
//录入个人信息
按任意键返回"
//等待程序
pause"
break;
case2:
Addchild(T);
//比较兄弟岁数后再添加
case3:
LevelOutput(T);
case4:
KCreatTree(T);
//将家谱信息保存到文件中
case5:
LCreateTree(T);
//从文件中读出家谱成员的信息
case6:
exit(0);
default:
fflush(stdin);
你输入的选项不正确!
请从新输入菜单的选项!
}
}
//Head.h
#defineQUEUESIZE100
typedefstructData//出生日期结构体
intday;
intmonth;
intyear;
}dataly;
typedefstructBiTNode//个人资料信息
{
charlive[15];
//建在(T表示活着,F表示过世)
charname[20];
//姓名
charsex[15];
//性别
charmarriage[15];
//是否已婚(Y为已婚,N为未婚)
charbirthadd[20];
//出生地
charaddress[15];
//家庭地址
charprofession[20];
//职业
charfathername[20];
//父亲姓名
intgeneration;
//辈分
intmessage;
//接点孩子的个数
inthight;
//升高
intage;
//年龄
datalybirthday;
//出生日期
datalydieday;
//死亡日期(如果其已经死亡)
structBiTNode*brother;
//兄弟
structBiTNode*child;
//孩子
structBiTNode*parent;
//父母
}BiTNode,*BinTree;
typedefBinTreeQElemType;
/*typedefstruct
intfront;
intrear;
QElemTypeelem[QUEUESIZE];
}SqQueue;
*/
typedefstructQNode
QElemTypedata;
structQNode*next;
}QNode,*QueuePtr;
typedefstruct
QueuePtrfront,rear;
}LinkQueue;
intJudgeTime(BinTree);
intComepare(BinTree);
voidInPut(BinTree&
T);
BinTreeLevelFind(BinTree&
T,BinTreea);
voidCreatfTree(BinTree&
voidAddchild(BinTree&
voidOutPut(BinTreeT);
voidLevelOutput(BinTreeT);
voidPreOrderD(BinTreeT);
voidKCreatTree(BinTree&
s);
voidKeepTTFile(BinTreeT,FILE*fp);
voidPrinfTree(BinTreep,FILE*fp);
voidLAddchild(BinTree&
T,LinkQueue&
S,FILE*fp);
voidLCreateTree(BinTree&
//function.cpp
//*********************************************************
//*********************************************************
voidInitQueue(LinkQueue&
Q)
if(!
(Q.front=Q.rear=(QueuePtr)malloc(sizeof(QNode))))
exit(0);
Q.front->
next=NULL;
return;
intQueueEmpty(LinkQueueQ)
return(Q.front->
next==NULL);
intGetHead(LinkQueueQ,QElemType&
e)
if(Q.front==Q.rear)
return0;
e=Q.front->
next->
data;
return1;
voidEnQueue(LinkQueue&
Q,QElemTypee)
QueuePtrp;
(p=(QueuePtr)malloc(sizeof(QNode))))
p->
data=e;
Q.rear->
next=p;
Q.rear=p;
intDeQueue(LinkQueue&
Q,QElemType&
p=Q.front->
next;
e=p->
next=p->
if(Q.rear==p)
Q.rear=Q.front;
free(p);
voidQueueTraverse(LinkQueueQ)
while(p)
p->
data);
p=p->
printf("
//****************************************************************************
intJudgeTime(BinTreep)//判断输入的出生日期是否正确
if(p->
birthday.year>
2013||p->
birthday.year<
=0)
你输入的年份错误,请重新输入!
if(12<
p->
birthd