精华内容
下载资源
问答
  • 家族族谱管理,数据结构代码
  • 家族族谱系统 二叉树

    2013-06-24 10:26:06
    家族族谱实现,采用二叉树表示一个家谱关系。要求程序具有如下功能: (1) 文件操作功能:记录输入、记录输出,清除全部文件记录和将家谱记录存盘。 (2) 家谱操作功能:用括号表示法输出家谱二叉树,查找某人所有...
  • c语言数据结构期末大作业-家族族谱管理 要求设计实现具有下列功能的家谱管理系统: (1)输入文件以存放最初家谱中各成员的信息,成员的信息中均应包含以下内容: 姓名、出生日期、婚否、地址、健在否、死亡日期...
  • 二话不说就上效果: 当然我最初想要的效果是这个样子的: 来看看我们的实现代码吧: <template> <div class="demo g6"> <CommonTitle></CommonTitle> <div class="content...

    二话不说就上效果图:

    当然我最初想要的效果图是这个样子的:

    来看看我们的实现代码吧:

    <template>
        <div class="demo g6">
            <CommonTitle></CommonTitle>
            <div class="content">
                <div id="container"></div>
            </div>
        </div>
    </template>
    
    <script>
        import CommonTitle from "@/components/CommonTitle.component.vue"
    
        export default {
            name: "TestG6Dagre",
            components: {
                CommonTitle
            },
            mounted() {
                const data = {
                    // 节点的先后顺序与位置有关,应该从左到右,从上到下列举
                    nodes: [
                        {id: "yy", name: "爷爷", layType: "lay-1"},
                        {id: "nn", name: "奶奶", layType: "lay-1"},
                        {id: "wg", name: "外公", layType: "lay-1"},
                        {id: "wp", name: "外婆", layType: "lay-1"},
                        {id: "gg", name: "姑姑", layType: "lay-2"},
                        {id: "bb", name: "爸爸", layType: "lay-2"},
                        {id: "mm", name: "妈妈", layType: "lay-2"},
                        {id: "jj", name: "舅舅", layType: "lay-2"},
                        {id: "jm", name: "舅妈", layType: "lay-2"},
                        {id: "w", name: "我", layType: "lay-3"},
                        {id: "qz", name: "妻子", layType: "lay-3"},
                        {id: "bd", name: "表弟", layType: "lay-3"},
                        {id: "nx", name: "女婿", layType: "lay-4"},
                        {id: "ne", name: "女儿", layType: "lay-4"},
                        {id: "ez", name: "儿子", layType: "lay-4"},
                        {id: "ex", name: "儿媳", layType: "lay-4"},
                        {id: "wsn", name: "外孙女", layType: "lay-5"},
                        {id: "sz", name: "孙子", layType: "lay-5"},
                    ],
                    edges: [
                        {source: "yy", target: "gg"},
                        {source: "yy", target: "bb"},
                        {source: "nn", target: "bb"},
                        {source: "nn", target: "gg"},
                        {source: "wg", target: "mm"},
                        {source: "wg", target: "jj"},
                        {source: "wp", target: "mm"},
                        {source: "wp", target: "jj"},
                        {source: "bb", target: "w"},
                        {source: "mm", target: "w"},
                        {source: "jj", target: "bd"},
                        {source: "jm", target: "bd"},
                        {source: "w", target: "ez"},
                        {source: "w", target: "ne"},
                        {source: "qz", target: "ez"},
                        {source: "qz", target: "ne"},
                        {source: "ez", target: "sz"},
                        {source: "ex", target: "sz"},
                        {source: "ne", target: "wsn"},
                        {source: "nx", target: "wsn"},
                    ],
                };
    
                G6.registerNode("custom-node", {
                    options: {
                        anchorPoints: [[0.5, 0], [0.5, 1]]
                    },
                    draw(cfg, group) {
                        const rect = group.addShape("rect", {
                            attrs: {
                                x: -50,
                                y: -20,
                                width: 100,
                                height: 40,
                                radius: 10,
                                stroke: "#5B8FF9",
                                fill: "#C6E5FF",
                                lineWidth: 3,
                                cursor: "pointer",
                            },
                            name: "rect-shape",
                        });
                        if (cfg.name) {
                            group.addShape("text", {
                                attrs: {
                                    text: cfg.name,
                                    x: 0,
                                    y: 0,
                                    fill: "#00287E",
                                    fontSize: 14,
                                    textAlign: "center",
                                    textBaseline: "middle",
                                    fontWeight: "bold",
                                },
                                name: "text-shape",
                            });
                        }
                        return rect;
                    },
                }, "rect");
    
                const container = document.getElementById("container");
                const width = container.scrollWidth;
                const height = container.scrollHeight || 500;
                const graph = new G6.Graph({
                    container: "container",
                    width,
                    height,
                    layout: {
                        type: "dagre",
                        nodesep: 50,    // 节点间距
                        ranksep: 40,    // 层间距
                        controlPoints: false,   // 是否保留布局连线的控制点
                    },
                    defaultNode: {
                        type: "custom-node",
                    },
                    defaultEdge: {
                        // type: "polyline",
                        type: "line",
                        style: {
                            radius: 20,
                            offset: 45,
                            lineWidth: 2,
                            stroke: "#333333",
                        },
                        sourceAnchor: 1,
                        targetAnchor: 0
                    },
                    nodeStateStyles: {
                        selected: {
                            stroke: "#d9d9d9",
                            fill: "#5394ef",
                        },
                    },
                    modes: {
                        default: [
                            "drag-canvas",
                            "zoom-canvas",
                            "click-select",
                            // {
                            //     type: "tooltip",
                            //     formatText(model) {
                            //         const cfg = model.conf;
                            //         const text = [];
                            //         cfg.forEach((row) => {
                            //             text.push(row.label + ":" + row.value + "<br>");
                            //         });
                            //         return text.join("\n");
                            //     },
                            //     offset: 30,
                            // },
                        ],
                    },
                    fitView: true,
                });
                graph.data(data);
                graph.render();
    
                if (typeof window !== "undefined")
                    window.onresize = () => {
                        if (!graph || graph.get("destroyed")) return;
                        if (!container || !container.scrollWidth || !container.scrollHeight) return;
                        graph.changeSize(container.scrollWidth, container.scrollHeight);
                    };
            },
            methods: {},
        }
    </script>
    
    <style scoped lang="stylus">
        @import "~@/common/css/common.style.styl"
        .demo
            width: 100%
            height: 100%
            .content
                width: 100%
                height "calc(100% - %s)" % commonHeight
                #container
                    width: 100%
                    height 100%
    </style>
    

     当然,我也尝试了另一种效果,

    将此处注释放开: 

     但中间会出现这些多余或重复的线,不知各位大佬有何见解,还请指教!

    展开全文
  • 数据结构家族族谱

    千次阅读 2020-04-20 23:20:17
      数据结构除了算法外剩下的主要就是对数据的增删查改了,不同的结构占用的存储空间和相应效率都各自不同,因此了解各个类型之间...这里主要是想通过这个讲解一下他、她、它、ta们之间的关系,详细的内容会分为...

      数据结构除了算法外剩下的主要就是对数据的增删查改了,不同的结构占用的存储空间和相应效率都各自不同,因此了解各个类型之间的关系和异同之处就显的尤为重要。也只有掌握了这些才能说入了数据结构的门。

    在这里插入图片描述
      数据结构就是一个大家族,这个家族里面有着许许多多的子子孙孙。只有你把每一个子孙都搞明白了才有可能获得这个大家族的认可。这里主要是想通过这个图讲解一下他、她、它、ta们之间的关系,详细的内容会分为若干个小章节讲解。(我没有通天之能,一篇文章就把数据结构描述完,好想打个表情[笑哭])
      这里要给大家普及的一个知识点就是数据元素、数据项、数据对象这三者之间的关系。
    数据元素: 数据的基本单位在计算机程序中通常作为一个整体进行处理和考虑。
    数据项: 多个数据可以组成一个数据元素,数据项是数据的不可分割的最小单位
    数据对象: 性质相同数据元素集合就是数据对象。

    po:如果脑图中有错误或者遗漏望指正,感激不尽。

    展开全文
  • 由于文本文档不具有格式性, 所以可以输出无限大的世系,可以将整个家族的世系完整输出 。 4.具有输出部分世系分支的功能,可以分段输出世系,便于将世系分段保存和管理。配合整个世系和分段世系,...
  • Java集合族谱总结

    2021-03-15 17:59:37
    集合族谱核心成员集合族谱核心成员所有的集合类,都实现了Iterator接口,这是用于遍历集合中元素的接口;Java集合框架核心是两个类型的容器,一种是集合(Collection),存储单一元素,一种是(Map),存储键值对;...

    集合族谱核心成员

    e85f70ec1e07?from=timeline

    集合族谱核心成员

    所有的集合类,都实现了Iterator接口,这是用于遍历集合中元素的接口;Java集合框架核心是两个类型的容器,一种是集合(Collection),存储单一元素,一种是图(Map),存储键值对;Collection有3个接口子类,List、Set和Queue,下面是一层抽象类,再下一层是实现类,包括常用的ArrayList,LinkedList,HashSet,HashMap等等。

    集合遍历方式:

    Iterator 迭代输出

    Iterator it = arr.iterator();

    while(it.hasNext()){ object o =it.next(); ...}

    for 循环

    for(int i=0;i

    foreach 增强循环

    for(int i:arr){...}

    Collection接口

    e85f70ec1e07?from=timeline

    image.png

    从结构上看包含了一般线性数据结构的的常用方法,比如size(),isEmpty(),add(E),remove(),clear(),toArray()转数组等等。

    List

    继承与Collection的接口,一个允许重复的有序集合,有明星子类ArrayList和LinkedList。

    ArrayList:

    //最大长度为2的31次方-8

    private static final int MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8;

    /**

    * The size of the ArrayList (the number of elements it contains).

    *

    * @serial

    */

    private int size;

    /**

    * Constructs an empty list with the specified initial capacity.

    *

    * @param initialCapacity the initial capacity of the list

    * @throws IllegalArgumentException if the specified initial capacity

    * is negative

    */

    public ArrayList(int initialCapacity) {

    if (initialCapacity > 0) {

    this.elementData = new Object[initialCapacity];

    } else if (initialCapacity == 0) {

    this.elementData = EMPTY_ELEMENTDATA;

    } else {

    throw new IllegalArgumentException("Illegal Capacity: "+

    initialCapacity);

    }

    }

    private void ensureExplicitCapacity(int minCapacity) {

    modCount++;

    // overflow-conscious code

    if (minCapacity - elementData.length > 0)

    grow(minCapacity);

    }

    /**

    * Increases the capacity to ensure that it can hold at least the

    * number of elements specified by the minimum capacity argument.

    *

    * @param minCapacity the desired minimum capacity

    */

    private void grow(int minCapacity) {

    // overflow-conscious code

    int oldCapacity = elementData.length;

    int newCapacity = oldCapacity + (oldCapacity >> 1);

    if (newCapacity - minCapacity < 0)

    newCapacity = minCapacity;

    if (newCapacity - MAX_ARRAY_SIZE > 0)

    newCapacity = hugeCapacity(minCapacity);

    // minCapacity is usually close to size, so this is a win:

    elementData = Arrays.copyOf(elementData, newCapacity);

    }

    ArrayList内部用数组存储元素的,这个数组可以动态创建,如果元素个数超过了数组的容量,那么就创建一个更大的新数组,并将当前数组中的所有元素通过Arrays.copy()复制到新数组中。

    LinkedList:

    链表和数组的最大区别在于它们对元素的存储方式的不同导致它们在对数据进行不同操作时的效率不同。

    ArrayList和LinkedList的区别:

    ArrayList是实现了基于动态数组的数据结构,而LinkedList是基于链表的数据结构;

    对于查询操作,ArrayList要优于LinkedList,因为数组直接访问下标,链表需要从头开始移动指针逐个访问。

    对于增删操作,LinkedList通常要优于ArrayList,因为数组添加数据,后续元素要逐个后移,链表不需要。

    Arrays:

    来自java.util.Arrays工具类。常用方法:

    asList:将数组转成集合

    实现:

    public static List asList(T... a) {

    return new ArrayList<>(a);

    }

    binarySearch:在数组中查找某元素的位置

    public static int binarySearch(int[] a, int fromIndex, int toIndex,

    int key) {

    rangeCheck(a.length, fromIndex, toIndex);

    return binarySearch0(a, fromIndex, toIndex, key);

    }

    copyOf和copyOfRange

    复制前3位数返回数组

    String[] names = { "Eric", "John", "Alan", "Liz" };

    //[Eric, John, Alan]

    String[] copy = Arrays.copyOf(names2, 3);

    从第3个元素开始到结束复制返回数组

    String[] names = { "Eric", "John", "Alan", "Liz" };

    //[Eric, John, Alan]

    String[] copy = Arrays.copyOf(names, 2,names.length);

    Set

    Set接口扩展自Collection,它与List的不同之处在于,规定Set的实例不包含重复的元素。Set接口有三个具体实现类,分别是散列集HashSet、链式散列集LinkedHashSet和树形集TreeSet。

    Queue

    队列操作是先进后出(First In First Out),称为限制性线性表。数据插入只能在尾部,删除只能在头部。

    队列方法:

    e85f70ec1e07?from=timeline

    image.png

    按照以上方法,用数组模拟队列:

    public class MyQueen {

    private T[] array;

    private int max;

    private int count;

    private int head; //头位置

    private int tail; //尾位置

    public MyQueen(int length){

    max = length;

    array = (T[]) new Object[max];

    head = -1;

    tail = 0;

    }

    public boolean isEmpty(){

    return count == 0;

    }

    public boolean isFull(){

    return count == max;

    }

    public void add(T e){

    if (tail == max - 1) {//已到实际队尾,从头开始

    tail = -1;

    }

    //尾位置后移

    tail++;

    array[tail] = e;

    //长度加一

    count++;

    }

    public T remove(){

    T first = array[head];

    //头位置后移

    head++;

    //长度减一

    count--;

    if(head == tail){ //头尾重合,从头开始

    head = 0;

    }

    return first;

    }

    public T head(){

    return array[head];

    }

    public int length(){

    return count;

    }

    }

    包括添加,删除,判断空,获取长度,获取头元素等。

    Map

    Map,图,是一种存储键值对映射的容器类,在Map中键可以是任意类型的对象,但不能有重复的键,每个键都对应一个值。Map接口常用的有三个具体实现类,分别是HashMap、LinkedHashMap、TreeMap。

    Map类结构:

    e85f70ec1e07?from=timeline

    image.png

    其他集合类

    Vector

    Vector与ArrayList基本一致,不同之处在于Vector使用了关键字synchronized将访问和修改向量的方法都变成同步的了。

    ①Vector所有方法都是同步,有性能损失。

    ②Vector早期版本出现的。

    ③Vector初始length是10 超过length时 以100%比率增长,相比于ArrayList更多消耗内存。

    Stack

    栈操作特点是后进先出(Last In First Out),就像家里叠盘子一样。栈的插入和删除数据元素的操作只能在栈顶进行。栈继承自类Vector:

    public class Stack extends Vector {}

    展开全文
  • 家族族谱系统设计.doc

    2021-04-22 14:25:51
    家族族谱系统设计家族族谱系统设计1、相关定义1.1、树的概念树是 n(n>=0)个结点的有限集 T。当 n=0 时,集合为空集,称为空树;否则它满 足如下两个条件: (1) 有且仅有一个特定的称为根的结点;? (2) 其余的结点可...

    家族族谱系统设计

    家族族谱系统设计

    1、相关定义

    1.1、树的概念

    树是 n(n>=0)个结点的有限集 T。当 n=0 时,集合为空集,称为空树;否则它满 足如下两个条件: (1) 有且仅有一个特定的称为根的结点;? (2) 其余的结点可分为 m(m>=0)个互不相交的子集 T1,T2,T3...Tm,其中每个 子集又是一棵树,并称其为子树。? 5.4.2 PHP 与 XML 的关系与设计 (1) 从页面输入到存储到数据库? ? 新用户登录后创建新族谱数树,或者老用户登录后修改自己的族谱树,点击 保存后,Flex 通过 HttpService 把数据发送给 PHP 端,PHP 端获取数据后,分析 并封装此数据,以 XML 形式表示成员关系,并把该 XML 保存在数据库中。如 图 5-7 所示: 38 姓名 性别 手机 ... var o:Object = new Object(); o.relation = “SELF”; o.userid = 123 o.gender = “M”; = “Andy httpService.send(o); $name = $_POST[“name”]; $userid = $_POST[“userid”]; $gender = $_POST[“gender”]; $relation = $_POST[“relation”]; XML文件generatePersonalInfoXML($data) 填写表单 提交表单 AS组装数据 通过HttpService, 把数据发送给PHP处理 生成成员关系 生成XML数组 ? 图 57?XML 的生成? (2) 从数据库到页面显示? ? ? ? ? 当客户登录并进入族谱树页面时,FLEX 会发送请求给 PHP 端,请求 PHP 端提供 家族成员信息。PHP 端到数据库查询之前生成的 XML 文件,如果有,则返回 XML 给 FLEX 端。FLEX 接收到 XML 数据后,开始分析 XML 中所有成员的信息,并根据此信息 绘制树的节点和连线,直到所有节点绘制完成。如下图 58 所示:? Flex族谱树页面 PHP端调用 function load($userid) 发送HttpService 请求 取得当前用户族谱关系 XML文件 Flex解析 XML文件 返回XML xml中包括人(树节点)信息 绘制树节点和线 ? 图 58?XML 的展示? 39 5.4.3 PHP 生成 XML 数据的实现设计 下面从程序角度阐述如何使用 PHP 根据需求产生成员的族谱树 XML。 (1) 添加自己(即注册用户):”自己”是家族树的起点,家族中所有其他成员,均 是以”自己”这个节点向外延伸。 (2) 生成父母 XML,父母是树上的更高层节点,需要更新和当前成员是子女关系 的所有子女的关联信息。 40 (3) 生成儿子,女儿关系 XML,同时需要更新与其他成员的关联关系。(程序与上 述情况类似,省略)。 (4) 生成兄弟、姐妹关系 XML,如果当前成员和别的成员存在父母关系,则把父 母关系附加到此成员上。如果当前成员和别的成员存在兄弟,姐妹关系,同样 需要把兄弟姐妹关系附加到此成员上。 41 (5) 生成的 XML 模型如下: ? 42 5.4.4 FLEX 读取 XML 文件生成图形 在 FLEX 进行族谱树展现时,根据生成的家族成员关系 (PHP 代码生成的 XML 成员关系描述结构),家族中每个成员的关系都在 XML 得到关联,再把每个成员关 系转换图形(包括成员的姓名,性别,和其他成员关系,以及在树中的坐标)信息绘 制在族谱树中每个节点上。程序设计中采用遍历的算法绘制节点并生成树,部分程序 片段如下: 以下是绘制每个成员周围的直线。将分下述三种情况进行绘制,基本原则是:只 绘制成员右边的关系,比如右边的配偶和兄弟,如果绘制左边的,则会覆盖本身。 a. 如果有父母,则绘制与其有相同父母的所有兄弟的连线;如果没有兄弟,则 不绘制。 43 b. 如果有配偶,绘制配偶的连线,配偶的连线为水平直线。 c. 如果有子女,绘制同子女的连线。分多子女和单子女两种情况,因为程序函 数的复杂性,在此省略代码片段。 44 5.4.5 FLEX 访问 PostgreSQL 数据库 Flex 是不能直接连接数据库的,它只能间接地连接数据库。Flex 中提供了三种方 式:HttpService,WebService? 和 RemoteObject。其中 HttpService 可以直接获取 XML 中的数据,还可以通过 JAVA(JSP)以及 PHP 读取数据库中的数据,Hibernate 是通过 一个面向对象的查询语言(HQL)或者正则表达的 API 来完成查询的,如图 59 所示?: 图 5-9

    展开全文
  • 纯CSS族谱树形结构

    2019-04-19 11:12:41
    纯CSS打造的家谱树形结构,可用于HTML5/PHP/WEB开发等。支持无限级扩展。支持二次开发,可以修改为自己需要的样式。
  • MyFamily Tree 族谱编制

    2018-07-25 09:20:56
    MyFamily Tree 族谱编制,树状结构族谱.......................................................................................................................
  • 家谱开源家族树软件 描述 基于浏览器的家谱软件,可高效地交互和处理数据。 通过导入现有数据或手动数据输入轻松创建自己的家谱。 所有数据的安全存储都在您自己的服务器上,未经您的许可不会离开您的环境。 将来将...
  • C语言+家族谱+树结构

    2018-05-22 21:02:29
    数据结构作业 编程语言:使用C语言 数据结构:树 简介:实现 家族谱。增删改查。
  • /*Name: 家谱Description: 本项目对家谱管理进行简单的模拟,以实现查看祖先和子孙个人信息、插入家族成员、删除家族成员等功能。*/#include#includeusing namespace std;//=============树的结点类================...
  • jQuery树插件演示族谱Family tree和日程安排
  • 赵氏族谱图支派.doc
  • 家谱树状代码 demo by js.alixixi.com/*Now the CSS*/* {... padding: 0;}.tree ul {padding-top: 20px; position: relative;transition: all 0.5s;-webkit-transition: all 0.5s;-moz-transition: all 0.5s;}.tree...
  • 用闲暇时间利用OFFICE制作的族谱编制工具,ACCESS开发,支持导出到EXCEL图形。不能和专业团队的比,但是输入比较方便。
  • 族谱管理系统

    2015-06-16 09:23:31
    实现了族谱的电子化,采用Java编写,包括界面,以及数据库
  • 带树状结构的源码(适合族谱树),结构清晰明了,家族族谱、画结构等等
  • 41:家谱处理总时间限制:1000ms内存限制:65535kB描述人类学研究对于家族很感兴趣,于是研究人员搜集了一些家族的家谱进行研究。实验中,使用计算机处理家谱。为了实现这个目的,研究人员将家谱转换为文本文件。下面为...
  • 传承家谱软件是一款制作家族族谱的软件。使用这款家谱制作软件可以轻松的制作本家族族谱,能为族人添加照片,撰写事迹,并且能直接打印族谱,有兴趣的赶紧来试试吧! 【特点介绍】  1、单机版本,不需要外部控件...
  • 五大UNIX系统家族族谱

    千次阅读 2013-11-01 01:08:24
    UNIX操作系统不是某个特定操作系统实现,而是在遵循UNIX相关标准下的一个操作系统大家族,主要...五大UNIX操作系统族谱 家族名称 维护者 主要版本 说明 SVR USL SVR3.2、SVR4   BSD CSRG 4.2BSD(1983)、4.
  • 为您提供易行族谱管理系统下载,易行族谱管理系统是一款专业的家谱族谱编修软件,用户可以通过易行族谱管理系统导入各分支数据,并进行合并或者分开输入,可以自由设定,各种家谱标记齐全,十分实用。基本简介 易行...
  • 用于创建/绘制/打印族谱和祖先的软件。 它针对想要收集家庭信息,包括照片,创建图表并添加有趣故事的典型家庭用户(例如,退休父母)。 您可以使用灵活的布局创建不同的
  • 这个是我们大二时数据结构的假期大作业,C语言开发,tree结构 压缩包内容:源代码+程序设计说明书+可执行文件+配置文件 CSDN博客:http://blog.csdn.net/ye_shizhe
  • #include#include#include#include#include#includeusing namespace std;char q[10];typedef struct tree{char name[20];tree *left;tree *right;}tree;struct wenjian{char a[20];}d[50];void guodu(wenjian d[50])...
  • c语言课程设计 家族关系查询 是你做课程设计的最佳参考 里面包含源代码和实验报告!!!!十分齐全!!!
  • 注意: 您是试用用户,将无法保存“家族往事”的资料. 000F2BCC 74 28 --> EB 28 注意: 您是试用用户,将无法保存“图像资料”. 000F2C60 74 63 --> EB 63 注意: 您是试用用户,将无法保存“音频资料”. 000F2D2F 74 ...
  • 当一个家族成长到庞大规模的时候,就可以利用家庭树来了解血脉传承的过程,甚至也能应用在医学上探究家族病因。y Family Tree 能让使用者在新增成员的时候,加入他的出生和死亡时间、地点;用遗传数据描述血型、外观...
  • linux家族族谱

    2010-06-30 10:39:42
    一个有趣的族谱图,显示了各个版本的Linux系统之间的关系。 [img]http://dl.iteye.com/upload/attachment/270673/f0a0c4da-ea8d-39e9-a618-1ccea7c56d44.jpg[/img]

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,788
精华内容 715
关键字:

家族族谱图