电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

大数据结构课程设计家族关系查询系统要点VIP免费

大数据结构课程设计家族关系查询系统要点_第1页
1/29
大数据结构课程设计家族关系查询系统要点_第2页
2/29
大数据结构课程设计家族关系查询系统要点_第3页
3/29
实用标准文案精彩文档1课程设计介绍1.1课程设计项目简介家谱是一种以表谱形式,记载一个以血缘关系为主体的家族世系繁衍和重要人物事迹的特殊图书载体。家谱是中国特有的文化遗产,是中华民族的三大文献之一,属珍贵的人文资料,对于历史学,民俗学,人口学,社会学和经济学的深入研究,均有不可替代的重要功能。本项目对家谱管理进行简单的模拟,以实现查看祖先和子孙个人信息、插入家族成员等功能。1.2课设题目分析本程序的实质是完成对家谱成员信息的建立、查找、插入等功能。可以首先定义家族成员的数据结构,然后将每个功能写成一个函数来完成对数据的操作,最后完成主函数以验证各个函数功能并得出运行结果。本程序包含以下几个模块(1)建立家族关系树。此模块将构建一个家族关系,对数据初始化,构造关系树并录入数据一遍后续程序使用。(2)添加新成员。此模块将添加一个新成员,实现对家族关系的修改。(3)家族关系的查询。此模块将实现对家族不同关系的查询(4)主程序模块。此模块实现整个程序的进入和进出,以及各种初始化处理。(5)1.3课程题目原理与数据结构因为家族的成员之间存在一个对多个的层次结构关系,所以不能用线性表来表示和实现。家谱从形状上看像一颗倒长的树,所以用树结构来表示比较合适。树形结构是一类非常重要的非线性数据结构,直观看来树是以分支关系定义的层次结构。因此本课程设计可以采用的数据结构有树状结构和队列。树状结构采用三叉链表来实现,队列采用链式队列实现。实用标准文案精彩文档1.4功能分析说明图家族关系查询系统建立一个家族关系打开一个家族关系添加一个家庭成员按关系查找各个家庭成员退出系统实用标准文案精彩文档2分析与实现2.1基本数据结构和栈队的操作2.1.1结点基本数据结构和链队的定义/*家族关系树实现*/#include#include#include#include#include#include#include#include#defineTRUE1#defineFALSE0#defineOK1#defineERROR-1#defineINFEASIBLE-1typedefcharDataType;#defineMAXNUM20查找一个成员的祖先查找成员的子孙后代查找成员祖先路径查找成员是第几代查找一个成员双亲查找一个成员的兄弟查找成员的堂兄弟查找一个成员的孩子实用标准文案精彩文档typedefstructTriTNode/*树的三叉链表存储结构*/{DataTypedata[MAXNUM];structTriTNode*parent;/*双亲*/structTriTNode*lchild;/*左孩子*/structTriTNode*rchild;/*右孩子*/}TriTree;typedefstructNode/*队列的结点结构*/{TriTree*info;structNode*next;}Node;typedefstruct/*链接队列类型定义*/{structNode*front;/*头指针*/structNode*rear;/*尾指针*/}LinkQueue;DataTypefname[MAXNUM],family[50][MAXNUM];/*全局变量*/2.1.2链队的基本操作LinkQueue*LQueueCreateEmpty()/*建立一个空队列*/{LinkQueue*plqu=(LinkQueue*)malloc(sizeof(LinkQueue));if(plqu!=NULL)plqu->front=plqu->rear=NULL;else{printf("内存不足!\n");returnNULL;}returnplqu;}intLQueueIsEmpty(LinkQueue*plqu)/*判断链接表示队列是否为空队列*/{return(plqu->front==NULL);实用标准文案精彩文档}voidLQueueEnQueue(LinkQueue*plqu,TriTree*x)/*进队列*/{Node*p=(Node*)malloc(sizeof(Node));if(p==NULL)printf("内存分配失败!\n");else{p->info=x;p->next=NULL;if(plqu->front==NULL)/*原来为空队*/plqu->front=p;elseplqu->rear->next=p;plqu->rear=p;}}intLQueueDeQueue(LinkQueue*plqu,TriTree*x)/*出队列*/{Node*p;if(plqu->front==NULL){printf("队列空!\n");returnERROR;}else{p=plqu->front;x=p->info;plqu->front=plqu->front->next;free(p);returnOK;}}TriTree*LQueueGetFront(LinkQueue*plqu)/*在非空队列中求队头元素*/{实用标准文案精彩文档return(plqu->front->info);}2.2建立家族关系2.2.1建立家族关系并存入文件基本思想:首先输入家族关系的名称,以此名称为文件名,建立文本文件接下来按层次输入结点信息,输入一个在文件中写入一行同时将输入的信息保存到二位字符数组family中。字符数...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

大数据结构课程设计家族关系查询系统要点

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部