针对本课题来说,主要是以大数据及互联网作为基础,以微信小程序作为平台,充分利用目前的信息化基础设施,将传统的宠物食品销售模式与网络商城之间进行有效的集合,这样形成一种全新的电子商务模式,当然这个也是对传统的电子商务的一种全新的突破。
本课题对具体的选题的背景及其目前的微信小程序的发展情况进行了详细的分析与描述,有针对性的结合目前主流的网络商城小程序应该具有的功能完成了宠物食品销售管理系统的需求分析工作,核心的任务主要是包括系统的功能性需求分析、性能方面的需求分析及其可行性方面的分析内容。主要是针对系统的前端进行了设计与实现,包括首页的展示、商品展示、购物车的管理、订单管理及优惠活动管理模块。
关键词:B/S模式;宠物食品销售微信小程序;MySQL
For this topic, the main approach is to use big data and the internet as the foundation, WeChat mini programs as the platform, and fully utilize the current information infrastructure to effectively integrate traditional pet food sales models with online shopping malls, forming a new e-commerce model. Of course, this is also a new breakthrough in traditional e-commerce.
This topic provides a detailed analysis and description of the background of the specific topic and the current development of WeChat mini programs. Targeted and combined with the functions that mainstream online shopping mall mini programs should have, the demand analysis of the pet food sales management system has been completed. The core tasks mainly include functional demand analysis, performance demand analysis, and feasibility analysis of the system. Mainly designed and implemented for the front-end of the system, including modules for homepage display, product display, shopping cart management, order management, and promotional activity management.
Key words:B/S mode; Pet food sales WeChat mini program; MySQL
目 录
1 绪论
1.1 研究背景
目前来说随着互联网及大数据等相关技术的快速发展,目前我国在基础性的网络设施方面在不断的完善,相关的信息技术在快速的发展,同时第三方的支付工具相对来说也是不断的得到普及,相对来说,目前网上进行购物已经成为了人们日常生活当中非常重要的一项组成部分及其组成内容。相对来说,基于PC端平台的购物系统能够非常方便用户足不出户就能够很好的享受到购物方面的乐趣,但是目前是智能时代快速发展的年代,通过采用手机端就能够在线购物,很好的发挥智能终端的便携性,也能够非常方便用户能够随时购买自身喜欢的商品。面向微信小程序的宠物食品销售系统这一模式主要是来源于相关的020这种概念,能够非常方便的将线下的商务直接与互联网之间进行有效结合,这样在互联网上就能够直接开展线下的一些交易。
针对本课题来说,主要是以大数据及互联网作为基础,以微信小程序作为平台,充分利用目前的信息化基础设施,将传统的宠物食品销售模式与网络商城之间进行有效的集合,这样形成一种全新的电子商务模式,当然这个也是对传统的电子商务的一种全新的突破。在电子商务平台上能够更好的满足消费者的购物需求,实现会员之间的互动交流,当然,线下采用的是一种更好及更加快捷为用户提供一种现代化的智能购物服务。
1.2研究意义
同时,通过在目前的信息化技术、相应的消费升级、不断竞争的发展驱动下,国内的零售产业得到了快速的发展及其转变,也就是说线上与线下结合物流这一模式形成了一种全新的新零售模式。其目的主要是为了能够有效的推动线上与线下的一体化的发展,最终能够有效地促进价格消费时代直接到价值消费时代的一种全新的转变,核心的内容就是以消费者作为核心,形成一体化的会员服务、支付服务、库存服务等多个方面的信息打通,不断的推动消费购物体验的快速发展,从而有效推动消费购物的改革。
针对本课题来说,宠物食品销售发展的主要核心内容就是需要满足在一定条件下的购物场景,不断的满足客户的需求,在整个的信息化、技术化及其移动互联网等快速发展的驱动下,这种快速购物、快速的配送、快速结算的方式已经得到了客户的喜爱。但是相对传统的这种零售模式来说,能够有效的为线下的这些店铺提供一种相对来说比较方便及其快捷的线上购物渠道,能够有针对性的为用户提供所需要的体验服务,不断的提升宠物食品销售的效率。最近一些年来,国内的这些零售商目前采用的方式都是直接将线下与线上的模式进行结合的这一购物模式, .但是目前主流的线上购物的系统主要是包括PC端形成的购物系统,通过手机APP形成的购物系统,通过第三方的应用进入的购物系统等。在2017年的时候,微信小程序得到了快速的上线,这直接有效的提升了微信的生态圈,整个的微信小程序与原生的APP之间相对来说最大的特点就是需要安装任何的其他软件,直接能够通过扫描或者搜索的模式来进入到小程序当中,因此从这种模式中可以看出,这种基于微信及即用即走的轻量级的小程序平台相对来说能够更好的服务这种线下的模式。
2 宠物食品销售微信小程序系统分析
系统需求分析是系统开发的一个关键环节,它在系统的设计和实现上起到了一个承上启下的位置。系统需求分析是对所需要做的系统进行一个需求的挖掘,如果分析的准确可以精准的解决现实中碰到的问题。如果分析不到位会影响后期系统的实现。一个系统的优秀程度需求分析也是占据了非常大的比例,如果需求分析不到位,后面的系统设计要实现就是一个偏离导航的设计。
2.1 可行性分析
2.1.1 技术可行性分析
宠物食品销售微信小程序设计与实现是一个基于Web的交易、管理平台,我们在实现这个系统所采用的技术方案是基于JAVA语言,MYSQL数据库,在大学的学习中这两门课程都已经学过,而且自己也用这些技术开发过小的项目,在平时的课程设计以及作业也经常用到JAVA和MYSQL,在技术上实现自己的自主开发是可行的。
2.1.2 经济可行性分析
开发本宠物食品销售微信小程序的技术都是可以从网上直接免费下载,不用花一分钱,而且系统的源代码都是自己进行设计开发的,不需要成本,如果后期想要进行运营,只要把配置到服务器上,花费服务器的租赁费用,在使用中可以进行增加广告收益,因此在经济方面是可性的。
2.1.3 操作可行性分析
当下网络新时代,计算机已经得到了普及,多数人对计算机都比较的熟悉,知道如何使用它,当然也存在对计算机比较陌生的这一群体,也需要对其进行考虑。在进行宠物食品销售微信小程序页面的设计的时候,考虑到使用人群,可能也存在对计算机比较陌生的人,所以,在页面的设计方面,设计的很是简单、简洁,布局明了,色调明朗,让无论是对计算机陌生还是对计算机熟悉的使用者,都可以使用自如,这也说明了该程序的操作方面非常可行。
2.1.4 管理可行性分析
本宠物食品销售微信小程序开发完成后只需要一个管理人员进行后台商品的增删改查以及用户、订单的管理就可以,不需要进行特别的培训,所有的操作只要有一点电脑基础就可以进行管理,在管理方面是可行的。
2.2 系统流程分析
2.2.1 数据流程
宠物食品销售微信小程序主要的目的就是实现对商品的在线选购,图2-1就是系统的数据流图。

