Bootstrap

【java毕业设计】基于javaEE+SSH+SqlServer的商品供应管理系统设计与实现(毕业论文+程序源码)——商品供应管理系统

基于javaEE+SSH+SqlServer的商品供应管理系统设计与实现(毕业论文+程序源码)

大家好,今天给大家介绍基于javaEE+SSH+SqlServer的商品供应管理系统设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦。需要下载开题报告PPT模板及论文答辩PPT模板等的小伙伴,可以进入我的博客主页查看左侧最下面栏目中的自助下载方法哦

文章目录:

1、项目简介

  1. 物资采购管理系统是针对内部而设计的,应用于的局域网,这样可以使得内部管理更有效的联系起来。企业采购管理系统是将IT技术用于企业采购信息的管理, 它能够收集与存储企业采购的档案信息,提供更新与检索企业采购信息档案的接口;提高工作效率。

  2. 系统采用Java为编程语言。论文主要介绍了本课题的开发背景,所要完成的功能和开发的过程。重点的说明了系统设计的重点、设计思想、难点技术和解决方案。

  3. javaEE采购管理系统
    本系统是一个独立的系统,用来解决企业采购信息的管理问题。采用JSP技术构建了一个
    有效而且实用的企业采购信息管理平台,目的是为高效地完成对企业采购信息的管理。经过
    对课题的深入分析,采购系统需实现以下功能模块:
    各个模块实现的功能如下:
    1.用户登录
    对用户输入的用户名和密码进行匹配,只有合法的用户可以登录成功,进入主界面,
    进行操作。是系统安全性的第一层保护层。
    不同角色的用户登录(比如普通用户和超级管理员)的操作页面不一样。
    2.供应商管理
    灵活管理供货商,及时添加及修改供货商信息,为采购计划的制定提供保障。
    3.材料管理
    对材料进行管理,管理材料种类及库存,及时了解材料的库存信息,有助于做出正确
    的采购选择。
    4.订单管理
    系统设计了多种订单。不同权限的操作员只能对其拥有权限操作的订单进行操作。
    5.信息查询
    根据关键字快速检索信息。


2、资源详情

项目难度:中等难度
适用场景:相关题目的毕业设计
配套论文字数:27055个字127页
包含内容:整套源码+完整毕业论文+答辩PPT+任务书+辅导视频+运行截图


3、关键词:

企业采购;管理;系统;开发;JAVA ;javaEE;SSH

4、毕设简介:

提示:以下为毕业设计的简略介绍,项目源码及完整毕业论文下载地址见文末。

第一章 引言
1.1研究现状
省略

通过对企业采购管理系统进行深入分析和研究,本文从功能模块、数据格式、通用性三个方面进行细化,提出企业采购管理系统设计的理论依据和实现的方法。设计系统的数据层、逻辑层、界面层,重点体现数据格式的规范,也为通用性的实施提供保障。最后在系统开发环节,从技术层面实现代码的可重用性及系统的通用性,从而使系统的设计更具实用性和通用性。总之我觉得现在逐渐发展起来的信息系统可以让企业采购管理变得非常灵活,每一种角色都有自己的权限,保证了信息的安全性以及操作简易性。因此,基于MVC 的企业采购管理系统将会是以后的趋势。所以我通过开发完成一个小型企业采购管理系统,以便能更好的衔接。

1.2主要研究的目的及内容
省略

本课题的目的是使企业采购信息管理清晰化,透明化,便于操作,易于管理。通过功能模块的优化组合实现不同的管理细节,使管理过程实现最大程度的自动化与信息化,并能自动对人工操作环节进行复查,使企业采购管理系统出错率降至最低。在传统的企业采购信息管理中,各种管理工作往往是很复杂烦琐的。企业采购信息管理的特点是信息处理量比较大,所管理的种类比较繁多,而且由于消费、缴费等单据发生量特别大,关联信息多,查询和统计的方式不尽相同。在管理过程中经常会出现信息的重复传递,因此企业采购信息管理必须实现计算机化处理。我们系统开发的总体任务是实现企业采购信息管理的系统化、规范化、自动化、信息化与智能化,从而达到提高企业采购信息管理效率的目的。

1.3研究方法及设计思路
1.3.1 研究方法
企业采购信息管理是信息行业业务流程过程中十分重要且必备的环节之一,在信息行业业务流程当中起着承上启下的作用,其重要性不言而喻。但是,目前许多信息行业在具体的业务流程处理过程中仍然使用手工操作的方式来实施,不仅费时、费力,效率低下,而且无法达到理想的效果。针对上述问题,采用软件工程的开发原理,依据软件流程过程规范,按照需求分析、概要设计、详细设计、程序编码、测试、软件应用、软件维护等过程开发了一个企业采购管理系统。采用JSP作为开发技术,结合SQL Server2008数据库,数据库设计遵循3范式,解决了企业采购管理系统中存在的数据安全性、数据一致性以及系统运行速度等问题。

