《eboard仓储管理系统的设计与实现【毕业论文】》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
本科毕业论文(20__届)eboard仓储管理系统的设计与实现摘要:随着信息技术的不断发展,各行各业也越来越离不开现代化技术,不过一些小型企业还是不能够运用,为了能够更好的促进发展,所以使用struts框架、mvc模式来设计一个小型仓库服务功能的系统,文中以出库管理模块为例,详细说明了其实现的过程和方法。关键词:struts框架;mvc模式;仓库19 TheDesignandimplementationofEboardManagewarehousesystemAbstract:Asinformationtechnologycontinuestoevolve,businessesareincreasinglyinseparablefromthemoderntechnology,butsomesmallbusinesscannotbeused,inordertobetterpromotethedevelopment,sousingstrutsframe,mvcmodeltodesignasmallstoragesitestoservices,thetextitemstothemanagementoperationstokeymodules,supplementedbydetaileddescriptionofthecodeforitsrealizationandprocesses.Keywords:struts;warehouse;mvcmodel19 目录引言1一、eboard系统的开发1(一)开发工具的选择1(二)开发语言的选择2(三)开发模式——MVC2(四)开发架构——Struts2二、系统的设计3(一)系统设计3(二)系统数据库的设计3(三)系统的功能模块划分6(四)系统的页面设计8三、eboard系统优化实现——MVC模型的应用10(一)MVC模型的应用——模型、视图、控制器10(二)使用MVC的优缺点15四、解决乱码问题16五、系统实现中安全问题18(一)页面显示路径18(二)权限控制18总结19注释19参考文献19致谢2119 eboard系统是一个关于建筑模板小公司仓库管理系统。主要是关于产品的对整个入库、出库、等各个环节的规范化作业等功能。当今时代是告诉发展的信息技术时代,各行各业都离不开对信息的处理,也因此计算机被广泛应用于各种信息管理系统。国内外建筑模板技术发展情况国外发达国家、特别是欧美地区对建筑模板技术很重视,新型建筑模板及其支撑体系生产技术和应用发展很快,目前已达到相当高的水平:他们采用品质优良、耐久性好的模具材料,应用工业化流水线生产,加工精度高的成套模具;模板及其支撑体系是采用模数化、装配化的工具式体系;有的国家在隧道、高耸建筑施工,正在发展自动升降,快速拆装的工艺。一、eboard系统的开发(一)开发工具的选择1、Windows7的操作系统这是主要的软件,此系统开发过程在除了文档的编写,其它的工作都在操作系统中进行,它是现在所有初级学者的操作系统工具,在开发过程中担任重要的任务。2、MacromediaDreamweaver8页面编辑器MacromediaDreamweaver是个由Macromedia公司开发的著名网站开发工具,它使用所见即所得的界面,亦有HTML编辑的功能。它现在有Mac和Windows系统的版本。一个可视化的网页设计和网站管理工具,支持最新的Web技术,包含HTML检查、HTML格式控制、HTML格式化选项、HomeSite/BBEdit捆绑、可视化网页设计、图像编辑、全局查找替换、全FTP功能、处理Flash和Shockwave等富媒体格式和动态HTML、基于团队的Web创作。在编辑上可以选择可视化方式或者喜欢的源码编辑方式。Dreamweaver自MX版本开始,使用了Opera的排版引擎“Presto”作为网页预览。①3、Mysql数据库开发软件MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQLAB公司。MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。②4、Myeclipse8.0开源软件MyEclipse企业级工作平台(MyEclipseEnterpriseWorkbench,简称MyEclipse)是对EclipseIDE的扩展,利用它我们可以在数据库和JavaEE的开发、发布,以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的JavaEE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML,Struts,JSF,CSS,Javascript,SQL,Hibernate。5、其他网页设计软件MacromediaFlash8.0、PhotoshopCS2、MacromediaFirewoks8.0等。③(二)开发语言的选择1、JAVA19 Java是一种简单的,跨平台的,面向对象的,分布式的,解释的,健壮的安全的,结构的中立的,可移植的,性能很优异的多线程的,动态的语言。Java以其强安全性、平台无关性、硬件结构无关性、语言简洁同时面向对象,在网络编程语言中占据无可比拟的优势。2、JSP为了把表现层presentation从请求处理requestprocessing和数据存储datastorage中分离开来,则在JSP文件中使用MVC模式。规范的Servlet或者分离的JSP文件用于处理请求。当请求处理完后,控制权交给一个只作为创建输出作用的JSP页。(三)开发模式——MVCMVC模式将J2EE表示层和业务逻辑层划分为模型(Model)、视图(View)和控制器(Controller)三部分,在理论上实现了页面显示与业务逻辑分离,具有模块独立、流程清晰、设计灵活和易于扩展等特点。实践证明,MVC模式能够有效提高企业级Web应用的开发效率,并显著增强系统代码重用性与可靠性。基于MVC模式的JZEE多层Web框架己经成为目前分布式企业级应用的主流架构之一。MVC模式的适用范围很广,这与其具有众多优点密不可分,具体包括:结构清晰,重用性、灵活性和可配置性,功能强大的用户界面,模块的有效性和可维护性,有利于软件工程化管理等优点。(四)开发架构——Struts1、Struts的基本原理Struts是一个开源的、基于MVC模式的JavaWeb框架。它定义了自己的标签库来实现自己的视图层,创建了一个内在的Servlet,叫ActionServlet,作为它的控制器,建立了一个叫做Action类的对象实现业务逻辑。视图组件与业务逻辑组件的关系在一个叫做struts-config.xml的配置文件中声明。当Struts应用程序启动时,它首先从struts-config.xml文件中读取相关信息。根据这些信息,它的控制器ActionServlet可以知道把视图中的请求转发给哪个业务逻辑组件处理。视图组件、控制器与业务逻辑组件之间没有代码上的联系,它们之间的关系在struts-config.xml中声明,这样就保证了Web应用程序的可移植性和可维护性,因而能够受到业界的认可,成为主流的JavaWeb应用框架。Struts的工作原理如图2-1所示:19 图1-1Struts的工作原理二、系统的设计(一)系统设计Eboard仓储管理系统是一个使用JSP语言开发应用程序,使用MVC模式来设计主要是方便仓库管理,记录,节省一些纸质材料。整个系统那个主要是针对实现员工管理、类别管理、产品入库、出库管理等进行一系列的操作,如对于入库管理进行产品信息存储,对已入库产品信息进行修改,删除一些无用的产品信息,查看已有产品的信息。(二)系统数据库的设计1、数据库逻辑结构设计本系统数据库主要采用myql数据库,系统数据库名为root。共含了4张表。管理员工的表:管理员{管理员序号、管理员姓名、管理员性别、管理员密码、管理员所在部门},当中的管理员序号是主键。管理产品类别的表:产品类别{产品类别序号、产品类别名称},其中产品类别序号为主键。产品入库表:产品入库{入库序号、产品类别序号、数量、单价、供应商、入库时间、操作人员、备注},其中入库号为主键,产品类别序号为外码。产品出库表:产品出库{出库序号、产品类别序号、数量、单价、折扣、总价、出库时间、操作人员、备注},其中出库序号为主键,产品类别序号为外码。2、数据库物理结构设计为了更好的是应用程序代码能够与数据库设计相结合,为了尽可能的减少数据冗余,我把表格设计如下:表2-1管理员工表(admin)的结构字段名称数据类型说明19 Empnumberint员工号(主键)usernamevarchar员工姓名Passwordvarchar登陆密码Sexvarchar员工性别departmentvarchar所在部门表2-2产品类别(prod_category)表结构字段名称数据类型说明category_idInt产品类别序号(主键)Prod_categoryvarchar产品类别名称表2-3产品入库(prod_enter)表结构字段名称数据类型说明indentnumberInt入库序号(主键)category_idInt产品类别序号quantityInt入库数量PriceDouble产品单价suppliervarchar供应商intimeInt入库时间operatorvarchar操作人员Beizhuvarchar备注表2-4产品出库(prod_sell)表结构字段名称数据类型说明sellnumberInt出库序号(主键)category_idInt产品类别序号quantityInt入库数量PriceDouble产品单价discountDouble折扣CountDouble总价OutrimeInt出库时间operatorvarchar操作人员Beizhuvarchar备注3、数据库的连接设计19 开发人员在大量使用java与数据库的项目开发过程中,逐渐的认识到所开发的java数据库应用系统中,建立数据库连接的这部分代码通常是整个应用系统的问题所在,建立数据库连接的熟读很多时候决定整个应用系统的运行速度,为了提高整个java数据库应用速度,于是出现了数据库连接池(connectionpool)。核心理论:是在内存中建立一个虚拟的容器,在这个容器中保存预先建立好的数据库连接对象,把这些连接对象分配给需要的程序使用,当连接对象使用完成后,不直接关闭连接,而是重新保存到容器中,供其他程序重复使用。我自己设计的数据连接池是把他封装到一个类中,要用时可以随时调用,其中useUnicode=true&characterEncoding=utf-8"是保存到数据库中的编码格式,是用来防止出现乱码问题,具体代码如下:publicclassBaseDao{privatestaticfinalStringdriverClass="com.mysql.jdbc.Driver"//保存驱动类的类名的变量privatestaticfinalStringurl="jdbc:mysql://localhost:3306/mysql??useUnicode=true&characterEncoding=utf-8";//保存连接数据库的URL地址的变量privatestaticfinalStringuid="root";//保存mysql登录用户名的变量privatestaticfinalStringpwd="mysql";保存mysql登录密码的变量publicConnectiongetConn(){Connectionconn=null;try{Class.forName(driverClass);//调用Class的forName方法加载驱动程序}catch(ClassNotFoundExceptione){e.printStackTrace();}try{conn=DriverManager.getConnection(url,uid,pwd);//调用getConnection()方法构造Connection对象的一个实例conn}catch(SQLExceptione){e.printStackTrace();}returnconn;}19 publicvoidcloseAll(ResultSetrs,PreparedStatementpstms,Connectionconn)//关闭ResultSet、pstms、conn{if(rs!=null){try{rs.close();}catch(SQLExceptione){e.printStackTrace();}}if(pstms!=null){try{pstms.close();}catch(SQLExceptione){e.printStackTrace();}}if(conn!=null){try{conn.close();}catch(SQLExceptione){e.printStackTrace();}}}(三)系统的功能模块划分Eboard主要实现员工管理、类别管理、产品入库、出库管理等的添、删、改、查功能,系统功能模块结构如图3-1所示:19 eboard仓储管理系统后台管理后台登陆功能出库管理入库管理类别管理员工管理、出库信息修给出库信息删除出库信息添加出库信息查询入库信息删除入库信息添加入库信息修改入库信息查询员工信息修改员工信息添加员工信息查询类别信息删除类别信息修改类别信息添加类别信息查询员工信息删除图2-1系统模块结构图1、员工管理模块在我的设想中有两个功能。其一是登陆所使用的用户名和密码的用户,他们有权操作后台信息的权利;一种是纯粹存储用户资料,没有密码,就是无法登陆的用户信息。员工管理模块主要是那部分有权利操作后台信息的管理员对员工的信息进行查询、添加、修改、删除等功能。2、类别管理主要是对于入库、出库产品的名称进行进行查询、添加、修改、删除操作,在类别中添加后会自动的在入库、出库管理中添加到下拉列表中,在类别中修改、删除等操作也会自动的在入库、出库管理中的下拉列表中实现相应操作。3、入库管理主要是对需要入库产品的处理,主要包含对入库序号、入库产品名称、数量、供应商、单价、入库时间等进行操作,还可以对已保存的入库信息进行查询、修改、删除功能。4、出库管理出库管理跟入库管理基本一致,也是对出库出去的信息进行操作,例如:出库订单号、出库时间、出库数量、销售折扣、销售总价等等。也可以对其进行修改、查询、删除等多项功能。19 (四)系统的页面设计首先要提的是登陆页面,用来管理员来登陆后台进行相关操作,如下图:图2-2登陆界面图登陆后直接进入主页,主页使用dreamweaver工具里的框架集—上方固定,左侧嵌套,这样方便与使网页结构清晰,易于维护跟更新,使用者浏览器不需要为每个页面重新加载。系统主页如下图:19 图2-3系统主页界面图在整个系统总体功能的设计过程中,我们采用了软件工程中自顶向下的方法。按照系统的功能将相对复杂的系统划分为各个较为简单的功能模块,这样的过程也是从抽象到具体的过程,在模块划分的过程中因为使用了框架,所以使各个模块相互独立,既便于实现又易于维护。系统的框架图如图3-4所示:19 登陆页面login.jsp后台主页index.jsp出库管理Getprodsell.jsp入库管理Getprodenter.jsp类别管理Catelist.jsp员工管理Emp_getmess.jspupdateout.jspQueryprodsell.jspAddprodsell.jspupdatequerenter.jspQueryenter.jspAddproduct.jspupcate.jspaddcate.jspCatelist.jspEmp_query.jspUpdateemp.jspAddemp.jspGetqueryout.jspGetqueryenter.jspEmp_message.jsp图2-4系统框架图三、eboard系统优化实现——MVC模型的应用(一)MVC模型的应用——模型、视图、控制器采用MVC模式——模型(Model)、视图(View)和控制器(Controller),Struts架构,其内容主要以ActionServlet+Action+ActionForm形式展现.MVC模式分为模型(Model)、视图(View)和控制器(Controller)三部分,在理论上实现了页面显示与业务逻辑分离,具有模块独立、流程清晰、设计灵活和易于扩展等特点。实践证明,MVC模式能够有效提高企业级Web应用的开发效率,并显著增强系统代码重用性与可靠性。基于MVC模式的J2EE多层Web框架己经成为目前分布式企业级应用的主流架构之一。19 下面我以我所做系统的出库管理模块为列来说明mvc,具体操作如下:1、struts-config.xml文件主要作用是是前台显示层,逻辑处理层和数据保存容器层,相互联系协调的控制器。各个层都是通过控制器struts-config来进行业务处理的。具体代码如下: 此文档下载收益归作者所有(二)使用MVC的优缺点1、MVC优点 大部分用过程语言比如ASP、PHP开发出来的Web应用,初始的开发模板就是混合层的数据编程。例如,直接向数据库发送请求并用HTML显示,开发速度往往比较快,但由于数据页面的分离不是很直接,因而很难体现出业务模型的样子或者模型的重用性。产品设计弹性力度很小,很难满足用户的变化性需求。MVC要求对应用分层,虽然要花费额外的工作,但产品的结构清晰,产品的应用通过模型可以得到更好地体现。 首先,最重要的是应该有多个视图对应一个模型的能力。在目前用户需求的快速变化下,可能有多种方式访问应用的要求。按MVC设计模式,一个模型以及多个视图即可解决问题。这样减少了代码的复制,即减少了代码的维护量,一旦模型发生改变,也易于维护。其次,由于模型返回的数据不带任何显示格式,因而这些模型也可直接应用于接口的使用。 再次,由于一个应用被分离为三层,因此有时改变其中的一层就能满足应用的改变。一个应用的业务流程或者业务规则的改变只需改动MVC的模型层。 控制层的概念也很有效,由于它把不同的模型和不同的视图组合在一起完成不同的请求,因此,控制层可以说是包含了用户请求权限的概念。 最后,它还有利于软件工程化管理。由于不同的层各司其职,每一层不同的应用具有某些相同的特征,有利于通过工程化、工具化产生管理程序代码。2、MVC的不足④(1)增加了系统结构和实现的复杂性。对于简单的界面,严格遵循MVC,使模型、视图与控制器分离,会增加结构的复杂性,并可能产生过多的更新操作,降低运行效率。(2)视图与控制器间的过于紧密的连接。视图与控制器是相互分离,但确实联系紧密的部件,视图没有控制器的存在,其应用是很有限的,反之亦然,这样就妨碍了他们的独立重用。19 (3)视图对模型数据的低效率访问。依据模型操作接口的不同,视图可能需要多次调用才能获得足够的显示数据。对未变化数据的不必要的频繁访问,也将损害操作性能。(4)目前,一般高级的界面工具或构造器不支持MVC架构。改造这些工具以适应MVC需要和建立分离的部件的代价是很高的,从而造成使用MVC的困难。四、解决乱码问题在刚开始做系统是总是出现乱码问题,发现主要是三个方面的原因,如下:1、页面编码问题刚开始没有注意,在使用dreamweaver是使用默认的编码格式gb2312,例如:<%@pagecontentType="text/html;charset=gb2312"language="java"import="java.sql.*"errorPage="gb2312"%>,后来发现要把gb2312改成utf-8,这样页面显示就没问题了。2、表单使用post页面提交是出现乱码我用了两个方法来改进这一情况。一是对于表单提交我写了一个过滤器,过滤器在用户提交的数据被处理之前进行调用,这样可以改变编码方式。另一种是是ActionServlet里的每一方法里都些上response.setCharacterEncoding("utf-8")来处理。下面是我写的过滤器代码:importjava.io.IOException;importjavax.servlet.Filter;importjavax.servlet.FilterChain;importjavax.servlet.FilterConfig;importjavax.servlet.ServletException;importjavax.servlet.ServletRequest;importjavax.servlet.ServletResponse;publicclassCharsetEncodingFilterimplementsFilter{privateStringencoding=null;privatebooleanignore=true;publicvoiddestroy(){encoding=null;}publicvoiddoFilter(ServletRequestrequest,ServletResponseresponse,FilterChainchain)throwsIOException,ServletException{if(ignore||request.getCharacterEncoding()==null){Stringencoding=selectEncoding(request);if(encoding!=null)request.setCharacterEncoding(encoding);19 }chain.doFilter(request,response);}publicvoidinit(FilterConfigfilterConfig)throwsServletException{this.encoding=filterConfig.getInitParameter("encoding");Stringvalue=filterConfig.getInitParameter("ignore");if(value==null)this.ignore=true;elseif(value.equalsIgnoreCase("true"))this.ignore=true;elseif(value.equalsIgnoreCase("yes"))this.ignore=true;elsethis.ignore=false;}publicStringselectEncoding(ServletRequestrequest){return(this.encoding);}}在web.xml里的配置如下:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
最近更新
更多
大家都在看
近期热门
举报
文档下载
请先输入手机号