前言
✨ 博主介绍:一线全栈工程师,毕设实战引路人。技术栈覆盖Java、Python、C#、PHP、Node.js及UniApp跨端开发,擅长多语言项目落地与架构设计。持续分享毕设源码、开题报告、技术选型心得与职场踩坑经验。用工程化思维写代码,帮你把毕设做成作品集。👍👍
👇精彩专栏 推荐订阅👇
精选100个热门Java毕业设计项目|适配2026‑2027届选题参考✅
精选100个热门Python毕业设计项目|适配2026‑2027届选题参考✅
精选100个热门微信小程序/安卓APP毕业设计项目|适配2026‑2027届选题参考✅
✅获取源码请私信✅
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以找我咨询,希望帮助更多的人❤️
第一章 绪论
1.1 国内外研究现状
1.1.1 国内研究现状
国内消费数据可视化研究逐步从简易统计转向交互式平台,早期依赖人工收集Excel数据,存在更新慢、维度单一等短板,难以贴合真实网购需求。近年基于Python的Web框架广泛应用,研究者借助Django搭建B/S架构系统,实现网购数据集中管控,部分研究引入爬虫技术,从电商平台抓取价格、销量等公开数据,结合手动录入信息丰富分析样本,依托ECharts等前端库实现可视化展示,为消费分析提供数据支撑。
国内研究聚焦提升数据采集自动化与清洗规范性,针对人工录入低效易错问题,重点优化自动化爬虫技术,通过定制脚本定时抓取商品数据、更新数据库,保障信息时效性;同时规范数据处理流程,标准化整理非结构化数据,剔除无效信息。现有系统兼顾用户体验,普通用户可查看个人消费画像,管理员可全局监控消费数据,完整的数据处理链路降低了分析门槛,也为精细化运营、消费引导提供了客观依据,助力平台数字化落地。
1.1.2 国外研究现状
国外高校在消费行为追踪与数据可视化领域研究起步早,技术体系成熟,多依托Python生态的Scrapy、BeautifulSoup等工具搭建自动化数据采集平台,无需人工填报,通过预设关键词定期从网络零售渠道抓取商品价格、销量、评论等信息,构建海量基础数据库。研究侧重关联外部市场数据与校内消费记录,对比校内购买力与校外价格波动,剖析青年群体消费敏感度与品牌偏好,依托交互式图表库将复杂数据转化为趋势曲线、热力图,便于非技术人员解读,规避样本偏差,推动消费研究从理论模型转向实证分析。
数据管理层面,国外系统注重数据实时性与多维度整合,搭载高效后台清洗模块,自动剔除爬虫获取的重复、异常数据,保障数据精准度;管理员可通过可视化仪表盘实时监控消费占比、购买频次、价格走向,无需代码即可生成周期分析报告。隐私保护方面,平台搭建严格权限管控机制,普通用户仅可查看脱敏宏观数据或个人专属数据,详细行为轨迹仅限授权人员访问。部分平台增设社交互动模块,合规前提下支持用户分享购物心得、点赞收藏商品,打造数据社区。该模式融合自动化采集、标准化处理与友好交互,既提升数据分析效率,也为高校开展消费指导、金融素养教育提供技术支撑,助力校园管理精细化。
1.2 相关技术介绍
1.2.1 Python语言特性与优势
Python[1]是一种高级编程语言,以简洁、易读和功能强大著称,广泛应用于各个领域。Python作为一种解释型编程语言,配备了广泛的标准库和强有力的第三方库支持,极大地提升了开发人员的编码效率与调试便捷性。它以简洁明了的语法结构著称,高度重视代码的可读性,是进行快速开发及原型构建的理想选择。在Web开发中,Python常与Django、Flask等框架结合使用,能快速构建高效且可扩展的后台系统。在数据分析和人工智能领域,Python凭借Pandas、NumPy等数据处理库,以及TensorFlow、scikit-learn等机器学习框架,成为主流选择。此外,Python[2]具备良好的跨平台特性,支持Windows、Linux、macos等操作系统,确保应用的广泛兼容性。它在自动化测试、爬虫开发和网络编程等方面的应用也非常广泛,是当前最受欢迎的编程语言之一。
1.2.2 基于Python的数据采集与分析技术
针对学生网购数据来源分散、格式非结构化的特点,本系统利用Python构建了高效的数据处理流水线。在数据采集环节,系统通过模拟浏览器HTTP请求协议,动态获取目标电商平台的网页源代码;利用HTML文档对象模型(DOM)解析技术,自动遍历页面结构,精准提取商品名称、实时价格、销量排名及用户评价等关键字段,并采用多线程异步机制提升抓取效率,同时通过请求头伪装策略确保数据获取的稳定性。在数据分析环节,系统对抓取的原始数据进行深度清洗,执行去重、缺失值补全、异常值过滤及格式标准化操作,将非结构化文本转化为规范的结构化数据;随后运用统计学算法对消费金额、购买频次及品类分布进行多维度计算,识别学生群体的消费偏好与趋势。处理后的高质量数据存入数据库,为前端可视化图表提供准确、实时的数据支撑,实现了从网络信息抓取到智能分析展示的全流程自动化。
1.2.3 Django框架剖析
Django是一款基于Python语言的高效Web框架[3],它倡导迅速开发及简洁、实用的设计哲学。Django框架的核心理念是“尽量减少重复劳动”,即提供一整套可以开箱即用的功能,如身份验证、数据库操作、URL路由、模板引擎等,使开发者可以集中精力于应用程序的具体业务逻辑与功能实现。尽管Django遵循MVC(模型-视图-控制器)架构理念,但实际上采用了MTV(模型-模板-视图)模式:模板处理显示逻辑,视图关注业务流程,而模型则映射至数据库层。
Django[4]通过ORM技术实现了对数据库操作的支持,允许开发者以面向对象的方式便捷地与数据库交互,无需直接编写SQL代码。此外,该框架自带的管理界面极大地简化了数据维护工作,提升了开发效率。Django注重安全性,内置了多种防护措施来抵御常见网络攻击,如XSS和CSRF等。其详尽完善的文档以及活跃的社区支持,确保开发者可以轻松找到所需的资源,快速解决开发过程中的问题。
1.2.4 Vue.js前端技术与ECharts可视化
Vue.js是一套用于构建用户界面的渐进式JavaScript框架,其核心在于数据驱动和组件化开发。它采用声明式渲染机制,通过数据绑定将视图层与数据层紧密关联,当数据发生变化时,视图能够自动更新,极大地简化了DOM操作流程[5]。Vue.js的组件系统允许开发者将复杂的界面拆分为多个独立且可复用的组件,每个组件封装自身的逻辑和样式,既提高了代码的可维护性,又促进了团队协作开发。其虚拟DOM技术通过在内存中构建虚拟的DOM树,对比新旧树之间的差异并最小化实际DOM操作,从而显著提升页面渲染性能。Vue.js还提供了丰富的生命周期钩子函数,开发者可以在组件创建、更新、销毁等不同阶段插入自定义逻辑,实现精细化的控制[6]。
在本系统的可视化模块中,前端集成了ECharts图表库。ECharts是一个基于JavaScript的开源可视化库,能够提供直观、生动且可高度个性化定制的交互式图表。它支持折线图、柱状图、饼图、地图等多种图表类型,底层基于Canvas渲染,具备优异的大数据量展示性能。通过将ECharts封装为Vue组件,系统能够直接利用Vue的数据绑定特性,将后端传输的网购分析数据动态映射为图形元素,实现了数据从抽象数值到直观视觉表现的快速转换。这种“Vue+ECharts”的组合方案,不仅降低了前端绘图的开发复杂度,还确保了数据大屏在交互流畅度与展示效果上的最佳平衡,完美契合本系统对学生网购数据进行多维度可视化的需求。
1.2.5 MySQL数据库应用
MySQL[7]是一款广受欢迎的开源关系型数据库管理系统,以高效性、稳定性和良好的扩展性著称,被广泛应用于电子商务平台、内容管理及数据分析等多个行业。它为开发者提供了多样的工具和API,方便进行数据库的管理和操作,极大地提升了开发效率和数据处理能力。提供了丰富的工具和API,便于开发者进行数据库管理和操作。MySQL在大多数Web应用中得到广泛使用,尤其是在与PHP、Python等编程语言配合时,能够提供高效的数据存储和查询服务。MySQL数据库[8]具有强大的扩展性,支持水平扩展和分布式架构,可以应对日益增长的数据存储需求。凭借其开源、稳定和高效的特点,MySQL成为全球最受欢迎的数据库系统之一。
1.3 本章小结
本章首先阐述了课题的研究背景与意义,通过对比国内外在学生消费数据可视化及网购行为分析领域的研究现状,指出了当前系统在数据获取自动化、清洗规范性及交互体验方面存在的不足,明确了本系统的改进方向。随后,详细介绍了系统构建所依赖的关键技术栈,包括Python语言在数据处理与爬虫领域的优势、Django框架在后端逻辑与安全管理上的特性、Vue.js在前端组件化渲染中的应用,以及MySQL数据库在数据存储方面的稳定性。重点剖析了基于Python的数据采集与分析技术流程,论证了从网络爬虫抓取、数据清洗到可视化展示的技术可行性。本章内容为后续的系统需求分析、总体架构设计及功能实现奠定了坚实的理论基础与技术支撑。
第二章 系统分析
2.1 需求分析
2.1.1 功能需求分析
本网购数据可视化系统围绕学生群体网购行为分析与消费洞察的核心使用场景,构建覆盖数据采集、清洗处理、趋势分析、画像展示与交互查询的功能体系。各功能模块分工明确,协同支撑学生网购数据从源头抓取到可视化呈现的高效运行。
普通用户功能描述:
注册登录:为普通用户提供安全便捷的账号注册与登录通道,支持多种登录方式,保障用户信息安全与账户访问便捷性。
首页:用户进入首页后,可通过顶部导航栏快速切换模块,浏览轮播图获取最新促销或公告资讯。利用搜索框输入关键词检索特定商品数据,下方“网购数据推荐”区域则根据用户历史浏览与点赞记录,智能推送相关的热门消费趋势与商品详情,提升浏览体验。
通知公告:用户点击导航栏中的“通知公告”模块,进入列表页查看系统发布的维护通知、活动预告或数据更新说明。支持按发布时间排序浏览,点击标题即可展开阅读详细内容,帮助用户及时了解平台动态及重要注意事项,确保信息传达的时效性。
网购数据:用户在列表中通过商品名称或类别筛选目标数据,点击“查看详情”可查阅购买日期、价格、数量、人员及金额等完整字段。在此页面,用户可对感兴趣的数据进行点赞、收藏或发表评论,支持回复他人评论互动;若为本人录入数据,还可执行删除操作。
我的账户:用户进入“我的账户”页面,可查看当前个人资料概览。点击“修改”按钮,可更新头像、昵称、联系方式等基本信息;选择“修改密码”时,需验证原密码后设置新密码。提交后系统实时同步更新至数据库,保障账户信息的准确性与安全性。
个人中心:用户点击“个人中心”进入综合管理面板,左侧菜单包含个人首页、收藏记录与点赞记录。个人首页展示用户的消费统计概览;收藏记录页列出所有已收藏的资讯与商品,支持取消收藏删除;点赞记录页则汇总所有点赞过的数据条目,方便用户回溯浏览历史。
普通用户角色用例如图2-1所示。

