php家族族谱代码,家族族谱系统设计.doc

家族族谱系统设计

家族族谱系统设计

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值