java二叉树家谱实现

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

java二叉树家谱实现,第1张

mport javaawtBorderLayout;

import javaawtDimension;

import javaawteventActionEvent;

import javaawteventActionListener;

import javautilRandom;

import javaxswingJButton;

import javaxswingJFrame;

import javaxswingJPanel;

import javaxswingJScrollPane;

import javaxswingJTree;

import javaxswingtreeDefaultMutableTreeNode;

public class Randomtree extends JFrame {

private JTree tree;

public static String[] school = { "初中课程", "高中课程", "大学课程" };

public static String[] color = { "颜色", "运动", "食物" };

public static String[] plant = { "植物", "动物", "人" };

public static String[][] school2= {

{ "初中一年级", "初中二年级", "初中三年级"}, {"高中一年级", "高中二年级",

"高中三年级"}, {"大学一年级", "大学二年级", "大学三年级", "大学四年级"} };

public static String[][] color2 = {

{ "绿色", "白色", "红色"}, {"足球", "篮球",

"羽毛球"}, {"面包", "牛奶", "披萨", "热狗"} };

public static String[][] plant2 = {

{ "玫瑰花", "月季花", "海棠花"}, {"猪", "狗",

"猫"}, {"黄种人", "黑种人", "白种人", } };

public static void main(String[] args) {

// TODO 自动生成方法存根

new Randomtree();

}

public Randomtree() {

super();

final Random random=new Random();

setVisible(true);

setSize(300,400);

tree = new JTree();

final JPanel panel = new JPanel();

panelsetPreferredSize(new Dimension(0, 40));

getContentPane()add(panel, BorderLayoutNORTH);

final JScrollPane scrollPane = new JScrollPane();

scrollPanesetPreferredSize(new Dimension(300, 350));

getContentPane()add(scrollPane, BorderLayoutCENTER);

final JButton button = new JButton();

buttonaddActionListener(new ActionListener() {

public void actionPerformed(ActionEvent arg0) {

int k=randomnextInt(3);

tree=getTree(k);

scrollPanesetViewportView(tree);

}

});

scrollPanesetViewportView(null);

buttonsetText("随机生成树");

paneladd(button);

pack();

}

protected JTree getTree(int n) {

String[] second=null;

String[][] three=null;

if(n==0){second=school; three=school2;}

if(n==1){second=color; three=color2;}

if(n==2){second=plant; three=plant2;}

DefaultMutableTreeNode root=new DefaultMutableTreeNode("root");

for(int i=0;i<secondlength;i++){

DefaultMutableTreeNode secondNode=new DefaultMutableTreeNode(second[i]);

for (int j=0;j<three[i]length;j++){

DefaultMutableTreeNode threetNode=new DefaultMutableTreeNode(three[i][j]);

secondNodeadd(threetNode);

}

rootadd(secondNode);

}

JTree tree=new JTree(root);

treeexpandRow(1);

treeexpandRow(5);

treeexpandRow(9);

return tree;

}

}

简单的 例子你可以模仿一下

姓氏辈份是字辈谱排的。

家族中同辈人为了体现宗族关系,通常在起名时需找一个共同用字,不同辈分的共同用字排列起来就形成了这个家族用以标明世系次第的字辈。

字辈的形成是为了分尊卑,别长幼。此处的尊卑并不是指政治地位上的尊卑,而是指家族内部辈分的高下。

关于字辈的产生,在汉代,甚至在先秦时期,即已出现了一些在名字用字上反映同辈关系的萌芽或苗头,如选共同用字或在偏旁部首上体现出来。

然而,这只能是萌芽,它离真正有目的、有意识地使用共同字来区别辈分,进而预先选取一定数量,且有一定意义的“吉字”作为一种规定性、后代子孙取名时必须遵守的字辈,尚有相当大的距离。

扩展资料:

儒家文化对论资排辈的强调,源于农业社会独特的社会结构,中国人的这种特点与儒家文化几千年来的影响有关。孔子本人就是一个非常注重“礼”的人,而礼就是人与人之间交往的形式。在孔子认可的礼中,大多都是在强调身份的重要性。

