当前位置:编程学习 > JAVA >>

一个软件维护管理系统求大神帮忙改一下,最好能给出所有的代码(三)

备件管理
主要有备件入库、编辑修改和备件出库三大模块。
(1) 备件入库模块 功能:此模块主要现实电脑备件的入库,入库的时间由系统自动来生成。界面如下:
     
 
入库时如果数据库表中没有此类型号的备件,那么就直接入库,系统会自动生成ID来标记此类备件;如果数据库表中已经有此类型号的备件的话,只需要到“编辑修改模块”中单单修改此类备件的数量即可。
 
(2) 编辑修改模块: 此模块主要完成对入了库的备件进行删除和修改。删除时要求只能对入库表中备件数量为零的备件才能进行删除,数量大于零的都不能删除;修改是只针对入库表中number属性列来做的。修改和“备件入库模块”中有联系,对于已经入了库的备件,不能再进行入库,只能从“编辑修改模块”中修改此备件的数量。界面如下:
 
 
(3) 备件出库查询:包括备件的出库和出了库的备件的查询。
    备件出库:出库时需要和partStoreIn表、pro_info表相联系。只有入了库的数量大于等于1的和出库个数小于等于入库表中的个数,并且维修产品信息表中存在paried_id的备件才能够出库;备件出库的时间由系统来自动生成。如果不满足上述条件时,会给出提示信息。界面如下:
 
 
    出库查询:从PartOut表中进行出库查询,查询时是按维修单号和日期来查询的。查询成功时会给出成功提示,不成功时也会给出错误的提示。出错的提示处理会在“测试模块”中给出。界面如下:
 
4.6监督管理
4.6.1商务监督的实现
要求:公司承诺客户三日内检测出结果,一日内未检测为一般级别(绿色),两日内为中级(黄色),三日内为高级(红色)。主界面如下:
 
此处列出“维修状态”是:‘未分配’、‘分配未检测’的所有记录。
商务监督能及早发现维修过程中不能按时完成任务的维修单号,进行及时的处理。经分析,本功能的实现跟客户信息、报修产品登记管理模块和和维修管理模块有关联。须参照到维修管理中的维修信息表(reparied_info)和产品信息表(pro_info)。
在实现中,先取得跟数据库的连接,按要求查找‘未分配’、‘分配未检测’的所有记录,并选择其‘接机日期’,‘维修单号’、‘产品类型’、‘机器品牌’、‘维修检测记录’、‘维修状态’的记录,逐行显示。比较当前日期与本行的接机日期,若是一日内未检测,把当前行置为绿色,两日内未检测置为黄色,三日内未检测置为红色。
查看产品信息时,以URL重写的方式来实现,把维修单号(repaired_id)做为传递参数。因为查看具体产品信息这一项在本程序中多处要实现,帮独立做为一JSP程序(proinf.jsp),以实现可重用性。
在proinf.jsp中,根据传递过来的维修单号,在产品信息表(pro_info)中查找具有相同维修单号的产品信息,并具体显示。

4.6.2维修监督的实现

 要求:一日内未修复为一般级别(绿色),两日内为中级(黄色),三日内为高级(红色)。主界面如下:
 
此处列出的“维修状态”是:未分配、分配未检测,检测完成维修未完成、其它的所有记录。
维修监督能对各维修产品的维修结果进行监督,以便能在预定的日期内完成对客户的承诺。其实现的具体细节跟商务监督的实现大体相同。不同之处只有查询条件。维修监督的查询条件中,维修状态为‘未分配’、‘分配未检测’,‘检测完成维修未完成’、‘其它’的所有记录。

4.6.3 备件申请监督的实现

要求:在库存内备件数量在3为一般,数量为2为中级,数量为1为高级。界面如下:
 
对库存内备件的数量进行监督,保证库存的充足。经分析,本功能的实现与备件管理模块有关联。须参照到备件管理模块中的备件库存表(partstore)。
实现时,先取得跟数据库的连接,查找所有备件的‘名称’、‘数量’、‘型号’等信息,并逐行显示,再根据库存内备件的数量设置程度信息,即数量在3为一般,数量为2为中级,数量为1为高级。
4.7档案管理及黑名单管理
4.7.1档案管理子系统
1. 业务及数据流程
具有档案管理权限的用户首先登陆到档案管理子系统,第一页面是提供给用户的档案查询页面,可以通过输入维修单号查询到单一档案,可以通过输入日期来查询在特定一段时期内进行维修的档案记录,也可一次性查询所有的档案记录。随后进入的就是相应档案表的返回数据显示页面,显示相应档案的各项信息。显示的某些项由于本身还具有一定的信息细节,所以对其建立的是超链接,点击可进入响应的详细信息显示页面。相应的流程图如下:
     
                         3.1档案管理子系统流程图
   
 2.数据库表的建立的查询
    针对档案管理建立有相应的档案表archives,其中的字段信息除了自动递增的档案ID外,基本都是从用户信息、产品信息、维修信息、结算财务信息、退货信息表中归档得到的,所以这些数据一般只有查询的权利而没有修改和删除的权利,为的是保持数据的一致性和档案的有效性。                
    