1.3.2 设计思路
(1)系统应符合企业采购信息管理的规定,满足信息行业相关人员日常使用的需要,并达到操作过程中的直观,方便,实用,安全等要求;
(2)系统采用模块化程序设计方法,既便于系统功能的各种组合和修改,又便于未参与开发的技术维护人员补充,维护;
(3)系统应具备数据库维护功能,及时根据用户需求进行数据的添加、删除、修改、备份等操作;
(4)尽量采用现有软件环境及先进的管理系统开发方案,从而达到充分利用现有资源,提高系统开发水平和应用效果的目的。

1.4.相关技术简介
1.4.1 JSP技术简介
JSP(JavaServer Pages)是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。它是在传统的网页HTML文件(.htm,.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件(*.jsp)。 用JSP开发的Web应用是跨平台的,即能在Linux下运行,也能在其他操作系统上运行。JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计和显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。 Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序段,然后将执行结果连同JSP文件中的HTML代码一起返回给客户。插入的Java程序段可以操作数据库、重新定向网页等,以实现建立动态网页所需要的功能。 JSP与Java Servlet一样,是在服务器端执行的,通常返回该客户端的就是一个HTML文本,因此客户端只要有浏览器就能浏览。

JSP主要优点如下:
(1)一次编写,到处运行。在这一点上Java比PHP更出色,除了系统之外,代码不用做任何更改。
(2)系统的多平台支持。基本上可以在所有平台上的任意环境中开发,在任意环境中进行系统部署,在任意环境中扩展。相比JSP/PHP的局限性是显而易见的。
(3)强大的可伸缩性。从只有一个小的war文件就可以运行Servlet/JSP,到由多台服务器进行集群和负载均衡,到多台Application进行事务处理,消息处理,一台服务器到无数台服务器,Java显示了一个巨大的生命力。
(4)多样化和功能强大的开发工具支持。这一点与JSP很像,Java已经有了许多非常优秀的开发工具,而且许多可以免费得到,并且其中许多已经可以顺利的运行于多种平台之下。

1.4.2 Struts 框架
Struts是一个为开发基于模型(Model)-视图(View)-控制器(Controller)模式的应用框架的开源框架,是利用Java Servlet和JSP构建Web应用的一项非常有用的技术。事件是指从客户端页面(浏览器)由用户操作触发的事件,Struts使用Action来接受浏览器表单提交的事件,这里使用了Command模式,每个继承Action的子类都必须实现一个方法execute。在struts中,实际是一个表单form对应一个Action(或DispatchAction),换一句话说:在Struts中实际是一个表单只能对应一个事件,struts这种事件方式成为application event,application event和component event相比是一个粗粒度的事件。Struts重要的表单对象ActionForm是一种对象,它代表了一种应用,这个对象中至少包含几个字段,这些字段是Jsp页面表单中的input字段,因为一个表单对应一个事件,所以,当我们需要将时间粒度细化到表单中这些字段时,也就是说,一个字段对应一个事件时,单纯使用struts就不太可能,当然通过结合JavaScript也是可以转弯实现的。Struts是一个基于Sun J2EE平台的MVC框架,主要采用Servlet和JSP技术来实现的。

Struts框架可分为以下四个部分,其中三个就和MVC模式紧密相关:
(1)模型(Model),本质上来说在Struts中Model是一个Action类,开发者通过其实现业务逻辑,同时用户请求通过控制器(Controller)向Action的转发过程是基于由Struts-config.xml文件描述的配置信息的。
(2)视图(View),View是由与控制器Servlet配合工作的一整套JSP定制标签库构成,利用他们我们可以快速建立应用系统的界面。
(3)控制器(Controller),本质上是一个Servlet,将客户端请求转发到相应的Action类。
(4)XML文件解析的工具包,Struts是用XML来描述如何自动产生一些JAVABean的属性的,此外Struts还利用XML来描述国际化应用中的用户提示信息,这样一来就实现了应用系统的多种语言支持。
页面模板技术采用Apache组织的Tiles技术,可实现灵活的页面模板功能。

1.4.3 Hibernate数据访问框架
数据持久层采用Hibernate开源框架,它对JDBC进行了非常轻量级的对象封装,可以使程序员可以使用对象编程思维来操纵数据库。Hibernate是Java平台上的一种全功能的、开发源代码的 OR Mapping框架,支持java的JDO规范,它可以支持当前所有的主流关系型数据库和对象型数据库产品以及XML文件等数据源。与JDO不同,Hibernate完全着眼于关系数据库的OR映射,并且包括比大多数商业产品更多的功能。大多数EJB CMP CMR 解决方案使用程序代码产生持续性程序代码,而JDO使用字节码修饰;与之相反,Hibernate使用反射和执行时字节码产生,使它对于使用者几乎是透明的。

利用此框架可以以面向对象的方式来操作数据,可以容易的实现在各个应用数据库产品之间的移植,而不需要修改系统的大部分代码,同时也能很方便地实现同一个应用程序访问多个数据库的功能。利用此框架不但可以提高开发速度,而且可以使系统的可维护性、可移植性、可重用性提高。

1.4.4 B/S模式分析
B/S模式是一种以Web技术为基础的新型的MIS系统平台模式。把传统C/S模式中的服务器部分分解为一个数据服务器与一个或多个应用服务器(Web服务器),从而构成一个三层结构的客户服务器体系。

省略

B/S模式的新颖与流行,和在某些方面相对于C/S的巨大改进,使B/S成了MIS系统平台的首选。本系统也采用B/S结构开发。

1.5 系统开发步骤
省略

第二章 需求分析及可行性分析
2.1需求分析
省略

企业采购管理系统采用B/S结构、结合网络数据库开发技术来设计本系统。开发语言采用JAVA,数据库使用SQL Server2008数据库。完成以下
基本功能:

本系统是一个独立的系统,用来解决企业采购信息的管理问题。采用JSP技术构建了一个有效而且实用的企业采购信息管理平台,目的是为高效地完成对企业采购信息的管理。

企业采购管理系统具有标准企业采购管理系统所具有的现实中完整的企业采购管理步骤,完全的虚拟现实实现。真正实现节约资源、提高效率、业务处理的同时真正实现企业采购管理系统的功能作用。

2.1.2运行需求分析
硬件系统环境:Core 5600、1G MB(RAM)、120GB(HD)。系统运行时对数据的保密性要求不高对一般的数据不要求进行加密。此外,对其它软件几乎没有依赖性,程序健壮性较好

2.1.3其他需求分析
省略

2.2 可行性分析
2.2.1经济可行性
省略

2.2.2技术可行性
技术可行性要考虑现有的技术条件是否能够顺利完成开发工作,软硬件配置是否满足开发的需求等。企业采购管理系统用的是JSP开发语言,调试相对简单,当前的计算机硬件配置也完全能满足开发的需求,因此在技术上是绝对可行的。软件方面:由于目前B/S模式软件相对发展成熟,Eclipse已发行多个版本,渐趋完善,故软件的开发平台成熟可行,它们速度快、容量大、可靠性能高、价格低,完全能满足系统的需求。

2.2.3 运行可行性
省略

2.2.4时间可行性
省略

2.2.5 法律可行性
① 所有技术资料都为合法。
省略

第三章 系统分析与设计
3.1系统实现目标
采购管理系统是为了实现企业的长远发展目标而实施的一个系统工程,也是一个企业能否取得经济效益的关键它能够为企业的发展提供科学的管理功能,减少管理费用。利用计算机的数据库技术,使得企业的采购、库存和销售能够有利的结合起来,避免和克服人工管理信息时,劳动量大,计算和统计的不准确等种种缺陷和弊端,使企业的管理规范化和自动化,从而对采购管理提供更加科学、准确的数据,实现了采购管理的系统化、规范化和自动化。通过使用采购管理系统能够降低材料采购成本在企业经营中所占的比例,能够提高企业的利润。

省略

3.2 系统设计
3.2.1系统设计
该系统采用B/S体系结构,在客户机上并不安装客户端,而是使用网络浏览器,这样节省一大部分开发、维护和升级报销。本系统不仅要求功能完善,而且还要界面友好,因此,对于一个成功的系统设计,功能模块的设计是关键。

本系统是一个独立的系统,用来解决企业采购信息的管理问题。采用JSP技术构建了一个有效而且实用的企业采购信息管理平台,目的是为高效地完成对企业采购信息的管理。经过对课题的深入分析,采购系统需实现以下功能模块:

各个模块实现的功能如下:

  1. 用户登录
    对用户输入的用户名和密码进行匹配,只有合法的用户可以登录成功,进入主界面,进行操作。是系统安全性的第一层保护层。
  2. 供应商管理
    灵活管理供货商,及时添加及修改供货商信息,为采购计划的制定提供保障。
  3. 材料管理
    对材料进行管理,管理材料种类及库存,及时了解材料的库存信息,有助于做出正确的采购选择。
  4. 订单管理
    系统设计了多种订单。不同权限的操作员只能对其拥有权限操作的订单进行操作。
  5. 信息查询
    根据关键字快速检索信息。

3.3数据库设计
3.3.1数据库概述
省略

本系统是用SQL Server2008作为系统数据库。

3.3.2数据库实现
本系统一共设计五张表,分别是t_order,t_price,t_supplier,t_user,t_product.

t_order表存放订单,t_price表存放付款单,t_supplier表存放供应商,
t_user表存放用户信息,t_product存放材料信息。

t_order(id,ordername,productid,supplierid,num,status,numb,price,allprice,username);

t_price(id,pricename,productid,supplierid,price,status,username,remark,inputdate);

t_supplier(id,suppliername,phone,adrr,mun,username,web,email,remark);

t_user(id,username,password,realname,power,);

t_product(id,productname,num,inputdate,counts,remark);

3.4系统体系结构
在系统功能分析的基础上,系统功能模块图如下图3-1所示:
在这里插入图片描述

系统有四个主要功能,分别是用户登录,基础信息管理,订单管理,采购查询。其中基础信息管理可以对用户信息,材料信息,供应商信息及订单信息进行管理。订单管理功能对订单进行管理,整个系统中,会有7种状态的订单。采购查询,是系统为用户提供的便捷查询方式,根据关键字,即可快速检索出需要查询的信息。

3.5系统流程图
系统流程图如图3-2所示:
在这里插入图片描述

用户输入用户名及密码,系统会进行匹配查询,如果在数据库中,有匹配的用户信息,则可以登录。且系统有4种权限的用户,分别是管理员,审批员,采购员及仓库管理员,不同权限的用户,有不同的操作权限。

采购流程如图3-3所示:
在这里插入图片描述

采购员创建采购单后,提交审批。审批成功后,则开始采购,审批不成功,则重新创建采购单或修改订单,重新提交审批。

退货流程如图3-4所示:
在这里插入图片描述

仓库管理员对入库的物品进行质量检验,对质量不合格的物品申请退货,并提交退货单等待审批。审批成功的退货单,进行退货,审批不成功则重新创建退货单或者修改退货单。对于质量合格的物品,直接确认收货。

3.6系统用例图
管理员用例图如图3-5所示:

在这里插入图片描述

采购员用例图如图3-6所示:
在这里插入图片描述

审批员用例图如图3-7所示:
在这里插入图片描述

仓库管理员用例图如图3-8所示:

在这里插入图片描述

第四章 系统实现
4.1.系统实现
4.1.1 登录模块
对于一个完整的企业采购管理系统,不仅要求功能强大、操作简单,还要有良好的设计风格和另人爽目的界面。登录界面对于整个系统来说是非常重要的,因为它设置了进入本系统的用户和口令,防止非法用户进入系统,破坏系统安全和所保存的数据,只有合法的管理员在输入正确的密码后方可进入系统,否则将提示密码或用户名输入错误,并询问用户是否重新输入。这样就对使用者有了限制,增加了系统的安全性和保密性,便于控制和管理,有利于系统的维护。
登陆界面如图4-1所示:
在这里插入图片描述

当用户没有输入用户名时,系统会弹出这样的提示框,如图4-2所示:
在这里插入图片描述

当用户没有输入密码时,系统会弹出这样的提示框,如图4-3所示:
在这里插入图片描述

当用户名或密码不正确时,会提示信息错误,请重新填写,如图4-4所示:
在这里插入图片描述

登录界面代码实现:

public class LoginAction extends BaseAction{
	private LoginServices loginServices;
	private Integer id;
	private String username;
	private String password;
	private String realname;
	public String checkUser() throws Exception{
		if (!(StringUtils.isEmpty(username)|| StringUtils.isEmpty(password))) {
			TUser user = loginServices.checkUser(username,password);
			if (user!=null) {
				setSessionAttribute("user", user);
				return SUCCESS;
			}
			setRequestAttribute("error", "error");
		}
		return ERROR;
	}
	public String updateUser() throws Exception{
		TUser user = new TUser();
		user.setId(id);
		user.setPassword(password);
		user.setUsername(username);
		user.setRealname(realname);
		loginServices.updateUser(user);
		setSessionAttribute("user", user);
		return "update";
	}
	}	
}
<script type="text/javascript">
function commit() {
	if(form1.username.value=="") {
		alert("请您输入用户名!");
		form1.username.focus();
		return false;
	}
	if(form1.password.value=="") {
		alert("请您输入密码!");
		form1.password.focus();
		return false;
	}
	return true;
}
登录界面设计代码:
</script>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
      <tr>
        <td width="31%" height="35" class="login-text02">帐号&nbsp;&nbsp;&nbsp;<br /></td>
        <td width="69%"><input name="username" id= "username" type="text" size="28" style="width:150px" /></td>
      </tr>
      <tr>
        <td height="35" class="login-text02">密码&nbsp;&nbsp;&nbsp;<br /></td>
        <td><input name="password" id="password" type="password" size="30" style="width:150px"/></td>
      </tr>
      <tr>
        <td height="35">&nbsp;</td>
        <td><input name="Submit2" type="submit" class="right-button02" value="登 录" />
          &nbsp;&nbsp;<input name="reset232" type="reset"" class="right-button02" value="重 置" />
      </tr>      
      <%
      if("error".equals((String)request.getAttribute("error"))){ %>
      	<font color="red">信息错误,请重新填写!</font>
      <%}%>