图2-1商品购买操作展开图
2.2.2 业务流程
分析完宠物食品销售微信小程序的数据流,接下来我们来看系统的业务流程,图2-2就是业务流程图:

图2-2业务流程图
2.3 系统功能分析
按照宠物食品销售微信小程序的角色,我划分为了顾客用户管理模块、卖家管理模块和管理员管理模块这三大部分。
顾客用户管理模块:
(1)注册登录:游客可以随时进入到系统中,对系统中的信息浏览,但是想要实现数码产品购买、收藏、顾客信箱以及评论等操作,就必须有这个系统的账号,如果没有本系统账号的话,可以点击“注册”按钮,根据提示输入注册的信息,然后再进行登录,登录成功以后,点击“我的”这以按钮对个人信息以及操作的信息进行管控。
(2)查看宠物食品销售微信小程序的首页信息:宠物食品销售微信小程序的首页信息包含了首页、网站公告、优惠活动、顾客信箱、我的等。
(3)网站公告:在前台点击“网站公告”这一菜单按钮以后就会进入到网站公告界面。
(4)顾客信箱:在前台点击“顾客信箱”按钮会跳转到顾客信箱填写页面,根据页面提示输入顾客信箱的内容,点击“提交”进行提交顾客信箱信息。
(5)购物车:用户对喜欢的宠物商品可以加购,在购物车里面,可以查看到所有加购的商品,支持对商品数量的更改、删除商品,可以进行选择购买。
(6)我的订单:用户在提交订单后,可以对提交的订单进行管理。
(7)收货地址:点击“我的”中“我的地址”按钮的时候就会显示出自己的收货地址信息,支持对收货地址的增删改查操作。
(8)我的收藏:点击“我的”中“我的收藏”按钮的时候就会显示出自己收藏的各种信息了,支持对收藏信息的搜索查询,如果你想不再收藏某一信息,点击删除就可以了。
(9)基本信息:在基本信息界面对个人的基本资料以及登录的密码进行更新维护。
管理员管理模块:
(1)轮播图:点击“轮播图”可以查看到系统中的轮播图信息,如果想要添加新的轮播图,点击“添加”按钮,根据提示输入上轮播图信息,点击“提交”按钮,信息没有错误的话,添加就完成了,如果轮播图信息有误,可以对轮播图更新维护,也可以直接删除某一轮播图。
(2)网站公告:点击“网站公告”可以查看到系统中的网站公告信息,如果想要添加新的网站公告,点击“添加”按钮,根据提示输入上网站公告信息,点击“提交”按钮,信息没有错误的话,添加就完成了,如果网站公告信息有误,可以对网站公告更新维护,也可以直接删除某一公告栏。
(3)管理员:点击“管理员”可以查看到系统中的管理员信息,如果想要添加新的管理员,点击“添加”按钮,根据提示输入上管理员信息,点击“提交”按钮,信息没有错误的话,添加就完成了,如果管理员信息有误,可以对管理员更新维护,也可以直接删除某一管理员。
(4)顾客用户:点击“顾客用户”可以查看到系统中的顾客用户信息,如果想要添加新的顾客用户,点击“添加”按钮,根据提示输入上顾客用户信息,点击“提交”按钮,信息没有错误的话,添加就完成了,如果顾客用户信息有误,可以对顾客用户更新维护,也可以直接删除某一顾客用户。
(5)卖家:点击“卖家”可以查看到系统中的卖家信息,如果想要添加新的卖家,点击“添加”按钮,根据提示输入上卖家信息,点击“提交”按钮,信息没有错误的话,添加就完成了,如果卖家信息有误,可以对卖家更新维护,也可以直接删除某一卖家。
(6)优惠活动管理:点击“优惠活动”可以查看到系统中的优惠活动信息,如果想要添加新的优惠活动,点击“添加”按钮,根据提示输入上优惠活动信息,点击“提交”按钮,信息没有错误的话,添加就完成了,如果优惠活动信息有误,可以对优惠活动更新维护,也可以直接删除某一优惠活动,还可以对前台用户提交的优惠活动评论信息进行回复管理。
(7)顾客信箱:点击“顾客信箱”可以查看到系统中的顾客信箱信息,如果想要添加新的顾客信箱,点击“添加”按钮,根据提示输入上顾客信箱信息,点击“提交”按钮,信息没有错误的话,添加就完成了,如果顾客信箱信息有误,可以对顾客信箱更新维护,也可以直接删除某一顾客信箱。
(8)宠物美食:点击“宠物美食”可以查看到系统中的商品信息,如果想要添加新的商品,点击“添加”按钮,根据提示输入上商品信息,点击“提交”按钮,信息没有错误的话,添加就完成了,如果商品信息有误,可以对商品更新维护,也可以直接删除某一商品。
(9)分类列表:点击“分类列表”可以查看到系统中的商品分类信息,如果想要添加新的分类,点击“添加”按钮,根据提示输入上分类信息,点击“提交”按钮,信息没有错误的话,添加就完成了,如果分类信息有误,可以对分类更新维护,也可以直接删除某一分类。
(10)订单列表:点击“订单列表”可以查看到用户购买的我的商品订单,对提交的订单进行管理。
2.4 系统用例分析
本宠物食品销售微信小程序的设计主要是针对三种用户进行使用,第一种是以卖家身份使用,卖家在进入系统后可以查看到系统中的所有内容,包括优惠活动、宠物美食;第二种是注册之后有账号的用户,登录以后可以收藏、评论、购买、管理收货地址、订单、个人资料等;第三种则是管理员,是系统的管理者,管理员对系统中的商品/商品分类、用户提交的评论、订单进行整体把控。
2.3 功能需求分析
(1)注册登录模块:注册是游客独有的功能,注册后就成了系统的顾客用户了,然后顾客用户通过前台登录,管理员用户通过后台登录。注册登录模块用例如下图2-3所示。