普通用户角色用例图
管理员功能描述:
登录:管理员通过输入正确的账号和密码进行身份验证,成功登录后进入系统后台进行管理操作。
后台首页:管理员登录后首见后台首页,顶部消息中心实时推送待处理事项。快捷入口直达商品类别、网购数据等核心管理模块。功能卡片直观展示预约时段、轮播图数、收藏评论统计等关键指标;下方图表区动态渲染商品总消费额、购买次数、消费趋势及占比统计图,辅助决策。
系统用户:管理员进入“系统用户”模块,查看管理员与普通用户列表。支持按角色或状态搜索筛选,点击“新增”可创建新账号并分配角色;点击“编辑”可修改用户资料或重置密码;对于违规账号,可执行“禁用”或直接“删除”操作,实现对平台用户的全生命周期管理。
商品类别管理:管理员在“商品类别管理”列表中,通过搜索框查找特定类别,支持重置查询条件。点击“删除”可移除无用分类;点击“添加”按钮,弹出表单输入类别名称与描述,提交后即时生效。该功能确保商品分类体系清晰规范,为后续数据录入与检索提供标准依据。
网购数据管理:管理员在此模块管理核心交易数据。列表支持多条件搜索、查看详情及查看评论;提供“下载/导入”模板功能,批量上传Excel数据后,系统自动执行清洗去重。点击“添加”可手动录入商品名、价格、日期等详细信息,确保数据库内容的完整性与准确性。
数据信息管理:管理员使用“数据信息管理”进行爬虫任务控制。在列表中输入商品标题点击“爬取”,系统自动抓取链接对应的销量、价格等公开数据,操作前需确认删除旧默认数据以免重复。支持手动补充店铺名称、关键词等信息并提交,实现外部数据的高效自动化采集与入库。
系统管理:管理员进入“系统管理”下的轮播图模块,查看当前展示的图片和链接列表。支持搜索特定轮播项,点击“新增”上传图片并设置跳转链接与排序权重;对过期活动图片可执行“编辑”替换或“删除”操作。此功能确保首页宣传内容实时更新,提升视觉吸引力。
通知公告管理:管理员在“通知公告管理”页面,通过标题搜索快速定位历史通知。点击“新增”发布系统维护或活动公告,填写标题、内容及发布时间;对已发布的通知可进行“编辑”修正或“删除”下架。该功能保障了平台信息发布的规范性,确保用户能及时获取重要动态。
管理员角色用例如图2-2所示。

