毕业设计(论文)-基于Hibernate的进销存管理系统的设计与实现.doc_第1页
毕业设计(论文)-基于Hibernate的进销存管理系统的设计与实现.doc_第2页
毕业设计(论文)-基于Hibernate的进销存管理系统的设计与实现.doc_第3页
毕业设计(论文)-基于Hibernate的进销存管理系统的设计与实现.doc_第4页
毕业设计(论文)-基于Hibernate的进销存管理系统的设计与实现.doc_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

太原理工大学毕业设计(论文)用纸基于Hibernate的进销存管理系统的设计与实现摘 要本文以现今大部分中小型企业为背景,研究企业的进销存系统。在分析目前商业进销存系统开发与应用现状的基础上,从需求分析开始,运用UML建模,详细分析了进销存业务流程,数据库设计和系统主程序的实现。论文在介绍开发系统的技术背景的基础上,主要对采购管理、销售管理和库存管理三大功能模块的设计和实现进行了论述。这几个模块都实现了数据的增、删、改、查询等功能,方便用户或管理员了解整个企业的运转情况。系统采用SSH(Struts2+Spring+Hibernate)框架,系统配置可伸缩自如。软件设计时充分考虑整个应用的灵活性和可扩展性原则要求,运用了MVC开发模式。并通过B/S架构,很好了实现了企业内部之间信息流畅共享的效果,且系统呈现友好的程序界面,方便用户操作。具有很好的开发和运行价值。关键词:进销存系统;SSH框架;Hibernate全套设计加扣 3012250582iDesign and implementation of inventory management system based on HibernateAbstractThis article studies invoicing system of pharmaceutical companies which is set in most small and medium-sized pharmaceutical companies. On the basis of analyzing current development and application of commercial invoicing system, as well as starting from the analysis of needs, this project using UML modeling method to deal with, This article also analyze the process of invoicing of the pharmaceutical industry and database design and main system.Then This paper is on the basis of description of technology background of program, and mainly describe the design and implement of the purchase management, sales management and inventory management. Those modules all implement the function of the adding, deleting, changing, querying data. While providing a variety of the summary and detailed reports from statistical functions, which facilitate the user or administrator to understand the functioning of the entire enterprise.The system users the SSH(Struts+Spring+Hibernate) framework, so it can be configured flexibility. This software is designed to take full account of the entire application flexibility and scalability principle requires, an use the MVC development model. By the B/S architecture, it can have a good smooth sharing of information between the internal of the enterprise, as well as presents a friendly program interface, which make the operation easy to the users, In summary, this project has a good value of development and running. Key words: Medicine Buying-stocking-selling System; SSH framework; Hibernateii目 录摘要iAbstractii前言11 绪论21.1 课题背景21.2 目的和意义21.3 论文结构32 相关技术42.1 关键技术42.2 系统架构42.3 SSH框架43 需求分析和总体设计7 3.1 客户需求分析与实体类图73.1.1 客户需求分析73.1.2 需求补充说明73.1.3 实体类图73.2 总体设计123.2.1 系统运行环境123.2.2 时序图建模123.2.3 系统功能及流程设计144 系统的详细设计与实现16 4.1 数据库表结构设计16 4.2 类图设计184.2.1 进销存管理系统流程图184.2.2 库存管理子系统的对象类图18 4.3 系统的实现19 4.4 系统功能模块的实现214.4.1 系统登录模块的实现214.4.2 销售信息管理模块的实现234.4.3 采购信息管理模块的实现264.4.4 库存信息管理模块的实现284.4.5 人员信息管理模块的实现305 系统测试33 5.1 登录及主界面测试34 5.2 基本信息测试35 5.3 业务查询测试 35结 论36致 谢37参考文献38附录:相关代码40外文原文47外文译文552 太原理工大学毕业设计(论文)用纸前言 企业管理水平是企业经营成败的关键,进入信息时代后,企业的经营模式发生了巨大地变化,行业也是如此。进销存管理是行业管理中的重要部分,面对大量的商品进、销、存信息,普通进销存系统已不能满足需要,必须开发出一套具有跨平台实现数据即时通讯、更新的问题,将“信息孤岛”这一缺点彻底在进销存系统中解决,以帮助企业部门间信息流通通畅,不孤立的模式,从企业内部来看,构建企业的最佳业务流程,通过信息流,协同各单位部门的商流、物流和资金流,合理配置企业资源,提高核心企业竞争力和市场应变能力。本系统结合行业的进销存制度,对商品、客户、供应商的基本信息,商品的采购、销售、退货及盘点信息等进行管理,真正实现了企业的信息化管理。针对行业的业务特点和发展中存在的问题,设计基于J2EE技术架构的进销存的系统。该系统为B/S结构,在系统建模中采用S2SH(Struts2+Spring+Hibernate)框架设计,充分体现了MVC模型优势,提高了程序的灵活性和可复用性。集成了工作流,数据库等关键技术。最大特点是灵活的流程控制和管理,完善的角色权限管理机制,良好的系统扩展性。1 太原理工大学毕业设计(论文)用纸1 绪论1.1 课题背景进销存又称为购销链。进:指询价、采购到入库与付款的过程。销:指报价、销售到出库与收款的过程。存:指出入库之外,包括领料、退货、盘点、报损报溢、借入、借出、调拨等影响库存数量的动作。进销存管理是行业管理中的重要部分,面对大量的商品进、销、存信息,采用人力处理将浪费大量的时间、人力和物力,并且数据准确性低,数据汇总速度慢,为解决这一问题,以帮助企业提高生产、运作的效率,行业中,利用计算机实现进、销、存中的各种信息的管理早已广泛应用与本行业企业管理及企业内部信息。越来越多的企业已认识到信息化的重要性,并把信息化作为提升管理水平的工具。可是如今的进销存系统如雨后春笋般涌出,普通的进销存系统已经不能满足用户的需要,我们在软件开发中应更多追求系统细节与精确,只有开发出满足用户需求的进销存管理系统,才能更好的发展我国的行业。通过调查和分析,现今很多地区规模较大的企业,企业内部结构复杂,公司部门间信息流通不畅,形成孤立的模式,就是我们所称的“信息孤岛”。并且现有的进销存软件品种繁多,操作复杂,在针对某一个企业来说,其中的很多功能是没有必要设置的,或者是增加了开发成本,也增加了操作难度。1.2 目的和意义目前,国内外越来越多企业通过使用管理信息系统软件以提高企业的竞争力,企业管理信息化已相当普遍,但仍存在着一些问题,主要表现在以下几个方面:(1)系统要素之间缺乏必要的联系,即企业部门管理及资源之间缺乏内在联系,计算机系统没有想成网络,企业的物流、信息流不畅通,信息无法共享;(2)业务流程及管理存在不合理的地方,统计数据无法做到及时准确;(3)系统的可扩展性差,缺乏外部接口,系统无法再网络环境中生存发展。以上问题的存在制约了企业的进一步发展,随着计算机网络技术的进步及客户需求的日益多样化,产业竞争环境越来越激烈,企业经营除了降低成本、提高质量外,更需要以先进的管理理念来整合企业内部与外部环境。如何建立一套适合的信息系统,这是设计者需要解决的问题。因此,开发出一套跨平台的、贴近用户需求的、低成本高性能的、操作简捷的进销存系统才是目前首要的研究方向,具有很强的现实意义。本系统结合行业的进销存制度,对商品、客户、供应商的基本信息,商品的采购、销售及库存盘点信息等进行管理,真正实现了企业的信息化管理。结合管理业务的新需求,应用J2EE组件技术,使用B/S结构,在系统建模中采用S2SH(Struts2+Spring+Hibernate)框架设计,来开发进销存系统,解决了信息孤立给决策管理该来的阻碍。1.3 论文结构全文共分为5章,下面简述各章的主要内容。第1章:绪论。阐述了本课题的项目背景和研究意义,介绍了技术应用的现状以及本文的结构。第2章:相关技术介绍。第3章:系统需求分析和总体设计。本章首先对系统进行需求分析,建立系统用例模型,领域对象建模和具体类细化。然后进行总体设计,建立系统架构设计、说明系统运行环境和系统功能与流程设计。第4章:系统详细设计与实现。本章内容包括数据库逻辑设计、数据库表结构设计、类图建模设计和系统的实现。第5章:系统测试。本章阐述在该系统开发过程中对系统进行测试的方法、过程。2 相关技术JavaEE技术经过多年的发展已经日趋成熟,成为当今企业级应用的最佳解决方案。在JavaEE技术中SSH(Struts2+Spring+Hibernate)是目前最为流行的轻量级整合开发框架,得到了众多软件企业的认可。本系统采用SSH 框架实现了进销存系统。2.1 关键技术通过对当前系统研究现状和设计目标的分析,最后决定本系统主要由以下技术来实现。JDK1.6及其以上版本:该版本是目前最新版本,其新添加了许多以前版本所不具备的新特性,如自动打包解包等功能。Web应用服务器:Tomcat 6.0.33及其以上版本。其功能强大、方便易用,适用于中小型系统的开发。Tomcat可以从网上免费下载,从而降低了开发成本。数据库:MySQL是一个全面的数据库平台。MySQL数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能,使您可以构建和管理用于业务的高可用和高性能的数据应用程序。逻辑层:Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。2.2 系统架构本系统采B/S结构。B/S结构,即Browser/Server(浏览器/服务器)结构,是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户界面完全通过WWW浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端实现,形成所谓3-tier结构。B/S结构利用不断成熟和普及的浏览器技术实现原来需要复杂专用软件才能实现的强大功能,并节约了开发成本,是一种全新的软件系统构造技术。2.3 SSH框架 SSH(Struts2,Spring,Hibernate)Struts进行流程控制,Spring进行业务流转,Hibernate进行数据库操作的封装!Struts2Struts对Model,View和Controller都提供了对应的组件。 分为Struts1和Struts2,区别甚大。Action,这个类通常由用户提供,该控制器负责接收来自ActionServlet的请求,并根据该请求调用模型的业务逻辑方法处理请求,并将处理结果返回给JSP页面显示。Model部分 由ActionForm和JavaBean组成,其中ActionForm用于封装用户的请求参数,封装成ActionForm对象,该对象被ActionServlet转发给Action,Action根据ActionFrom里面的请求参数处理用户的请求。JavaBean则封装了底层的业务逻辑,包括数据库访问等。View部分 该部分采用JSP(或HTML、PHP)实现。Struts提供了丰富的标签库,通过标签库可以减少脚本的使用,自定义的标签库可以实现与Model的有效交互,并增加了现实功能。对应上图的JSP部分。Controller组件 Controller组件有两个部分组成系统核心控制器,业务逻辑控制器。系统核心控制器,对应上图的ActionServlet。该控制器由Struts框架提供,继承HttpServlet类,因此可以配置成标注的Servlet。该控制器负责拦截所有的HTTP请求,然后根据用户请求决定是否要转给业务逻辑控制器。业务逻辑控制器,负责处理用户请求,本身不具备处理能力,而是调用Model来完成处理。对应Action部分。Spring简介Spring是一个开源框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。目的:解决企业应用开发的复杂性功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能范围:任何Java应用简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。轻量从大小与开销两方面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。并且Spring所需的处理开销也是微不足道的。此外,Spring是非侵入式的:典型地,Spring应用中的对象不依赖于Spring的特定类。控制反转Spring通过一种称作控制反转(IoC)的技术促进了松耦合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为IoC与JNDI相反不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。面向切面Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务(transaction)管理)进行内聚性的开发。应用对象只实现它们应该做的完成业务逻辑仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。容器Spring包含并管理应用对象的配置和生命周期,在这个意义上它是一种容器,你可以配置你的每个bean如何被创建基于一个可配置原型(prototype),你的bean可以创建一个单独的实例或者每次需要时都生成一个新的实例以及它们是如何相互关联的。然而,Spring不应该被混同于传统的重量级的EJB容器,它们经常是庞大与笨重的,难以使用。框架Spring可以将简单的组件配置、组合成为复杂的应用。在Spring中,应用对象被声明式地组合,典型地是在一个XML文件里。Spring也提供了很多基础功能(事务管理、持久化框架集成等等),将应用逻辑的开发留给了你。所有Spring的这些特征使你能够编写更干净、更可管理、并且更易于测试的代码。它们也为Spring中的各种模块提供了基础支持。Hibernate简介Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。 Hibernate的核心接口一共有5个,分别为:Session、SessionFactory、Transaction、Query和Configuration。这5个核心接口在任何开发中都会用到。通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。下面对这五个核心接口分别加以介绍。Session接口:Session接口负责执行被持久化对象的CRUD操作(CRUD的任务是完成与数据库的交流,包含了很多常见的SQL语句。但需要注意的是Session对象是非线程安全的。同时,Hibernate的session不同于JSP应用中的HttpSession。这里当使用session这个术语时,其实指的是Hibernate中的session,而以后会将HttpSesion对象称为用户session。 SessionFactory接口:SessionFactory接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象。这里用到了工厂模式。需要注意的是SessionFactory并不是轻量级的,因为一般情况下,一个项目通常只需要一个SessionFactory就够,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory。 Configuration接口:Configuration接口负责配置并启动Hibernate,创建SessionFactory对象。在Hibernate的启动的过程中,Configuration类的实例首先定位映射文档位置、读取配置,然后创建SessionFactory对象。Transaction接口:Transaction接口负责事务相关的操作。它是可选的,开发人员也可以设计编写自己的底层事务处理代码。 3 需求分析和总体设计3.1 需求分析与实体类图3.1.1 客户需求分析本系统分为五个功能模块,分为用户管理模块、采购管理模块、销售管理模块、库存管理模块、基本资料管理模块。(1)用户管理模块是指不同的用户身份进入系统,如:采购人员、销售人员、库存管理人员等。为了方便不同用户登陆后,自己所管理的界面。(2)采购管理模块采购查询、采购入库以及供应商信息的查询。(3)销售管理模块销售查询和提货登记。(4)库存管理模块库存的查询、添加删除以及库存的报表(5) 基本资料管理模块职工信息、商品信息等进行管理。3.1.2 需求补充说明本课题就是研究如何利用JavaScript技术以及相关数据库技术来实现蔬菜基地管理系统。对应的知识点:应用软件开发的理论;运用MySQL数据库、JavaScript语言等技术库存管理的系统,注重软件的各个模块之间的联系。本课题难点在SSH框架的构建,MySQL数据库的应用,模块之间,要理清楚它们之间的联系等。本系统分为五个子模块,分为用户管理模块、采购管理模块、销售管理模块、库存管理模块、基本资料管理模块。用户管理模块是指不同的用户身份进入系统,如:采购人员、销售人员、库存管理人员等。采购管理模块包括采购查询、采购入库以及供应商信息的查询,销售管理模块包括了销售查询库存管理模块包括库存的查询、添加删除以及库存的报表,基本资料管理模块就是对职工信息、商品信息等进行管理。3.1.3 实体类图(1) 第1层实体类图,用户登录类图,如图3-1所示。 图3-1 系统登录类图(2) 第2层实体类图。 添加和删除供应商信息类图,如图3-2、图3-3所示。 图3-2 添加供应商信息 图3-3 删除供应商信息 添加和删除商品类图,如图3-4、3-5所示。 图3-4 添加商品类图图3-5 删除商品类图 添加订单类图,如图3-6所示。图3-6 添加订单类图 查询库存信息类图,如图3-7所示。图3-7 查询库存信息 修改密码类图,如图3-8所示。图3-8 更改密码添加用户类图,如图3-9所示。图3-9 添加用户3.2 总体设计3.2.1系统运行环境 硬件配置:1.7G以上处理器,128M以上内存,2G以上硬盘空间 操作系统:Windows XP、Windows 7或更高版本 数据库:MySQL Web服务器:Tomcat 6.0.33 JDK:1.6.0 S2SH:Struts-、Spring2.0、Hibernate3.1 开发工具:StarUML,Dreamweaver 8,MyEclipse 10/MyEclipse 83.2.2 时序图建模“增加采购订单”事件流过程,如图3-10所示。 图3-10 采购事件流 “增加销售订单”事件流过程,如图3-11所示。 图 3-11 销售事件流“修改采购订单”事件流过程,如图3-12所示。 图3-12 修改采购订单事件流“修改销售订单”事件流过程,如图3-13所示。图 3-13 修改销售订单事件流3.2.3系统功能及流程设计本系统分为五个功能模块,分为用户管理模块、采购管理模块、销售管理模块、库存管理模块、基本资料管理模块。(1)用户管理模块 是指不同的用户身份进入系统,如:采购人员、销售人员、库存管理人员等。为了方便不同用户登陆后,自己所管理的界面。(2)采购管理模块 采购查询、采购入库以及供应商信息的查询。(3)销售管理模块销售查询和提货登记。(4)库存管理模块库存的查询、添加删除以及库存的报表(5)基本资料管理模块 对职工信息、商品信息等进行管理。 系统主界面功能模块如图3-14所示:用户管理模块进销存管理系统采购入库管理模块销售信息管理模块库存信息统计模块基本资料管理模块 图3-14 系统主界面功能模块4 系统的详细设计与实现4.1数据库表结构设计我们知道,数据库概念模型独立于任何特定的数据库管理系统,因此,需要根据具体使用的数据库管理系统的特点进行转换。即转化为按计算机观点处理的逻辑关系模型,E-R模型向关系数据库模型转换应遵循下列原则:A.每一个实体要转换成一个关系。B.所有的主键必须定义非空(NOT NULL)。C.对于二元联系应按照一对多、弱对实、一对一、多对多等联系来定义外键。根据E-R模型,电脑进销存管理系统建立了以下逻辑数据结构,下面是各数据表的详细说明。(1) 商品信息表主要是记录了进销存的基本信息,表结构如表4.1所示。表4.1商品信息表(t_goods)列名数据类型长度允许空是否主键说明bianhaoInt4 否 是编号mingchengvarchar50 否 否商品名称beizhuvarchar50 否 否备注信息(2)供应商管理表主要是记录了供应商的基本信息,表结构如表4.2所示。表4.2供应商管理表(t_gongyingshang)列名数据类型长度允许空是否主键说明 idInt4否是编号mingchengvarchar50 否 否单位名称dizhivarchar50 否 否单位地址lianxirenvarchar50 否 否联系人dianhuavarchar50 否 否联系电话youbianvarchar50 否 否邮编chuanzhenvarchar50 否 否传真youxiangvarchar50 否 否邮箱(3)入库信息表主要是记录进销存的入库的基本信息,表结构如表4.3所示。表4.3入库信息表(t_ruku)列名数据类型长度允许空是否主键说明idInt4否是编号 goods_idvarchar4否否单据号 rukushuvarchar10否否入库数 rukushivarcharDate否否入库时间 beizhuvarchar500否否备注信息(4)出库信息表主要是记录进销存的出库的基本信息,表结构如表4.4所示。表4.4出库信息表(t_xiaoshou)列名数据类型长度允许空是否主键说明idInt4否是编号goods_idvarchar4否否单据号danjiavarchar50否否单价zongjiagevarchar50否否总价格xiaoshoushivarcharDate否否出库时间beizhuvarchar500否否备注信息(5)管理员信息表主要记录的管理员的账号信息,包括用户名和密码,表结构如表4.5所示。表4.5管理员信息表(t_renyuan)列名数据类型长度允许空是否主键说明idint4否是编号xingmingvarchar50否否用户名xingbievarchar4否否性别nianlingvarchar4否否年龄xuelivarchar8否否学历zhiweivarchar10否否职位loginnamevarchar50否否账号loginpwvarchar50否否密码4.2类图设计4.2.1进销存管理系统流程图如图4-1所示:进销存管理系统库存管理用户管理基本资料销售管理采购管理创建进货单创建商品信息管理供应商密码修改用户登录创建用户商品名称查询商品信息一览商品编号查询管理商品信息创建销售单删除销售单修改销售信息删除进货单修改进货单 图4-1 进销存管理系统流程图4.2.2库存管理子系统的对象类图如图4-2所示: 图4-2 库存管理子系统的对象类图4.3系统的实现系统针对进销存系统的特点对其进行了架构设计,由于J2EE三大框架SSH框架很适合本系统的结构,因此将此系统设计成基于S2SH框架的进销存系统。MVC是一种分层架构的思想,采用这种分层思想可以降低各层次之间的耦合性,提高代码的灵活性 M(Model),即为模型层,指的是Java代码中数据的模型以及对数据的处理 V(View),即为视图层,指的是为用户提供的界面,通常我们使用JSP/html实现 C(Control),即为控制层,用来完成视图层和模型层之间的数据交互以及数据流程的控制。(1) 反射:通过“包名.类名”的字符串能够完成类的加载、对象的实例化以及方法的调用(2) 动态代理:在不改变原有代码流程的前提下,实现对业务逻辑的干预 JDK动态代理:只能够代理实现了接口的类,因为JDK动态代理就是通过产生父接口对象来代理实现类的对象(3) XML解析: DOM:DocumentBuilderFactory、DocumentBuilder SAX、SAXReader Hibernate(ORM:来完成Java代码到数据的映射以及数据的持久化工作) (4)框架的使用: 添加JAR:hinernate3.jar/Lib文件夹下的jar包/对应数据库的驱动jar包; 创建核心配置文件hibernate.cfg.xml并进行配置;创建HibernateSessionFactory、ExportTables;创建POJO类;创建映射文件Pojo.hbm.xml;将映射文件添加到核心配置文件中(1)对数据的增删查改:session.save(pojo); session.delete(pojo);session.update(pojo); session.saveOrUpdate(pojo);session.get(Pojo.class,id); session.load(Pojo.class,id); Query(HQL):list()-可以支持分页 Crit(模糊查询) (2)事务:在不使用Spring框架完成事务管理的情况下,我们需要手动对事务进行管理 (3)映射关系:多对一/一对多/一对一/多对多/继承映射(4)延迟加载(5)悲观锁和乐观锁(6)缓存机制 (7)Pojo的三种状态:瞬态、持久态、游离态 Struts2(MVC)框架: (1)框架的使用 添加jar包:9个 创建核心配置文件struts.xml 在web.xml中对Struts2的过滤器进行配置 创建action 在struts.xml中对action进行配置 Spring: Spring的核心思想:IoC和AOPIoC:通过Spring的配置获取对象,并且给对象的属性赋值。 AOP:AOP的含义,连接点,切入点,切点,切面,织入 配置:bean的配置,aop的配置 Spring对Struts2的支持:通过Spring的MVC完成本应由Struts2完成的请求拦截与封装在struts.xml中对“对象工厂”的配置Spring对Hibernate的支持:帮助创建sessionFactory对象,完成事务管理在applicationContext.xml中sessionFactory配置和事务管理的配置根据前面的需求分析和设计,通过对各种解决方案的比较,系统选择采用三层B/S架构,前台用户显示层使用JSP和Servlet在浏览器上实现,中间使用JavaBean组建实现业务逻辑,后台数据库使用MySQL数据库,具体的系统结构如图4-4所示。 图4-4 系统架构(1)表示层:主要使用Struts2的表现层的标签,使用表现层标签便于简单表现层逻辑。(2)中间层:Web层:就是MVC模式的controller,负责表现层与业务逻辑层的交互,调用业务逻辑层,并将结果返回到表现层。MVC框架采用Struts2。DAO层:负责与持久化对象交互,封装了数据的增加、删除、查询、修改操作。数据后台是使用MySQL数据库存放数据。持久层实现:持久层使用DAO模式进行数据访问。DAO是Date Access Object 数据访问接口,顾名思义是与数据库打交道用的。夹在业务逻辑与数据库资源中间。DAO功能:在涉及数据库操作,以前一般使用jdbc,使用这种方法会出现代码和html标签同时使用,维护很困难;且JSP文件中不应该出现sql包,jsp文件侧重于显示界面;所有数据库操作使用Hibernate。好处在于避免sql注入攻击。业务逻辑层实现:业务逻辑层是整个应用的核心,接受表现层的用户请求,控制着应用逻辑的流程,并通过持久层来完成数据的存取操作。表现层实现:表现层主要负责与用户交互,处理用户的请求和将处理结果响应给用户。在实际应用中,在Web表示层使用Struts框架,它很好的实现了MVC设计模式,前端控制器负责过滤盒分发用户请求,并执行拦截器功能和Action,根据Result返回结果使用Struts2标签和表现技术将结果呈现给用户。4.4系统功能模块的实现4.4.1.系统登录模块的实现详细设计:用户可以在登录界面中输入用户名和密码进行登录,如果用户名或密码不正确则弹出提示信息。用户录入用户名和密码并点击登录后,系统将前台form表单的数据传到后台的LoginAction的login方法中,并通过emp_find方法从数据库中的employee表进行检索,判断用户存在,若返回值不为空,则说明该用户存在可以登录,若为空值则该用户不能登录。如图4-5所示。图4-5系统登录界面关键代码:用于验证用户名及密码。function ccc() if(document.ThisForm.userName.value = =) alert(请输入用户名);document.ThisForm.userName.focus();return false; if(document.ThisForm.userPw.value = =) alert(请输入密码);document.ThisForm.userPw.focus();return false; loginService.login(document.ThisForm.userName.value,document.ThisForm.userPw. value,document.ThisForm.userType.value,callback);function callback(data) if(data = =no) alert(用户名或密码错误); if(data = =yes) alert(Welcome!); Window.location.href = /admin/index.jsp; function qing() document.ThisForm.userName.value=; document.ThisForm.userPw.value=;4.4.2.销售信息管理模块的实现详细设计:将商品进行销售单录入,系统会提示要销售商品的参考价格和库存数量。前台向后台提交表单后则将当前信息提交给后台SellAction的add()方法处理,action将所获取的信息分别添加到数据库sell和sellDetail两个表中,最后返回到销售信息管理列表,销售信息管理列表可对销售销信息进行删除和查看。具体界面如图4-6示。图4-6销售订单管理界面关键代码:用于销售库存蔬菜,当无库存时关闭该类蔬菜的销售选项,当销售额度超过库存量时提示库存不足。public class xiaoshouAction extends ActionSupportprivate TGoodsDAO goodsDAO;private TXiaoshouDAO xiaoshouDAO;private TRukuDAO rukuDAO;private String message;private String path;public String xiaoshouAdd()HttpServletRequest req = ServletActionContext.getRequest();int goods_id = Integer.parseInt(req.getParameter(goods_id);int xiaoshoushu = Integer.parseInt (req.getParameter (xiaoshoushu);double danjia = Float.parseFloat (req.getParameter (danjia);double zongjia = danjia * xiaoshoushu;String xiaoshoushi = req.getParameter(xiaoshoushi);String beizhu = req.getParameter(beizhu);int rukuShu = get_rukuShu (goods_id);If (xiaoshoushu rukuShu)req.setAttribute (msg, 库存不足);return msg;elseTXiaoshou xiaoshou = new TXiaoshou(); xiaoshou.setGoods_id (goods_id); xiaoshou.setXiaoshoushu (xiaoshoushu); xiaoshou.setDanjia (danjia); xiaoshou.setZongjia (zongjia); xiaoshou.setXiaoshoushi (xiaoshoushi); xiaoshou.setBeizhu (beizhu); xiaoshouDAO.save (xiaoshou); this.setMessage (操作成功); this.setPath (xiaoshouMana.action); return succeed;public String xiaoshouMana()HttpServletRequest req = ServletActionContext.getRequest();String sql = from TXiaoshou;List xiaoshouList = xiaoshouDAO.getHibernateTemplate().find(sql);For (int i=0; xiaoshouList.size(); i+)TXiaoshou xiaoshou = (TXiaoshou)xiaoshouList.get(i);xiaoshou.setGoods (goodsDAO.findById (xiaoshou.getGoods_id();req.setAttribute (xiaoshouList, xiaoshouList);return ActionSupport.S

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论