怎么编写家谱?

栏目:资讯发布:2023-11-16浏览:2收藏

怎么编写家谱?,第1张

一、序

序就类似于现在书的序,可以由族中得望高的人写,也可以由外人写。主要是通过另一个或另几个人的眼光来看待这本族谱。通常情况下,新序在前面,旧的序也要包含在内并排在新序后面。

二、简介

即使是对于自己的家族,能全面了解的人也不多,所以

需要首先简介一下自己家族,可提及的内容有:刻谱凡例、本族谱本次创修(修订)参与人员、时间、为什么要修订;此次编码的依据是什么;家族的整体情况、历史、迁移史、当前分布、人数;本族宗派、字辈,即记录每一代人起名规则;祖坟所在地、祖坟中各代分布图;对祖先事考查、考证。

总之,这里不具体到某一个人,只是对整个家族进行整体描述。

三、人物志

其实一本家谱本身就是人物记录,但通常情况下,家谱中会记录某一个或多个优秀的典型人物或团体。而记录这些优秀人物时,常常格式多样,有该人的传记、他写的文章书稿、获得过的功名、官名、、画像、碑记等。这里需要注意的是千万不能把同姓历史名人强编入本族谱,即使是小小提示也不可。因为后人续谱时,常常会因为这一次信以为真,而以讹传讹。

四、世系表

世系是家谱中最为重要的一项,最简单的家谱,有时只有一个世系表。

世系表是记录家族中每个人的关系,用计算机中的术语,这种一对多的结构是“树”状结构,但实际中的往往会比较复杂。当一个家族很大、人数很多时。会出现嗣出嗣入(通过过继、领养、送人)、迁入迁出的现象。

五、世略表

通常情况下,仅有世系表的家谱其实是没有实际意义的,面对一些不是名人的名字,除了这几个字,你还能知道什么呢一个好的办法就是增加世略表,世略表是记录世系表中每一个族人简历的表。这一部分可以和世系表合二为一,也可以单列。我认为单列更好,因为合二为一,常常导致世系表过肥过大,查找一个成员的时候非常麻烦。

很多家谱中,世略只写到父名、娶妻、生子数及名字数,这样写虽然整体看上去挺规范,实际上也没多大意义,因为世系表本身就可以表示这种信息。我认为世略不一定能做到每个人都有完整的简历,但至少应该有:本人生卒年月、主要职务、职称、主要生活工作地、本人工作简历、主要成绩、妻子姓名、妻子嫁出地、妻子父亲的名、妻子简历、子女名、女儿出嫁地、所嫁人姓名。这样不仅妻方家谱可以通过家谱查到本家族,本家族也可以通过自己家族查到女儿家族。

六、后记

后记写一些感想即可。

(来源:百度经验等)

你好!

谱序的内容一般包涵:

叙述为什么要修谱以及修谱的重要性;

组织带头修谱以及寻根问祖的过程简述;

如果有新建祠堂,也需要做一些说明;

其他;

最后附上日期,以及撰写者。

谱序不能随便写,通常需要一些文学功底,一般会邀请一些老先生或者文化水平较高的人来写。

附样品,仅供参考!

  欧式家谱体例,是现在用得最多的家谱模式。它是北宋大文学家欧阳修家族家谱模式的简称。它的特点就是:世代分格,由右向左;五世一表,一表一提。上下为父子,左右为兄弟。

  1、 欧式家谱一般是一页左右十竖行,上下五层横格。上下为父子,左右为兄弟。

  2、上下五层横格,为五世。从上往下数,一、二、三、四、五,五世。每上下相邻的两层均为父子关系。

  

  3、同一层横格中左右相排的人均为同辈的兄弟。以年齿论,右边的排行为长,向左依次递减为老二、老三、……。

  4、父亲只有一子,则竖行中父子名讳上下相对;如果父有三子,正对父亲名下的是长子,紧邻长子左边的两格则填写老二老三的名讳。

  5、同辈的人数较多,一页填写不完可往下页延续,但表示世系辈分的横格不能舛错,不然的话,世系辈分就乱了。

  6、一个竖格,填写夫妇二人名讳,右边写男人名讳,左边写妻子名讳。需要加注的,名字旁边加注小字。

  7、首页五世,这五世不论占了几页,都是同表,都得一提。提,就是把本表最下一横层中,第五世的所有名字,都提到下一表中最上层的第一层横格中,按原来的顺序从右到左依次排好。提的作用就是上下两表关系的承上启下,互相衔接,不致舛错、断裂。

  8、提到第二表的五世,领续下面的六、七、八、九四世。由于此表领续的五世是上表未世的重复,所以此表实际上只续了四世。下边后续的各表都是如此,这叫"五世一提,实续四世"。

  9、家族较大,支系众多,可续完一支,再续另外一支,在卷首编好目录页码,便于日后的查阅。

  10、以上9项,都是世系排序的元素。世系是家谱的主要内容,除世系外,还有凡例、序言、影像、家规、题名、耆寿、节烈等诸多项目。由于各个家族具体情况不同,所以家谱编写的内容也不尽相同。

