Springboot捷安网上拍卖系统-59317计算机毕业设计 赠送源码

Springboot捷安网上拍卖系统

摘 要

信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题。针对网上拍卖等问题,对网上拍卖进行研究分析,然后开发设计出网上拍卖系统以解决问题。

网上拍卖系统主要功能模块包括系统首页、网站管理(轮播图、公告栏)人员管理(管理员、卖家、竞拍者)内容管理(拍卖新闻、新闻分类)模块管理(订单评价、订单售后、商品分类、商品信息、参与竞拍、竞拍商品、竞拍结果、办理交割)个人中心,采取面对对象的开发模式进行软件的开发和硬体的架设,能很好的满足实际使用的需求,完善了对应的软体架设以及程序编码的工作,采取Mysql作为后台数据的主要存储单元,采用java技术、Ajax技术进行业务系统的编码及其开发,实现了本系统的全部功能。本次报告,首先分析了研究的背景、作用、意义,为研究工作的合理性打下了基础。针对捷安网上拍卖系统的各项需求以及技术问题进行分析,证明了系统的必要性和技术可行性,然后对设计系统需要使用的技术软件以及设计思想做了基本的介绍,最后来实现网上拍卖系统和部署运行使用它。

关键词:网上拍卖;java技术;Mysql数据库

Springboot online auction system

Abstract

Targeted information access is needed in the information society, but the expansion of the access is basically the direction that people strive for. Due to the deviation of the perspective, people can often obtain different types of information, which is also the most difficult topic for technology to overcome. Aiming at online auction and other problems, this paper studies and analyzes online auction, and then develops an online auction system to solve the problems.

The main functional modules of the online auction system include the system home page, website management (broadcast chart, bulletin board), personnel management (administrator, seller, bidder), content management (auction news, news classification), module management (order evaluation, order after-sales, commodity classification, commodity information, participation in auction, auction commodities, auction results, handling delivery) and personal center, The object-oriented development mode is adopted for software development and hardware erection, which can well meet the needs of actual use, and improve the corresponding software erection and program coding. MySQL is used as the main storage unit of background data, and Java technology and Ajax technology are used for business system coding and development, realizing all functions of the system. This report first analyzes the background, role and significance of the research, laying a foundation for the rationality of the research work. Based on the analysis of the requirements and technical problems of the online auction system of Jian, this paper proves the necessity and technical feasibility of the system, and then makes a basic introduction to the technical software and design ideas needed for the design of the system. Finally, it realizes the online auction system and uses it to run the department.

Keywords: online auction; Java technology; MySQL database

目   录

第1章 绪论

1.1 研究背景与意义

1.2 开发现状

1.3 研究方法

第2章 相关技术介绍

2.1 HTTP协议

2.2 HTML网页技术

2.3 B/S结构

2.4 spring boot框架介绍

2.5 Mysql数据库

2.6 MVVM模式介绍

第3章 系统分析

3.1 可行性分析

3.2 功能需求分析

3.2.1 前台用户功能

3.2.2 后台管理员功能

3.3 非功能需求分析

3.4 安全性需求分析

3.4.1 系统的安全性

3.4.2 数据的安全性

3.5 数据流程分析

第4章 系统设计

4.1 系统架构设计

4.2 系统总体设计

4.3 系统功能设计

4.4 数据库设计

4.4.1 数据需求分析

4.4.2 数据库概念设计

4.4.3 数据库表设计

第5章 系统实现

5.1 数据库访问层的实现

5.2 注册模块的实现

5.3 登录模块的实现

5.4 用户资料修改模块的实现

5.5 评论模块的实现

5.6 参与竞拍模块的实现

5.7 商品管理模块的实现

第6章 系统测试

6.1 测试目的

6.2 功能测试

6.3 性能测试

第7章 总结与展望

参考文献

致    谢

  1. 绪论
    1. 研究背景与意义

随着网络技术的发展和国人购物意识的不断增强,shopping online成为一种新型的购物方式,正逐渐被国人所接受并认可。而网上购物的方式之一的网上拍卖,给人们的购物带来一种全新的体验。它具有一般购物网站的成本低,方式灵活,运转快捷等的特点,更具有自由竞争和公平合理的特性。人们可以通过网站发出自己想拍卖的物品的信息,也可以通过竞价购买自己想要的物品。对于大多数人来说,很多东西可能不需要或暂时用上,但是,这些东西又不能将其丢了,或者一直放在自己的仓库里,这种做法对于商品的价值来说是浪费的,商品的使用才是商品价值的体现。为此,本人的拍卖网站满足了这些人们的需求,他们可以将自己的商品在本人的拍卖网上进行出售,当然,这些操作是十分简单的,它满足了正常买家和卖家的需求。本人的拍卖网站可以更加方便的实现国人们对于商品买卖的需求,用简洁明了的界面,让顾客清楚地进行商品的筛选;简单可行的操作,使得卖家方便地甩卖自己的商品。致力于方便国人的拍卖系统。

    1. 开发现状

网上拍卖发展了传统的“公开、公平、公正”的概念和内容,具有高度的透明度,在我国经济发展中必将发挥重要的作用。因此,尽管今天它面临着“网上拍卖”法律未完善,没有信用制度,竞争压力大,体制不全面等的制约,但可以肯定不久的将来,网上拍卖业必将与我国互联网一同高速发展,成为21世纪中国商业活动最普遍的形式。

网上拍卖系统不仅是网络时代消费者定价原则的体现,更重要的是拍卖网站营造了一个供需有效集结的市场,成为消费者和生产商各取所需的场所,因此是一种典型的中介型电子商务形式。相对与传统拍卖,网上拍卖的特点在于每个商家都可以制定一套适合自己的拍卖规则,并且通过网上拍卖系统还可以使定价达到更准确的水平,同时能够参与拍卖的人的范围也大大增加了。

    1. 研究方法

首先,通过引擎搜索或者查阅相关文献资料,了解了本系统开发的背景以及设计系统的意义所在,收集用户需求信息。其次,在开发工具上,最终确定选用springboot平台来设计开发本系统,Mysql作为设计数据库的工具。即利用java语言实现用户界面,并同数据库连接起来实现完整的通信功能。之后,设计出系统大致的功能模块。主要从方便系统用户和系统管理员的角度进行分析,明确该系统应该具有的功能。最终是测试系统,通过用例测试发现存在的问题并找到解决的方案。利用现有的开发平台,结合自己所学的知识,在老师的指导帮助下来完成该设计,确保系统的可用性、实用性。

  1. 相关技术介绍
    1. HTTP协议

