1 绪论
1.1 研究背景
随着全球化电商的蓬勃发展,全球电子商务带动了消费者对网上购物的需求持续增长,并且对于免税商品的消费需求呈现出强劲的发展态势。免税商品具有的价格优势和品质追求,正好符合了当下广大消费者追求高品质商品生活的要求。
1.2 研究意义
基于Python的免税网购系统具有很大的现实意义,为人们的网上购物方式提供了一个更新颖的购物体验,消费者无法直接线下购买自己所需商品时,可在系统上购买到琳琅满目的免税产品,满足日益增长的消费需求,为免税销售商提供强大的管理库存、规划策略的方式,使消费者可以个性化推荐式的产品推荐以及便捷的购物步骤的购物方式大大的提高了消费者的购物满意度,对于用户的购物行为,通过平台销售产品信息数据能及时向有需求的用户提供合适的产品,提高用户的购买欲望。
1.3 研究方向与现状
1.3.1 国内研究现状
随着计算机技术的不断更新发展,以Django平台设计的网上免税商品交易系统也将极大地提升消费者的购物体验和交易安全性,满足了消费者对商品、对效率以及对服务等消费行为的更多需求,是推动免税行业的信息化、智能化发展过程的途径。
1.3.2 国外研究现状
随着全球化及电子商务的迅速发展,国外基于django进行研究的范围也日益扩大,涵盖了各种技术架构及方法。许多研究结果表明Django框架依靠其高开发率、完备功能、易维护等优点是很多电商平台采用的主要技术栈。通过研究可知国外django研究主要有智能管理平台、数据可视化、Web应用程序设计等。
1.4 主要研究内容
系统包含用户模块和管理员模块。用户在首次进入系统时需要创建一个账号,登录后即可进行各种操作。
用户模块方面:
(1)登录注册功能:注册普通账号登录:登录后可以修改用户的基本信息,也可以退出。
(2)商品搜索功能信息: 包括模糊搜索和信息推荐。其中推荐页面通过协同过滤算法,实现商品推荐,推荐用户可能感兴趣的商品,可以点击到商品详情页面,查看商品的介绍,查看商品简介、图片、详情、用户的商品评论。
(3)购物车功能:包括加入购物车和商品结算。在商品详情,点击“加购物车",在我的购物车可以查看。
(4)用户中心:涵盖个人资料管理、地址管理、商品收藏、订单记录以及评价功能。个人信息管理可以对个人信息进行修改。
管理员功能:
商品管理:管理商品的增加、修改、删除,管理员可输入、修改商品的名称、价格、库存、规格、照片等信息;分类管理,多层级商品的分类管理,方便用户搜索;促销管理,可设置商品的优惠活动,例如,打几折、特价、满额减免活动。
(2)评论管理:管理和浏览整个网站的评论信息。
(3)用户管理:管理和浏览网站的用户信息,可以新增、编辑和删除用户。
(4)统计分析:包括销售数据分析,对销售情况进行统计分析,包括总销售额、销量、热门商品等;用户行为分析,分析用户在平台上的行为数据,如浏览历史、购买习惯等。
(5)信息管理:商品管理人员可以通过系统发送信息,整个网站的用户都能接收到。
(6)广告管理:商品管理员可以在系统上发布广告消息,然后在详情页面右侧展示。
(7)系统管理:涵盖系统配置,管理系统的基本信息,如名称、版本和更新记录等;日志管理,保存系统操作日志,包括用户登录、商品操作、订单处理等,以便于审计和问题追踪;系统监控:实时监控系统的运行状态,包括CPU、内存和网络流量等,以保证系统的稳定性。。
(9)订单管理:涵盖订单状态的管理与追踪,包括待付款、待发货、已发货、已完成、已取消等状态。
2 相关技术介绍
2.1 Python语言
Python是一种高级的程序设计语言,语言简洁、易读、效率高,适用于快速开发和迭代。开发选用Django开发框架,提供功能强大、安全保障的开发。
2.2 Django框架技术
Django是一个简单并快速开发、设计的高效PythonWeb框架。它内置和模块化的结构,更易于建立平台。
2.3 Vue技术
2.3.1 Vue框架
Vue是一个声明式的渐进式JavaScript框架,适合构建用户界面,对高性能的应用具有强大效率,也符合现代Web应用的开发框架。
2.3.2 Ant-Design-Vue组件
AntDesignVue为AntDesign的Vue版本,提供了大量丰富的用户界面组件,统一的设计风格,希望可以为开发者提供美观方便的界面、提升开发效率、增加设计优雅性。
2.3 Node技术
Node.JavaScript是基于Chrome的V8引擎实现运行时环境,允许JavaScript代码运行在服务端,通过事件驱动以及非阻塞I/O模型实现处理海量并行请求时的高效率,Node.js实现了通过JavaScript编写服务器端脚本,能实现前后台的统一化,简化了应用的开发与维护.
2.4 MySQL数据库
MySQL 是一种开放源代码的关系数据库,性能卓越且可靠性强,能够高效地管理多种信息。
由于MySQL对复杂查询的支持,使得用户在开发时可以很容易地实现数据的检索与分析,如对符合查询条件信息的快速查询,帮助用户定位目标对象。
3 系统设计
3.1 总体功能设计
3.1.1 功能设计
对免税商品销售网站功能设计,分为后台和前台部分进行设计,满足不同人员用户需求和进行使用。后台系统由管理员登录进入后,实现系统内各项管理功能的便捷实现,其管理的功能包括商品管理,实现对系统内商品管理功能,方便管理员录入、修改、查询系统的各类商品信息,包括名称、类别、备注等,方便管理。类型的管理,允许对系统内商品分类的管理。评论管理模块,进行浏览系统内各类用户的评论信息,对所有的评论信息进行管理,也允许对系统中用户评论信息进行有效的管理,方便浏览。订单管理,可以对系统内的用户订单信息进行查看和浏览等管理功能。用户管理,对系统内的用户信息进行增加、编辑、删除。统计分析,对系统内的订单活动的数据以及对系统用户参与的汇总,来了解系统运行的状况,提供管理员查看数据。消息管理,对系统内发布消息。前台系统的人员功能,通过注册、登录进入后浏览系统功能,在前台的功能设计过程中,首页提供各类系统商品的列表浏览,包括查看最新、最热、推荐的浏览,首页根据内容显示商品详情,允许用户浏览,智能推荐根据用户的偏好,详情页提供商品的推荐功能。用户中心,可以对用户的资料进行修改,系统提供基本资料的浏览和修改功能,对系统新消息进行查看,接收用户信息。我的订单,查看已订购系统商品信息,系统支持模糊查询的功能,对商品的搜索查看,方便用户选择心仪商品,提供了用户对于商品的信息浏览功能,针对系统内的各类用户提供的评论信息可以进行用户的评论,对商品给予评价,增强用户的互动和社区氛围。功能模块如图3-1所示。
图3-1 功能模块图
3.2 数据库设计
3.2.1 数据库物理设计
在网上免税商品销售网站中,数据库的物理设计包括多个表格,每个表格用于存储特定类型的信息,并定义它们之间的关系。
1. 实体设计
商品(thing):id(主键)、title(名称,100字)、cover(图片路径,封面图)、description(描述,文本)、price(价格,建议类型改为DECIMAL)、status(状态,必填项,枚举,通常有售卖、审核失败、上架、下架、等状态)、create_time(上架时间),pv(浏览量,点击次数)、recommend_count(推荐次数)等。分类关联表的外键(建议字段category_id)。
2. 关系设计
用户-商品:用户可以购买多件商品,而每件商品也可以被多个用户所下单购买,因而需要关联表用户-商品来记录用户的商品购买关系。这将会实现让系统跟踪哪一个用户购买了哪一件商品。
商品-分类:每个商品只能属于一个分类,而一个分类可以包含多个商品,由此商品表中的分类字段将参考分类表的唯一标识id字段。
用户与评论的关系:每个评论都与一位用户和一种商品相关联,通过用户ID和商品ID可以追溯到具体的评论来源。
用户与日志的关系:日志记录用户的操作行为,每条日志将引用相应用户的ID,以便了解用户在系统中的活动。
用户与通知的关系:每条通知都关联到一个用户,记录用户所需了解的重要信息。
3.2.2 数据库逻辑设计
根据物理设计,画出E-R 图(实体-关系图)。
3.2.3 数据库逻辑设计
本系统共设计了用户信息表、分类表、商品表、登录日志表、操作日志表、评论表、订单表、意见反馈表、访问记录表、广告表。物理设计表结构如下表3-1至3-10所示:
表3-1用户信息表
列名 |
字段类型 |
长度 |
是否为空 |
id |
bigint |
20 |
NO |
username |
varchar |
50 |
YES |
password |
varchar |
50 |
YES |
role |
varchar |
2 |
YES |
status |
varchar |
1 |
NO |
nickname |
varchar |
20 |
YES |
表3-2分类表
列名 |
字段类型 |
长度 |
是否为空 |
id |
bigint |
NO | |
title |
varchar |
100 |
YES |
create_time |
varchar |
30 |
NO |
表3-3商品表
列名 |
字段类型 |
长度 |
是否为空 |
id |
bigint |
20 |
NO |
title |
varchar |
100 |
YES |
cover |
varchar |
100 |
YES |
description |
longtext |
1024 |
YES |
price |
varchar |
50 |
YES |
status |
varchar |
1 |
NO |
create_time |
varchar |
30 |
YES |
pv |
int |
YES | |
recommend_count |
int |
YES | |
wish_count |
int |
YES | |
collect_count |
int |
YES |
表3-4评论表
列名 |
字段类型 |
长度 |
是否为空 |
id |
bigint |
NO | |
content |
varchar |
200 |
YES |
comment_time |
varchar |
30 |
YES |
like_count |
int |
NO | |
user_id |
bigint |
YES | |
thing_id |
bigint |
YES |
表3-5订单表
列名 |
字段类型 |
长度 |
是否为空 |
id |
bigint |
NO | |
status |
varchar |
2 |
YES |
order_time |
varchar |
30 |
YES |
gwc |
varchar |
100 |
YES |
amount |
varchar |
100 | |
user_id |
bigint |
YES | |
order_number |
varchar |
13 |
YES |
receiver_address |
varchar |
50 |
YES |
receiver_name |
varchar |
20 |
YES |
receiver_phone |
varchar |
20 |
YES |
remark |
varchar |
30 |
YES |
表3-6消息表
列名 |
字段类型 |
长度 |
是否为空 |
id |
bigint |
NO | |
title |
varchar |
100 |
YES |
content |
varchar |
1000 |
YES |
create_time |
varchar |
30 |
YES |
表3-7登录日志表
列名 |
字段类型 |
长度 |
是否为空 |
id |
bigint |
NO | |
username |
varchar |
50 |
YES |
ip |
varchar |
100 |
YES |
ua |
varchar |
255 |
YES |
log_time |
varchar |
200 |
YES |
表3-8操作日志表
列名 |
字段类型 |
长度 |
是否为空 |
id |
bigint |
NO | |
re_ip |
varchar |
100 |
YES |
re_time |
varchar |
30 |
YES |
re_ua |
varchar |
255 |
YES |
re_url |
varchar |
200 |
YES |
re_method |
varchar |
10 |
YES |
re_content |
varchar |
200 |
YES |
表3-9浏览记录表
列名 |
字段类型 |
长度 |
是否为空 |
id |
bigint |
NO | |
thing_id |
int |
20 |
YES |
score |
int |
11 |
YES |
ip |
varchar |
100 |
YES |
表3-10广告表
列名 |
字段类型 |
长度 |
是否为空 |
id |
bigint |
NO | |
image |
varchar |
100 |
YES |
link |
varchar |
500 |
YES |
create_time |
varchar |
100 |
YES |
id |
bigint |
NO | |
image |
varchar |
100 |
YES |
link |
varchar |
500 |
YES |
create_time |
varchar |
100 |
YES |
id |
bigint |
NO | |
image |
varchar |
100 |
YES |
link |
varchar |
500 |
YES |
3.3 前端功能实现
3.3.1 登录注册功能
采用前后台分离的设计模式,登录注册界面前端部分使用Vue3+AntDesign,后端部分使用DjangoRESTframework构建webAPI。登录注册实现页面如下图3-2所示。
图3-2 登录注册实现界面
3.3.2 商品列表信息界面
后端后端:通过前端前端与后端之间的响应,实现了商品类相关的全部电商核心交互操作。
图3-3商品列表信息界面图
3.3.3 智能推荐实现
商品推荐功能是利用用户协同过滤算法,主要过程用Python类UserCF.py实现,是通过皮尔逊系数计算用户间的相似程度。其过程完成商品导购的无缝衔接与用户个性化推荐。
图3-4 商品推荐功能图
3.3.4 用户中心
用户中心实现对用户的个人资料管理与信息查看,用户可以对基本资料进行修改、对邮箱推送进行设置和查看消息通知。该功能模块面向用户的使用,方便用户对自己的帐户资料进行管理,让用户与网站的交流变得更为方便和个性化,用户中心界面如图3-5。
图3-5 用户中心界面实现
3.3.5 我的订单实现
我的订单能够查询用户购买的免税商品的所有信息,包含基本的商品信息和商品的订单状态,而且可以对已下单商品进行管理记录,让用户时刻掌握与商品互动状态。我的订单界面如图3-6所示。
图3-6 我的订单功能实现
3.3.6 模糊搜索实现
模糊查询搜索是在搜索框中输入关键词搜索商品的过程,模糊搜索搜索系统能够迅速搜索并显示出满足条件的商品,用户直接在搜索栏内输入对应关键字,在很短的时间内就会显示出关键字相对应的结果,极大的提高了商品搜索的简易性,快捷性。
3.3.7 登录注册功能
评价模块是指在商品详情页下面发布商品评价,对购买的的商品发表意见和介绍自己购买的感受体验。用户能够对商品进行评价,从而方便其他消费者对商品进行选择。商品评价如图3-7所示。
图3-7 商品评论页面
3.4 后端功能实现
3.4.1 商品管理
商品管理模块中管理商品基础信息,包括商品名、分类、价格、等信息,通过商品管理模块管理员可以使得商品信息准确,及时更新,从而使用户可以在前台获取最新的商品信息资料。管理者也可以控制商品状态,保证商品上架或者下架。商品管理模块如图3-8所示。
图3-8 商品管理界面图
3.4.2 商品类别管理
其中的商品类型管理功能,管理员可以管理整个系统中的商品类型信息,包括增加类型,修改类型和删除类型。商品类别管理如图3-9所示。
图3-9 商品类别管理界面图
3.4.3 评论管理
评论管理模块主要对网站用户评论进行集中查看管理与审核删除处理,以保证社区和谐安全。管理员还可以通过评论分析得到用户对商品的欢迎程度和用户要求,实现不断提高与完善服务、提升用户体验的效果。评论管理界面如图3-10所示。
图3-10 评论管理界面图
3.4.4 订单管理
订单管理模块可以对网站的订单进行管理并浏览,其中包括对订单的审核记录及针对订单商品的跟踪,针对商品整个订单过程进行有效管理。通过该模块管理员更加有利于对商品销售提供帮助,使免税商品销售顺利展开,订单管理界面如图3-11。
图3-11 订单管理界面图
3.4.5 用户管理
用户管理功能对网站用户的信息管理包括用户新增、编辑、删除用户账户等,可查看用户的注册、活动情况及订单申请情况,保证用户信息准确和安全,网站能够给用户提供更个性化的服务,用户管理界面如图3-12所示。
图3-12 用户管理界面图
3.4.6 统计分析
数据统计分析模块是通过对商品销售数据与用户参与数据进行统计分析,让管理员掌握整个系统的运行情况,可以对系统进行相关数据的报表统计分析,比如商品销售情况、用户参与程度以及网站浏览量等指标,从而帮助管理员能够根据系统的实际情况进行相关运营计划的制定和资源的完善。数据统计分析如图3-13。
图3-13 商品信息统计可视化界面图
3.4.7 消息管理
信息管理可以由管理员在网站上发布信息,及时向网站内的全部用户发布信息。在消息管理模块中,不仅仅可以进行信息发布,也能对消息状态进行管理(如已阅、未阅)。消息管理模块界面如图3-14。
图3-14 消息管理界面图
3.4.8 系统信息
系统信息模块能查看系统的各项基本信息,包括系统名称、服务器状况、内存用量、CPU负载率以及软件版本等。管理员可通过查看系统的各项基本性能,确认系统状态,保证网站处于正常的状态。系统信息管理的界面如图3-15所示。
图3-15 系统信息管理界面图
4 系统测试
4.1功能测试
(1)后台功能测试用例,如表4-1所示。
表4-1后台功能测试用例
测试内容 |
并发数 |
状态 |
平均耗时(秒) | |
登录首页 |
1)管理员登录到后台首页 |
100 |
正常 |
0.218 |
2)前端并发刷新后台首页 | ||||
商品管理 |
1)新增一条商品信息 |
120 |
正常 |
0.303 |
2)删除一条商品信息 | ||||
用户管理列表 |
1)查看用户列表 |
100 |
正常 |
0.582 |
2)新增一个用户 | ||||
3)删除一个用户 | ||||
4)查询用户关键词 | ||||
日志管理 |
1)刷新操作日志列表 |
100 |
正常 |
0.877 |
2)刷新错误日志列表 | ||||
1)刷新登录日志列表 | ||||
分类管理 |
1)新增一个分类 |
100 |
正常 |
0.697 |
2)刷新分类列表 | ||||
3)删除一个分类 | ||||
4)更新一个分类 | ||||
评论管理 |
1)刷新评论列表 |
100 |
正常 |
0.605 |
2)删除一条评论 | ||||
总览 |
1)刷新总览页面 |
100 |
正常 |
0.572 |
订单管理 |
1)刷新订单列表 |
100 |
正常 |
0.339 |
(2)前台功能测试用例,如表4-2所示。
表4-2前台功能测试用例
模块名称 |
测试内容 |
并发数 |
状态 |
平均耗时(秒) |
登录 |
1)用户登录到前台首页 |
100 |
正常 |
0.594 |
2)并发刷新前台首页 | ||||
注册 |
1)填写信息注册账号 |
100 |
正常 |
0.382 |
搜索 |
1)顶部输入内容并Enter |
100 |
正常 |
0.227 |
2)顶部留空并Enter | ||||
3)刷新搜索页面 | ||||
首页 |
1)刷新首页 |
100 |
正常 |
0.677 |
2)点击一个分类查看结果 | ||||
3)点击一个标签查看结果 | ||||
4)点击一个单项跳转详情 | ||||
详情页 |
1)多次刷新详情页 |
100 |
正常 |
0.653 |
2)点击收藏 | ||||
3)点击添加转发 | ||||
4)点击评论按钮并刷新 | ||||
5)发送一条评论 | ||||
6)评论点击最新或最热 | ||||
7)点击喜欢一条评论按钮 | ||||
我的订单 |
1)刷新页面 |
100 |
正常 |
0.601 |
2)返回上一页 | ||||
用户中心 |
1)刷新当前信息 |
100 |
正常 |
0.587 |
2)刷新地址管理信息 | ||||
3)刷新我的收藏界面 | ||||
4)刷新我的订单界面 | ||||
5)刷新资料界面 | ||||
6)刷新安全界面 | ||||
7)刷新推送设置界面 | ||||
8)刷新消息界面 | ||||
通知中心 |
1)点击通知中心icon |
100 |
正常 |
0.217 |