• 508.00 KB
  • 2022-04-22 13:48:46 发布

物流管理系统仓储管理数据库设计毕业论文.doc

  • 36页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'西南科技大学自考毕业论文物流管理系统仓储管理数据库设计毕业论文目录第一章需求分析.1§1.1项目背景1§1.2项目内容1§1.3项目意义1第二章技术介绍3§2.1Java简介3§2.2JSP技术简介3§2.3MVC简介3§2.4Struts简介3§2.5Spring简介4§2.6Hibernate简介4§2.7SSH简介5§2.8MySQL的简介5第三章详细设计及编码实现7§3.1物流管理系统仓储管理介绍7§3.2数据库设计7§3.3SSH数据访问的实现13§3.4系统登录功能模块的实现22§3.5员工信息管理功能模块的实现25总结33致谢34参考文献35第一章 西南科技大学自考毕业论文第一章需求分析1.1项目背景随着电子商务技术和网络技术的快速发展,现代物流技术也在不断进步。目前,我国物流业处于快速增长期,物流总需求增长很快,物流企业快速成长,物流业市场化、社会化、专业化水准提高。物流业发展对于提高国民经济增长质量和效益的作用日益明显。物流管理(LogisticsManagement)是为了满足客户的需求,对商品、服务和相关信息从产出点到消费点的合理、有效的流动和储存,进行规划、实施与控制的过程。仓储管理(WarehousingManagement)是物流系统的一部分,它从初始点到消费点存储产品(原材料、零部件、半成品、成品),提供存储状态、条件和处置等信息。现代物流中的仓储是在物流体系中是唯一的静态环节,随着经济的发展,需求方式出现了个性化、多样化的改变,生产方式也变为多品种、小批量的柔性生产方式。物流的特征由少品种、大批量变为多品种、少批量或多批次、小批量,仓库的功能也从重视保管效率逐渐变为重视流通功能的实现。储存相当于物流体系的一个节点。仓储是物流中的重要环节,储存功能相对于整个物流体系来说,既有缓冲与调节的作用,也有创值与增效的功能。仓储管理在现代物流管理中处于重要地位,它不但起着物品储藏的功能而且对财务控制、生产供应、销售支持都有很大的作用。合理的库存控制对减少物品的资金占用有起着关键作用,而且合理的库存是为生产有序进行提供了可能,商品的销售也受库存的影响。因此仓储管理的控制是否合理、高效是提升企业竞争力的关键。1.2项目内容:²员工信息管理:对员工信息进行增加/修改/删除/查看操作²员工登录信息管理:对员工登录信息进行增加/修改/删除/查看操作²车辆信息管理:对车辆信息进行增加/修改/删除/查看操作²车队信息管理:对车辆信息进行增加/修改/删除/查看操作²供应商信息管理:对车队信息进行增加/修改/删除/查看操作²公告信息管理:对公告信息进行增加/修改/删除/查看操作²仓库信息管理:对仓库信息进行增加/修改/删除/查看操作²商品信息管理:对商品信息进行增加/修改/删除/查看操作²出库信息管理:对出库信息进行增加/修改/删除/查看操作²入库信息管理:对入库信息的增加/修改/删除/查看操作1.3项目意义仓储管理是指对仓库及其库存物品的管理,仓储系统是企业物流系统中不可缺少的子系统。物流系统的整体目标是以最低成本提供令客户满意的服务,而仓储系统在其中 西南科技大学自考毕业论文发挥着重要作用。仓储活动能够促进企业提高客户服务水平,增强企业的竞争能力。现代仓储管理已从静态管理向动态管理发生了根本性的变化,对仓储管理的基础工作也提出了更高的要求。仓库业务正常进行,能保征企业仓库货物安全,快速,准确的发货。物流管理系统(仓储管理)是对商品在库信息、入库信息、出库信息、商品位置信息、仓库位置信息以及负责人情况,供应商信息、商品分类信息等进行管理。使仓库业务更方便,快捷。 西南科技大学自考毕业论文第二章技术介绍2.1Java简介Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由SunMicrosystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaSE,JavaEE,JavaME)的总称。Java技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。Java不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码,从而实现了“一次编译、到处执行”的跨平台特性。不过,每次的编译执行需要消耗一定的时间,这同时也在一定程度上降低了Java程序的运行效率。2.2JSP技术简介JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计和显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序段,然后将执行结果连同JSP文件中的HTML代码一起返回给客户。插入的Java程序段可以操作数据库、重新定向网页等,以实现建立动态网页所需要的功能。JSP与JavaServlet一样,是在服务器端执行的,通常返回给客户端的就是一个HTML文本,因此客户端只要有浏览器就能浏览。2.3MVC简介MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。MVC模式最早由TrygveReenskaug在1974年提出,是施乐帕罗奥多研究中心(XeroxPARC)在20世纪80年代为程序语言Smalltalk发明的一种软件设计模式。MVC模式的目的是实现一种动态的程序设计,使后续对程序的修改和扩展简化,并且使程序某一部分的重复利用成为可能。除此之外,此模式通过对复杂度的简化,使程序结构更加直观。软件系统通过对自身基本部份分离的同时也赋予了各个基本部分应有的功能。专业人员可以通过自身的专长分组:u(控制器Controller)-负责转发请求,对请求进行处理。u(视图View)-界面设计人员进行图形界面设计。(模型Model)-程序员编写程序应有的功能(实现算法等等)、数据库专家进行u数据管理和数据库设计(可以实现具体的功能)。2.4Struts简介Struts是Apache软件基金会(ASF)赞助的一个开源项目。它最初是Jakarta项目中的一个子项目,并在2004年3月成为ASF的顶级项目。它通过采用JavaServlet/JSP技术,实现了基于JavaEE 西南科技大学自考毕业论文Web应用的Model-View-Controller〔MVC〕设计模式的应用框架〔WebFramework〕,是MVC经典设计模式中的一个经典产品。Struts的优点主要集中体现在两个方面:Taglib和页面导航。Taglib是Struts的标记库,灵活动用,能大大提高开发效率。Struts这个名字来源于在建筑和旧式飞机中使用的支持金属架。它的目的是为了减少在运用MVC设计模型来开发Web应用的时间。你仍然需要学习和应用该架构,不过它将可以完成其中一些繁重的工作。Struts跟Tomcat、Turbine等诸多Apache项目一样,是开源软件,这是它的一大优点,使开发者能更深入的了解其内部实现机制。2.5Spring简介Spring是一个开源框架,是为了解决企业应用程序开发复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为J2EE应用程序开发提供集成的框架。控制反转模式(也称作依赖性介入)的基本概念是:不创建对象,但是描述创建它们的方式。在代码中不直接与对象和服务连接,但在配置文件中描述哪一个组件需要哪一项服务。容器(在Spring框架中是IOC容器)负责将这些联系在一起。Spring设计的核心是org.springframework.beans包,它的设计目标是与JavaBean组件一起使用。这个包通常不是由用户直接使用,而是由服务器将其用作其他多数功能的底层中介。下一个最高级抽象是BeanFactory接口,它是工厂设计模式的实现,允许通过名称创建和检索对象。BeanFactory也可以管理对象之间的关系。BeanFactory支持两个对象模型。l单态模型提供了具有特定名称的对象的共享实例,可以在查询时对其进行检索。Singleton是默认的也是最常用的对象模型。对于无状态服务对象很理想。l原型模型确保每次检索都会创建单独的对象。在每个用户都需要自己的对象时,原型模型最适合。bean工厂的概念是Spring作为IOC容器的基础。IOC将处理事情的责任从应用程序代码转移到框架。正如我将在下一个示例中演示的那样,Spring框架使用JavaBean属性和配置数据来指出必须设置的依赖关系。2.6Hibernate简介Hibernate是一种Java语言下的对象关系映射解决方案。它是使用GNU宽通用公共许可证发行的自由、开源的软件。它为面向对象的领域模型到传统的关系型数据库的映射,提供了一个使用方便的框架。Hibernate也是目前Java开发中最为流行的数据库持久层框架,现已归JBOSS所有。它的设计目标是将软件开发人员从大量相同的数据持久层相关编程工作中解放出来。无论是从设计草案还是从一个遗留数据库开始,开发人员都可以采用Hibernate。Hibernate不仅负责从Java类到数据库表的映射(还包括从Java数据类型到SQL数据类型的映射),还提供了面向对象的数据查询检索机制,从而极大地缩短的手动处理SQL和JDBC上的开发时间。2.7SSH简介 西南科技大学自考毕业论文SSH(Struts+Spring+Hibernate),典型的J2EE三层结构,分为表现层、中间层(业务逻辑层)和数据服务层。三层体系将业务规则、数据访问及合法性校验等工作放在中间层处理。客户端不直接与数据库交互,而是通过组件与中间层建立连接,再由中间层与数据库交互。表现层是传统的JSP技术,自1999年问世以来,经过多年的发展,其广泛的应用和稳定的表现,为其作为表现层技术打下了坚实的基础。中间层采用的是流行的Spring+Hibernate,为了将控制层与业务逻辑层分离,又细分为以下几种。Web层,就是MVC模式里面的“C”(controller),负责控制业务逻辑层与表现层的交互,调用业务逻辑层,并将业务数据返回给表现层作组织表现,该系统的MVC框架采用Struts。Service层(就是业务逻辑层),负责实现业务逻辑。业务逻辑层以DAO层为基础,通过对DAO组件的正面模式包装,完成系统所要求的业务逻辑。DAO层,负责与持久化对象交互。该层封装了数据的增、删、查、改的操作。POJO,持久化对象。通过实体关系映射工具将关系型数据库的数据映射成对象,很方便地实现以面向对象方式操作数据库,该系统采用Hibernate作为ORM框架。Spring的作用贯穿了整个中间层,将Web层、Service层、DAO层及PO无缝整合,其数据服务层用来存放数据。2.8MySQL的简介MySQL是一个开放源代码的关系数据库管理系统,原开发者为瑞典的MySQLAB公司,该公司于2008年被Sun收购。2009年,Oracle收购Sun公司,MySQL成为Oracle旗下产品。MySQL最初的开发者的意图是用mSQL和他们自己的快速低级例程(ISAM)去连接表格。不管怎样,在经过一些测试后,开发者得出结论:mSQL并没有他们需要的那么快和灵活。这导致了一个使用几乎和mSQL一样的API接口的用于他们的数据库的新的SQL接口的产生,这样,这个API被设计成允许为用于mSQL而写的第三方代码更容易移植到MySQL。MySQL由于性能高、成本低、可靠性好,已经成为最流行的开源数据库,被广泛地应用在Internet上的中小型网站中。随着MySQL的不断成熟,它也逐渐用于更多大规模网站和应用,比如维基百科、Google和Facebook等网站。非常流行的开源软件组合LAMP中的“M”指的就是MySQL。MySQL数据库可以称得上是目前运行速度最快的SQL语言数据库。除了具有许多其它数据库所不具备的功能和选择之外,MySQL数据库是一种完全免费的产品,用户可以直接从网上下载数据库,用于个人或商业用途,而不必支付任何费用。总体来说,MySQL数据库具有以下主要特点:u使用C和C++编写,并使用了多种编译器进行测试,保证源代码的可移植性u支持AIX、FreeBSD、HP-UX、Linux、MacOS、NovellNetware、OpenBSD、OS/2Wrap、Solaris、Windows等多种操作系统u为多种编程语言提供了API。这些编程语言包括C、C++、Eiffel、Java、Perl、PHP、Python、Ruby和Tcl等。u支持多线程,充分利用CPU资源u优化的SQL查询算法,有效地提高查询速度 西南科技大学自考毕业论文u既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中提供多语言支持,常见的编码如中文的GB2312、BIG5,日文的Shift_JIS等都可以用作数据表名和数据列名u提供TCP/IP、ODBC和JDBC等多种数据库连接途径u提供用于管理、检查、优化数据库操作的管理工具u可以处理拥有上千万条记录的大型数据库 西南科技大学自考毕业论文第三章详细设计及编码实现3.1物流管理系统仓储管理介绍退出系统员工信息管理员工登录信息管理车辆信息管理出库信息管理车队信息管理供应商信息管理公告信息管理物流管理系统仓储管理仓库信息管理商品信息管理入库信息管理图3.1 物流管理系统仓储管理图物流管理系统仓储管理分为:超级管理员,仓库管理员,人事管理员;(1)超级管理员的权限:n员工信息管理n员工登录信息管理n车辆信息管理n车队信息管理n供应商信息管理n公告信息管理n仓库信息管理n商品信息管理n出库信息管理n入库信息管理(2)仓库管理员的权限:n供应商信息管理n仓库信息管理n商品信息管理n出库信息管理n入库信息管理(3)人事管理员的权限n员工信息管理3.2数据库设计 西南科技大学自考毕业论文数据库在整个系统设计中起着举足轻重的作用,任何数据都要在数据库中进行存储以保证数据在以后的操作实现成为可能。数据库设计是程序功能性设计的基础,只有数据库设计完后程序员才能进行功能性设计,程序员根据数据库结构实现相应的软件功能。下面介绍该系统的数据库整体设计,该系统采用轻量化的数据库解决方案,采用MySQL数据库。因为该系统是整个物流系统的一个功能模块要实现的是仓储管理,所以数据库中的相关数据涉及到,职员信息、供应商信息、商品信息、商品出库单信息、商品入库单信息、仓储位置信息、商品在仓库中的位置信息等。物流管理系统(仓储管理模块)整个数据库的结构如下:物流管理系统(仓储管理模块)数据库结构数据库名称:logisticmgdb数据表编号数据表英文名称数据表中文名称数据表功能描述01carmanagetb车辆信息表商品运输车辆的管理02carteaminfotb车队信息表运输车队的管理03commcatetb商品分类表商品分类管理04departmentinfotb部门信息表部门划分管理05diplomasinfotb学历信息表学历分类管理06employeeinfotb职员信息表职员信息管理07goodsinfotb商品信息表商品信息管理08goodslocationtb商品所在库区域信息表仓库区域划分管理09goodsrowstb商品摆放排号表仓库中商品摆放排号划分10goodsseatstb商品摆放座号表仓库中商品摆放座号划分11postinfotb职务信息表对企业中人员承担的职务分类12logingradetb登录权限信息表对登陆人员权限划分13messageinfotb公告信息表公告信息的管理14stockininfotb入库单信息表对入库单信息的管理15stockoutinfotb出库单信息表对出库单信息的管理16employeelogintb职员登录登录信息表职员登录登录信息管理17suppliertb供应商信息表对供应商信息的管理18waretypetb商品型号表对各类商品型号的管理19storageinfo仓库信息表对商品储存的仓库位置的管理物流管理系统(仓储管理模块)数据表结构设计如下.表3.1carmanagetb(车辆信息表)编号英文字段名中文字段名类型长度为空备注01carid车牌号varchar20否主键02cardriverid驾驶员编号varchar20否外键employeeinfotb.employeeid03carteamid车队编号varchar20否外键carteaminfotb.carteamid 西南科技大学自考毕业论文表3.2carteaminfotb(车队信息表)编号英文字段名中文字段名类型长度为空备注01carteamid车队编号varchar20否主键02carteamname车队名称varchar20否03chargeid负责人编号varchar20否外键employeeinfotb.employeeid表3.3commcatetb(商品分类信息表)编号英文字段名中文字段名类型长度为空备注01commodityid商品分类编号varchar20否主键02commodityname商品分类名称varchar20否表3.4departmentinfotb(部门信息表)编号英文字段名中文字段名类型长度为空备注01departmentid部门编号varchar10否主键02departmentname部门名称varchar20否表3.5diplomasinfotb(学历信息表)编号英文字段名中文字段名类型长度为空备注01diplomasid学历编号varchar2否主键02diplomasname学历名称varchar10否表3.6employeeinfotb(职员信息表)编号英文字段名中文字段名类型长度为空备注01employeeid职员编号varchar20否主键02name姓名varchar20否主键03sex性别char1否04idcard身份证号varchar18否05birthdate出生日期varchar20否06entrydate入职日期varchar20否07address住址varchar20否08telphone电话号码varchar2009mobilephone手机号varchar2010postid职务编号varchar20否11diplomasid学历编号varchar2否12departmentid部门编号varchar10否 西南科技大学自考毕业论文表3.7employeelogintb(职员登录信息表)编号英文字段名中文字段名类型长度为空备注01loginid登录idvarchar20否主键02loginpassword密码varchar20否03loginpower用户级别varchar20否04employeeid职员编号varchar2005ischeck是否已审核char1否表3.8goodsinfotb(商品信息表)编号英文字段名中文字段名类型长度为空备注01goodsid商品编号int11否主键02name商品名称varchar20否03cateid商品分类编号int11否04supplyid供应商编号int11否05goodsabc商品abc分类varchar20否06province商品产地varchar20否07stockid所在仓库编号int1108price单价float2009stockcount库存量varchar2010orderdate定购日期varchar11stockindate入库日期varchar12goodsunit商品单位varchar2014typeid商品型号编号varchar2015goodslocation所在区域int1116goodsset所在排号int1117goodsrow所在位号int11表3.9goodslocationtb(商品所在库区域信息表)编号英文字段名中文字段名类型长度为空备注01locationid区域编号int11否主键02locateionname名称varchar20否表3.10goodsrowstb(商品所摆放排号表)编号英文字段名中文字段名类型长度为空备注01rowsid排号IDint11否主键02rowsname名称varchar20否表3.11goodsseatstb(商品摆放座号表)编号英文字段名中文字段名类型长度为空备注01seatsid座位IDint11否主键02seatsname名称varchar20否 西南科技大学自考毕业论文表3.12messageinfotb(公告信息表)编号英文字段名中文字段名类型长度为空备注01messageid公告信息编号int11否主键02author发布者varchar20否03title标题varchar20否04datetime发布时间varchar20否05replacetime最后修改时间varchar20否06content内容varchar20否表3.13postinfotb(职务信息表)编号英文字段名中文字段名类型长度为空备注01postid职务编号varchar20否主键02postname职务名称varchar20否03jobdescription职务描述varchar20表3.14stockininfotb(入库信息表)编号英文字段名中文字段名类型长度为空备注01stockinid入库编号varchar20否主键02stockindate入库日期varchar20否03chargeid负责人varchar20否04goodsid商品编号int20否05goodsincount商品数量int8否06storageid商品类型int11否07goodsinmemo备注varchar50表3.15stockoutinfotb(出库信息表)编号英文字段名中文字段名类型长度为空备注01stockoutid出库编号varchar20否主键02stockoutdate出库时间varchar20否03chargeid负责人varchar20否04goodsid商品编号varchar20否05goodsoutcount出库数量int8否06goodsreceiveid到达地varchar20否07commodityid备注varchar50 西南科技大学自考毕业论文表3.16storageinfo(仓库信息表)编号英文字段名中文字段名类型长度为空备注01storageid仓库编号int11否02storagename名称varchar20否03chargeid负责人varchar20外键employeeinfotb.employeeid04storageaddress地址varchar20否表3.17suppliertb(供应商信息表)编号英文字段名中文字段名类型长度为空备注01supplierid供应商编号int11否主键02name商家名称varchar20否03charge负责人名字varchar20否04address地址varchar20否05mobilephone手机联系方式varchar2006telphone电话联系方式varchar2007fax传真号varchar2008emailE-mailvarchar2009http公司网址varchar20表3.18waretypetb(商品型号表)编号英文字段名中文字段名类型长度为空备注01waretypeid商品型号编号varchar20否主键02typename名称varchar20否03categoryid商品类型varchar20否表3.19logingradetb(登录权限信息表)编号英文字段名中文字段名类型长度为空备注01gradeid登录等级编号char1否主键02describe等级描述varchar20否如:超级管理员 西南科技大学自考毕业论文3.3SSH数据访问的实现图3.2SSH数据访问图(1)数据库的连接配置是在applicationContext.xml中(2)持久化的实现hibernate为应用程序提供了高效的O/R关系映射和查询服务,为面向对象的领域模型到传统的关系型数据库的映射,提供了一个使用方便的框架。Hibernate将表映射为对象:publicclassEmployeelogintbimplementsjava.io.Serializable{privateStringloginid;privateEmployeeinfotbemployeeinfotb;privateLogingradetblogingradetb;privateStringloginpassword;privateStringischeck;privateSetmessageinfotbs=newHashSet(0);//Constructors/**defaultconstructor*/ 西南科技大学自考毕业论文publicEmployeelogintb(){}/**minimalconstructor*/publicEmployeelogintb(Stringloginid,Logingradetblogingradetb,Stringloginpassword){this.loginid=loginid;this.logingradetb=logingradetb;this.loginpassword=loginpassword;}/**fullconstructor*/publicEmployeelogintb(Stringloginid,Employeeinfotbemployeeinfotb,Logingradetblogingradetb,Stringloginpassword,Stringischeck,Setmessageinfotbs){this.loginid=loginid;this.employeeinfotb=employeeinfotb;this.logingradetb=logingradetb;this.loginpassword=loginpassword;this.ischeck=ischeck;this.messageinfotbs=messageinfotbs;}//PropertyaccessorspublicStringgetLoginid(){returnthis.loginid;}publicvoidsetLoginid(Stringloginid){this.loginid=loginid;}publicEmployeeinfotbgetEmployeeinfotb(){returnthis.employeeinfotb;}publicvoidsetEmployeeinfotb(Employeeinfotbemployeeinfotb){this.employeeinfotb=employeeinfotb;}publicLogingradetbgetLogingradetb(){returnthis.logingradetb;}publicvoidsetLogingradetb(Logingradetblogingradetb){this.logingradetb=logingradetb;}publicStringgetLoginpassword(){returnthis.loginpassword; 西南科技大学自考毕业论文}publicvoidsetLoginpassword(Stringloginpassword){this.loginpassword=loginpassword;}publicStringgetIscheck(){returnthis.ischeck;}publicvoidsetIscheck(Stringischeck){this.ischeck=ischeck;}publicSetgetMessageinfotbs(){returnthis.messageinfotbs;}publicvoidsetMessageinfotbs(Setmessageinfotbs){this.messageinfotbs=messageinfotbs;}}Employeelogintb.hbm.xml配置文件 西南科技大学自考毕业论文(3)DAO类DAO模型是设计关系数据库系统结构的对象类的集合。它们提供了完成管理一个关系型数据库系统所需的全部操作的属性和方法,这其中包括创建数据库,定义表、字段和索引,建立表间的关系,定位和查询数据库等。EmployeelogintbDAO.javapublicclassEmployeelogintbDAOextendsHibernateDaoSupport{privatestaticfinalLoglog=LogFactory.getLog(EmployeelogintbDAO.class);//propertyconstantspublicstaticfinalStringLOGINPASSWORD="loginpassword";publicstaticfinalStringEMPLOYEEID="employeeid";publicstaticfinalStringISCHECK="ischeck";protectedvoidinitDao(){//donothing}publicvoidsave(EmployeelogintbtransientInstance){log.debug("savingEmployeelogintbinstance");try{getHibernateTemplate().save(transientInstance);log.debug("savesuccessful");}catch(RuntimeExceptionre){log.error("savefailed",re);throwre;}}publicvoidsaveorUpdate(EmployeelogintbtransientInstance){log.debug("savingorupdateEmployeelogintbinstance");try{getHibernateTemplate().saveOrUpdate(transientInstance);log.debug("saveorupdatesuccessful");}catch(RuntimeExceptionre){log.error("saveorupdatefailed",re);throwre;}}publicvoiddelete(EmployeelogintbpersistentInstance){log.debug("deletingEmployeelogintbinstance");try{getHibernateTemplate().delete(persistentInstance); 西南科技大学自考毕业论文log.debug("deletesuccessful");}catch(RuntimeExceptionre){log.error("deletefailed",re);throwre;}}publicEmployeelogintbfindById(java.lang.Stringid){log.debug("gettingEmployeelogintbinstancewithid:"+id);try{Employeelogintbinstance=(Employeelogintb)getHibernateTemplate().get("com.jcx.lmsproject.data.Employeelogintb",id);returninstance;}catch(RuntimeExceptionre){log.error("getfailed",re);throwre;}}publicListfindByExample(Employeelogintbinstance){log.debug("findingEmployeelogintbinstancebyexample");try{Listresults=getHibernateTemplate().findByExample(instance);log.debug("findbyexamplesuccessful,resultsize:"+results.size());returnresults;}catch(RuntimeExceptionre){log.error("findbyexamplefailed",re);throwre;}}publicListfindByProperty(StringpropertyName,Objectvalue){log.debug("findingEmployeelogintbinstancewithproperty:"+propertyName+",value:"+value);try{StringqueryString="fromEmployeelogintbasmodelwheremodel."+propertyName+"=?";returngetHibernateTemplate().find(queryString,value);}catch(RuntimeExceptionre){log.error("findbypropertynamefailed",re);throwre;} 西南科技大学自考毕业论文}publicListfindByLoginpassword(Objectloginpassword){returnfindByProperty(LOGINPASSWORD,loginpassword);}publicListfindByEmployeeid(Objectemployeeid){returnfindByProperty(EMPLOYEEID,employeeid);}publicListfindByIscheck(Objectischeck){returnfindByProperty(ISCHECK,ischeck);}publicListfindAll(){log.debug("findingallEmployeelogintbinstances");try{StringqueryString="fromEmployeelogintb";returngetHibernateTemplate().find(queryString);}catch(RuntimeExceptionre){log.error("findallfailed",re);throwre;}}publicEmployeelogintbmerge(EmployeelogintbdetachedInstance){log.debug("mergingEmployeelogintbinstance");try{Employeelogintbresult=(Employeelogintb)getHibernateTemplate().merge(detachedInstance);log.debug("mergesuccessful");returnresult;}catch(RuntimeExceptionre){log.error("mergefailed",re);throwre;}}publicvoidattachDirty(Employeelogintbinstance){log.debug("attachingdirtyEmployeelogintbinstance");try{getHibernateTemplate().saveOrUpdate(instance);log.debug("attachsuccessful");}catch(RuntimeExceptionre){log.error("attachfailed",re);throwre;}}publicvoidattachClean(Employeelogintbinstance){ 西南科技大学自考毕业论文log.debug("attachingcleanEmployeelogintbinstance");try{getHibernateTemplate().lock(instance,LockMode.NONE);log.debug("attachsuccessful");}catch(RuntimeExceptionre){log.error("attachfailed",re);throwre;}}publicstaticEmployeelogintbDAOgetFromApplicationContext(ApplicationContextctx){return(EmployeelogintbDAO)ctx.getBean("EmployeelogintbDAO");}}(4)服务层传统方式每一个service类对应一个dao类,因为dao类相应地对应一个table或视图,现在可以让dao类针对整个数据库进行设计,使得所有service类只对应一个dao类.声明要使用的DAO类并且生成get()和set()方法:publicclassAboutworkerlogin{privateEmployeelogintbDAOepylogindao;publicEmployeelogintbDAOgetEpylogindao(){returnepylogindao;}publicvoidsetEpylogindao(EmployeelogintbDAOepylogindao){this.epylogindao=epylogindao;}/***根据id获得记录*@paramid*@return*/publicEmployeelogintbfindbyid(Stringid){returnthis.epylogindao.findById(id);}/***增加新记录*@paramtb*/publicbooleansaveNewMsg(Employeelogintbtb){try{this.epylogindao.save(tb); 西南科技大学自考毕业论文returntrue;}catch(Exceptione){e.printStackTrace();returnfalse;}}/***修改记录*@paramtb*/publicbooleanupdateRecord(Employeelogintbtb){try{this.epylogindao.saveorUpdate(tb);returntrue;}catch(Exceptione){e.printStackTrace();returnfalse;}}publicbooleandeleteRecord(Employeelogintbtb){try{this.epylogindao.delete(tb);returntrue;}catch(Exceptione){e.printStackTrace();returnfalse;}}}(5)Action,要声明要使用到的Service类,并生成get()和set()方法:publicclassWorkerloginActionextendsDispatchAction{/**GeneratedMethods*/AboutworkerloginworkerService;LogingradeSericelogingradeSerice;publicAboutworkerlogingetWorkerService(){returnworkerService;}publicvoidsetWorkerService(AboutworkerloginworkerService){this.workerService=workerService;} 西南科技大学自考毕业论文publicLogingradeSericegetLogingradeSerice(){returnlogingradeSerice;}publicvoidsetLogingradeSerice(LogingradeSericelogingradeSerice){this.logingradeSerice=logingradeSerice;}}(6)applicationContext.xml中配置服务层applicationContext.xml中配置Action(7)struts-config.xml的配置3.4系统登录功能模块的实现(1)进入登录页面indexlogin.jsp如图3.3:图3.3系统登录页面系统登录成功的条件必须是:①登录ID和密码密码正确,②正确选择登录类型,③已通过管理员的审核。只要有一人条件不满足都不能登录管理系统,会重新返回登录页面。输入登录ID、密码、选择登录类型,然后单击登录按键,系统就将页面请求提交给相应的Action。indexlogin.jsp页面实现部分代码如下:登录ID:密  码:类  型:${grade.describe}  西南科技大学自考毕业论文Action从ActionForm中读取到数据,然后到数据库中查询是否有该登录ID的记录,如果找到就比较密码是否正确,登录类型是否正确,是否已通过管理员的审核。实现代码如下:publicActionForwardworkerlogin(ActionMappingmapping,ActionFormform,HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{WorkerloginFormwform=(WorkerloginForm)form;//TODOAuto-generated//methodstubStringid=wform.getLoginid();Employeelogintbtb=this.workerService.findbyid(id);booleanisok=true;if(tb!=null){if(!tb.getLoginpassword().equals(wform.getLoginpwd())){//登录密码是否正确isok=false;}elseif(!tb.getLogingradetb().getGradeid().equals(wform.getLoginpower())){//用户类型是否正确isok=false;}elseif(!tb.getIscheck().equals("1")){//是否通过管理员审核isok=false;}}else{//登录ID不存在isok=false;}Stringgotopage="";if(isok){gotopage="loginWin.html";HttpSessionsession=request.getSession();session.setAttribute("loginID",tb.getLoginid());session.setAttribute("power",tb.getLogingradetb().getGradeid());session.setAttribute("powername",tb.getLogingradetb().getDescribe());}else{gotopage="/loginpags/workerlogin.jsp";request.setAttribute("rs","登录操失败原因可能为:1.登录id有误,2.密码有误,3.类型有误 西南科技大学自考毕业论文4.你的ID未通过管理员审核!");request.setAttribute("lstgrade",this.logingradeSerice.findAll());}request.getRequestDispatcher(gotopage).forward(request,response);returnnull;}成功登录管理系统后,进入系统管理页面,如超级管理员的管理界面如图3.4:图3.4物流管理系统页面3.5员工信息管理功能模块的实现(1)增加员工信息的过程进入注册新员工信息页面,如图: 西南科技大学自考毕业论文图3.5注册新员工信息页面填写好必填的数据后,系统就将页面请求提交给相应的Action。Action从ActionForm中读取到数据,根据入职年份自动生成员工编号,然后将新员工信息注册到数据库,实现代码如下:publicActionForwardaddEmployeeInfo(ActionMappingmapping,ActionFormform,HttpServletRequestrequest,HttpServletResponseresponse)throwsParseException,ServletException,IOException{EmployeeinfoFormeform=(EmployeeinfoForm)form;//TODO//Auto-generated//methodstubStringentryYear=eform.getEntrydate().substring(0,4);Employeeinfotbeinfotblast=this.employservice.findlikeid("employeeid",""%"+entryYear+"%"");intid=0;if(einfotblast!=null){id=Integer.parseInt(einfotblast.getEmployeeid())+1;}else{id=Integer.parseInt(entryYear+"0001");}Stringemployeeid=String.valueOf(id);//从页面获得值并放入到表对象中//SimpleDateFormatformat=newSimpleDateFormat("yyyy-MM-dd");//设定日期格式Employeeinfotbeinfotb=newEmployeeinfotb(); 西南科技大学自考毕业论文einfotb.setEmployeeid(employeeid);einfotb.setName(eform.getEmployeename());einfotb.setSex(eform.getEmployeesex());einfotb.setBirthdate(eform.getBirthdate());einfotb.setAddress(eform.getAddress());einfotb.setIdcard(eform.getIdcard());einfotb.setMobilephone(eform.getMobilephone());einfotb.setTelphone(eform.getTelphone());einfotb.setDiplomasinfotb(this.diplomasService.findbyId(eform.getDiplomasid()));einfotb.setEntrydate(eform.getEntrydate());einfotb.setDepartmentinfotb(departmentService.findbyid(eform.getDepartmentid()));einfotb.setPostinfotb(this.postinfoService.findByid(eform.getPostid()));Stringrs="注册新职员信息失败!";try{this.employservice.addnewRecord(einfotb);//向表中添加新记录//---以下代码自动生成职员登录信息Employeelogintblogintb=newEmployeelogintb();logintb.setLoginid(einfotb.getEmployeeid());logintb.setLoginpassword(einfotb.getIdcard().substring(einfotb.getIdcard().length()-6));logintb.setLogingradetb(this.logingradeSerice.findbyid("4"));logintb.setEmployeeinfotb(einfotb);logintb.setIscheck("0");this.loginService.saveNewMsg(logintb);//----生成职员登录信息完毕rs="注册新职员信息成功!";}catch(Exceptione){e.printStackTrace();}request.setAttribute("resultStr",rs);request.getRequestDispatcher("worker/Winaddemply.jsp").forward(request,response);returnnull;}(2)查看所有员工信息在管理系统页面单击“员工信息管理”——>“管理员工信息”后页面显示如下图: 西南科技大学自考毕业论文图3.6显示所有员工信息页面实现步骤如下:①单击“管理员工信息”时向Action发出请求,实现代码:employeeinfo.do?method=tolistAllEmply②相应的Action方法作相关处理后显示到页面上。实现代码:publicActionForwardtolistAllEmply(ActionMappingmapping,ActionFormform,HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{EmployeeinfoFormeform=(EmployeeinfoForm)form;//TODOrequest.setAttribute("allemplyinfo",this.employservice.findAall());request.getRequestDispatcher("worker/listallemlpyinfo.jsp").forward(request,response);returnnull;}(3)查看员工详细信息选择所要查看的员工,然后单击其后的“查看详细”后页面显示如下图:图3.7显示员工详细信息页面 西南科技大学自考毕业论文(4)修改员工信息选择所要修改的员工,然后单击其后的“修改”页面会向Action发出请求,代码实现:employeeinfo.do?method=toUpdateEmployee&emplyid=${allemplyinfo.employeeid}Action中的相应方法根据员工编号在数据库中雾里查找到相关记录,返回数据记录并将数据注入到ActionForm中然后跳转到修改页面,实现代码如下:publicActionForwardtoUpdateEmployee(ActionMappingmapping,ActionFormform,HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{EmployeeinfoFormeform=(EmployeeinfoForm)form;//TODO//Auto-generated//methodstub//根据职员编号获得职员信息//并注入到ActionForm中Stringemployeeid=request.getParameter("emplyid");Employeeinfotbemplytb=this.employservice.findByid(employeeid);if(emplytb!=null){eform.setEmployeeid(emplytb.getEmployeeid());eform.setEmployeename(emplytb.getName());eform.setEmployeesex(emplytb.getSex());eform.setBirthdate((emplytb.getBirthdate()));eform.setIdcard(emplytb.getIdcard());eform.setTelphone(emplytb.getTelphone());eform.setMobilephone(emplytb.getMobilephone());eform.setDiplomasid(emplytb.getDiplomasinfotb().getDiplomasid());eform.setEntrydate((emplytb.getEntrydate()));eform.setDepartmentid(emplytb.getDepartmentinfotb().getDepartmentid());eform.setPostid(emplytb.getPostinfotb().getPostid());eform.setAddress(emplytb.getAddress());}request.setAttribute("lstDepartment",this.departmentService.findAll());//获得有哪些部门并设置到session中request.setAttribute("lstpost",this.postinfoService.findAllRecord());//获得有哪些职务并设置到session中request.getRequestDispatcher("worker/updateemployeeinfo.jsp").forward(request,response); 西南科技大学自考毕业论文returnnull;}页面显示结果如下:图3.5修改员工信息页面修改需要修改的数据后,单击“提交”页面将新的数据提交给Action,Action作处理后提交给服务层,然后对数据库数据进行修改。publicActionForwardupdateEmployeeInfo(ActionMappingmapping,ActionFormform,HttpServletRequestrequest,HttpServletResponseresponse)throwsParseException,ServletException,IOException{EmployeeinfoFormeform=(EmployeeinfoForm)form;//TODO//Auto-generated//methodstub//从页面获得值并放入到表对象中Employeeinfotbeinfotb=this.employservice.findByid(eform.getEmployeeid());//einfotb.setEmployeeid(employeeid);einfotb.setName(eform.getEmployeename());einfotb.setSex(eform.getEmployeesex());einfotb.setBirthdate(eform.getBirthdate());einfotb.setAddress(eform.getAddress());einfotb.setIdcard(eform.getIdcard());einfotb.setMobilephone(eform.getMobilephone()); 西南科技大学自考毕业论文einfotb.setTelphone(eform.getTelphone());einfotb.setDiplomasinfotb(this.diplomasService.findbyId(eform.getDiplomasid()));einfotb.setEntrydate(eform.getEntrydate());einfotb.setDepartmentinfotb(departmentService.findbyid(eform.getDepartmentid()));einfotb.setPostinfotb(this.postinfoService.findByid(eform.getPostid()));Stringrs="修改失败!";try{this.employservice.saveAndUpdate(einfotb);//修改表中的记录信息rs="修改成功!";}catch(Exceptione){e.printStackTrace();}request.setAttribute("resultStr",rs);request.setAttribute("allemplyinfo",this.employservice.findAall());request.getRequestDispatcher("worker/listallemlpyinfo.jsp").forward(request,response);returnnull;}(5)删除员工信息选择所要删除的员工,然后单击其后的“删除”页面会向Action发出请求,代码实现:employeeinfo.do?method=deleteEmployeeInfo&emplyid=${allemplyinfo.employeeid}Action中的deleteEmployeeInfo()方法先找到所提供的员工编号相符的记录删除,然后返回显示所有员工信息页面:publicActionForwarddeleteEmployeeInfo(ActionMappingmapping,ActionFormform,HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{EmployeeinfoFormeform=(EmployeeinfoForm)form;//TODO//Auto-generated//methodstubStringemployeeid=request.getParameter("emplyid");Employeeinfotbemplytb=this.employservice.findByid(employeeid);Employeelogintbelogintb=this.loginService.findbyid(employeeid);Stringrs="删除失败!"; 西南科技大学自考毕业论文if(emplytb!=null){this.employservice.deleteRecord(emplytb);rs="删除成功!";}request.setAttribute("resultStr",rs);request.setAttribute("allemplyinfo",this.employservice.findAall());request.getRequestDispatcher("worker/listallemlpyinfo.jsp").forward(request,response);returnnull;} 西南科技大学自考毕业论文总结本文讲述了SSH在WEB应用的一些基本知识,并通过物流管理系统(仓储管理)对SSH的运用进行了深化,从本文中可看出SSH框架结合的模式,在项目管理上应用十分灵活,不过要真正掌握好它们却并不是一件容易的事情。Spring致力于J2EE应用的各层的解决方案,而不是仅仅专注于某一层的方案。可以说Spring是企业应用开发的“一站式”选择,并贯穿表现层、业务层及持久层。然而,Spring并不想取代那些已有的框架,而是与它们无缝地整合。从学习的角度上说,这次项目基本操作完成,增加、删除、修改、查询这些功能基本实现,通过亲手去设计完成项目,我也学到了很多,收获很大。更了解SSH结构,能更加灵活的使用SSH。以前不是很明白的地方,现在也弄明白了。当程序发生错误时,知道怎么样去查找与解决。 西南科技大学自考毕业论文致谢作为大学学习的总结,毕业论文能够将在大学学到的知识得到充分的展示,为了做好这项重要的工作,指导老师和我的同学、同事都给予我很大的帮助。在整个过程中,我不但了解到自己在知识方面的不足,同时我对资料的积累、搜索的掌握等也有了近一步提高。在写毕业论文这一个月的时间里,我更加清醒地认识到自己的不足,找到自己应该改进和完善的地方。在今后的日子里,我会努力弥补自己的不足,充分扩展自己的视野和知识层面。在论文的撰写过程中,我得到了很多人的帮助和支持,让我的论文能够顺利地完成,在此我要衷心地感谢他们。首先,我要感谢我的指导老师XXX老师。X老师工作繁忙,但总是不辞辛苦地指导着我。有了X老师悉心的指导和耐心的讲解才使我的论文能够顺利完成,而老师严谨的治学精神、认真负责的工作态度和深厚的理论水平,和蔼可亲、平易近人的态度,也给我留下了深刻的印象。同时,我要谢谢学校里所有指导我的的授课老师。如果没有老师的教导,没有这年中的知识积累,我不可能完成论文的写作。而你们的教导也会影响我今后的学习、工作和生活。还要感谢我的家人、朋友,感谢你们在生活上对我的关心和照顾,使我能够全身心地投入到学习中去。再一次向所有帮助和关心我的人表示衷心的感谢! 西南科技大学自考毕业论文参考文献[1]陈天河等著Eclipse,Struts,Hibernate,Spring集成开发宝典电子工业出版社2008[2]孙浏毅等著Java宝典电子工业出版社2009[3]林信良著Spring2.0技术手册电子工业出版社2007[4]王晓悦等著精通Java-JDK,数据系统开发,Web开发人民邮电出版社[5]郭锋Spring从入门到精通清华大学出版社2006[6]张利国著.JAVA实用案例教程清华大学出版社2004[7]田浩、何笑等著Java教学讲义(第二版)成都英才软件职业技能培训学校[8]《传智播客张孝祥java视频教程_11.13_struts/javascript/java》http://www.verycd.com/topics/239368/[9]《传智播客:spring2.3jdbcEJB3.0ajaxhibernateStrutsjava视频教程》http://www.verycd.com/topics/249195/'