超文本传输协议(HTTP)作为协作式与分布式的通信协议,其以万维网交换信息作为前提条件。HTTP为IEIF的国际化标准指标,在制定相关标准与实现内,W3C积极参与其中,同时发挥着不可替代的作用。其能够借助超文本标记语言,将文档在服务器与浏览器之间相互传输。HTML作为构架文档的标记语言,这些文档内将包括有关信息的链接,用户仅需要点击其中一个链接就能够访问多媒体对象与图像,同时获得该链接项所具有的附加信息[1][2]。

    1. HTML网页技术

HTML是一种制作网页的常用语言,它一般是用于制作静态页面。它的命令是可以体现文字信息、链接信息、图形信息和表格信息等等。现在它被大众普遍接受广泛应用在网络上[3]。

    1. B/S结构

在系统的开发上采用了B/S结构,在B/S结构中,统一采用浏览器,而不需要去开发任何的用户界面,Web浏览器向处理它的Web服务器发送请求,并一步一步地将处理结果返回给客户端。B/S结构主要采用了各种脚本语言和ActiveX技术,降低了系统的开发难度并简化了系统维护以及使用[4]。

B/S结构有如下特点:B/S结构建立在广域网上,不需要专门为其配置硬件环境,比C/S结构的适应范围更强;由于其基于广域网,所以其对安全的控制能力相对较弱;B/S的多种结构要求构造相对独立的函数,这样才能可以更好地重用;B/S结构组成简单,便于对个别构件进行更换,降低了系统的维护成本B/S信息流向与C/S不同,B/S信息流向可变化[5]。

    1. spring boot框架介绍

Spring框架是Java平台上的一种开源应用框架,提供具有控制反转特性的容器。尽管Spring框架自身对编程模型没有限制,但其在Java应用中的频繁使用让它备受青睐,以至于后来让它作为EJB(EnterpriseJavaBeans)模型的补充,甚至是替补。Spring框架为开发提供了一系列的解决方案,比如利用控制反转的核心特性,并通过依赖注入实现控制反转来实现管理对象生命周期容器化,利用面向切面编程进行声明式的事务管理,整合多种持久化技术管理数据访问,提供大量优秀的Web框架方便开发等等。Spring框架具有控制反转(IOC)特性,IOC旨在方便项目维护和测试,它提供了一种通过Java的反射机制对Java对象进行统一的配置和管理的方法。Spring框架利用容器管理对象的生命周期,容器可以通过扫描XML文件或类上特定Java注解来配置对象,开发者可以通过依赖查找或依赖注入来获得对象。Spring框架具有面向切面编程(AOP)框架,SpringAOP框架基于代理模式,同时运行时可配置;AOP框架主要针对模块之间的交叉关注点进行模块化。Spring框架的AOP框架仅提供基本的AOP特性,虽无法与AspectJ框架相比,但通过与AspectJ的集成,也可以满足基本需求。Spring框架下的事务管理、远程访问等功能均可以通过使用SpringAOP技术实现。Spring的事务管理框架为Java平台带来了一种抽象机制,使本地和全局事务以及嵌套事务能够与保存点一起工作,并且几乎可以在Java平台的任何环境中工作。Spring集成多种事务模板,系统可以通过事务模板、XML或Java注解进行事务配置,并且事务框架集成了消息传递和缓存等功能。Spring的数据访问框架解决了开发人员在应用程序中使用数据库时遇到的常见困难。它不仅对Java:JDBC、iBATS/MyBATIs、Hibernate、Java数据对象(JDO)、ApacheOJB和ApacheCayne等所有流行的数据访问框架中提供支持,同时还可以与Spring的事务管理一起使用,为数据访问提供了灵活的抽象。Spring框架最初是没有打算构建一个自己的WebMVC框架,其开发人员在开发过程中认为现有的StrutsWeb框架的呈现层和请求处理层之间以及请求处理层和模型之间的分离不够,于是创建了SpringMVC。

    1. Mysql数据库

Mysql 经过多次的更新,功能层面已经非常的丰富和完善了,从Mysql4版本到5版本进行了比较大的更新,在商业的实际使用中取得了很好的实际应用效果。最新版本的Mysql支持对信息的压缩,同时还能进行加密能更好的满足对信息安全性的需求。同时经过系统的多次更新,数据库自身的镜像功能也得到了很大的增强,运行的流畅度和易用性方面有了不小的进步,驱动的使用和创建也更加的高效快捷。最大的变动还是进行了空间信息的显示优化,能更加方便的在应用地图上进行坐标的标注和运算。强大的备份功能也保证了用户使用的过程会更加安心,同时支持的Office特性还支持用户的自行安装和使用。在信息的显示形式上也进行了不小的更新,增加了两个非常使用的显示区,一个是信息区,对表格和文字进行了分类处理,界面的显示更加清爽和具体。第二是仪表的信息控件,能在仪表信息区进行信息的显示,同时还能进行多个信息的比对,为用户的实际使用带来了很大的便捷[8][9]。

针对本文中设计的网上拍卖系统在实际的实现过程中,最终选择Mysql数据库的主要原因在于在企业的应用系统应用及开发的过程中会存在大量的数据库比较频繁的操作,而且数据的安全性要求也是非常的高。综合这些因素,最终选择安全性系数比较高的Mysql来对网上拍卖系统后台数据进行存储操作[10][11]。

数据库管理系统的总体结构图如下图所示。

图2-1 数据库组成结构

    1. MVVM模式介绍

MVVM是Model-View-ViewModel的简写。它本质上就是MVC 的改进版。MVVM 就是将其中的View 的状态和行为抽象化,让我们将视图 UI 和业务逻辑分开。当然这些事 ViewModel 已经帮我们做了,它可以取出 Model 的数据同时帮忙处理 View 中由于需要展示内容而涉及的业务逻辑。微软的WPF带来了新的技术体验,如Silverlight、音频视频3D动画……,这导致了软件UI层更加细节化、可定制化。同时,在技术层面,WPF也带来了 诸如Binding、Dependency Property、Routed Events、Command、DataTemplate、ControlTemplate等新特性。MVVM(Model-View-ViewModel)框架的由来便是MVP(Model-View-Presenter)模式与WPF结合的应用方式时发展演变过来的一种新型架构框架。它立足于原有MVP框架并且把WPF的新特性糅合进去,以应对客户日益复杂的需求变化。

  1. 系统分析
    1. 可行性分析