</table>

4.1.2系统主界面
当使用管理员身份登录的主界面,如图4-5所示:
在这里插入图片描述

图4-5 管理员主界面
当用户身份为管理员时,则拥有系统的最高权限,可以创建四种权限的用户身份。分别是管理员,采购员,审批员及仓库管理员。
当使用普通用户登录时主界面,如图4-6所示:
在这里插入图片描述

普通用户是和管理员相对的用户身份,包括采购员,仓库管理员,审批人员三种,由管理员进行创建。每种身份有对应的操作权限。并且不能越权操作。
采购员:创建原始采购单,提交采购申请,对审批通过的采购订单进行采购。
审批人员:对提交的采购订单及退货单进行审批;
仓库管理员:对到达货物进行质量检验,产品合格则确认收货,产品不合格,则创建退货单,等待审批。

4.1.3用户操作
使用管理员身份登录时,可以查看用户的信息,并对用户进行增、删、改、查操作:
当使用管理员身份时,可以对用户信息进行查看,如图4-7所示:
在这里插入图片描述

当使用管理员身份登录时,可以创建不同权限的用户,如图4-8所示:
在这里插入图片描述

当使用管理员的身份登录时,可以修改用户的信息(但是用户创建之后,用户名是不允许进行修改的),如图4-9所示:
在这里插入图片描述