图2-3 注册登录模块用例图
(2)用户管理模块:用户管理试后台管理员独有功能,管理员可以对注册的用户进行修改、删除、查询、也可以添加新的用户。用户管理模块用例如下图2-4所示。

图2-4用户管理模块用例图
(3)购物管理模块:购物管理是前台用户独有功能,用户可以选择两种购买方式,一种是把商品加入到购物车,另一种是直接购买,最终实现购物功能,购物管理模块用例如下图2-5所示。

图2-5购物管理模块用例图
(4)订单管理模块:订单管理模块是前台用户和后台管理员都有的功能,前台用户可以提交订单,管理订单,管理员能够对用户订单进行管控。订单管理模块用例如下图2-6所示。

图2-6订单管理模块用例图
(5)个人中心模块:个人中心模块是用户独有的功能,可以管理个人资料,密码修改,我的收藏,收货地址,订单,购物车,用例如下图2-7所示。

图2-7订单管理模块用例图
3 宠物食品销售微信小程序总体设计
本章主要讨论的内容包括宠物食品销售微信小程序的功能模块设计、数据库系统设计。
3.1 系统功能结构设计
系统在结构上的设计至关重要,要考虑周全,设计全面,一个完善的结构体系,能够满足用户在使用时的各种需求,这样会让提高程序的使用率,保证程序被长久的利用。在设计宠物食品销售微信小程序的结构时,也列入重点,采用模块化的方法来进行设计,即首先将大模块确定下来,再慢慢的将大模块进行补充完善,向下分支出小模块,一起共同组成的系统的结构体系,下图是该宠物食品销售微信小程序的结构设计图,直观明了的可以看出本项目程序的功能。
宠物食品销售微信小程序模块图如图3-1所示。

图3-1 宠物食品销售微信小程序功能模块图
3.2 数据库设计
数据库设计一般包括需求分析、概念模型设计、数据库表建立三大过程,其中需求分析前面章节已经阐述,概念模型设计有概念模型和逻辑结构设计两部分。
3.2.1 数据库概念结构设计
下面是整个宠物食品销售微信小程序中主要的数据库表总E-R实体关系图。

