家谱是那个朝代写?
1,在文字还未出现之前,原始人都是通过结绳的方式来记录大事件。
东北的鄂伦春人,到了十七、十八世纪,依旧还在马鬃绳上打结来记事,从打结的数量来分辨家族有多少代人,每个结代表一代,他们把这样表示世代的结绳,悬放放在房梁上,以示崇敬之意。
2,口述家谱
我国蒙古族、苗族、彝族、高山族等少数民族都有口述家谱的习惯,普通家庭的成员能背出三四十代先辈的世系,最多的甚至能背出九十多代。比比结绳更为古老
3,竹柬家谱
将家谱写在竹简上,传承下来。现在也有人把家谱做成竹简的姓氏来保存。
4,布帛家谱
将家谱写在布上传承下去。这在古代也是比较常见的一种家谱记录方式。
5,甲骨家谱
即将家谱刻在龟壳或动物骨头上的家谱。源自于殷商的甲骨文,如“儿氏”的甲骨,便记载了一个家族的11代,共14个家族人物,它是极具代表性的甲骨家谱,也算是目前我国发现的最早的文字家谱了。
6,青铜家谱
是刻在青铜器上的家谱,也称作金文家谱。在已发现的商代末年青铜器中,有几个就是记录家族世系的。
7,石碑家谱
是刻在石碑上的族谱。早在汉初,这种家谱的形式就很普遍了。在中华民国的早期,广西南丹县的壕塘村建立了“莫氏哨目族谱”,共有412个字,记载了莫氏家族的世系和起源。与甲骨文、铜文家谱相比,石碑家谱更为成熟。
8,书本家谱
就是常见的印刷成书籍的家谱。这是我国目前最主流的家谱形式,种类数量有几千种之多。
一、拟定修家谱计划
1、版本:精装、平装、光碟、网络。
2、时间:完成期限、工作时程。
3、预算:经费、人员。
4、范围:同宗、合族、家族。
5、工具:图表、问卷、电脑。
说明:由发起人草拟计划大纲。
二、组织章程
组织委员、修谱大纲、责任分配、发凡起例。
说明:由编谱委员会议定细节。
三、筹集基金
一人负担、众人分摊、家族劝募、早请补助、公开销售组织内容大纲,制作世系图表、填写行实履历、撰写名人家传、考订姓氏渊源、记录迁徙过程、著录文艺著作、附录照片图版、其它次要内容。
说明:依实际情况与资金需求决定基金来源。
四、资料分析
前修旧谱、相说族谱、族谱研究资料、研究与过滤资料、请教族谱专家。
说明:善用各种资料与研究方法。
五、寻找史料
参考“家谱记录种类一览表”所列记录资料。参访家庙、宗亲会、姓氏族谱学会、图书馆、档案馆、户政机关。广泛查阅各种现有传记资料。各种史料均须审慎考证。
六、编辑内容
组织内容大纲、制作世图表、填写行实履历、撰写名人家传、考订姓氏渊源、记录迁徙过程、著录文艺著作、附录照片图版、其它次要内容。
说明:依资料多寡决定内容项目。
七、审定内容
专家审稿、多次校稿、最后完稿。
说明:最好有学者专家参与审订。
八、印刷出版
黑白或彩色、纸本或光碟、选定印刷厂、印制若干份、设家族网站。
九、领谱典藏
办祭谱活动,族人领族谱,寄存图书馆。
说明:有效保存。
介绍完整个修家谱的流程步骤,你是否感觉这个流程真的是太复杂,太浪费时间和精力。
用Excel制作家谱图表,下面分享一个方法。
电脑:华为MateBook14
系统:Windows10
软件:Excel2016
1、首先,打开一个空白excel文档。点击上方菜单栏中的“文件”选项。
2、此时文档出现新界面,点击当中“更多模板”一栏,文档即出现一些excel模板,如图。
3、接着,在搜索栏中输入“家谱”二字,点击“搜索”,页面出现相关搜索结果。
4、选择合适的模板,然后点击“创建”。此时,模板即应用在文档中。
5、最后,编辑文档内容,在相应的位置上写上家族成员的名字,这样,家谱图表就制作完成啦!
C++语言: 二叉树实现的简单家谱树
/
File Name: BiTreecpp
Author: Geng Lequn[glq2000@126com]
Thur July 1 2010
Discription: 建立二叉家谱树,实现输入任意两个人的名字,查找得到其关系
/
#include <iostream>
#include <string>
#include <cstring>
#include <cstdlib>
#include <vector>
#include <mathh>
using namespace std;
typedef struct _Node
{
string sex; //性别 m 男; f 女
string name; //此人的姓名
string spause; //配偶的姓名
unsigned short level; //层次 辈分最高一层为1,下一层为为2,以此类推
struct _Node l_child; //指向其第一个孩子的指针
struct _Node r_brother; //指向其某一个兄弟姐妹的指针, 即左孩子为其后代,右孩子为其兄弟姐妹
struct _Node btr; //指向其父亲或者母亲的指针
_Node():level(0),l_child(NULL),r_brother(NULL),btr(NULL){cout<<"constructor"<<endl;}
~_Node(){cout<<name<<" destructor"<<endl;}
}Node, PNode;
void CreateBiTreePreOrder(PNode &pn, PNode pback, unsigned short depth);//建立二叉家谱树,以先序方式
void VisitBiTreePreOrder(PNode root); //前序遍历此二叉树
void TellRelation(PNode root); //判断两人关系
void DestroyBiTreePostOrder(PNode root); //销毁二叉树,释放节点占用的空间
void FindPersonMiddleOrder(PNode root, string name, PNode &presult); //返回家谱中指向某人的指针,找不到返回NULL
Node root=NULL; //全局变量,二叉树的根节点
unsigned findPersonFlag = 0; //标志位,0 没找到; 1 找到,找到后就不再搜索直接返回;利用此flag可避免将整个tree遍历一遍(若该name在tree中存在的话)
int main()
{
cout<<"请按先序遍历的顺序根据提示输入家谱信息,不存在则输入\"#\""<<endl;
CreateBiTreePreOrder(root, NULL, 1);//建立二叉家谱树,以先序方式
VisitBiTreePreOrder(root); //前序遍历此二叉树
TellRelation(root); //判断两人关系
DestroyBiTreePostOrder(root); //销毁二叉树
getchar();getchar();getchar();
return 0;
}
/
function:建立二叉家谱树,以先序方式
argument:
pn: 指向二叉树节点的引用
pback: pn这个节点的btr指针的值,即指向其parent的指针
depth: 该节点的层次,分最高一层为1,下一层为为2,以此类推
/
void CreateBiTreePreOrder(PNode &pn, PNode pback, unsigned short depth)
{
string str;
cin>>str; //输入该人信息,格式是 sex-name-spausename,如不存在则输入#
if(str == "#") //如: M-tom-marry, 表示此人叫tom, 男性, 配偶名字marry
{
pn = NULL;
return;
}
//如果是自定义的struct/class,应该使用构造函数。如果是内建数据类型,
//比如int,应该memset。 当然,更好的建议是使用vector取代new出来的数组
pn = new Node;
//处理输入的字符串
vector<string> v;
for(size_t b=0, e=strfind('-'); ; e=strfind('-', b))
{
if(e == string::npos)
{
vpush_back(strsubstr(b));
break;
}
else
vpush_back(strsubstr(b, e-b));
b = e+1;
}
//初始化该节点
pn->sex = v[0];
pn->name = v[1];
pn->spause = v[2];
pn->btr = pback;
pn->level = depth;
//递归建立左右子树的节点
CreateBiTreePreOrder(pn->l_child, pn, depth+1); //注意后两个参数的值
CreateBiTreePreOrder(pn->r_brother, pback, depth); //注意后两个参数的值
}
/
function: 前序遍历此二叉树
/
void VisitBiTreePreOrder(PNode pn)
{
if(!pn)
return;
cout<<endl<<"sex:"<<pn->sex<<endl;
cout<<"name:"<<pn->name<<endl;
cout<<"spause:"<<pn->spause<<endl;
cout<<"level:"<<pn->level<<endl;
cout<<"father's name:"<<((pn->btr == NULL)"NULL":pn->btr->name)<<endl;
cout<<"======================"<<endl;
VisitBiTreePreOrder(pn->l_child);
VisitBiTreePreOrder(pn->r_brother);
}
/
function: 中序遍历找到家谱中的一个人,返回其指针,若找不到,返回NULL
isSpause 1表示是找到的节点的配偶 0表示不是所找到的节点的配偶
/
void FindPersonMiddleOrder(PNode pn, string name, PNode &presult)
{
if(!pn)
return;
FindPersonMiddleOrder(pn->l_child, name, presult);
if(findPersonFlag) return;
if(name == pn->name || name == pn->spause)
{
presult = pn;
findPersonFlag = 1; //全局标志位,0 没找到; 1 找到,找到后就不再搜索直接返回;利用此全局flag可避免将整个tree遍历一遍(若该name在tree中存在的话)
return; //下次使用前不要忘记置为0
}
FindPersonMiddleOrder(pn->r_brother, name, presult);
}
/
function: 判断两人关系,若两人中至少一人不在树中,则两人无关系
若两人在树中,先判断两人是否同层次,若同层,判断是否是亲兄弟姐妹;
若不同层,设辈分大的人为A,辈分小的人为B,判断A和B是亲的还是表的,
比如,A为男性,且比B大一倍,判断A是否为B的爸爸,或亲叔叔(舅舅),或表叔叔(舅舅)
简单起见,此处没有区分是叔叔还是舅舅
比如,A为男性,且比B大两倍,判断A是否为B的亲爷爷(姥爷),或亲爷爷(姥爷)的亲兄弟
,或亲爷爷(姥爷)的表兄弟
简单起见,此处没有区分是叔叔和舅舅等做进一步区分
简单起见,查询时只输入节点中的name,不查询spause,否则处理起来太麻烦
/
void TellRelation(PNode pn)
{
string name1, name2;
//p1指向name1, p2指向name2, pbig指向辈分大的,psmall指向辈分小的
PNode p1 = NULL, p2 = NULL, pbig = NULL, psmall = NULL;
int differ = 0; //两人辈分数的差别
string title;
Label:
cout<<endl<<"输入想查询关系的两个人的名字,不想查则将两人名字输成#:"<<endl;
while(cin>>name1 && cin>>name2)
{
if(name1=="#" && name2=="#") return;
p1 = NULL; p2 = NULL; //因为程序是循环执行的,需要将上次遗留的值清掉
findPersonFlag = 0;
FindPersonMiddleOrder(root, name1, p1);
findPersonFlag = 0;
FindPersonMiddleOrder(root, name2, p2);
if(!p1 || !p2) //若有一个为空或都为空,说明至少有一个人不在家谱中,故两人无亲缘关系
{
cout<<name1<<((!p1)" 不在":" 在")<<" 家谱树中"<<endl;
cout<<name2<<((!p2)" 不在":" 在")<<" 家谱树中"<<endl;
cout<<name1<<" 和 "<<name2<<" 间没有关系"<<endl<<endl;
goto Label;
}
differ = (int)abs(p1->level - p2->level);
if(!differ) //辈分一样大
{
if(p1->sex == p2->sex)
{
if(p1->sex == "M") title = "兄弟关系";
else title = "姐妹关系";
}
else title = "兄妹(姐弟)关系";
if(p1->btr == p2->btr) //parent相同
cout<<name1<<" 和 "<<name2<<" 间是 "<<" 亲 "<<title<<endl;
else
cout<<name1<<" 和 "<<name2<<" 间是 "<<" 表 "<<title<<endl;
}
else //辈分不一样大
{
if(p1->level < p2->level) {pbig = p1; psmall = p2;}
else {pbig = p2; psmall = p1;}
switch(differ)
{
case 1:
if(psmall->btr == pbig)
title = ((pbig->sex == "M")"爸爸":"妈妈");
else
{
if(psmall->btr->btr == pbig->btr)
title = ((pbig->sex == "M")"亲叔(舅)":"亲姑(姨)");
else
title = ((pbig->sex == "M")"表叔(舅)":"表姑(姨)");
}
break;
case 2:
if(psmall->btr->btr == pbig)
title = ((pbig->sex == "M")"爷爷(姥爷)":"奶奶(姥姥)");
else
{
string tmp = ((pbig->sex == "M")"兄弟":"姐妹");
if(psmall->btr->btr->btr == pbig->btr)
title = ((psmall->btr->btr->sex == "M")"爷爷(姥爷)的亲":"奶奶(姥姥)的亲") + tmp;
else
title = ((psmall->btr->btr->sex == "M")"爷爷(姥爷)的表":"奶奶(姥姥)的表") + tmp;
}
break;
default:
string tmp2;
PNode pt = psmall;
int n = differ-2; //计算"老"字 (即grand这个字) 出现的个数
for(int i=0; i<n; ++i)
tmp2 += "老";
for(int i=0; i<differ; ++i)
pt = pt->btr;
if(pt == pbig)
title = tmp2 + ((pbig->sex == "M")"爷爷(姥爷)":"奶奶(姥姥)");
else
{
string tmp3 = ((pbig->sex == "M")"兄弟":"姐妹");
if(pt->btr == pbig->btr)
{title = tmp2 + ((pt->sex == "M")"爷爷(姥爷)的亲":"奶奶(姥姥)的亲"); title+=tmp3;}
else
{title = tmp2 + ((pt->sex == "M")"爷爷(姥爷)的表":"奶奶(姥姥)的表"); title+=tmp3;}
}
break;
}
cout<<pbig->name<<" 是 "<<psmall->name<<" 的 "<<title<<endl;
}
goto Label;
}
}
/
function: 后序遍历销毁此二叉树,释放节点占用的内存空间
/
void DestroyBiTreePostOrder(PNode pn)
{
if(!pn) return;
DestroyBiTreePostOrder(pn->l_child);
DestroyBiTreePostOrder(pn->r_brother);
delete pn;
}
查族谱的方法是:先在网上打开任意的族谱查询网站,例如中国家谱网等,然后输入自己的姓氏查询即可。
族谱是一种以表谱形式记载一个家族的世系繁衍及重要人物事迹的书。族谱是一种特殊的文献,就其内容而言,是中华文明史中具有平民特色的文献,记载的是同宗共祖血缘集团世系人物和事迹等方面情况的历史图籍。
查家谱其实是有很多办法的,可以参考以下几种办法来查询自己的家谱。
可以选择去宗族的祠堂查看相关信息
任何一个姓氏在每个不同的地方都会有自己的宗祠,这些宗祠都有着一些相通的地方,这些相通的点就连成了一条线,线的延伸也就展现了这个姓氏乃至家族的起源和发展。所以在不知道自己家谱的情况下,可以去宗祠看一下有没有自己祖辈的名字。
在很多家族的宗祠当中,都会记载这些家族的姓氏和起源,一些祖先的名字或者对宗祠有过贡献的名字都会刻制在宗祠的墙壁之上。这些镌刻的文字,就是寻找家谱的线索,这些线索能直接把家谱串联起来,形成整体。一旦在宗祠中找到了熟悉的祖辈的名字,那么就可以发现各种有用的讯息了。
查看家谱无疑是为了了解家族中的起源和发展,还有就是看家族中的一些后辈分支是否繁盛了。当然了查到了家谱,也能发现一些平时没注意到的血脉相连的亲人。
查家谱也可以通过查族谱来衍生
在同一片地区的姓氏,他们的起源大多都有相同的地方。比如我姑爹姓胡,我老公也姓胡,他们一个老家在乡下,一个老家在县城,明明是生活在不同的区域,但他们的族谱中却有着共同的先人。换句话说,我老公和我姑爹还算是远房的族亲呢!所以说想要知道自己的家谱,也可以通过自己姓氏的族谱来进行分析和搜集相关的讯息。
族谱的记载往往比宗祠上名字的记载更具体和广泛。所以通过族谱,也是可以有效查询到每个人的家谱,包括每个人所属家族中的旁支、分支、远亲、近亲都是可以系统的在族谱中查询到的。
找到家谱也可以询问长辈追根溯源
有些人因为环境和时代的原因背井离乡,来到了外地求生,久而久之在他乡打拼的他们把他乡变成了故乡,这时候想要找到家谱就不那么容易了。需要耗费大量的精力时间和物力,才可能去找到自己真正的家谱。
比如我爷爷,我爷爷在很年轻的时候因为家里发大水,流离失所来到了江西。但其实他是安徽人,如果我爷爷想找到家谱,首先就需要找到家乡的族亲,通过族亲的关系再去咨询家乡里的长辈,找到自己曾经所在的一脉,然后再去查询自己的家谱。只有这样做了以后,才能把自己的子孙后代都写进家乡的族谱当中。
所以一般来说,在完全没有任何记载的情况下,想找到家谱必须进行信息采集。采集的办法只能是通过家里的长辈和老人,然后再找到自己的老家,向宗族里的一些德高望重的长辈进行咨询,这样才能够进入原有的宗祠或者拿到相关的族谱,那么家谱也就可以基于此,进行记录了。
其实只要有心去寻找家谱,想找到有用的线索和记录还是比较容易的。毕竟族谱和宗祠代表的是一个姓氏和家族的兴盛,大部分地区都保留着这文化传承的建筑。
家谱是那个朝代写?
本文2023-10-21 11:17:52发表“资讯”栏目。
本文链接:https://www.lezaizhuan.com/article/306680.html