用户管理代码实现:

public class UserAction extends BaseAction{
	添加:
	public String addUser() throws Exception{
		TUser user = new TUser();
		user.setPassword(password);
		user.setPower(power);
		user.setRealname(realname);
		user.setUsername(username);
		userServices.addUser(user);
		return "addUser";
	}
	public String preupdateUser() throws Exception{
		TUser user = userServices.getUser(id);
		setRequestAttribute("user",user);
		return "preupdateUser";
	}
	修改:
public String updateUser() throws Exception{
		TUser user = userServices.getUser(id);
		user.setPassword(password);
		user.setRealname(realname);
		user.setPower(power);
		userServices.updateUser(user);
		return "updateUser";
	}	
	删除:
	public String delUser() throws Exception{
		userServices.delUser(id);
		return "delUser";
	  }
	}
}

4.1.4供应商管理
供应商管理模块是本系统中一个基础的部分,在本模块中包括对供应商信息的增删改查功能,确保资料的安全。增加了系统的安全性和保密性,便于控制和管理。及时的更新供应商信息,可以帮助企业做正确的采购策略。
查询供应商信息,如图4-10所示:
在这里插入图片描述

添加供应商信息,这里要求要将所有供应商的信息添加完全,详细的展示供应商信息,是企业能够全面了解供应商信息,更好的制定采购计划,如图4-11所示:
在这里插入图片描述