管理员角色用例图
2.1.2 非功能需求分析
非功能需求分析聚焦系统运行质量,涵盖性能、稳定性、可扩展性与安全性,保障网购数据可视化系统长期稳定服务。
(1)性能:核心页面(如首页、数据中心、个人中心)加载时间控制在1秒内。支持至少800人并发访问,在数据爬取或促销高峰期保持响应流畅,无明显卡顿。
(2)稳定性:支持7×24小时不间断运行。具备异常捕获、日志记录及定时备份机制,确保关键业务流程容错,保障数据采集与存储的一致性与完整性。
(3)可扩展性:采用前后端分离与模块化架构,低耦合设计便于新增分析维度或功能模块。数据库规范设计,支持索引优化与读写分离,适应数据量增长需求。
(4)安全性:密码加盐哈希存储,全站启用HTTPS加密。实施基于角色的访问控制(RBAC),严格隔离用户与管理权限。对输入数据过滤转义,有效防御SQL注入与XSS攻击,保护隐私安全。
2.2 可行性分析
2.2.1 技术可行性
本系统基于成熟技术栈构建:后端采用Python与Django框架,提供高效的用户认证、权限控制及ORM数据库操作;前端使用Vue.js实现组件化开发,提升交互体验与维护效率;数据库选用MySQL,确保海量网购数据与爬虫记录的高效存储。相关生态库(如Scrapy、ECharts)丰富,文档完善,能快速实现数据采集、清洗及可视化功能,技术风险低,方案切实可行。
2.2.2 经济可行性
系统核心依赖Python、Django、Vue及MySQL等开源技术,免除了昂贵的商业软件授权费,显著降低初期开发成本。硬件仅需常规服务器即可支撑数据爬取与可视化分析需求,后期运维成本低廉。通过自动化采集替代人工统计,大幅提升数据分析效率,为高校消费引导与精细化管理提供数据支撑,具有极高的投入产出比与应用价值。
2.2.3 操作可行性
系统界面设计简洁直观,符合学生与管理者的使用习惯。普通用户可轻松完成数据查询、图表浏览及个人画像查看;管理员通过可视化仪表盘即可监控数据趋势、管理爬虫任务及用户权限,无需编写代码。操作流程清晰,关键功能点击即可完成,系统反馈及时,非技术人员经简短指引即可上手,推广难度低,具备良好的实际操作可行性。
2.3 系统业务流程图
2.3.1 注册登录流程图
用户注册登录模块主要是为了方便用户和管理员能够安全地访问系统并管理自己的信息,用户根据提示输入注册信息进行注册操作以获得个人账号,在登录界面输入账号密码等信息进行系统登录,用户注册登录流程如下图所示。