技术性方面,采用当前主流的java技术进行系统主体框架的搭建,前台使用jquery,ajax,实现前台页面的设计与美观调整,以上技术,均由本人经过系统学习,并且都是在课程设计中实践过的,可以使得开发更加便捷和系统。从技术角度看,这个系统是完全可以实现的。

实用性方面,本次设计的主要任务是在网上拍卖系统内商品商品查询、在线竞拍、论坛交流等,符合当前潮流的发展。从用户角度出发,同时也考虑系统运营成本和人力资源,采用网络上的便捷方式,实现线上业务,使得业务流程更系统,也更方便用户的体验,比较实用。

经济性方面,由于本课题中设计的网上拍卖系统的主要目的是为了能够更加方便及快捷的进行信息的查询管理及检索服务,也就是能够可以直接投入使用的信息化软件。系统的主要成本主要是集中在对使用数据后期继续维护及其管理更新这个操作上。但是一旦系统投入到实际的运行及使用之后就能够很好的提高信息查询检索的效率,同时也需要有效的保证查询者的信息方面的安全性,同时这个网上拍卖系统所带来的实际应用方面的价值是远远的超过了实际系统进行开发与维护方面的成本,因此,从经济上来说开发这个软件是可行的。

    1. 功能需求分析

网上拍卖系统的功能主要分为前台用户根据自己的需求进行注册登录,浏览拍卖信息并对选中的商品进行竞拍操作。后台系统管理员、卖家、竞拍者权限不同,卖家主要对竞拍单进行处理,处理订单发货单,而超级管理员主要对注册用户,资讯数据,拍卖详细信息,订单详细信息,订单发货单进行处理。

竞拍者用例图如下所示。

图3-1 竞拍者用例图

管理员用例图如下所示。

图3-1 管理员用例图

卖家用例图如下所示。

图3-1 卖家用例图

      1. 前台用户功能

前台用户可分为未注册用户需求和以注册用户需求。

未注册用户的功能如下:

注册账号:用户填写个人信息,并验证手机号码。

浏览资讯数据:用户可以浏览主页面的资讯数据来了解系统的最新资讯数据。

浏览商品:用户可以根据商品类型浏览商品的信息,并选中某个商品查看详情,例如:商品编号、商品名称、商品类别、图片、当前价格、竞拍结束时间等。

浏览评论信息:选中某个商品可查看其用户的评论。

已注册用户的功能如下:

登录:根据账号密码进行登录操作。

维护个人信息:用户因个人信息的变更可以随时修改自己注册信息。

浏览评论信息:选中某间商品可查看其用户的评论。

商品竞拍:用户根据自己的需求选中某个商品进行竞拍操作。

查看历史竞拍单:用户可以查看自己以往竞拍的信息。

评论:用户可以根据自己的观点看法对相关商品进行评论。

个人订单发货历史记录:用户可以查看自己以往发货数据。

收藏:在商品的基础上对商品的收藏,收藏按时间形成收藏列表,个人对其收藏夹进行维护和整理。

论坛交谈:论坛交谈在用户模块里主要以发帖回帖的形式展示出来,用户在想要讨论的版块里进行谈论话题即可。

      1. 后台管理员功能

修改密码:管理员可以随时修改自己进入系统的登录密码,以保证系统的安全性。

对竞拍单信息进行处理:查看竞拍单信息,办理竞拍单审核等。

超级管理员功能如下:

商品信息管理:对商品信息进行维护,添加、删除、修改信息。

订单信息管理:对订单信息进行维护,添加、删除、修改信息。

对发货单信息进行处理:办理发货单发出等。

资讯数据信息管理:发布、删除相关的资讯数据信息。

评论信息管理:可以查看用户的评论,及时了解用户发起的建议。

用户管理:可以查看注册用户的信息,并对其进行管理。

消息发送:管理员给用户发送竞拍消息,通知用户是否竞拍成功。

    1. 非功能需求分析

首先主要考虑的是系统功能软件,在具体设计的环节上,是不是能够较好的满足各类用户的基本功能需求,如果不能较好的满足用户需求,那么这个系统的存在是没有价值的。软件系统的非功能性求分析,从7个方面展开,一个是性能分析,针对系统;一个是安全分析,针对系统,一个是完整度分析,针对系统,一个是可维护分析,针对系统,一个是可扩展性分析,针对系统,一个是适应业务的性能分析。面对网上拍卖系统存在的性能、安全、扩展、完整度等7个方面性能综合比对分析后发现,需要相应的非功能性需求分析。

    1. 安全性需求分析
      1. 系统的安全性

安全性对每一个系统来说都是非常重要的。安全性很好的系统可以保护企业的信息和用户的信息不被窃取。提高系统的安全性不仅是对用户的负责,更是对企业的负责。尤其针对于网上拍卖系统来说,必须要有很好的安全性来保障整个系统。

系统具有对使用者有权限控制,针对角色的不通限制使用者的权限,以此来确保系统的安全性。

      1. 数据的安全性

数据库中的数据是从外界输入的,当数据的输入时,由于种种原因,输入的数据会无效,或者是脏数据。因此,怎样保证输入的数据符合规定,成为了数据库系统,尤其是多用户的关系数据库系统首要关注的问题。

因此,在写入数据库时,要保证数据完整性、正确性和一致性。

    1. 数据流程分析

对系统的数据流进行分析,系统的使用者分为二类,一般用户,管理员。系统主要对界面信息传送,登录信息的验证,注册信息的接收,用户各种操作的响应做处理。

系统顶层数据流图如下图所示。

图3-2 顶层数据流图

要判断用户是是什么身份,是根据登录的数据来判断后,跳转到对应的功能界面。在系统的内部用户就可以对数据进行操作,数据库中心就可以接收到系统传输的有效数据流来对数据sql语句进行对应操作。

系统底层数据流图如下图所示。

 图3-3 底层数据流图

系统可以分为前台和后台两部分,每一种操作后系统都返回操作结果。前台和后台的数据连接主要通过数据库,既分别对数据库做不同的操作。

  1. 系统设计
    1. 系统架构设计

本网上拍卖系统的架构设计主要分为可以3层,主要有Web层,业务层,Model层。其中web层还包括View层和Controller层,Model层包括元数据扩展层和数据访问层。

系统架构如下图所示。

图4-1 系统架构

    1. 系统总体设计

网上拍卖系统总体分为前台用户模块和后台管理员模块。

