家谱管理系统 -数据结构大作业
/* 家谱管理系统 任务:实现具有下列功能的家谱管理系统 功能要求: 1). 输入文件以存放最初家谱中各成员的信息,成员的信息中均应包含以下内容: 姓名、诞生日期、婚否、地址、健在否、死亡日期(若其已死亡),也可附加其它信息、但不是必需的。 2). 实现数据的存盘和读盘。 3). 以图形方式显示家谱。 4). 显示第n 代全部人的信息。 5). 依据姓名查询,输出成员信息(包括其本人、父亲、孩子的信息)。 6). 依据诞生日期查询成员名单。 7). 输入两人姓名,确定其关系。 8). 某成员添加孩子。 9). 删除某成员(若其还有后代,则一并删除)。 10).修改某成员信息。 11).按诞生日期对家谱中全部人排序。 12).打开一家谱时,提示当天生日的健在成员。 要求:建立至少30个成员的数据,以较为直观的方式显示结果,并供应文稿形式以便检查。 界面要求:有合理的提示,每个功能可以设立菜单,依据提示,可以完成相关的功能要求。 存储结构:学生自己依据系统功能要求自己设计,但是要求相关数据要存储在数据文件中。 测试数据:要求运用1、全部合法数据;2、局部非法数据。进行程序测试,以保证程序的稳定。 测试数据与测试结果请在上交的资料中写明; */ #include #include #include #include #include“map.h“ #define MAXN 100 #define MAXMEM 100 #define Elemtype char ============================== //树 typedef struct BiTNode { int mark;//标记 int level; char name[50];//姓名 char birthday[50];//生日 char address[MAXN];//住址 bool marriage;//婚否(true表示结婚,false表示没结婚) bool live;//建在(true表示活着,false表示过世) bool sex;//性别(true表示男,false表示女) char livemassage[50];//死亡日期(假如其已经死亡) Elemtype data;// struct BiTNode *lc,*rc; }BiTNode,*BiTree; //树的相关操作 char nametemp[50];//姓名 char birthdaytemp[50];//生日 char addresstemp[MAXN];//住址 bool marriagetemp;//婚否(true表示结婚,false表示没结婚) bool livetemp;//建在(true表示或者,false表示过世) bool sextemp; char livemassagetemp[MAXN];//死亡日期(假如其已经死亡) char ch;//额外运用 int leveltemp;//人的代数 int Nth;//显示第n代人时要用 char searchdata[50]; char searchname[50]; int count;//计数 int choice;//各种选择 int use; BiTree temp; struct BiTNodeList { BiTree data; BiTNodeList *next; }; BiTNodeList *List; //----------- void CreatBiTree(BiTree //printf(“%c\n“,ch); if(ch == @ ) { T = NULL; fscanf(in,“%c“, } else { T = (BiTree)malloc(sizeof(BiTNode)); //fscanf(in,“%s%s%s%d%d“,nametemp,birthdaytemp,addresstemp, fscanf(in,“%s“,nametemp); strcpy(T->name,nametemp); fscanf(in,“%s“,birthdaytemp); strcpy(T->birthday,birthdaytemp); fscanf(in,“%s“,addresstemp); strcpy(T->address,addresstemp); fscanf(in,“%d%d%d%d“, T->marriage = marriagetemp; T->live = livetemp; T->level = leveltemp; T->sex = sextemp; //printf(“%s %s %s %d %d\n“,nametemp,birthdaytemp,addresstemp,marriagetemp,livetemp); if(!livetemp) { fscanf(in,“%s“,livemassagetemp); //printf(“%s\n“,livemassagetemp); } if(!T->live) strcpy(T->livemassage,livemassagetemp); fscanf(in,“%c“, CreatBiTree(T->lc,in); CreatBiTree(T->rc,in); } } void PrintInfo(BiTree T) { printf(“%-10s诞生于:%-10s%-10s“,T->name,T->birthday,T->address); if(T->marriage)