家谱管理系统php,家谱管理系统(含源代码).docx

这是一个使用PHP编写的家谱管理系统,包含了添加、修改、查找家庭成员信息等功能。通过结构化的树节点定义,系统能够有效地组织和管理家谱数据。用户可以选择不同的操作,如添加子女、配偶信息等。
摘要由CSDN通过智能技术生成

#include int MATEFLAG=0; //是否入赘或嫁入这家的,1表示为是,0表示否

typedef struct TreeNode//树节点定义

{

int Num; //保存此人儿女个数

char Name[20]; //保存此人姓名

char Kind; //保存此人性别,男M,女F

struct TreeNode * NextNode[20]; //保存此人的儿女,NextNode[0]里存放配偶的地址

struct TreeNode * Parent; //保存此节点的父节点

}TreeNode;

void CreatTree(TreeNode *Tree);//创建树

void OutPutAll(TreeNode *Tree);//输出树

TreeNode * SearchTree(TreeNode *Tree,char name[],int length);

void MainMenu(TreeNode *Tree);

void SubMenue1(TreeNode * Tree);

void SubMenue2(TreeNode *Tree);

void Change(TreeNode * Tree);

void AddNew(TreeNode * Tree);

void OutPutMessage(TreeNode * Tree,char name[],int length);

//主函数

void main()

{

TreeNode *Tree;//产生根节点

Tree=(TreeNode *)malloc(sizeof(TreeNode));

Tree->Parent =NULL;

strcpy(Tree->Name,"0");

MainMenu(Tree);//显示主菜单

}

//添加新的成员

void AddNew(TreeNode * Tree)

{

SubMenue2(Tree);//添加新成员界面

}

//显示添加家庭信息的界面

void SubMenue2(TreeNode *Tree)

{

char c;

int num;

char name[20];

TreeNode * NewNode;

getchar();

while(1)

{

system("cls");

printf("请选择你的操作\n");

printf("A:添加某个人的子女的信息\n");

printf("B:添加某个人配偶的信息\n");

printf("C:退出\n");

printf("请选择相应功能:\n");

c=getchar();

switch(c)

{

case 'A': //添加子女信息

printf("请输入那个人的名字:\n");

scanf("%s",name);

Tree=SearchTree(Tree,name,20);//在家谱里查找这个人

if(Tree==NULL)

{

printf("该家谱图中没有%s这个人的信息请确认是否输入错误\n",name);

break;

}

if(Tree->Parent==NULL&&Tree->NextNode[0]==NULL||Tree->Parent!=NULL&&Tree->N

ame!=Tree->Parent->NextNode[0]->Name)

{

printf("至今还没有配偶请先添加配偶\n",Tree->Name);

break;

}

if(Tree->Parent==NULL&&(Tree->Num>20||Tree->Num<0))

Tree->Num=0;

if(MATEFLAG==1)

Tree=Tree->Parent;

NewNode=(TreeNode *)malloc(sizeof(TreeNode));

printf("请输入添加人员姓名:\n");

scanf("%s",NewNode->Name);

printf("请输入添加人员性别女F男M:\n");

scanf("%1s",&NewNode->Kind);

num=Tree->Num;

NewNode->NextNode[0]=(TreeNode *)malloc(sizeof(TreeNode));

NewNode->NextNode[0]=NULL;

NewNode->Num=0;

NewNode->Parent=Tree;

Tree->NextNode[num+1]=NewNode;

Tree->Num=Tree->Num+1;

printf("子女的信息添加成功\n");

break;

case 'B':

printf("请输入那个人的名字:\n");

scanf("%s",name);

Tree=SearchTree(Tree,name,20);

if(Tree->Parent!=NULL&&strcmp(Tree->Name,Tree->Parent->NextNode[0]->Name)==0||T

ree->NextNode[0]!=NULL)

{

printf("已经有了配偶\n");

break;

}

if(Tree==NULL)

{

printf("该家谱图中没有%s这个人的信息请确认\n",name);

break;

}

NewNode=(TreeNode *)malloc(sizeof(TreeNode));

printf("请输入添加人员姓名:\n");

scanf("%s",NewNode->Name);

printf("请输入添加人员性别女F男M:\n");

scanf("%1s",&NewNode->Kind);

NewNode->Parent=Tree;

Tree->NextNode[0]=NewNode;

break;

case 'C':

printf("本项服务到此结束\n");

break;

case '\n':

break;

default:

printf("对不起!你的选择错误\n");

break;

}

if (c=='C'||c=='c')

break;

printf("请按Enter键继续操作\n");

getchar();<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值