• 大小: 25KB
    文件类型: .c
    金币: 1
    下载: 0 次
    发布日期: 2021-05-11
  • 语言: C/C++
  • 标签:

资源简介

一个大一学生写的基于C语言的家谱管理系统

资源截图

代码片段和文件信息

#include “stdio.h“
#include “stdlib.h“
#include “string.h“
#include “math.h“
#include “windows.h“

#define MAXSIZE 200
#define limit 10000000

typedef struct data
{
char BornDay[8];
char null[10];
char Name[5];
char null3[10];
char Sex;//m代表男,f代表女//
char Old[3];
char null4[10];
char Match[5];//设置若无配偶时输入0//
char null2[10];
char DiedDay[8];//若未死亡输入0//
char null1[10];//字符数组前缀为Null的数组为存放野数据//
int Age;//第几代//
struct data *lchild*rchild*parent;
}BTree;

typedef struct midata
{
char BornDay[8];
char null[10];
char Name[5];
char null3[10];
char Sex;//m代表男,f代表女//
char Old[3];
char null4[10];
char Match[5];//设置若无配偶时输入0//
char null2[10];
char DiedDay[8];//若未死亡输入0//
char null1[10];//字符数组前缀为Null的数组为存放野数据//
int Age;//第几代//
}mid;

void MBNSubMenu(BTree *bt);
void SearchParent(BTree *bt);
void SearchChild(BTree *bt);
void saveNewData(BTree *bt);
void findDeep(BTree *bt);
void saveTheDelete(FILE *fileBTree *btmid *mdp);

BTree *Tstack[MAXSIZE];

char name[5]old[3]sexBornDay[8]DiedDay[8]Match[5]choice1;
int age=0flag=0i=0choicerear=1front=1count=1;//i为方便循环变量,用完全局变量记得初始化!//

//将文件中的数据导入树结构中//
BTree * inputTree(BTree *root)//    核       心        代          码        //
{
FILE *file;
BTree *bt*fp;
mid *mdp;
int rear=1front=1mid1=1flag=0age=1;
file = fopen(“data““rb“) ;
if(file != NULL)
{
while(!feof(file))//return -1 while to the file end!//
{
mdp = (mid *)malloc(sizeof(mid));
bt = (BTree *)malloc(sizeof(BTree));
memset(bt0sizeof(BTree));//初始化结构体,避免输出乱码//
if(fread(mdpsizeof(mid)1file)==1)
{
count++;
//进行数据拷贝//
strcpy(bt->Namemdp->Name);
bt->Name[strlen(bt->Name)]=‘\0‘;
strcpy(bt->Oldmdp->Old);

bt->Sex=mdp->Sex;

strcpy(bt->Matchmdp->Match);

strcpy(bt->BornDaymdp->BornDay);

strcpy(bt->DiedDaymdp->DiedDay );
bt->Age=age;//年代信息与后变量相同//
flag=1;
}
bt->parent=NULL;
bt->lchild=NULL;
bt->rchild=NULL;
Tstack[rear]=bt;
rear++;
if(rear==2)
{
root=bt;
age++;mid1++;
}
else
{
if(Tstack[front]->lchild == NULL&&bt->Age!=0)//判断该节点是否为有效节点//
{
bt->parent=Tstack[front];//指向父节点//
Tstack[front]->lchild=bt;
}
else if(Tstack[front]->rchild == NULL&&bt->Age!=0)
{
bt->parent=Tstack[front];
Tstack[front]->rchild=bt;
}
else if(Tstack[front]->rchild  && Tstack[front]->lchild)
{
front++;
if(front==mid1)
{
mid1=(int)(pow(2age)+0.5);
age++;
}//代计算//
bt->parent=Tstack[front];//指向父节点//
bt->Age=age;
if(strlen(bt->Name)!=0) Tstack[front]->lchild=bt;
}
}
flag=0;//初始化检测值,用来检测是否拷贝了有效数据//
}
fclose(file);
printf(“\n读取成功!\n“);
}
else
{
printf(“file error!you didn‘t create a data file or data file error!\n“);
getch();
exit(0);
}
return root;
}

//创建一个全新的家庭树//

void CreateNewFam

评论

共有 条评论

相关资源