《论语乡党》整篇都在讲礼,包括士人在各种场合、面对各种人的时候应当遵循何种规矩。孔子讲的礼有两个维度的内核,一个是以亲疏作为判定依据的“孝”,一个是以尊卑作为判定依据的“忠”。孟懿子问孝,子曰:“无违。”(《论语为政》)。

孝的第一要义是要听话,而且要和颜悦色(色难),这才算礼数周到。对于君主,要“事君尽礼”(《论语八佾》),才能算忠。有了这两条,人与人之间的关系就不再是平等的了,所谓“君君臣臣,父父子子”,就是一种论资排辈的表现。

-辈分

sub tree(parentid,istop)

if istop then

sql="select from tree where id=" & parentid & " and parentid=0"

else

sql="select from tree where parentid=" & parentid

end if

set rs=servercreateobject("adodbrecordset")

rsopen sql,conn,1,1

if not rseof then

redim arr_temp(rsrecordcount)

i=0

responsewrite "<table border=0 cellspacing=2 cellpadding=0><tr>"

while not rseof

arr_temp(i)=rs("id")

responsewrite "<td align='center' bgcolor='#CCCCCC'>" & rs("title") & "</td>"

i=i+1

rsmovenext

wend

responsewrite "</tr><tr>"

for j=0 to i-1

responsewrite "<td>"

Call tree(arr_temp(j),false)

responsewrite "</td>"

next

responsewrite "</tr></table>"

end if

end sub

call tree(1,true)

测试通过!~

要数据库+源码的,请下载:

http://wwwirichcn/images/treerar

请在5号前下载,,要不5号后我不担保还能不能下

#include<stdioh>

#include<stringh>

char w[5][20]={{"child"},{"parent"},{"sibling"},{"descendant"},{"ancestor"}};

    int kong(char a[]) {

    int n=0,i;

    for(i=0;a[i]!='\0';i++) {

    if(a[i]==' ')

    n++;

    else

    break;

    }

    return n;

}

char fam[200][20];

int num[200]={0};

int search(char a[],int n) {

    int i=1;

    while(1) {

    if(!strcmp(a,fam[i]))

    return i;

    i++;

    }

    return 0;

}

int search1(int n,int x) {

    int i=1;

    while(i<x) {

    if(num[i]==n)

    return i;

    i++;

    }

    return 0;

}

char name[1000],word[1000],n1[100],n2[100],d[100];

int main() {

    int n,m,i,j,a,b,t,x,k,h;

    while(scanf("%d%d",&n,&m)!=EOF) {

        memset(fam,'\0',sizeof(fam));

        memset(num,'\0',sizeof(num));

        scanf("%s",fam[1]);

        getchar();

        a=b=2;

        t=1;

        num[1]=1;

    for(i=2;i<=n;i++) {

        memset(name,'\0',sizeof(name));

        gets(name);

        b=kong(name);

        if(b>a) {

            if(fam[search1(t2+1,i)][0]!='\0')

                t=t2+1;

            else 

                t=t2;

        }

        else { if(b<a) {

            h=(a-b)/2;

            while(h>=1) {

                t=t/2;

                h--;

            }

        }}

    if(fam[search1(t2,i)][0]!='\0')

    x=t2+1;

    else x=t2;

    num[i]=x;

    for(j=b;name[j]!='\0';j++)

    fam[i][j-b]=name[j];

    a=b;

    }

    for(i=0;i<m;i++) {

    gets(word);

    k=0;h=0;

    memset(n1,'\0',sizeof(n1));

    memset(n2,'\0',sizeof(n2));

    memset(d,'\0',sizeof(d));

    for(j=0;word[j]!='\0';j++) {

    if(word[j]==' ') {

    k++;

    h=0;

    continue;

    }

    if(k==0)

    n1[j]=word[j];

    if(k==5) {

    n2[h]=word[j];

    h++;

    }

    if(k==3) {

    d[h]=word[j];

    h++;

    }

    }

    if(!strcmp(d,w[0])) {

    a=search(n1,n);a=num[a];

    b=search(n2,n);b=num[b];

    if(a==b2||a==(b2+1))

    printf("True\n");

    else printf("False\n");

    continue;

    }

    if(!strcmp(d,w[1])) {

    a=search(n1,n);a=num[a];

    b=search(n2,n);b=num[b];

    if(b==a2||b==(a2+1))

    printf("True\n");

    else printf("False\n");

    continue;

    }

    if(!strcmp(d,w[2])) {

    a=search(n1,n);a=num[a];

    b=search(n2,n);b=num[b];

    if((a==b+1&&a==b/22+1)||(a==b-1&&b==a/22+1))

    printf("True\n");

    else printf("False\n");

    continue;

    }

    if(!strcmp(d,w[3])) {

    a=search(n1,n);a=num[a];

    b=search(n2,n);b=num[b];

    while(a>0) {

    a=a/2;

    if(a==b) {

    printf("True\n");

    break;

    }

    if(a==0)

    printf("False\n");

    }

    continue;

    }

    if(!strcmp(d,w[4])) {

    a=search(n1,n);a=num[a];

    b=search(n2,n);b=num[b];

    while(b>0) {

    b=b/2;

    if(a==b) {

    printf("True\n");

    break;

    }

    if(b==0)

    printf("False\n");

    }

    continue;

    }

    }

    }

    return 0;

}

