数据结构_家谱管理系统

上传人:桔**** 文档编号:564720726 上传时间:2023-05-22 格式:DOCX 页数:16 大小:23.33KB
返回 下载 相关 举报
数据结构_家谱管理系统_第1页
第1页 / 共16页
数据结构_家谱管理系统_第2页
第2页 / 共16页
数据结构_家谱管理系统_第3页
第3页 / 共16页
数据结构_家谱管理系统_第4页
第4页 / 共16页
数据结构_家谱管理系统_第5页
第5页 / 共16页
点击查看更多>>
资源描述

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

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

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

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

4、*lc,*rc;BiTNode,*BiTree;/ /树的相关操作char name temp 50;/姓名char birt hda yt emp50;/生日char addresstempMAXN;/住址bool marriage temp;/婚否(t rue表示结婚,false表示没结婚)bool live temp;/建在(t rue表示或者,false表示过世)bool sextemp;char livemassage tempMAXN;/死亡日期(如果其已经死亡) char ch;/额外使用 int level temp;/人的代数 int Nth;/显示第n代人时要用char s

5、earchdata50;char searchname50;int cou nt;/计数int choice;/各种选择int use;BiTree temp;struct BiTNodeListBiTree data; BiTNodeList *next;BiTNodeList *List;void Crea tBiTree(BiTree & T,FILE *in)/建立双链二叉树fscanf(in,%c,&ch);/printf(%cn,ch);if(ch = )T = NULL; fscanf(in,%c,&ch);elseT = (BiTree)malloc(sizeof(BiTNod

6、e);/fscanf(in,%s%s%s%d%d,nametemp,birthdaytemp,addresstemp,&marriagetemp,&livete mp);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,&levelt

7、emp,&sextemp); T-marriage = 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);f

8、scanf(in,%c,&ch);CreatBiTree(T-lc,in);CreatBiTree(T-rc,in);void PrintInfo(BiTree T)printf(%TOs 出生于:TOs%TOs,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-livemass

9、age);void PreOrderTraverse_recursion(BiTree T)/递归 先序遍历(检查建树是否正确) /printf(PreOrderTraverse_recursionn);if(T)/*printf(%TOs 出生于:T0s%T0s,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)pri

10、ntf (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; ilc;pri ntf( 水 %5s%n,p-name); if(p-rc)p = p-rc;ShowFamilyTree(p);elseprin tf(未婚)n);if(T-rc)p = T-

11、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-

12、lc-rc)temp = T-lc-rc;while(temp)if(strcmp(temp-name,searchname) = 0)count+;printf(n 此人的信息为: n);PrintInfo(temp);/printf(%-10s%-10s%-10s%5d%5d%5dnn,temp-name,temp-birthday,temp-address, temp-marriage,temp-live,temp-sex);prin tf(此人父母的信息为:n);PrintInfo(T);PrintInfo(T-lc);/printf(%-10s%-10s%-10s%5d%5d%5dn

13、,T-name,T-birthday,T-address,T-marriage,T-live,T-sex);/printf(%-10s%-10s%-10s%5d%5d%5dnn,T-lc-name,T-lc-birthday,T-lc-addre ss,T-lc-marriage,T-lc-live,T-lc-sex);if(!temp-livemassage)prin tf(此人还没有妻室n);elseprin tf(此人妻子的信息为:n);PrintInfo(temp-lc);/printf(%-10s%-10s%-10s%5d%5d%5dnn,temp-lc-name,temp-lc-birthday,temp-lc-address,temp-lc-marriage,temp-lc-live,temp-lc-sex);if(temp-lc-rc)prin tf(此人孩子的信息为:n);temp = temp-lc-rc;while(temp)PrintInfo(temp);/printf(%-10s%-10s%-10s%5

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

当前位置:首页 > 学术论文 > 其它学术论文

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