本文的目的是利用数据结构: 树 ,来实现一个分类表ADT, 这个分类表ADT可以实现无限级分类
本例程采用Structs 架构, 符合MVC设计模式
数据库采用SQL SERVER 数据库
实现过程中,因为要连接数据库,所以还要实现一个DAO对象
分类表ADT的Item对象对应数据库中的分类表,作为整个程序中值传递的对象,它至少具有以下几个属性:
classID : 分类序号,唯一
className: 分类名称
parentID: 父类的分类序号
orderID: 排序序号
depth: 层数
child: 该分类的子类个数(包括所有的子孙后代)
分类表ADT的伪代码
public class InfoClass(){
add(item); //为分类表增加一个分类
remove(index); // 根据索引删除分类表中的一个分类
removeAll(); //删除所有分类
move(index,action); //移动分类表中的一个分类,action 动作包括上移和下移两个动作,如果该分类在所属分类中,已经处于第一个位置,则不能上移;如果处于最后一个位置,则不能下移.
update(); //更新整个分类表(根据className和parentID,重新计算每一个分类orderid,depth,child
write();//显示整个分类表
getChild(index);//根据索引值返回分类表的一个分类(这是一个树对象)
}
DAO对象的伪代码:
public class NewsClassDao{
add(item); //为数据库的分类表中增加一个分类
remove(index); // 根据索引删除数据库分类表中的一个分类
removeAll(); //删除数据库中的所有分类
move(index,action); //根据移动结果,更新数据库相关表的记录
update(); //更新整个数据库中的分类表(根据className和parentID,重新计算每一个分类orderid,depth,child
}
树对象的伪代码:
public class MenuTree{
object item; //值传递的对象
ArrayList list;//list中填充的是树对象
}
Trackback: http://tb.blog.youkuaiyun.com/TrackBack.aspx?PostId=555912