两个模块表现上是分别独立存在,但是访问的数据库是一样的。每一个模块的功能都是根据先前完成的需求分析,并查阅相关资料后整理制作的。

综上所述,系统功能结构图如下图所示。

图4-2 系统功能结构图

    1. 系统功能设计

登录模块:登录模块是进入系统的入口,所有用户必须登录后才能访问系统。登录需要输入用户名和密码,如果多次尝试登录需要输入验证码。登录时需要选择用户的角色,是一般用户还是管理员登录等。登录成功后,会通过数据库获取用户的权限,并跳转至用户的主页面。

管理员用户管理模块:管理员管理包括:管理员的添加,修改和删除操作。添加管理员时,先判断用户添加的管理员是否是admin(超级管理员),如果不是则添加成功。修改时候,如果是超级管理员,可以修改所有管理员的信息,如果是普通管理员,那么只能修改自己的信息。超级管理员可以删除自己以外的所有其他管理员,普通管理员不能执行删除管理员的操作。

评价模块:评价模块促进用户对商品进行点评,查看某个商品已存在的评价,发表评价可以达到真实描述商品的效果。

资讯数据模块:可分为资讯数据浏览、资讯数据检索、资讯数据维护三个模块,管理员对资讯数据有维护的权限,发布新的资讯数据、更新已有的资讯数据等。

商品管理模块:商品管理分为商品添加、修改和商品竞拍。商品信息由管理员进行修改、添加、删除操作;商品竞拍由普通用户来执行。

订单管理模块:订单管理分为订单添加、修改和订单发货。订单信息由管理员进行修改、添加、删除操作;订单发货由普通用户来执行。

    1. 数据库设计
      1. 数据需求分析

从前面可以分析到数据库中最重要的是商品信息,用户信息,管理员信息,同时存在竞拍信息和发货信息。分析可以得到如下数据描述:

平台用户:用于记录用户的各种信息,包括用户名、密码、头像、姓名、性别、年龄、联系手机、邮箱等数据项。

管理员:记录管理员的登录信息。包括用户名,密码,权限等数据项。

商品:存放给商品的内容,包括商品编号、商品名称、商品类别、图片、当前价格、竞拍结束时间等数据项。

商品竞拍:存储用户的商品竞拍信息。包括商品竞拍的商品编号、商品名称、商品类别、当前价格、加价、实拍价、收货人、收货地址、联系电话、竞拍人、是否支付、是否竞拍成功等数据项。

资讯数据:存储平台内的资讯数据内容。包括标题,资讯数据内容,时间等数据项。

      1. 数据库概念设计

根据前面的数据流程图,结合系统的功能模块设计,设计出符合系统的各信息实体。

系统ER图如下图所示。

图4-3 系统ER图

      1. 数据库表设计

由于数据表较多,只展示系统主要数据表,如下表所示。

bidders

字段名称

类型

长度

不是null

主键

字段说明

bidders_id

int

11

主键

竞拍者ID

name_of_bidder

varchar

64

竞拍者姓名

age

varchar

64

年龄

gender

varchar

64

性别

examine_state

varchar

16

审核状态

recommend

int

11

智能推荐

user_id

int

11

用户ID

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

bidding_goods

字段名称

类型

长度

不是null

主键

字段说明

bidding_goods_id

int

11

主键

竞拍商品ID

article_no

varchar

64

商品编号

trade_name

varchar

64

商品名称

commodity_type

varchar

64

商品类型

picture

varchar

255

图片

place

varchar

64

地点

specifications

varchar

64

规格

texture_of_material

varchar

64

材质

particular_year

varchar

64

年份

price

int

11

价格

current_price

int

11

当前价格

stock

varchar

64

库存

auction_time

varchar

64

拍卖时间

bond

int

11

保证金

details_of_competitive_products

longtext

0

竞品详情

seller_no

int

11

卖家编号

seller_name

varchar

64

卖家姓名

hits

int

11

点击数

praise_len

int

11

点赞数

recommend

int

11

智能推荐

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

bidding_results

字段名称

类型

长度

不是null

主键

字段说明

bidding_results_id

int

11

主键

竞拍结果ID

order_number

varchar

64

订单号

article_no

varchar

64

商品编号

trade_name

varchar

64

商品名称

commodity_type

varchar

64

商品类型

seller_no

int

11

卖家编号

seller_name

varchar

64

卖家姓名

final_price

int

11

最终价格

bidders_account

int

11

竞拍者账号

name_of_bidder

varchar

64

竞拍者姓名

bidding_results

varchar

64

竞拍结果

recommend

int

11

智能推荐

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

commodity_classification

字段名称

类型

长度

不是null

主键

字段说明

commodity_classification_id

int

11

主键

商品分类ID

commodity_category

varchar

64

商品类型

recommend

int

11

智能推荐

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

handling_settlement

字段名称

类型

长度

不是null

主键

字段说明

handling_settlement_id

int

11

主键

办理交割ID

order_number

varchar

64

订单号

article_no

varchar

64

商品编号

trade_name

varchar

64

商品名称

commodity_type

varchar

64

商品类型

seller_no

int

11

卖家编号

seller_name

varchar

64

卖家姓名

final_price

varchar

64

最终价格

bidders_account

int

11

竞拍者账号

name_of_bidder

varchar

64

竞拍者姓名

bond

int

11

保证金

balance_payment

varchar

64

尾款

relevant_certificates

text

0

相关证件

enclosure

varchar

255

附件

examine_state

varchar

16

审核状态

pay_state

varchar

16

支付状态

pay_type

varchar

16

支付类型: 微信、支付宝、网银

recommend

int

11

智能推荐

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

order_after_sales

字段名称

类型

长度

不是null

主键

字段说明

order_after_sales_id

int

11

主键

订单售后ID

order_number

varchar

64

订单号

seller_no

int

11

卖家编号

seller_name

varchar

64

卖家姓名

trade_name

varchar

64

商品名称

number_of_auctions

varchar

64

竞拍数量

bidders_account

int

11

竞拍者账号

name_of_bidder

varchar

64

竞拍者姓名

contact_number

varchar

64

联系电话

ship_to_address

text

0

收货地址

after_sales_type

varchar

64

售后类型

refund_amount

varchar

64

退款金额

reason_for_refund

text

0

退款原因

examine_state

varchar

16

审核状态

examine_reply

varchar

16

审核回复

recommend

int

11

智能推荐

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

order_evaluation

字段名称

类型

长度

不是null

主键

字段说明

order_evaluation_id

int

