JSP实现树型组织架构(1)--需求分析和数据库

本组织架构模组实现的功能是,显示一个树型的公司组织架构模式,可以在最后一层的每一层添加部门.也可以删除任意部门,如果删除带子部门的部门,那么,其所属子部门一起被删除.如,

总经理

            制造处

                          制造一部

                                              制造一课

                          产品工程部

           品保处

                        IQC

                         FQC

            管理处

                            管理部

                                           采购课

                             保安部

上面就是一个树型结构,如果我们要按格式显示其结构,可以在管理部下添加人资课.可以在总经理下添加行销处等

删除的时候如果删除管理处,那么,管理部,采购课,保安部通通都要删除.

这是一个典型的树型结构,我们要实现的功能是显示,添加,删除

数据库包括层的概念,建立如下:

create table ngb_org(
id number(8) primary key,   //用sequence.nextval自动增加来实现
p_layer varchar2(8) ,            //父层 如,B
p_id varchar2(8),                  //父id        10
c_layer varchar2(8),            //当前层,子层  C
c_id varchar2(8),                 //子层所在的编号 10
total varchar2(16) not null,  //p_layer, p_id, c_layer, c_id字符串连在一起:B10C10 制造处
name varchar2(32) not null,//部门名称
create_by varchar2(32) ,//创建者
create_date Date ,   //创建日期
update_by varchar2(32),//修改者
update_date date);   //修改日期

Create sequence ngb_org_seq
Increment by 1
Start with 1
Maxvalue 9999999
Cycle
Nocache

这里,整个公司是A10,总经理是A10B10(先把父id的层+编号重复,然后再写当前部门的层+编号).制造处为B10C10,制造一部为C10D10.同层编号以1为递增,最小为10,最大为99(没有哪个公司有89个同级别的部门吧?)

这样我们了解了其数据库,实现树型的逻辑,接着可以写显示部分了.

合理建立数据库十分重要,这也是DBA的重要性,可惜这些分析工作也是我一个小小的程序员做的:)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
package com.svse.struts.dao; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import com.svse.struts.entity.PartBean; import com.svse.struts.util.DBConnection; public class PartDao { private Connection conn = null; private PreparedStatement pre = null; private ResultSet rs = null; private DBConnection b = new DBConnection(); /** ******************查询所有部门************************* */ public List getx() { conn = b.getConnection(); List array = new ArrayList(); try { String sql = "select sjid,zjid,zjmc from t_part"; pre = conn.prepareStatement(sql); rs = pre.executeQuery(); while (rs.next()) { int sjid = rs.getInt("sjid"); int zjid = rs.getInt("zjid"); String zjmc = rs.getString("zjmc"); PartBean vo = new PartBean(); vo.setSjid(sjid); vo.setZjid(zjid); vo.setZjmc(zjmc); array.add(vo); } } catch (SQLException e) { e.printStackTrace(); } finally { try { if (pre != null) { pre.close(); } if (conn != null) { conn.close(); } } catch (SQLException e1) { e1.printStackTrace(); } } return array; } /** ********************增加部门********************** */ public void addpart(PartBean vo) { conn = b.getConnection(); try { int count = 0; String sql = "select max(zjid) as t from t_part"; String sql1 = "insert into t_part(sjid,zjid,zjmc,zjjs) values(?,?,?,?)"; pre = conn.prepareStatement(sql); rs = pre.executeQuery(); while (rs.next()) { count = rs.getInt("t"); } count = count + 1; pre = conn.prepareStatement(sql1); pre.setInt(1, vo.getSjid()); pre.setInt(2, count); pre.setString(3, vo.getZjmc()); pre.setString(4, vo.getZjjs()); pre.executeUpdate(); pre.close(); } catch (SQLException e) { e.printStackTrace(); } finally { try { if (pre != null) { pre.close(); } if (conn != null) { conn.close(); } } catch (SQLException e1) { e1.printStackTrace(); } } } /********************查询单个部门***********************/ public PartBean getdep(int zjid) { PartBean bean=new PartBean(); conn = b.getConnection(); try { String sql="select sjid,zjid,zjmc,zjjs from t_part where zjid=?"; pre=conn.prepareStatement(sql); pre.setInt(1,zjid); rs=pre.executeQuery(); while(rs.next()) { bean.setSjid(rs.getInt("sjid")); bean.setZjid(rs.getInt("zjid")); bean.setZjmc(rs.getString("zjmc")); String tx=null; tx=rs.getString("zjjs"); if(tx==null) { String tt="暂无"; bean.setZjjs(tt); } else { bean.setZjjs(tx); } } } catch(SQLException e) { e.printStackTrace(); } finally { try { if(pre!=null) { pre.close(); } if(conn!=null) { conn.close(); } } catch(SQLException e1) { e1.printStackTrace(); } } return bean; } /**************************修改部门***********************/ public void up(PartBean bean) { conn = b.getConnection(); try { String sql="update t_part set zjmc=?,zjjs=?,sjid=? where zjid=?"; pre=conn.prepareStatement(sql); pre.setString(1,bean.getZjmc()); pre.setString(2,bean.getZjjs()); pre.setInt(3,bean.getSjid()); pre.setInt(4,bean.getZjid()); pre.executeUpdate(); } catch(SQLException e) { e.printStackTrace(); } finally { try { if(pre!=null) { pre.close(); } if(conn!=null) { conn.close(); } } catch(SQLException e1) { e1.printStackTrace(); } } } /********************删除部门**********************/ public int del(int sjid,int zjid) { int s=0; conn = b.getConnection(); String sql="delete from t_part where sjid=? and zjid=?"; try { int count=0;//统计了结点 String sqlCount="select count(*) as t from t_part where sjid=?"; pre=conn.prepareStatement(sqlCount); pre.setInt(1,zjid); rs=pre.executeQuery(); while(rs.next()) { count=rs.getInt("t"); } if(count>0) { s=0;//下面有了结点,不能删除! } else { pre=conn.prepareStatement(sql); pre.setInt(1,sjid); pre.setInt(2,zjid); pre.executeUpdate(); s=1; } } catch(SQLException e) { e.printStackTrace(); } finally { try { if(pre!=null) { pre.close(); } if(conn!=null) { conn.close(); } } catch(SQLException e1) { e1.printStackTrace(); } } return s; } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值