4.7.2黑名单管理子系统              
1.业务及数据流程
具有黑名单管理权限的用户首先登陆到黑名单管理子系统,第一页面是针对黑名单建立和黑名单编辑两大功能的相应数据查询。针对黑名单建立功能的数据查询有根据维修单号、根据客户编号、根据维修产品的序列号、根据用户单位名称、根据日期段及所有的信息查询。
进入的第二页面便是根据不同查询方式返回的相应基础数据信息显示。这些数据都是通过业务处理层的JSP根据不同的数据查询方式调用不同的JAVABEAN数据库查询操作返回的。返回的是来自客户表、维修单表、档案表、结算表、财务表及退货表的级联数据的集合。
对于修改和删除操作,将会在点击提交后进入操作是否成功的确认页面,分为提交成功、提交失败。对于添加黑名单操作,也会有添加成功、添加失败、该客户已经在黑名单无须添加的确认页面。相应的流程图如下:
                             4.1黑名单管理流程图
4.7.3其他功能的实现
1.SESSION状态确保会话安全
     用JAVABEAN 实现一个保持SESSION状态的类。在用户登陆页面一旦用户登陆成SESSION类将生成会话对象,将与该用户相关的信息如用户名和密码保存到会话对象中。以后的每一页请求,都将首先检验当前会话对象是否生成,以及属性值即用户名和密码是否生成和是否正确,否则不会显示该页面内容。比如有人未登陆就直接访问其中的一页,都不会显示内容,提示先登陆。用户退出或关掉浏览器相应的会话对象才会消除。

2. 添加更多便捷性超链接    
 对于档案管理子系统和黑名单管理子系统的每一页都提供返回到首页和返回到上一页的超链接。特别是对于添加、修改和删除操作完成后提供返回到上一页的功能,返回后被添加、修改和删除的信息都将自动更新。其实返回上一页也是将要已经查询过的内容重新查询一遍,也要调用JAVABEAN对数据库访问。这样使用户更及时得到更新信息,提供了方便。
其中的关键在于相邻页面请求参数的转发,中间一页可能要把其上一页的请求参数传到其下一页。

     3.JAVASCRIPT对表单数据的验证
    对于登陆页面、查询信息页面、添加信息页面和修改信息页面中用户需要填写和提交的信息表单都要先通过JAVASCRITP函数的严整,比如验证数据是否为纯数字、是否为纯字母、是否输入信息长度太长、是否为空、是否符合输入格式要求等。保证空信息、无用信息和错误信息不被提交到服务器,在客户端直接拦截,提高了系统安全性,提高了服务器的运行效率,同时为用户建立的操作向导。
4.8用户管理
4.8.1浏览功能
浏览功能是将数据库中员工表和用户表的全部记录都显示出来,具体实现过程是(以浏览用户为例):
首先新建一个web工程,在建好的工程中新建一个jsp文件,命名为userquery.jsp,然后输入代码,部分代码如下:
String sqlQuery="select * from userinfo";
sqlRst=sqlStmt.executeQuery(sqlQuery);
%>
    <table border="1" width="100%" >
    <tr>
    <td align="center">用户编号</td>
    <td align="center">员工编号</td>
    <td align="center">登录密码</td>
    <td align="center">权限编号</td>
    <td align="center">具体权限</td>
    </tr>
    <% while(sqlRst.next()){//取得下一条记录%>
    <tr><!--显示记录-->
    <td><%=sqlRst.getString("adminid")%></td>
    <td><%=sqlRst.getString("employeeid")%></td>
    <td><%=sqlRst.getString("password")%></td>
    <td><%=sqlRst.getString("privilegeid")%></td>
<td><%=newString(sqlRst.getString("privilege").getBytes("iso-8859-1"))%></td>
    </tr>
    <%}%>
    </table>
    <%
    //关闭结果集对象
    sqlRst.close();
    //关闭语句对象
    sqlStmt.close();
    //关闭数据库连接
    conn.close();
