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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

数据结构家谱管理系统.docx

1、数据结构家谱管理系统/题目:家谱资料管理/要求:家谱用于记录某家族历代家族成员的情况与关系。现编制一个家谱资料管理软件,/实现对一个家族所有的资料进行收集整理。支持对家谱的增加,删除,更新,统计等。/#include #include #include int MATEFLAG=0;typedef struct TreeNode int Num; /记录这个人拥有几个儿女 char Name20; /记录这个人的姓名 char Kind; /标示节点的种类有女G男B struct TreeNode * NextNode20; /记录这个人的儿女 struct TreeNode * Parent

2、; /记录这个节点的父节点TreeNode;void CreatTree(TreeNode *Tree);void OutPutAll(TreeNode *Tree);TreeNode * SearchTree(TreeNode *Tree,char name,int length);void MainMenue(TreeNode *Tree);void SubMenue1(TreeNode * Tree);void SubMenue2(TreeNode *Tree);void Change(TreeNode * Tree);void AddNew(TreeNode * Tree);void

3、OutPutMessage(TreeNode * Tree,char name,int length);/主函数void main() TreeNode *Tree; Tree=(TreeNode *)malloc(sizeof(TreeNode); Tree-Parent =NULL; strcpy(Tree-Name,0); MainMenue(Tree);/添加新的成员void AddNew(TreeNode * Tree) SubMenue2(Tree);/输出副菜单void SubMenue2(TreeNode *Tree) char c; int num; char name20;

4、 TreeNode * NewNode; getchar(); while(1) system(cls); printf(t); printf(nnt -*-请选择你的操作-*- ); printf(nt-*-*-*-A:添加某个人的子女的信息-*-*-*-*- ); printf(nt-*-*-*-B:添加某个人配偶的信息-*-*-*-*-*- ); printf(nt-*-*-*-C:退出-*-*-*-*-*-*-*-*-*-nt); c=getchar(); switch(c) case A: printf(nnt请输入那个人的名字:nt); scanf(%s,name); Tree=S

5、earchTree(Tree,name,20); if(Tree=NULL) printf(nnt*该家谱图中没有%s这个人的信息请确认是否输入错误*n,name); break; if(Tree-Parent=NULL&Tree-NextNode0=NULL|Tree-Parent!=NULL&Tree-Name!=Tree-Parent-NextNode0-Name) printf(nnt%s至今还没有配偶请先添加配偶,Tree-Name); break; if(Tree-Parent=NULL&(Tree-Num20|Tree-NumNum=0; if(MATEFLAG=1) Tree=

6、Tree-Parent; NewNode=(TreeNode *)malloc(sizeof(TreeNode); printf(nnt请输入添加人员姓名:nt); scanf(%s,NewNode-Name); printf(nnt请输入添加人员性别女G男B:nt); scanf(%1s,&NewNode-Kind); num=Tree-Num; NewNode-NextNode0=(TreeNode *)malloc(sizeof(TreeNode); NewNode-NextNode0=NULL; NewNode-Num=0; NewNode-Parent=Tree; Tree-Next

7、Nodenum+1=NewNode; Tree-Num=Tree-Num+1; printf(nnt-子女的信息添加成功-); break; case B: printf(nnt请输入那个人的名字:nt); scanf(%s,name); Tree=SearchTree(Tree,name,20); if(Tree-Parent!=NULL&strcmp(Tree-Name,Tree-Parent-NextNode0-Name)=0|Tree-NextNode0!=NULL) printf(nnt已经有了配偶); break; if(Tree=NULL) printf(nnt*该家谱图中没有%

8、s这个人的信息请确认是否输入错误*n,name); break; NewNode=(TreeNode *)malloc(sizeof(TreeNode); printf(nnt请输入添加人员姓名:nt); scanf(%s,NewNode-Name); printf(nnt请输入添加人员性别女G男B:nt); scanf(%1s,&NewNode-Kind); NewNode-Parent=Tree; Tree-NextNode0=NewNode; break; case C: printf(nnt-本项服务到此结束-); break; case n: break; default: prin

9、tf(nnt-对不起!你的选择不在服务范围之内!- ); printf(nt-请您再次选择所需的服务项!- ); printf(nt-谢谢合作!-nt); break; if (c=C|c=c) /? break; printf(nnt-请按Enter键继续操作-); getchar(); getchar(); /修改某个人的信息void Change(TreeNode * Tree) char name20; TreeNode * NewNode; printf(nt请输入你要修改的人的信息:nt); scanf(%s,name); NewNode=SearchTree(Tree,name,

10、20); if(NewNode=NULL) printf(nnt*该家谱图中没有%s这个人的信息请确认是否输入错误*n,name); return; else SubMenue1(NewNode); /输出副菜单void SubMenue1(TreeNode * Tree) char c; int flag,i; char name20; char Parent220; TreeNode * NewNode; getchar(); while(1) system(cls); printf(t); printf(nnt -*-请选择你的操作-*- ); printf(nt-*-*-*-A:修改个

11、人的信息-*-*-*-*-*-*- ); printf(nt-*-*-*-B:修改父母的信息-*-*-*-*-*-*- ); printf(nt-*-*-*-C:修改兄弟姐妹的信息-*-*-*-*-*- ); printf(nt-*-*-*-D:修改子女的信息-*-*-*-*-*-*- ); printf(nt-*-*-*-E:修改配偶的信息-*-*-*-*-*-*- ); printf(nt-*-*-*-F:退出-*-*-*-*-*-*-*-*-*-nt); c=getchar(); switch(c) case A: printf(nnt请输入修改的姓名:如果不需要修改就输入0然后按Ent

12、er键继续nt); scanf(%s,name); if(strcmp(name,0)!=0) strcpy(Tree-Name,name); printf(nnt是否要修改性别:如果需要就输入1不需要修改就输入0然后按Enter键继续nt); scanf(%d,&flag); if (flag=1) if(Tree-Kind=G|Tree-Kind=g) Tree-Kind=B; else Tree-Kind=G; printf(nnt个人信息修改成功); break; case B: if(Tree-Parent=NULL) /判断是不是头节点 printf(nt是这个家谱图里最顶端的人没

13、有父母信息!,name); break; if (MATEFLAG=1) /判断是不是入赘或加入此间的 if(Tree-Kind=G|Tree-Kind=g) printf(nnt她是嫁入此间的所以父母信息不在家谱内包括); else printf(nnt他是入赘此间的所以父母信息不在家谱内包括); break; if(Tree-Parent-Kind=G|Tree-Parent-Kind=g) strcpy(Parent0,母亲); strcpy(Parent1,父亲); else strcpy(Parent0,父亲); strcpy(Parent1,母亲); printf(nnt请输入%s

14、要修改的姓名:如果不需要修改就输入0然后按Enter键继续nt,Parent0); scanf(%s,name); if(strcmp(name,0)!=0) strcpy(Tree-Parent-Name,name); printf(nnt请输入%s要修改的姓名:如果不需要修改就输入0然后按Enter键继续nt,Parent1); scanf(%s,name); if(strcmp(name,0)!=0) strcpy(Tree-Parent-NextNode0-Name,name); printf(nnt-父母的信息修改成功-); break; case C: NewNode=Tree-P

15、arent; if(NewNode=NULL) /判断是不是头节点 printf(nt是这个家谱图里最顶端的人没有兄弟姐妹信息!,name); break; if (MATEFLAG=1) /判断是不是入赘或加入此间的 if(Tree-Kind=G|Tree-Kind=g) printf(nnt她是嫁入此间的所以兄弟姐妹信息不在家谱内包括); else printf(nnt他是入赘此间的所以兄弟姐妹信息不在家谱内包括); break; if(NewNode-Num=1) printf(nnt没有兄弟姐妹); break; else for(i=1;iNum;i+) if(NewNode-Nex

16、tNodei-Name!=Tree-Name) printf(nnt请输入%s修改的姓名:如果不需要修改就输入0然后按Enter键继续nt,NewNode-NextNodei-Name); scanf(%s,name); if(strcmp(name,0)!=0) strcpy(NewNode-NextNodei-Name,name); printf(nnt是否要修改性别:如果需要就输入1不需要修改就输入0然后按Enter键继续nt); scanf(%d,&flag); if (flag=1) if(NewNode-NextNodei-Kind=G|NewNode-NextNodei-Kind

17、=g) NewNode-NextNodei-Kind=B; else NewNode-NextNodei-Kind=G; printf(nnt-兄弟姐妹的信息修改成功-); break; case D: if(Tree-Num=0) printf(nnt至今还没有子女); break; if (Tree-Parent !=NULL) if (strcmp(Tree-Name,Tree-Parent-NextNode0-Name)=0) /如果他是入赘或者是嫁入的就需用配偶节点完成修改 Tree=Tree-Parent; for(i=1;iNum;i+) printf(nnt请输入%s修改的姓名

18、:如果不需要修改就输入0然后按Enter键继续nt,Tree-NextNodei-Name); scanf(%s,name); if(strcmp(name,0)!=0) strcpy(Tree-NextNodei-Name,name); printf(nnt是否要修改性别:如果需要就输入1不需要修改就输入0然后按Enter键继续nt); scanf(%d,&flag); if (flag=1) if(Tree-NextNodei-Kind=G|Tree-NextNodei-Kind=g) Tree-NextNodei-Kind=B; else Tree-NextNodei-Kind=G; p

19、rintf(nnt-子女的信息修改成功-); break; case E: if(Tree-Parent!=NULL) if (Tree-NextNode0=NULL&strcmp(Tree-Name,Tree-Parent-NextNode0-Name)!=0) printf(nnt至今还没有配偶); break; if (strcmp(Tree-Name,Tree-Parent-NextNode0-Name)=0) printf(nnt请输入%s修改的姓名:如果不需要修改就输入0然后按Enter键继续nt,Tree-Parent-Name); scanf(%s,name); if(strc

20、mp(name,0)!=0) strcpy(Tree-Parent-Name,name); else printf(nnt请输入%s修改的姓名:如果不需要修改就输入0然后按Enter键继续nt,Tree-NextNode0-Name); scanf(%s,name); if(strcmp(name,0)!=0) strcpy(Tree-NextNode0-Name,name); else if(Tree-NextNode0=NULL) printf(nnt至今还没有配偶); else printf(nnt请输入%s修改的姓名:如果不需要修改就输入0然后按Enter键继续nt,Tree-Next

21、Node0-Name); scanf(%s,name); if(strcmp(name,0)!=0) strcpy(Tree-NextNode0-Name,name); printf(nnt-配偶的信息修改成功-); break; case F: printf(nnt-本项服务到此结束-); break; case n: break; default: printf(nnt-对不起!你的选择不在服务范围之内!-); printf(nt-请您再次选择所需的服务项!-); printf(nt-谢谢合作!-nt); break; if (c=F|c=f) break; printf(nnt-请按Enter键继续操作-); getchar(); getchar(); /输出主菜单void MainMenue(TreeNode *Tree) char c; char name20; while(1) system(cls); printf(t); printf(nnt -*-请选择你的操作-*-); printf(nt-A:输入家谱信息建立多叉树-); printf(nt-B:在家族中查找某人并输出他或(她)的相应信息-); printf(nt-C:添加新的成员-); printf(nt-

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

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