C语言家谱管理程序,C语言二叉树家谱管理系统.doc
C语言二叉树家谱管理系统
摘 要
本文设计了一个对数据输入,输出,储存,查找的多功能软件,本文需要保存家族的基本信息,包括姓名及它们的关系,但是由于家族信息很巨大而且关系很复杂所以采用二叉树来表示它们的关系。并且具有保存文件的功能,以便下次直接使用先前存入的信息。家谱的功能是查询家族每个人的信息,并且输出它们的信息,还要具有查询输出功能。
本文采用二叉树来存取家族的基本信息,头结点作为父亲节点,他的左孩子为他的妻子,妻子结点的右孩子为他的孩子,依次存储每个家庭的信息。可以查找每个父亲的孩子和每个人的所有祖先。
关键词: 二叉树 家谱 结点
目录
1 系统功能概述1
1.1 系统功能1
图2 成员二叉树功能模块图4
1.2 总体功能模块4
2 系统各功能模块的详细设计4
2.1功能选择4
2.2信息输入6
2.3信息输出7
2.4信息存盘7
2.5信息清盘8
2.6信息查询8
2.7源程序10
3设计结果与分析16
3.1菜单函数功能测试16
4.2输入功能函数测试16
3.3输出功能函数测试17
3.4清盘功能函数测试17
3.5存盘功能函数测试17
3.6查询功能函数测试18
总结19
参考文献20
1 系统功能概述
1.1 系统功能
实现的方法是先定义一个二叉树,该二叉树上的每个结点由三个元素组成:姓名、指向它左孩子的指针、以及指向它右孩子的指针构成。该家谱管理系统将信息用文件的方法进行存储管理,再从文件中将成员信息以递归的方法创建二叉树。该输入成员信息的方法是将父亲结点存上父亲的信息,然后父亲结点的左孩子存上母亲的信息,母亲结点的右孩子存上孩子的信息。
(1)定义结构体
结构体为表示一个对象的不同属性提供了连贯一致的方法,结构体类型的说明从关键词struct开始,成员可以由各种数据类型混合构成,成员甚至还可以是数组或者其他类型的结构,但是,结构体中不能包含自身定义类型的成员。本文定义了两个结构体,分别是家族成员和二叉树结点的结构体。代码如下:
typedef struct fnode
{ char father[NAMEWIDTH];
char wife[NAMEWIDTH];
char son[NAMEWIDTH];
}FamType;
typedef struct tnode
{
char name[NAMEWIDTH];
struct tnode *lchild,*rchild;
}BTree;
(2) 二叉树的建立
二叉树的结点有三个域,数据域和两个指针域,数据域用来存放数据,两个指针域分别存放指向该结点左右孩子的指针。并且还有个root结点,称二叉树的根节点。代码如下:
BTree *CreatBTree(char *root,FamType fam[],int n)
{
int i=0,j;
BTree *bt,*p;
bt=(BTree *)malloc(sizeof(BTree));
strcpy(bt->name,root);
bt->lchild=bt->rchild=NULL;
while(i
i++;
if(i
{
p=(BTree *)malloc(sizeof(BTree));
p->lchild=p->rchild=NULL;
strcpy(p->name,fam[i].wife);
bt->lchild=p;
for(j=0;j
if(strcmp(fam[j].father,root)==0)
{
p->rchild=CreatBTree(fam[j].son,fam,n);
p=p->rchild;
}
}
return(bt);
}
(3)家族成员信息的输入
依次输入一个家庭的父亲、母亲和孩子的姓名。并将它们保存在相应的文件里。
(4)家族成员信息的输出
依次输出每个家庭的父亲、母亲和孩子的姓名。
查找某人的儿子
首先输入父亲的姓名,在二叉树中查找是否有此人,如果没有就输出不存在这样的父亲。如果有就先查看它的左孩子是否存在,不存在就输出这个父亲没有妻子,如果存在就查找左孩子的右孩子,没有右孩子就输出这个父亲没有孩子,存在就输出右孩子的姓名,即为查找到的儿子。
(6)查找某人的祖先
采用后序非递归遍历方法输入从根结点到*s结点的路径,首先输入一个成员的姓名,用一个栈存入查找的路径,当找到时栈中的元素即为它的所有祖先。
该家谱管理系统将各个家庭的信息以文件的形式存储,具体步
C语言家谱管理程序,C语言二叉树家谱管理系统.doc相关推荐
- C语言家谱管理程序,c语言的家谱——interesting~
C++是直接从C语言发展过来的,但最初这种语言不是叫C++,而是C with class,这是由于当时C语言在编程界居于老大的地位,要想发展一种新的语言,最强大的竞争对手就是C语言,所以当时有两个问题 ...
- c语言银行卡管理系统程序设计报告,C语言课程设计报告(银行账户信息管理系统).doc...
新疆大学学生课程设计论文 摘要 PAGE I 银行账户管理系统C语言程序设计 摘 要 银行账户管理系统是针对银行账户的日常管理而设计,操作方便而且界面简洁,使用较为简单的C语言作为编程语言,采用软件工 ...
- c语言程序设计 链表,c语言程序设计基于链表的学生成绩管理系统.doc
c语言程序设计基于链表的学生成绩管理系统 华北科技学院计算机系综合性实验报告 PAGE 第 PAGE 10 页 华北科技学院计算机系综合性实验 实 验 报 告 课程名称 C语言程序设计 实验学期 20 ...
- C语言家谱管理程序,C语言实现家谱管理
C语言上实现家谱管理系统 #include #include #include #include #define OK 1 #define ERROR -1 #define STACK_INIT_SI ...
- C语言家谱管理程序,[C语言]家谱 - 代码贴 - BCCN
#include #include #include struct node; node *creat();//建立祖先 int add_child(node *head);//添加家庭成员 int ...
- c语言婚姻管理程序,C语言实现婚姻匹配有关问题
C语言实现婚姻匹配问题 最近因为课程需要,看了看婚姻稳定匹配问题,用了两天把代码写完了. 具体问题就不详细写了,这里给出参看的网址. EOJ上面的问题叙述:http://202.120.106.94/ ...
- c语言婚姻管理程序,C语言实现婚姻匹配问题
最近因为课程需要,看了看婚姻稳定匹配问题,用了两天把代码写完了. 具体问题就不详细写了,这里给出参看的网址. 整个思路结合着老师的课件和这篇文章,用C语言完成了整个代码. // // main.c / ...
- c语言程序设计课程设计学生信息管理系统,C语言程序设计课程设计报告----学生信息管理系统.doc...
河南理工大学计算机学院 <C语言程序设计>课程设计报告 题目: 学生信息管理系统 专业: 计算机科学与技术 班级: 计算机XX班 学号: 311009033232 姓名: ***** 日期 ...
- 开发c语言系统怎么分工,C语言专业课程设计工资统一标准管理系统.doc
东北大学信息科学和工程学院 程序实践汇报 题目 工资管理系统 课题组长 刘诚阳 课题组组员 张鹏举 于文鑫 专业名称 计算机科学和技术 班 级 计算机1405 指导老师 张晓红 20XX 年 4月 目 ...
最新文章
- 学python去哪做项目_有哪些适合 Python 刚入门者去做的项目?
- C++中的sizeof与strlen对比
- print格式化输出,以及使用format控制
- Large Kernel Matters
- InnoDB引擎与MyIASM的一点总结
- 一、PHP基础——表单传值、上传文件
- 太极图正确画法_太极图的三种画法你知道吗?
- Linux内核的文档管理工具:Sphinx
- ESP32WebSocket
- Hibernate一级缓存和二级缓存详解
- 2022年低压电工考试题库及模拟考试
- Win系统 - 笔记本电脑之耳机插入没声音
- Running “flutter pub get“ in xxx... 报错: Git error 443
- 如何才能得到YouTube的流量?
- 【螺旋旋转爱心特效】(Html+JS+CSS+效果+全部源代码)
- ESP8266 WIFI模块学习之路(2)——模块与单片机连接进行远程操作
- 西北农林科技大学考研计算机大纲,西北农林科技大学考研大纲
- 发展是硬道理——写给初入行的Java程序员
- 学好了Python可以干什么?
- word插入图片,嵌入型,无效果