家谱怎么编写?

栏目:资讯发布:2023-10-17浏览:1收藏

家谱怎么编写?,第1张

家谱的封面

家谱的形式

家谱的主体形式,叫世系图,长这个样子

世系图分为宝塔式图谱、树系图谱、线性图谱和牒记式图谱(无图,曾以是以文字叙述先人事迹)

树系图谱

线性图谱

再来说说,为什么要写家谱呢?

目的是记载自己家族的光辉史,以及记载家族的历史和发展。

一般是家族发展到一定程度的时候,家中德高望重的人提出,我们是不是该写家谱了。大家一致决定好,然后如果祠堂的钱够,那就直接从祠堂拿钱,开始写家谱。如果祠堂没钱,那就大家捐钱。如果是家族第一本家谱,那就由德高望重的人决定辈分什么的。

现在有很多人没有家谱了,可能是由于迁移或者其它原因造成的,如果是这种情况,那么可以两种办法解决,一是回到原来的祖籍,请家谱;另一种就是重修家谱。

家谱的内容都有什么?

一、写清楚姓氏源流。

意思就是同一族姓的来源、迁移等。中国上下五千年,渊源古老,如果没有家谱,后人就很难搞清楚。每套《家谱》都认清自己姓氏源流,这样才能世世代代承继,也能将族系根缘流传千百年。

二、写清楚堂号。

堂号名称一般取自于郡号名,或者是史祖自创。

一般来说,堂号多取自于郡号名,郡是秦、汉时期对行政区域的建置,郡号名又取自于郡名,或诸侯国名,地方府、州、县名。也有很多姓氏同为一个堂号的,比如:王,胡这两个姓的郡望都是“清河堂”。

自创的,例如:杨氏的“四知堂”寓意“天知、地知、我知、子知”的为人风范。很多重修家谱的情况,只能用自创堂号。

三、家训和家族的历史。

很多家谱中,都记录了许多治家教子的名言警句,流传到后世了,比如我们熟悉的颜氏家训、朱子治家格言等。

家训大致包括了以下内容:

(一)、注重家法、国法

(二)、和睦宗族、乡里

(三)、孝顺父母、敬长辈

(四)、合乎礼教、正名分

(五)、祖宗祭祀、墓祭程序

四、有功绩和品行之人的传纪。

一般分为:列传、内传和外传等。列传是记录家族中有功绩男子的传记;内传是记录家族中有品行女子的传记;外传是记录家族中已出嫁有品行女子的传记。传记中多配有该人的画像或关于该人的故事图画,用词以真实平朴为重,最忌溢美之词。这也是评价一部“家传”水平高低与否的重要标准。

五、家族中人的诗文著作。

以家族中名人所写的诗文著作为主要内容,也收集本族人与外人的书信来函,以及经籍、表策、碑文、书札等,有的还有版画、肖像画、版本作品、名家书法、歌曲等。在这部分进行续补时,更需精心挑选,慎重录入,把最有价值和代表性的文献传给后代。

六、祖先、老照片、风水图等。

这里的祖先、老照片好理解,其中风水图主要只祠堂图、墓土。祠堂是供奉先人的地方,所以在记载和刊载建物版图、描绘实状,甚至详记地理方位。有的族谱中还要把故居和村庄图放上。

最后补充一点,女孩可以上家谱吗?

古时认为,女孩是嫁给别人的就是别人家的人了,不过也有例外,就是终身不嫁的女性,就有机会上家谱,当然女孩子是没有权力拥有家谱的。不过现代修家谱也有例外,因为有可能小辈都是女孩子了,所以也有女孩保存家谱、传家谱和修家谱的情况出现。

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;

}

  以word

2007为例,方法如下:

  1、依次单击“插入”、插图框中的“SmartArt”,在出现的对话框中选择“层次结构”、在右边出现的“组织结构图”中选中竖排或横排的结构图例,双击出现的“文本”,填写家谱姓氏辈份等信息。

  2、家族人丁兴旺的可以在不同的辈份(行或列)添加多个文本,具体方法是点击想要添加位置附近文本框,在菜单栏中点击“添加形状”,在子菜单中选择在后、前、上、下添加即可。 

  3、页面布局可以设置为横板,纸张设置大些,因为家谱人员太多,一张A3横板往往都写不下。

家族树是制作家谱的软件吗?

是的,家族树支持注册用户建立数字家谱,包括邀请家族人员进入家族树进行协作管理,家族成员在共有的家族空间一起体验娱乐互动应用,而且家族树还有寻根辅助功能,根据你填写的信息,自动匹配可能会是你家族成员的人。家族网还有群组、博客、相册、档案馆、姓氏百科、时间轴等多种功能。这些功能和应用使家族树中的成员有良好的互动性,增加亲人感情和家庭温情。

有什么软件做族谱最好的?可以做家族树的那种~~