听说回答的够长能够自动采纳

高,曾,祖,考,己身,子,孙,曾孙,玄孙---是为九族顺序

君子之泽,五世而斩高祖以上可并入“本门历代祖先神位”

中间为最长辈,面对祖先灵位右边为上(尊),左为下(卑),依次排列

始祖居中,二世、四世、六世位于始祖的左方,称昭;三世、五世、七世位于右方,称穆。简而言之,昭穆就是宗庙和坟地的左右位次,左为昭,右为穆。

按照我国民间传统习俗,人逝世后其家人都要为其制作牌位,作为逝者灵魂离开肉体之后的安魂之所。牌位大小形制无定例,一般用木板制作,呈长方形,下设底座,便于立于桌安之上。牌位书写,古代一般多用老宋体(笔划竖粗横细)、自上而下竖写,现代则多采用正楷、隶书、魏碑、等字体,以示庄重、肃穆。

扩展资料

家谱,是使后代知晓统系来处的方法,又可以使家族不散不失传。然而修家谱的目的是治国,将古代宗法尊祖、敬宗、收族的原则,变成了修宗谱、建宗祠、置族田、立族长、订族规为特征的体现封建族权的宗族制度。

家谱的雏形,在殷商卜辞中的世系关系中有所反映。隋唐以前,家谱的修撰已相当发达,大量的家谱书籍问世,但大多未留传后世,人们一般认为家谱起于宋代。

宗庙制度产生于周代,《礼记·王制》中已记载了 帝王贵族的宗庙制度 。即天子七庙太祖、三昭、三穆,诸侯五庙太祖、二昭、二穆,公卿三庙太祖、一昭、一穆。秦代“尊君卑臣,无敢营宗庙者。汉世多建祠堂于墓所”。士大夫不敢建宗庙,从此宗庙成为天子专有

宋代朱熹提倡建立祠堂法:每个家族建立一个奉祀高、曾、祖、祢四世神主的祠堂四龛,而且,初立祠堂时,计现田每龛取1/20以为祭田,亲尽则以为基田。由宗子主之,以给祭用。清代,祠堂已遍及全国城乡各个家族,祠堂是族权与神权交织的中心。

祠堂中的主祭——宗子,相当于天子;管理全族事务的宗长,相当于丞相;宗正、宗直,相当于礼部尚书与刑部尚书。祠堂最能体现宋代宗法制家国一体的特征。

java二叉树家谱实现

mport javaawtBorderLayout;import javaawtDimension;import javaawteventActionEvent;import javaawteventActionListener;import jav...
点击下载
热门文章
    确认删除?
    回到顶部