用户注册登录流程图
2.3.2 数据添加流程图
用户成功登录系统后,即可进行添加数据操作。添加的数据具有一个由系统自动生成的特定编号,用户可根据提示输入其余信息并提交,系统会对提交信息进行验证,验证通过则显示添加数据成功。数据添加流程如下图所示。

数据添加流程图
2.3.3 数据修改流程图
用户成功登录系统后,可进行修改数据操作,流程与添加数据操作相似,数据修改流程如下图所示。

数据修改流程图
2.3.4 数据删除流程图
当系统里面存在一些无效或过期的数据信息,系统支持相关的管理人员对这些数据进行删除操作,数据修改流程如下图所示。

数据删除流程图
2.3.5 数据搜索流程图
用户可以通过输入关键字方式在系统大量的数据中检索所需的信息,在搜索框输入关键字确认查询后,系统会自动检索数据库并显示特定的数据信息,数据搜索流程如下图所示。

数据搜索流程图
2.3.6 基于爬虫的数据采集与分析业务流程图
本流程图详细描述了系统从数据源获取到最终可视化呈现的全链路处理逻辑。流程始于数据采集指令的触发,系统随即对目标网站发起请求并解析HTML结构,提取商品名称、价格、销量等关键字段。随后进入数据清洗环节,剔除重复、缺失及异常数据,确保数据质量。清洗后的数据被持久化存储至数据库,并立即触发后端分析引擎,进行多维度统计(如价格分布、热销品类)。最后,分析结果通过前端图表库渲染为直观的可视化报表,供用户决策参考,形成完整的数据处理链条,流程如下图所示。

基于爬虫的数据采集与分析业务流程图
第三章 系统设计
3.1 系统结构
系统采用分层架构设计,由表现层、业务逻辑层、数据访问层及数据库服务器组成,整体部署于Tomcat服务器以保障高效运行。表现层兼容Chrome、Firefox、Edge等主流现代浏览器,融合FreeMarker模板引擎、Bootstrap布局框架与jQuery技术,并集成ECharts可视化库以实现动态数据大屏展示;业务逻辑层作为核心枢纽,采用模块化设计解耦功能单元,并深度集成Python数据分析引擎,负责调度爬虫任务、协调数据预处理流程及执行常规统计分析;数据访问层基于MyBatis框架高效连接MySQL数据库,执行结构化数据的增删改查操作;数据库服务器则选用MySQL提供高可用、高一致性的数据存储与管理支持,从而构建起从数据采集、智能分析到可视化呈现的全链路稳定运行机制。整个系统结构如图3-1所示。

系统结构图
3.2 系统总体功能设计
系统采用分层架构,兼顾稳定性与扩展性。功能按角色划分为普通用户与管理员两大核心模块。设计注重协同高效与安全便捷,意在提升运营效率,助力学生网购数据分析与可视化服务的持续发展。系统功能结构如图3-2所示:

系统总体功能模块图
3.3 注册时序图
用户通过注册模块发送注册请求,系统完成注册后返回确认信息。随后,用户通过登录模块发送登录请求,系统验证用户信息后允许访问目标系统。用户完成操作后可选择退出,系统终止会话。注册时序图,如图3-3所示。

注册时序图
3.4 登录时序图
管理员输入登录信息后,登录界面将信息传递至前台管理界面,随后通过Django框架读取数据库中的用户信息并返回。系统验证信息,若验证成功则登录成功,若验证失败则返回错误提示。登录时序图如图3-4所示。

登录时序图
3.5 管理员修改用户信息时序图
管理员输入登录信息后,进入用户信息管理模块,选择增删改查操作并提交命令至数据库。数据库执行操作后返回成功状态,系统显示用户管理界面并提示操作成功。管理员修改用户信息时序图如图3-5所示。

管理员修改用户信息时序图
3.6 管理员管理系统信息时序图
管理员通过访问系统发起请求,系统接收访问后转向系统信息模块进行管理操作。管理完成后,系统返回管理结果至系统,最终反馈给管理员,管理员可选择退出。管理员管理系统信息时序图如图3-6所示。

管理员管理系统信息时序图
3.7 数据库设计
3.7.1 概念结构设计
概念结构设计通过E-R模型刻画数据对象及其关联。本系统核心实体包括:用户、管理员、网购商品、店铺、订单、评论及浏览记录。主要关系涵盖:用户浏览与收藏商品、提交订单、发表评论,管理员维护商品与用户信息。该模型明确了实体属性及一对多等关联类型,为后续数据库逻辑构建奠定基础。系统整体E-R关系如图3-7所示。

