基于微信小程序的童书购买系统的设计与实现
摘 要
《“十三五”规划》第一次把“保障妇女、未成年人、残疾人的基本权利”作为重要内容,充分体现了党和国家对广大人民群众的关心,为广大人民群众营造了良好的学习氛围,并出台多项文件及政策,坚持儿童优先,大力保障儿童发展和儿童事业。在这样的大环境下,家长对儿童教育有了新的认识,对儿童教育更加重视。家长在挑选童书的过程中,更加注重图书的质量、同龄人使用情况以及图书推荐清单等方面。此外,微信小程序在国内发展十分迅速,微信小程序依附于微信这一日常聊天交流软件,迅速地获取了大量用户。微信小程序主要以用户不再需要安装额外的 APP 软件为主要优势,降低了用户的使用门槛,结合了 B/S、C/S 架构二者的优点,开发简便,生态圈良好。
基于上述背景,对基于微信小程序的童书购买系统进行了研究,选用了 Spring Boot+Vue+MySQL 技术栈,对该系统进行了设计和开发,主要实现了用户管理、订单管理、购物车管理、地址管理、商品管理、数据统计、移动支付等功能。本系统主要受众是孩子的父母,在购买童书时,可以快捷地进行选购,减少综合性网上商城带来的选择焦虑,享受该群体的定制商城体验。
第 1 章 绪论
1.1 系统开发背景
随着手机购物的进一步流行,APP 形式的网上购物商城同样也会由于下载等原因导致部分用户方便快速的体验感遭到破坏。而在日常生活上所必须的微信、支付宝等提供的小程序平台更加方便了用户获取服务,不需要额外安装任何 APP 就可以获取服务,这样减少了用户获取服务的成本,仅需要在使用微信时,点开微信小程序就可以进入商城浏览商品。这样更加容易获取的服务,为用户提供了便捷、可用的获取方式,降低了用户获取服务的门槛,从而激发潜在用户的消费欲望。
图书购物商城以早期的百花齐放,到最后的一枝独秀,最后也趋于走向综合商城,变得更为同质化。在同质化产品过剩的今天,消费者会更加倾向使用精确用户定位的童书购买系统。享受定制化服务,在挑选商品时降低时间成本,快速获取童书信息,以及相同群体的选择则是童书购买系统本身区别与其他综合购物商城的优势,也是消费者对系统更加精确的产品定位的新需求。
1.2 系统开发意义
在教育方面,国家将立德树人作为最基本的任务,努力构建一个以德智体美劳全面发展为目标的综合素质教育系统。多元化的、高质量的儿童图书、音视频影像资料等将成为儿童教育的关键一环。据此,以童书售卖为背景的网上商城将会为广大家长提供更多的便利。
目前已经存在的童书购买系统主要以图书购买为主,童书售卖仅是其售卖系统的一个模块,并且由于主流网上购物平台逐步趋于同质化发展,很难存在特色,用户在琳琅满目的商品中,会浪费大量的时间进行挑选。对基于微信小程序的童书购买系统进行研究,系统主要受众群体是孩子的父母。孩子父母在购买童书时,可以通过本系统更加快捷、更加具有针对性地进行选购,减少综合性网上商城带来的选择焦虑,享受该群体的定制商城体验。
1.3 国内外研究现状
1.3.1 国内现状
国家层面对于儿童发展十分重视,儿童的发展决定了民族发展的未来。国家配套出台了相关政策,在这样的大环境下家长对儿童教育有了新的认识,也对儿童教育更加重视。同时,家长对于童书购买有了新的需求。家长在挑选童书的过程中,更加注重图书的质量、同龄人使用情况以及图书推荐清单等方面。当今的童书购买趋于电子化、动态化,纸质童书的售卖相对比较困难。但电子图书总是让家长“两难”——方便但是伤害儿童眼睛。由于这一痛点,纸质图书仍然有其售卖优势,而现今缺乏的是多元化售卖方式。这时候一种更加针对用户群体的特定线上图上购物系统会较于综合线上购物平台更有个性化优势,能够带给用户更加符合用户特征的购物体验。
交易平台方面,由于国内线上交易平台发展更加迅速,国内有更加广大的消费群体,同时也对线上交易需求更加迫切,但是传统的网上购物商城同质化严重。在海量的商品数据面前,大公司更愿意提供综合线上交易平台。这样保证了更多的受众,有更为广泛的用户群体。但是对于更为细节上的需求,现今的网上综合购物平台在这一方面显得心有余而力不足,不具备优势。尤其针对童书的网上购物系统是缺失的,专门注重图书购物的当当网也逐步在向综合购物商城方向上发展。
近年来,微信小程序在国内发展十分迅速,微信小程序主要以用户不再需要安装额外的 APP 软件为主要优势,降低了用户的使用门槛,结合了 B/S、C/S 架构二者的优点,开发简便,生态圈良好,大量的功能包集成,降低了开发成本,同时方便了用户使用,使得受众更广,使用量更大。
1.3.2 国外现状
国外注重儿童教育比国内更早,儿童教育多元化是国外儿童教育的一大特点。家长更是对儿童教育十分重视,很多国外的家长经常带着孩子出去玩,寓教于乐,保护着孩子的天性,同时激发起孩子对知识的好奇。国外家长在童书购买方面,也十分“挑剔”,秉承宁缺毋滥的态度选购童书。这样使得国外的童书市场竞争更加激烈,优质童书也是占据着大量的市场份额。同时国外的童书购买平台更加具有针对性,网上以童书为主要销售商品的购买平台数量庞大,更具针对性,市场活力更强。
2019 年新型冠状病毒席卷全球,这场突如其来的新冠疫情对于图书发行行业的公司有着极大影响,大量的实体图书商店会出于健康考虑而选择暂时关闭,消费者也会因为疫情的蔓延,而不再到实体书店进行图书选购。这时在线图书售卖平台成为了消费者与商家之间新的宠儿。尽管随着大量的在线商家涌入在线购物网站平台,仍然只有少数几条因素影响着消费者在线图书的购买行为,公道的价格、图书的种类、以及迅速的快递运输都是消费者产生在线图书消费行为的主要因素。
对于消费者来说,以简便、快捷、支付通畅、足不出户迅速获得实体书籍为特点在线图书购买网站,会更加增加消费者的购买欲望。但是对于激增的在线图书购买需求,以及为在线卖家提供的线上商店管理平台,为现行的图书购买系统带去了不小的压力,并且由于早期的在线图书购买系统,不大的购买量需求,导致已有的线上图书购物系统已经不能满足现行的图书购物需求,以及用户对于网站高可用性,支付方式多样,搜索便捷,以及图书评价无法得到满足,导致对于业务激增的线上图书购物平台,带去了极大的技术限制,让大量图书交易需求流失。
微信小程序在国外发展相较于国内发展较慢,主要原因国外用户使用的主流的聊天软件不是微信,导致微信小程序在易用性上大打折扣。对于国外公司选择更为保守的平台进行童书购买系统的开发更为合理。
1.4 课题研究主要内容
该系统是基于微信小程序开发的,采用 Vue 以及 Thymeleaf 作为前端开发框架,后端采用 Spring Boot 框架、数据持久化则使用 MySQL 数据库、数据访问选用 Spring Data JPA 框架。该系统具备游客、用户和管理员三种权限,具体包括以下功能:
游客:浏览商城首页。 用户:用户进行注册新用户、登录本系统;用户进行商品选购,可将商品加入收藏、购物车;用户进行商品名搜索;用户进行童书购买、下订单、完成支付。
管理员:管理员添加童书类型;管理员上架童书、隐藏童书商品;管理员查询系统中已注册的用户;管理员分类查询订单信息,对已发货订单添加快递信息;管理员对每日、每月的收入统计,获取营业额;管理员对书销量统计,可以根据销量进行热销图书推荐。
第 2 章 系统分析
2.1 系统可行性分析
2.1.1 技术可行性
微信拥有庞大的用户群,依附于其运行的微信小程序拥有多平台兼容性,自适应各个设备对程序页面的显示。同时微信公众平台为开发者降低了程序上线门槛。Spring Boot、MySQL 相结合的服务器运行框架在程序开发界拥有极高的占比,可维护性更强。
2.1.2 经济可行性
本系统进行开发时,选用的开发框架均选择的是开源框架,拥有良好的开发维护生态,对不同硬件也有良好的兼容性。同时使用的开发工具选择的也是免费的开发工具。系统在开发阶段所需资金较少,没有使用有版权的开发资源,消除了版权支付费用,降低了系统上线时的侵权风险。
2.2 需求分析
当今社会,电子商城早已融入人们日常生活当中,高效、快节奏、足不出户的购买在消费者心中早已成为了更加受欢迎的选择,而早期的网页电商平台,以及现行更为流行的 APP 商城仍然对消费者产生了使用门槛,尤其对于老龄化严重的当今社会,这一壁垒的形成,使得大量的潜在消费者流失。而微信这一应用,由于集成通信、支付等功能,使得越来越多的人使用微信,并且年轻人为了与家里人联系方便,也为家里人使用这一款应用扫清了障碍。由微信平台为开发者和用户提供的微信小程序,减轻了双方的使用负担,开发者可以通过微信小程序让服务快速上线,用户可以快捷地获取电商服务。
2.2.1 游客与用户访问流程分析
(1)消费者第一次进入商城系统中,可对系统中已有的商品进行预览,可获取到商城推荐的童书商品,但是当浏览商品的详细页时,系统会对这样的用户操作进行拦截,验证存储的用户信息,如果信息验证失败,则会提示用户进行注册、登录。
(2)在注册过程中,用户需要保证联系信息的真实性。进行注册信息填写时,请确保填写的用户名是易于记忆并且与个人信息相关联的,因为该用户名将是今后登录系统时所需的唯一标识符。同时,确保设置的密码强度足够,不易被猜测或破解,以保障您的账户安全。
(3)成功登录系统后,系统自动跳转至商城初始化页面,用户可以获取到系统已上架的商品,也可以根据商品分类查询商品,同时可点击进入商品介绍页面,查看更多商品相关的信息,商城浏览流程图如图所示。
2.2.2 购物车流程分析
用户登陆本系统后,可在页面上找到自己需要的商品,进入该商品下的介绍页面,在该页面再按下“加入购物车”键,将自己需要的商品加入购物车,购物车会帮助用户保存想要购买的物品。在购物车页面,顾客可以对购物车保存的信息进行更改,更改完毕后,顾客就可以在购物车内下单,并购买自己想要的物品。购物车流程图如图所示。
2.2.3 订单流程分析
订单状态有待付款、待收货、已完成三种状态,当客户下单后,系统会自动将订单状态设为待付款,此时扣除库存,锁定这一部分库存,保证其他人不会获取到这一部分库存。用户可取消待付款订单,取消后释放库存。当客户支付完货款后,系统会查询客户的支付状况,获取到支付系统反馈的成功信息后,订单进入等待管理员发货的处理流程中。商家会尽快将商品发出,快递公司生成好快递单号后,管理员通过系统上传该单号,订单进入用户等待收货处理流程。用户收到商品后,在系统中确认收货,订单流程处理结束。订单管理流程图如图所示。
2.2.4 个人信息用例分析
消费者在注册账户后,可以对个人信息进行修改,修改账户头像,性别,生日,也可以修改密码。修改密码时需要对当前密码进行验证。同时,用户可以对自己的地址进行管理,添加新的收货地址,修改已有的收货地址。个人信息管理用例图如图所示。
2.2.5 管理员用例分析
管理员可以在系统中查看已有的用户信息。同时,管理员也可以在管理员管理页面对商品进行操作,包括上架商品、上传商品图片、修改商品富文本介绍、修改商品信息、下架商品等,查询系统已有订单,对已付款订单上传快递单号,从而告知订单已发货。管理员可以在统计页面,清晰的了解到商品的售卖情况,根据售卖情况对商品进行推荐,同时也了解当月、当日营业额,从而调整销售策略。管理员管理用例图如图所示。
第 3 章 相关技术介绍
3.1 Spring Boot 框架
Spring Boot 框架诞生于 2014 年 4 月,由 Pivotal 团队研发。基于 Spring4.0 设计的 Spring Boot 框架简化了创建 Spring 应用的基础搭建的过程,同时也简化了 Spring Boot 框架 Spring 应用的开发过程,其中最为重要的是,Spring Boot 框架将程序开发者从样板化配置中解放出来,更加专注于 Spring 应用开发。Spring Boot 有 7 个主要特性:约定优于配置、可独立运行 Spring 应用、内嵌 Web 容器、提供 Starter 简化 Maven 配置、自动配置 Spring、提供准生产的应用监控、无代码生成和 XML 配置。
Spring Boot 框架可以给开发带来极大的方便,不需要繁杂的配置,使用 Spring 官方为开发人员提供的 Spring Initializr,在脚手架界面中选择需要使用的库,便可以十分迅速地完成初始环境配置,为开发人员省下大量时间。
3.2 JPA 数据库技术
JPA 是一种把在程序中创建的实体对象永久保存到数据库中的一种技术。JPA 以注释或 XML 的方式,将在程序运行过程中创建的实体对象持久地保存到数据库中,以保证程序运行时不会对其所用的代码进行更改,因此可以保证数据的完整性与一致性。由于 JPA 需要 Provider 提供支持,而本系统开发时由于使用的是 Spring Boot 框架,在数据访问模块,选用的是 Spring Data JPA,在 JPA 的实现上本系统选择的是由 Spring Data JPA 默认提供的 Hibernate 框架。
传统的 JDBC 技术进行数据库连接,需要使用代码进行映射,配置映射关系时,往往是程序开发者极为头疼的一个过程。而 Spring Data JPA 通过使用基于 JPA 的 Repository 极大地简化了 JPA 的语法,继承 JpaRepository 的接口,辅助部分注解告知程序,来进行数据库结构创建,以及数据管理。
3.3 微信小程序
近年来,微信小程序深度人们喜爱,其轻便性,易用性,低门槛的特性相信读者已经深有体会。而微信小程序的实质其实是 Hybrid APP,混合了 Web APP 和 Native APP 两种的开发模式。在这一背景下基于 Vue.js 框架的 APP 开发框架 Uni-App 应运而生。
Uni-App 开发框架相较于由微信官方提供的开发框架(WXML+WXSS+JavaScript),具有更强的可移植性,支持多平台发布,同时其拥有更为良好的生态圈,以及其 Vue 开发风格更贴近传统的前端开发的特点而深受广大程序开发人员喜爱。Uni-App 实现了一套程序代码多用,在经过不同的编译流程后可以向 IOS、Android、Web、小程序等多个平台进行发布。Uni-App 官方提供了很多开箱即用的组件,可以在短时间完成大量更加贴合用户使用的习惯的前端页面。
3.4 RSA2 非对称加密算法及 MD5 加密算法
考虑到本系统使用上的数据安全性,本系统开发时选用了 RSA2 非对称加密算法以及 MD5 加密算法。
RSA2 非对称加密算法在本系统中主要运用于支付模块,RSA2 算法强制使用的密钥长度为 2048,通过私钥进行签名,将支付信息进行上传从而防止支付信息泄露,在完成支付后,向服务器进行询问支付结果或者等待服务器返回支付结果,收到信息后,通过公钥进行验证,验证信息是否篡改,验证签名通过后,修改订单信息。RSA2 非对称加密算法保证了支付的安全性,提高了用户资金的安全。
MD5 加密算法对本系统用户密码进行加密,MD5 加密是一个不可逆的过程,用户在注册或者修改密码时像服务器提交的明文会经过 MD5 算法进行计算形成 128 位散列值保存与数据库中。MD5 由于无法已被证实无法防止碰撞,导致传统的 MD5 算法也变得不适用于安全性认证。但是 MD5 算法可以通过“加盐”的形式进行改良,减少了撞库风险,本系统在对密码进行加密时会携带本系统特有密钥与用户密码一同进行加密并保存至数据库。当用户要进行登录验证、口令修改等操作时,用户所输入的明文口令会和系统预先设定的密钥共同使用 MD5 算法进行单向性加密,并通过明文口令和储存在资料库中的口令相比对,来验证用户的身份,从而在需要时可以及时地确定用户的身份。
第 4 章 系统设计
4.1 系统架构设计
基于微信小程序的童书购买系统架构将同时采用 B/S 架构以及 C/S 架构。基于系统需求分析发现,本系统通过微信小程序向用户提供服务,同时需要为管理员设计由浏览器提供服务的后台管理系统,对商城的日常销售业务进行管理,特此本系统将采用 B/S 和 C/S 两种架构分别为管理员、用户以及游客提供服务。
根据上述系统结构分析,本系统分为由浏览器、微信小程序组成用户可视层,为使用者提供图形化界面、Spring Boot 内嵌的 Tomcat 网络应用服务器作为服务层、数据持久化层由 MySQL 数据库服务器组成,由 Spring Data JPA 将网络应用服务器和数据库服务器链接起来。整个系统需要同时为管理员、用户和游客提供服务。在这种功能需求下,系统需要为后台管理系统提供动态页面服务,也需要为微信小程序端提供数据接口。系统架构图如图所示。
4.2 系统功能设计
4.2.1 系统总体功能结构
根据需求分析和架构设计,得到本系统的总体功能结构。系统总体功能结构图如图所示。
4.2.2 用户管理模块
用户管理模块主要实现功能为用户注册、用户登录、用户信息修改、用户信息查询。用户管理模块图如图所示。
(1)用户注册
此功能在微信小程序端,在使用者没有本系统用户时,提供用户注册服务。主要功能是有使用者按照系统对注册信息的要求填写注册信息,完成填写后向服务器发送请求,服务器对信息验证通过后,完成注册,保存注册信息至数据库用户表。
(2)用户登录
此功能在微信小程序端,使用者拥有本系统账户下,需要进行购买行为时,为其提供登录本系统的页面,需要填写用户名和密码进行登录,在验证填写的信息正确后,成功登录本系统。
(3)用户信息修改
此功能在微信小程序端,用户需要对用户头像、用户名、生日、性别以及密码进行修改,在用户信息页点击需要修改项进入需要修改项修改页,完成修改后系统对所需修改信息进行验证,通过后完成修改。
(4)用户信息查询
此功能在管理员端,系统管理员在网页中发送用户信息查询请求,服务器接收后,向数据库请求数据,向网页返回用户实体列表,网页处理后进行用户信息数据显示。
4.2.3 地址管理模块
地址管理模块实现的功能主要有新建地址、修改已有地址、删除地址、选择地址四个功能,这一模块主要为用户提供方便地的地址管理模块,下订单时选择收货地址更为简便,不必重复输入多次同一地址信息。地址管理模块图如图所示。
(1)添加地址
此功能主要用户两种情景,第一是在用户注册后首次登录,可以在更多设置里选择地址管理一项,进行添加新的收货地址,使得其拥有一个收货地址,方便其完成订单填写。第二是可以在下订单时,点击地址栏按钮,新增收货地址,将下单物品按照新增的地址进行运输。
(2)修改地址
此功能也可以同时在上述两种情景下使用,在更多设置里,进行地址管理页,选择选中的地址左滑点击修改按钮进入修改页面,此时可根据需要修改收货、收货人姓名、手机等信息。也可以在下订单时,进行相应操作。
(3)删除地址
删除地址按钮在修改地址按钮右侧,在地址管理页面选择选中的地址项左滑点击删除按钮即可删除地址。业务上由于订单管理的需要,删除地址不会直接删除数据库记录,而是将地址项转为用户不可见,保证在用户删除地址后,仍然能够在过往订单详细中查找到相应地址信息。
(4)选择地址
该功能在用户下订单时生效,用户通过购物车下订单后,进入临时订单详细页,此时用户需要在页面上半部分,点击进行地址选择,减少了用户重复输入收货地址的负担,为用户顺利下单扫清障碍。
4.2.4 商品管理模块
商品管理模块主要提供给系统管理员,完成日常的童书商品管理操作,功能包括:添加商品、添加商品图片、修改商品信息、修改商品图片、删除商品。商品管理模块图如图所示。
(1)添加商品
管理员可以从后台管理页面登录产品管理模块,点击添加产品按钮,打开添加产品页面,填写产品基本信息(如产品名称、价格、库存、类别、描述等)并上传产品图片,完成添加产品的过程。
(2)修改商品
管理员可以在商品列表页面浏览所有已有的商品,同时可以使用分页功能进行查看。如果管理员想要修改某个商品的信息,可以选择该商品并点击“修改信息”按钮,页面会转到商品信息编辑页面。在这个页面上,管理员可以更改产品信息,这些信息与添加产品时填写的信息完全相同,只是现有的信息会自动填充到表格中,以便管理员在此基础上进行更改。
(3)删除商品
管理员可以在商品列表页面中选择需要删除的商品,点击“删除”按钮,该商品将会被隐藏,商品状态修改为不可见状态,该商品也会从列表中移除,此时管理员将无法对该商品进行修改、用户也无法对该商品再次进行购买。此时,对应的数据库记录也将被修改,对用户对管理员均不可见,但在订单详细页中能够显示管理员已删除的商品。
(4)添加商品图片
管理员可以从产品列表中选择想要改变的产品,然后点击改变图像按钮,打开产品图 像修改页面。在这个页面中,管理员可以删除现有的图像,或者上传一个新的图片来添 加一个新的图像。对于单个商品,可以添加多个商品图片。 (5)删除商品图片
在修改商品图片页,管理员选择该商品当中需要删除的图片点击删除按钮,后台服务器根据童书商品编号进行查询,找到相应的商品图片进行删除,同时删除服务器中保存的图片,便完成了童书商品图片的删除。
4.2.5 订单管理模块
订单管理模块为用户及系统管理员提供了订单查询、订单状态修改、管理订单快递单号等操作。用户部分实现了用户正常的下单操作,提供订单分类查询、支付、取消订单、确认收货等功能。管理员部分则是提供了订单列表查询、同时提供了上传快递单号的接口。订单管理模块图如图所示。
(1)订单查询
用户可以根据自己的需求,查看不同状态的订单,也可以在所有订单页面查看自己按时间顺序查看所有的订单。管理员可以在订单管理页面对系统中已经产生的所有订单进行查询。
(2)修改订单状态
在“我的”页面中,用户可以浏览包含待付款、待收货、已完成三种类型的订单。对于待付款和待收货订单,用户可以执行相关操作。待付款订单可以被取消并释放库存,也可以进行支付并转为待收货状态。对于待收货订单,用户可以点击“确认收货”按钮以将其标记为已完成状态。
(3)上传快递单号
系统管理员在订单列表页,对已支付的订单点击对应的上传快递单号按钮,上传订单相应的快递单号,在用户查询时即可告知用户对应的快递单号。
4.2.6 购物车管理
用户选好相应的商品,即可将其添加至购物车。购物车管理模块提供了删除、添加和修改商品数量的功能,同时也允许用户对选中的商品进行下单。该管理模块为用户购买商品提供了便利,在购物车页面随时可以选中商品进行下单,从而快速建立订单。
4.2.7 支付订单
支付订单模块,本系统支持了使用支付宝进行订单支付,由于本系统开发时仅做测试使用,需要使用支付宝沙箱,模拟支付环境,支付流程与支付宝真实支付完全一致。用户在进行支付订单时,系统会返回一项可复制的网址,用户将返回网址复制进入浏览器,完成支付宝支付后,在小程序点击支付检测按钮,显示支付成功后,即可返回订单管理页面,此时就可以看到订单状态由待支付修改为待收货状态。
4.2.8 数据统计
数据统计模块为系统管理员提供数据统计功能,在后台管理系统中,在数据统计页面可以通过图表的形式查看各类商品售卖情况,在图表下方,也可以查看当月销售金额,以及当日销售金额,方便系统管理员对童书售卖情况进行周期性统计。
4.3 数据库设计
4.3.1 数据库概念结构设计
本系统主要包含以下实体:用户、地址、商品、订单、订单物品、销量、购物车和系统管理员等。它们之间的关系多为一对多,管理员实体可以管理用户、修改订单快递编号、修改商品类别、统计销量、添加商品图片等。
根据分析可以得到基于微信小程序的童书购买系统的实体关系(E-R)图,如图所示。
4.3.2 数据库逻辑结构设计
根据上述分析,每个实体对应生成一张表,并且由于 1 对多和多对多的关系存在,表内会产生外键,方便引用。本系统总共产生 10 张表分别为用户表、地址表、商品表、商品图片表、订单表、订单物品表、购物车表、管理员表、商品销量表、商品类别表。
(1)用户表
在用户表中,存储了用户的基本信息,包括用户 ID、用户名、密码、手机号、生日、头像以及性别等属性,如表所示。
(2)地址表
地址表包括地址 ID、用户 ID、收货人姓名、省市地址、详细地址、是否设为默认地址、手机号、地址状态等属性,如表所示。
(3)商品表
商品表包含商品 ID、商品名、描述、原价、现价、库存、分类、商品显示状态属性,如表所示。
(4)商品图片表
商品图片表包含商品图片 ID、商品图片路径、商品 ID 属性,如表所示。
(5)订单表
订单表包含订单编号、创建时间、订单状态、订单总数量、订单总金额、地址编号、 用户编号、快递单号属性,如表所示。
(6)订单物品表
订单物品表包含订单物品编号、商品数量、商品编号、订单编号属性,如表所示。
(7)购物车表
购物车表包含购物车编号、商品数量、商品编号、用户编号属性,如表所示。
(8)管理员表
管理员表包含管理员 ID、管理员用户名、密码属性,如表所示。
(9)商品销量表
商品销量表包含销量 ID、销量、商品 ID,如表所示。
(10)商品分类表
商品分类表包含类别 ID、商品类别名,如表所示。
第 5 章 基于微信小程序的童书购买系统的实现
第 6 章 系统测试
系统测试是对程序开发过程中和程序开发完成后进行的一种测试方法,其目的是通过一定的规则对系统服务的可用性进行测试,评估软件的运行质量,以验证系统是否符合设计要求,满足设计需求。
6.1 测试方法
6.1.1 白盒测试
代码开发途中,由控制台输出当前功能返回值,来判断程序是否满足功能要求,同时测试出功能性缺陷,以及有效、无效输入。
由于白盒测试往往进行于开发过程中,从而保证整个软件内部功能运行正常。同时由于白盒测试所涉及到的内容覆盖本系统几乎所有代码测试,所以本节将对白盒测试中一项进行举例说明,其他白盒测试项与该例相似将不过多赘述。
该例取自后台管理员端数据统计功能模块。该功能数据流图如图所示。
测试用例如表所示。
经过白盒测试数据统计功能逻辑运行正常,语句块覆盖率达 100%,同时获取正确输出,白盒测试成功。
6.1.2 黑盒测试
代码开发完成,就需要进行系统用例测试。黑盒测试应该针对每一个功能模块至少测试一个测试用例以验证其是否正常运行。此外,还应该测试程序接口,以检查程序输出是否存在异常。
(1)用户模块测试
(2)商品模块测试
(3)购物车模块测试
表中 3 号测试用例未通过的原因,主要是由于微信小程序端数据格式规范问题,以及微信平台对于访问外部服务器内容有一定的安全限制,在经过调试、修改数据格式,网络访问规范后,表中 3 号已经通过。
(4)订单模块测试
6.2 测试结论
系统经过测试用例进行测试,大部分用例已通过,未通过的用例,经检查由于微信小程序向服务器发送数据格式的限制导致用例不通过,服务器端代码进行适配后该用例已通过,少部分界面设计流畅性存在问题,经过 Uni-App 端少量代码更改,系统已经基本符合预期要求,能够保证系统运行。
结 论
基于微信小程序的童书购买系统,选用了 Spring Boot+Vue+MySQL 的框架,完成了小程序端商城开发,后端数据处理服务器开发,以及网页端后台管理系统开发。系统实现了用户管理、商品管理、购物车管理、订单管理、数据统计等功能。本系统为用户提供便捷地童书选购服务。同时为管理员提供订单数据统计,可根据销量调整销售策略。
在微信小程序体验版上线时,遇见了平台网络访问规范问题,在购买携带证书的 Https 域名后,使得体验版童书购买商城成功上线。
由于研究和开发的时间限制,虽然基于微信小程序的童书购买平台已经初步完成,但是仍然有很多待优化的地方,有些部分仍然需要代码重构。
(1)该系统的系统安全性能不佳,由于该系统主要研发方向导致该系统的安全保障仅仅是对密码加密保存,以及签名验证。在保存用户信息上,没有能够完成严格加密的防护,极易被黑客劫持。
(2)系统支付模块不够简单便捷,用户体验欠佳,后续可以将支付二维码截取放入小程序中,省去了额外使用手机浏览器的麻烦。