商品仓库管理系统说明书一、概述(1)开发环境:JDK,MyEclipse9.0,tomcat,Microsoft SQL Server等。
(2)开发设计:JSP/Servlet、Struts2、Spring、Hibernate等。
(3)需求分析:仓储在企业的整个供应链中起着只至关重要的作用,仓库存放的货物品种繁多,堆存方式以及处理方式也非常复杂。
如果不能保障正确的入库和库存的控制及出库,将会导致管理上的不便,管理费用的增加,服务的质量难以保证,从而影响企业的竞争力。
传统简单、静态的仓库管理已无法保证企业各种资源的有效利用。
如今的仓库作业和库存控制作业已复杂化,多样化,仅靠工人记忆和手工录入不但费时费力,而且容易出错,给企业带来巨大的损失。
二、程序概要设计(1)程序的功能模块该程序分为三大模块:登陆模块:分为:(管理员、入库员、出库员三部分);管理员模块:账户管理(注册账号、修改密码、修改账号、删除账号);商品管理(删除商品、查看商品出、入库信息);入库员模块:账户管理(修改密码);商品管理(商品入库、修改商品信息、查询已入库商品、按照名称或编号查询入库商品信息);出库员模块:商品管理(商品出鲁、查看已出库商品、按照名称或编号查询出库商品信息)(2)程序文件结构分析:程序文件的主要结构由Jsp、Action类、Dao类、Model类、Strut2框架、Spring框架、Hibernate 框架组成。
JSP:程序的可视化界面均由JSP完成,接受用户输入并由Strut2以及Spring发送至Action类;Action类:接受由JSP传输的数据,调用Dao类中的方法,发送处理后的数据到JSP;Dao类:接受Action类的数据,执行数据库的操作指令,返回数据库的值给Action类;Model类:通过Hibernate连接数据库并配置生成,有.java文件和.hem.xml配置文件供Dao类调用;配置文件:web.xml,struts.xml,aplicationContext.xml;(3)程序流程:三、程序详细设计(1)关键代码分析:文件流:例(登录管理者及查看出库商品流程)登陆管理者:JSP→Action类:由land.jsp页面中<s:form action="denglu"method="post"theme="simple">转至struts.xml 文件中;<action name="denglu"class="denglua"></action>转至applicationContext.xml中;<bean id="denglua"class="action.DengluAction"></bean>转至DengluAction.java文件;Action类→Dao类:在DengluAction.java中调用UserTableDao类方法insert():public boolean check(UserTable user){Session session=this.sessionFactory.openSession();Transaction transc=session.beginTransaction();Query query=session.createQuery("from UserTable where username=?and password=?and role=?");//HQL查询语句query.setString(0,user.getUsername());//获得land.jsp输入的值query.setString(1,user.getPassword());query.setInteger(2,user.getRole());List list=query.list();if(list.size()==0){//如果list.size()=0,说明验证错误mit();session.close();return false;}else{session.close();return true;}}其间需要配置文件applicationContext.xml<bean id="denglua"class="action.DengluAction">//配置LogAction.java <property name="dengluDao"><ref bean="regDao"/></property></bean><bean id="regDao"class="erTableDao">//配置userDao.java <property name="sessionFactory"><ref bean="sessionFactory"/></property></bean>Dao类→Action类:UserTableDao在执行完check()方法后返回true或false值到DengluAction类Action类→struts.xml:①若DengluAction类接收UserTableDao传输的true时,根据land.jsp中单选框的选择不同而返回不同的值,当jsp页面:选择“管理员”登录,则返回"gl"值给struts.xml;选择“入库”登录,则返回"rk"值给struts.xml;选择“出库员”登录,则返回"ck"值给struts.xml。
②若userDao传输的是false,则LogAction返回falsh值给struts.xml,转到error.jsp。
Struts.xml→JSP页面:当DengluAction类返回”gl”值时:转到main.jsp(即管理员功能界面);返回”rk”值时:转到main2.jsp(即入库员功能界面);返回”ck”值时:转到main2.jsp(即出库员功能界面);返回”error”值时:转到error.jsp(即登录失败界面);查看出库商品:通过点击mainleft.jsp中的<a href="scheck.action"target="right">查询入库商品</a>调用Struts2.xml中,由<action name="scheck"class="schecka">进入ScheckAction.java中,通过调用UserTableDao中的show()函数获得数据库的信息存入list中,按顺序逐步返回,调用scheck.jsp显示要查询的商品信息,并在main.jsp的<frame name="right">的框架中显示。
以上流程就是一个完整文件流,上面的流程实现了登录功能和查看出库商品功能。
程序中需要用到数据库的添加,删除和更新功能,完成这些功能都是使用Dao类中的方法调用HQL语句实现。
(2)疑难问题解决:1.在开始写成许的时候经常出错,很多时候找了很久到不是这出错的地方,后来进过老师所给的视频对照才知道导入少了一个包struts2-dojo-plugin-2.3.15.1.jar。
2.有时候会因为修改数据库里的表的列信息后忘记在Hibernate重新对该表配置,导致程序出错;3.在编程成的时候有时会因为变量的传递过程中变量名打错,但是没有错误提示,却不能运行,最后只能重jsp页面开始,一步一步按文件流的顺序去验证,有时候因为是变量的一个字母打错或颠倒,找了好几遍或找同学帮忙才找到。
所以为变量的命名要简单易看,并且在传递到其他类中的语句也要认真输入,在JSP页面、struts.xml、applicationContext.xml、action类连接中,struts.xml中<action>的name属性和class属性都要和jsp页面和applicationContext.xml对应好,不然容易跳转错误。
4.写程序时需要细心,错误常常都是一些细节问题,以为一个字符打错而导致,能够靠myeclipse提示输入的代码都直接采用,尽量不自己打,减少错误。
5.在又一次开机写代码是,却发现所有的文件都有错误提示,经检查才返现数据库打不开,后来在网上找原因才发现时数据库配置中网络配置的VIA是开启的,禁止后开机重启可以正常运行;6.在打开MyEclipse时,最好以管理员的身份打开,否则有时候会出现一些错误或发布的时候会出现警告。
四、程序发布和测试(1)登陆测试过程:1、测试用例1(正确输入)【输入】用户:sky密码:sky2、测试用例1(无该用户)3、测试用例1(密码错误)【输入】用户:aaa密码:sky【输入】用户:sky密码:aaa4、测试用例1(无输入入)【输入】用户:密码:(2)管理员界面测试:添加账号:点击注册后显示操作成功删除账号:成功删一个管理员账号修改账号(更改角色):点击修改显示操作成功删除账号:点击删除后显示操作成功查询入库商品:查询出库商品:(3)入库员界面测试:查询已入库商品:按编号Id查询功能及查询结果:添加商品功能(入库):点击入库按钮后显示操作成功修改商品功能:点击修改按钮显示操作成功(4)出库员界面:五、程序优缺点优点:1.由与使用的是B/S结构模式,客户端只需要使用浏览器就可以使用仓库系统的各个功能;2.界面简洁大方,容易操作,易上手,账户类型有三种,其权限各不相同,方便管理,相应的人员不会越权管理;3.出库、入库操作简单只需输入编号即可;4.系统简单,对硬件的要求不高,成本较低,维护见到。
缺点:1.B/S结构模式使得所有的应用程序都是在服务端,增加了服务器的负担;2.用户界面太过单一,乏味;3.修改和删除账户不够方便,需要在更改时手动输入信息,不能一键删除;4.查看商品和修改商品不能再一个界面上显示,给操作者带来不便;11楷5.系统的功能操作不够完善,还需继续附加功能;6.不可以修改完商品信息后立即显示出当前的商品信息,需要再去查询。