• java毕业设计—— 基于java+JSP+SSH的婴幼儿产品销售系统设计与实现(毕业论文+程序源码)——婴幼儿产品销售系统


    基于java+JSP+SSH的婴幼儿产品销售系统设计与实现(毕业论文+程序源码)

    大家好,今天给大家介绍基于java+JSP+SSH的婴幼儿产品销售系统设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦。

    文章目录:

    1、项目简介

    1. 本系统的题目基于ssh的婴幼儿产品销售系统的设计与实现,通过这个平台,消费者足不出户就可以了解很多的商品信息,给消费者带来了极大的方便。
    2. 本系统采用了Browser/Server体系结构,JSP(Java Server Page)作为前台开发工具,MySQL作为后台数据库进行开发。最终系统实现的系统将分为管理员和会员两个角色,系统管理员部分的主要功能包括修改登录密码、会员信息管理、商品类别管理、商品信息管理以及订单信息管理,会员部分的功能主要有在线注册与登录、浏览商品信息、商品查询以及在线订购这个功能模块。

    2、资源详情

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


    3、关键词:

    B/S;JSP;MySQL

    4、毕设简介

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

    1 引言
    省略

    本系统就是为了婴幼儿用品商家对婴幼儿用品的网上销售管理而设计的。
    1.1 课题研究意义及背景
    省略

    1.2 论文的目的及设计要求
    本婴幼儿用品商城采用JSP技术和MySQL数据库进行系统的开发。

    系统的设计将分为系统管理员和会员两个角色,系统管理员可以管理会员信息、商品类别信息、商品信息以及订单信息,会员可以在线查看所有的商品信息、根据商品名称和价格查询商品以及在线订购[4]。在实现这些功能的同时,还对本婴幼儿用品商城的操作界面进行了很好的设计,极力为用户提供一个友好的操作环境。我们主要从以下的三方面着手:可交互性、信息显示以及数据的输入。

    省略

    1.3 开发工具及技术
    1.3.1 开发工具
    此次设计主要采用MyEclipse加Tomcat后台服务器进行,数据存储使用Oracle数据库进行管理,下面对MyEclipse、Tomcat及Oracle数据库进行简要介绍。

    (1)MyEclipse
    MyEclipse,是一个十分优秀的用于开发Java, J2EE的Eclipse插件集合,MyEclipse的功能非常强大,支持也十分广泛,尤其是对各种开元产品的支持十分不错。MyEclipse企业级工作平台(MyEclipse Enterprise Workbench ,简称MyEclipse)是对Eclipse IDE的扩展,利用它我们可以在数据库和JavaEE的开发、发布,以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的JavaEE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML, Struts, Spring,Hibernate,JSP, CSS, Javascript, SQL。

    (2)Tomcat
    Tomcat是一个小型的轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。可以这样认为,当在一台机器上配置好Apahce服务器,可利用它响应对HTML页面的访问请求。实际上Tomcat 部分是Apache 服务器的扩展,但它是独立运行的,所以当运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。

    (3) Oracle
    Oracle数据库系统是美国Oracle公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一。Oracle数据库是目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系数据库,它是一个完备关系的产品;作为分布式数据库它实现了分布式处理功能。但它的所有知识,只要在一种机型上学习了Oracle知识,便能在各种类型的机器上使用它。能在所有主流平台上运行(包括windows)。完全支持所有的工业标准。采用完全开放策略。可以使客户选择最适合的解决方案。对开发商全力支持。

    1.3.2 JSP
    JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计和显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。

    Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序段,然后将执行结果连同JSP文件中的HTML代码一起返回给客户。插入的Java程序段可以操作数据库、重新定向网页等,以实现建立动态网页所需要的功能。JSP与Servlet一样,是在服务器端执行的,通常返回给客户端就是一个HTML文本,因此客户端只要有浏览器能浏览。JSP页面由HTML代码和嵌入其中的Java代码所组成。服务器在页面被客户端请求以后对这些Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。Servlet是JSP的技术基础,而且大型的Web应用程序的开发需要Java Servlet和JSP配合才能完成。JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点。JSP技术的优点:
    (1)一次编写,到处运行。除了系统之外,代码不用做任何更改。
    (2)系统的多平台支持。基本上可以在所有平台上的任意环境中开发,在任意环境中进行系统部署,在任意环境中扩展。相比ASP/.net的局限性是显而易见的。
    (3)强大的可伸缩性。从只有一个小的Jar文件就可以运行Servlet/JSP,到由多台服务器进行集群和负载均衡,到多台Application进行事务处理,消息处理,一台服务器到无数台服务器,Java显示了一个巨大的生命力。
    (4)多样化和功能强大的开发工具支持。Java已经有了许多非常优秀的开发工具,而且许多可以免费得到,并且其中许多已经可以顺利的运行于多种平台之下
    (5)支持服务器端组件。web应用需要强大的服务器端组件来支持,开发人员需要利用其他工具设计实现复杂功能的组件供web页面调用,以增强系统性能。JSP可以使用成熟的JAVA BEANS 组件来实现复杂商务功能。

    内部对象说明:request 客户端请求,此请求会包含来自GET/POST请求的参数; response网页传回客户端的响应;pageContext 网页的属性是在这里管理; session 与请求有关的会话; application servlet正在执行的内容;out 用来传送响应的输出流; config 代码片段配置对象;page JSP网页本身; exception 针对错误网页,未捕捉的例外。

    1.3.3 JavaScript
    JavaScript是一种基于对象和事件驱动并具有相对安全性的客户端脚本语言。同时也是一种广泛用于客户端Web开发的脚本语言,常用来给HTML网页添加动态功能,比如响应用户的各种操作。

    JavaScript的一个重要功能就是面向对象的功能,通过基于对象的程序设计,可以用更直观、模块化和可重复使用的方式进行程序开发。在HTML基础上,使用JavaScript可以开发交互式Web网页。JavaScript的出现使得网页和用户之间实现了一种实时性的、动态的、交互性的关系,使网页包含更多活跃的元素和更加精彩的内容。在本系统中很多地方使用了javaScript技术,比如说,检验用户输入数据的有效性,是否重复,是否为空等等。

    1.3.4 SSH
    SSH 在J2EE项目中表示了3种框架,即 Spring + Struts +Hibernate。Struts对Model,View和Controller都提供了对应的组件。Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。 Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,可以应用在任何使用JDBC的场合,可以在Servlet/JSP的Web应用中使用,也可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。它的优点有:
    (1)SSH把底层进行了很好的封装,开发人员可以更专注于业务处理,开发效率高,层次清晰,易于维护及扩展。
    (2)SSH把数据库,实体,配置都进行了整合,封装了层次的结构,在框架的融合,代码的耦合有很好的优势,便于编程的持续化,扩展化,维护化。
    (3)实现MVC模式。结构清晰,使开发者只关注业务逻辑的实现。可以使用丰富的tag、Struts的标记库(Taglib),能大大提高开发效率。另外提供Exception处理机制;数据库链接池管理等。
    下面简单介绍一下SSH中各框架的含义。
    (1)Struts
    Struts框架结构如图1.1所示。
    在这里插入图片描述

    图1.1 Struts框架结构图
    Struts对Model,View和Controller都提供了对应的组件。
    在上图中,ActionServlet,这个类是Struts的核心控制器,负责拦截来自用户的请求。

    Action,这个类通常由用户提供,该控制器负责接收来自ActionServlet的请求,并根据该请求调用模型的业务逻辑方法处理请求,并将处理结果返回给JSP页面显示。

    Model部分由ActionForm和JavaBean组成,其中ActionForm用于封装用户的请求参数,封装成ActionForm对象,该对象被ActionServlet转发给Action,Action根据ActionForm里面的请求参数处理用户的请求。

    JavaBean则封装了底层的业务逻辑,包括数据库访问等。
    View部分采用JSP实现。

    Struts提供了丰富的标签库,通过标签库可以减少脚本的使用,自定义的标签库可以实现与Model的有效交互,并增加了现实功能。对应上图的JSP部分。

    Controller组件有两个部分组成——系统核心控制器,业务逻辑控制器。系统核心控制器,对应上图的ActionServlet。该控制器由Struts框架提供,继承HttpServlet类,因此可以配置成标注的Servlet。该控制器负责拦截所有的HTTP请求,然后根据用户请求决定是否要转给业务逻辑控制器。业务逻辑控制器,负责处理用户请求,本身不具备处理能力,而是调用Model来完成处理。对应Action部分。

    (2)Spring
    Spring的出现是为了解决企业应用开发的复杂性,它使用基本的JavaBean代替EJB,并提供了更多的企业应用功能,适用于任何Java应用。简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。

    省略

    (3)Hibernate
    Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。

    Hibernate的核心接口一共有5个,分别为:Session、SessionFactory、Transaction、Query和Configuration。这5个核心接口在任何开发中都会用到。通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。

    1.4 软硬件需求
    (1)硬件需求:
    CPU:Pentium以上计算机
    内存: 512M以上
    (2)软件需求:
    操作系统版本:Windows XP /vista/Win7
    开发工具:MyEclipse 8.5
    后台服务器:Apache Tomcat 6.0
    开发语言:Java
    浏览器:IE、猎豹、Google Chrome浏览器

    2 可行性分析
    省略

    2.1 技术可行性
    本系统开发工具是MyEclipse和Oracle数据库,开发语言是Java,主要使用了J2EE的技术,java是一种面向对象编程语言,简单易学而且灵活方便。大三时就学习了java课程,大四期间也系统的了解了J2EE的知识,本系统总体上开发难度不高,数据库的设计和操作是本系统设计的核心。在大学期间学习过软件工程,软件测试,UML统一建模语言等课程,每个学期也会完成对应的课程设计,具备一定的系统分析、设计和测试能力。因此,完成系统实现在技术上完全具有可行性。

    2.2 经济可行性
    省略

    2.3 操作可行性
    省略

    2.4 法律可行性
    省略

    3 研究现状及设计目标
    3.1 购物商城的现状
    省略

    3.2 购物商城优缺点分析
    省略

    3.3 现行研究存在的问题及解决方法
    3.3.1 现行研究存在的问题
    省略

    3.3.2 解决办法
    鉴于目前婴幼儿用品商城的需求与实际情况,解决上述问题应具备以下几方面的要求:
    1.选用MySQL数据库[7],可以更为持久的存放数据,当存储设备改变时,不用重写程序代码便能很好的移植到其它数据库系统。

    2.系统采用MVC模式,程序的实现过程采用模块化,把业务信息按照应用功能模块拆分开:业务逻辑与数据库服务器分开,用户界面与业务逻辑分开,任一方的改变都不会过多影响对方。

    3.在开发平台和语言上,使用My Eclipse开发平台[8],并使用JSP语言作为主要的开发语言,JSP语言一次编写随处运行以及强大的可伸缩性等优点更方便系统的开发以及维护。

    3.4 本课题要达到的设计目标
    本课题采用B/S模式,面向婴幼儿用品商家而开发的婴幼儿用品商城[9],系统将可以分为系统管理员和会员两种用户登录,登录时需要对身份进行验证,登录以后每个权限用户只能使用自己权限范围内的功能,其各角色功能如下:

    1.系统管理员:
    a、具有会员管理功能,实现了对所有会员的管理操作,已经设置添加的会员才可以使用自己的账号密码登录系统进行相关的商品信息浏览、查询及订购等功能。
    b、具有商品类别管理功能,对所有类别信息进行增删改查的管理操作。
    c、具有商品信息管理功能,对所有商品信息进行增删改查的管理操作。
    d、具有订单信息管理功能,对所有订单信息进行查看、受理和删除的管理操作。

    2.会员
    a、具有浏览商品功能,可以浏览系统中所有商品信息。
    b、具有查询商品功能,根据商品名称和价格进行查询,返回相关商品信息。
    c、具有订购商品功能,可以选择需要的商品进行订购。
    d、具有查看订单功能,可以查看自己已经有的订单信息。

    3.5 经济效益分析
    省略

    4 关键问题及分析
    省略

    4.1 研究设计中要解决的问题
    在研究设计中,还存在着诸多有待解决的问题与困难,会用到许多以前未学过的难点去学习与攻破。现将研究设计中要解决的问题总结如下:
    4.1.1 数据表间联系
    婴幼儿用品商城所涉及的数据信息复杂,更具有复杂的业务逻辑关系,设计的表与表之间需要通过外键联系起来。外键的联系保证在婴幼儿用品管理过程中业务操作稳定的关键。数据库设计的好坏将直接影响到前台页面的稳定运行[10~12]。

    由于婴幼儿用品商城涉及到了具体的管理员发布商品、会员查看商品以及订购商品的功能操作,数据库中的数据不能随意删除,以防出现商品或订单信息丢失的问题。若表间的联系建立的不够完善,当程序实际运行时就会出现很多问题和漏洞,结果造成的损失将无法弥补,程序也不便于维护。

    4.1.2 系统安全性
    省略

    4.2 具体实现中采用的关键技术
    省略

    4.2.1 J2EE技术
    文献[14]介绍了J2EE 技术,这种开发技术是属于SUN公司的,并且它是在Java 2的平台基础上进行发展完善,并且它具有Java语言所具有的多个优点,包括:语言方便,可移植性高等等,还能够对多种技术提供支持帮助,包括:EJB,JSP、API等技术,从这几方面来使得应用系统的开发变得简单易行,复杂度在一定程度上有所降低,还能够为现在的应用系统体系提供帮助。

    J2EE技术一般分为四个层级。如下图2-1所示。

    在这里插入图片描述

    图2-1 J2EE层次结构图
    文献[15]介绍了J2EE优势:
    1.跨平台性。Java在使用的时候,对平台没有特别要求,在多种操作平台上都能够使用,包括Windows、Linux等等平台。
    2.稳定性。基于J2EE技术而开发的应用系统都拥有一定的稳定可靠性,一般能够满足用户的全年24小时式的不间断使用条件,避免应用系统的崩盘死机。

    4.2.2 JDBC技术
    文献[16]介绍了JDBC是一种较为常见的数据库链接 ,通过该链接可以让程序更快更好的访问到所需要访问的数据库 。他是广大程序员的结晶 ,他的出现让开发人员能够编写数据库应用程序 ,可以构建更高级的工具和接口 。

    JDBC API是一个Java API,可以访问任何类型表列数据,特别是存储在关系数据库中的数据。JDBC代表Java数据库连接。
    JDBC库中所包含的API任务通常与数据库使用:
    1.连接到数据库
    2.创建SQL或MySQL语句
    3.在数据库中执行SQL或MySQL查询
    4.查看和修改记录

    Java是简洁明了,方便使用,易于编写数据库应用程序的杰出语言。

    4.2.3 MVC编程模式
    在JAVAWEB程序的设计时,通常用适当的设计方法。好的设计方法是比开发和维护简单的多的。

    文献[17]介绍了MVC技术就是一种比较科学合理的设计模式结构,其模型结构分为三个层次,包括: 模型层、视图层以及控制层,通过这三个层次能够对整个系统的各方面功能起到系统化的实现作用,并且将业务流程以及数据输入分别进行表述存储,降低了后续维护的难度。
    省略

    5 需求分析
    5.1 设计的基本思想
    省略

    5.2 功能模块需求分析
    本系统最大的特点是使用操作简单、友好的提示信息。

    本系统将实现以下基本功能:
    (1)系统具有简洁大方的页面,使用简便。
    (2)管理员用户具有商品类别管理、商品信息管理、商品信息更新管理、订单管理、会员信息管理、系统管理功能。
    (3)普通用户具有浏览商品、商品查询、购买商品、修改个人信息等功能
    (4)具有较强的安全性,避免用户的恶意操作。

    系统的功能分普通用户平台,管理员平台。系统的总体功能图如图3.1所示。
    在这里插入图片描述

    图3.1 系统的总体功能图
    普通用户功能模块图说明:普通用户可以在线浏览商品,查询商品,如果要购买、下订单操作,首先需要注册一个个人账号,然后登陆到系统中,如功能图3.2所示。
    在这里插入图片描述

    图3.2 普通用户的用户功能模块图
    管理员功能模块图说明:管理员是功能最多的一种用户角色。
    (1)商品类别信息管理模块:在该模块中完成对商品类别信息的管理,包括类别录入、查询、修改、增加和删除等功能操作。其中类别信息包括类别名称、类别介绍等信息。
    (2)商品信息管理模块:在该模块中定义了商品信息的管理,其功能包括商品录入、查询、删除等操作。
    (3)会员管理模块:该模块中包括浏览会员信息和删除会员信息2个功能。
    (4)系统管理模块:在该模块中定义了系统日常维护的功能,包括公告信息的添加和查询,修改功能,以及系统用户管理和修改密码等功能。
    管理员用户功能模块图如图3.3所示。
    在这里插入图片描述

    图3.3 管理员用户功能模块图
    5.3 系统用户用例图
    5.3.1 普通用户用例图
    出于安全性的考虑,普通用户对商品的操作只有浏览商品和商品查询、商品购买等功能,其他的删除修改功能都没有设计,因为普通用户最主要关心的就是商品信息的更新和查询等功能。而对于网站会员而言,对自己信息具有修改的权利是必须的,所以添加了用户修改个人信息的功能。普通用户用例图如图3.4所示。
    在这里插入图片描述

    图3.4 普通用户用例图
    5.3.2 管理员用例图
    此次系统的实现里,没有设计商家自主添加商品的权限,而把添加商品的这些功能全部赋予了管理员,所以管理员是系统的核心用户。管理员涉及到六大功能模块,对系统的所有信息有着操作的权限,能够及时动态的更新系统的各项信息。管理员用户用例图如图3.5所示。
    在这里插入图片描述

    图3.5 管理员用例图

    5.4 性能需求
    5.4.1 系统的安全性
    省略

    5.4.2 数据库的安全性
    (1)数据库表结构设计定义主键,长度,字段类型,各种约束,保证数据库中数据的安全与统一。
    (2)使用JS校验页面录入数据,保证录入数据的安全性。

    5.5 界面需求
    界面设计目前已经成为评价软件质量的一条重要指标,一个好的用户界面可以增加用户使用系统的信心和兴趣,提高工作效率,JSP技术是用JAVA语言作为脚本语言的,JSP网页为整个服务器端的JAVA库单元提供了一个接口来服务于HTTP的应用程序。 创建动态页面非常方便。用户界面是指软件系统与用户交互的接口,通常包括输出、输入、人-机对话的界面格式等。

    5.5.1 输出设计
    省略

    5.5.2 输入设计
    省略

    5.6 USE-CASE用例图
    婴幼儿用品商城分为系统管理员和会员两类用户角色[20]。整个系统的用例功能包括修改登录密码、类别信息管理、会员信息管理、商品信息管理、订单信息管理、浏览商品、查询商品以及订购商品,如图4.1所示为本系统的整体用例图。
    在这里插入图片描述

    图5.1 系统整体用例图
    5.7 系统主要业务流程
    若要开发一个良好的系统,就要先明确其系统的业务流程,婴幼儿用品商城主要的业务就是实现商品信息的在线发布、浏览以及订购的功能。首先管理员可以发布新的商品信息,会员登录系统之后可以对所有的商品信息进行浏览查看,也可以订购商品,生成订单之后需要管理员对订单进行受理。根据这个商品发布、浏览、订购以及订单审批的流程绘制出其业务流程如下:
    在这里插入图片描述

    图5.2 婴幼儿用品管理流程图
    5.8 功能需求
    1、登录验证功能:为了保证婴幼儿用品商城信息的安全性,进入系统时需要对用户身份进行验证,如果验证无误可成功进入系统,如果用户名或者密码不正确将返回错误提示要求重新输入。

    2、会员管理功能:该功能属系统管理员功能,实现了系统管理员对所有会员的管理操作,可以添加一个新的会员,也可以对已经添加的会员进行删除的操作。已经设置添加的会员才可以使用自己的账号密码登录系统进行相关的商品浏览、查询及订购等功能。

    3、商品类别管理功能:该功能属系统管理员功能,其功能与会员管理功能类似,可以添加一个新的商品类别,也可以对已经添加的商品类别进行删除的操作。

    4、商品信息管理功能:该功能属系统管理员功能,其功能与商品类别管理功能类似,可以添加一个新的商品信息,也可以对已经添加的商品信息进行删除的操作。

    5、订单信息管理功能:该功能属系统管理员功能,可以对已经存在的订单信息进行查看、受理和删除的操作。

    6、查询商品信息功能:该功能属于会员功能,会员可以根据商品名称和价格对商品信息进行查询。

    7、商品订购功能:该功能属于会员功能,会员可以选择商品信息进行订购,生成订单。

    5.9 开发环境
    操作系统:Windows 7
    开发语言:JSP、Java语言
    数据库:MySQL
    WEB服务器:Tomcat 6
    开发工具:Dreamweaver、MyEclipse6 8.6
    会员端浏览器:IE9

    6 系统设计
    婴幼儿用品商城设计的好坏将对系统的开发和维护起着至关重要的作用。系统的实现需要符合所有用户的要求,只有对用户的要求考虑的全面,才会开发出功能强大稳定的婴幼儿用品商城。

    6.1 系统体系结构
    本系统采用的是B/S的体系结构模式,系统界面完全通过浏览器实现,一部分事务逻辑在前端实现,但是系统的主要事务逻辑在服务器端实现。B/S结构利用不断成熟和普及的浏览器技术实现原来需要复杂专用软件才能实现的强大功能,并节约了开发成本,是一种全新的软件系统构造技术。用户通过浏览器向WEB服务器发出请求,WEB服务器将请求发送给数据库。数据库接到请求后将结果再返回到WEB服务器中,最后由WEB服务器传给浏览器显示给用户。

    省略

    6.2 系统功能结构
    根据需求调研结果确定本婴幼儿用品商城的功能结构,系统管理员功能主要包括修改登录密码、会员信息管理、商品类别管理、商品信息管理以及订单信息管理,会员功能有个人信息管理、商品信息浏览、商品信息查询、商品订购以及会员查看订单这几个功能,如图5.1所示为本婴幼儿用品商城的功能结构图。
    在这里插入图片描述

    图6.1 系统功能结构图

    6.3 数据库的分析与设计
    省略

    6.3.1 数据库的概念结构设计
    概念设计是指在数据分析的基础上自底向上的建立整个系统的数据库概念结构,从用户的角度进行视图设计,然后将视图集成,最后对集成的结构分析优化得到最后结果。

    数据库的概念结构设计采用实体—联系(E-R)模型设计方法。E-R模型法的组成元素有:实体、属性、联系,E-R模型用E-R图表示,是提示用户工作环境中所涉及的事物,属性则是对实体特性的描述。

    概念设计的目标是产生反映企业组织信息要求的数据库概念结构,即概念模式。概念模式是独立于数据库逻辑结构,独立于支持数据库的DBMS,不依赖于计算机系统的,
    根据以上对数据库的需求分析,并结合系统概念模型的特点及建立方法,建立E-R模型图。

    (1) 普通用户实体图,如图4.1所示。

    在这里插入图片描述

                             图4.1 普通用户实体图
    
    • 1

    (2)商品类别实体图,如图4.2所示。

    在这里插入图片描述

                          图4.2 商品类别信息实体图
    
    • 1

    (3)商品信息实体图,如图4.3所示

    在这里插入图片描述

                         图4.3 商品信息实体图
    
    • 1

    (4)管理员信息实体图,如图4.4所示
    在这里插入图片描述

                           图4.4 管理员信息实体图
    
    • 1

    (5)订单信息实体图,如图4.5所示

    在这里插入图片描述

    图4.5 订单信息实体图

    6.3.2 数据库的逻辑结构设计
    我们知道,数据库概念模型独立于任何特定的数据库管理系统,因此,需要根据具体使用的数据库管理系统的特点进行转换。即转化为按计算机观点处理的逻辑关系模型,E-R模型向关系数据库模型转换应遵循下列原则:
    (1)每一个实体要转换成一个关系
    (2)所有的主键必须定义非空(NOT NULL)
    (3)对于二元联系应按照一对多、弱对实、一对一、多对多等联系来定义外键。

    根据对系统的主要功能的分析,婴幼儿用品商城的表有系统管理员表、会员信息表、商品类别表、商品信息表、订单信息表以及订单项信息表,各个表结构描述如下:
    1、系统管理员表t_admin
    系统管理员表里面存储了管理员信息。如表5.1:
    表6.1 管理员信息表
    在这里插入图片描述

    2、会员信息表t_huiyuan
    会员信息表里面存储了所有的会员信息。如表5.2:
    表6.2 会员信息表
    在这里插入图片描述

    3、商品类别表t_leibie
    商品类别表是用于记录商品类别信息。如表5.3:
    表6.3 商品类别表
    在这里插入图片描述

    4、商品信息表t_goods
    商品信息表里面存储了所有的商品信息。如表5.4:
    表6.4 商品信息表
    在这里插入图片描述

    5、订单信息表t_order
    订单信息表存储了所有的订单信息。如表5.5:
    表6.5 订单信息表
    在这里插入图片描述

    5、订单项信息表t_mingxi
    订单明细表存储了订单中所有的订单项信息。如表5.6所示:

    表6.6 订单明细表
    在这里插入图片描述

    6.3.3 数据库的连接原理
    采用Spring管理的下的Hibernate连接数据库的方式。
    (1)首先在web.xml中配置spring的监听。

    	   <!—配置Spring配置文件地址-->
    <context-param>
    		  <param-name>contextConfigLocation</param-name>
    		  <param-value>/WEB-INF/applicationContext.xml</param-value>
    	  </context-param>
    <!—配置Spring监听-->
    	  <listener>
    		 <listener-class>
    			 org.springframework.web.context.ContextLoaderListener
    		 </listener-class>
    	 </listener>2)applationContext里配置映射驱动bean和映射文件地址
    <!—配置Oracle数据库驱动-->
    <bean id="dataSource"
    		  class="org.apache.commons.dbcp.BasicDataSource">
    		  <property name="driverClassName"
    		    	value="oracle.jdbc.driver.OracleDriver">
    		  </property>
           <!—配置数据库Url地址-->
    		  <property name="url"
    			   value="jdbc:oracle:thin:@localhost:1521:XE">
    		  </property>
           <!—配置数据库用户名和密码-->
    		  <property name="username" value="anne"></property>
    		  <property name="password" value="anne"></property>
    	</bean> 
    <bean id="sessionFactory"
    		  class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    		  <property name="dataSource">
    		  <ref bean="dataSource" />
    		  </property>
    <!—配置数据库方言-->
    		<property name="hibernateProperties">
    			<props>
    				<prop key="hibernate.dialect">
    					org.hibernate.dialect.OracleDialect
    			   </prop>
                  <!—显示sql语句-->
    				<prop key="hibernate.show_sql">true</prop>
    				<prop key="hibernate.hbm2ddl.auto">update</prop>
    			</props>
    		</property>
    <!—配置表映射地址-->
    		<property name="mappingResources">
    			<list>
    				<value>com/model/TAdmin.hbm.xml</value>
    			    <value>com/model/TUser.hbm.xml</value>
    			    <value>com/model/TGoods.hbm.xml</value>
    			    <value>com/model/TOrderItem.hbm.xml</value>
    			    <value>com/model/TOrder.hbm.xml</value>
    			</list>
    		</property>
    	</bean>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53

    7 系统实现及测试
    省略

    7.1 系统主要模块的实现
    7.1.1 系统登录功能界面
    进入系统之后首先要进入到系统的登录页面,在登录页面中将验证用户输入的用户名以及密码是否正确,输入正确的用户名及密码才可以成功的登录系统,如果用户名或者密码错误将返回错误提示,其实现页面如图6.1、6.2所示。
    在这里插入图片描述

    图7.1 系统管理员登录界面

    关键代码:

        <script type='text/javascript' src='/yytyp/dwr/interface/loginService.js'></script>
        <script type='text/javascript' src='/yytyp/dwr/engine.js'></script>
        <script type='text/javascript' src='/yytyp/dwr/util.js'></script>
        
        <script language="javascript">
    		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("通过验证,系统登录成功");
    		        window.location.href="/yytyp/admin/index.jsp";
    		    }
    		    
    		}
    		
    		function qing()
    		{
    		    document.ThisForm.userName.value="";
    		    document.ThisForm.userPw.value="";
    		}
    	</script>
    	
      </head>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45

    在这里插入图片描述

    图7.2 会员登录界面
    7.1.2 修改登录密码功能界面
    管理员成功登录系统之后,点击导航栏菜单“修改登录密码”,系统跳转到修改登录密码子界面,在这里需要输入正确的原密码和设置新密码,才能实现修改操作,其实现页面如图6.3所示。

    在这里插入图片描述

    图7.3 修改登录密码界面
    7.1.3 会员注册功能界面
    用户在登录系统后点击导航栏的“注册会员”菜单,将跳转到会员注册页面。在这里需要填写会员帐号、密码以及姓名信息。游客访问该站点的时候,可以注册成为会员,管理员登陆后可以管理会员信息,点击左侧的“会员管理“,页面调转中后台的是java类userAction,在此类中,读取数据库中,提取会员的信息,绑定到request对象,再输出到相应的jsp显示页面页面。
    其实现页面如图6.4所示。
    在这里插入图片描述

    图7.4 会员注册界面
    7.1.4 会员管理功能界面
    在会员管理页面中可以列表显示出所有的会员信息,并可以选择指定的会员信息进行删除的操作。其实现页面如图6.5所示。
    在这里插入图片描述

    图7.5 会员管理界面
    会员管理关键代码:

     //删除用户信息
      public String userDel()
        {
    		TUser user=userDAO.findById(userId);
    		user.setUserDel("yes");
    		userDAO.attachDirty(user);
    		this.setMessage("删除成功");
    		this.setPath("userMana.action");
    		return "succeed";
    } 
    //
    	public String userXinxi()
       {	
    		TUser user=userDAO.findById(userId);
    		Map request=(Map)ServletActionContext.getContext().get("request");
    		request.put("user", user);
    		return ActionSupport.SUCCESS;
    	}
    	
    	
    	public String userMana()
    	{
    		List userList=userDAO.findAll();
    		Map request=(Map)ServletActionContext.getContext().get("request");
    		request.put("userList", userList);
    		return ActionSupport.SUCCESS;
    	}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    7.1.5 商品类别管理功能界面
    在商品类别信息管理页面中可以列表显示出所有的类别信息,并可以选择指定的类别进行删除的操作。其实现页面如图6.6所示。
    在这里插入图片描述

    图7.6 商品类别管理界面
    如果需要添加类别信息,可以进入到类别添加页面,添加时系统会对必填项进行非空验证。其实现页面如图6.7所示。
    在这里插入图片描述

    图7.7 商品类别添加界面
    流程图如下图所示

    在这里插入图片描述

    图5.12 商品类别信息录入流程图

    类别管理关键代码:

    //查询出数据库中所有状态是为删除的商品
    public String catelogMana()
       {
    		String sql="from TCatelog where catelogDel='no'";
    		List cateLogList=catelogDAO.getHibernateTemplate().find(sql);
    		Map request=(Map)ServletActionContext.getContext().get("request");
    		request.put("cateLogList", cateLogList);
    		return ActionSupport.SUCCESS;
       }
    	//添加新类别	
    	public String catelogAdd()
    	{
    		TCatelog catelog=new TCatelog();
    		catelog.setCatelogName(catelogName);
    		catelog.setCatelogMiaoshu(catelogMiaoshu);
    		catelog.setCatelogDel("no");
    		catelogDAO.save(catelog);
    		this.setMessage("操作成功");
    		this.setPath("catelogMana.action");
    		return "succeed";
    	}
    	//删除类别
    	public String catelogDel()
    	{
    		String sql="from TGoods where goodsDel='no' and goodsCatelogId="+catelogId;
    		List goodsList=goodsDAO.getHibernateTemplate().find(sql);
    		if(goodsList.size()>0)//类别是商品表商品类别外键,需要验证
    		{
    			this.setMessage("请先删除此类别下的商品");
    			this.setPath("catelogMana.action");
    		}
    		else
    		{
    			TCatelog catelog=catelogDAO.findById(catelogId);
    			catelog.setCatelogDel("yes");//更改删除标记
    			catelogDAO.attachDirty(catelog);
    			this.setMessage("操作成功");
    			this.setPath("catelogMana.action");
    		}
    		return "succeed";
    	}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41

    7.1.6 商品信息管理功能界面
    商品信息管理页面功能是展示当前已经添加到系统当中的所有商品信息列表,可以选择指定的商品信息进行删除操作。其实现页面如图6.8中所示。
    在这里插入图片描述

    图7.8 商品信息管理界面
    如果需要添加商品信息,可以进入到商品添加页面,添加时系统会对必填项进行非空验证,是否为空是通过form表单中的οnsubmit="return checkForm()来检查,checkForm()函数中是各种的校验输入数据的方式。其实现页面如图6.9所示。
    在这里插入图片描述

    图7.9 商品添加界面
    在整个系统中所有涉及输入日期的地方都是采用的mydata97这个日历控件的方式来实现,要在工程中导入Calendar.js文件,在jsp页面开始引入

    <script type="text/javascript" src="../js/calendar.js" ></script>该js文件,在文本框的属性定义中定义方法onclick="new Calendar().show(this);"即可。
    上传功能使用com.util.upload方法,上传时调用即可。
    文本框使用网上开源的fckeditor文本框,页面直接嵌入如下代码即可使用:
    <FCK:editor instanceName="goodsMiaoshu"  basePath="/fckeditor" width="500" height="200" value="请输入内容" toolbarSet="Basic">
    </FCK:editor>
    
    • 1
    • 2
    • 3
    • 4
    • 5

    商品管理关键代码:

       //商品添加
       public String goodsNoTejiaAdd()
         {
    		TGoods goods=new TGoods();
    		goods.setGoodsCatelogId(goodsCatelogId);
    		goods.setGoodsName(goodsName);
    		goods.setGoodsYanse(goodsYanse);
    		goods.setGoodsMiaoshu(goodsMiaoshu);
    		goods.setGoodsPic(fujian);
    		goods.setGoodsShichangjia(goodsShichangjia);
    		goods.setGoodsDel("no");
    		goodsDAO.save(goods);
    		this.setMessage("操作成功");
    		this.setPath("goodsManaNoTejia.action");
    		return "succeed";
    	}
       //商品删除
    	public String goodsNoTejiaDel()
    	{
    		TGoods goods=goodsDAO.findById(goodsId);
    		goods.setGoodsDel("yes");
    		goodsDAO.attachDirty(goods);
    		this.setMessage("操作成功");
    		this.setPath("goodsManaNoTejia.action");
    		return "succeed";
    	}
    	//商品删除后页面商品显示
    	public String goodsDetailHou()
    	{
    		Map request=(Map)ServletActionContext.getContext().get("request");
    		
    		TGoods goods=goodsDAO.findById(goodsId);
    		request.put("goods", goods);
    		return ActionSupport.SUCCESS;
    	}
    	//页面初始状态商品信息
    	public String goodsDetail()
    	{
    		Map request=(Map)ServletActionContext.getContext().get("request");		
    		TGoods goods=goodsDAO.findById(goodsId);
    		request.put("goods", goods);
    		return ActionSupport.SUCCESS;
    	}	
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43

    7.1.7 订单信息管理功能界面
    订单信息管理页面功能是展示系统当中的所有订单信息列表,包括订单编号、、下单时间、订单状态、送货地址、付款方式以及总金额,点击明细按钮可以查看订单明细信息,可以选择指定的订单信息进行删除操作,也可以点击受理按钮进行受理。其实现页面如图6.10中所示。
    在这里插入图片描述

    图7.10 订单信息管理界面

    7.1.8 浏览商品信息功能界面
    会员登录系统之后可以在系统首页即可看到最新上家的商品信息,点击可查看详细内容。其实现页面如图6.11、6.12中所示。
    在这里插入图片描述

    图7.11 浏览商品信息界面
    在这里插入图片描述

    图7.12 商品详细内容界面
    7.1.9 商品信息查询功能界面
    会员登录系统之后可以按照商品名称和价格取件查询商品信息,在这里输入商品名称关键字和价格区间数字,将返回有关商品信息。

    描述:普通用户点击导航栏的“查询”。调用后台的java类goodsAction的goodsSearch方法查询所有的类别信息,并绑定这些信息到request对象中,在显示层jsp展示出来,然后用户点击类别名称,即可显示该类别的信息。
    其实现页面如图6.13所示。
    在这里插入图片描述

    图7.13 商品信息查询界面
    7.1.10 订购商品功能界面
    描述:登录用户可以将选中物品添加至购物车,可以在购物车页面看到选中商品信息。用户添加商品至购物车的流程图如图5.5所示。
    在这里插入图片描述

    图5.5 用户添加商品到购物车流程图

    会员在详细商品信息可以选择喜欢的商品进行订购,填好数量之后点击商品信息下的订购按钮,系统将跳转到购物车界面,在这里可以选择继续购物还是提交订单去收银台。其实现页面如图6.14、6.15、6.16所示。
    在这里插入图片描述

    图7.14 购物车界面
    在这里插入图片描述

    图7.15 提交订单界面
    在这里插入图片描述

    图7.16 订单提交成功提示界面

    7.1.11 订单信息查看功能界面
    会员登录之后点击右上角我的订单可以查看自己所有的订单信息,在订单信息列表中点击明细可以查看订单明细内容。其实现页面如图6.17所示。
    在这里插入图片描述

    图7.17 订单信息列表界面

    7.2 系统测试概述
    1、软件测试
    系统操作不止是对系统的结果进行判断分析是否正确,还要对系统内部的每一个模块进行细致化分析,确保每一个模块都能够有效的进行预订操作。在测试之前,要根据系统的结构层次,以及系统的类别制定科学有效的测试计划,并严格执行。为了最为真实的反应系统在真实环境下的使用情况,需要我们做到对环境进行现实的虚拟化,然后再对系统的相应时间,运行速度等等方面进行测试,然后根据测试结果再对系统进行进一步优化完善。

    2、 软件工具
    软件测试工具就是在降低人工的工作量的同时,对软件进行科学有效的功能测试的各个工具。
    该方法能够提高在软件测试方面的工作效率,一般采用以下几种工具来对软件进行测试。
    用户使用软件典型的测试工具分别为:
    [开源测试工具]:
    开源测试管理工具:Bugfree、Bugzilla、TestLink、mantis
    自动化功能操作测试工具开源:Watir、Selenium、MaxQ、WebInject
    开源自动化测试工具的性能:Jmeter、OpenSTA、DBMonster、TPTEST、Web Application Load Simulator
    [TestDirector]:测试工具所在的公司,是初次审判管理系统程序基于javaWeb产业的公司。
    [质量中心]:对于Web网页进行测试管理的软件工具,能够科学的对各个测试阶段进行有效的管理,
    [QuickTest Professional]:主要用来构建功能的运行以及数据的回归式检测。
    [LoadRunner],预测系统和负载测试工具性能的行为。
    [其他工具与自动化测试框架]:Rational Functional Tester、Borland Silk系列工具、WinRunner、Robot等。

    3、 功能测试
    从用户的角度来看,功能测试就是对系统提供的各种功能进行测试,主要是黑盒测试。它是将系统作为一个黑盒子,系统的内部结构不考虑P [ 3 ] P的具体方法和系统通过逐项检查系统的各种功能是否完善,输入正确的数据能够得到所期望的输出,以及输入错误信息时,系统也能够进行处理。

    4、 性能测试
    省略

    7.3 测试环境与测试条件
    测试环境是在Windows7系统下,WEB服务器采用Tomcat6.0版本,开发语言采用JSP、Java语言,数据库应用的是MySQL,开发工具采用MyEclipse8.6,会员端浏览器要求在IE6.0及以上版本。
    测试条件是程序环境配置好,正常运行MyEclipse和MySQL数据库正常运行的条件下测试的。

    7.4 实例测试表格
    对主要模块进行黑盒测试,测试结果如下表6.1所示:

    表6.1系统测试表
    在这里插入图片描述
    在这里插入图片描述

    8 结论
    省略

    致 谢
    省略

    参考文献
    [1] 唐友国,湛洪波.JSP网站开发详解,北京:电子工业出版社,2008
    [2] 冯艳奎,赵德奎.JSP实用案例教程,清华大学出版社,2004
    [3] 姜 仲,李绪成.Java语言程序设计,东北大学出版社,2007
    [4] 史嘉权.数据库系统概论,清华大学出版社,2006
    [5] 许令波. 深入分析Java Web技术内幕 [M],北京:电子工业出版社,2012
    [6] 张峋,杨三成. 关键技术 JSP与JDBC应用详解 [M],北京:中国铁道出版社,2010
    [7] 林信良. JSP & Servlet学习笔记 [M],北京:清华大学出版社,2012
    [8] Hector Garcia-Molina. Database System Implementation [M].北京:机械工业出版社.2010
    [9] 沈镛. 软件开发中SSH框架技术研究与应用[J]. 福建电脑,2010(6)
    [10] 刘哲. 基于SSH的电子产品企业网站的框架设计[A]. 天津工业大学,2011
    [11] 胡宾,汪伟. 论电子商务网站的设计与管理[J]. 科技经济市场,2007(4)
    [12] 周丽娟,王华. 软件工程实用教程[M]. 北京:清华大学出版社,2012
    [13] 刘兰娟. 电子商务网站开发[M]. 上海:上海财经大学出版社,2011
    [14] 曹静. 软件开发生命周期与统一建模语言UML[M]. 北京:中国水利水电出版社,2008
    [15] 谭云杰. 大象:Thinking in UML[M]. 北京:中国水利水电出版社,2009
    [16] 张永常. Java程序设计实用教程[M]. 北京:电子工业出版社,2010
    [17] 易禹,廖年东. 软件测试简明教程[M]. 武汉:武汉大学出版社,2012[10]
    [18] Li,Zhang,Weixi,Zhang.Design of tourism e-business system based on JavaEE
    multi-pattern[J]. Lecture Notes in Electrical Engineering,2012.417-424
    [19] Oracle Forms Develops And Oracle Forms Server[OL]. http://www.Oracle.com,2000
    [20] Galina Bogdanova,Todor Todorov,Dimitar Blagoev. Use of dynamic technologies
    for web-enabled database management systems[J]. Computer systems and technologies,2003.202-207

    附录A 外文原文结论
    省略

    附录B 外文资料翻译译文
    省略


    5、资源下载

    本项目源码及完整论文如下,有需要的朋友可以点击进行下载

  • 相关阅读:
    Java中什么是异常?
    两个有序序列的中位数
    Vue 中使用事件总线来进行组件间通信($emit()、$on() 和 $off())
    OA项目之我的审批(查询&会议签字)
    DB-GPT发布:用私有LLM技术彻底改革数据库互动
    南昌大学漏洞报送证书
    REDIS篇(4)——命令执行过程(readQueryFromClient)
    造一个float类型二维矩阵,并将二维矩阵存储到一个floa*中
    Docker 容器化(初学者的分享)
    【Azure】解析 Microsoft Defender for Cloud:云安全的保护与管理
  • 原文地址:https://blog.csdn.net/m0_66238867/article/details/125561929