系统总E-R关系图
3.7.2 逻辑结构设计
逻辑结构设计是将概念结构设计阶段得到的E-R图转换为具体的关系模型,设计数据库表的字段、数据类型、主键和外键,以实现数据的有效存储和管理。通过逻辑结构设计,将E-R图转换为具体的关系模型,明确了各表之间的关联关系和数据存储方式,为网购数据可视化系统的数据库实现提供了详细的设计方案,确保系统能够高效、稳定地运行,满足各类数据的管理和查询需求。在网购数据可视化系统中,根据E-R图设计以下数据库表:
表 4-1-access_token(登陆访问时长)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
|---|---|---|---|---|---|---|
| 1 | token_id | int | 是 | 是 | 临时访问牌ID | |
| 2 | token | varchar | 64 | 否 | 否 | 临时访问牌 |
| 3 | info | text | 65535 | 否 | 否 | 信息 |
| 4 | maxage | int | 是 | 否 | 最大寿命:默认2小时 | |
| 5 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 6 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 7 | user_id | int | 是 | 否 | 用户编号 | |
表 4-2-auth(用户权限管理)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
|---|---|---|---|---|---|---|
| 1 | auth_id | int | 是 | 是 | 授权ID | |
| 2 | user_group | varchar | 64 | 否 | 否 | 用户组 |
| 3 | mod_name | varchar | 64 | 否 | 否 | 模块名 |
| 4 | table_name | varchar | 64 | 否 | 否 | 表名 |
| 5 | page_title | varchar | 255 | 否 | 否 | 页面标题 |
| 6 | path | varchar | 255 | 否 | 否 | 路由路径 |
| 7 | parent | varchar | 64 | 否 | 否 | 父级菜单 |
| 8 | parent_sort | int | 是 | 否 | 父级菜单排序 | |
| 9 | position | varchar | 32 | 否 | 否 | 位置 |
| 10 | mode | varchar | 32 | 是 | 否 | 跳转方式 |
| 11 | add | tinyint | 是 | 否 | 是否可增加 | |
| 12 | del | tinyint | 是 | 否 | 是否可删除 | |
| 13 | set | tinyint | 是 | 否 | 是否可修改 | |
| 14 | get | tinyint | 是 | 否 | 是否可查看 | |
| 15 | field_add | text | 65535 | 否 | 否 | 添加字段 |
| 16 | field_set | text | 65535 | 否 | 否 | 修改字段 |
| 17 | field_get | text | 65535 | 否 | 否 | 查询字段 |
| 18 | table_nav_name | varchar | 500 | 否 | 否 | 跨表导航名称 |
| 19 | table_nav | varchar | 500 | 否 | 否 | 跨表导航 |
| 20 | option | text | 65535 | 否 | 否 | 配置 |
| 21 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 22 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-3-code_token(验证码)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
|---|---|---|---|---|---|---|
| 1 | code_token_id | int | 是 | 是 | 验证码ID | |
| 2 | token | varchar | 255 | 否 | 否 | 令牌 |
| 3 | code | varchar | 255 | 否 | 否 | 验证码 |
| 4 | expire_time | timestamp | 是 | 否 | 失效时间 | |
| 5 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 6 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-4-collect(收藏)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
|---|---|---|---|---|---|---|
| 1 | collect_id | int | 是 | 是 | 收藏ID | |
| 2 | user_id | int | 是 | 是 | 收藏人ID | |
| 3 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 4 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
| 5 | source_id | int | 是 | 否 | 来源ID | |
| 6 | title | varchar | 255 | 否 | 否 | 标题 |
| 7 | img | varchar | 255 | 否 | 否 | 封面 |
| 8 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 9 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-5-comment(评论)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
|---|---|---|---|---|---|---|
| 1 | comment_id | int | 是 | 是 | 评论ID | |
| 2 | user_id | int | 是 | 是 | 评论人ID | |
| 3 | reply_to_id | int | 是 | 否 | 回复评论ID | |
| 4 | content | longtext | 4294967295 | 否 | 否 | 内容 |
| 5 | nickname | varchar | 255 | 否 | 否 | 昵称 |
| 6 | avatar | varchar | 255 | 否 | 否 | 头像地址 |
| 7 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 8 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 9 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 10 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
| 11 | source_id | int | 是 | 否 | 来源ID | |
| 12 | hidden | tinyint | 否 | 否 | 是否隐藏 | |
| 13 | sticky | tinyint | 否 | 否 | 是否置顶 |
表 4-6-commodity_category(商品类别)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
|---|---|---|---|---|---|---|
| 1 | commodity_category_id | int | 是 | 是 | 商品类别ID | |
| 2 | commodity_category | varchar | 64 | 否 | 否 | 商品类别 |
| 3 | create_time | datetime | 是 | 否 | 创建时间 | |
| 4 | create_by | int | 是 | 否 | 创建用户ID | |
| 5 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-7-data_information(数据信息)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
|---|---|---|---|---|---|---|
| 1 | data_information_id | int | 是 | 是 | 数据信息ID | |
| 2 | product_title | text | 65535 | 否 | 否 | 商品标题 |
| 3 | specificss_link | text | 65535 | 否 | 否 | 详情链接 |
| 4 | commodity_picture | varchar | 255 | 否 | 否 | 商品图片 |
| 5 | keywords | text | 65535 | 否 | 否 | 关键词 |
| 6 | store_name | text | 65535 | 否 | 否 | 店铺名称 |
| 7 | commodity_price | text | 65535 | 否 | 否 | 商品价格 |
| 8 | product_sales | text | 65535 | 否 | 否 | 产品销量 |
| 9 | store_link | text | 65535 | 否 | 否 | 店铺链接 |
| 10 | unique_id | varchar | 64 | 是 | 否 | 唯一ID |
| 11 | create_time | datetime | 是 | 否 | 创建时间 | |
| 12 | create_by | int | 是 | 否 | 创建用户ID | |
| 13 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-8-hits(用户点击)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
|---|---|---|---|---|---|---|
| 1 | hits_id | int | 是 | 是 | 点赞ID | |
| 2 | user_id | int | 是 | 否 | 点赞人 | |
| 3 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 4 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 5 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 6 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
| 7 | source_id | int | 是 | 否 | 来源ID |
表 4-9-notice(公告)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
|---|---|---|---|---|---|---|
| 1 | notice_id | mediumint | 是 | 是 | 公告ID | |
| 2 | title | varchar | 125 | 是 | 否 | 标题 |
| 3 | content | longtext | 4294967295 | 否 | 否 | 正文 |
| 4 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 5 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-10-online_shopping_data(网购数据)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
|---|---|---|---|---|---|---|
| 1 | online_shopping_data_id | int | 是 | 是 | 网购数据ID | |
| 2 | product_name | varchar | 64 | 否 | 否 | 商品名称 |
| 3 | product_category | varchar | 64 | 否 | 否 | 商品类别 |
| 4 | purchase_date | varchar | 64 | 否 | 否 | 购买日期 |
| 5 | product_price | double | 否 | 否 | 商品价格 | |
| 6 | purchase_quantity | double | 否 | 否 | 购买数量 | |
| 7 | number_of_purchases | double | 否 | 否 | 购买次数 | |
| 8 | purchased_personnel | varchar | 64 | 否 | 否 | 购买人员 |
| 9 | consumption_amount | double | 否 | 否 | 消费金额 | |
| 10 | cover_image | varchar | 255 | 否 | 否 | 封面图片 |
| 11 | specificsed_description | longtext | 4294967295 | 否 | 否 | 详情描述 |
| 12 | praise_len | int | 是 | 否 | 点赞数 | |
| 13 | collect_len | int | 是 | 否 | 收藏数 | |
| 14 | comment_len | int | 是 | 否 | 评论数 | |
| 15 | create_time | datetime | 是 | 否 | 创建时间 | |
| 16 | create_by | int | 是 | 否 | 创建用户ID | |
| 17 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-11-praise(点赞)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
|---|---|---|---|---|---|---|
| 1 | praise_id | int | 是 | 是 | 点赞ID | |
| 2 | user_id | int | 是 | 是 | 点赞人 | |
| 3 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 4 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 5 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 6 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
| 7 | source_id | int | 是 | 否 | 来源ID | |
| 8 | status | tinyint | 是 | 否 | 点赞状态:1为点赞,0已取消 | |
| 9 | img | varchar | 255 | 否 | 否 | |
| 10 | title | varchar | 255 | 否 | 否 |
表 4-12-regular_user(普通用户)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
|---|---|---|---|---|---|---|
| 1 | regular_user_id | int | 是 | 是 | 普通用户ID | |
| 2 | user_name | varchar | 64 | 否 | 否 | 用户姓名 |
| 3 | user_phone | varchar | 64 | 否 | 否 | 用户电话 |
| 4 | examine_state | varchar | 16 | 是 | 否 | 审核状态 |
| 5 | user_id | int | 是 | 否 | 用户ID | |
| 6 | create_time | datetime | 是 | 否 | 创建时间 | |
| 7 | create_by | int | 是 | 否 | 创建用户ID | |
| 8 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-13-slides(轮播图)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
|---|---|---|---|---|---|---|
| 1 | slides_id | int | 是 | 是 | 轮播图ID | |
| 2 | title | varchar | 64 | 否 | 否 | 标题 |
| 3 | content | varchar | 255 | 否 | 否 | 内容 |
| 4 | url | varchar | 255 | 否 | 否 | 链接 |
| 5 | img | varchar | 255 | 否 | 否 | 轮播图 |
| 6 | hits | int | 是 | 否 | 点击量 | |
| 7 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 8 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-14-upload(文件上传)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
|---|---|---|---|---|---|---|
| 1 | upload_id | int | 是 | 是 | 上传ID | |
| 2 | name | varchar | 64 | 否 | 否 | 文件名 |
| 3 | path | varchar | 255 | 否 | 否 | 访问路径 |
| 4 | file | varchar | 255 | 否 | 否 | 文件路径 |
| 5 | display | varchar | 255 | 否 | 否 | 显示顺序 |
| 6 | father_id | int | 否 | 否 | 父级ID | |
| 7 | dir | varchar | 255 | 否 | 否 | 文件夹 |
| 8 | type | varchar | 32 | 否 | 否 | 文件类型 |
表 4-15-user(用户账户)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 | |||
|---|---|---|---|---|---|---|---|---|---|
| 1 | user_id | int | 是 | 是 | 用户ID | ||||
| 2 | state | smallint | 是 | 否 | 账户状态:(1可用 | 2异常 | 3已冻结 | 4已注销) | |
| 3 | user_group | varchar | 32 | 否 | 否 | 所在用户组 | |||
| 4 | login_time | timestamp | 否 | 否 | 上次登录时间 | ||||
| 5 | phone | varchar | 11 | 否 | 否 | 手机号码 | |||
| 6 | phone_state | smallint | 是 | 否 | 手机认证:(0未认证 | 1审核中 | 2已认证) | ||
| 7 | username | varchar | 16 | 是 | 否 | 用户名 | |||
| 8 | nickname | varchar | 16 | 否 | 否 | 昵称 | |||
| 9 | password | varchar | 64 | 是 | 否 | 密码 | |||
| 10 | varchar | 64 | 否 | 否 | 邮箱 | ||||
| 11 | email_state | smallint | 是 | 否 | 邮箱认证:(0未认证 | 1审核中 | 2已认证) | ||
| 12 | avatar | varchar | 255 | 否 | 否 | 头像地址 | |||
| 13 | open_id | varchar | 255 | 否 | 否 | 针对获取用户信息字段 | |||
| 14 | create_time | timestamp | 是 | 否 | 创建时间 |
表 4-16-user_group(用户组)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
|---|---|---|---|---|---|---|
| 1 | group_id | mediumint | 是 | 是 | 用户组ID | |
| 2 | display | smallint | 是 | 否 | 显示顺序 | |
| 3 | name | varchar | 16 | 是 | 否 | 名称 |
| 4 | description | varchar | 255 | 否 | 否 | 描述 |
| 5 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 6 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
| 7 | source_id | int | 是 | 否 | 来源ID | |
| 8 | register | smallint | 否 | 否 | 注册位置 | |
| 9 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 10 | update_time | timestamp | 是 | 否 | 更新时间 |
第四章 系统详细设计与实现
4.1 普通用户模块的实现
4.1.1 用户注册
用户注册时,需要提交昵称、密码、确认密码、姓名、电话等必要个人信息,并接受合法性校验。系统会对用户提交的信息进行严格核验,验证用户名是否已存在,密码是否符合强度要求等。若验证不通过,系统将返回错误信息给前端页面,提示用户修改。界面展示如下图4-1所示。

