版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于Structs框架的甘记订单管理系统设计与实现摘要:随着社会经济的发展,各行各业在进行商品交易过程中会产生大量的订单信息,科学有效地管理订单信息对企业经营至关重要,基于计算机技术的软件系统可以有效地应用于订单管理业务中。因此,本文是基于Structs框架设计并实现了一款甘记订单管理系统,开发工具:MyEclipse,开发语言:java,数据库:MySQL,采用B/S结构的web应用程序(Browser/server)实现系统的各项功能。设计过程采用MVC设计模式,struts框架实现表示层,hibernate实现持久层,spring向上集成struts的MVC框架,向下集成ORM框架,IOC(inversionofcontrol)容器用于管理各个组件之间的依赖关系。最终实现了订单管理系统的登录模块、前台客户端模块和后台管理端模型的各项功能,并能过系统测试验证了系统可以稳定运行,系统各项功能均可正常执行,本文设计的订单管理系统具有一定的实用价值。关键词:订单管理系统,Structs框架,MVC设计模式,JAVA开发
DesignandImplementationofaStrutsFrame-BasedGanjiordermanagementSystemAbstract:\o"清空"Scientificandefficientmanagementoforderinformationisveryimportantforbusinessactivities.procurement.Therefore,thispaperdesignsandimplementsastructuredprocurementmanagementsystem,MyEclipseisusedasadevelopmenttool,Javaisusedasadevelopmentlanguage,MySQLisusedasadatabase,andvarioussystemfunctionsareimplementedbyaWWWapplicationprogrambasedonthestructureB/S(browser/server).Inthedesignprocess,theMVCmodelisadopted,inwhichthestructuralframesareusedtoimplementthepresentationlayer,thehibernationisusedtoimplementthesustainabilitylayer,thespringintegratestheMVCsupportframeupandtheORMframedown,andusestheIOC(InversionOfControl)containertomanagetheinterdependencebetweenthedifferentcomponents.Finally,thefunctionsoftheloginmodule,thefrontclientmoduleandtheordermanagementbackgroundmoduleareimplemented.目录TOC\o"1-3"\h\u第1章绪论 第1章绪论1.1系统开发背景随着经济全球化的飞速发展,公司的业务量的提升,尤其是电商行业,每天都会产生大量的订单信息,通过人工地管理订单信息,显得十分繁琐,而且容易出错,因此基于计算技术、信息技术开发一款智能化,自动化的订单管理系统,提高企业订单管理的科学化、高效化,具有十分重要的意义。客户订单管理系统的主要功能包括了订单信息、商品信息、用户信息以及对业务的规范管理,通过构建系统,可以获得更加标准化和系统的客户订单管理和管理以及更便捷的查询方法。同时,客户订单管理系统对于客户订单管理的现代化和信息化必不可少[1]。近年来,随着客户订单的大小逐渐增加和客户订单的数量增加,程序员手动写入数据无法处理如此庞大的订单交易数据,然而通过订单管理系统可以解决这一问题。由此可以发现,客户订单管理系统旨在管理客户订单管理,以便可以在最短的时间内有效,准确地完成客户订单管理过程[2]。基于上述知识,我收集了相关的材料和数据,参考了相关的文献和技术参数,调查了客户订单管理的实际需求,发现目前正在使用以下管理方法存在很多弊端:(1)类型很多,很难存储数据。填充数据和填充内容非常复杂,并且会迭代大量数据。(2)归档并不容易,并且有很多信息和文档。这需要很多文书工作。由于上述原因,客户订单管理迫切需要软件来代替手动任务来管理数据[3]。随着计算机计算机技术、应用软件的开发越来越成熟,通过订单管理系统,不仅为企业和其用户建立一个良好的下单平台,而且管理员可以在需要解决特定问题时查询信息材料,了解整个客户订单管理系统的动态,能够更加有效地完成任务。1.2系统开发意义利用先进的计算机技术和软件技术的手段进行客户对订单设计和管理信息系统的设计和开发,其目的主要是为了使得客户对订单的管理模式从我们人工的记录转变成我们电子信息系统的管理,为客户对订单设计和管理人员培训提供方便的条件。在结合客户对订单设计和管理的实际工作情况进行了调研之后,结合手上的材料,进行了详细的客户需求设计和分析,然后目标任务就是进一步开发和设计出一套新型的客户订单设计和管理信息系统,并且从中进一步领悟订单管理系统设计和开发的基本思想,还有进一步掌握订单管理系统设计和开发的基本流程和操作方法。随着客户对订单管理信息系统的不断完善,手工的记录已经不能帮助客户解决大量的订单信息量,并且其效率非常低。由此可见,客户对订单的实际管理将越来越多地依赖于客户订单信息化的设计和管理。所以电子信息系统的开发将主要围绕着了解客户对订单设计和管理工作的实际和情况,使之能迅速准确适应我们管理客户订单的实际需要。客户订单管理系统的实施的现实意义:(1)减少客户订单管理的工作人员;开发出一套方便快捷的订单管理系统,可以使所需要工作人员的数量减少。管理人员可以随时更加直观地浏览查看,操作方便。系统改变了以前管理工资需要手工自动记录的那种传统电脑操作管理方式,电脑操作人员进行工资自动录入更加方便快捷。实现了客户订单管理的计算机化。1.3本文内容介绍本文着重研究了Java编程技术,Structs开发框架,Web应用程序开发和数据库设计技术等相关理论,提出并设计了基于structs框架的甘记订单管理系统,论文分别为六个章节,分别如下:第一章为绪论,介绍了本文订单管理系统项目开发的背景、重要性和内容结构。第二章是基本的开发环境和相关技术,MVC设计模式,Structs开发框架,Spring开发框架,Hibernate开发框架和MySQL数据库,它们为本文的项目开发提供了原理和技术支持。第三章为系统设计,主要包括了功能结构设计、数据库设计和WEB应用程序开发框架设计,为本文项目开发实现提供了设计思路。第四章为系统实现,主要介绍了本文设计的甘记订单管理系统的工程目录、登录模块实现、后台管理端模块实现和前台客户端模块的实现,展示了本文系统各项功能的实现效果。第五章通过遵循使用黑匣子测试方法进行的系统测试,测试用例设计和测试用例的步骤来验证本白皮书中开发的汉字订单管理系统的模块和功能。第六章为结束语,对本文项目的开发过程进和地总结,以及对项目的不中和功能完善进行了展望。
第2章基本开发环境和相关技术2.1MVC设计模式MVC框架是软件工程中的软件结构模式的一种。它把系统分成了三个部分,第一部分是模型层,第二部分是视图层,第三部分是控制器层[4]。视图层是用户可以看到并直接与之交互的操作界面,它是程序的外壳。不同的视图通过不同的显示反映模型数据和状态信息,MVC设计模式的结构如图2-1所示。图2-1MVC设计模式结构模型层负责需要操作的数据或信息。它由应用程序的核心数据,逻辑关系和计算功能组成。并封装数据,提供处理问题的操作过程。控制器层用于接收用户输入并通过调用模型和视图来完成用户需求。它是由时间触发的。控制器使用操作平台的界面来获取事件。控制器通过事件处理程序处理输入事件,并为每个输入事件提供操作服务。2.2Structs开发框架Struts这个开发的框架很容易地实现了视图、模型和控制器的MVC设计模式。这个开发的框架也被认为是最早和实际上使用最广泛的一个MVC开发框架[5]。Struts开发框架的其中一个核心处理技术是基于灵活的视图和控制层,如视图的Javaservlet和表示层的Javabeans。Struts由一组类(视图组件)、Servlet和一组带有jsp标记的数据库组成。Struts这个开发框架的访问处理机制主要分为视图、控制器和视图模型三个组成部分。Struts有自己的视图和控制器,并在视图上集成了其他的技术来很容易地实现自己的模型控制层和自己的视图数据层。在模型层,Struts开发框架可以很容易地与视图和数据层的访问处理技术(其中包括视图层的jdbc和wevejb)和视图对象的关系框架桥相结合。在视图和数据层,Struts开发框架结合了层的webejb和表示层的xsl和层的jsp数据访问技术。Structs开发框架的结构:图2-2Structs开发框架结构在Structs开发框架中,视图层由一系列JSP文档组成,这些文档没有业务逻辑代码。我们可以从标签访问模型信息。Struts框架中的ActionFormBean是视图的一部分,封装表单信息并在视图和控制器之间发送。在Structs开发框架中,控制器是由ActionServlet(Struts框架中的中央控制器)和Action类实现。ActionServlet根据配置文件struts-config.xml处理请求并传输到相应的Action组件。动作是用户请求和业务逻辑之间的适配器,负责方法,调用模型和更新模型状态之间的明显指示,并帮助控制应用程序过程。在Structs开发框架里面,这个模型表示应用程序的业务逻辑和状态,负责更新和数据访问。不过,Struts框架中没有用于设计的方法或者组件。在现实的应用程序当中,这些模型是通过JavaBean,EJB或Web服务实现的。2.3Spring开发框架Spring是一个轻量级的框架,旨在通过使用分层结构来解决复杂的企业应用程序[6]。它是一个完整的Java企业应用程序平台,其中包含七个专门定义的模块,如图2-3所示。总体而言,这些模块为开发企业Web应用程序提供了一切。但是开发人员可以根据需要选择将其中一些模块与其他适当的框架一起使用,因为这些模块并不完全相关。图2-3Spring开发框架结构SpringCore模块是BeanFactory作为其核心组件的Spring框架的最基本部分。BeanFactory基于控制反转(IoC)的特性。它使用依赖注入来管理组件之间的关系,而该关系不再由复杂的代码执行,从而改善了系统的松散耦合。此外,Spring还支持面向方面的编程(AOP),它将业务逻辑与系统级服务(如日志记录和事务管理)分开。允许开发人员关注业务逻辑本身。在Spring框架中,可以轻松地在XML文件中配置组件以形成复杂的应用程序。2.4Hibernate开发框架Hibernate是一种完全具有基于dao编程语言设计模式的轻量级开源数据库框架,有利于保留关系数据持久性的基本特点,用于在关系数据库与对象之间直接实现数据映射。它以轻量级的方式封装了现有的jdbc,从而可以使得Java程序员和用户可以直接使用面向对象的持久层编程语言设计思想模式来构建和操作关系数据库。它也是持久层编程语言中的一种有利于实现映射的技术,与jdbc,ejb,jdo等其他持久层编程语言技术设计思想相比,Hinbernate是一种易于理解和掌握并且更好地符合面向对象的持久层编程语言设计思想。Hibernate拥有一种完全面向对象的查询语言(HQL)[7]。如图2-4所示:图2-4Hibernate开发框架结构Hibernate通常被广泛地认为应用程序是连接Java应用程序和关系数据库之间的一个重要桥梁,由于一个应用程序可以提供持久的关系数据服务,并且它允许应用程序开发者可以使用面向对象的数据库方法和工具来进行管理和分析如何处理关系数据库。Hibernate不仅很好地支持从处理Java数据类型表到关系数据库表的查询和映射(其中包括从处理Java数据类型表的映射到处理sql数据类型的映射),而且还很好地提供了面向对象的数据库进行查询和检索的机制,从而大大缩短了用于处理对象的sql和处理jdbc的应用程序开发时间。Hibernate需要创建和处理三种类型的文件,以提供Java的主要文件类别和关系数据库之间的连接和映射。配置文件hibernate.cfg.xml配置文件用于创建和配置关系数据库驱动程序,数据库表之间的连接,数据库表之间的方言和Hibernate的其他文件属性。从一个实体对象文件到类别和关系数据库表的配置映射由一个作为Hiorm配置文件的pojo.hbm.xml配置文件执行。最后一个配置文件是为了提供实体类别和对象表示的持久类。2.5MySQL数据库MySQL数据库是一个关系数据库管理系统,在云服务系统中又被用作软件即服务(Software-as-a-Service,SaaS)。MySQL于1995年发布,现在由OracleCorporation公司提供技术支持。MySQL是用于托管服务提供商(例如Rackspace,GoDaddy,Bluehost和WHM等)的最流行的数据库管理系统。此外,Facebook,Twitter,Yahoo,Wikipedia,YouTube都在使用MySQL。同样,亚马逊网站通过在MySQL的云服务系统中托管数据库来为其客户提供服务。MySQL数据库管理系统在安全性,可靠性,性能和可用性方面具有优势。市场上有许多由云中的服务器支持的数据库管理系统,其中某些只能用于特定目的的私有组织中使用。根据一项调查,在云上最受欢迎的关系数据库管理系统是MySQL,它具有超过一千万的安装,其中最重要的原因就是它具有完全的开源功能,并且可以基于其他软件进行开发,大大降低了开发成本,MySQL以其优越的性能和开源和特点从其他的数据库管理系统中脱颖而出,越来越成为许多网站用户的首选[8]。
第3章系统设计3.1系统功能设计根据这个项目的设计目标以及开发需要,设计系统是各个模块的功能。是系统开发过程中一个重要的流程,本文基于structs框架的甘记订单管理系统的功能主要包括两个方面,一个是客户订单管理系统的前台用户端的功能,一个是订单管理系统的后台管理端的功能,其中前台客户端的功能结构如图3-1所示,主要包括了商品信息浏览模块、我要在线下单模块、我的订单列表模块。图3-1前台客户端功能结构甘记订单管理系统的后台管理端的功能结构如图3-2所示,主要包括个人密码修改功能模块,注册客户管理功能模块,产品类别管理功能模块,产品类别添加功能模块,产品信息管理功能模块,产品信息添加功能模块和订单信息管理功能模块。图3-2后台管理端功能结构3.2系统数据库设计数据库是本文开发的甘记管理系统的主要核心和基本组成部分,数据库设计的质量会直接影响系统的功能实现和用户体验,数据库基本上就是一个系统的主心骨,没有数据库,就没有应用系统。在系统的开发过程中,数据库是一个非常重要的部分。本文主要根据项目开发需求设计了数据库,包括设计数据库概念结构和设计数据库表。3.2.1概念结构的设计根据数据需求分析,数据库的概念结构设计主要包括了实体属性图,实体-联系图模型。其中实体属性图主要包括了管理员实体属性图,客户实体属性图,订单实体属性图,商品实体属性图,商品类别实体属性图。以下是具体图例:图3-3管理员实体属性图图3-4客户实体属性图图3-5订单实体属性图图3-6商品实体属性图图3-7商品类别实体属性图实体连接图由三个组成部分:属性,实体和连接。实体是系统运行中所涉及的具体对象,属性是对对象属性的具体描述,联系是对象之间的相关操作。本文甘记订单管理系统的E-R模型图的设计如图3-8所示。图3-8E-R模型图3.2.2数据库表设计根据本文甘记订单管理系统的业务需求,对于数据库中的表进行了设计。管理信息表,用于存放管理员的相关信息;商品类别信息表,用于描述商品类别的基本信息;商品信息表,用于描述商品的基本信息;订单信息表,用来描述订单的基本信息;客户信息表,用来描述客户的基本信息。表3-1管理信息表字段名类型长度说明idInt4管理员编号(主键)namevarchar30用户名pwdvarchar20用户密码表3-2商品类别信息表字段名类型长度说明idInt4编号(主键)namevarchar20名称jieshaovarchar1000介绍Beizhuvarchar50备注表3-3商品信息表字段名类型长度说明idInt4编号(主键)leib_idInt4类别编号(外键)Mingchengvarchar20名称Chandivarchar20产地Danweivarchar20单位Guigevarchar20规格Beizhuvarchar50备注表3-4订单信息表字段名数据类型长度功能描述idInt4编号(主键)kehu-idInt4客户编号(外键)Good-idInt4商品编号(外键)PriceMoney8价钱TimeDatetime8时间表3-5客户信息表字段名数据类型长度功能描述idInt4编号(主键)namevarchar20登录名AgeInt4年龄truenamevarchar8姓名sexvarchar2性别Liveint4居住地Passwordvarchar30密码Addvarchar20出生地Telvarchar20电话Leixingvarchar20类型3.3WEB应用程序开发框架设计本文设计的甘记订单管理系统开发工具采用的是MyEclipse,开发语言采用的是JAVA,系统各项功能通过基于B/S结构(Browser/Server,浏览器/服务器)的WEB应用程序实现[9],其中Struts框架用于实现表示层,Hibernate用于持久层,而Spring是系统的核心。Spring向上集成了Struts的MVC框架,向下集成了ORM框架,并使用IOC(InversionofControl,控制反转)容器管理各个组件之间的依赖关系。这三种技术的组合开发模式实现了应用系统的五层结构,并构建了Web应用开发框架,如图4-9所示。图4-9WEB应用程序框架结构Struts设计框架在本次的微控制器系统开发测试过程设计中的主要功能作用在一个设计表示层中它实现了MVC的两种设计模式。在这个设计表示层,控制器的所有设计功能和控制操作都可以是由两个控制客户端使用actionmapping和控制客户端使用actionservlet来进行设计和控制实现的。例如当一个面对客户端向一个控制器中的actionservlet用户发出请求时,actionservlet而当请求被用户接受之后,每个面向客户端中的actionmapping将被配置用来自动实现面向控制器收发请求与特定面向控制器请求操作之间的相互映射。然后视图层的转换是由显示在jsp页面的actaglib和视图来实现。组件模型由视图actionform和视图由action来分别实现。action组件对象调用视图业务层提供了逻辑的视图和模块接口并将业务响应信息提交给正确的业务视图和组件。actionform视图组件和对象业务层实现了对于客户端和表单的良好处理和数据库的封装,并在业务视图和组件模型之间相互支持。业务层由基于javabean类的业务层实现,包括了用于客户端和操作系统调用的业务层接口。这些业务层和javabean还分别封装了业务层和Hibernate的关系。视图和业务层转换通过关系数据库业务层转换和持久层转换实现与关系数据库和资源的交互。持久层由Hibernate关系实现。Hibernate将业务层的javabean类视图中的hql视图和语句转换成业务层的sql语句,并通过使用业务层的jdbc驱动程序操作业务层的数据源,从而使业务层完成了添加、删除、修改等的数据转换操作,底层是关系数据库。
第4章甘记订单管理系统实现本文设计的甘记订单管理系统的工程目录如图4-1所示,其中src目录下是系统相关业务逻辑的代码实现,WebRoot目录下是系统相关功能界面的代码实现。图4-1甘记订单管理系统工程目录4.1登录模块实现甘记订单管理系统的登录模块实现界面如图4-2所示,通过登录身份的下接列表可以选择是管理员登陆或者用户登录,然后正确输入用户名和密码就可以登录到系统。系统登录模块相关代码在下面(代码4-1)图4-2系统登录模块界面代码4-1系统登录模块代码publicclassloginService{ publicStringlogin(StringuserName,StringuserPw,intuserType) { System.out.println("userType"+userType); try { Thread.sleep(700); }catch(InterruptedExceptione) { //TODOAuto-generatedcatchblock e.printStackTrace(); } Stringresult="no"; if(userType==0)//系统管理员登陆 { Stringsql="select*fromt_adminwhereuserName=?anduserPw=?"; Object[]params={userName,userPw}; DBmydb=newDB(); mydb.doPstm(sql,params); try { ResultSetrs=mydb.getRs(); booleanmark=(rs==null||!rs.next()?false:true); if(mark==false) { result="no"; } else { result="yes"; TAdminadmin=newTAdmin(); admin.setUserId(rs.getInt("userId")); admin.setUserName(rs.getString("userName")); admin.setUserPw(rs.getString("userPw")); WebContextctx=WebContextFactory.get(); HttpSessionsession=ctx.getSession(); session.setAttribute("userType",0); session.setAttribute("admin",admin); } rs.close(); } catch(SQLExceptione) { System.out.println("登录失败!"); e.printStackTrace(); } finally { mydb.closed(); } } if(userType==1) { Stringsql="select*fromt_userwheredel='no'andloginname=?andloginpw=?"; Object[]params={userName,userPw}; DBmydb=newDB(); try { mydb.doPstm(sql,params); ResultSetrs=mydb.getRs(); booleanmark=(rs==null||!rs.next()?false:true); if(mark==false) { result="no"; } if(mark==true) { Tuseruser=newTuser(); user.setId(rs.getString("id")); user.setLoginname(rs.getString("loginname")); user.setLoginpw(rs.getString("loginpw")); user.setLoginpw(rs.getString("loginpw")); user.setName(rs.getString("name")); user.setSex(rs.getString("sex")); user.setAge(rs.getString("age")); user.setAddress(rs.getString("address")); user.setTel(rs.getString("tel")); user.setEmail(rs.getString("email")); user.setQq(rs.getString("qq")); result="yes"; WebContextctx=WebContextFactory.get(); HttpSessionsession=ctx.getSession(); session.setAttribute("userType",1); session.setAttribute("user",user); } rs.close(); } catch(Exceptione) { e.printStackTrace(); } mydb.closed(); } if(userType==2) { } returnresult; }如果是新用户,可以点击客户注册进行注册一个用户账户,注册界面如图4-3所示,在用户注册界面中填入用户名,密码,真实姓名,性别,年龄,住址,联系方式,E-mail和QQ相关信息后,点击确定就可以成功注册一个用户账户。用户注册功能主要代码实现在下面(代码4-2)。图4-3用户注册界面代码4-2用户注册代码publicvoiduserReg(HttpServletRequestreq,HttpServletResponseres) { Stringid=String.valueOf(newDate().getTime()); Stringloginname=req.getParameter("loginname"); Stringloginpw=req.getParameter("loginpw"); Stringname=req.getParameter("name"); Stringsex=req.getParameter("sex"); Stringage=req.getParameter("age"); Stringaddress=req.getParameter("address"); Stringtel=req.getParameter("tel"); Stringemail=req.getParameter("email"); Stringqq=req.getParameter("qq"); Stringdel="no"; Stringsql="insertintot_uservalues(?,?,?,?,?,?,?,?,?,?,?)"; Object[]params={id,loginname,loginpw,name,sex,age,address,tel,email,qq,del}; DBmydb=newDB(); mydb.doPstm(sql,params); mydb.closed(); req.setAttribute("message","注册成功");StringtargetURL="/common/add_success.jsp"; dispatch(targetURL,req,res); }4.2后台管理端模块实现管理员登录系统后会进入到后台管理模块,如图4-4所示,功能菜单具有7个功能模块:(1)修改个人密码功能模块管理注册客户功能模块商品类别管理功能模块商品类别添加功能模块商品信息管理功能模块商品信息添加功能模块订单信息管理功能模块PS:另外还显示当前系统时间,通过点击注销系统按钮可以退出系统。图4-4后台管理端模块主界面点击功能菜单栏中的修改个人密码,进入修改个人密码的界面,管理员可以修改自己的密码,这里会显示当前登录的管理员账户名,然后输入原密码和新密码点击修改按钮,就可以成功修改管理员账户密码。管理员修改密码功能实现代码在下面(代码4-3)图4-5修改个人密码界面代码4-3管理员修改密码代码publicStringadminPwEdit(StringuserPwNew){ System.out.println("DDDD"); try { Thread.sleep(700); } catch(InterruptedExceptione) { //TODOAuto-generatedcatchblock e.printStackTrace(); } WebContextctx=WebContextFactory.get(); HttpSessionsession=ctx.getSession(); TAdminadmin=(TAdmin)session.getAttribute("admin"); Stringsql="updatet_adminsetuserPw=?whereuserId=?"; Object[]params={userPwNew,admin.getUserId()}; DBmydb=newDB(); mydb.doPstm(sql,params); return"yes";}我们点击功能菜单栏里面的客户注册按钮,就可以进入到客户管理界面,如图4-6所示,在这里显示了已经成功在该系统中注册客户的信息,包括登录账号、密码、姓名、性别、年龄、住址、联系方式、E-mail和QQ。在操作栏中,管理员可以点击删除按钮来删除该注册客户的账号(不要乱删除别人..)。注册用户管理功能相关代码在下面.(代码4-4)图4-6注册客户管理界面代码4-4注册客户管理功能代码publicvoiduserMana(HttpServletRequestreq,HttpServletResponseres)throwsServletException,IOException { ListuserList=newArrayList(); Stringsql="select*fromt_userwheredel='no'"; Object[]params={}; DBmydb=newDB(); try { mydb.doPstm(sql,params); ResultSetrs=mydb.getRs(); while(rs.next()) { Tuseruser=newTuser(); user.setId(rs.getString("id")); user.setLoginname(rs.getString("loginname")); user.setLoginpw(rs.getString("loginpw")); user.setLoginpw(rs.getString("loginpw")); user.setName(rs.getString("name")); user.setSex(rs.getString("sex")); user.setAge(rs.getString("age")); user.setAddress(rs.getString("address")); user.setTel(rs.getString("tel")); user.setEmail(rs.getString("email")); user.setQq(rs.getString("qq")); userList.add(user); } rs.close(); } catch(Exceptione) { e.printStackTrace(); } mydb.closed(); req.setAttribute("userList",userList); req.getRequestDispatcher("admin/user/userMana.jsp").forward(req,res); }点击功能菜单栏里面的商品类别管理按钮,管理员就可以进入到商品类别管理界面,跳转成功后会显示系统中的商品类别信息,主要包括了商品的名称和介绍,在操作栏中点击删除按钮就可以删除啦。商品类别管理功能实现代码在下面(代码4-5)。图4-7商品类别管理界面代码4-5商品类别管理代码publicvoidcatelogMana(HttpServletRequestreq,HttpServletResponseres)throwsServletException,IOException { ListcatelogList=newArrayList(); Stringsql="select*fromt_catelogwheredel='no'"; Object[]params={}; DBmydb=newDB(); try { mydb.doPstm(sql,params); ResultSetrs=mydb.getRs(); while(rs.next()) { Tcatelogcatelog=newTcatelog(); catelog.setId(rs.getInt("id")); catelog.setName(rs.getString("name")); catelog.setJieshao(rs.getString("jieshao")); catelogList.add(catelog); } rs.close(); } catch(Exceptione) { e.printStackTrace(); } mydb.closed(); req.setAttribute("catelogList",catelogList); req.getRequestDispatcher("admin/catelog/catelogMana.jsp").forward(req,res); }管理员点击“产品类别管理”界面中的“添加”按钮,或在功能菜单栏上单击“添加产品类别”,进入“添加产品类别”界面,输入商品的名称和介绍,然后点击“提交”按钮,就会添加成功了。商品类别添加功能代码在下面(代码4-6)。图4-8商品类别添加界面代码4-6商品类别添加功能代码publicvoidcatelogAdd(HttpServletRequestreq,HttpServletResponseres) { Stringname=req.getParameter("name"); Stringjieshao=req.getParameter("jieshao"); Stringdel="no"; Stringsql="insertintot_catelogvalues(?,?,?)"; Object[]params={name,jieshao,del}; DBmydb=newDB(); mydb.doPstm(sql,params); mydb.closed(); req.setAttribute("message","操作成功"); req.setAttribute("path","catelog?type=catelogMana"); StringtargetURL="/common/success.jsp"; dispatch(targetURL,req,res); }在功能菜单中点击商品信息管理按钮,就可以进入到商品信息管理界面,界面会显示商品的相关信息,主要包括类别、名称、产地、单位、规格、备注,在操作栏中,我们管理员也可以通过点击删除按钮删除相应的商品。商品信息管理功能实现代码在下面(代码4-7)。图4-9商品信息管理界面代码4-7商品信息管理功能代码publicvoidgoodsMana(HttpServletRequestreq,HttpServletResponseres)throwsServletException,IOException { ListgoodsList=newArrayList(); Stringsql="select*fromt_goodswheredel='no'orderbycatelog_id"; Object[]params={}; DBmydb=newDB(); try { mydb.doPstm(sql,params); ResultSetrs=mydb.getRs(); while(rs.next()) { Tgoodsgoods=newTgoods(); goods.setId(rs.getInt("id")); goods.setCatelog_id(rs.getInt("catelog_id")); goods.setName(rs.getString("name")); goods.setBeizhu(rs.getString("beizhu")); goods.setChandi(rs.getString("chandi")); goods.setDanwei(rs.getString("danwei")); goods.setGuige(rs.getString("guige")); goods.setCatelog_name(liuService.getCatelogName(rs.getInt("catelog_id"))); goodsList.add(goods); } rs.close(); } catch(Exceptione) { e.printStackTrace(); } mydb.closed(); req.setAttribute("goodsList",goodsList); req.getRequestDispatcher("admin/goods/goodsMana.jsp").forward(req,res); } 单击商品信息管理按钮,就会进入“添加产品信息”界面。然后管理员选择要添加到类别的商品类别,然后输入商品的名称,产地,单位,规格,备注等信息后,点击“提交”按钮,商品的信息就会成功添加到系统啦,填错了可按重置按钮重置。商品信息添加代码功能实现在下面(代码4-8)。图4-10商品信息添加界面代码4-8商品信息添加功能代码publicvoidgoodsAdd(HttpServletRequestreq,HttpServletResponseres) { intcatelog_id=Integer.parseInt(req.getParameter("catelog_id")); Stringname=req.getParameter("name"); Stringchandi=req.getParameter("chandi"); Stringdanwei=req.getParameter("danwei"); Stringguige=req.getParameter("guige"); Stringbeizhu=req.getParameter("beizhu"); Stringdel="no"; Stringsql="insertintot_goodsvalues(?,?,?,?,?,?,?)"; Object[]params={catelog_id,name,chandi,danwei,guige,beizhu,del}; DBmydb=newDB(); mydb.doPstm(sql,params); mydb.closed(); req.setAttribute("message","操作成功"); req.setAttribute("path","goods?type=goodsMana"); StringtargetURL="/common/success.jsp"; dispatch(targetURL,req,res);管理员在功能菜单里面点击订单信息管理按钮,就可以进入订单信息管理界面,然后会显示订单相关信息,包括订单编号,订单时间,备注信息和订单状态,在状态栏中可以看到订单的状态,在客户栏中点击客户信息就可以查看订单的客户的信息,在订单明细栏中点击订单明细可以查看订单明细,点击删除按钮可以删除相关订单。订单信息管理代码功能实现在下面(代码4-9)图4-11订单信息管理界面代码4-9订单信息管理功能代码publicvoidorderMana(HttpServletRequestreq,HttpServletResponseres)throwsServletException,IOException { ListorderList=newArrayList(); Stringsql="select*fromt_orderwheredel='no'"; Object[]params={}; DBmydb=newDB(); try { mydb.doPstm(sql,params); ResultSetrs=mydb.getRs(); while(rs.next()) {Torderorder=newTorder(); order.setId(rs.getInt("id")); order.setDanjuhao(rs.getString("danjuhao")); order.setShijian(rs.getString("shijian")); order.setBeizhu(rs.getString("beizhu")); order.setUser_id(rs.getString("user_id")); order.setZhuangtai(rs.getString("zhuangtai")); order.setDel(rs.getString("del")); orderList.add(order); } rs.close(); } catch(Exceptione) { e.printStackTrace(); } mydb.closed(); req.setAttribute("orderList",orderList); req.getRequestDispatcher("admin/order/orderMana.jsp").forward(req,res); }4.3前台客户端模块实现客户登录系统后可以进入前台客户端界面,在功能菜单中有三个功能模块:商品信息浏览功能模块我要在线下单功能模块我的订单列表功能模块PS:在界面上方还是会显示你登录成功后的客户名还有当前的系统时间,点击注销系统可以退出登录。图4-12前台客户端主界面客户在功能菜单中点击商品信息浏览按钮,会进入到商品的展示界面,在这里你可以看到商品的类别、商品名称、产地、单位、规格还有备注信息。商品信息浏览代码功能实现在下面(代码4-10)图4-13商品信息浏览界面代码4-10商品信息浏览功能代码publicvoidgoodsAll(HttpServletRequestreq,HttpServletResponseres)throwsServletException,IOException { ListgoodsList=newArrayList(); Stringsql="select*fromt_goodswheredel='no'orderbycatelog_id"; Object[]params={}; DBmydb=newDB(); try { mydb.doPstm(sql,params); ResultSetrs=mydb.getRs(); while(rs.next()) { Tgoodsgoods=newTgoods(); goods.setId(rs.getInt("id")); goods.setCatelog_id(rs.getInt("catelog_id")); goods.setName(rs.getString("name")); goods.setBeizhu(rs.getString("beizhu")); goods.setChandi(rs.getString("chandi")); goods.setDanwei(rs.getString("danwei")); goods.setGuige(rs.getString("guige")); goods.setCatelog_name(liuService.getCatelogName(rs.getInt("catelog_id"))); goodsList.add(goods); } rs.close(); } catch(Exceptione) { e.printStackTrace(); } mydb.closed(); req.setAttribute("goodsList",goodsList); req.getRequestDispatcher("auser/goods/goodsAll.jsp").forward(req,res); }在功能菜单中点击我要在线下单按钮,就会进入下单界面,系统自动生成了订单编号和订单时间,用户输入备注信息后,点击提交,就会向系统成功提交订单。用户下单代码功能实现在下面(代码4-11)。图4-14在线下单界面代码4-11在线下单功能代码publicvoidorderAddMy(HttpServletRequestreq,HttpServletResponseres) { intid=0; Stringdanjuhao=req.getParameter("danjuhao"); Stringshijian=req.getParameter("shijian"); Stringbeizhu=req.getParameter("beizhu"); Stringuser_id=req.getParameter("user_id"); Stringzhuangtai="审核中"; Stringdel="no"; Stringsql="insertintot_ordervalues(?,?,?,?,?,?)"; Object[]params={danjuhao,shijian,beizhu,user_id,zhuangtai,del}; DBmydb=newDB(); mydb.doPstm(sql,params); mydb.closed(); req.setAttribute("message","操作成功");StringtargetURL="/common/add_success.jsp"; dispatch(targetURL,req,res); }在功能菜单中点击我的订单列表按钮,可以进入订单列表界面,如图4-15所示,在我的订单列表中,显示了订单的订单编号,订单时间,备注和状态,在订单明细栏中点击订单明细,可以查看订单详情。如图4-16所示,显示了订单中商品的名称、数量、备注,并且在操作栏中点击删除按钮可以从订单中删除相应的商品。在订单明细栏中点击添加订单明细,可以向订单中继续添加商品,如图4-17所示,选择分类和商品,输入数量和备注,就可以向订单中添加商品。订单明细代码功能实现在下面(代码4-12)。图4-15我的订单列表界面图4-16订单明细图4-17添加订单明细代码4-12订单明细管理代码publicvoidorderMingxiAdd(HttpServletRequestreq,HttpServletResponseres) { intorder_id=Integer.parseInt(req.getParameter("order_id")); intgoods_id=Integer.parseInt(req.getParameter("goods_id")); intshuliang=Integer.parseInt(req.getParameter("shuliang")); Stringbeizhu=req.getParameter("beizhu"); Stringsql="insertintot_orderMingxivalues(?,?,?,?)"; Object[]params={order_id,goods_id,shuliang,beizhu}; DBmydb=newDB(); mydb.doPstm(sql,params); mydb.closed(); req.setAttribute("msg","操作成功");StringtargetURL="/common/msg.jsp"; dispatch(targetURL,req,res); } publicvoidorderMingxiMana(HttpServletRequestreq,HttpServletResponseres)throwsServletException,IOException { intorder_id=Integer.parseInt(req.getParameter("order_id")); ListorderMingxiList=newArrayList(); Stringsql="select*fromt_orderMingxiwhereorder_id="+order_id; Object[]params={}; DBmydb=newDB(); try { mydb.doPstm(sql,params); ResultSetrs=mydb.getRs(); while(rs.next()) { TorderMingxiorderMingxi=newTorderMingxi(); orderMingxi.setId(rs.getInt("id")); orderMingxi.setorder_id(rs.getInt("order_id")); orderMingxi.setGoods_id(rs.getInt("goods_id")); orderMingxi.setShuliang(rs.getInt("shuliang")); orderMingxi.setBeizhu(rs.getString("beizhu")); orderMingxi.setGoods_name(liuService.getGoodsName(rs.getInt("goods_id"))); orderMingxiList.add(orderMingxi); } rs.close(); } catch(Exceptione) { e.printStackTrace(); } mydb.closed(); System.out.println(orderMingxiList.size()); req.setAttribute("orderMingxiList",orderMingxiList); req.setAttribute("order_id",order_id); req.getRequestDispatcher("admin/order/orderMingxiMana.jsp").forward(req,res); } publicvoidorderMingxiDel(HttpServletRequestreq,HttpServletResponseres) { intid=Integer.parseInt(req.getParameter("id")); Stringsql="deletefromt_orderMingxiwhereid="+id; Object[]params={}; DBmydb=newDB(); mydb.doPstm(sql,params); mydb.closed(); req.setAttribute("msg","操作成功");StringtargetURL="/common/msg.jsp"; dispatch(targetURL,req,res); }
第5章系统测试5.1系统测试用例在系统测试中,通过测试用例来验证系统的各个功能,是一种广泛运用的系统测试方案,测试用例主要涉及到了测试项目名称、功能模块、编写人、系统版本、预制条件和功能特性等信息,每一条测试用例包括了用例编号、用例名称、测试步骤和预期结果[10-11]。根据本文设计的甘记订单管理系统的功能需求,组合运用多种黑盒测试方法,详细设计并进行了登录模块(表5-1)、后台管理端模块(表5-2)、前台客户端理模块(表5-3)的测试用例。表5-1登录模块测试用例项目名称:甘记订单管理系统功能模块:登录模块编写人:潘先生系统版本:不用更新了预制条件:进入系统登录界面功能特性:验证系统登录模块的各个功能用例编号用例名称测试步骤预期结果1管理员登录1、输入管理员账号2、输入管理员账号密码3、选择管理员身份4、点击登录成功登录到后台管理端2用户登录1、输入用户账号2、输入用户账号密码3、选择用户身份4、点击登录成功登录到前台客户端3用户注册1、点击客户注册2、输入注册信息3、点击确定正确注册用户账户表5-2后台管理端模块测试用例项目名称:甘记订单管理系统功能模块:管理端模块编写人:系统版本:预制条件:登录后台管理端功能特性:验证系统管理端模块的各个功能用例编号用例名称测试步骤预期结果1修改个人密码1、点击修改个人密码2、输入原密码3、输入新密码4、点击修改成功修改密码2删除注册客户1、点击注册客户管理2、在操作栏中点击删除3、在弹出的对话框中点击
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 江苏省泰兴市三中2026届高一化学第一学期期末联考试题含解析
- 2026届陕西省西安市秦汉中学高三上化学期中统考试题含解析
- 积极参与国际经济竞争与合作教案2(高一政治)
- 2025安庆宿松县殡葬管理所招聘劳务派遣人员2人(二次)考试笔试参考题库附答案解析
- 吉林省白城市洮南第十中学2026届化学高二第一学期期中综合测试试题含解析
- 2025滁州市城投石化加油(气)站报账员和加油员招聘19人笔试考试参考题库附答案解析
- 2025年西安高新医院招聘(16人)笔试考试备考题库及答案解析
- 2026届安徽省阜阳市示范名校化学高一第一学期期中质量检测试题含解析
- 2026北京按摩医院招聘52人笔试考试参考题库附答案解析
- 2025北京市海淀区实验小学招聘笔试考试备考题库及答案解析
- 药物化学考试模拟题及参考答案
- 封头尺寸及重量
- 叉车自检报告
- 西南18J202 坡屋面标准图集
- NCE-2100系列安装式数字网络电能质量监测仪表使用说明书
- LS 8010-2014植物油库设计规范
- GB/T 6569-2006精细陶瓷弯曲强度试验方法
- GB/T 16857.2-2006产品几何技术规范(GPS)坐标测量机的验收检测和复检检测第2部分:用于测量尺寸的坐标测量机
- GB 17498.8-2008固定式健身器材第8部分:踏步机、阶梯机和登山器附加的特殊安全要求和试验方法
- (完整版)现代汉语试题库(含答案)
- 企业内部控制应用指引第11号-工程项目课件
评论
0/150
提交评论