11

主键

订单评价ID

order_number

varchar

64

订单号

article_no

varchar

64

商品编号

trade_name

varchar

64

商品名称

seller_no

int

11

卖家编号

bidders_account

int

11

竞拍者账号

name_of_bidder

varchar

64

竞拍者姓名

score

varchar

64

评分

evaluation_content

text

0

评价内容

recommend

int

11

智能推荐

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

participation_in_auction

字段名称

类型

长度

不是null

主键

字段说明

participation_in_auction_id

int

11

主键

参与竞拍ID

order_number

varchar

64

订单号

article_no

varchar

64

商品编号

trade_name

varchar

64

商品名称

commodity_type

varchar

64

商品类型

current_price

varchar

64

当前价格

bond

varchar

64

保证金

seller_no

int

11

卖家编号

seller_name

varchar

64

卖家姓名

bidders_account

int

11

竞拍者账号

name_of_bidder

varchar

64

竞拍者姓名

contact_number

varchar

64

联系电话

ship_to_address

text

0

收货地址

whether_to_mark_up

varchar

64

是否加价

offer

varchar

64

出价

bidding_time

datetime

0

出价时间

pay_state

varchar

16

支付状态

pay_type

varchar

16

支付类型: 微信、支付宝、网银

recommend

int

11

智能推荐

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

product_information

字段名称

类型

长度

不是null

主键

字段说明

product_information_id

int

11

主键

商品信息ID

article_no

varchar

64

商品编号

trade_name

varchar

64

商品名称

commodity_type

varchar

64

商品类型

place

varchar

64

地点

specifications

varchar

64

规格

price

int

11

价格

particular_year

varchar

64

年份

picture

varchar

255

图片

details

longtext

0

详情

hits

int

11

点击数

praise_len

int

11

点赞数

recommend

int

11

智能推荐

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

seller

字段名称

类型

长度

不是null

主键

字段说明

seller_id

int

11

主键

卖家ID

seller_no

varchar

64

卖家编号

seller_name

varchar

64

卖家姓名

gender

varchar

64

性别

age

varchar

64

年龄

examine_state

varchar

16

审核状态

recommend

int

11

智能推荐

user_id

int

11

用户ID

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

  1. 系统实现
    1. 数据库访问层的实现

从B/S架构的原理可知,网上拍卖系统的各大模块的实现均需要对数据库的数据进行操作,具体包括查询数据、写入数据、更新数据和删除数据,因此,在开发各功能模块前,首先创建一个名称"conn.php"的文件,该文件主要用于连接数据,以后对程序需要操作数据时,可能使用语句"<?php reqiure_once('conn.php');?>"调用就可以了。

该文件的代码如下:

server:

  port: 5000

  servlet:

    context-path: /api

spring:

  datasource:

    url: jdbc:mysql://127.0.0.1:3306/CS725260_20211101091736?serverTimezone=GMT%2B8&useSSL=false&characterEncoding=utf-8

    username: root

    password: root

    driver-class-name: com.mysql.cj.jdbc.Driver

  jackson:

    property-naming-strategy: CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES

    default-property-inclusion: ALWAYS

    time-zone: GMT+8

    date-format: yyyy-MM-dd HH:mm:ss

  servlet:

    multipart:

      max-file-size: 100MB

      max-request-size: 100MB

    1. 注册模块的实现

用户在填写数据的时候必须与注册页面上的验证相匹配否则会注册失败,注册页面的表单验证是通过JavaScript进行验证的,用户名的长度必须在6到18之间,邮箱必须带有@符号,密码和密码确认必须相同,你输入的密码,系统会根据你输入密码的强度给出指定的值,电话号码和身份证号码必须要求输入格式与生活相符合,当你前台验证通过的时候你点击注册,表单会将你输入的值通过name值传递给后台并保存到数据库中。

用户注册流程图如下图所示。

图5-1用户注册流程图

用户注册界面如下图所示。

图5-2用户注册界面

用户注册的关键代码为:

/**

     * 注册

     * @param user

     * @return

     */

    @PostMapping("register")

    public Map<String, Object> signUp(@RequestBody User user) {

        // 查询用户

        Map<String, String> query = new HashMap<>();

        query.put("username",user.getUsername());

        List list = service.select(query, new HashMap<>()).getResultList();

        if (list.size()>0){

            return error(30000, "用户已存在");

        }

        user.setUserId(null);

        user.setPassword(service.encryption(user.getPassword()));

        service.save(user);

        return success(1);

}

/**

     * 用户ID:[0,8388607]用户获取其他与用户相关的数据

     */

    @Id

    @GeneratedValue(strategy = GenerationType.IDENTITY)

    @Column(name = "user_id")

    private Integer userId;

    /**

     * 账户状态:[0,10](1可用|2异常|3已冻结|4已注销)

     */

    @Basic

    @Column(name = "state")

    private Integer state;

    /**

     * 所在用户组:[0,32767]决定用户身份和权限

     */

    @Basic

    @Column(name = "user_group")

    private String userGroup;

    /**

     * 上次登录时间:

     */

    @Basic

    @Column(name = "login_time")

    private Timestamp loginTime;

    /**

     * 手机号码:[0,11]用户的手机号码,用于找回密码时或登录时

     */

    @Basic

    @Column(name = "phone")

    private String phone;

    /**

     * 手机认证:[0,1](0未认证|1审核中|2已认证)

     */

    @Basic

    @Column(name = "phone_state")

    private Integer phoneState;

    /**

     * 用户名:[0,16]用户登录时所用的账户名称

     */

    @Basic

    @Column(name = "username")

    private String username;

    /**

     * 昵称:[0,16]

     */

    @Basic

    @Column(name = "nickname")

    private String nickname;

    /**

     * 密码:[0,32]用户登录所需的密码,由6-16位数字或英文组成

     */

    @Basic

    @Column(name = "password")

    private String password;

    /**

     * 邮箱:[0,64]用户的邮箱,用于找回密码时或登录时

     */

    @Basic

    @Column(name = "email")

    private String email;

    /**

     * 邮箱认证:[0,1](0未认证|1审核中|2已认证)

     */

    @Basic

    @Column(name = "email_state")

    private Integer emailState;

    /**

     * 头像地址:[0,255]

     */

    @Basic

    @Column(name = "avatar")

    private String avatar;

    /**

     * 创建时间:

     */

    @Basic

    @Column(name = "create_time")

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")

    private Timestamp createTime;

    @Basic

    @Transient

    private String code;

}

    1. 登录模块的实现