用户注册界面图
4.1.2 用户登录
用户能够通过登录流程访问系统个人信息和功能。登录时,用户需在登录页面输入用户名和密码,系统会在Django的视图函数中接收用户提交的信息,并通过数据库查询验证用户身份。为提高登录的安全性,系统引入验证码机制,在登录页面生成一个随机验证码图片,用户需要在登录时输入图片中的验证码,后端在验证用户登录信息时,会同时验证用户输入的验证码是否正确,防止恶意程序通过自动化脚本进行暴力破解登录。界面展示如下图4-2所示。

用户登录界面图
4.1.3 前台首页
普通用户登录后直接进入首页,顶部导航栏可一键切换功能模块,轮播图直观展示平台重点内容,搜索框可快速查找目标网购数据,下方推送优质网购数据内容;页面布局简洁清晰,各类功能入口一目了然,无需复杂操作,即可快速跳转至所需功能页面,贴合普通用户日常使用习惯。界面展示如下图4-3所示。

前台首页界面图
4.1.4 通知公告
点击导航栏“通知公告”选项,进入对应页面,可查看系统发布的维护通知、功能更新、数据上新等各类公告信息,公告按发布时间排序,最新内容置顶展示;普通用户可快速浏览公告详情,掌握平台动态,无需额外操作,打开页面即可获取全部通知内容,便捷高效。界面如下图4-4、4-5所示。

