- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
家谱管理系统头文件和源文件
#include stdio.h
#include string.h
#include stdlib.h
#include bb.h
void main()
{
BTree *bt;
FamilyType fam[MaxSize];
int n,sel1,sel2;
ReadFile(fam,n);
do
{
printf(1:文件操作 2:家谱操作 0:退出系统);
scanf(%d,sel1);
switch(sel1)
{
case 1:
do
{
printf(1:输入家谱 2:输出家谱 4:清除家谱 0:存盘返回);
scanf(%d,sel2);
switch(sel2)
{
case 1:
InputFam(fam,n);
break;
case 2:
OutputFile(fam,n);
break;
case 4:
DelAll(fam,n);
break;
case 0:
SaveFile(fam,n);
break;
}
}while(sel2!=0);
break;
case 2:
bt=CreateBTree(f1,fam,n)
do
{
printf(1:括号表示法输出 2:找某人所有儿子 3:找某人所有祖先 0:返回系统主界面:);
scanf(%d,sel2);
switch(sel2)
{
case 1:
printf( );
PrintBTree(bt);
printf(\n);
break;
case 2:
FindSon(bt);
break;
case 3:
printf( );
Ancestor(bt);
break;
}
}while(sel2!=0);
break;
}
}while(sel1!=0);
}
#include stdio.h
#include stdlib.h
#include string.h
#define MaxWidth 40
#define NAMEWIDTH 10
#define MaxSize 30
typedef struct fnode
{
char father[NAMEWIDTH];
char wife[NAMEWIDTH];
char son[NAMEWIDTH];
}FamilyType;
typedef struct tnode
{
char name[NAMEWIDTH];
struct tnode *lchild,*rchild;
}BTree;
BTree *CreateBTree(char *root,FamilyType fam[],int n)
{
int i=0,j;
BTree *bt,*p;
bt=(BTree *)malloc(sizeof(BTree));
strcpy(bt-name,root);
bt-lchild=bt-rchild=NULL;
while(in strcmp(fam[i].father,root)!=0)
i++;
if(in)
{
p=(BTree *)malloc(sizeof(BTree));
p-lchild=p-rchild=NULL;
strcpy(p-name,fam[i].wife);
bt-lchild=p;
for(j=0;jn;j++)
if(strcmp(fam[j].father,root)==0)
{
p-rchild=CreateBTree(fam[j].son,fam,n);
p=p-rchild;
}
}
return(bt);
}
void PrintBTree( BTree *bt ) //以广义表的形式输出二叉树BT
{
if(bt)
{
printf(%s,bt-name);
if(bt-lchild||bt-rchild)
{
printf(();
PrintBTree(bt-lchild);
if(bt-rchild)
p
文档评论(0)