主要由两部分组成,登录前的登录界面以及登录后的用户功能界面。登录界面,要求用户输入用户名和密码,当用户名和密码其中一个输入为空时,给出提示“用户名,密码不能为空”。获取用户名和密码后到数据库中查找,如果用户名存在,以及对应的密码正确,则登录成功,否则登录失败。登录失败后给出提示,并把焦点停在文本框中。登录成功后将该次会话的全局变量username设置为用户名。登录成功后进入会员的功能模块,主要有会员基本信息修改,已经发布商品信息管理,发布信息,和退出功能。退出功能是清除全局变量username的值,并跳回到首页。

登录流程图如下图所示。

图5-4登录流程图

用户登录界面如下图所示。

图5-5用户登录界面

用户登录的关键代码如下:

/**

     * 登录

     * @param data

     * @param httpServletRequest

     * @return

     */

    @PostMapping("login")

    public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {

        log.info("[执行登录接口]");

        String username = data.get("username");

        String email = data.get("email");

        String phone = data.get("phone");

        String password = data.get("password");

        List resultList = null;

        Map<String, String> map = new HashMap<>();

        if(username != null && "".equals(username) == false){

            map.put("username", username);

            resultList = service.select(map, new HashMap<>()).getResultList();

        }

        else if(email != null && "".equals(email) == false){

            map.put("email", email);

            resultList = service.select(map, new HashMap<>()).getResultList();

        }

        else if(phone != null && "".equals(phone) == false){

            map.put("phone", phone);

            resultList = service.select(map, new HashMap<>()).getResultList();

        }else{

            return error(30000, "账号或密码不能为空");

        }

        if (resultList == null || password == null) {

            return error(30000, "账号或密码不能为空");

        }

        //判断是否有这个用户

        if (resultList.size()<=0){

            return error(30000,"用户不存在");

        }

        User byUsername = (User) resultList.get(0);

        Map<String, String> groupMap = new HashMap<>();

        groupMap.put("name",byUsername.getUserGroup());

        List groupList = userGroupService.select(groupMap, new HashMap<>()).getResultList();

        if (groupList.size()<1){

            return error(30000,"用户组不存在");

        }

        UserGroup userGroup = (UserGroup) groupList.get(0);

        //查询用户审核状态

        if (!StringUtils.isEmpty(userGroup.getSourceTable())){

            String sql = "select examine_state from "+ userGroup.getSourceTable() +" WHERE user_id = " + byUsername.getUserId();

            String res = String.valueOf(service.runCountSql(sql).getSingleResult());

            if (res==null){

                return error(30000,"用户不存在");

            }

            if (!res.equals("已通过")){

                return error(30000,"该用户审核未通过");

            }

        }

        //查询用户状态

        if (byUsername.getState()!=1){

            return error(30000,"用户非可用状态,不能登录");

        }

        String md5password = service.encryption(password);

        if (byUsername.getPassword().equals(md5password)) {

            // 存储Token到数据库

            AccessToken accessToken = new AccessToken();

            accessToken.setToken(UUID.randomUUID().toString().replaceAll("-", ""));

            accessToken.setUser_id(byUsername.getUserId());

            tokenService.save(accessToken);

            // 返回用户信息

            JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(byUsername));

            user.put("token", accessToken.getToken());

            JSONObject ret = new JSONObject();

            ret.put("obj",user);

            return success(ret);

        } else {

            return error(30000, "账号或密码不正确");

        }

}

    1. 用户资料修改模块的实现

用户登录/注册成功之后可以修改自己的基本信息。修改页面的表单中每一个input的name值都要与实体类中的参数相匹配,在用户点击修改页面的时候,如果改后用户名与数据库里面重复了,页面会提示该用户名已经存在了,否则通过Id来查询用户,并将用户的信息修改为表单提交的数据。

    1. 评论模块的实现

用户可以发表自己的评论。将页面session中的用户账号userId和发表评论文字框内容和评分传入控制层,调用addPinglun方法,通过实现评论接口向数据库评论表插入,将结果返回Pinglun_list.php界面。

评论添加流程图如下图所示。

图5-10评论添加流程图

评论添加界面如下图所示。

图5-11评论添加界面

评论添加关键代码为:

 @RequestMapping(value = {"/sum_group", "/sum"})

    public Map<String, Object> sum(HttpServletRequest request) {

        Query count = service.sum(service.readQuery(request), service.readConfig(request));

        return success(count.getResultList());

}

    1. 参与竞拍模块的实现

参与竞拍功能需要考虑高并发,防止出现商品重复竞拍、商品状态显示出错等情况,特对商品这一共享数据增加锁机制。在乐观锁、悲观锁以及线程锁中,综合考虑性能效率和错误的可接受性选择了乐观锁机制。乐观锁的实现方式是使用版本标识来确定读到的数据与提交时的数据是否一致,提交后修改版本标识,不一致时可以采取丢弃和再次尝试的策略。在数据库商品表(对应商品实体)设计中增加了version字段,每次数据提交时(更改商品状态)会判断version是否匹配,若不匹配停止本次提交,若匹配则提交成功并增加version的值。

参与竞拍功能整体流程:用户浏览商品信息时,同时会显示商品的状态,系统会在其显示详细信息的页面时便会判断商品的状态,若商品状态为可竞拍,则会显示竞拍的链接按钮。在用户点击竞拍按钮时,会先通过拦截器判断用户是否登录,若未登录,会跳转至登录页面,提示用户先登录,若为登录用户就会跳转至填写竞拍信息的页面,填写好竞拍信息之后,点击提交按钮,竞拍成功之后返回提示信息,告知用户竞拍成功。

参与竞拍流程图如下图所示。

图5-12参与竞拍流程图

参与竞拍界面如下图所示。

图5-13参与竞拍界面

竞拍管理界面如下图所示。

图5-14竞拍管理界面

参与竞拍关键代码为:

