沈阳工业大学本科生毕业设计(论文)
//总页数 int pgcount=0;
Connection con = DBUtils.getConnection(); DeptDAO ddao=new DeptDAO(con);
pgcount=(int)Math.ceil(ddao.selectCount()/3.0);
if(pgi>pgcount) if(pgi<1)
pgi=1;
Page pe=new Page(); pe.setAllPages(pgcount); pe.setCurPage(pgi);
ArrayList ar=ddao.selectALL2(pgi,pgsize); HttpSession sess=request.getSession(true); sess.setAttribute(\sess.setAttribute(\response.sendRedirect(\}
这里,pgi用于存储所检索出的数据条数,pgcount用于存储检索数据以固定
pgi=pgcount;
格式指定后的页数,pgsize为每页数据量。根据实际情况设定每页显示的查询行数,再根据ddao.selectALL2(pgi,pgsize)方法查询出所需的查询内容显示在页面中。具体效果如图4-9所示。
其相应的Action中通过一识别方法来处理页面在点击不同按钮时系统对提交表单信息的处理。然后再通过所确定的方法对提交信息进行查询,返回数据后刷新页面。其代码如下:
Connection con = DBUtils.getConnection();
DeptDAO ddao=new DeptDAO(con); Dept dept=new Dept(); ArrayList ar=new ArrayList();
22
沈阳工业大学本科生毕业设计(论文)
}
if(select.equals(\ }
sess.setAttribute(\
response.sendRedirect(\
dept=ddao.selectBydno(Integer.parseInt(n)); ar.add(dept);
dept=ddao.selectBydname(n); ar.add(dept);
ar=ddao.selectBydtype(n);
}else if(select.equals(\
}else{
HttpSession sess=request.getSession(true);
图4-9 员工查询界面
由于在Oracle数据库中没有专门用于执行分页查询的sql关键字,所以系统已多层嵌套查询的方式将数据以rownum进行分解,而最后获得的为一个三层嵌套的sql语句,这条语句便可实现Oracle数据库的分页查询,且语句执行的效率是极为优化的,不会为数据库带来负担,其数据库访问便可以通常方式实现,主要代码如下:
23
沈阳工业大学本科生毕业设计(论文)
public ArrayList selectALL2(int pgnum,int pgsize) {
ArrayList ar = new ArrayList(); PreparedStatement pstam = null; ResultSet rs = null; try {
\
pstam = con.prepareStatement(
R,did,dno,dname,dtype,dtel FROM (SELECT * FROM Dept ORDER BY did)) A WHERE A.R BETWEEN ? AND ?\
pstam.setInt(2,pgnum*pgsize);
rs = pstam.executeQuery();
while(rs.next())
{
Dept dept = new Dept();
dept.setDid(rs.getInt(\dept.setDno(rs.getInt(\dept.setDname(rs.getString(\dept.setDtype(rs.getString(\dept.setDtel(rs.getString(\ar.add(dept);
pstam.setInt(1,pgnum*pgsize-pgsize+1);
对于数据库的访问同样使用prepareStatement预编译,并使用其内置的executeQuery()方法进行数据库查询。查询结果以do while循环的方式装入员工信息类型的JavaBean中,并在最后作为一个节点装在事先定义好的链表中。 4.4.4 员工入职管理模块
在该部分功能,用户通过手动输入及点选操作将新员工信息录入系统,点击提交按钮即可完成操作。其中由于部分信息的录入不便系统选入了在楼台数据库读取并手动点选的形式解决,页面整体效果如图4-10所示。
24
沈阳工业大学本科生毕业设计(论文)
图4-10 员工入职界面
在页面上,系统会先将“性别”、“用工形式”等显示在下拉菜单中、其主要代码如下:
public boolean insert(Emp m)
{
String sql = \
PreparedStatement pstam = null; boolean b = false; try {
pstam = con.prepareStatement(sql); pstam.setInt(1,m.getEno()); pstam.setString(2,m.getEname()); pstam.setString(3,m.getSex()); pstam.setString(4,m.getBirth()); pstam.setString(5,m.getIdno()); pstam.setString(6,m.getDname()); pstam.setString(7,m.getJname()); pstam.setString(8,m.getJoinDay()); pstam.setString(9,m.getStartDay()); pstam.setString(10,m.geteSelect()); pstam.setString(11,m.geteFrom());
int i = pstam.executeUpdate();//该方法用来对表添加 删除 修改
25
沈阳工业大学本科生毕业设计(论文)
操作,返回值是本次操作影响了多少行记录、
if(i > 0) {
b = true;
继续使用预编译载体prepareStatement并通过其setString、setInt等方法向sql语句中注入所要新增的没项数据,并在执行之后以executeUpdate()进行更新处理,代码中的m为存储员工信息的JavaBean,将其设置为新增员工信息页面的m类。在完成插入操作之后,将插入结果赋值给boolean类型属性isInsert并返回,若成功则跳转至添加员工信息成功界面,如图4-11所示。
图4-11 入职成功界面
4.4.5 员工离职管理模块
此模块完成员工离职的功能,员工根据手动输入的几个相关信息查询出指定员工之后通过缺人按钮执行删除操作,页面整体效果如图4-12所示。
26