其次右击工程选择MyEclipse的“Add and Remove Project Deployments” 子菜单,将编写好的页面发布到已安装的tomcat5 服务器上。
最后通过浏览器察看运行结果,对不正确的地方进行调试,直至完全正确。
下面四个功能的实现过程类似。
4.8.2查询功能
员工查询可以查询到与输入的员工编号相对应的员工以及处于分配或未分配状态的员工。
首先在员工查询页面(empselect.html)中先输入要查询员工的员工编号或状态,然后将输入的信息提交到员工显示页面(empselect.jsp),该页面对信息进行解析,并将最终结果显示出来。部分代码如下:
String parm1=request.getParameter("employee");
 String sqlQuery="select * from employees where employeeid='" + Integer.parseInt(parm1) + "'";
sqlRst=sqlStmt.executeQuery(sqlQuery);
对用户的查询则是在查询页面(userselect.html)中先输入要查询用户的用户编号或员工编号,然后将输入的信息提交到用户显示页面(empselect.jsp),该页面对信息进行解析,并将最终结果显示出来。部分代码如下:
preparedStmt=conn.prepareStatement("select * from userinfo where adminid like ?");
    String parm1=request.getParameter("admin");
     preparedStmt.setString(1,"%"+parm1+"%");
    sqlRst=preparedStmt.executeQuery();
4.8.3添加功能
 对员工的添加较为简单,但必须判断一下员工的状态,因为员工的状态只有分配和未分配两种,所以在添加员工时要判断输入的状态值是否为0或1,否的话将不允许添加并输出警告信息,判断代码如下:
if(Integer.parseInt(statu)==0||Integer.parseInt(statu)==1)
{sqlStmt.execute(sqlInsert);}
else 
out.println("输入员工的状态不正确!");
对用户表执行添加则要先判断要输入的员工编号在员工表中是否存在,不存在则说明要添加的用户不是公司职员无权使用本系统,所以添加失败并输出警告信息,存在则添加成功。判断代码如下:
int returnStr=0;
    String sqlQuery="select employeeid from employees where employeeid='" + Integer.parseInt(userid) + "'";
 String sqlInsert="insert into userinfo(adminid,employeeid,password,privilegeid,privilege) values('"+admin+"','"+userid+"','"+pass+"','"+privid+"','"+priv+"')";
    sqlRst=sqlStmt.executeQuery(sqlQuery);
    if(sqlRst.next())
    {
    returnStr=Integer.parseInt(sqlRst.getString("employeeid"));
    }
   if((returnStr!=0))
   { 
     sqlStmt.execute(sqlInsert);
     String sqlQuery2="select * from userinfo";
 sqlRst=sqlStmt.executeQuery(sqlQuery2);
    }
    else if(returnStr==0)
     {
      out.println("不是合法用户,不能添加!");
     }    
4.8.4删除功能
删除员工时要同时将该员工所对应的用户删掉,因为删除员工就表示该员工离开了公司,这样他当然不再是电脑维修管理系统的用户,因此要完成级联删除,部分代码如下:
String sqlDelete1="delete from employees where employeeid='"+employee+"'";
String sqlDelete2="delete from userinfo where employeeid='"+employee+"'";
sqlStmt.execute(sqlDelete1);
sqlStmt.execute(sqlDelete2);
String sqlQuery="select * from employees";
sqlRst=sqlStmt.executeQuery(sqlQuery);
4.8.5更新功能
对员工的更新主要实现部门的调动及职务的变化,在更新界面(empupdate.jsp)中,输入员工编号及要调动的新部门和新职务,提交到更新处理页面(eupdate.jsp)进行处理,最终完成修改。部分代码如下:
String sqlUpdate1="update employees set department='"+newdept+"' where employeeid='"+employee+"'";
String sqlUpdate2="update employees set position='"+newposi+"' where employeeid='"+employee+"'";
sqlStmt.execute(sqlUpdate1);
sqlStmt.execute(sqlUpdate2);
对用户的更新主要是修改用户的密码,在修改密码页面上(userupdate.jsp)输入用户名、原密码及新密码,提交后对用户名和原密码进行验证,验证通过则将原密码修改为新密码,否则提示无此用户。修改代码如下:
String sqlUpdate="update userinfo set password='"+newpass+"' where employeeid='"+employee+"' and password='"+oldpass+"'";
产品 库 员工 问题  用户 --------------------编程问答--------------------
补充:Java ,  J2ME
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,