ImageVerifierCode 换一换
格式:DOCX , 页数:28 ,大小:19.88KB ,
资源ID:22258607      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/22258607.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(家谱管理系统 数据结构大作业规程指导Word文档下载推荐.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

家谱管理系统 数据结构大作业规程指导Word文档下载推荐.docx

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

2、Elemtype data;/ struct BiTNode *lc,*rc; BiTNode,*BiTree;/树的相关操作char nametemp50;char birthdaytemp50;char addresstempMAXN;bool marriagetemp;bool livetemp;/建在(true表示或者,false表示过世)bool sextemp;char livemassagetempMAXN;char ch;/额外使用int leveltemp;/人的代数int Nth;/显示第n代人时要用char searchdata50;char searchname50;i

3、nt 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; else T = (BiTree)malloc(sizeof(BiTNode); /fscanf(in,%s%s%s%d%d,nametemp,birthdayt

4、emp,addresstemp,&marriagetemp,&livetemp);%s,nametemp); strcpy(T-name,nametemp);,birthdaytemp);birthday,birthdaytemp);,addresstemp);address,addresstemp);%d%d%d%dlivetemp,&leveltemp,&sextemp); T-marriage = marriagetemp;live = livetemp;level = leveltemp;sex = sextemp;%s %s %s %d %dn,nametemp,birthdayte

5、mp,addresstemp,marriagetemp,livetemp); if(!livetemp) ,livemassagetemp);%snT-live)livemassage,livemassagetemp); CreatBiTree(T-lc,in);rc,in); void PrintInfo(BiTree T) printf(%-10s出生于:%-10s%-10s,T-name,T-birthday,T-address); if(T-marriage)t已婚);t未婚sex)t男t女t健在nt去世于:livemassage);void PreOrderTraverse_recu

6、rsion(BiTree T)/递归 先序遍历(检查建树是否正确)PreOrderTraverse_recursionn if(T) /*printf( PrintInfo(T); PreOrderTraverse_recursion(T-lc);rc);void ShowFamilyTree(BiTree T)/以图形的方式显示家谱 int i,lev; BiTree p; p = T; lev = T-level; for(i=0; iname); if(p-lc) p = T-lc; %5s%nrc) p = p-rc; ShowFamilyTree(p); (未婚)nvoid Show

7、Nth(BiTree T)/显示第n代所有人的信息level = Nth)%-10s%-10s%-10s%5d%5d%5dnaddress,T-marriage,T-live,T-sex); count+; ShowNth(T-void SearchByName(BiTree T)/按照姓名查询,输出成员信息(包括其本人、父亲、孩子的信息)。不能查询祖先信息 if(T-lc- temp = T- while(temp) if(strcmp(temp-name,searchname) = 0)n此人的信息为: n PrintInfo(temp);%-10s%-10s%-10s%5d%5d%5dn

8、n,temp-name,temp-birthday,temp-address,temp-marriage,temp-live,temp-此人父母的信息为: PrintInfo(T-temp-livemassage)此人还没有妻室n此人妻子的信息为: PrintInfo(temp- if(temp-此人孩子的信息为: temp = temp- return; SearchByName(T-void SearchByBirthday(BiTree T)/按照出生日期查询成员名单 if(strcmp(T-birthday,searchdata) = 0) SearchByBirthday(T-voi

9、d AddChild(BiTree &T)/某成员添加孩子该成员还没有结婚,不能添加孩子n不能为该家谱中的女性添加孩子n temp = (BiTree)malloc(sizeof(BiTNode);请输入添加孩子的姓名n scanf(请输入添加孩子的出生年月(格式形如: 2010-1-1)nbirthday);请输入添加孩子的家庭住址n请输入添加孩子的婚姻状况 0/1 (0表示未婚,1表示已婚)n%dmarriage);请输入添加孩子的在世情况 0/1 (0表示去世,1表示在世)nlive);请输入添加孩子的去世时间(格式形如:请输入添加孩子的性别 0/1 (0表示女,1表示男)n temp-

10、level = T-level+1;rc = T-lc = NULL;rc = temp;孩子添加成功n AddChild(T-void AddWife(BiTree &T)/某成员添加妻子该成员已有妻子,可以通过修改的方式替换该妻子n请输入添加妻子的姓名n请输入添加妻子的出生年月(格式形如:请输入添加妻子的家庭住址n请输入添加妻子的婚姻状况0/1 (0表示未婚,1表示已婚)n请输入添加妻子的在世情况(0表示去世,1表示在世)n请输入添加妻子的去世时间(格式形如:请输入添加妻子的性别 0/1 (0表示女,1表示男)nrc = NULL;lc = temp;marriage = true;妻子添

11、加成功n AddWife(T-void DeleteByName(BiTree &T)/删除某成员(若其还有后代,则一并删除) if(strcmp(T- DeleteByName(T-void FixLevel(BiTree T) count = T- FixLevel(T-void FixRelation(BiTree T)/输入两人姓名,确定其关系 int levo,levt; char levone50,levtwo50;请输入第一个人的姓名n,searchname); strcpy(levone,searchname); FixLevel(T); levo = count; if(le

12、vo = -1)家谱无此人,请从新进入n请输入第二个人的姓名n strcpy(levtwo,searchname); levt = count; if(levt = -1)家谱无此人n if(levo ,levtwo,levone,levo-levt); else if(levo = levt)%s 和 %s 平辈n,levone,levtwo);void ShowAmend()1.修改姓名n2.修改出生年月n3.修改家庭住址n4.修改婚姻状况n5.修改在世情况n6.修改性别n7.返回上一级n请输入选项(1-7): void DoAmend(BiTree &T) while(1) system

13、(cls ShowAmend();choice); switch(choice) case 1:请输入修改后的姓名: break; case 2:请输入修改后的出生年月: case 3:请输入修改后的住址: case 4:请输入修改后的婚姻状况: case 5:请输入修改后的在世情况:请输入本人的过世时间: case 6:请输入修改后的性别(1表示男,0表示女): case 7: default:输入非法,请重新输入nvoid AmendInfo(BiTree &T)/修改某成员信息。 DoAmend(T); AmendInfo(T-void Sequence(BiTree T)/按出生日期对家谱中所有人排序。 BiTNodeList *temp; BiTNodeList *p; temp = (BiTNodeList *)malloc(sizeof(BiTNodeList);data = T; /p = List; /while(p- for(p=List; (p-next!=NULL)&(strcmp(p-next-data-bir

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1