通知公告界面图
4.1.5 网购数据
进入网购数据页面,可通过商品名称、商品类别进行精准搜索,找到目标数据后点击查看详情,可浏览商品名称、购买日期、价格、数量、消费金额等完整信息;点击对应按钮可完成点赞、收藏操作,评论区可发布评论、回复他人留言,无需的评论可点击删除,操作简易,互动便捷。界面如下图4-6所示。

网购数据详情界面图
4.1.6 个人中心-点赞记录
用户点击个人中心内“点赞记录”选项,可查看自己在前台所有网购数据、资讯内容的点赞历史,每条记录标注对应内容名称与点赞时间,支持点击跳转至原内容详情页;页面按点赞时间倒序排列,方便用户回溯互动轨迹,快速查找过往点赞内容。界面展示如下图4-6所示。

个人中心-点赞记录界面图
4.1.7 个人中心-收藏记录
用户点击个人中心内“收藏记录”选项,进入对应页面,可查看自己收藏的全部网购数据、平台资讯等内容,每条收藏内容附带详情入口;针对不需要的收藏内容,选中后点击删除按钮,即可完成移除,操作简便,便于用户清理冗余收藏、整理个人收藏清单。界面展示如下图4-7所示。

收藏记录界面图
4.2 后台管理员模块的实现
4.2.1 后台首页
管理员登录后进入后台首页,顶部消息通知中心可实时接收各类提醒,侧边快捷入口可一键跳转商品类别、网购数据、数据信息管理页面;中部功能卡片展示轮播图数、收藏数等核心数据,下方呈现商品总消费额、购买次数、消费趋势、消费占比等可视化图表,直观掌握平台运营数据。界面展示如下图4-8所示。

后台首页界面图
4.2.2 系统用户
管理员进入系统用户管理页面,可查看管理员、普通用户全量账号列表,支持搜索查询用户信息;可对用户账号状态进行启用、禁用操作,也可完成用户信息新增、修改、删除等操作,按需调整用户权限与账号状态,实现用户账号的全流程管控,维护平台用户秩序。界面展示如下图4-9所示。

系统用户界面图
4.2.3 商品类别管理界面
管理员点击商品类别管理,进入列表页面,可通过类别名称搜索、查询对应分类,支持重置筛选条件、删除无用类别;点击“添加类别”按钮,填写商品类别名称等信息,提交后即可完成新增,操作流程简单,可快速搭建平台商品分类体系,规范网购数据归类管理。界面展示如下图4-10所示。

添加商品类别界面图
4.2.4 网购数据管理界面
管理员进入网购数据管理页面,可通过商品名称、类别搜索查询数据,支持重置、删除、导入导出文档操作;点击添加按钮,填写商品名称、价格、购买日期等信息并上传图片,提交即可新增数据;导入网购数据后可进行冲洗优化,也可点击修改详情、查看评论,实现数据全维度管控。界面展示如下图4-11、4-12所示。

导入网购数据界面图

添加网购数据界面图
4.2.5 数据信息管理界面
管理员在数据信息管理页面,可通过商品标题搜索、查询、删除信息,输入目标商品标题,先删除默认数据,再点击爬取按钮,即可自动采集相关网购数据;点击添加按钮,填写标题、价格、链接等信息提交即可新增,也可点击详情链接查看修改内容,兼顾手动添加与爬虫采集功能。界面展示如下图4-13、4-14所示。

爬取数据信息界面图

添加数据信息界面图
4.2.6 系统管理界面
进入系统管理的轮播图管理模块,可查看现有轮播图列表,支持搜索查询、新增、修改、删除操作;上传轮播图图片、填写跳转链接后保存,即可更新首页轮播内容,操作直观,可灵活调整首页展示内容,优化平台页面展示效果,适配平台运营需求。界面展示如下图4-15所示。

