手机版

数据结构家谱管理系统

时间:2025-05-17   来源:未知    
字号:

数据结构家谱管理系统

////////////////////////////////////////////////////////////

///////////////////

//题目:家谱资料管理

//要求:家谱用于记录某家族历代家族成员的情况与关系。

现编制一个家谱资料管理软件,

//实现对一个家族所有的资料进行收集整理。支持对家谱的

增加,删除,更新,统计等。

////////////////////////////////////////////////////////////

///////////////////

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

int MATEFLAG=0;

typedef struct TreeNode

数据结构家谱管理系统

int Num; //记录这个人拥有

几个儿女

char Kind; //标示节点的种类有char Name[20]; //记录这个人的姓

女G男B

}TreeNode;

void CreatTree(TreeNode *Tree);

void OutPutAll(TreeNode *Tree);

TreeNode * SearchTree(TreeNode *Tree,char name[],int

length);

void MainMenue(TreeNode *Tree);

void SubMenue1(TreeNode * Tree);

void SubMenue2(TreeNode *Tree);

void Change(TreeNode * Tree);

void AddNew(TreeNode * Tree); struct TreeNode * NextNode[20]; //记录这个人的儿女 struct TreeNode * Parent; //记录这个节点的父节

数据结构家谱管理系统

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

//主函数

void main()

{

TreeNode *Tree; Tree=(TreeNode *)malloc(sizeof(TreeNode)); Tree->Parent =NULL; strcpy(Tree->Name,"0");

MainMenue(Tree);

}

//添加新的成员

void AddNew(TreeNode * Tree)

{

}

//输出副菜单

void SubMenue2(TreeNode *Tree)

{

char c; SubMenue2(Tree);

数据结构家谱管理系统

char name[20]; TreeNode * NewNode; getchar(); while(1) { system("cls"); printf("\t"); printf("\n\n\t ---*****---请选择你的操作

---****--- ");

printf("\n\t---*---*---*---A:添加某个人的子女的信息

---*---*---*---*---- ");

printf("\n\t---*---*---*---B:添加某个人配偶的信息

-*---*---*---*---*---- ");

printf("\n\t---*---*---*---C:退出

-*---*---*---*---*---*---*---*---*----\n\t");

c=getchar(); switch(c) { case 'A':

数据结构家谱管理系统

scanf("%s",name); Tree=SearchTree(Tree,name,20); if(Tree==NULL) { printf("\n\n\t****该家谱图中没有%s这个人的

信息请确认是否输入错误*****\n",name);

if(Tree->Parent==NULL&&Tree->NextNode[0]==NULL||Tree } break;

->Parent!=NULL&&Tree->Name!=Tree->Parent->NextNode[0]-

>Name)

{ printf("\n\n\t%s至今还没有配偶请先添加配偶

",Tree->Name);

if(Tree->Parent==NULL&&(Tree->Num>20||Tree->Num<0)) Tree->Num=0; } break; if(MATEFLAG==1)

数据结构家谱管理系统

NewNode=(TreeNode *)malloc(sizeof(TreeNode)); printf("\n\n\t请输入添加人员姓名:\n\t"); scanf("%s",NewNode->Name); printf("\n\n\t请输入添加人员性别女G男B:\n\t"); scanf("%1s",&NewNode->Kind); num=Tree->Num; NewNode->NextNode[0]=(TreeNode

*)malloc(sizeof(TreeNode));

printf("\n\n\t-------------子女的信息添加成功 Tree->Num=Tree->Num+1; NewNode->NextNode[0]=NULL; NewNode->Num=0; NewNode->Parent=Tree; Tree->NextNode[num+1]=NewNode;

----------------");

break; case 'B': printf("\n\n\t请输入那个人的名字:\n\t");

数据结构家谱管理系统

Tree=SearchTree(Tree,name,20); if(Tree->Parent!=NULL&&strcmp(Tree->Name,Tree->Parent

->NextNode[0]->Name)==0||Tree->NextNode[0]!=NULL)

{ } if(Tree==NULL) { printf("\n\n\t****该家谱图中没有%s这个人的printf("\n\n\t已经有了配偶"); break;

信息请确认是否输入错误*****\n",name);

} NewNode=(TreeNode *)malloc(sizeof(TreeNode)); printf("\n\n\t请输入添加人员姓名:\n\t"); scanf("%s",NewNode->Name); printf("\n\n\t请输入添加人员性别女G男B:\n\t"); scanf("%1s",&NewNode->Kind); NewNode->Parent=Tree; Tree->NextNode[0]=NewNode; break;

数据结构家谱管理系统

case 'C': printf("\n\n\t----------------本项服务到此结束

-----------------");

break; case '\n': break; default: printf("\n\n\t--------对不起!你的选择不在服务范围

之内!--------- ");

printf("\n\t-----------请您再次选择所需的服务

项!------------- ");

printf("\n\t------------------谢谢合

作!----------------------\n\t");

} if (c=='C'||c=='c') //?? break; break; printf("\n\n\t--------------请按Enter键继续操作

--------------");

getchar(); getchar();

数据结构家谱管理系统

} //修改某个人的信息

void Change(TreeNode * Tree)

{

char name[20];

TreeNode * NewNode; printf("\n\t请输入你要修改的人的信息:\n\t");

scanf("%s",name);

NewNode=SearchTree(Tree,name,20); if(NewNode==NULL)

{

printf("\n\n\t****该家谱图中没有%s这个人的信息 …… 此处隐藏:4040字,全部文档内容请下载后查看。喜欢就下载吧 ……

数据结构家谱管理系统.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
    ×
    二维码
    × 游客快捷下载通道(下载后可以自由复制和排版)
    VIP包月下载
    特价:29 元/月 原价:99元
    低至 0.3 元/份 每月下载150
    全站内容免费自由复制
    VIP包月下载
    特价:29 元/月 原价:99元
    低至 0.3 元/份 每月下载150
    全站内容免费自由复制
    注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
    × 常见问题(客服时间:周一到周五 9:30-18:00)