主页 > 案例大全 > 论文方式解析-基于Web的藏品在线拍卖系统的设计与实现

论文方式解析-基于Web的藏品在线拍卖系统的设计与实现

2021-04-22 10:19:06

  随着电子商务的蓬勃发展,藏品在线拍卖已经成为一种引人瞩目的新的交易机制,在线拍卖不受时间、空间的限制,网络拍卖尽可能带给消费者最大利益,带动商品经济的快速发展,引领国民经济稳固快速发展。通过在线怕拍卖系统这个平台,可以实现拍卖的信息化、网络化、规范管理化,从繁杂的数据查询和统计中解脱出来,更好发挥电子商务的优势,系统的主要功能包括商品的管理、拍卖管理和前台网站展示。

  本系统主要使用java作为开发语言,后台数据库使用mysql,开发环境是IEDA,服务器采用tomcat,使用的框架是SpringBoot、SpringCloud微服务架构开发出的一个基于Web技术的B/S结构的在线拍卖系统。

  1.1课题背景

  电子商务是当今世界上发展速度最快、应用前景最广、内容不断变化的一个领域。互联网的发展使商家有了更加宽广的市场,电子商务正逐渐成为各商家最重视、投入力度最大的一个领域[1]。本文从网络环境下,商品管理与服务特点、拍卖信息管理与服务措施等方面进行考虑,构建一套完整的在线拍卖系统。

  1.2目的和意义

  随着全社会信息化程度加强,各种条件的成熟,目前在我国,较早进入地在线拍卖领域的有雅宝、网猎、易趣、新网、酷必得、万象、大中华等拍卖网站。从每周的用户浏览拍卖网站的频率来看,但无论是拍卖品还是服务都已经对客户形成极强的吸引力[2]。在我国,互联网正以惊人的速度发展起来,电子商务也逐渐得到政府和企业和重视,为了迎合用户日益增长的物资交流需要,在消费者之间提供便利,灵活,自由的电子商务的交易中介,设计并实现这个B2C的小型电子商务平台。

  在拍卖市场,购买者可以根据自己的需要有针对性地浏览商品,大大节约了时间和精力。而在这之前他们需要做的只是花费不到2分钟的时间成为网站的注册用户。

  第2章关键技术平台与理论介绍

  2.1相关概念

  2.1.1J2EE的概念

  J2EE是利用Java 2平台从而对企业解决方案的开发、布置和管理相关的复杂问题进行简化的一种体系构造。与此同时它还提供了对EJB(Enterprise JavaBeans)、Java Servlet API、JSP(Java Server Pages)以及XML技术的全面支持。其最后的目的便是可以成为使企业的开发者大范围减少投放到市场中所需时间的体系构造。

  2.1.2 thymleaf

  thymeleaf是一个XML/XHTML/HTML5模板引擎,它是一个开源的Java库,基于Apache License 2.0许可,主要用于页面渲染操作,可以取代之前的jsp操作。

  2.2J2EE三大框架(SSM)

  Java三大框架SSM主要用来做WEB应用。

  1)SpringMVC主要负责表示层的显示。

  2)Spring通过操纵它的IOC和AOP来处理控制业务(负责对数据库的操作)。

  3)Mybati主要是数据持久化到数据库。

  2.2.1 SpringMVC框架

  SpringMVC是一种基于Java实现的MVC设计模型的请求驱动类型的轻量级WEB框架。Spring框架提供了构建Web应用程序的全功能MVC模块。SpringMVC在三层架构中的位置:表现层框架。

  2.2.2 Spring框架

  Spring是一个开源框架,是为了解决企业应用程序开发复杂性而创建的。框架的主要优势之一就是其分层的架构,分层架构允许您选择使用哪一个组件,同时为J2EE应用程序开发提供集成的框架。

  2.2.3 Mybatis框架

  mybatis是一个优秀的基于java的持久层框架,采用ORM(对象关系映射思想解决了实体和数据库映射的问题,对jdbc进行了封装,屏蔽了jdbc api底层访问细节,使开发者只需要关注sql语句本身。就可以完成对数据库的持久化操作。

  2.3微服务架构

  微服务架构:就是将相关的功能独立出来,单独创建一个项目,并且连数据库也独立出来,单独创建对应的数据库。其本质是将相关独立的业务完全独立出来,对应的工程和数据库也完全独立出来。[3]

  2.3.1 SpringBoot

  Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。SpringBoot简化了Spring的配置,并且很容易整合第三方优秀的框架。[4]

  Spring Boot简化了基于Spring的应用开发,只需要的应用开发,只需要“run”就独立的、生产级别的Spring应用。Spring Boot为Spring平台及第三方库提供开箱即用的设置(提供默认设置),这样我们就可以简单的开始。多数Spring Boot应用只需要很少(额外)的Spring配置。我们可以使用SpringBoot创建java应用,并使用java–jar启动它,或者采用传统的war部署方式-jar。[5]我的理解,就是Spring Boot其实不是什么新的框架,它默认配置了很多框架的使用方式,就像Maven整合了所有的Jar包,Spring Boot整合了所有(大部分)的框架。SpringBoot不是对Spring功能的增强,而是提供一种快速使用Spring的开发方式(全新的开发方式)。

  2.3.2 SpringCloud

  Spring Cloud本身也是基于SpringBoot开发而来,SpringCloud是一系列框架的有序集合,也是把非常流行的微服务的技术整合到一起,是属于微服务架构的一站式技术解决方案。

  Spring Cloud包含了:

  1)注册中心:Eureka、consul、Zookeeper

  2)负载均衡:Ribbon

  3)熔断器:Hystrix

  4)服务通信:Feign

  5)网关:Gateway

  6)配置中心:config

  7)消息总线:Bus

  8)集群状态等等....功能。

  Spring Cloud协调分布式环境中各个微服务,为各类服务提供支持。Spring Cloud本身也是基于SpringBoot开发而来,SpringCloud是一系列框架的有序集合,也是把非常流行的微服务的技术整合到一起。

  第3章需求分析与可行性研究

  3.1需求调研

  在项目的开始是需求调研,对于一些藏品拍卖的网站进行调研,经过一系列的使用和比较发现,现行藏品拍卖受到地域和鉴定的缘故,用户无法了解藏品的真实性及商品价值。根据实际情况及调查结果,发现实现藏品拍卖的网络化、信息化是十分有必要的,因此设计了该藏品在线拍卖系统。

  3.2需求分析

  本项目主要实现的功能是为为广大的消费者群体与商家之间提供网络交易的平台,实现该平台的创建需要实现一系列的功能。商品信息发布的功能,商家发布自己产品的相关信息;注册登录功能,游客通过注册成为用户后可以正式开始参与拍卖等操作;参与出价功能,缴纳商品的保证金后对进行出价;并在最终竞拍结束前最高出价者得到最终藏品功能;后台管理功能,通过后台管理对商品的增添,活动的开始关闭进行操作。

  首先进行总体的分析和设计,再将基本信息模块的具体内容设计完成,然后完成其它各个子模块的功能。并要重视作好笔记。本项目采用MySql进行数据库设计,开发工具采用IDEA。

  3.3可行性分析

  开发任何一个系统,都会受到时间和资源上的限制。因此,在接受项目之前,必须根据客户可能提供的时间和资源条件进行可行性研究。它可以避免人力、物力和财力上的浪费。[6]下面就技术、经济、操作和法律四个方面来介绍。

  3.3.1技术可行性

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

  3.3.2经济可行性

  基于B2C网上拍卖系统的开发,通过从不同渠道大范围的查询相关的资料以及在通过实际操作形式对得来的资料进行独立的分析与思考之后,最终确定网络拍卖系统在经济上是可以实行的。接下来我从投入和效益这两方面来对其进行分析。

  作为独立设计的系统,不需要人力资源的投入,而且仅凭一台电脑搭建相关环境就可以完成,而且项目开发中用到的开发工具IDEA、虚拟机、服务器Tomcat、数据库MySql都是免费的开源的,投入很少,开发完成后没有盈利目的,因而可以进行开发。

  3.3.3操作可行性

  基于B2C网上拍卖系统具备多样化、个性化、多功能的界面,为用户广泛接受,而且具备竞价和限时参与等具有特色的功能,操作简单,安全性高,便于维护,所以从使用操作方面的角度来讲,该系统是值得开发的。

  3.3.4法律可行性

  作为我个人的毕业设计,该系统完全由我一人开发,因此在开发过程不需要与外界以及其他单位个人有所冲突,完全符合法律的相关规定。因此,本系统在法律上是可行的。

  通过从以上的四点进行详尽的可行性分析之后,确定开发一个基于B2C的网上拍卖系统是可以完全可行的。

  3.4系统用户用例图

  3.4.1管理员用户用例图

  管理员是系统的核心用户,涉及到用户、商品、竞拍、订单、支付、搜索、六大功能模块,管理员对系统的所有用户、商品类别、商品竞拍有着操作的权限,能够及时动态的拍卖商品的各项情况。

  图3-1管理员用例图

  3.4.2普通用户用例图

  普通用户注册加入本系统后,可以搜索、浏览商品,参与藏品的拍卖、参与竞拍、支付等功能。

  图3-2普通用户用例图

  3.5功能模块需求分析

  3.5.1管理员用户功能模块

  图3-3管理员用户功能模块图

  3.5.2普通用户功能模块

  图3-4普通用户功能模块图

  3.6性能需求

  3.6.1系统的安全性

  在线拍卖系统在管理权限上要严格进行控制,具体要求如下:

  想登录在线拍卖系统进行操作,必须有相应的操作权限,没有操作权限的用户不能通过任何方式登录系统查看系统的任何信息和数据,用以确保系统的严密性和安全性。

  3.6.2数据的完整性

  1.各种记录信息的完整性

  2.各种数据间互相联系保持正确性

  3.相同数据在不同记录中保持一致性

  3.6.3界面需求

  要求界面美观简介,方便用户熟悉操作,方面商品的管理上架、下架、出价、参与竞拍等操作。

  thymleaf技术是用JAVA语言作为脚本语言的,thymleaf网页为整个服务器端的JAVA库单元提供了一个接口来服务于HTTP的应用程序。创建动态页面非常方便。

  第4章系统功能实现

  4.1系统数据库设计

  4.1.1系统E-R图

  图4-1系统E-R图

  4.1.2数据库表设计

  微服务中,采取分库分表的方式,用户微服务、商品微服务、订单微服务等,数据库的基本设计表如下:

  4.1.2.1用户表tb_user

  表4-2用户信息表(tb_user)

  列名数据类型长度允许空是否主键说明

  username varchar 50 TRUE TRUE用户名

  password varchar 100 TRUE FALSE密码,加密存储

  phone varchar 20 FALSE FALSE注册手机号

  name varchar 50 FALSE FALSE真实姓名

  balance decimal 20 TRUE FALSE账户余额(元)

  email varchar 50 FALSE FALSE注册邮箱

  created datetime 0 TRUE FALSE创建时间

  updated datetime 0 TRUE FALSE修改时间

  nick_name varchar 50 FALSE FALSE昵称

  status varchar 1 FALSE FALSE使用状态(1正常0非正常)

  head_pic varchar 150 FALSE FALSE头像地址

  qq varchar 20 FALSE FALSE QQ号码

  is_mobile_check varchar 1 FALSE FALSE手机是否验证(0否1是)

  is_email_check varchar 1 FALSE FALSE邮箱是否检测(0否1是)

  sex varchar 1 FALSE FALSE性别,1男,0女

  user_level int 11 FALSE FALSE会员等级

  points int 11 FALSE FALSE信誉积分

  (默认都是100)

  experience_value int 11 FALSE FALSE经验值

  birthday datetime 0 FALSE FALSE出生年月日

  last_login_time datetime 0 FALSE FALSE最后登录时间

  4.1.2.2藏品主分类表tb_kind

  表4-3藏品主分类表(tb_kind)

  列名数据类型长度允许空是否主键说明

  id int 11 TRUE TRUE种类ID

  name varchar 100 FALSE FALSE种类名称

  seq int 11 FALSE FALSE排序

  4.1.2.3藏品二级分类表tb_category

  表4-4藏品二级分类表(tb_category)

  列名数据类型长度允许空是否主键说明

  id int 20 TRUE TRUE分类ID

  name varchar 50 FALSE FALSE分类名称

  kinds_id int 11 TRUE FALSE种类类别ID

  is_show char 1 FALSE FALSE是否显示

  is_menu char 1 FALSE FALSE是否作为导航分类

  count bigint 20 FALSE FALSE该分类下的商品数量

  seq int 11 FALSE FALSE排序

  4.1.2.4竞拍商品表tb_collection

  表4-5竞拍商品表(tb_collection)

  列名数据类型长度允许空是否主键说明

  id bigint 20 TRUE TRUE商品id

  name varchar 200 TRUE FALSE商品名称

  market_price decimal 20 FALSE FALSE市场(预估价)

  price decimal 20 TRUE FALSE起拍价格(元)

  transaction_price decimal 20 FALSE FALSE成交价格(元)

  image varchar 200 FALSE FALSE商品图片(封面图)

  images varchar 200 FALSE FALSE商品图片列表

  weight int 11 FALSE FALSE重量(克)

  introduction longtext 0 FALSE FALSE介绍

  kind_name varchar 200 FALSE FALSE一级类目名称

  category_id int 10 FALSE FALSE二级类目ID

  category_name varchar 200 FALSE FALSE二级类别名称

  create_time datetime 0 FALSE FALSE创建时间

  update_time datetime 0 FALSE FALSE更新时间

  is_delete char 1 FALSE FALSE是否删除

  is_marketable char 1 FALSE FALSE是否上架

  status char 1 FALSE FALSE商品状态0-未审核,1-审核通过,2-审核未通过

  start_time datetime 0 FALSE FALSE开始时间

  end_time datetime 0 FALSE FALSE结束时间

  check_time datetime 0 FALSE FALSE审核日期

  buyer_id varchar 20 FALSE FALSE出价者ID(买家的用户名)

  depositPaidPayer_ids varchar 200 FALSE FALSE已经支付了该拍卖品的保证金的用户ID(买家的用户名)

  4.1.2.5订单表tb_order

  表4-6订单表(tb_order)

  列名数据类型长度允许空是否主键说明

  id bigint 200 TRUE TRUE订单id

  username varchar 50 FALSE FALSE用户ID

  collection_id bigint 20 FALSE FALSE拍卖品Collection的ID

  collection_name varchar 200 FALSE FALSE商品的名称

  kind varchar 50 FALSE FALSE主分类名称

  category varchar 50 FALSE FALSE二级分类名称

  post_fee decimal 11 FALSE FALSE邮费

  pay_money decimal 20 FALSE FALSE实付金额

  create_time datetime 0 FALSE FALSE订单创建时间

  update_time datetime 0 FALSE FALSE订单更新时间

  pay_time datetime 0 FALSE FALSE付款时间

  consign_time datetime 0 FALSE FALSE发货时间

  end_time datetime 0 FALSE FALSE交易完成时间

  close_time datetime 0 FALSE FALSE交易关闭时间

  shipping_name varchar 20 FALSE FALSE物流名称

  shipping_code varchar 20 FALSE FALSE物流单号

  weignt int 11 FALSE FALSE重量

  receiver_contact varchar 50 FALSE FALSE收货人

  receiver_mobile varchar 12 FALSE FALSE收货人手机

  receiver_address varchar 200 FALSE FALSE收货人地址

  order_status char 1 FALSE FALSE订单状态,0:未完成,1:已完成,2:已退货

  pay_status char 1 FALSE FALSE支付状态,0:未支付,1:已支付,2:支付失败

  consign_status char 1 FALSE FALSE发货状态,0:未发货,1:已发货,2:已收货

  is_delete char 1 FALSE FALSE是否删除

  image varchar 100 FALSE FALSE图片地址

  4.2前台页面管理

  4.2.1注册与登录

  4.2.1.1注册

  图4-2新用户注册图

  4.2.1.2登录

  图4-3用户登录图

  4.2.1.3微服务之间单点登录的身份认证

  用户在登录成功后,需要访问每个微服务,而每个微服务如果都需要去请求oauth微服务去对用户身份进行认证,会增加oauth微服务的压力,于是使用公钥与私钥,即oauth微服务自己带有私钥,并将公钥放置到每个需要对用户身份进行认证的微服务中,这样就方便用户在一处登录,将用户的登录信息及Token封装到请求头中,随着用户的访问而带到不同的微服务中,不同的微服务获取请求头中的信息来对用户的身份进行认证。[7]

  图4-4单点登录的身份认证原理图

  4.2.1.4user_oauth微服务调用user微服务进行身份认证

  由于微服务中引入了SpringSecurity网关对所有微服务进行了整合,所有的请求都需要经过网关的路由,因此在用户登录的时候,需要调用oauth微服务给用户颁发JWT令牌,但是oauth微服务调用user微服务查询用户表的没有令牌信息,需要使用拦截器,将管理员的令牌封装到Feign调用前的头信息中,才能顺利访问到user微服务,如图4-5所示:

  图4-5 user_oauth微服务调用user微服务进行身份认证原理图

  4.2.2商品搜索

  为了满足用户对商品进行搜索而出现的高并发,将Mysql中的数据经过ik分词器对数据名称等词汇进行分词并导入到ES索引库,对商品数据进行全文搜索,以满足PB级别的访问需求,并且实现分类搜索、价格排序搜索、上架时间排序搜索、拍卖时间段进行搜索等,并且实现搜索关键词的高亮显示。

  图4-6对商品进行搜索

  图4-7搜索条件高亮显示

  4.2.3浏览限时拍卖会场

  图4-8限时拍卖会场

  实现符合当前时间段的藏品的数据自动导入到redis数据库中,需要设置一个定时任务,定时地将当前时间端的商品数据存储到redis中。

  4.2.3商品详情

  用户可以浏览商品的详情,如果参加当前商品的竞拍,需要缴纳本商品的保证金(第一次出价前会扣除),并且可以多次出价,如果当前商品结束竞拍后,定时任务会自动生成该商品的订单信息,并且将退还竞拍失败用户的保证金。

  图4-9商品详情图

  4.2.4查看我的订单

  用户可以查看自己的所有订单,包括已经完成的订单和竞拍成功但是未支付尾款的订单。

  图4-10用户订单图

  4.2.5订单结算

  当用户点击结算未支付尾款的订单,会调用用户微服务,查询用户的默认地址信息和联系人信息,若账户余额足够,会修改订单的支付状态。若余额不足,则提示用户失败原因。

  图4-11订单结算图

  4.2.6尾款支付

  图4-12尾款支付成功图

  图4-13尾款支付失败图

  4.3后台页面管理

  图4-14后台管理登录

  4.3.1用户管理

  图4-15用户管理

  4.3.2藏品管理

  图4-16商品管理

  4.3.3订单管理

  图4-17订单管理

  第5章系统测试与分析

  5.1程序调试

  在整个程序开发的过程中,一定会存在一些错误。当程序运行时出现语句的语法错误时,会有自动提示,会得到及时的纠正,所以这类错误更简单的得到发现和纠正。

  5.2程序的测试

  网站测试是软件设计的最后一道工序,也是非常重要的一步。其重要性体现在软件测试是保证系统质量与可靠性的最后关口,是对整个系统开发过程中包括系统分析、系统设计和系统实现的最终审查。

  5.2.1测试的重要性与目的

  (1)测试的重要性

  在软件生命周期中对软件的测试是非常重要的一个部分,在过去常使用的瀑布模型中,在运行维护阶段之前才会使用到软件测试学。近年来,软件工程界开始倾向于一种新的观念,即软件生命周期中的各个阶段里都需要进行测试,倘若没能在前期阶段就开始测试,错误的在后面阶段的扩散往往会致使最后成品测试的更大问题。

  (2)测试的目的

  查找漏洞并不是测试工作的唯一目的。测试人员可以通过分析错误的分布特征和错误产生的原因来帮助项目管理者尽快发现当前软件过程的缺陷,方便进行下一步的改进。而且我们通过这样的测试可以由此设计出对相关软件更有效便捷地检测方法,提高测试的性能。而且有价值的测试不一定非要找到程序的缺陷错误,能够完整的测试是一种评判测量好坏的方式。

  5.2.2测试的步骤

  测试的步骤和软件开发的过程相类似,软件测试也必须分步骤有序进行,一步一步有序的进行,每一步都前后衔接。若干个模块组成一个个的子系统,再有一个个子系统组成大型的软件模块。所以倘若在大型软件系统上测试基本要进行以下几个步骤:[8]

  (1)在模块测试过程中发现的常常是在编码和详细设计方面的错误。

  (2)在系统测试步骤中发现的常常是软件设计方面的错误,也有时会发现需求说明方面的错误。

  (3)在验收测试的过程中经常发现的是系统需求说明书中的错误。