这个平台,估计才是你想要的吧,这是系统后台根据每个人的关系信息,自动生成的家族树,操作起来比较繁琐,要家庭成员分别建立自己的账户,管理自己的个人信息,然后通过父母子女的关系认可进行链接,但这却是最为严谨的家族树系统,没有人可以随意修改其中成员,完全以血缘关系来形成这棵树,女孩子同样作为树的延续分枝拓展下去,而且每个人的信息都是在网络中永久保存的。。。

求一张英语家庭树,简单一点的~

英语家庭树如下:

称谓介绍:

一、mum

1、含义:n <英口>妈妈,母亲。

2、用法

作名词含有沉默,<口>妈咪,妈,妈妈,烈性啤酒,摩姆啤酒,马姆酒,<口>菊花(=chrysanthemum)等意思。

If your Mum finds out what you've done, you'll really be in the soup!

要是你妈妈发觉你干的事,你就要倒霉了!

Your mum will go spare if she finds out what you've done!

要是你妈妈知道你干的事,她会气坏的!

二、dad

1、含义:n 爸爸。

2、用法

作名词含有<口>爸爸,爹爹,老兄,老弟,老伙计,任何老年人,一大块;一大片;一大份,有力的一击(或一拳)等意思。

Dad was snoozing by the fire

爸爸正在炉火旁打盹。

Mom and dad never see eye to eye on anything

妈和爸从来没有对任何一件事有一致的看法。

三、brother

1、含义:n 兄弟;教友;同胞;<俚>老兄。

2、用法

brother指“兄”或“弟”皆可,“兄”是“elder brother”,“弟”是“younger brother”。但除了必须分清是“兄”还是“弟”时外,习惯上不论“兄”还是“弟”,都用brother。

在美国通常不用elder brother,而用older brother。与brother相对应的阴性名词是sister。

brother可指亲兄弟,也可指同父异母或同母异父兄弟,或继父与其前妻或继母与其前夫之子,不指堂或表兄弟。但引申可指“同行,同事”解。

brother作“教友”“会友”解时,它的复数形式是brethren。

brother可用作称呼语。

John and Peter are brothers

约翰和彼得是兄弟。

The man who captained the home team is my brother

率领主队的是我的兄弟。

四、sister

1、含义:n 姐妹。

2、用法

sister的意思是“姐,妹”,通常指同胞姐妹,包括同父异母或同母异父的姐妹。

在西方,“姐姐”和“妹妹”都叫sister,只有需要特别表明年龄大小时或其他必要情况下,才分为elder sister和younger sister。堂姐妹应说cousin。

sister有时还可指“(掌管病房的)护士,护士长”“(修道院的)修女”。

在口语中, sister可用于称呼女子; 在正式文体中, sister可用于比喻。

Joan and Lily are sisters

琼和丽丽是姐妹。

You should take care of your niece for the sake of your sister

看在姐妹的份上,你应该照顾你的侄女。

五、aunt

1、含义:n 伯母;姑;婶;姨。

2、用法

aunt指与父母亲同辈的女性亲属,即父母亲的姐妹“姑母,姨母”或父母亲兄弟的妻子“伯母,婶母,舅母”。与其对应的阳性名词是uncle。

aunt用于口语中还常指小孩对成年女邻或父母亲的朋友、同事中的成年女性的称呼。

aunt是普通名词,但当其与表示人名的专有名词连用时,首字母须大写。

习惯上人们用aunt指代了全部的伯母,姑姑,婶婶,姨母和舅母,不会特地去区别。若是在必要区分的场合时,paternalaunt(父方的)指得是伯母,姑姑和婶婶,而maternalaunt(母方的)指得是姨母和舅母。

She has no relations besides an aged aunt

她除了有一个年老的伯母以外,再没有亲戚了。

My aunt gave me one of her brooches as a keepsake

我姑母把她的一支胸针送给我作记念。

家族树是由什么组成的?

家族树是家族网团队研发的一项应用,它就好比是一个树状的数字家谱,用户在树上可以进行沟通互动娱乐等。

具体来说呢, 家族树,是指利用互联网技术,依据血缘关系或亲祖关系把人联系起来,再按照辈份排序构成树的模型。 在树中的成员可以清楚的知道自己的家族起源、家族关系以及其他成员的基础信息,并且享有记录、分享等沟通娱乐服务。 作用和功效有几个: 追祖溯源 汇聚亲情 沟通分享 传承家族文化 家族树的树状特征和原理可以让树无限延伸和扩大,添加家庭成员,是目前用于家庭沟通比较好的网络工具之一。 你去自己亲自建立一颗家族树会更清楚! 家族(25)家谱(23)

一个表就够了

id——每个人的id

fid——如果有值 就是父亲的id

hid——如果有值 就是丈夫的id

wid——如果有值 就是妻子的id

其他字段:姓名 性别 出生日期 等等

家谱怎么编写?

家谱的封面家谱的形式家谱的主体形式,叫世系图,长这个样子世系图分为宝塔式图谱、树系图谱、线性图谱和牒记式图谱(无图,曾以是以文字叙...
点击下载
热门文章
    确认删除?
    回到顶部