摘要
互联网技术的成熟和普及,势必会给人们的生活方式带来不同程度的改变。越来越多的经营模式中都少不了线上运营,互联网正强力推动着社会和经济发展。相比于以前的传统农产品销售方式,智能化的销售方式可以大幅降低运营人员成本,实现了农产品销售的标准化、制度化、程序化的管理,提高了信息的处理速度和精确度。 由于当下人民群众对线上购物管理的需求也日益高涨,各级单位需要继续开展全新的改革以满足时代的需求。根据此问题,研发一套基于协同过滤算法的农产品销售推荐系统,既能够大大提高信息的检索、变更与维护的工作效率,也能够方便信息系统的管理运用,从而减少信息管理成本,提高效率。 该基于协同过滤算法的农产品销售推荐系统采用B/S架构、前后端分离以及MVC模型进行设计,并采用Java语言以及Spring Boot框架进行开发。本系统主要设计并完成了对个人中心、用户管理、农产品分类管理、农产品信息管理、特价农产品管理、交流论坛、系统管理、订单管理等功能的管理。该系统操作简单,界面设计简单,不仅能基本满足目前农产品销售的日常管理工作,而且能有效降低人员成本和时间成本,为农产品销售管理工作提供方便。
概 述
1.1 课题研究背景 来到21世纪的今天,伴随着信息技术的飞速发展,已经深入并且影响着我们的生活,伴随着网络、通信技术的突破性进展,电子商务即网上交易,也就是我们常说的网购得以蓬勃发展。而农产品销售作为一种全新的消费模式已成为一个极具潜力的行业,它以多样化的方式为用户的购物提供了便利。但是传统线下购物的方式存在购买费时、费劲、种类不全和价格不合理等问题,这导致了传统的线下购物方式没有移动端的购物方式更便捷优势。在这一背景下,当前的主要销售通道为传统的线下门店销售与互联网平台的线上销售相结合。目前,线上销售与线下销售之间存在着一定的相同与不相同[1]。 在未来的电子商务竞争中,将会有更多的传统销售门店会转移到互联网销售中, 从而进而形成主流电子商务发展趋势。以当前市场经济趋势而言, 各行各业均会受到电子商务的影响, 并从中挖掘更多的商机, 因此传统实体经济向互联网转型已经成为一种必然的趋势, 在移动网络环境下, 商家将获得更广泛的市场, 进而使发展的市场平台更加高效。从市场角度而言, 现电子商务的主要人群为青年群体, 这一群体人数众多, 且消费能力强, 为移动电子商务的发展提供了更为稳定的市场资源, 这些条件都为传统商家转型为互联网商家创造了良好条件[2]。
1.2 课题研究意义 (1)基于协同过滤算法的农产品销售推荐系统伴随着计算机网络的飞速发展而实现能巧妙的融入我们的日常中,在我们的日常中,随着使用网购APP的频率提高,我们的日常生活方式也将得到改善。 (2)农产品销售不仅仅只是表面中的“网购”,它能带来更加广阔的交易环境:使我们不在局限与人与人面对面的接触式交易,能通过互联网的方式随时随地线上交易;它能带来更加广阔的消费市场:使我们能接触到网络所能达到的地方,可以在全球任意一家商家购物;它能带来更加丰富的商品,在网络普及的现在我们能接触到比传统购物更加多的商品种类,来提高我们的消费质量;它能带来更加实惠的价格:网购能极大程度的减少卖家到买家手中的流通环节,从而减少中间差价让价格更加实惠。而基于协同过滤算法的农产品销售推荐系统是更加符合时代的潮流,能大大提高消费者的消费体验。
1.3 课题研究内容 本系统结合现今基于协同过滤算法的农产品销售推荐系统的功能模块以及设计方式进行分析,使用Java语言和Spring Boot框架进行开发设计,具体研究内容如下:
(1)用户可以进入系统进行个人信息修改,农产品信息、特价农产品、交流论坛、公告信息、后台管理、购物车等进行操作。
(2)管理员登录系统后,可以对个人信息进行修改,个人中心、用户管理、农产品分类管理、农产品信息管理、特价农产品管理、交流论坛、系统管理、订单管理等功能进行管理。
系统开发环境及相关技术
2.1 系统开发环境 本管理系统采用的集成开发环境为IntelliJ IDEA,使用Java等语言及Spring Boot框架进行开发,其中硬件环境和软件环境如下: (1)硬件环境 处理器:Intel(R) Core(TM) i5-7400 CPU @ 3.00GHz 3.00GHz 内存:8GB (2)软件环境 操作系统:windows 10 64位操作系统 开发工具:IntelliJ IDEA 2019.1
2.2 系统开发技术 基于协同过滤算法的电子产品商城采用B/S(Browser/Server)架构和MVC模型进行设计开发。在B/S架构下,用户在浏览器端进行使用,主要工作通过服务器端进行实现,用户通过网站进行访问大大节约了成本。本系统使用Java等语言同时运用了Spring Boot框架进行开发,使用MySQL进行数据存储。2.2.1 Java编程语言 Java语言作为现在主流编程语言之一,就是因为它有很多自己的特点和优势。 Java语言具有以下几个特点:
(1)跨平台性 平时所说的一次编译,到处执行,指的就是这个跨平台性。Java的源代码编译后会生成字节码文件,这些文件可以被Java虚拟机执行,得到想要的结果。在设备上安装对应的虚拟机,Java的字节码文件就可以运行。
(2)面向对象 Java是一个面向对象的编程语言。面向对象是指把属性和方法进行封装,通过创建的对象调用里面的方法,实现一些功能。
(3)多线程 Java是支持多线程的,它允许在一个程序中同时开启多个线程,同时处理多个任务,这样可以提高它的效率。 Java语言对于开发工具要求不高,有专业的编程工具Eclipse会更顺利编程,但是,没有专业的编程软件,用记事本也能进行编辑。 2.2.2 Spring Boot框架 Spring Boot是由Pivotal的开发团队在2013年开发的一个免费、轻量级、开源的系统框架。Spring Boot的主要设计思想是约定大于配置,因此Spring Boot在设计时几乎达到零配置。Spring Boot集成了业界的开源框架。 Spring Boot是一个非常强大的后台框架,因为Spring Boot的开发基本上不需要写配置文件,所以利用Spring Boot来构建网站的后台环境,在Spring Boot的YML配置文件中写项目启动端口,项目就可以启动了。项目的Java和静态文件由Spring Boot管理。
2.2.3 MySQL数据库 数据库在软件项目中扮演着操作管理数据的角色同时还能够保证数据的独立性、一致性和安全性,并为系统访问数据提供有效方式不仅如此数据库还能大大减少程序员开发程序时间。在日常能够接触实用的一般有两类数据库,一类是以(Oracle,DB2,SQL Server,MySQL )为代表的关系型数据库和以(NoSql、MongeDB)为代表的非关系型数据库,两类数据库各有各的优缺点。其中非关系型数据库又分为网络数据库和层级数据库。-网络数据库是指在计算机网络系统中应用数据库技术然后借助网络技术将存储于数据库中的大量信息及时发布出去;在成熟的数据库技术的帮助下,计算机网络实现了对网络中的各种数据的有效管理,用户与网络中的数据库数据交互也借此得以进行。IMS也是最早研制成功的数据库系统。关系数据结构、关系操作集合、关系完整性约束构成了关系模型。作为数据库另外一种区分方式的存储介质被大家分为磁盘和内存这 两种。例如:关系型数据库就存储在磁盘中,非关系型数据库则存储在内存中。典型的关系型数据库有:Oracle、DB2、Microsoft SQL Server、Microsoft Access、MySQL、SQLite。小型关系型数据库:Microsoft Access,SQLite;中型关系型数据库:SQL Server,Mysql;大型关系型数据库:Oracle,DB2。MySQL作为数据库拥有很多优点,其中由于是开放源码,所以使用成本特别低,而它体积小的特点决定了速度快的特性。因此,My Sql具有开放性,多线程支持多种API,可跨数据库连接,国际化,数据库体积巨大等特点。简单的来说 ,MySql是一个开放的、快速的、多线程的、多用户的数据库服务器。 选用MySQL作为数据库的其中一个原因就是支持多线程,支持多线程的特点为利用系统资源提供了便捷并因此大大提高了系统运行速度和效率,而且连接数据库的方式多样包括但不局限于TCP/IP、ODBC和JDBC等途径;但是没有东西是完美无缺的,即便MySQL也如此,虽说它有着众多优点但其功能不够强大,规模也相对较小,无法应对大型数据哭的处理。但是对于本系统来说,选用MySQL作为数据库,其功能性能已绰绰有余,如果要进行二次开发的数据库表结构空间的扩展也是完全可行的。综上所述,MySQL是作为本系统数据库的最优选择。
2.2.4 B/S结构 B/S结构就是指系统客户端与服务器分离,客户端通过浏览器访问服务端进行操作[10]。 B/S结构目前广泛应用于绝大部分系统搭建中,这种结构摒弃C/S结构客户端服务端不分离的缺点,具有更多的优势:
(1)跨平台性:B/S的标准由标准化组织确立,适用于绝大多数的系统搭建,通用于应用之间。
(2)低维护成本:客户端和服务器端分离,减轻了两端的压力,尤其是客户端,对客户端设备,硬件、软件要求都比较低,并且系统需要升级或维护时,只需要在服务器端升级或维护就可以,使相应的费用减少。
2.2.5 基于协同过滤的推荐算法
基于协同过滤的推荐算法是现今各个电子商务领域中运用最为广泛的推荐算法,它对电子商务的发展起到了至关重要的作用。基于协同过滤的推荐算法是一种通过群体偏好的方式,来帮助个体来找到其共性,给该用户推荐相似的偏好物品。协同过滤算法的基本思路是通过分析各用户的历史的购物情况以及评论情况等用户行为,如评论、购买记录等,得到他们的偏好物品,将喜好不同物品的用户进行分组。之后对不同分组的用户进行分析,通过推荐算法预测出该用户的感兴趣的物品。该方法的具体操作可简述为向推荐算法中输入用户和商品的关系矩阵,输出用户对不同物品的兴趣值。 通常来说,基于协同过滤的推荐算法可分为基于内存的协同过滤和基于模型的协同过滤推荐算法,基于内存的推荐算法还包括基于用户和基于物品的协同[6]过滤推荐算法。基于用户的推荐算法是最早被提出的推荐算法,始于1991年,主要思路为在大量的用户相关数据中研究出用户对物品的偏好程度,之后通过推荐算法的算法推算出相似度较高的用户,然后将其相似用户所喜爱的物品通过推荐算法推荐给其他用户。基于物品的推荐算法是目前使用最为广泛的算法,它通过提取所有用户对不同物品的评价,探究不同物品之间的相似度,然后根据用户之前所购买或有较高评价的商品推荐与其相似度较高的商品。基于模型的推荐算法可以运用于数据量小的场景里,当数据规模较大时,此方法不够精准,推荐效率较为低下。 基于用户的协同过滤推荐算法对比基于内容的推荐算法来说,最大的优点就是对于物品的结构没有特殊要求,可以有效地处理图片视频等结构化数据。另外,随着用户的使用次数增多,历史记录不断增加,该推荐算法将会更加精准,效率也会提高。然而,对于当下的基于协同过滤的推荐算法来说,该推荐方法仍然存在一些弊端致使推荐的效率较低,如稀疏性问题和扩展性问题,另外,对于新用户,由于这些用户缺少历史数据,往往会出现推荐不精准的问题,该问题称为新用户的冷启动问题。
系统总体模块设计图
系统前台界面图
管理员登录界面图
管理员功能界面图
部分数据表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
orderid | varchar | 200 | 订单编号 | ||
tablename | varchar | 200 | 商品表名 | tejianongchanpin | |
userid | bigint | 用户id | |||
goodid | bigint | 商品id | |||
goodname | varchar | 200 | 商品名称 | ||
picture | longtext | 4294967295 | 商品图片 | ||
buynumber | int | 购买数量 | |||
price | float | 价格 | 0 | ||
discountprice | float | 折扣价格 | 0 | ||
total | float | 总价格 | 0 | ||
discounttotal | float | 折扣总价格 | 0 | ||
type | int | 支付类型 | 1 | ||
status | varchar | 200 | 状态 | ||
address | varchar | 200 | 地址 | ||
tel | varchar | 200 | 电话 | ||
consignee | varchar | 200 | 收货人 | ||
remark | varchar | 200 | 备注 | ||
logistics | longtext | 4294967295 | 物流 | ||
goodtype | varchar | 200 | 商品类型 |
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
chanpinbianhao | varchar | 200 | 产品编号 | ||
chanpinmingcheng | varchar | 200 | 产品名称 | ||
chanpinfenlei | varchar | 200 | 产品分类 | ||
chanpintupian | longtext | 4294967295 | 产品图片 | ||
chanpinguige | varchar | 200 | 产品规格 | ||
baozhiqi | varchar | 200 | 保质期 | ||
caizhairiqi | date | 采摘日期 | |||
xiangqingmiaoshu | longtext | 4294967295 | 详情描述 | ||
onelimittimes | int | 单限 | |||
alllimittimes | int | 库存 | |||
clicktime | datetime | 最近点击时间 | |||
clicknum | int | 点击次数 | 0 | ||
price | float | 价格 |
结论
通过本次毕业设计对基于协同过滤算法的农产品销售推荐系统的设计与实现,让我能够将所学的一个个知识联系起来形成了一个整体,对于整个系统的运行流程有了一个清楚的认识。从前端通过接口请求数据到后端控制层调用业务层再到数据库访问层对数据库进行查找,然后将数据进行封装后一个一个层传输最后到前端以及前端进行显示的过程中,每一个流程都需要仔细的分析调试。在这之间,也遇到了许许多多的困难,走了很多的弯路,但正是因为克服了这些困难,才能开发出这个系统,实现对农产品销售的电子化管理,提高了农产品销售管理工作的效率。 系统的总体设计已经实现了农产品销售的基本功能,但是还有很多地方需要以后进一步改进,比如: (1)优化UI 设计,并且加入总体模块来完善系统功能。 (2)系统当前只能在网站中使用,若能在App或小程序中使用会更便捷。 (3)系统中未考虑到数据的备份与恢复功能,手动备份耗时耗力并且安全性不好,需要对其进行完善。