家谱管理系统 -数据结构大作业

上传人:简****9 文档编号:107479052 上传时间:2019-10-19 格式:DOC 页数:18 大小:87.50KB
返回 下载 相关 举报
家谱管理系统 -数据结构大作业_第1页
第1页 / 共18页
家谱管理系统 -数据结构大作业_第2页
第2页 / 共18页
家谱管理系统 -数据结构大作业_第3页
第3页 / 共18页
家谱管理系统 -数据结构大作业_第4页
第4页 / 共18页
家谱管理系统 -数据结构大作业_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《家谱管理系统 -数据结构大作业》由会员分享,可在线阅读,更多相关《家谱管理系统 -数据结构大作业(18页珍藏版)》请在金锄头文库上搜索。

1、/* 家谱管理系统 任务:实现具有下列功能的家谱管理系统功能要求:1). 输入文件以存放最初家谱中各成员的信息,成员的信息中均应包含以下内容:姓名、出生日期、婚否、地址、健在否、死亡日期(若其已死亡),也可附加其它信息、但不是必需的。2). 实现数据的存盘和读盘。3). 以图形方式显示家谱。4). 显示第n 代所有人的信息。5). 按照姓名查询,输出成员信息(包括其本人、父亲、孩子的信息)。6). 按照出生日期查询成员名单。7). 输入两人姓名,确定其关系。8). 某成员添加孩子。9). 删除某成员(若其还有后代,则一并删除)。10).修改某成员信息。11).按出生日期对家谱中所有人排序。12

2、).打开一家谱时,提示当天生日的健在成员。要求:建立至少30个成员的数据,以较为直观的方式显示结果,并提供文稿形式以便检查。界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。存储结构:学生自己根据系统功能要求自己设计,但是要求相关数据要存储在数据文件中。测试数据:要求使用1、全部合法数据;2、局部非法数据。进行程序测试,以保证程序的稳定。测试数据及测试结果请在上交的资料中写明;*/#include#include#include#include#includemap.h#define MAXN 100#define MAXMEM 100#define Elemty

3、pe char=/树typedef struct BiTNodeint mark;/标记 int level; char name50;/姓名 char birthday50;/生日 char addressMAXN;/住址 bool marriage;/婚否(true表示结婚,false表示没结婚) bool live;/建在(true表示活着,false表示过世) bool sex;/性别(true表示男,false表示女) char livemassage50;/死亡日期(如果其已经死亡) Elemtype data;/ struct BiTNode *lc,*rc; BiTNode,*

4、BiTree;/树的相关操作char nametemp50;/姓名char birthdaytemp50;/生日char addresstempMAXN;/住址bool marriagetemp;/婚否(true表示结婚,false表示没结婚)bool livetemp;/建在(true表示或者,false表示过世)bool sextemp;char livemassagetempMAXN;/死亡日期(如果其已经死亡)char ch;/额外使用int leveltemp;/人的代数int Nth;/显示第n代人时要用char searchdata50;char searchname50;int

5、 count;/计数int choice;/各种选择int use;BiTree temp;struct BiTNodeList BiTree data; BiTNodeList *next;BiTNodeList *List;/-void CreatBiTree(BiTree &T,FILE *in)/建立双链二叉树 fscanf(in,%c,&ch); /printf(%cn,ch); if(ch = ) T = NULL; fscanf(in,%c,&ch); else T = (BiTree)malloc(sizeof(BiTNode); /fscanf(in,%s%s%s%d%d,n

6、ametemp,birthdaytemp,addresstemp,&marriagetemp,&livetemp); 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,&marriagetemp,&livetemp,&leveltemp,&sextemp); T-marria

7、ge = marriagetemp; T-live = livetemp; T-level = leveltemp; T-sex = sextemp; /printf(%s %s %s %d %dn,nametemp,birthdaytemp,addresstemp,marriagetemp,livetemp); if(!livetemp) fscanf(in,%s,livemassagetemp); /printf(%sn,livemassagetemp); if(!T-live) strcpy(T-livemassage,livemassagetemp); fscanf(in,%c,&ch

8、); 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) printf(t已婚); if(!T-marriage) printf(t未婚); if(T-sex) printf(t男); if(!T-sex) printf(t女); if(T-live) printf(t健在n); if(!T-live) printf(t去世于:%sn,T-livemassage);v

9、oid PreOrderTraverse_recursion(BiTree T)/递归 先序遍历(检查建树是否正确)/printf(PreOrderTraverse_recursionn);if(T)/*printf(%-10s出生于:%-10s%-10s,T-name,T-birthday,T-address); if(T-marriage) printf(t已婚); if(!T-marriage) printf(t未婚); if(T-sex) printf(t男); if(!T-sex) printf(t女); if(T-live) printf(t健在n); if(!T-live) pr

10、intf(t去世于:%sn,T-livemassage);*/ PrintInfo(T);PreOrderTraverse_recursion(T-lc);PreOrderTraverse_recursion(T-rc); void ShowFamilyTree(BiTree T)/以图形的方式显示家谱 int i,lev; BiTree p; p = T; if(T) lev = T-level; for(i=0; iname); if(p-lc) p = T-lc; printf( %5s%n,p-name); if(p-rc) p = p-rc; ShowFamilyTree(p); e

11、lse printf( (未婚)n); if(T-rc) p = T-rc; ShowFamilyTree(p); void ShowNth(BiTree T)/显示第n代所有人的信息 if(T) if(T-level = Nth) PrintInfo(T); /printf(%-10s%-10s%-10s%5d%5d%5dn,T-name,T-birthday,T-address,T-marriage,T-live,T-sex); count+; ShowNth(T-lc);ShowNth(T-rc); void SearchByName(BiTree T)/按照姓名查询,输出成员信息(包括其本人、父亲、孩子的信息)。不能查询祖先信息 if(T)if(T-lc) if(T-lc-rc)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 管理学资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号