如何写家谱
写家谱族谱的方法如下:把知道的都写下来、采访家人、寻找实物线索、绘制家族树、制定研究计划等。
1 把知道的都写下来
关于家里,你记得什么,就都写下来,特别是出生、结婚、死亡的日期和地点,后者将在未来的实地调研中发挥重要作用。你或许还可以绘制简单的家族树。这将提醒你已经知道了什么,还想知道什么。
2 采访家人
现存的家族成员是知识的宝库。从父母以及他们的兄弟姐妹开始,然后如果可以,就再采访祖辈。如果祖辈还能记起他们的祖辈,那么你就有机会接触百年以上的家族历史了。在采访的时候,如果方便,你可以录音。
这份资料,既有利于你未来的调研,也可以作为遗产传至后人。但要记着贴上标签,以便寻找。要注意名字。还要记下别名、绰号,等等。一个故事,可能有不同的说法,要进行比较。要注意搜集“谣言”或者“模糊的回忆”。
3 寻找实物线索
翻翻抽屉和箱子,你可能会为自己的发现而感到惊奇。显而易见,诸如证书、表格之类的文件,可能会成为家族历史的砖石。这有可能了解到一段不为人所知的往事。
留意其他家族遗物,例如日记本、信函。照片也是非常重要的道具。跟亲戚聊聊,看看他们能否辨认照片上的人物。记下名字,扫描照片,贴上标签。最后,也是最重要的,打听一下家人、亲戚和族人,是否有家谱。
4 绘制家族树
家族树是描绘祖先关系的地图。它可能花费时间,所以要肯付出才能有结果。拿出一张白纸,在页底写下你自己的名字,在上面为先辈们留出空白。你也可以使用电脑。如果你是已婚,配偶列在你的旁边。然后在你们下面添加孩子,并填上出生日期。
上面是父母,再上面是祖辈,并且填上出生日期。你追溯的时候,直系祖辈的数量会翻倍——四位祖辈,八位曾祖辈,等等,加上他们的出生日期、结婚日期和死亡日期。
5 制定研究计划
记忆因时光变得模糊,所以验证非常重要。跟官方记录核对姓名和日期,常常都是不错的主意。现在可以查阅许多出生、结婚和死亡证书。你可以试着去本地档案馆、图书馆查询。
户籍档案也是查询数据或者未知亲戚的方式。民国时期的户籍资料,一般存放在档案馆里。另外,在地方志馆,也可以通过查阅地方志和文史资料,了解祖辈的生活环境和可能经历的大事,运气好的话,还可以找到他们的名字和事迹。
除了本地资源,网络资源、图书、杂志或者报纸,也可能提供实际的帮助。需要特别指出的是,图书馆里也收藏了大量的家谱和地方志。图书馆领导曾经讲过,有1/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;
}
家谱的做法
一、拟定修家谱计划
1、版本:精装、平装、光碟、网络。
2、时间:完d成期限、工作时程。
3、预算:经费、人员。
4、范围:同宗、合族、家族。
5、工具:图表、问卷、电脑。
二、组织章程
组织委员、修谱大纲、责任分配、发凡起例。
三、筹集基金
一人负担、众人分摊、家族劝募、早请补助、公开销售组织内容大纲,制作世系图表、填写行实履历、撰写名人家传、考订姓氏渊源、记录迁徙过程、著录文艺著作、附录照片图版、其它次要内容。
四、资料分析
前修旧谱、相说族谱、族谱研究资料、研究与过滤资料、请教族谱专家。
五、寻找史料
家谱文献、世系资料、出生、过世登记证、户籍、除户登记资料、神龛祖先牌位、家庙晋主名册、祭祀公业章程、名册,墓碑文字、坟葬座落方位,讣文、疏文、功德薄,长辈口述记录,家传、年谱、纪念集,老照片、录音、录影资料,古文书、契约、证书,正史、方志,人名录、同学录,旧报纸、电话薄。
六、编辑内容
组织内容大纲、制作世图表、填写行实履历、撰写名人家传、考订姓氏渊源、记录迁徙过程、著录文艺
著作、附录照片图版、其它次要内容。
七、审定内容
专家审稿、多次校稿、最后完稿。
说明:最好有学者专家参与审订,审稿时一定要仔细,可以慢一些但要保持精准。
八、印刷出版
黑白或彩色、纸本或光碟、选定印刷厂、印制若干份、设家族网站。
九、领谱典藏
办祭谱活动,族人领族谱,寄存图书馆。
如何制作家谱?
1、电脑打开Word文档。
2、打开Word文档后,点击工具栏中的插入,然后选择智能图形。
3、进入选择图形页面,选择图形后,点击确定。
4、Word正文添加构造图之后,就可以输入名字世谱了。
5、如果表格不够,可以选中一个图标,点击右上角的添加,可以选中在上方或者下方添加项目。
怎么编写家谱?
一、序
序就类似于现在书的序,可以由族中得望高的人写,也可以由外人写。主要是通过另一个或另几个人的眼光来看待这本族谱。通常情况下,新序在前面,旧的序也要包含在内并排在新序后面。
二、简介
即使是对于自己的家族,能全面了解的人也不多,所以
需要首先简介一下自己家族,可提及的内容有:刻谱凡例、本族谱本次创修参与人员、时间、为什么要修订;此次编码的依据是什么;家族的整体情况、历史、迁移史、当前分布、人数;本族宗派、字辈,即记录每一代人起名规则;祖坟所在地、祖坟中各代分布图;对祖先事考查、考证。
总之,这里不具体到某一个人,只是对整个家族进行整体描述。
三、人物志
其实一本家谱本身就是人物记录,但通常情况下,家谱中会记录某一个或多个优秀的典型人物或团体。而记录这些优秀人物时,常常格式多样,有该人的传记、他写的文章书稿、获得过的功名、官名、、画像、碑记等。这里需要注意的是千万不能把同姓历史名人强编入本族谱,即使是小小提示也不可。因为后人续谱时,常常会因为这一次信以为真,而以讹传讹。
四、世系表
世系是家谱中最为重要的一项,最简单的家谱,有时只有一个世系表。
世系表是记录家族中每个人的关系,用计算机中的术语,这种一对多的结构是“树”状结构,但实际中的往往会比较复杂。当一个家族很大、人数很多时。会出现嗣出嗣入、迁入迁出的现象。
五、世略表
通常情况下,仅有世系表的家谱其实是没有实际意义的,面对一些不是名人的名字,除了这几个字,你还能知道什么呢一个好的办法就是增加世略表,世略表是记录世系表中每一个族人简历的表。这一部分可以和世系表合二为一,也可以单列。我认为单列更好,因为合二为一,常常导致世系表过肥过大,查找一个成员的时候非常麻烦。
很多家谱中,世略只写到父名、娶妻、生子数及名字数,这样写虽然整体看上去挺规范,实际上也没多大意义,因为世系表本身就可以表示这种信息。我认为世略不一定能做到每个人都有完整的简历,但至少应该有:本人生卒年月、主要职务、职称、主要生活工作地、本人工作简历、主要成绩、妻子姓名、妻子嫁出地、妻子父亲的名、妻子简历、子女名、女儿出嫁地、所嫁人姓名。这样不仅妻方家谱可以通过家谱查到本家族,本家族也可以通过自己家族查到女儿家族。
六、后记
后记写一些感想即可。
家谱如何族谱制作?
1、电脑打开Word文档。
2、打开Word文档后,点击工具栏中的插入,然后选择智能图形。
3、进入选择图形页面,选择图形后,点击确定。
4、Word正文添加构造图之后,就可以输入名字世谱了。
5、如果表格不够,可以选中一个图标,点击右上角的添加,可以选中在上方或者下方添加项目。
族谱的内容
一、写清楚姓氏源流。
意思就是同一族姓的来源、迁移等。中国上下五千年,渊源古老,如果没有家谱,后人就很难搞清楚。每套《家谱》都认清自己姓氏源流,这样才能世世代代承继,也能将族系根缘流传千百年。
二、写清楚堂号。
堂号名称一般取自于郡号名,或者是史祖自创。
一般来说,堂号多取自于郡号名,郡是秦、汉时期对行政区域的建置,郡号名又取自于郡名,或诸侯国名,地方府、州、县名。也有很多姓氏同为一个堂号的,比如:王,胡这两个姓的郡望都是“清河堂”。
自创的,例如:杨氏的“四知堂”寓意“天知、地知、我知、子知”的为人风范。很多重修家谱的情况,只能用自创堂号。
三、家训和家族的历史。
很多家谱中,都记录了许多治家教子的名言警句,流传到后世了,比如我们熟悉的颜氏家训、朱子治家格言等。
家谱怎么做?
1、电脑打开Word文档。
2、打开Word文档后,点击工具栏中的插入,然后选择智能图形。
3、进入选择图形页面,选择图形后,点击确定。
4、Word正文添加构造图之后,就可以输入名字世谱了。
5、如果表格不够,可以选中一个图标,点击右上角的添加,可以选中在上方或者下方添加项目。
家谱的作用:
家谱是一个巨大的资料宝库,可供从事社会学、历史学、考古学、经济学、民俗学、人口学、民族学、文学、政治学、宗教学、法学、姓氏学的研究人员从中查询资料,寻找依据,进行研究。家谱的作用主要有:
1、宗法思想研究资料。家谱和宗法的关系从一开始就密不可分。宗法制度是封建王朝维护其统治的重要基础之一,而家谱的族规、族约、家法、乡约等,正是加强宗法制度的有力工具。
2、家庭道德研究资料。族规、家规中保留了许多对我们当代极为有益的东西,如孝父母、和夫妇、勉讳书、尚节俭、戒赌博、戒*秽、戒懒惰、戒奢侈等,对我们建设现代家庭道德和精神文明都有很好看借鉴意义。
3、家族制度研究资料。家族制度是利用血缘关系统治族人的社会制度。在许多家谱中都有家族制度的极为详细的资料,如家族的组织系统、家族的财产管理、家族的赈济方法等,为我们研究家族在古代社会中的地位、作用、组织形式、管理方法等提供了丰富的资料。
4、经济史资料。家谱中保存有相当数量的经济史资料,这些资料包括家族的集体田产如祠田、坟田、庄田、山林等的数量、形成、经营、管理、收支情况等。有的家谱还记录了家庭成员经商、贸易的事迹。这都为我们研究古代经济史提供了很好的素材。
5、人口问题资料。家谱的中心部分是家族人口的世系传承,在家谱的“房派图”、“支派分布图”、“迁徙图”、“先世考”、“世系图”以及家谱的一些序跋中,记录了家族人口的数量、迁徙、分布、婚姻状况等资料,可提供人口学研究者使用。
6、历史人物传记。家谱是世系的记录,许多家谱中既有简单的世系,又有十分详细的传记、行状、墓志、年谱等,对研究历史人物及其家世大有帮助。
族谱制作方法及组成有知道的吗?
有三种制作方法:
1族内老人编纂
这个很好理解。找族内年龄比较大,对族内人员结构比较清楚地人来完善编修。
2电子书籍
想要做电子家谱通常是需要下载一个app进行家族人员信息的填写,最后自动生成为固定的家谱格式,听起来比较便捷省时,但弊端也存在。例如最主要的这两点:
电子家谱app的使用上比较复杂,修谱人大多年龄偏高,对手机功能不是很了解,研究很久研究不明白,最终还是选择了去专业家谱编印机构做传统纸质家谱。
电子家谱通常家谱格式为固定的几种,只能从其选择一种,并按照其格式要求进行填写信息,有些家庭可能不是很喜欢这些固定格式,或想要改变一些内容,都是实现不了的,最终,也是会选择专业家谱编印机构进行定制化的家谱排版。
3传统纸质家谱
听起来没有随着时代的发展而进步,但实际上传统纸质的家谱进步在细节,例如:
纸质,都知道宣纸印刷是最好的纸质保存材料,但古法宣纸制作出来很是不容易,但当今社会的进步,把宣纸的质量进行了升级,能够满足存放百年的需求。
排版,家谱排版方式可以根据家族人员需求,或信息资料的整理不同,进行排版格式的小改动,更人性化,更易于老师们的家谱资料收集整理工作。
服务,修家谱不是一件快速上手的事情,而是需要专业的知识指导,才能更顺利的开展家谱编印工作,传统纸质家谱印刷公司通常会提供免费的一对一编修指导服务,例如锦秋文谱|中原鉴志谱编印中心即是如此,服务这一点,是电子家谱做不到的。
以上综合,电子家谱和纸质家谱各有优缺点,个人比较倾向传统纸质家谱,纸质家谱更加庄重,比电子家谱更有仪式感,敬重感。当然,以上仅为个人观点,仅供参考。
家谱组成部分:
1、谱名、版次录
2、编修人员名录、家族照片
3、谱序、题词
4、凡例
5、谱论
6、祖先像赞、遗像、
7、目录
8、姓氏源流
9、恩荣录、碑文
10、历代修谱名录
11、祠堂、坟茔、郡望、堂号
12、字辈
13、世系图表
14、家风、家训、家规
15、传记、艺文、家族名贤录
16、风俗礼仪
17、契约、族产
18、家族文献、杂记
19、功德榜、事迹介绍
20、领谱字号
21、附记、后记、留余录
在亿图图示中,点击组织结构图,里面有绘制家谱/树形图的功能。
直接点进去就可以绘制的,操作十分的简单,还有现成的模板可以使用。制作家谱图,可以用来有效地展示你的家族历史。首先从最高辈分的人开始画,排布出他的子女,然后每一代创建一个家庭树分支。通过简单加工与整理就可以把这个图变成一个值得展览的艺术品,或者保存给子孙后代,让家族文化世代传承。
如何写家谱
本文2023-10-18 16:49:00发表“资讯”栏目。
本文链接:https://www.lezaizhuan.com/article/284061.html