修改供应商信息,可以对供应商信息进行及时的更新,如图4-12所示:
在这里插入图片描述

供应商模块关键代码实现:

public class SupplierAction extends BaseAction{
	添加:
	public String addSupplier() throws Exception{
		TSupplier supplier = new TSupplier();
		supplier.setAdrr(adrr);
		supplier.setPhone(phone);
		supplier.setSuppliername(suppliername);
		supplier.setEmail(email);
		supplier.setNum(num);
		supplier.setRemark(remark);
		supplier.setUsername(username);
		supplier.setWeb(web);
		supplierServices.addSupplier(supplier);
		return "addSupplier";
	}
	public String preupdateSupplier() throws Exception{
		TSupplier supplier = supplierServices.getSupplier(id);
		setRequestAttribute("supplier",supplier);
		return "preupdateSupplier";
	}
	修改:
	public String updateSupplier() throws Exception{
		TSupplier supplier = supplierServices.getSupplier(id);
		supplier.setAdrr(adrr);
		supplier.setPhone(phone);
		supplier.setSuppliername(suppliername);
		supplier.setEmail(email);
		supplier.setNum(num);
		supplier.setRemark(remark);
		supplier.setUsername(username);
		supplier.setWeb(web);
		supplierServices.updateSupplier(supplier);
		return "updateSupplier";
	}	
	删除:
	public String delSupplier() throws Exception{
		supplierServices.delSupplier(id);
		return "delSupplier";
	}
	public SupplierServices getSupplierServices() {
		return supplierServices;
	}
	public void setSupplierServices(SupplierServices supplierServices) {
		this.supplierServices = supplierServices;
	}

4.1.5材料信息管理
本模块主要实现材料信息的增加、删除、修改、浏览等操作。将以前采购过的材料、将要进行采购的材料以及正在考虑采购的材料信息录入系统,便于企业查询和管理。如下图所示:
材料信息查询,如图4-13所示:
在这里插入图片描述

材料信息添加,需要添加材料的名称、编号、出厂日期、数量、以及备注信息,要求必须添加完整。提供重置按钮,点击后,可以重写填写,如图4-14所示:
在这里插入图片描述

对材料信息进行修改,及时更新材料信息,保证所有的信息都是最新状态,如图4-15所示:
在这里插入图片描述

材料模块关键代码实现:

public class ProductAction extends BaseAction{
	添加:
	public String addProduct() throws Exception{
		TProduct product = new TProduct();
		product.setProductname(productname);
		product.setInputdate(inputdate);
		product.setNum(num);
		product.setCounts(counts);
		product.setRemark(remark);
		
		productServices.addProduct(product);
		return "addProduct";
	}	
	public String preupdateProduct() throws Exception{
		TProduct product = productServices.getProduct(id);
		setRequestAttribute("product",product);
		return "preupdateProduct";
	}
	修改:
	public String updateProduct() throws Exception{
		TProduct product = productServices.getProduct(id);
		product.setProductname(productname);
		product.setInputdate(inputdate);
		product.setNum(num);
		product.setCounts(counts);
		product.setRemark(remark);
		productServices.updateProduct(product);
		return "updateProduct";
	}
	 删除:
	public String delProduct() throws Exception{
		productServices.delProduct(id);
		return "delProduct";
	}
	public ProductServices getProductServices() {
		return productServices;
	}
	public void setProductServices(ProductServices productServices) {
		this.productServices = productServices;
	}

4.1.6订单信息管理
本模块主要实现对订单进行操作。系统中共设计了多种状态的订单。分别是新建采购单,审批中的采购单,审批成功的采购单,审批失败的采购单,新建退货单,审批中的退货单,审批成功的退货单,审批失败的退换单,已完成订单。新建的如下图所示:
已完成订单信息查询:
当采购员采购完成之后,由仓库管理员进行质量检验,物品质量合格之后,由采购员确认收货,订单会变为完成状态。

已完成订单,如图4-16所示:
在这里插入图片描述

采购员专区:
采购员根据采购计划创建采购单,等待审批人员进行审批,如图4-17所示:
在这里插入图片描述

审批员专区:由审批员对采购单及退货单进行审批,审批员可以将订单置为两种状态,审批成功和审批失败,且一定要填写审批理由,如图4-18所示:
在这里插入图片描述

仓库管理:
仓库管理员对采购员采购的物品进行质量检验,如果合格则确认收货,如果不合格则申请退货,等待审批人员进行审批,如图4-19所示:
在这里插入图片描述

快捷预览区域:
该区域只提供对订单的预览,不提供操作。包括未完成订单,已完成订单,未付款单,退货单。
未完成订单,包括待付款单,审批失败订单,未审批订单:
未完成订单如图4-20所示:
在这里插入图片描述

未付款订单,采购完成的订单,等待仓库管理员对物品质量进行检验:
待付款订单如图4-21所示:
在这里插入图片描述

退货单,仓库管理员对物品进行质量检验,不合格的产品进行退货申请,由审批人员进行审批,通过审批后的退货单进行退货,完成退货后。退货单可在快捷预览区域的退货单中进行查看。
退货单如图4-22所示:
在这里插入图片描述

订单模块关键代码实现:

public class OrderAction extends BaseAction{
为采购员获取订单数据:
public String purchaseOrder() throws Exception{
	PageInfo pageInfo0 =queryOrderByStatus("('0','3')");
	PageInfo pageInfo2 =queryOrderByStatus("('2')");
	setRequestAttribute("pageinfo0", pageInfo0);
	setRequestAttribute("pageinfo2", pageInfo2);
	setRequestAttribute("searchname", this.searchname);
	return "purchaseOrder";
}
为审批员获得订单:
public String approveListOrder() throws Exception{
	PageInfo pageInfo0 =queryOrderByStatus("('1')");
	PageInfo pageInfo2 =queryOrderByStatus("('6')");
	setRequestAttribute("pageinfo0", pageInfo0);
	setRequestAttribute("pageinfo2", pageInfo2);
	setRequestAttribute("searchname", this.searchname);
	return "approveListOrder";
	}
	public String storeListOrder() throws Exception{
		StringBuffer cond = new StringBuffer();
		if(null!=searchname&&""!=searchname.trim()){
			cond.append(" and a.ordername like '%"+searchname.trim()+"%' ");
		}
		if(null!=getRequestParameter("flag") &&""!=getRequestParameter("flag")){
			setSessionAttribute("flag", getRequestParameter("flag"));
		}
		if(null!=getSessionAttribute("flag") &&""!=(String)getSessionAttribute("flag")){
			cond.append(" and a.status = '"+(String)getSessionAttribute("flag")+"' ");
		}
		int curpage = Integer.parseInt(this.getCurrentpage(ServletActionContext.getRequest()));
		int pageunit = Integer.parseInt(this.getPageunit(ServletActionContext.getRequest(), "querypageunit"));
		String url = "order_storeListOrder?a=a";
		PageInfo pageInfo = this.orderServices.queryOrder(curpage,
				pageunit, ServletActionContext.getRequest(), url, cond.toString());
		setRequestAttribute("pageinfo", pageInfo);
		setRequestAttribute("searchname", this.searchname);
		return "storeListOrder";
	}
public String addOrderForPurchase(){
	try {
		TOrder order = new TOrder();
		order.setNum(num);
		order.setOrdername(ordername);
		order.setStatus("0");
		TProduct product = productServices.getProduct(productid);
		order.setTProduct(product);
		TSupplier supplier = supplierServices.getSupplier(supplierid);
		order.setTSupplier(supplier);
		order.setNumb(numb);
		order.setPrice(price);
		order.setRemark(remark);
		order.setAllprice(allprice);
		order.setUsername(username);
		orderServices.addOrder(order);
	} catch (RuntimeException e) {
		e.printStackTrace();
	}
	return "addOrderForPurchase";
}
public String updateOrderForPurchase() {
	try {
		TOrder order = this.getOrderServices().getOrder(id);
		order.setNum(num);
		order.setOrdername(ordername);
		TProduct product = productServices.getProduct(productid);
		order.setTProduct(product);
		TSupplier supplier = supplierServices.getSupplier(supplierid);
		order.setTSupplier(supplier);
		order.setNumb(numb);
		order.setPrice(price);
		order.setRemark(remark);
		order.setAllprice(allprice);
		order.setUsername(username);
		this.getOrderServices().updateOrder(order);
		
	} catch (RuntimeException e) {
		e.printStackTrace();
	}
	return "updateOrderForPurchase";
}
public String approveOrder() throws Exception{
	TOrder order = this.getOrderServices().getOrder(id);
	order.setStatus("1");
	this.getOrderServices().updateOrder(order);
	return "approveOrder";
}
 采购申请:
public String applyOrder() throws Exception{

	TOrder order = this.getOrderServices().getOrder(id);
	order.setStatus("1");
	this.getOrderServices().updateOrder(order);
	return "applyOrder";
}
 采购:
public String buyOrder() throws Exception{

	TOrder order = this.getOrderServices().getOrder(id);
	order.setStatus("4");
	this.getOrderServices().updateOrder(order);
	return "buyOrder";
}
 合格检查:
public String TestOrder() throws Exception{

	TOrder order = this.getOrderServices().getOrder(id);
	order.setStatus("5");
	this.getOrderServices().updateOrder(order);
	return "TestOrder";
}
 退货检查:
	public String returnOrder() throws Exception{

		TOrder order = this.getOrderServices().getOrder(id);
		order.setStatus("6");
		this.getOrderServices().updateOrder(order);
		return "returnOrder";
	}
 审批:
public String approveOrderForApproveList() throws Exception{

	TOrder order = this.getOrderServices().getOrder(id);
	order.setRemark(remark);
	order.setStatus(status);
	this.getOrderServices().updateOrder(order);
	return "approveOrderForApproveList";
    }
  }
}

4.1.7信息查询
该功能提供对信息的快速查询,分别针对用户信息,供应商信息,材料信息,订单信息设计了不同的关键词检索,提高检索效率:
用户信息查询,根据账号进行查询,如图4-23所示:
在这里插入图片描述

public String queryUser() throws Exception{
	if (getSessionAttribute("querypageunit") == null) {
		setSessionAttribute("querypageunit",this.pageunit);
	}
	StringBuffer cond = new StringBuffer();
	if(null!=searchname&&""!=searchname.trim()){
		cond.append(" and a.username like '%"+searchname.trim()+"%' ");
	}
	//cond.append(" and a.power =1 ");
	int curpage = Integer.parseInt(this.getCurrentpage(ServletActionContext.getRequest()));
	int pageunit = Integer.parseInt(this.getPageunit(ServletActionContext.getRequest(), "querypageunit"));

	String url = "user_queryUser?a=a";
	
	PageInfo pageInfo = this.userServices.queryUser(curpage,
			pageunit, ServletActionContext.getRequest(), url, cond.toString());
	setRequestAttribute("pageinfo", pageInfo);
	setRequestAttribute("searchname", this.searchname);
	return "queryUser";
}

供应商信息查询,根据名称进行查询,如图4-24所示:
在这里插入图片描述

供应商信息查询关键代码实现:

public String querySupplier() throws Exception{
		if (getSessionAttribute("querypageunit") == null) {
			setSessionAttribute("querypageunit",this.pageunit);
		}
		StringBuffer cond = new StringBuffer();
		if(null!=searchname&&""!=searchname.trim()){
			cond.append(" and a.suppliername like '%"+searchname.trim()+"%' ");
		}
		int curpage = Integer.parseInt(this.getCurrentpage(ServletActionContext.getRequest()));
		int pageunit = Integer.parseInt(this.getPageunit(ServletActionContext.getRequest(), "querypageunit"));
		String url = "supplier_querySupplier?a=a";
		PageInfo pageInfo = this.supplierServices.querySupplier(curpage,
				pageunit, ServletActionContext.getRequest(), url, cond.toString());
		setRequestAttribute("pageinfo", pageInfo);
		setRequestAttribute("searchname", this.searchname);
		return "querySupplier";
	}

材料信息查询,根据材料名称进行查询,如图4-25所示:

在这里插入图片描述

材料查询代码实现:

public String queryProduct() throws Exception{
		if (getSessionAttribute("querypageunit") == null) {
			setSessionAttribute("querypageunit",this.pageunit);
		}
		StringBuffer cond = new StringBuffer();
		if(null!=searchname&&""!=searchname.trim()){
			cond.append(" and a.productname like '%"+searchname.trim()+"%' ");}
		int curpage = Integer.parseInt(this.getCurrentpage(ServletActionContext.getRequest()));
		int pageunit = Integer.parseInt(this.getPageunit(ServletActionContext.getRequest(), "querypageunit"));
		String url = "product_queryProduct?a=a";
		PageInfo pageInfo = this.productServices.queryProduct(curpage,
				pageunit, ServletActionContext.getRequest(), url, cond.toString());
		setRequestAttribute("pageinfo", pageInfo);
		setRequestAttribute("searchname", this.searchname);
		return "queryProduct";}

订单信息查询,根据订单名称进行查询,如图4-26所示:
在这里插入图片描述

public String queryOrder() throws Exception{
		if (getSessionAttribute("querypageunit") == null) {
			setSessionAttribute("querypageunit",this.pageunit);
		}
		StringBuffer cond = new StringBuffer();
		if(null!=searchname&&""!=searchname.trim()){
			cond.append(" and a.ordername like '%"+searchname.trim()+"%' ");
		}
		if(null!=getRequestParameter("flag") &&""!=getRequestParameter("flag")){
			setSessionAttribute("flag", getRequestParameter("flag"));
		}
		if(null!=getSessionAttribute("flag") &&""!=(String)getSessionAttribute("flag")){
			cond.append(" and a.status = '"+(String)getSessionAttribute("flag")+"' ");
		}
		int curpage = Integer.parseInt(this.getCurrentpage(ServletActionContext.getRequest()));
		int pageunit = Integer.parseInt(this.getPageunit(ServletActionContext.getRequest(), "querypageunit"));
		String url = "order_queryOrder?a=a";
		PageInfo pageInfo = this.orderServices.queryOrder(curpage,
				pageunit, ServletActionContext.getRequest(), url, cond.toString());
		setRequestAttribute("pageinfo", pageInfo);
		setRequestAttribute("searchname", this.searchname);
		return "queryOrder";
	}

第五章 系统测试
5.1系统调试
5.1.1 程序调试
省略

5.2 程序测试
5.2.1 测试的重要性及目的
省略

5.2.2 测试的步骤
省略

5.2.3 测试的主要内容
省略

本系统测试案例如下:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

只有系统的测试工作在用户的协助下,不断的修改,才能达到完善的预期目标。本企业采购信息管理系统系统经过初步测试,基本上达到目标。

结束语
省略

参考文献
[1]孙卫琴,李洪成.《Tomcat 与 Java Web 开发技术详解》.电子工业出版社,2010年6月:1-205
[2]BruceEckel.《Java编程思想》. 机械工业出版社,2003年10月:1-378
[3]FLANAGAN.《Java技术手册》. 中国电力出版社,2012年6月:1-465
[4]杜轩华 袁方 《Web开发技术》.上海大学出版社, 2005年7月:1-300
[5]LEE ANNE PHILLIPS.《巧学活用HTML4》.电子工业出版社,2004年8月:1-319
[6]任振华 《数据库系统原理》. 光明日报出版社,2010年:30-475
[7]萨师煊,王珊.《数据库系统概论》.高等教育出版社,2008年2月:3-460
[8]Brown等.《JSP编程指南(第二版)》. 电子工业出版社,2013年3月:1-268
[9]清宏计算机工作室.《JSP编程技巧》. 机械工业出版社,2009年5月:1-410
[10]赛奎春.《JSP工程应用与项目实践》. 机械工业出版社,2012年8月:23-294
[11]冯博琴等 《面向对象分析与设计》.机械工业出版社,2005年8月:40-100
[12]张海藩 《软件工程导论》.清华大学出版社,2009年9月:45-90

致 谢
省略

外文原文
省略

中文翻译
省略


5、源码下载:

本项目源码及论文如下,有需要的朋友可以点击进行下载。如果链接失效可点击下方卡片扫码自助下载。

序号毕业设计全套资源(点击下载)
本项目源码基于javaEE+SSH+SqlServer的商品供应管理系统设计与实现(源码+文档)_JAVAEE_SSH_商品供应管理系统
;