一部完整的家谱基本哪些常见内容?
一、谱名
谱名中最重要的是谱籍和姓氏,即是什么地方、什么家族的家谱,为什么这样要这样写?更准确的反映家谱作为“史书”来反映信息,不然,编修的人当时明白,经年累月之后,转之何人何地?便无从查考,给后人寻根带来巨大困难。
二、像赞
人物像赞有各种表达,或始祖,如三皇五帝,也可以是近祖,或者迁祖,还可以是自古到今的家族内非凡的人物,特别杰出的人才。以昭示后人发奋图强。
三、谱序
稍具规模的家谱,卷首一定会有一篇至几十篇不等的序文,它是每部家谱不可缺少的内容之一。谱序包括新序、旧序、族外人的客序、跋语、目录和刻印人名以及其它关于本族的记述。
四、目录
全部家谱内容提要,以便检索。
五、谱论
谱论,即谱学理论,从司马迁开始历代都有名家,如欧阳修,苏轼,王安石,朱熹,王阳明,比如章学诚的《文史通义》曰:“有谱、州有志、国有史,其义一也。”,“且有天下之史,有一国之史有一家之史,有一人之史。传状志述,一人之史也;家乘谱牒,一家之史也;郡府县志,一国之史;综纪一朝,天下之史也。
六、凡例
凡例,即修谱的原则,规定,比如哪些人可以入谱,哪些人不能入谱,对人的次序的排定,哪些内容怎么去写等等,就是规定家谱里面都有什么,这个显示出编修之人的主观态度,如明朝家谱对女性入家谱,就很明确的规定:丈夫之后跟原配,接着依次是:继配,侧室,妾,纳,除原配外,这些二三四五老婆不可以有名字,原籍,生卒,等,这个男尊女卑的“名分”观念,尤 是对女性的一种变态的歧视。
七、家训
不要误解,《家训》不是家谱内容,这里为了突出家训的内容做个配图,中国是家天下的社会结构,名门望族是一大特色,家训家风起了很重要的教育作用。
八、世系
世系是家谱内容的核心部分,从家族第一世开始,记载其生卒,婚配,事略,墓葬,其人如何?一目了然。
九、传记
传记,不是每个人都有,是对家族内的杰出人物,立功立德之人的具体描写,反应出这些人物的杰出品质, 垂范后辈,是榜样力量。可分内传。外传,内传是五服之内,外传是五服之外,还有列传,分门别类,比如家佣,二三四老婆中的贞烈之妇,可做列传,这已经不适合今天。
十、谱跋
上图是梅曾亮的家谱跋语,他自夸了一下,“知岩”以乡兵保障宣州,然后对家族的分派流迁做了陈说,所以跋语就是做谱之后的感想,经验,过程等含有者的寄托之语。
十一、领谱字号
家族支派繁多广布,必须有字号,作为验证, 跟对号入座一样。家谱一般就包括上述内容,除此之外比较重要的包括,祠堂,敕封,艺文,契约等还有一些图表,制作时可根据原谱内容确定。没有原谱,就必须另起创谱,不使历史中断,再根据个人情况确定内容。
1、可以利用电脑中的Word文档完成家谱制作,首先打开word文档,点击工具栏中的“插入”选项并找到“smartart”图标。
2、然后在打开的“smartart”页面选择“组织结构图”,点击确定。
3、即可将标准的组织结构图插入页面中,点击文本处即可输入文字。
4、点击空白处或者原本的文本框,并选择添加项目的按钮,选择需要添加的项目的位置。
5、根据需要进行添加后即可生成一个家谱世系图的样式,在其中输入对应的姓名及内容即可。
家谱可不是随便编的。编家谱实际应是续家谱。一般的家谱都是有章法的,依着字号顺序排列。当字号用完或即将用完时,应有几位本家性氏的年长老者,举行续家谱仪式,共同商定往下排续的字号,而选续的字号决不允许与先辈的字号重复。
例如:常永志--“常”是姓氏,永志是名字,“永”就是永字辈的家谱字号。而字号用在名字的第一位或第二位均可。
如果老师让你们编家谱的话,那么你们的老师是个白痴。
#include<stdioh>
#include<stringh>
#include<stdlibh>
#define MaxWidth 40
#define Maxsize 30
#define NAMEWIDTH 10
typedef struct fnode
{
char father[NAMEWIDTH];
char wife[NAMEWIDTH];
char son[NAMEWIDTH];
}FamType;
typedef struct tnode
{
char name[NAMEWIDTH];
struct tnode lchild;
struct tnode rchild;
}BTree;
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<n&&strcmp(fam[i]father,root)!=0)
i++;
if(i<n)
{
p=(BTree )malloc(sizeof(BTree));
p->lchild=p->rchild=NULL;
strcpy(p->name,fam[i]wife);
bt->lchild=p;
for(j=0;j<n;j++)
{
if(strcmp(fam[j]father,root)==0)
{
p->rchild=CreatBTree(fam[j]son,fam,n);
p=p->rchild;
}
}
return(bt);
}
}
void DispTree1(BTree b)
{
if(b!=NULL)
{
printf("%s",b->name);
if(b->lchild!=NULL||b->rchild!=NULL)
{
printf("(");
DispTree1(b->lchild);
if(b->rchild!=NULL)
printf(",");
DispTree1(b->rchild);
printf(")");
}
}
}
void DispTree2(BTree bt)
{
BTree St[Maxsize],p;
int Level[Maxsize][2],top,n,i,width=4;
if(bt!=NULL)
{
printf(" >>家谱凹入表示法:\n");
top=1;
St[top]=bt;
Level[top][0]=width;
while(top>0)
{
p=St[top];
n=Level[top][0];
for(i=0;i<=n;i++)
printf(" ");
printf("%6s",p->name);
for(i=n+1;i<MaxWidth-6;i+=2)
printf("--");
printf("\n");
top--;
if(p->rchild!=NULL)
{
top++;
St[top]=p->lchild;
Level[top][0]=n+width;
Level[top][1]=1;
}
}
}
}
BTree FindNode(BTree bt,char xm[])
{
BTree p=bt;
if(p==NULL)
return(NULL);
else
{
if(strcmp(p->name,xm)==0)
return p;
else
{
bt=FindNode(p->lchild,xm);
if(bt!=NULL)
return bt;
else
return(FindNode(p->rchild,xm));
}
}
}
void FindSon(BTree bt)
{
char xm[NAMEWIDTH];
BTree p;
printf(" >>父亲姓名:");
scanf("%s",xm);
p=FindNode(bt,xm);
if(p==NULL)
printf(" >>不存在%s的父亲!\n",xm);
else
{
p=p->lchild;
if(p==NULL)
printf(" >>%s没有妻子!\n",xm);
else
{
p=p->rchild;
if(p==NULL)
printf(" >>%s没有儿子!\n",xm);
else
{
printf(" >>%s的儿子:\n",xm);
while(p!=NULL)
{
printf("%10s",p->name);
p=p->rchild;
}
printf("\n");
}
}
}
}
int Path(BTree bt,BTree s)
{
BTree St[Maxsize];
BTree p;
int i,flag,top=-1;
do
{
while(bt)
{
top++;
St[top]=bt;
bt=bt->lchild;
}
p=NULL;
flag=1;
while(top!=-1&&flag)
{
bt=St[top];
if(bt->rchild==p)
{
if(bt==s)
{
printf(" >>所有祖先:");
for(i=0;i<top;i++)
printf("%s",St[i]->name);
printf("\n");
return 1;
}
else
{
top--;
p=bt;
}
}
else
{
bt=bt->rchild;
flag=0;
}
}
}while(top!=-1);
return 0;
}
void Ancestor(BTree bt)
{
BTree p;
char xm[NAMEWIDTH];
printf(" >>输入姓名:");
scanf("%s",xm);
p=FindNode(bt,xm);
if(p!=NULL)
Path(bt,p);
else
printf(" >>不存在%s\n",xm);
}
void DelAll(FamType fam[],int n)
{
FILE fp;
if((fp=fopen("famdat","wb"))==NULL)
{
printf(" >>不能打开家谱文件\n");
return;
}
n=0;
fclose(fp);
}
void ReadFile(FamType fam[],int n)
{
FILE fp;
long length;
int i;
if((fp=fopen("famdat","rb"))==NULL)
{
n=0;
return;
}
fseek(fp,0,2);
length=ftell(fp);
rewind(fp);
n=length/sizeof(FamType);
for(i=0;i<n;i++)
fread(&fam[i],sizeof(FamType),1,fp);
fclose(fp);
}
void SaveFile(FamType fam[],int n)
{
int i;
FILE fp;
if((fp=fopen("famdat","wb"))==NULL)
{
printf(" >>数据家谱文件不能打开\n");
return;
}
for(i=0;i<n;i++)
fwrite(&fam[i],sizeof(FamType),1,fp);
fclose(fp);
}
void InputFam(FamType fam[],int n)
{
printf(" >>输入父亲、母亲、和儿子姓名:");
scanf("%c%s%c%s%c%s",fam[n]father,fam[n]wife,fam[n]son);
n++;
}
void OutputFile(FamType fam[],int n)
{
int i;
if(n<0)
{
printf(" >>没有任何记录\n");
return;
}
for(i=0;i<n;i++)
printf(" %10s%10s%10s\n",fam[i]father,fam[i]wife,fam[i]son);
}
void main()
{
BTree bt;
FamType fam[Maxsize];
int n=0,sel,sel1;
ReadFile(fam,n);
do
{
printf("1文件操作 2家谱操作 0退出 请选择:");
scanf("%d",&sel);
switch(sel)
{
case 1:
do
{
printf("1:输入 2:输出 9:全清 0:存盘返回 请选择:");
scanf("%d",&sel1);
switch(sel1)
{
case 9:
DelAll(fam,n);
break;
case 1:
InputFam(fam,n);
break;
case 2:
OutputFile(fam,n);
break;
}
}while(sel1!=0);
break;
case 2:
bt=CreatBTree("f1",fam,n);
do
{
printf("1:括号表示法2凹入表示法3找某人所有儿子4找某人所有祖先0:返回 请选择:");
scanf("%d",&sel1);
switch(sel1)
{
case 1:
printf(" >>");
DispTree1(bt);printf("\n");
break;
case 2:
DispTree2(bt);
break;
case 3:
FindSon(bt);
break;
case 4:
printf(" >>");Ancestor(bt);
break;
}
}while(sel1!=0);
break;
}
}while(sel!=0);
}
是这个程序 不好意思啦
一部完整的家谱基本哪些常见内容?
本文2023-09-28 06:23:02发表“资讯”栏目。
本文链接:https://www.lezaizhuan.com/article/123822.html