好文档 - 专业文书写作范文服务资料分享网站

家谱管理系统(含源代码)

天下 分享 时间: 加入收藏 我要投稿 点赞

家访工作手册 (1)

家谱管理系统——C语言(数据结构)

目的和要求:树形结构是一种非常重要的非线性结构,它用于描述数据元素之间 的层次关系,人类家谱是树形结构的典型体现,通过此项训练让学生掌握树形结 构的知识;使学生重点掌握树与二叉树的转换,二叉树的存储和遍历,和二叉树 相关的一些运算;要求完成家谱信息的录入和保存,任意成员的查找及某一成员 祖先、子孙、兄弟、堂兄弟的查找。 排答疑和辅导。 完整代码:

#include #include #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,\ MainMenu(Tree);//显示主菜单 }

//添加新的成员

void AddNew(TreeNode * Tree)

{

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

}

页脚内容15

家访工作手册 (1)

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

void SubMenue2(TreeNode *Tree) {

char c; int num;

char name[20];

TreeNode * NewNode; getchar(); while(1) {

system(\

printf(\请选择你的操作\\n\

printf(\添加某个人的子女的信息\\n\ printf(\添加某个人配偶的信息\\n\

printf(\退出\\n\

printf(\请选择相应功能:\\n\ c=getchar(); switch(c) {

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

printf(\请输入那个人的名字:\\n\ scanf(\

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

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

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

printf(\至今还没有配偶请先添加配偶\\n\ 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(\

printf(\请输入添加人员性别女F男M:\\n\ scanf(\ num=Tree->Num;

页脚内容15

家访工作手册 (1)

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(\

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\ break; }

NewNode=(TreeNode *)malloc(sizeof(TreeNode)); printf(\请输入添加人员姓名:\\n\ scanf(\

printf(\请输入添加人员性别女F男M:\\n\ scanf(\ 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\

页脚内容15

家谱管理系统(含源代码)

家访工作手册(1)家谱管理系统——C语言(数据结构)目的和要求:树形结构是一种非常重要的非线性结构,它用于描述数据元素之间的层次关系,人类家谱是树形结构的典型体现,通过此项训练让学生掌握树形结构的知识;使学生重点掌握树与二叉树的转换,二叉树的存储和遍历,和二叉树相关的一些运算;要求完成家谱信息的录入和保存,任意成员的查找及某一成员祖先、子孙、兄弟、堂
推荐度:
点击下载文档文档为doc格式
3ogrk8twwj5136q5t3t485bn78ar7y00ci1
领取福利

微信扫码领取福利

微信扫码分享