@RequestMapping("/get_obj")

    public Map<String, Object> obj(HttpServletRequest request) {

        Query select = service.select(service.readQuery(request), service.readConfig(request));

        List resultList = select.getResultList();

        if (resultList.size() > 0) {

            JSONObject jsonObject = new JSONObject();

            jsonObject.put("obj",resultList.get(0));

            return success(jsonObject);

        } else {

            return success(null);

        }

}

 public Query select(Map<String,String> query,Map<String,String> config){

        StringBuffer sql = new StringBuffer("select ");

        sql.append(config.get(FindConfig.FIELD) == null || "".equals(config.get(FindConfig.FIELD)) ? "*" : config.get(FindConfig.FIELD)).append(" ");

        sql.append("from ").append("`").append(table).append("`").append(toWhereSql(query, "0".equals(config.get(FindConfig.LIKE))));

        if (config.get(FindConfig.GROUP_BY) != null && !"".equals(config.get(FindConfig.GROUP_BY))){

            sql.append("group by ").append(config.get(FindConfig.GROUP_BY)).append(" ");

        }

        if (config.get(FindConfig.ORDER_BY) != null && !"".equals(config.get(FindConfig.ORDER_BY))){

            sql.append("order by ").append(config.get(FindConfig.ORDER_BY)).append(" ");

        }

        if (config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE))){

            int page = config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE)) ? Integer.parseInt(config.get(FindConfig.PAGE)) : 1;

            int limit = config.get(FindConfig.SIZE) != null && !"".equals(config.get(FindConfig.SIZE)) ? Integer.parseInt(config.get(FindConfig.SIZE)) : 10;

            sql.append(" limit ").append( (page-1)*limit ).append(" , ").append(limit);

        }

        log.info("[{}] - 查询操作,sql: {}",table,sql);

        return runEntitySql(sql.toString());

    }

    1. 商品管理模块的实现

此页面的关键是编写商品信息,包括商品编号,名称,详情等。单击提交按钮以完成信息的添加。如果未写入完整的商品信息,例如,如果未写入商品编号,系统将给出相应的错误提示,并且无法成功输入。数据以概念的形式以onsubmit =“return checkForm()”的形式写入以进行检查,checkForm()函数是一种用于写入数据的不同类型的校对方法,是不是为空也是经过form表单中的οnsubmit=”return checkForm()来检查。

管理员点击左侧菜单“商品信息管理”,页面跳转到商品信息管理外观,调用后台商品查询所有商品信息。并将信息密封到数据集合List,绑定到请求对象,然后页面跳转到相应的springboot页面,显示出商品信息,单击删除按钮完成商品信息的删除。

商品管理流程图如下图所示。

图5-15商品管理流程图

商品添加界面如下图所示。

图5-16商品添加界面

商品管理界面如下图所示。

图5-17商品管理界面

商品发布的关键代码如下:

 @RequestMapping(value = "/del")

    @Transactional

    public Map<String, Object> del(HttpServletRequest request) {

        service.delete(service.readQuery(request), service.readConfig(request));

        return success(1);

}

    @Transactional

    public void delete(Map<String,String> query,Map<String,String> config){

        StringBuffer sql = new StringBuffer("DELETE FROM ").append("`").append(table).append("`").append(" ");

        sql.append(toWhereSql(query, "0".equals(config.get(FindConfig.GROUP_BY))));

        log.info("[{}] - 删除操作:{}",table,sql);

        Query query1 = runCountSql(sql.toString());

        query1.executeUpdate();

    }

系统测试

  1. 测试目的

对任何系统而言,测试都是必不可少的环节,测试可以发现系统存在的很多问题,所有的软件上线之前,都应该进行充足的测试之后才能保证上线后不会Bug频发,或者是功能不满足需求等问题的发生。下面分别从单元测试,功能测试和用例测试来对系统进行测试以保证系统的稳定性和可靠性。

    1. 功能测试

下表是系统登录功能测试用例,检测了用户名和密码的不同的输入情况,观察系统的响应情况。得出该功能达到了设计目标。

表6-1 系统登录功能测试用例

功能描述

用于系统登录

测试目的

检测登录时的合法性检查

测试数据以及操作

预期结果

实际结果

输入的用户名和密码带有非法字符

提示用户名或者密码错误

与预期结果一致

输入的用户名或者密码为空

提示用户名或者密码错误

与预期结果一致

输入的用户名和密码不存在

提示用户名或者密码错误

与预期结果一致

输入正确的用户名和密码

登录成功

与预期结果一致

下表是注册功能测试用例,检测了各种数据的输入情况,观察系统的响应情况。得出该功能达到了设计目标。

表6-2 注册功能测试用例

功能描述

用于用户注册

测试目的

检测用户注册时的合法性检查

测试数据以及操作

预期结果

实际结果

输入的手机号不合法

提示请输入正确的手机号码

与预期结果一致

输入的字段为空

提示必填项不能为空

与预期结果一致

输入的密码少于6位

提示密码必须为6-12位

与预期结果一致

输入的密码大于12位

提示密码必须为6-12位

与预期结果一致

下表是商品管理功能的测试用例,检测了商品管理中对商品信息的增加,删除,修改,查询操作是否成功运行。观察系统的响应情况,得出该功能也达到了设计目标,系统运行正确。

前置条件;用户登录系统。

表6-3 商品管理的测试用例

功能描述

用于商品管理

测试目的

检测商品管理时的各种操作的运行情况

测试数据以及操作

预期结果

实际结果

点击添加商品,必填项合法输入,点击保存

提示添加成功

与预期结果一致

点击添加商品,必填项输入不合法,点击保存

提示必填项不能为空

与预期结果一致

点击修改商品,必填项修改为空,点击保存

提示必填项不能为空

与预期结果一致

点击修改商品,必填项输入不合法,点击保存

提示必填项不能为空

与预期结果一致

点击删除商品,选择商品删除

提示删除成功

与预期结果一致

点击搜索商品,输入存在的商品名

查找出商品

与预期结果一致

点击搜索商品,输入不存在的商品名

不显示商品

与预期结果一致

下表是竞拍管理功能的测试用例,检测了竞拍管理中竞拍单的操作是否成功运行。观察系统的响应情况,得出该功能也达到了设计目标,系统运行正确。

前置条件;用户登录系统。

表6-5 竞拍管理的测试用例

功能描述

用于竞拍管理

测试目的

检测竞拍管理时各种操作的情况

测试数据以及操作

预期结果

实际结果

未选择商品,点击提交

提示请选择商品

与预期结果一致

未输入竞拍价格,点击提交

提示请输入竞拍价格

与预期结果一致

未选择时间,点击提交

提示请选择时间

与预期结果一致

    1. 性能测试

使用阿里云PTS(Performance Testing Service)性能测试服务对线上系统进行压力测试。线上服务器环境为:1核心CPU,1G内存,1Mbps公网带宽,Centos7.0操作系统。

