我的树结构是这样的,是通过对话框弹出生成的,
2005级
   ---函授
      ---高起本(鼠标右击,弹出POPMENU,生成专业名)
     ---计算机应用(鼠标右击,弹出POPMENU,生成1班,2班)
            ---1班
            ---2班
      ---专科
         ---通信工程
            ---1班
      ---专升本
      ---二本
   ---脱产
      ---高起本
      ---专科
      ---专升本
      ---二本
   ---业余
      ---高起本
      ---专科
      ---专升本
      ---二本
2006级
   ---函授
      ---高起本
      ---专科
         ---通信工程
      ---专升本
         ---工程管理
            ---1班
            ---2班
      ---二本
   ---脱产
      ---高起本
      ---专科
      ---专升本
      ---二本
   ---业余
      ---高起本
      ---专科
      ---专升本
      ---二本
看这个TREEVIEW,大家能看书,除了根结点和第四层及第五层之外,中间的第二层和第三层是固定的,根结点可以添加若干的,但是每个根结点下面的第二层和第三层都是一样的。第四层是专业名,第五层是班级名,我建立了几张表,给大家看看,
GradeTable(GradeNum,ProNum,GradeName),用来存储年级的,GradeNum,年级编号,ProNum,专业编号,GradeName年级名,比如“2005级”
ProfessionTable(ProNum,GNum,Profession),用来存储专业名的,ProNum,专业编号,GNum年级编号,Profession专业名,比如“计算机应用”
ClassTable(ClassNum,GNum,ClassName),用来存储班级号的,ClassNum,班级编号,GNum年级编号,ClassName班级名,比如“1班”。
用来存储树的深度和父结点的,再用一张表TreeLinkFatherSon(ID,Name,ParentID,Depth)
我思路比较乱,请问如何来实现。

解决方案 »

  1.   

    数据库结构
    id  父结点  当前结点  当前结点名称
    1    0         1        2005级
    2    0         2        2006级
    3    1         3        函授
    4    3         4        高起本
    5    4         5        计算机应用
    6    5         6        1班
    7    5         7        2班 
    基本结构就是这样
    你还可以根据实际情况进行优化
    递归遍历 所有结点 就可以得到树
    和文件的遍历一样的
    比如遍历 父结点 为 0 的所有 结点
    得到 1  2  结点 
    在 遍历 1  2  
    递归 就ok 了 
    具体你再优化实现 
    一个表存结构个人感觉比多个表好
      

  2.   

    鼠标右击,弹出POPMENU,生成1班,2班什么意思?是不是弹出一个输入框啊,输入3班这样的信息是吗?
    最好是数据从数据库中读出,当新增后再写入数据库。
    思路就是这样,至于代码麻,自己先写写看吧
      

  3.   

    设计表的问题了.
    设计1可以用建一个字段存储指针, 即存储parent结点, 0表示是root
    查询的时候按大小排序, 然后就很容易构造树了.
    设计2可以用一个可变长的字符串存储目录结构, 如
    000 表示root
    000001 表示第一个
    000001001 表示..
    000002001 表示..
      

  4.   

    我做这种一般使用一个表,编号、名称、上级编号、层数
    根节点的层数是0
    在VB使用循环向treeview中加节点,打开表的时候排序按照层数排序,这样就不会找不到父节点了