添加轮播图界面图
4.2.7 通知公告管理界面
点击通知公告管理,可通过公告标题搜索目标内容,支持公告的新增、修改、删除、查询操作;新增公告时,填写公告标题、正文内容,提交后即可发布至前台,普通用户可实时查看,管理员可按需更新、下架公告,及时推送平台各类重要通知。界面展示如下图4-16所示。

添加通知公告界面图
第五章 系统测试
5.1 测试目的
系统测试是软件开发过程中的重要环节,对于网购数据可视化系统而言,其测试目的具有多方面的重要意义。通过系统测试,能够全面验证系统的功能是否符合预先设定的需求规格说明书。在性能方面,测试旨在评估系统在不同负载条件下的响应时间、吞吐量和资源消耗情况。安全层面的测试也是至关重要的。系统存储了大量用户的敏感信息,因此需要通过安全测试,全面检测系统的安全防护机制是否完善。重点测试数据加密是否有效,确保用户信息在传输和存储过程中的保密性,防止信息被窃取或篡改,保护用户的隐私和权益。
通过对系统各项功能的细致测试,能够及时发现并修正潜在的功能缺陷,保证系统的功能完整性和正确性,为用户提供稳定可靠的服务。
5.2 测试用例
本系统需要满足普通用户和管理员两种角色的需求,所以以下将对这两类角色分别进行功能测试。
5.2.1 普通用户功能测试
普通用户测试聚焦于个人消费数据的浏览、外部商品信息的爬取查看、多维度的可视化交互及社区互动,确保学生能直观分析消费结构并获取市场参考。
表6-1 普通用户功能测试表
| 编号 | 用例说明 | 输入数据 | 预测结果 | 测试结果 |
|---|---|---|---|---|
| U01 | 注册与登录 | 学号:2023001,密码:Stu@1234 | 验证通过,跳转至首页,导航栏显示个人信息 | 通过 |
| U02 | 浏览首页推荐 | 访问首页,查看轮播图与数据推荐 | 轮播图正常切换,推荐列表按热度排序显示 | 通过 |
| U03 | 搜索网购数据 | 输入关键词“机械键盘”,选择类别“数码” | 列表刷新,显示匹配的商品名称、价格及购买次数 | 通过 |
| U04 | 查看数据详情 | 点击某条数据,查看详情页 | 展示购买日期、金额、数量等字段,评论区可加载 | 通过 |
| U05 | 互动操作测试 | 对某条数据点击“点赞”、“收藏”并发表评论 | 图标状态变更,评论成功显示,记录数同步增加 | 通过 |
| U06 | 管理个人中心 | 进入“收藏记录”与“点赞记录”页,删除一条收藏 | 列表实时更新,被删条目不再显示,总数扣减 | 通过 |
| U07 | 修改个人资料 | 修改昵称、上传头像、更改登录密码 | 提示保存成功,重新登录后新密码生效 | 通过 |
5.2.2 管理员功能测试
管理员测试侧重于爬虫任务执行、数据导入与清洗、全局统计图表分析及系统基础配置,保障平台数据源的真实性与运行安全。
表6-3 管理员功能测试表
| 编号 | 用例说明 | 输入数据 | 预测结果 | 测试结果 |
|---|---|---|---|---|
| A01 | 后台登录与概览 | 账号:admin,密码:Admin@2026 | 登录成功,仪表盘显示消费总额、趋势图等统计卡片 | 通过 |
| A02 | 执行数据爬取 | 输入标题“运动鞋”,点击“开始爬取” | 系统自动抓取价格、销量等字段,列表新增数据 | 通过 |
| A03 | 数据导入与清洗 | 上传Excel文件,点击“导入”后执行“清洗” | 数据批量入库,异常值被标记或剔除,列表更新 | 通过 |
| A04 | 管理网购数据 | 搜索商品名称,修改价格或删除错误记录 | 数据更新即时生效,前台同步变化,删除成功 | 通过 |
| A05 | 商品类别管理 | 新增类别“生活用品”,删除废弃类别 | 类别列表更新,前端筛选下拉框同步增减选项 | 通过 |
| A06 | 系统配置管理 | 上传新轮播图,发布“系统维护”公告 | 首页轮播图替换成功,公告在前台弹窗显示 | 通过 |
| A07 | 用户账号管理 | 搜索用户,禁用违规账号,重置他人密码 | 账号状态变更为“停用”,该用户无法再次登录 | 通过 |
5.3 测试结果
系统功能测试覆盖了普通学生用户与管理员的核心业务流程。测试结果表明,普通用户能够顺利完成个人消费数据的查询、外部商品信息的爬取查看及点赞收藏等互动操作,Vue前端页面响应迅速,ECharts可视化图表(消费趋势、占比分布)数据渲染准确无误。管理员端在爬虫任务调度、Excel数据导入清洗及全局统计看板方面运行稳定,能够有效处理批量数据并实时反映在后台功能卡片中。权限控制逻辑严密,未出现越权访问现象,系统在多并发下的数据交互一致,无阻塞性缺陷,符合基于Python的学生网购数据可视化系统的设计要求,具备实际部署条件。
👇精彩专栏 推荐订阅👇
精选100个热门Java毕业设计项目|适配2026‑2027届选题参考✅
精选100个热门Python毕业设计项目|适配2026‑2027届选题参考✅
精选100个热门微信小程序/安卓APP毕业设计项目|适配2026‑2027届选题参考✅
✅获取源码请私信✅
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以找我咨询,希望帮助更多的人❤️

196

被折叠的 条评论
为什么被折叠?