压测过程中使用了2台并发机器,每台机器20个用户并发,对系统主页,登录,数据查询和数据维护等模块进行并发访问,测试结果是有40个用户并发时,数据管理相关页面的响应时间甚至达到了7s,通过查看服务器出网流量发现已经达到1381kb/s,可以看出服务器的带宽已经达到峰值,如果系统使用5Mbps的带宽,系统的响应时间和TPS将会大大增加。在整个测试的过程中,CPU的使用率占用仅8%,也提现出带宽瓶颈对系统的影响非常严重。

  1. 总结与展望

捷安网上拍卖系统的整体功能模块的实现,主要是对自己在大学这几年时间所学内容的一个测试,对于系统,主要是通过现在智能化的捷安网上拍卖系统进行开始系统的实现,并且可以根据需求进行数据信息的增加修改删除等操作,完美的解决了当下捷安网上拍卖系统 中所遇到的问题。

经过一个学期的毕业设计的实现完成已接近尾声,到目前为止,当我回想起整个学期的系统开发日,收获颇丰。毕业设计的主要任务是建立一个智能化的捷安网上拍卖系统的信息系统,主要使用springboot框架和Mysql数据库的开发工具,对系统的每个功能模块进行相对应的操作,最后,系统调试结果表明系统基本可以满足功能要求。

捷安网上拍卖系统的开发对我大学学习的改进有很大帮助。它使我能够学习计算机知识的相关技术方面问题及与人交往的沟通交流方面,让我意识到无论我们做什么,我们都需要坚持不懈,努力工作,只有这样尝试了并且坚持去做了,我们才可以成功,才可以获得成功的喜悦,如果没有尝试,只是想,那连成功的机会都没有,实际操作进行做了,才会越来越近的靠近成功,随着道路一路向前,未来的路是美好的。

捷安网上拍卖系统的实现,是自己第一次完成的设计一个管理系统。在项目的设计过程中,我克服了各种困难,并且在面对这些困难,我积极的面对,想办法解决问题,并且更好的掌握了理论知识和动手操作实践能力,从系统的开发到设计完成,我完成了一个更全面、更完善、更安全的平台管理系统,这也让我取得了很大的成就感,也使我对未来的生活更有信心。

参考文献

[1]. USU Software Asset Management is Verified for Data Discovery of JAVA Software[J]. M2 Presswire,2022.

[2]李乐.Java语言应用研究[J].智慧中国,2022(09):80-81.

[3]周玲艳.Java程序设计课程实践教学方法和考核方式的思考[J].中国现代教育装备,2022(17):122-124.DOI:10.13492/j.cnki.cmee.2022.17.023.

[4]宋旸.使用Java语言开发Web应用软件的知识探讨[J].中国设备工程,2022(14):121-123.

[5]张海越,范曦.浅析Java语言中线程的生命周期及实现方式[J].大众科技,2022,24(07):18-20+28.

[6]李璋,赵鸿皓,黄震,陈逸凡,杨洲.Java在程序设计语言课程中的应用[J].长江信息通信,2022,35(07):108-111.

[7]吴拓.Java编程语言在计算机软件开发中的应用[J].无线互联科技,2022,19(12):35-37.

[8]单树倩,任佳勋.基于SpringBoot和Vue框架的数据库原理网站设计与实现[J].电脑知识与技术,2021,17(30):40-41+50.DOI:10.14004/j.cnki.ckt.2021.2868.

[9]喻佳,吴丹新.基于SpringBoot的Web快速开发框架[J].电脑编程技巧与维护,2021(09):31-33.DOI:10.16184/j.cnki.comprg.2021.09.013.

[10]陈谦民,范新娟,安忠义,陈宗玉.同城拍卖管理系统的设计与实现[J].现代信息科技,2021,5(16):127-133+138.DOI:10.19850/j.cnki.2096-4706.2021.16.031.

[11]闵振涛. 基于安全多方计算的电子拍卖系统设计与研究[D].华北电力大学(北京),2021.DOI:10.27140/d.cnki.ghbbu.2021.001309.

[12]Fuyuan Cheng. Talent Recruitment Management System for Small and Micro Enterprises Based on Springboot Framework[J]. Advances in Educational Technology and Psychology,2021,5(2).

[13]Guanhong Chen,Jiangming Xu. Design and implementation of efficient Learning platform based on SpringBoot Framework[J]. Journal of Electronics and Information Science,2020,6(1).

[14]赵佳文. 基于信任管理的拍卖系统的研究与实现[D].中国矿业大学,2020.DOI:10.27623/d.cnki.gzkyu.2020.000179.

[15]吕云.基于虚拟现实技术的艺术拍卖系统设计与开发[J].软件工程,2019,22(11):42-44.DOI:10.19644/j.cnki.issn2096-1472.2019.11.010.

[16]朱运乔.基于SpringBoot+SSM框架的Web应用系统搭建与实现[J].电脑编程技巧与维护,2019(10):23-25.DOI:10.16184/j.cnki.comprg.2019.10.008.

[17]吕宇琛.SpringBoot框架在web应用开发中的探讨[J].科技创新导报,2018,15(08):168+173.DOI:10.16660/j.cnki.1674-098X.2018.08.168.

[18]陈思拓. 在线竞拍系统的设计与开发[D].江西财经大学,2017.

[19]桂光泽. 基于信任模型的网上拍卖系统设计与实现[D].湖北工业大学,2017.

[20]杨华.基于AJAX技术的网上拍卖系统设计[J].通讯世界,2017(06):253-254.

    谢

本次设计历时3个月。在这个毕业设计中,它离不开指导教师的指导,使事情基本顺利。指导老师无论是在毕业设计历经中,还是在论文做完中都给了了我特别大的助益。另1个方面,教师认真负责的工作姿态,谨慎的教学精神厚重的理论水准都使我获益匪浅。他勤恳谨慎的教学育人学习姿态也给我留下了特别特别深的感觉。我从老师那里学到了很多东西。在理论和实践中,我的技能得到了特别大的提高。在此,特向教师表示由衷的感激。

经过对该毕业设计的全部研究和开发,我的系统研发经历了从需求分析到实现详细功能,再到最终测试和维护的特殊进展。让我对系统研发有了更深层次的认识。如今我的动手本领单独处理疑惑的本领也获取到了特别大的演练学习增多,这是这次毕业设计最好的收获。

最后,在整个系统开发过程中,我周围的同学和朋友给了我很多意见,所以我很快就确认了系统的商业思想。在次,我由衷的向他们表示感激。

关注●点赞收藏并私信博主,免费领取项目源码哦~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值