图3-2 宠物食品销售微信小程序总E-R关系图
3.2.2 数据库逻辑结构设计
在数据库表中我们会看到系统的表名、主键、外键等信息,我们通过数据库表的主键、外键把每个表关联起来,然后在界面中展示,本宠物食品销售微信小程序的主要的数据库表如下:
(1)customer_users顾客用户信息表如表3-3所示。
表3-3customer_users顾客用户信息表
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | customer_users_id | int | 10 | 0 | N | Y | 顾客用户ID | |
2 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
3 | user_gender | varchar | 64 | 0 | Y | N | 用户性别 | |
4 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
5 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
6 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
7 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
(2)goods_type商品分类信息表如表3-4所示。
表3-4goods_typ商品分类信息表
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | type_id | int | 10 | 0 | N | Y | 商品分类ID: | |
2 | father_id | smallint | 5 | 0 | N | N | 0 | 上级分类ID:[0,32767] |
3 | name | varchar | 255 | 0 | Y | N | 商品名称: | |
4 | desc | varchar | 255 | 0 | Y | N | 描述: | |
5 | icon | varchar | 255 | 0 | Y | N | 图标: | |
6 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
7 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
8 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
(3)pet_food宠物美食信息表如表3-5所示。
表3-5 pet_food宠物美食信息表
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | pet_food_id | int | 10 | 0 | N | Y | 宠物美食ID | |
2 | salesperson_account | int | 10 | 0 | Y | N | 0 | 销售员账号 |
3 | sales_employee_id | varchar | 64 | 0 | Y | N | 销售员工号 | |
4 | food_item_number | varchar | 64 | 0 | Y | N | 食品货号 | |
5 | food_specifications | varchar | 64 | 0 | Y | N | 食品规格 | |
6 | hits | int | 10 | 0 | N | N | 0 | 点击数 |
7 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
8 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
9 | cart_title | varchar | 125 | 0 | Y | N | 标题:[0,125]用于产品html的标签中 | |
10 | cart_img | text | 65535 | 0 | Y | N | 封面图:用于显示于产品列表页 | |
11 | cart_description | varchar | 255 | 0 | Y | N | 描述:[0,255]用于产品规格描述 | |
12 | cart_price_ago | double | 8 | 2 | N | N | 0.00 | 原价:[1] |
13 | cart_price | double | 8 | 2 | N | N | 0.00 | 卖价:[1] |
14 | cart_inventory | int | 10 | 0 | N | N | 0 | 商品库存 |
15 | cart_type | varchar | 64 | 0 | N | N | 未分类 | 商品分类: |
16 | cart_content | longtext | 2147483647 | 0 | Y | N | 正文:产品的主体内容 | |
17 | cart_img_1 | text | 65535 | 0 | Y | N | 主图1: | |
18 | cart_img_2 | text | 65535 | 0 | Y | N | 主图2: | |
19 | cart_img_3 | text | 65535 | 0 | Y | N | 主图3: | |
20 | cart_img_4 | text | 65535 | 0 | Y | N | 主图4: | |
21 | cart_img_5 | text | 65535 | 0 | Y | N | 主图5: | |
22 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
23 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
(4)order订单信息表如表3-6所示。
表3-6order订单信息表
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | order_id | int | 10 | 0 | N | Y | 订单ID: | |
2 | order_number | varchar | 64 | 0 | Y | N | 订单号: | |
3 | goods_id | mediumint | 8 | 0 | N | N | 商品id:[0,8388607] | |
4 | title | varchar | 32 | 0 | Y | N | 商品标题: | |
5 | img | varchar | 255 | 0 | Y | N | 商品图片: | |
6 | price | double | 10 | 2 | N | N | 0.00 | 价格: |
7 | price_ago | double | 10 | 2 | N | N | 0.00 | 原价: |
8 | num | int | 10 | 0 | N | N | 1 | 数量: |
9 | price_count | double | 8 | 2 | N | N | 0.00 | 总价: |
10 | norms | varchar | 255 | 0 | Y | N | 规格: | |
11 | type | varchar | 64 | 0 | N | N | 未分类 | 商品分类: |
12 | contact_name | varchar | 32 | 0 | Y | N | 联系人姓名: | |
13 | contact_email | varchar | 125 | 0 | Y | N | 联系人邮箱: | |
14 | contact_phone | varchar | 11 | 0 | Y | N | 联系人手机: | |
15 | contact_address | varchar | 255 | 0 | Y | N | 收件地址: | |
16 | postal_code | varchar | 9 | 0 | Y | N | 邮政编码: | |
17 | user_id | int | 10 | 0 | N | N | 0 | 买家ID: |
18 | merchant_id | mediumint | 8 | 0 | N | N | 0 | 商家ID: |
19 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
20 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
21 | description | varchar | 255 | 0 | Y | N | 描述:[0,255]用于产品规格描述 | |
22 | state | varchar | 16 | 0 | N | N | 待付款 | 订单状态:待付款,待发货,待签收,已签收,待退款,已退款,已拒绝,已完成 |
(5)address地址信息表如表3-7所示。
表3-7address地址信息表
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | address_id | int | 10 | 0 | N | Y | 收货地址: | |
2 | name | varchar | 32 | 0 | Y | N | 姓名: | |
3 | phone | varchar | 13 | 0 | Y | N | 手机: | |
4 | postcode | varchar | 8 | 0 | Y | N | 邮编: | |
5 | address | varchar | 255 | 0 | N | N | 地址: | |
6 | user_id | mediumint | 8 | 0 | N | N | 用户ID:[0,8388607]用户获取其他与用户相关的数据 | |
7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
9 | default | bit | 1 | 0 | N | N | 0 | 默认判断 |
(6)promotional_activities优惠活动信息表如表3-8所示。
表3-8 promotional_activities优惠活动信息表
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | promotional_activities_id | int | 10 | 0 | N | Y | 优惠活动ID | |
2 | salesperson_account | int | 10 | 0 | Y | N | 0 | 销售员账号 |
3 | activity_number | varchar | 64 | 0 | Y | N | 活动编号 | |
4 | activity_name | varchar | 64 | 0 | Y | N | 活动名称 | |
5 | event_cover | varchar | 255 | 0 | Y | N | 活动封面 | |
6 | release_date | date | 10 | 0 | Y | N | 发布日期 | |
7 | event_details | longtext | 2147483647 | 0 | Y | N | 活动详情 | |
8 | hits | int | 10 | 0 | N | N | 0 | 点击数 |
9 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
10 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
11 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
12 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
(7)seller卖家信息表如表3-9所示。
表3-9 seller卖家信息表
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | seller_id | int | 10 | 0 | N | Y | 卖家ID | |
2 | salesperson_name | varchar | 64 | 0 | Y | N | 销售员姓名 | |
3 | sales_employee_id | varchar | 64 | 0 | N | N | 销售员工号 | |
4 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
5 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
6 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
7 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
(8)customer_mailbox顾客信箱信息表如表3-10所示。
表3-10customer_mailbox顾客信箱信息表
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | customer_mailbox_id | int | 10 | 0 | N | Y | 顾客信箱ID | |
2 | customer_account | int | 10 | 0 | Y | N | 0 | 顾客账号 |
3 | message_number | varchar | 64 | 0 | Y | N | 留言编号 | |
4 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
5 | contact_information | varchar | 64 | 0 | Y | N | 联系方式 | |
6 | feedback_content | text | 65535 | 0 | Y | N | 反馈内容 | |
7 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
8 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
4 宠物食品销售微信小程序详细设计与实现
4.1前台用户功能模块
4.1.1 前台首页界面
游客或者用户进入系统后可以查看系统的信息,包含了程序的标题,导航栏,轮播图,公告信息等,其主界面展示如下图4-1所示。
图4-1 前台首页界面图
4.1.2注册界面
游客可以查看系统信息,也有注册成为用户的权限。其用注册流程图如图4-2所示,注册界面展示如下图4-3所示。