以下程序已在win-tc和tc20下运行通过,已加详细注释(本人所写)。

/ 数据安全实用程序,加密解密简单程序 /

#include<stdioh>

#include<stdlibh>

#include<conioh>

int flag;

char encrypt(char ch,int key)/加密函数,把字符循环移位/

{

if(ch>='a' && ch<='z') / 如果是小写字母 /

{

ch=(ch-'a'+key%26)%26+'a'; / 字母向后移key%26个位置,超过字母z则再从a开始向后移动 /

}

else if(ch>='A' && ch<='Z') / 如果是大写字母 /

{

ch=(ch-'A'+key%26)%26+'A'; / 字母向后移key%26个位置,超过字母Z则再从A开始向后移动 /

}

return ch;

}

char decrypt(char ch,int key)/解密函数,把字符循环移位/

{

if(ch>='a' && ch<='z') / 如果是小写字母 /

{

ch=(ch-'a'+26-key%26)%26+'a'; / 字母向后移26-key%26个位置,超过字母z则再从a开始向后移动 /

}

else if(ch>='A' && ch<='Z') / 如果是大写字母 /

{

ch=(ch-'A'+26-key%26)%26+'A'; / 字母向后移26-key%26个位置,超过字母Z则再从A开始向后移动 /

}

return ch;

}

void menu()/菜单,1加密,2解密,3显示文本文件内容/

{

clrscr();

printf("\n=======================================================");

printf("\n1Encrypt the text file"); / 加密文件 /

printf("\n2Decrypt the text file"); / 解密文件 /

printf("\n3Display text file contents");/ 显示加密或解密或未加密或解密的文件 /

printf("\n4Quit\n");

printf("=========================================================\n");

printf("Please select a item:"); / 选择一个菜单 /

}

void logo()/显示程序信息/

{

printf("\nwelcome to encrypt program \n ");

return;

}

void encrypt_decrypt_File(char infile,int key, char outfile) / 加密或解密函数 /

{

FILE in,out;

char ch;

clrscr(); / 清屏 /

if((in=fopen(infile,"r"))==NULL) / 打开欲加密或解密的文件/

{

printf("Can not open the infile!\n"); / 如果打开文件失败或文件不存在打印打开失败信息 /

printf("Press any key to exit!\n");

getch(); / 并等待任一按键然后退出程序 /

exit(0);

}

if((out=fopen(outfile,"w"))==NULL) / 打开文件保存加密或解密后的内容/

{

printf("Can not open the outfile!\n"); / 如果打开文件失败或文件不存在打印打开失败信息 /

printf("Press any key to exit!\n"); / 并等待任一按键然后退出程序 /

fclose(in); / 关闭输入文件 /

getch(); / 等待按键,按任一键退出程序 /

exit(0);

}

ch=fgetc(in); /从文本文件中读入字符/

while(ch!=EOF)/加密或解密/

{

/如果是英文字符,则进行加密或解密,否则,不进行加密或解密处理/

if((ch>='a' && ch<='z' ) || (ch>='A' && ch<='Z'))

{ if(flag==1)

fputc(encrypt(ch,key),out);

if(flag==2)

fputc(decrypt(ch,key),out);

}

else

fputc(ch,out);

ch=fgetc(in);

}

/关闭输入及输出文件/

fclose(in);

fclose(out);

}

void displayFile(char infile) /将文本文件的内容显示在屏幕上/

{

FILE fp;

char string[81];

if((fp=fopen(infile,"r"))==NULL) / 以只读方式打开文本文件 /

{

printf("cann't open file");exit(0); / 如果文件不存在或打开失败打印无法打开信息并退出程序 /

}

while(fgets(string,81,fp)!=NULL)

fputs(string,stdout); /把所取字符串送到屏幕显示/

fclose(fp); / 关闭文件 /

}

int main()

