好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

大数据结构课程设计家族关系.doc

17页
  • 卖家[上传人]:大米
  • 文档编号:439995935
  • 上传时间:2022-07-28
  • 文档格式:DOC
  • 文档大小:201KB
  • / 17 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • word课程名称: 《数据结构》课程设计课程设计题目: 家族关系查询系统姓 名: 周楠院系: 计算机学院 专 业: 软件工程 年 级: 2011 学 号: E01114323指导教师: 王爱平2013 年 9月25日 目 录 1 课程设计的目的…………………………2 需求分析…………………………………3 课程设计报告内容…………………………………………………………………………………………………………………………………………………………………………………………………………………………………4 小结 ………………………………………5 参考文献 …………………………………(1) 熟练使用 C 语言编写程序,解决实际问题;(2) 了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;(3) 初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等根本方法和技能;(4) 提高综合运用所学的理论知识和方法独立分析和解决问题的能力;随着社会开展,人们使用纸质的家谱已经非常不方便而且不利于在家谱里进展添加和修改而用算法设计一个家族关系查询系统如此可以解决这个问题数据结构的二叉树刚好满足家谱的根本结构。

      首先建立一个文件作为家谱,然后在文件中输入字符串,实现了在文件中按照数据的逻辑关系进进输入便可建立相应的三叉链表然后就是进展数据的存储、删除与查找工作3. 算法分析本次设计研究的是建立家族关系,实现对家族成员关系相关查询的问题在设计中使用的数据结构为树状结构,树状结构采用三叉链表实现我们在建立好家族关系后将其存储在文件中,在文件中家族关系是以树的形式存储,运用树的操作使家族关系得以准确建立 家族关系查询系统可分为六大模块,分别是创建、修改、查询、保存、退出等建立家族关系模块,建立家族关系并存入文件建立时首先输入家族关系的名称,以此名称为名建立文本文件接下来按层输入成员某某,输入一个在文件中写入一个字符串,以回车键完毕打开一个家族关系在界面输入选项名,以家族关系名为文件名打开文件,如果家族关系不存在,返回空;如果存在,打开文件,读取文件向家族中添加一个新成员,添加的新成员要根据其父亲确定其在家族中的位置首先判断该父亲是否在此家族关系中,假如存在,如此查找其父亲,将新节点插入其父亲的最后一个孩子之后;假如没有孩子,直接作为左孩子插入以写入的方式打开文件,更新数组中的信息,然后将数组中的信息写入文件保存,关闭文件。

      查找功能模块,查找一个成员的所有祖先与其兄弟,查找一个成员的所有祖先路径,需要从它的父亲一直向上查找带根结点查找一个成员的兄弟,一个成员的兄弟为其父亲除了该结点以外的所有孩子对于要操作的结点,先判断它是否是根结点,假如是根结点,如此无兄弟;假如不是根结点,如此找到该结点的父亲接着判断父亲的兄弟是否都存在,如果都不存在,如此无兄弟;如果都存在,对父亲的孩子操作4. 源程序#include #include #include #include typedef char TElemType; typedef int status; typedef struct BiTPNode{ TElemType data[10]; struct BiTPNode *parent,*lchild,*rchild; //父亲与左右孩子指针}BiTPNode,*BiPTree; BiPTree P; BiPTree T; //家谱的创建int Cre() { system("cls"); FILE *fp; //声明指向文件的指针 char filename[40],str[10]; printf("请输入家谱名称:"); getchar(); gets(filename); //输入家谱名称 while(filename[0]==NULL) { printf("家谱名不能为空,请重新输入:"); gets(filename); } if((fp=fopen(filename,"w"))==NULL) { printf("%s家谱创建失败!\n",filename); return 0; } printf("请输入家谱内容:\n"); while (strlen(gets(str))>0) { fputs(str,fp); //向文件写入字符串 putc('\n',fp); } fclose(fp); //关闭文件 printf("按任一键继续!"); getch(); return 1; } status loc(BiPTree T,BiPTree &P,TElemType name[10]){ if(T){P=T; //字符串的比拟 if(!strcmp(name,T->data)) return 1; if(loc(T->lchild,P,name)) return 1; if(loc(T->rchild,P,name)) return 1;} else return 0; } //构造二叉树status inittree(BiPTree &T){ T=(BiTPNode *)malloc(sizeof(BiTPNode)); if(T) return 0; T->lchild=NULL; T->rchild=NULL; T->parent=NULL; return 1; } //载入家谱status Crt(BiPTree &T){ FILE *fp; BiPTree Q,R,M,N; char filename[40],name[10]; system("cls"); //清屏 R=(BiTPNode *)malloc(sizeof(BiTPNode)); //分配存储空间 M=(BiTPNode *)malloc(sizeof(BiTPNode)); N=(BiTPNode *)malloc(sizeof(BiTPNode)); printf("请输入家谱名:"); getchar(); gets(filename); while(filename[0]==NULL) { printf("家谱名不能为空,请重新输入:"); gets(filename); } if((fp=fopen(filename,"r"))==NULL) { printf("%s家谱打开失败!\n",filename); return 0; } inittree(T); fscanf(fp,"%s",name); //从文件读入某某 strcpy(T->data,name); T->lchild=NULL; T->rchild=NULL; T->parent=NULL; fclose(fp); if((fp=fopen(filename,"r"))==NULL) { printf("%家谱打开失败!\n",filename); return 0; } fscanf(fp,"%s",name); while(!feof(fp)){ if(loc(T,P,name)){ fscanf(fp,"%s",name); Q=(BiTPNode *)malloc(sizeof(BiTPNode)); strcpy(Q->data,name); P->lchild=Q; //构建孩子 Q->parent=P; Q->lchild=NULL; Q->rchild=NULL; N=P; } else if(!loc(T,P,name)){ Q=(BiTPNode *)malloc(sizeof(BiTPNode)); R=N; R=R->lchild; while(R){ M=R; R=R->rchild;} strcpy(Q->data,name); M->rchild=Q; Q->parent=M; Q->lchild=NULL; Q->rchild=NULL;} fscanf(fp,"%s",name); } printf("信息载入成功,按任一键继续!"); getch(); return 1; } //添加成员status in(BiPTree &T){ char father[10],name[10]; BiPTree Q,M; system("cls"); printf("请输入要添加到该家谱中的人的父亲某某:"); getchar(); gets(father); while(!loc(T,P,father)){ printf("%s不在该家谱中!请重新输入:",father); gets(father);} printf("请输入要添加到该家谱中的人的某某:"); gets(name); Q=(BiTPNode *)malloc(sizeof(BiTPNode)); M=(BiTPNode *)malloc(sizeof(BiTPNode)); strcpy(Q->data,name); Q->lchild=NULL; Q->rchild=NULL; if(!P->lchild){ P->lchild=Q; 。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.