家谱管理系统数据结构.docx

上传人:b****2 文档编号:2252071 上传时间:2022-10-28 格式:DOCX 页数:12 大小:103.14KB
下载 相关 举报
家谱管理系统数据结构.docx_第1页
第1页 / 共12页
家谱管理系统数据结构.docx_第2页
第2页 / 共12页
家谱管理系统数据结构.docx_第3页
第3页 / 共12页
家谱管理系统数据结构.docx_第4页
第4页 / 共12页
家谱管理系统数据结构.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

家谱管理系统数据结构.docx

《家谱管理系统数据结构.docx》由会员分享,可在线阅读,更多相关《家谱管理系统数据结构.docx(12页珍藏版)》请在冰豆网上搜索。

家谱管理系统数据结构.docx

家谱管理系统数据结构

#include

#include

#include

#include

#defineMAXS100

#defineElemtypechar

typedefstructBiTNode

{

intmark;

intlevel;

charname[50];

charbirthday[50];

charaddress[MAXS];Elemtypedata;

structBiTNode*lc,*rc;}BiTNode,*BiTree;

charnametemp[50];〃姓名

charbirthdaytemp[50];〃生日

charaddresstemp[MAXS];〃地址

charch;

intleveltemp;

intNth;

charsearchdata[50];

charsearchname[50];

intcount;

BiTreetemp;

BiTreeCreateBiTree(FILE*fp);

voidPrintlnfo(BiTreeT);

voidPreOrderTS(BiTreeT);

voidShowNth(BiTreeT);

voidSearchByName(BiTreeT);

voidSearchByBirthday(BiTreeT);

voidAddChild(BiTreeT);

voidDeleteByName(BiTreeT);

voidsearchmenu();

voidmenu();

voidinsystem();

voidclosefile();

#include"my.h"

voidSearchByName(BiTreeT)〃按照姓名查询,输出成员信息

if(T)

if(T->lc)

if(T->lc->rc)

{

temp=T->lc->rc;

while(temp)

{

if(strcmp(temp->name,searchname)==O)

{

count++;

printf("\n此人的信息为:

\n");

Printlnfo(temp);

printf("此人父兄的信息为:

\n");

PrintInfo(T);

if(temp->lc->rc)

{

printf("此人孩子的信息为:

\n");

temp=temp->lc->rc;

while(temp)

{

PrintInfo(temp);

temp=temp->rc;

}

}

return;

}

else

temp=temp->rc;

SearchByName(T->lc);

SearchByName(T->rc);

}

else

{

printf("请先建立家庭关系\n");

return;

}

}

voidSearchByBirthday(BiTreeT)〃按照出生日期查询成员名单

if(T)

 

{

if(strcmp(T->birthday,searchdata)==O)

{

Printinfo(T);

count++;

}

}

}

voidAddChild(BiTreeT)〃某成员添加孩子

{

if(T)

{if(strcmp(T->name,searchname)==O)

{

count++;

temp=(BiTree)malloc(sizeof(BiTNode));

printf("请输入添加孩子的姓名:

\n");

scanf("%s",temp->name);

printf("请输入添加孩子的出生年月:

(格式形如:

2010-1-1)\n");

scanf("%s",temp->birthday);

printf("请输入添加孩子的家庭住址:

\n");

scanf("%s",temp->address);

temp->level=T->level+1;

temp->rc=T->lc->rc;

temp->lc=NULL;

T->lc->rc=temp;

printf("孩子添加成功\n");

return;

}

AddChild(T->lc);AddChild(T->rc);

}

else

{

printf("请先建立家庭关系\n");return;

}

}

voidDeleteByName(BiTreeT)//删除某成员(若其还有后代,则一并删除)

{

if(T)if(strcmp(T->name,searchname)==O)

count++;

T=NULL;

return;

}

DeleteByName(T->lc);

DeleteByName(T->rc);

}

}

BiTreeCreateBiTree(FILE*fp)

{

if(!

feof(fp))

{

BiTreeT;

T=(BiTree)malloc(sizeof(BiTNode));

fscanf(fp,"%s%s%s\n",nametemp,birthdaytemp,addresstemp);

fscanf(fp,"%d",&leveltemp);

if((strcmp(nametemp,"n")==0)&&(strcmp(birthdaytemp,"n")==O)&&(strcmp(addresstemp,"n")==O))

{

T=NULL;

returnT;

}

else

{

strcpy(T->name,nametemp);

strcpy(T->birthday,birthdaytemp);

strcpy(T->address,addresstemp);

T->level=leveltemp+1;printf("读取成功\n");

T->lc=CreateBiTree(fp);

T->rc=CreateBiTree(fp);

returnT;

}

}

else

returnNULL;

}

#include"my.h"

voidmain()

{

BiTreeT;

intchoice;

FILE*fp;

T=NULL;

fp=fopen("F:

\\family.txt","r");

insystem();

while

(1)

{

system("cls");

menu();

printf("请根据菜单进行选择所

 

system("pause");

break;

case4:

searchmenu();

printf(”请输入选择:

\n");

system("pause");break;

case5:

PreOrderTS(T);system("pause");break;

case6:

closefile();

case7:

printf("请输入需要查询第几代人:

");

count=0;

scanf("%d",&Nth);

ShowNth(T);

if(count==0)

printf("第%d代尚未有人。

\n",Nth);

system("pause");

break;

case8:

printf("请输入要查询人的姓名:

");

scanf("%s",searchname);

if(strcmp(T->name,searchname)==0)

{

printf("此人为家谱的祖先,其信息为:

\n");

printf("%-10s%-10s%-10s\n",T->name,T->birthday,T->address);

printf("他兄弟的信息为:

\n");

printf("%-10s%-10s%-10s%\n",T->lc->name,T->lc->birthday,T->lc->address);

temp=T->lc;

if(temp->rc)

{

printf("他孩子的信息为:

\n");

temp=temp->rc;

while(temp)

{printf("%-10s%-10s%-10s\n",temp->name,temp->birthday,temp->address);temp=temp->rc;

}

}

}

else

{

count=0;

SearchByName(T);

if(count==0)

printf(”对不起,不能检测这个人的信息\n");

}

system("pause");

break;

case9:

printf("请输入要查询人的生日:

");

count=0;

scanf("%s",searchdata);

SearchByBirthday(T);

if(count==0)

printf("%s没有人过生日。

\n",searchdata);

system("pause");

break;

default:

---\n");

printf("\n---输入错误

break;

}

printf("\n\n");

printf("按任意键继续!

");getch();

}

}

#include"my.h"voidinsystem(){

printf("\t\t1>建立家族关系(并保存)\n");

\n");

\n");

\n");

\n");

printf("\t\t2>添加家族成员

printf("\t\t3>删除家族成员

printf("\t\t4>查询家族成员

printf("\t\t5>显示家族关系

printf("\t\t6>退出系统\n");

printf("\t\t7>按姓名查询\n");

printf("\t\t8>按出生日期查询\n");

}

voidPrintlnfo(BiTreeT)

{

printf("%1Os%10s%10s\n",T->name,T->birthday,T->address);

}

voidPreOrderTS(BiTreeT)〃递归先序遍历(检查建树是否正确)

{

if(T)

{

PrintInfo(T);

PreOrderTS(T->lc);PreOrderTS(T->rc);

}

}

voidShowNth(BiTreeT)//显示第n代所有人的信息

{

if(T)

{

if(T->level==Nth)

{

PrintInfo(T);

count++;

}

ShowNth(T->lc);

ShowNth(T->rc);

}

}

voidclosefile()

{

printf("按任意键退出\n");

exit(0);

}

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1