{

int i,n;

char ch0,ch1;

char infile[40],outfile[40];

textbackground(LIGHTGRAY); /设置背景颜色为浅灰色/

textcolor(BLACK); /设置文字颜色为黑色/

clrscr();/清除屏幕显示/

logo(); /显示程序信息/

sleep(2); / 延时2秒 /

menu(); /显示屏幕菜单/

ch0=getche();/等待用户从键盘输入,并把输入显示在屏幕上/

while(ch0!='4')

{

clrscr();

if(ch0=='1') /选择加密功能/

{

flag=1;

printf("\nPlease input the infile to be encrypted:"); / 输入要加密的文件名 /

scanf("%s",infile); / 该文件要和本程序放在同一个目录下 /

printf("Please input the encrypt key:");

scanf("%d",&n);/输入加密密码/

printf("Please input the outfile:"); /输入存放加密内容的文件名/

scanf("%s",outfile); / 该文件可以自动创建 /

encrypt_decrypt_File(infile,n,outfile);

printf("\nEncrypt is over!\n");/ 加密成功 /

sleep(1); / 延时1秒 /

}

else if(ch0=='2') /选择解密功能/

{

flag=2;

printf("\nPlease input the infile to be decrypted:"); / 输入要解密的文件名 /

scanf("%s",infile); / 该文件要和本程序放在同一个目录下 /

printf("Please input the decrypt key:");

scanf("%d",&n);/输入解密密码,加密和解密密码应相同/

printf("Please input the outfile:"); /输入存放解密内容的文件名/

scanf("%s",outfile); / 该文件可以自动创建 /

encrypt_decrypt_File(infile,n,outfile);

printf("\nDecrypt is over!\n");

sleep(1); / 延时1秒 /

}

else if(ch0=='3') /选择显示文本文件功能/

{

printf("\nPlease input the infile to be displayed:"); / 输入要显示的文件名 /

scanf("%s",infile);

displayFile(infile);/ 显示文件 /

getch();

}

else

{ /不合法输入/

printf("\nplease input a valid number(1-4)\n");

sleep(1); / 延时1秒 /

}

menu();/显示程序菜单/

ch0=getche(); /等待用户下一次的功能选择/

}

system("cls");/清除屏幕/

logo(); /显示程序信息/

printf("\nGood Bye!\n");

sleep(2);/ 延时2秒 /

system("pause"); / 暂停,按任一键退出程序 /

return 0;

}

在家谱中,如果不知道祖先的生卒年月日,可以采取以下方法进行记录:

1 暂时空缺:可以选择在对应的位置上留下空白,以表示未知的生卒信息。

2 不确定的日期:如果知道具体的年份,可以使用“约”或者“——”来估计月份和日期。例如,“生于——年——月——日”或“约生于——年——月”。

3 均采用一个纪念日:可以选择一个具有家族意义的日子,如家族创立日,作为祖先的出生日期。同样地,可以选择一个家族重要的事件发生日,作为祖先的逝世日期。

4 使用“未知”或“不详”:可以在生卒年月的日位置上使用这样的标注,以表示无法确定具体的日期。

无论选择哪种方法,都需要在记录的下方或旁边进行说明。这样可以保证其他阅读家谱的人了解到你所标记的含义。

家谱的封面

家谱的形式

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

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

树系图谱

线性图谱

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

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

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

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

家谱的内容都有什么?

一、写清楚姓氏源流。

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

二、写清楚堂号。

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

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

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

三、家训和家族的历史。

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

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

(一)、注重家法、国法

(二)、和睦宗族、乡里

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

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

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

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

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

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

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

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

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

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

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

如何用C语言编写自己的姓名和学号 用字符串保存就可以了

比如

int main(){ char name = "张三"; char no="123456"; printf("姓名:%s\n学号:%s\n", name, no); return 0;}

如何用C语言写自己的strtok函数

strtok函数会破坏被分解字符串的完整,调用前和调用后的s已经不一样了。如果要保持原字符串的完整,可以使用strchr和sscanf的组合等。

strtok是一个线程不安全的函数,因为它使用了静态分配的空间来存储被分割的字符串位置

线程安全的函数叫strtok_r,ca。

运用strtok来判断ip或者mac的时候务必要先用其他的方法判断''或':'的个数,因为用strtok截断的话,比如:"19216808"这个字符串,strtok只会截取四次,中间的无论多少都会被当作一个key。

函数strtok保存string中标记后面的下一个字符的指针,并返回当前标记的指针。

后面再调用strtok时,第一个参数为NULL,继续将string标记化。NULL参数表示调用strtok继续从string中上次调用 strtok时保存的位置开始标记化。

