欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    家谱管理方案计划系统.docx

    • 资源ID:12585801       资源大小:20.31KB        全文页数:26页
    • 资源格式: DOCX        下载积分:6金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要6金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    家谱管理方案计划系统.docx

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

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

    3、fi ne Elemtype 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;BiTNod

    4、e,*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 search name

    5、50;int count;/ 计数int choice;/各种选择int use;BiTree temp;struct BiTNodeList BiTree data;BiTNodeList *n ext;BiTNodeList *List;/ void CreatBiTree(BiTree &T,FILE *in) 建立双链二叉树 fsca nf(in ,%c, &ch);/prin tf(%c n ,ch);if(ch = )T = NULL;fscanf(in ,%c,&ch);elseT = (BiTree)malloc(sizeof(BiTNode);/fsca nf(i n,%s%

    6、s%s%d%d, nametemp,birthdaytemp,addresstemp,&marriagetemp,& livetemp); fsca nf(i n,%s, nametemp);strcpy(T-n ame ,n ametemp);fscanf(in ,%s,birthdaytemp);strcpy(T-birthday,birthdaytemp);fscanf(in ,%s,addresstemp);strcpy(T-address,addresstemp);fsca nf(i n,%d%d%d%d,&marriagetemp,&livetemp,&leveltemp, &se

    7、xtemp); T-marriage = marriagetemp;T-live = livetemp;T-level = leveltemp;T-sex = sextemp;/prin tf(%s %s %s %d %dn, nametemp,birthdaytemp,addresstemp,marriagetemp,livetemp);if(!livetemp)fscanf(in ,%s,livemassagetemp);/pri ntf(%sn,livemassagetemp);if(!T-live)strcpy(T-livemassage,livemassagetemp);fscanf

    8、(in ,%c,&ch);CreatBiTree(T-lc,i n);CreatBiTree(T-rc,i n);void Printin fo(BiTree T)printf(%-10s 出生于:%-10s%-10s,T-name,T-birthday,T-address); if(T-marriage)prin tf(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-live

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

    10、(!T-live)printf(t 去世于:%sn,T-livemassage);*/Printin fo(T);PreOrderTraverse_recursio n(T-lc);PreOrderTraverse_recursio n(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

    11、);elseprintf(未婚)n);if(T-rc)p = T-rc;ShowFamilyTree(p); void ShowNth(BiTree T)/显示第n代所有人的信息 if(T)if(T-level = Nth)Prin tI nfo(T);pri ntf(%-10s%-10s%-10s%5d%5d%5dn,T- name,T-birthday,T-address,T-marriage,T-live,T- sex);coun t+;ShowNth(T-lc);ShowNth(T-rc); void SearchByName(BiTree T)/按照姓名查询,输出成员信息(包括其本人

    12、、父亲、孩子的信息)。不能查询祖先信息if(T)if(T-lc)if(T-lc-rc)temp = T-lc-rc;while(temp)if(strcmp(temp-n ame,search name) = 0)coun t+;printf(n此人的信息为:n);Prin tI nfo(temp);pri ntf(%-10s%-10s%-10s%5d%5d%5dnn ”,temp- name,temp-birthday,temp-address,temp-marriage,temp-live,temp-sex);printf(此人父母的信息为:n);Prin tI nfo(T);Printi

    13、n fo(T-lc);pri ntf(%-10s%-10s%-10s%5d%5d%5dn,T- name,T-birthday,T-address,T-marriage,T-live,T- sex);/pri ntf(%-10s%-10s%-10s%5d%5d%5dnn ,T-lc- n ame,T-lc-birthday,T-lc-address,T-lc-m arriage,T-lc-live,T-lc-sex);if(!temp-livemassage)printf(此人还没有妻室n);elseprintf(此人妻子的信息为:n);Prin ti nfo(temp-lc);/pri nt

    14、f(%-10s%-10s%-10s%5d%5d%5dnn ,temp-lc- n ame,temp-lc-birthday,temp-lc-add ress,temp-lc-marriage,temp-lc-live,temp-lc-sex);if(temp-lc-rc)printf(此人孩子的信息为:n);temp = temp-lc-rc;while(temp)Prin ti nfo(temp);/pri ntf(%-10s%-10s%-10s%5d%5d%5dn,temp- name,temp-birthday,temp-address,temp- marriage,temp-live,

    15、temp-sex);temp = temp-rc;return;elsetemp = temp-rc;SearchByName(T-lc);SearchByName(T-rc);void SearchByBirthday(BiTree T)/按照出生日期查询成员名单if(T)if(strcmp(T-birthday,searchdata) = 0)Prin tI nfo(T);pri ntf(%-10s%-10s%-10s%5d%5d%5dn,T- name,T-birthday,T-address,T-marriage,T-live,T-sex);coun t+;SearchByBirthd

    16、ay(T-lc);SearchByBirthday(T-rc);void AddChild(BiTree &T) 某成员添加孩子if(T)if(strcmp(T-n ame,search name) = 0)coun t+;if(!T-lc)printf(该成员还没有结婚,不能添加孩子 n);return;if(!T-sex)printf(不能为该家谱中的女性添加孩子 n);return;elsetemp = (BiTree)malloc(sizeof(BiTNode);printf(请输入添加孩子的姓名n); sca nf(%s,temp-n ame);(格式形如:2010-1-1)n);n

    17、);0/1 (0表示未婚,1表示已婚)n);0/1 (0表示去世,1表示在世)n);(格式形如:2010-1-1)n);0/1 (0表示女,1表示男)n);printf(请输入添加孩子的出生年月 scan f(%s,temp-birthday);printf(请输入添加孩子的家庭住址 sca nf(%s,temp-address);printf(请输入添加孩子的婚姻状况 sca nf(%d, &temp-marriage);printf(请输入添加孩子的在世情况 scan f(%d, &temp-live);if(!temp-live) printf(请输入添加孩子的去世时间 sca nf(%

    18、s,temp-livemassage); printf(请输入添加孩子的性别 scan f(%d,& temp-sex);temp-level = T-level+1; temp-rc = T-lc-rc; temp-lc = NULL; T-lc-rc = temp; printf(孩子添加成功n); return;AddChild(T-lc);AddChild(T-rc); void AddWife(BiTree &T) 某成员添加妻子 if(T)if(strcmp(T-n ame,search name) = 0)coun t+;if(T-lc)printf(该成员已有妻子,可以通过修改

    19、的方式替换该妻子 n);return;elsetemp = (BiTree)malloc(sizeof(BiTNode);printf(请输入添加妻子的姓名 n);sca nf(%s,temp-n ame);(格式形如:2010-1-1)n);n);0/1 (0表示未婚,1表示已婚)n);(0表示去世,1表示在世)n);(格式形如:2010-1-1)n);0/1 (0表示女,1表示男)n);printf(请输入添加妻子的出生年月 scan f(%s,temp-birthday);printf(请输入添加妻子的家庭住址 sca nf(%s,temp-address);printf(请输入添加妻子

    20、的婚姻状况 sca nf(%d, &temp-marriage);printf(请输入添加妻子的在世情况 scan f(%d, &temp-live);if(!temp-live) printf(请输入添加妻子的去世时间 sca nf(%s,temp-livemassage); printf(请输入添加妻子的性别 scan f(%d,& temp-sex);temp-level = T-level; temp-lc = NULL; temp-rc = NULL; T-lc = temp; T-marriage = true; printf(妻子添加成功n); return;AddWife(T-

    21、lc);AddWife(T-rc); void DeleteByName(BiTree &T)删除某成员(若其还有后代,则一并删除)pri ntf(PreOrderTraverse_recursio nn);if(T)if(strcmp(T-n ame,search name) = 0)coun t+;T = NULL;return;pri ntf(%-10s%-10s%-10s%5d%5d%5dn,T- name,T-birthday,T-address,T-marriage,T-live,T- sex);DeleteByName(T-lc);DeleteByName(T-rc); void

    22、 FixLevel(BiTree T)if(T)if(strcmp(T-n ame,search name) = 0)count = T-level;FixLevel(T-lc);FixLevel(T-rc);void FixRelatio n(BiTree T)/输入两人姓名,确定其关系 int levo,levt;char levo ne50,levtwo50;printf(请输入第一个人的姓名 n);sca nf(%s,search name);strcpy(lev on e,search name);FixLevel(T);levo = count;if(levo = -1)print

    23、f(家谱无此人,请从新进入 n);return;printf(”请输入第二个人的姓名n);sea nf(%s,search name);strcpy(levtwo,search name);FixLevel(T);levt = count;if(levt = -1)printf(家谱无此人n);return;if(levo levt)printf(%s 比 %s 大 %d 辈 n,levtwo,levone,levo-levt);else if(levo = levt)printf(%s 和 %s 平辈 n,levone,levtwo);void ShowAme nd()printf(1.修改

    24、姓名 n”);printf(2.修改出生年月n);printf(3.修改家庭住址n);printf(4.修改婚姻状况n);printf(5.修改在世情况n);printf(6.修改性别 n”);printf(7.返回上一级 n”);printf(请输入选项(1-7):); void DoAme nd(BiTree &T)while(1)system(cls);ShowAme nd();scan f(%d, &choice);switch(choice)case 1:printf(请输入修改后的姓名:”); scan f(%s,T- name);break;case 2:printf(请输入修改

    25、后的出生年月:”); scan f(%s,T-birthday);break;case 3:printf(请输入修改后的住址:);scan f(%s,T-address);break;case 4:printf(请输入修改后的婚姻状况:”);scan f(%d, &T-marriage);break;case 5:printf(请输入修改后的在世情况:);scan f(%d, &T-live);if(!T-live)printf(请输入本人的过世时间:”); sca nf(%s,T-livemassage);break;case 6:0表示女):);printf(请输入修改后的性别(1表示男,

    26、 scan f(%d,& T-sex);case 7:return;default:printf(输入非法,请重新输入 n);break;void Amendlnfo(BiTree &T) 修改某成员信息。if(T)if(strcmp(T-n ame,search name) = 0)coun t+;DoAme nd(T);return;Ame ndIn fo(T-lc);Amendlnfo(T-rc);void Seque nce(BiTree T)/按出生日期对家谱中所有人排序。if(T)BiTNodeList *temp;BiTNodeList *p;temp = (BiTNodeLis

    27、t *)malloc(sizeof(BiTNodeList);temp-data = T;/p = List;while(p-)for(p=List;(p-n ext!=NULL )&( strcmp(p-n ext-data-birthday,temp-data-birthday)n ext);temp-next = p-n ext;p-next = temp;Seque nce(T-lc);Seque nce(T-rc);void Prin tSeque nce(BiTree T)BiTNodeList *p;p = List;Seque nce(T);printf(tttt 排序结果 nn);Prin tLi ne();prin tf(n);while(p-next != NULL)printf( );Prin tI nfo(p-n ext-data);


    注意事项

    本文(家谱管理方案计划系统.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开