图4-2注册流程图
图4-3 用户注册界面图
注册逻辑代码如下:
/**
* 注册
* @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;
}
当用户注册成功以后就成为了买家用户,买家用户可以通过前台的登录页面登录到系统当中,用户登录流程如图4-4所示,登录界面如下图4-5所示。

图4-4 登录流程图
图4-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, "账号或密码不正确");
}
}
4.1.4 顾客信箱界面
游客是不能进行留言反馈的,只有注册成为用户才能进行提交顾客信箱,顾客信箱界面如下图4-6所示。
图4-6顾客信箱界面图
4.1.5 商品详情界面
游客只能查看宠物美食的商品,不能进行任何购买、评论操作,顾客用户可以选择自己需要的商品,加入购物车、立即购买、收藏、评论,详情展示页面如图4-7所示,购买流程图如图4-8所示。
图4-7 商品详情界面图

图4-8加入购物车流程图
4.1.6购物车界面
用户可以对加入购物车的商品进行管理、购买,购物车界面如下图4-9所示,购买流程图如图4-10所示。
图4-9 购物车界面图
图4-10 购买工作流程图
4.1.7我的订单界面
顾客用户可以查看到自己购买的商品,查看订单状态、删除,我的订单界面如下图4-11所示。
图4-11 订单界面图
4.2管理员功能模块
4.2.1顾客信箱管理界面
管理员拥有对前台顾客用户提交的顾客信箱的管理功能,对顾客信箱进行审核、回复,顾客信箱管理界面如下图4-12所示。

图4-12顾客信箱管理界面图
4.2.2 优惠活动管理界面
管理员拥有对前台优惠活动管理的功能,优惠活动的界面如下图4-13所示。

图4-13优惠活动管理界面图
优惠活动管理界面逻辑代码如下:
@RequestMapping(value = {"/count_group", "/count"})
public Map<String, Object> count(HttpServletRequest request) {
Query count = service.count(service.readQuery(request), service.readConfig(request));
return success(count.getResultList());
}
4.2.3 宠物美食管理界面
管理员拥有对宠物美食中的商品进行添加、修改、删除、管理评论的功能,宠物美食管理界面如下图4-14所示。

图4-14宠物美食管理界面图
宠物美食管理界面逻辑代码如下:
@RequestMapping(value = {"/avg_group", "/avg"})
public Map<String, Object> avg(HttpServletRequest request) {
Query count = service.avg(service.readQuery(request), service.readConfig(request));
return success(count.getResultList());
}
4.2.4 分类列表界面
管理员拥有对商品的分类增删改查的功能,分类列表界面如下图4-15所示。

图4-15分类列表界面图
4.2.5订单列表界面
管理员拥有对所有订单的查询、删除的功能。订单列表界面如下图4-16所示。

图4-16 订单列表界面图
订单列表管理的逻辑代码如下:
@PostMapping("/add")
@Transactional
public Map<String, Object> add(HttpServletRequest request) throws IOException {
service.insert(service.readBody(request.getReader()));
return success(1);
}
@Transactional
public Map<String, Object> addMap(Map<String,Object> map){
service.insert(map);
return success(1);
}
public Map<String,Object> readBody(BufferedReader reader){
BufferedReader br = null;
StringBuilder sb = new StringBuilder("");
try{
br = reader;
String str;
while ((str = br.readLine()) != null){
sb.append(str);
}
br.close();
String json = sb.toString();
return JSONObject.parseObject(json, Map.class);
}catch (IOException e){
e.printStackTrace();
}finally{
if (null != br){
try{
br.close();
}catch (IOException e){
e.printStackTrace();
}
}
}
return null;
}
public void insert(Map<String,Object> body){
StringBuffer sql = new StringBuffer("INSERT INTO ");
sql.append("`").append(table).append("`").append(" (");
for (Map.Entry<String,Object> entry:body.entrySet()){
sql.append("`"+humpToLine(entry.getKey())+"`").append(",");
}
sql.deleteCharAt(sql.length()-1);
sql.append(") VALUES (");
for (Map.Entry<String,Object> entry:body.entrySet()){
Object value = entry.getValue();
if (value instanceof String){
sql.append("'").append(entry.getValue()).append("'").append(",");
}else {
sql.append(entry.getValue()).append(",");
}
}
sql.deleteCharAt(sql.length() - 1);
sql.append(")");
log.info("[{}] - 插入操作:{}",table,sql);
Query query = runCountSql(sql.toString());
query.executeUpdate();
}
4.2.6系统用户管理界面
在后台系统用户管理中,主要是管理注册的系统用户、卖家和管理员用户,管理员拥有对所有用户管控的功能。系统用户管理界面如下图4-17所示。

图4-17 系统用户管理界面图
系统用户管理界面逻辑代码如下:
@PostMapping("/set")
@Transactional
public Map<String, Object> set(HttpServletRequest request) throws IOException {
service.update(service.readQuery(request), service.readConfig(request), service.readBody(request.getReader()));
return success(1);
}
public Map<String,String> readConfig(HttpServletRequest request){
Map<String,String> map = new HashMap<>();
map.put(FindConfig.PAGE,request.getParameter(FindConfig.PAGE));
map.put(FindConfig.SIZE,request.getParameter(FindConfig.SIZE));
map.put(FindConfig.LIKE,request.getParameter(FindConfig.LIKE));
map.put(FindConfig.ORDER_BY,request.getParameter(FindConfig.ORDER_BY));
map.put(FindConfig.FIELD,request.getParameter(FindConfig.FIELD));
map.put(FindConfig.GROUP_BY,request.getParameter(FindConfig.GROUP_BY));
map.put(FindConfig.MAX_,request.getParameter(FindConfig.MAX_));
map.put(FindConfig.MIN_,request.getParameter(FindConfig.MIN_));
return map;
}
public Map<String,String> readQuery(HttpServletRequest request){
String queryString = request.getQueryString();
if (queryString != null && !"".equals(queryString)) {
String[] querys = queryString.split("&");
Map<String, String> map = new HashMap<>();
for (String query : querys) {
String[] q = query.split("=");
map.put(q[0], q[1]);
}
map.remove(FindConfig.PAGE);
map.remove(FindConfig.SIZE);
map.remove(FindConfig.LIKE);
map.remove(FindConfig.ORDER_BY);
map.remove(FindConfig.FIELD);
map.remove(FindConfig.GROUP_BY);
map.remove(FindConfig.MAX_);
map.remove(FindConfig.MIN_);
return map;
}else {
return new HashMap<>();
}
}
@Transactional
public void update(Map<String,String> query,Map<String,String> config,Map<String,Object> body){
StringBuffer sql = new StringBuffer("UPDATE ").append("`").append(table).append("`").append(" SET ");
for (Map.Entry<String,Object> entry:body.entrySet()){
Object value = entry.getValue();
if (value instanceof String){
sql.append("`"+humpToLine(entry.getKey())+"`").append("=").append("'").append(value).append("'").append(",");
}else {
sql.append("`"+humpToLine(entry.getKey())+"`").append("=").append(value).append(",");
}
}
sql.deleteCharAt(sql.length()-1);
sql.append(toWhereSql(query,"0".equals(config.get(FindConfig.LIKE))));
log.info("[{}] - 更新操作:{}",table,sql);
Query query1 = runCountSql(sql.toString());
query1.executeUpdate();
}
public String toWhereSql(Map<String,String> query, Boolean like) {
if (query.size() > 0) {
try {
StringBuilder sql = new StringBuilder(" WHERE ");
for (Map.Entry<String, String> entry : query.entrySet()) {
if (entry.getKey().contains(FindConfig.MIN_)) {
String min = humpToLine(entry.getKey()).replace("_min", "");
sql.append("`"+min+"`").append(" >= '").append(URLDecoder.decode(entry.getValue(), "UTF-8")).append("' and ");
continue;
}
if (entry.getKey().contains(FindConfig.MAX_)) {
String max = humpToLine(entry.getKey()).replace("_max", "");
sql.append("`"+max+"`").append(" <= '").append(URLDecoder.decode(entry.getValue(), "UTF-8")).append("' and ");
continue;
}
if (like == true) {
sql.append("`"+humpToLine(entry.getKey())+"`").append(" LIKE '%").append(URLDecoder.decode(entry.getValue(), "UTF-8")).append("%'").append(" and ");
} else {
sql.append("`"+humpToLine(entry.getKey())+"`").append(" = '").append(URLDecoder.decode(entry.getValue(), "UTF-8")).append("'").append(" and ");
}
}
sql.delete(sql.length() - 4, sql.length());
sql.append(" ");
return sql.toString();
} catch (UnsupportedEncodingException e) {
log.info("拼接sql 失败:{}", e.getMessage());
}
}
return "";
}
系统的前台、后台、数据库完成以后,这个系统才算是完成了一半,我们在这之后要对系统进行最后的一个阶段,那就是测试了,测试对一个系统来说是非常重要的,有的时候开发完一个系统,如果测试不合格的话,这个系统是没有办法进行投入使用的,所有我们要用测试对系统的功能进行检验,把不完善的功能尽量完善,把出现的bug解决掉,然后给用户呈现出一个完美的系统。通过对系统最后一步的测试,使得开发人员对自己的系统更加有信心,更加积极的为后期的系统版本的更新提供支持。
5.1系统测试的目的
一个系统测试的目的就是检验系统在真正的工作环境、条件下是不是能够正常运行,各种功能能不能符合设计的要求,通过测试发现系统当中存在的一些潜在的错误,然后对系统进行改进,使得系统最终以完美的形式展现给用户,提高用户使用过程中的体验度,真正达到项目的实际使用目的。
5.2 系统测试用例
系统测试包括:管理员登录功能测试、宠物美食查看功能测试、商品添加功能测试、加入购物车购买功能测试,如表5-1、5-2、5-3、5-4所示:
管理员登录功能测试:
表5-1 管理员登录功能测试表
测试名称 | 测试功能 | 操作过程 | 预期结果 | 测试结果 |
登录模块测试 | 登录成功的情况 | 管理员可以通过浏览器进入到宠物食品销售微信小程序后台登录界面,输入用户名:admin和密码admin后,点击“登录”按钮。 | 成功登录到管理员管理的界面 | 正确 |
登录模块测试 | 登录失败的情况 | 管理员可以通过浏览器进入到宠物食品销售微信小程序后台登录界面,输入用户名:admin和密码111后,点击“登录”按钮。 | 系统提示“用户名和密码不匹配” | 正确 |
宠物美食查看功能测试:
表5-2 宠物美食查看功能测试表
测试名称 | 测试功能 | 操作过程 | 预期结果 | 测试结果 |
查询宠物美食信息功能测试 | 查询成功的情况 | 用户在导航栏中点击“宠物美食”,输入关键词查询商品,输入的商品在系统中存在,显示查询商品信息 | 查询成功 | 正确 |
宠物美食中商品添加界面测试:
表5-3 管理员添加商品界面测试表
测试名称 | 测试功能 | 操作过程 | 预期结果 | 测试结果 |
商品添加模块测试 | 商品添加成功的情况 | 在“宠物美食”菜单中点击“宠物美食”会显示出所有的商品信息,点击“添加”,输入商品信息,输入正确的信息后,点击“提交”按钮。 | 提示添加成功 | 正确 |
商品添加模块测试 | 商品添加失败的情况 | 在“宠物美食”菜单中点击“宠物美食”会显示出所有的商品信息,点击“添加”,不输入标题,其他信息正常填写后,点击“提交”按钮。 | 提示“添加失败,标题不能为空” | 正确 |
加入购物车购买功能测试:
表5-4 加入购物车购买功能测试表
测试名称 | 测试功能 | 操作过程 | 预期结果 | 测试结果 |
加入购物车购买功能测试 | 购买的情况 | 用户在宠物美食的商品详情页面,点击“加入购物车”,然后在“我的购物车”界面,点击“购买”按钮,进行付款。 | 加入购物车购买成功 | 正确 |
本次开发的系统是一数码产品销售、购买的系统,主要功能就是实现用户的在线购买,通过对管理员登录、商品查询、商品添加、加入购物车购买这几个方面的测试可以看出系统的基本可以实现用户对商品购买的功能,而且在测试的过程中也对界面的展示进行了查看,发现界面并没有出现扭曲、混乱等情况,能够满足用户的需求,系统运行良好,是可以进行投入使用的。
网络大环境下,电子商务的商业模式已经遍及全国各地,由于人们生活水平的提高以及生活节奏的加快,让人们也已经爱上这种购物模式。本次开发的宠物食品销售微信小程序即是基于目前电子商务模式而建设的,其开发目的是给用户提供一个全新的交易环境,提高用户购物的体验度,系统的开发不仅可以实现宠物食品的购物、销售,还能进行、优惠活动、顾客信箱,功能非常多样。
该宠物食品销售微信小程序使用的开发环境是功能强大的JAVA+MYSQL,在大学的学科中重点学习了这两中技术,在对这些技术学习、熟悉之后,结合对系统进行的需求分析顺利的完成了本次项目的设计。在最初接到任务书的那一刻,比较迷茫,没有任何的思路,在经过了老师的指导以后,调查了一些购物系统相关的资料后,慢慢的有了头绪,开始入手开题,明确了系统的内容,对系统进行可行性的分析,确定系统可行以及功能内容以后,就按照开题初步设计的内容进行完善,慢慢补充、学习,最终结束了程序的开发,也完成了论文的写作。这一过程,虽然艰辛,但也学习到了很多,对项目开发流程也有了一个新的认识,动手能力也得到了提高,这正是书本上所学习不到的。
经过开发本项目,让我非常有成就高,与此同时我对程序的开发更加感兴趣了,信息技术真的很强大,也很深奥,在以后工作中,我将会寻找与其相关工作,继续深入学习,开发出更优秀的项目。
考文献
[1]刘珂. P宠物食品公司营销策略研究[D].云南财经大学,2023.DOI:10.27455/d.cnki.gycmc.2023.000575.
[2]刘明欣,罗雅过.基于微信小程序的“农百汇”系统设计[J].信息与电脑(理论版),2023,35(01):26-29.
[3]张高豪,张艺海,余泽楹等.基于微信小程序的卷烟销售违法案件管理系统[J].电脑编程技巧与维护,2022(12):66-68.DOI:10.16184/j.cnki.comprg.2022.12.037.
[4]薛晶晶. HX宠物食品有限公司营销策略研究[D].河北地质大学,2022.DOI:10.27752/d.cnki.gsjzj.2022.000865.
[5]Yanyan L,Danyu L,Haishan R, et al. Development and usability test of a symptom management WeChat Mini Program for parents of children with cancer[J]. Asia-Pacific Journal of Oncology Nursing,2022,9(12).
[6]黄岐桂,莫靖聪.互联网+背景下的农产品分销平台研究——以“惠农优果”微信小程序为例[J].中国市场,2022(25):183-186.DOI:10.13939/j.cnki.zgsc.2022.25.183.
[7]杨天仪. 宠物经济下宠物食品企业价值评估研究[D].中南财经政法大学,2022.DOI:10.27660/d.cnki.gzczu.2022.001932.
[8]聂宇晗. 扁平化插画在宠物食品包装设计中的应用研究[D].河北科技大学,2022.DOI:10.27107/d.cnki.ghbku.2022.000130.
[9]贾成飞. HX宠物食品公司销售人员培训管理研究[D].河北地质大学,2022.DOI:10.27752/d.cnki.gsjzj.2022.000428.
[10] 张泽陆. 计算机软件开发技术在JAVA编程语言的应用[J]. 工程技术发展, 2022, 3(5):78-80.
[11] 何超. 计算机软件开发中JAVA编程语言及其实际应用[J]. 数码设计(上), 2022(005):000.
[12] 张海燕. 计算机软件开发的JAVA编程语言应用[J]. 2022(15).
[13]Cheng F. Talent Recruitment Management System for Small and Micro Enterprises Based on Springboot Framework[J]. Advances in Educational Technology and Psychology,2021,5(2).
[14]Chen J,Jian C,Hailan P. Design of Man Hour Management Information System on SpringBoot Framework[J]. Journal of Physics: Conference Series,2020,1646(1).
[15] 朱姝. Java程序设计语言在软件开发中的运用初探[J]. 电子测试, 2021(21):3.
[16] 刘晓峥. JAVA编程语言在计算机软件开发中的应用分析[J]. 装备维修技术, 2021(2):0306-0306.
[17] 陈庚. 计算机软件开发的Java编程语言及应用分析[J]. 信息记录材料, 2021, 22(10):2.
[18]李艳杰. MySQL数据库下存储过程的设计与应用[J]. 2021.
[19]陈铁方, 崔岩松. 基于MySQL数据库的数据库查询加速实现[J]. 2021.
[20]宋永鹏. 基于MySQL的数据库查询性能优化[J]. 电子设计工程, 2021, 29(12):5.
[21]郑戟明, 董云朝, 柳青. MySQL数据库数据导入导出方法的探讨[J]. 电脑知识与技术, 2022(022):018.
通过这样设计与开发这样一个系统,首先向我们老师、同学和朋友表达真诚的感谢。没有指导老师的指导和平日子的教导,我也不能够学到如此多的专业知识。另外,也佩服老师兢兢业业的工作态度,给我们做好了表率。系统开发技术要学习的东西很多,前台框架、后台框架、业务流程、数据结构、操作系统等各种知识非常的丰富,都需要慢慢的专研。在这里,首先感谢老师细心的教导,我只想说一句:“老师,谢谢您,您辛苦了!有您在,大学生活才更加的充实。”另外,我要感谢我的室友,由于知识掌握得不够产生各种问题,正因为有了你们的帮忙,给我提出很多很好的建议,才能更好的解决系统开发问题。同时,我也应该感谢那些计算机专业的先哲们,正是由于有这么一群人,才能把这样的专业研究得如此透彻,才能助力新世界的诞生。你们的理论,是我们一生学习的内容,你们的成就,是我们一生追求的目标。
最后,也希望自己在未来的道路上能够走得更远,不辜负在大学的学习,以及老师们的细致的教导。
免费领取源码,请点赞关注私信博主