如果调用strtok时已经没有标记,则strtok返回NULL。注意strtok修改输入字符串,因此,如果调用strtok之后还要在程序中使用这个字符串,则应复制这个字 符串。

c语言如何编写自己的函数

(1)无参函数的定义一般形式:

类型说明符 函数名() 例如: void Hello()

{ {

类型说明符 printf("Hello,world");

语句 }

}

(2)有参函数的定义一般形式:

类型说明符 函数名(形式参数表) 例如: int max(int a,int b)

{ {

类型说明符 if(a>b)

语句 return a;

} else

return b;

}

其中类型说明符指明了本函数的类型,函数的类型实际上是函数返回值的类型,它们通常是C语言的

基本数据类型

如何用c语言编写

void print_star(int n){ int i,j; for(i=1; i<=n; i++) { for(j=1; j<=i; j++) { printf(""); } printf(" "); }} 你想打印几个,调用函数就可以了

编写一个C语言程序,显示自己的学号,姓名,班级和电子邮箱

此类程序,没有额外要求情况下,直接打印即可。

学号:12345

姓名:赵手快

班级:一年一班

电子邮箱:youxiang@xxxxx

那么直接输出:

int main(){ printf("学号:12345\n"); printf("姓名:赵手快\n"); printf("班级:一年一班\n"); printf("电子邮箱:youxiang@xxxxx\n");}

这样就是符合需求的了。

如何用Eclipse编写C语言

安装CDT插件后,eclipse就可以编译运行C、C++系统。

安装CDT的步骤:

1、 安装eclipse

2、启动eclipse,点击Help菜单

3、选择Install new sofare菜单项

4、点击Work with:all available sites

5、搜索cdt,选择其中一款cdt,例如:cdt for Visual C++ support

6、点击确定即可

如何用codeblocks编写c语言?

1、打开软件,选择右上角file->project,之所以此处选择project,是因为一个完整的程序一般均有多种源文件组成,例如代码,说明文档,其他外链资源等,因此新建一个project是最常用的选择。

2、进入项目类型选择界面,此处我们选择控制台项目,这是最基础的测试程序逻辑的项目类型,拥有基本的输入输出流,可以给新手展示最简单、最基础的开发环境。点击go继续。

3、此处直接点击next即可。

4、此处选择我们需要使用的语言,codeblocks仅支持c和c++两种编程语言,此处以c语言作为示例,创建c++项目时选择c++语言即可。点击next。

5、project title为项目名称,一般根据该项目类型进行选取,方便日后查看时可以直观看到该项目的作用。folder to create project in选择该项目的存放路径,一般建议放在一个非中文路径,由于在大陆的windows系统默认编码均为GBK,而很多国外的源代码文件是以utf-8编码进行存储,因此在使用国外的源代码时会发生编码解析错误导致资源读取失败,故而此处不推荐使用中文路径。project filename为该项目的项目文件名称,cbp 全称 codeblocks project,resulting filename为项目文件完整路径。该项目文件存储包括,这个项目的全部文件地址,以及对于项目编译、发布时的各种设置,将一个完整的项目放到他人电脑上,通过项目文件可以完整地读取到整个项目的内容。

6、piler为编译器,此处选择GNU GCC编译器,后两个分别为项目发布和调试的各项设置,默认即可。

7、项目创建完成,双击mainc查看源文件,stdioh头文件包含了c语言中常用的数据类型,输入输出等,所以通常来说导入该头文件即可满足新手的使用要求,return 0代表程序的结束,该项目运行完成,告知操作系统,释放相关资源。

齿轮按钮为编译,该部分将c语言代码转化为电脑可执行的机器码(010101),该部分会检查程序中出现的语法错误。三角按钮为运行,运行将该源代码的机器码和所调用的其他机器码进行连接并交给操作系统进行运行。运行前一定会经过编译

如何用R语言编写一些自己的函数

最简单的方法就是每次引用时把写好的函数复制一下,到R console 中,然后写其他的。然后,编好的函数写成r 文件,下次直接使用命令 source(functionr)就能导入使用了

如何用jetbrains的Clion编写c语言

parsing的速度不如Visual Assist X, Resharper装在VS2013上表现还算正常, 装在VS2012上Find Usage定位会出错,

怎么编写家谱?

一、序序就类似于现在书的序,可以由族中得望高的人写,也可以由外人写。主要是通过另一个或另几个人的眼光来看待这本族谱。通常情况下,新序...
点击下载
热门文章
    确认删除?
    回到顶部