计算机毕业设计模板|毕设答辩|毕业设计项目|毕设设计|计算机毕业设计|大数据深度学习Django基于深度学习的GP预测(lstm)-大数据深度学习算法毕设毕业设计项目
摘要:本研究设计并实现了一个基于LSTM深度学习的股票预测系统,采用Django框架构建Web应用。系统通过爬取股票历史数据,构建轻量化LSTM模型预测未来30天走势,并将结果可视化展示。研究解决了传统预测方法主观性强、深度学习模型复杂等问题,实现了算法预测、数据管理和用户交互的整合。测试表明系统功能完整,预测误差在可接受范围,为个人投资者提供了简便的分析工具。项目创新性地将深度学习技术应用于金融

毕业设计题目:Django基于深度学习的GP预测(lstm)-大数据深度学习算法毕设毕业设计项目
文档介绍:
1.引言
1.1 课题背景与意义
近年来,随着金融市场的快速发展,股票投资逐渐成为社会公众参与经济活动的重要方式。股票价格受多种因素影响,呈现高度波动性和不确定性,投资者对价格走势的预测需求日益迫切。传统分析方法主要依赖技术指标和人工经验,存在主观性强、数据处理效率低等问题。在此背景下,基于深度学习的预测方法逐渐成为研究热点。这类方法通过自动学习历史数据中的复杂规律,能够挖掘价格波动的内在特征,为决策提供客观支持,具有重要的现实意义。
当前,深度学习技术已在图像识别、自然语言处理等领域取得显著成果,但其在金融时序数据分析中的应用仍处于探索阶段。股票数据具有时间序列特性,包含开盘价、收盘价、成交量等多种维度信息,传统统计模型难以有效捕捉其非线性关系。本研究通过构建适用于股票数据的时间序列分析模型,结合历史行情数据进行训练和验证,尝试建立一种可解释、易操作的预测框架。同时,设计并实现基于Web的交互系统,将算法预测结果以可视化图表形式展示,降低普通投资者的使用门槛。这一实践不仅能为个人投资者提供参考工具,也为金融数据分析领域的技术应用提供新的思路,具有一定的理论探索价值和实际应用前景。
1.2 国内外研究现状
1.2.1国外研究现状
国外对股票预测的研究起步较早,研究方法经历了从传统统计分析到深度学习的转变。20世纪90年代,学者主要采用统计学方法分析股票市场。例如,通过ARIMA模型分析股票价格的时间序列特征,利用历史数据的趋势性和周期性进行预测。这类方法虽然能够反映数据的基本规律,但对股票价格的非线性波动(如突发事件引起的剧烈涨跌)难以准确捕捉。2000年后,随着计算机技术的发展,机器学习方法逐渐被引入。支持向量机(SVM)、随机森林等算法通过提取技术指标(如移动平均线、成交量)构建预测模型,提升了预测的稳定性。但这类方法依赖人工设计特征,难以处理高维复杂数据。
2015年后,深度学习技术在国外研究中占据主导地位。长短期记忆网络(LSTM)因其擅长处理时间序列数据,成为股票预测的热门选择。例如,部分研究利用LSTM模型分析股票历史价格,预测未来数日的收盘价波动趋势。研究结果表明,LSTM能够有效捕捉股价的长期依赖关系,例如连续多日的上涨或下跌规律。为进一步提升预测效果,学者尝试结合多种深度学习模型:使用卷积神经网络(CNN)提取股票数据中的局部特征(如短期价格波动形态),引入注意力机制(Attention)帮助模型关注关键时间点的价格变化。此外,一些研究开始探索非结构化数据的应用,例如将财经新闻的文本内容转化为情感指标,与股票价格数据共同训练模型。然而,现有方法仍存在明显缺陷:复杂的深度学习模型需要高性能计算设备支持,普通用户难以直接使用;过度依赖历史数据可能导致模型对市场突发事件的预测能力不足,例如政策调整或黑天鹅事件。
近年来,国外研究逐渐转向轻量化模型设计和实际应用探索。部分学者尝试简化网络结构,例如减少LSTM的隐藏层节点数,在保证预测精度的同时降低计算资源消耗。此外,一些团队开始研究模型的可解释性,通过可视化技术展示模型关注的价格特征,帮助投资者理解预测结果的依据。但总体来看,国外研究仍以算法优化为主,缺少面向普通用户的完整系统实现,实际应用价值有待进一步验证。
1.2.2国内研究现状
国内对股票预测的研究起步相对较晚,但近年来在人工智能技术的推动下发展迅速。早期研究主要围绕传统技术分析方法展开,例如通过均线、MACD、KDJ等技术指标分析股票价格走势。这类方法依赖人工经验判断买卖点,虽然操作简单,但难以应对复杂多变的市场环境。2010年前后,随着机器学习技术的普及,国内学者开始尝试将支持向量机(SVM)、随机森林等算法应用于股票预测。例如,部分研究通过提取股票交易量、换手率等特征构建预测模型,但受限于A股市场的高波动性,这些方法在实际应用中表现不够稳定,且对突发事件的响应能力较弱。
2017年后,深度学习技术逐渐成为国内研究的核心方向。清华大学研究团队较早将长短期记忆网络(LSTM)应用于股票预测,通过调整网络层数和神经元数量,改进模型对沪深300指数的预测效果。浙江大学团队则提出一种结合卷积神经网络(CNN)和LSTM的混合模型,利用CNN提取股票数据的局部波动特征(如短期价格变化形态),再通过LSTM分析长期趋势。实验表明,该方法对小盘股的预测精度优于单一模型。此外,国内研究更注重本土化数据的挖掘。例如,部分学者分析东方财富网、新浪财经等平台的新闻标题和评论,通过文本情感分析评估市场情绪对股价的影响,并将结果作为辅助特征输入模型。
在技术应用层面,国内学者尝试将传统技术指标与深度学习模型结合。例如,将KDJ、RSI等技术指标的计算结果与股票价格数据拼接,既保留人工经验的可解释性,又利用模型自动学习复杂规律。一些团队还探索了轻量化模型设计,通过减少网络参数降低计算资源消耗,使其更适合普通用户使用。然而,当前国内研究仍面临明显挑战:一是多数实验基于理想化数据,实际应用中噪声数据会显著降低模型性能;二是研究成果多以算法改进为主,缺乏完整的系统实现,普通投资者难以直接操作使用;三是对模型实时性的研究不足,难以满足短线交易的需求。
1.2.3研究现状总结
当前股票预测研究以深度学习技术为核心,国内外学者在模型优化、数据融合等方面取得了一定进展。LSTM、CNN等模型被证实能够有效捕捉股票数据的时序特征和局部规律,注意力机制、多模态数据融合等方法进一步提升了预测精度。但现有研究仍存在三方面明显不足:一是多数成果聚焦于算法层面的改进,缺少完整的系统实现,研究成果难以转化为普通用户可操作的工具;二是模型设计过于复杂,依赖高性能计算设备,实际应用成本较高,难以满足个人投资者的使用需求;三是对市场突发事件的适应性研究较少,模型训练过度依赖历史数据规律,在面对政策调整、行业黑天鹅事件等突发情况时预测能力下降明显。本课题针对这些问题,设计了一套基于Web的轻量化股票预测系统,通过简化LSTM模型结构降低计算资源消耗,结合均线、成交量等基础技术指标增强结果可解释性。系统集成数据爬取、模型训练和可视化展示功能,以折线图、K线图等形式直观呈现预测结果,为普通投资者提供操作简便的分析工具。这一实践尝试弥补了算法研究与实际应用之间的断层,为深度学习技术在金融领域的落地提供了新的参考方向。
1.3 研究主要内容
本研究围绕股票走势预测的实际需求,设计并实现了一个基于深度学习的股票分析系统。系统以Web应用为载体,主要包含算法设计、数据管理和用户交互三大模块。在算法层面,采用长短期记忆网络(LSTM)对股票历史数据进行建模,通过分析过去30天的开盘价、收盘价、成交量等特征,预测未来30天的价格走势。为了提高实用性,模型设计时注重轻量化,减少网络层数和神经元数量,使其能够在普通计算机上完成训练和预测。同时,系统集成均线、成交量等基础技术指标分析功能,帮助用户多角度理解预测结果。
在技术实现上,系统采用Django框架搭建后端服务,通过爬虫模块从东方财经等平台获取股票实时数据和新闻资讯,存储至MySQL数据库。前端页面使用HTML+CSS+JavaScript开发,利用ECharts图表库实现K线图、预测曲线等数据可视化展示。用户端提供股票列表浏览、详情查看、个人账户管理等功能;管理员端支持股票数据更新、新闻发布和评论审核。为降低使用门槛,系统将深度学习模型封装为可调用接口,用户只需点击“预测”按钮即可自动生成走势分析图表。
研究重点解决三方面问题:一是简化深度学习模型结构,使其在保证基本预测能力的前提下适应普通计算机运行环境;二是构建完整的应用系统,将算法预测、数据管理和用户操作整合为统一平台;三是提升结果可解释性,通过对比历史走势和技术指标分析,帮助用户理解模型预测逻辑。最终实现的系统兼顾功能性与易用性,为个人投资者提供了一种直观、便捷的股票分析工具。
1.4 论文组织架构
第一章 引言:介绍研究背景、意义及国内外研究现状,明确课题研究目标与内容,阐述论文整体结构安排,为后续章节提供逻辑框架。
第二章 关键技术:讲解系统开发所需技术,包括Django框架、TensorFlow深度学习框架、MySQL数据库及爬虫技术,分析各项技术在课题中的具体应用场景。
第三章 系统分析:通过需求分析和可行性分析,明确系统功能需求(如股票预测、数据展示)和非功能需求(如响应速度、安全性),确定系统开发方向。
第四章 系统设计:描述系统总体架构设计,包括前端页面布局、后端服务模块划分,重点说明数据库表结构设计(如股票信息表、用户交易表)及深度学习模型构建方案。
第五章 系统实现:展示系统核心功能开发过程,涵盖用户登录模块、股票数据爬取模块、LSTM模型训练模块及预测结果可视化模块的实现细节与界面效果。
第六章 系统测试:通过功能测试和性能测试验证系统稳定性,分析股票预测准确率、页面响应速度等关键指标,总结测试结果并提出优化建议。
2 关键技术
2.1 Django框架
Django是一种基于Python的Web开发框架,在本课题中被选作后端系统的核心工具。该框架采用“模型-视图-模板”设计模式,能够快速搭建网站基础功能。模型层通过定义数据表结构实现与MySQL数据库的交互,例如用户信息、股票数据等表的创建和操作;视图层负责处理用户请求,例如点击股票详情页时,从数据库查询数据并返回给前端;模板层则用于渲染HTML页面,将动态数据嵌入静态网页中。Django内置的用户认证模块直接支持登录、注册功能开发,避免了重复编写基础代码。此外,其自带的Admin后台管理系统能够自动生成数据管理界面,方便管理员直接通过网页维护股票信息、审核用户评论,大幅提升了开发效率。
在具体实现中,Django的ORM功能简化了数据库操作。例如定义股票信息表时,只需编写Python类描述字段,框架会自动生成对应的SQL语句完成建表。针对股票数据更新需求,通过编写定时任务脚本调用爬虫模块,利用Django的Celery扩展实现异步任务调度。前后端数据交互通过RESTful API实现,例如用户请求某支股票的历史数据时,后端从数据库提取信息并以JSON格式返回,前端通过JavaScript解析后渲染为图表。这些特性使得Django能够支撑本课题中用户管理、数据展示、权限控制等核心功能的快速开发。
2.2 TensorFlow框架
TensorFlow是一个开源的深度学习框架,名字的由来是张量(Tensor)在计算图(Computational Graph)里的流动(Flow)。它采用数据流图(data flow graphs)进行数值计算,节点(Nodes)在图中表示数学操作,图中的边(edges)则表示在节点间相互联系的多维数据数组,即张量(tensor)。张量可以看作是广义上的任何数据,通常在深度学习库中,它用多维数组来描述数据,表示一个数据的容器。
TensorFlow具有自动微分的功能,能够自动计算梯度,这在训练神经网络时非常有用。它还提供了各种常见的操作、损失函数和优化算法。其灵活的架构允许用户将计算工作部署到多种平台和设备。
此外,TensorFlow支持分布式计算,可以将计算任务分布到多个设备和多台机器上进行并行计算,从而提升整体性能和可扩展性。它还提供了丰富的API,可供初学者和专家在桌面、移动、网络和云端环境下进行开发。总之,TensorFlow是一个功能强大且灵活的工具,广泛应用于深度学习领域,帮助开发者更高效地构建和部署机器学习模型。
2.3 Html
HTML是构建网页的基础语言,在本课题中主要用于设计用户界面。通过编写HTML代码,可以定义页面的基本结构,例如导航栏、股票列表表格、图表展示区域等。页面中需要展示的股票数据(如股票代码、名称、实时价格)通过Django模板语法动态嵌入,例如在股票详情页中使用{{ stock.price }}直接显示从数据库查询到的价格数值。为提高交互性,页面中设计了表单元素,例如用户登录时的输入框、股票筛选条件的选择菜单,这些元素通过HTML的<input>、<select>标签实现。此外,页面布局采用Bootstrap框架简化开发,通过预定义的CSS类快速实现响应式设计,确保在手机、平板等不同设备上正常显示。
在前端功能实现中,HTML与JavaScript、ECharts图表库配合完成数据可视化。例如在股票详情页中,通过<div>标签定义图表容器区域,JavaScript从后端获取历史价格数据后,调用ECharts接口生成K线图和预测曲线。用户操作按钮通过HTML的<button>标签绑定点击事件,触发与后端的交互。页面跳转通过超链接标签<a>实现,例如点击导航栏的“股票列表”跳转到对应页面。这种结合动态数据和态元素的开发方式,使得用户能够直观查看股票信息并完成基本操作。)
2.4 MySQL数据库
MySQL作为关系型数据库管理系统,在本课题中负责存储所有业务数据。数据库设计时根据系统需求创建了多张数据表:用户信息表保存用户的账号、密码、联系方式等;股票信息表记录股票代码、名称、每日开盘价、收盘价等基础数据;交易记录表存储用户的买卖操作时间、价格和数量。通过Django的ORM功能,可以直接用Python类定义表结构,例如将股票信息表的字段映射为模型的CharField(字符串)、FloatField(浮点数)等属性,无需手动编写SQL语句。
在实际应用中,数据库主要支撑三类操作:一是用户登录时验证账号密码,通过查询用户表核对输入信息;二是股票数据更新,爬虫程序将东方财经抓取的最新行情数据插入或更新到股票信息表;三是历史数据查询,例如用户查看某支股票的50日K线图时,后端从数据库筛选指定时间范围的数据返回。为提高查询效率,对常用字段(如股票代码、交易时间)建立索引。此外,通过外键关联实现数据一致性,例如用户交易记录表中的user_id字段关联用户表,确保每条交易都有对应的用户信息。这种结构化的数据管理方式,保证了系统数据的安全性和可维护性。
3 系统分析
3.1 系统可行性分析
3.1.1 经济可行性分析
本课题为学术研究性质,开发过程仅需一台普通配置的笔记本电脑即可完成。所有技术工具均采用免费开源方案:Django框架、TensorFlow深度学习库和MySQL社区版无需支付授权费用;股票数据通过公开的东方财经网站爬取,无数据采购成本。系统部署在本地环境,无需租赁服务器或购买云服务资源。开发过程中消耗的主要成本为个人时间投入,无额外经济支出,完全符合学生科研项目的经济条件要求。
3.1.2 技术可行性分析
系统开发所需技术均属于当前主流且成熟的技术方案。Django框架提供完善的Web开发功能,其清晰的MVT模式适合初学者快速搭建系统;TensorFlow作为成熟的深度学习框架,提供LSTM等现成模型接口,简化了股票预测算法的实现难度。数据库采用MySQL,通过Django ORM操作可避免复杂的SQL语句编写。前端页面使用HTML+JavaScript实现基础交互,结合Bootstrap框架降低界面设计门槛。个人计算机(i5处理器、8GB内存)能够满足模型训练和小规模数据处理的性能需求,技术实现路径明确且风险可控。
3.1.3 操作可行性分析
系统功能设计以简洁实用为原则,用户操作流程简单直观。普通用户仅需通过浏览器访问本地地址,输入账号密码即可使用核心功能:查看股票列表、点击查看预测图表。管理员通过Django自带的后台界面管理数据,操作方式类似常见的办公软件,无需专业培训。深度学习模型的训练和预测功能封装在后台自动运行,用户只需点击按钮即可生成结果。系统运行环境依赖Python基础库,通过requirements.txt文件可快速完成环境配置,操作复杂度符合学生开发能力范围。
3.2 功能需求分析
3.2.1 用户端需求分析
用户端需提供基础股票分析与预测功能,满足个人投资者的日常使用需求。用户通过账号登录后,可在首页查看热门股票列表,包括股票代码、名称、实时价格和涨跌幅等基本信息。点击股票进入详情页后,页面展示该股票的50日K线图和未来30天预测走势图,图表支持缩放和切换时间范围。用户可收藏关注的股票至自选股列表,便于快速查看。个人信息页面展示账户余额、历史交易记录,支持上传修改头像。评论功能允许用户对某支股票发表文字评论,查看他人评论并回复互动。系统需保证页面加载流畅,股票数据每日自动更新,预测结果生成时间控制在10秒以内,整体操作流程简单直观,无需专业金融知识即可使用。
3.2.2 管理员端需求分析
管理员端需具备数据维护与系统管理能力。管理员登录后台后,通过可视化界面管理用户账号,包括查看用户基本信息、冻结异常账户等操作。股票管理模块支持手动添加或删除股票,修改股票基础信息(如名称、类型、所属板块),触发爬虫程序更新实时行情数据。新闻管理功能允许管理员发布、编辑或删除财经新闻,设置新闻展示优先级,维护新闻链接的有效性。评论管理模块提供审核用户发表的股票评论,删除违规内容,维护社区交流秩序。系统需内置数据备份功能,防止意外数据丢失,同时记录管理员操作日志,确保管理行为可追溯。管理员操作界面需简洁清晰,所有功能通过点击按钮或表单填写完成,无需编写代码或复杂配置。
3.3 数据模型分析
系统数据模型围绕用户、股票、交易和评论四大核心模块设计。用户表存储账号、密码、联系方式等基本信息,通过用户ID与其他表关联,确保数据一致性。股票信息表记录股票代码、名称、每日开盘价、收盘价等核心数据,作为预测模型的主要输入来源。交易记录表包含用户ID、股票代码、买卖时间、价格和数量,用于生成用户持仓信息和交易历史。评论表关联用户ID和股票代码,保存评论内容、发布时间及回复关系,支持多级评论展示。
数据流转方面,股票数据通过爬虫每日更新至数据库,包括最新价格、涨跌幅等技术指标。用户操作行为产生的数据实时写入对应表中。深度学习模型训练时,从数据库提取历史行情数据进行归一化处理,生成训练集和测试集。预测结果以时间序列形式临时存储,通过图表直接展示给用户,避免占用过多存储空间。所有数据表通过主外键建立关联,例如用户交易记录中的股票代码与股票信息表关联,确保数据查询的准确性和效率。
3.3 系统流程分析
3.2.1 用户登录流程分析
用户首先进入系统的登录界面。在此界面上,用户需要填写其用户名和密码。接下来,用户选择相应的角色类型并点击登录按钮。系统随后会验证输入的账号和密码是否正确。如果账号或密码错误,系统会提示错误信息,用户需重新输入。如果账号和密码验证通过,系统会显示登录成功的提示,并自动跳转至系统首页。如下图3-1所示。

图3-1 用户登录流程图
3.2.2 用户注册流程分析
用户首先进入系统的注册界面,然后需要填写个人信息、用户名和密码。接下来,系统会检查该用户名是否已注册。如果用户名未注册,用户可以成功注册账户,系统提示用户注册成功,并跳转至系统登录界面。如果用户名已注册,系统会提示用户该用户名已重复,注册失败。同时,如果在注册过程中遇到服务器故障,系统也会提示服务器故障,注册过程结束。如下图3-2所示。

图3-2 用户注册流程图
3.2.3 模型训练流程分析
模型训练流程分为数据准备、模型训练与部署三个阶段。首先通过爬虫模块从东方财经等网站获取股票历史数据,包括开盘价、收盘价、成交量等信息并存入数据库。接下来对数据进行预处理:清洗缺失值、归一化处理,并按时间窗口(如30天)将连续数据切割为训练样本。然后构建LSTM神经网络模型,设置输入层、隐藏层和输出层参数,定义损失函数(均方误差)和优化器(Adam)。训练过程中,将80%数据作为训练集,20%作为验证集,迭代训练50-100轮直至损失值稳定。训练完成的模型保存为.h5格式文件,供预测模块调用。当用户请求股票预测时,系统从数据库加载近期数据并输入模型,生成未来30天走势数据后渲染为可视化图表。如下图3-3所示:

图3-3 模型训练流程图
4 系统设计
4.1 系统架构设计
系统采用分层架构设计,分为前端展示层、业务逻辑层和数据存储层三部分。前端展示层使用HTML+CSS搭建用户界面,通过JavaScript调用ECharts图表库实现股票K线图、预测走势图等可视化功能。业务逻辑层基于Django框架开发,处理用户登录、数据查询、预测请求等操作,其中深度学习模型训练和预测功能通过TensorFlow实现。数据存储层采用MySQL数据库,存储用户信息、股票历史数据、交易记录等结构化数据。各层之间通过HTTP请求和API接口交互,例如用户查看股票预测时,前端向后端发送请求,后端调用模型计算结果并返回图表数据。

图4-1 系统架构图
4.2 算法设计
系统核心算法采用长短期记忆网络(LSTM)进行股票走势预测。算法输入为股票历史数据(包括开盘价、收盘价、成交量等),通过构建时间窗口提取连续30天的特征序列,输出未来30天的价格预测值。模型包含1个LSTM层和1个全连接层,隐藏层神经元数量设置为64个,使用均方误差作为损失函数,通过Adam优化器更新参数。训练完成后,模型集成至Django后端,用户请求预测时自动加载最新数据生成结果。

图4-2 算法设计图
数据预处理阶段:从数据库提取股票历史数据,删除缺失或异常记录,对价格和成交量进行归一化处理,消除量纲差异。按时间顺序将数据切割为多个30天连续窗口,每个窗口对应下一30天的价格作为训练标签。
模型构建阶段:使用TensorFlow搭建LSTM网络。输入层接收30天×4个特征(开盘价、收盘价、最高价、成交量)的二维数据,LSTM层提取时序特征,全连接层输出30个预测值。学习率设置为0.001,批量大小固定为32。
训练与预测阶段:划分80%数据作为训练集,20%作为验证集,训练50轮后保存模型。预测时加载最新30天数据输入模型,结果反归一化后转换为实际价格,通过ECharts生成折线图展示给用户。
代码目录如下所示:

核心代码如下所示:

4.3 数据库设计
4.3.1 数据库设计原则
数据库设计以满足系统功能需求为核心,遵循实用性、可维护性和扩展性原则。表结构设计时,每个数据表明确存储单一类型信息,例如用户信息、股票数据、交易记录独立建表,避免数据混杂。字段定义充分考虑实际业务场景,例如股票价格使用浮点型精确到小数点后两位,日期时间字段精确到分钟级。主键设置确保每条记录唯一性,如用户表以用户ID为主键,股票表以股票代码为主键。外键关联保障数据一致性,例如交易记录表中的用户ID和股票代码分别关联用户表和股票表。索引合理添加在常用查询字段(如股票代码、交易时间)上,加快数据检索速度。预留部分扩展字段(如股票信息表中的板块分类字段),为后续功能升级提供支持。数据安全方面,用户密码等敏感信息采用加密存储,防止泄露风险。通过Django框架的ORM功能简化数据库操作,自动生成SQL语句并处理数据迁移,降低开发难度和维护成本。
4.3.2 结构设计
该系统的关键数据库表如下所示:
表4-1 auth_group表
|
序号 |
字段名 |
类型 |
长度 |
是否为空 |
默认值 |
小数位 |
注释 |
|
1 |
id |
int(11) |
-- |
NO |
-- |
0 |
-- |
|
2 |
name |
varchar(150) |
150 |
NO |
-- |
-- |
-- |
表4-2、auth_group_permissions表
|
序号 |
字段名 |
类型 |
长度 |
是否为空 |
默认值 |
小数位 |
注释 |
|
1 |
id |
int(11) |
-- |
NO |
-- |
0 |
-- |
|
2 |
group_id |
int(11) |
-- |
NO |
-- |
0 |
-- |
|
3 |
permission_id |
int(11) |
-- |
NO |
-- |
0 |
-- |
表4-3、auth_permission表
|
序号 |
字段名 |
类型 |
长度 |
是否为空 |
默认值 |
小数位 |
注释 |
|
1 |
id |
int(11) |
-- |
NO |
-- |
0 |
-- |
|
2 |
name |
varchar(255) |
255 |
NO |
-- |
-- |
-- |
|
3 |
content_type_id |
int(11) |
-- |
NO |
-- |
0 |
-- |
|
4 |
codename |
varchar(100) |
100 |
NO |
-- |
-- |
-- |
表4-4、auth_user表
|
序号 |
字段名 |
类型 |
长度 |
是否为空 |
默认值 |
小数位 |
注释 |
|
1 |
id |
int(11) |
-- |
NO |
-- |
0 |
-- |
|
2 |
password |
varchar(128) |
128 |
NO |
-- |
-- |
-- |
|
3 |
last_login |
datetime(6) |
-- |
YES |
-- |
-- |
-- |
|
4 |
is_superuser |
tinyint(1) |
-- |
NO |
-- |
0 |
-- |
|
5 |
username |
varchar(150) |
150 |
NO |
-- |
-- |
-- |
|
6 |
first_name |
varchar(150) |
150 |
NO |
-- |
-- |
-- |
|
7 |
last_name |
varchar(150) |
150 |
NO |
-- |
-- |
-- |
|
8 |
|
varchar(254) |
254 |
NO |
-- |
-- |
-- |
|
9 |
is_staff |
tinyint(1) |
-- |
NO |
-- |
0 |
-- |
|
10 |
is_active |
tinyint(1) |
-- |
NO |
-- |
0 |
-- |
|
11 |
date_joined |
datetime(6) |
-- |
NO |
-- |
-- |
-- |
表4-5、auth_user_groups表
|
序号 |
字段名 |
类型 |
长度 |
是否为空 |
默认值 |
小数位 |
注释 |
|
1 |
id |
int(11) |
-- |
NO |
-- |
0 |
-- |
|
2 |
user_id |
int(11) |
-- |
NO |
-- |
0 |
-- |
|
3 |
group_id |
int(11) |
-- |
NO |
-- |
0 |
-- |
表4-6、auth_user_user_permissions表
|
序号 |
字段名 |
类型 |
长度 |
是否为空 |
默认值 |
小数位 |
注释 |
|
1 |
id |
int(11) |
-- |
NO |
-- |
0 |
-- |
|
2 |
user_id |
int(11) |
-- |
NO |
-- |
0 |
-- |
|
3 |
permission_id |
int(11) |
-- |
NO |
-- |
0 |
-- |
表4-7、comment_reply表
|
序号 |
字段名 |
类型 |
长度 |
是否为空 |
默认值 |
小数位 |
注释 |
|
1 |
id |
int(11) |
-- |
NO |
-- |
0 |
-- |
|
2 |
content |
longtext |
4294967295 |
NO |
-- |
-- |
-- |
|
3 |
reply_time |
datetime(6) |
-- |
NO |
-- |
-- |
-- |
|
4 |
comment_id |
int(11) |
-- |
NO |
-- |
0 |
-- |
|
5 |
reply_id |
int(11) |
-- |
YES |
-- |
0 |
-- |
|
6 |
user_id_id |
varchar(45) |
45 |
NO |
-- |
-- |
-- |
表4-8、django_admin_log表
|
序号 |
字段名 |
类型 |
长度 |
是否为空 |
默认值 |
小数位 |
注释 |
|
1 |
id |
int(11) |
-- |
NO |
-- |
0 |
-- |
|
2 |
action_time |
datetime(6) |
-- |
NO |
-- |
-- |
-- |
|
3 |
object_id |
longtext |
4294967295 |
YES |
-- |
-- |
-- |
|
4 |
object_repr |
varchar(200) |
200 |
NO |
-- |
-- |
-- |
|
5 |
action_flag |
smallint(5) unsigned |
-- |
NO |
-- |
0 |
-- |
|
6 |
change_message |
longtext |
4294967295 |
NO |
-- |
-- |
-- |
|
7 |
content_type_id |
int(11) |
-- |
YES |
-- |
0 |
-- |
|
8 |
user_id |
int(11) |
-- |
NO |
-- |
0 |
-- |
表4-9、django_content_type表
|
序号 |
字段名 |
类型 |
长度 |
是否为空 |
默认值 |
小数位 |
注释 |
|
1 |
id |
int(11) |
-- |
NO |
-- |
0 |
-- |
|
2 |
app_label |
varchar(100) |
100 |
NO |
-- |
-- |
-- |
|
3 |
model |
varchar(100) |
100 |
NO |
-- |
-- |
-- |
表4-10、django_migrations表
|
序号 |
字段名 |
类型 |
长度 |
是否为空 |
默认值 |
小数位 |
注释 |
|
1 |
id |
int(11) |
-- |
NO |
-- |
0 |
-- |
|
2 |
app |
varchar(255) |
255 |
NO |
-- |
-- |
-- |
|
3 |
name |
varchar(255) |
255 |
NO |
-- |
-- |
-- |
|
4 |
applied |
datetime(6) |
-- |
NO |
-- |
-- |
-- |
表4-11、django_session表
|
序号 |
字段名 |
类型 |
长度 |
是否为空 |
默认值 |
小数位 |
注释 |
|
1 |
session_key |
varchar(40) |
40 |
NO |
-- |
-- |
-- |
|
2 |
session_data |
longtext |
4294967295 |
NO |
-- |
-- |
-- |
|
3 |
expire_date |
datetime(6) |
-- |
NO |
-- |
-- |
-- |
表4-12、history_trade_table表
|
序号 |
字段名 |
类型 |
长度 |
是否为空 |
默认值 |
小数位 |
注释 |
|
1 |
id |
int(11) |
-- |
NO |
-- |
0 |
-- |
|
2 |
trade_price |
double |
-- |
NO |
-- |
-- |
-- |
|
3 |
trade_shares |
int(11) |
-- |
NO |
-- |
0 |
-- |
|
4 |
trade_time |
varchar(40) |
40 |
NO |
-- |
-- |
-- |
|
5 |
stock_id_id |
varchar(6) |
6 |
NO |
-- |
-- |
-- |
|
6 |
user_id_id |
varchar(45) |
45 |
NO |
-- |
-- |
-- |
表4-13、news表
|
序号 |
字段名 |
类型 |
长度 |
是否为空 |
默认值 |
小数位 |
注释 |
|
1 |
id |
int(11) |
-- |
NO |
-- |
0 |
-- |
|
2 |
title |
varchar(100) |
100 |
NO |
-- |
-- |
-- |
|
3 |
url |
varchar(200) |
200 |
YES |
-- |
-- |
-- |
|
4 |
content |
longtext |
4294967295 |
NO |
-- |
-- |
-- |
|
5 |
read |
int(11) |
-- |
YES |
-- |
0 |
-- |
|
6 |
news_time |
date |
-- |
NO |
-- |
-- |
-- |
表4-14、optional_stock_table表
|
序号 |
字段名 |
类型 |
长度 |
是否为空 |
默认值 |
小数位 |
注释 |
|
1 |
id |
int(11) |
-- |
NO |
-- |
0 |
-- |
|
2 |
num_of_shares |
int(11) |
-- |
YES |
-- |
0 |
-- |
|
3 |
stock_id_id |
varchar(6) |
6 |
NO |
-- |
-- |
-- |
|
4 |
user_id_id |
varchar(45) |
45 |
NO |
-- |
-- |
-- |
表4-15、stock_comment表
|
序号 |
字段名 |
类型 |
长度 |
是否为空 |
默认值 |
小数位 |
注释 |
|
1 |
id |
int(11) |
-- |
NO |
-- |
0 |
-- |
|
2 |
title |
varchar(50) |
50 |
NO |
-- |
-- |
-- |
|
3 |
content |
longtext |
4294967295 |
NO |
-- |
-- |
-- |
|
4 |
comment_time |
datetime(6) |
-- |
NO |
-- |
-- |
-- |
|
5 |
stock_id_id |
varchar(6) |
6 |
NO |
-- |
-- |
-- |
|
6 |
user_id_id |
varchar(45) |
45 |
NO |
-- |
-- |
-- |
表4-16、stock_info表
|
序号 |
字段名 |
类型 |
长度 |
是否为空 |
默认值 |
小数位 |
注释 |
|
1 |
stock_id |
varchar(6) |
6 |
NO |
-- |
-- |
-- |
|
2 |
stock_name |
varchar(45) |
45 |
NO |
-- |
-- |
-- |
|
3 |
issuance_time |
varchar(45) |
45 |
NO |
-- |
-- |
-- |
|
4 |
closing_price_y |
double |
-- |
YES |
-- |
-- |
-- |
|
5 |
open_price_t |
double |
-- |
YES |
-- |
-- |
-- |
|
6 |
stock_type |
varchar(15) |
15 |
YES |
-- |
-- |
-- |
|
7 |
block |
varchar(45) |
45 |
YES |
-- |
-- |
-- |
|
8 |
change_extent |
double |
-- |
YES |
-- |
-- |
-- |
表4-17、tradingsystem_comment表
|
序号 |
字段名 |
类型 |
长度 |
是否为空 |
默认值 |
小数位 |
注释 |
|
1 |
id |
int(11) |
-- |
NO |
-- |
0 |
-- |
|
2 |
body |
longtext |
4294967295 |
YES |
-- |
-- |
-- |
|
3 |
created |
datetime(6) |
-- |
NO |
-- |
-- |
-- |
|
4 |
lft |
int(10) unsigned |
-- |
NO |
-- |
0 |
-- |
|
5 |
rght |
int(10) unsigned |
-- |
NO |
-- |
0 |
-- |
|
6 |
tree_id |
int(10) unsigned |
-- |
NO |
-- |
0 |
-- |
|
7 |
level |
int(10) unsigned |
-- |
NO |
-- |
0 |
-- |
|
8 |
parent_id |
int(11) |
-- |
YES |
-- |
0 |
-- |
|
9 |
reply_to_id |
varchar(45) |
45 |
YES |
-- |
-- |
-- |
|
10 |
stock_id_id |
varchar(6) |
6 |
NO |
-- |
-- |
-- |
|
11 |
user_id_id |
varchar(45) |
45 |
NO |
-- |
-- |
-- |
表4-18、user_table表
|
序号 |
字段名 |
类型 |
长度 |
是否为空 |
默认值 |
小数位 |
注释 |
|
1 |
user_id |
varchar(12) |
12 |
NO |
-- |
-- |
-- |
|
2 |
id_no |
varchar(18) |
18 |
NO |
-- |
-- |
-- |
|
3 |
user_name |
varchar(45) |
45 |
NO |
-- |
-- |
-- |
|
4 |
password |
varchar(45) |
45 |
NO |
-- |
-- |
-- |
|
5 |
user_sex |
varchar(5) |
5 |
NO |
-- |
-- |
-- |
|
6 |
phone_number |
varchar(45) |
45 |
NO |
-- |
-- |
-- |
|
7 |
user_email |
varchar(254) |
254 |
NO |
-- |
-- |
-- |
|
8 |
photo_url |
varchar(45) |
45 |
NO |
-- |
-- |
-- |
|
9 |
account_num |
varchar(45) |
45 |
NO |
-- |
-- |
-- |
|
10 |
account_type |
varchar(45) |
45 |
NO |
-- |
-- |
-- |
|
11 |
account_balance |
double |
-- |
YES |
-- |
-- |
-- |
|
12 |
freeze |
tinyint(1) |
-- |
NO |
-- |
0 |
-- |
|
13 |
account_opened |
tinyint(1) |
-- |
NO |
-- |
0 |
-- |
|
14 |
last_login |
varchar(45) |
45 |
YES |
-- |
-- |
-- |
5 系统实现
5.1 管理员端实现
5.1.1 用户登陆
用户登录界面是服务运行后的首要访问界面,界面中有两个输入框,通过输入用户名和密码,点击登录,系统验证用户名和密码通过后,即可进入系统首页。如下图5-1所示:

图5-1 用户登陆界面图
5.1.2 后台管理首页
管理员登录后,跳转至后台管理界面,系统首页通过图标的形式简洁展示系统大致信息,包括注册的用户数量、站内股票数、用户评论数和交易记录数。还会以列表的形式展示热门牛股信息,信息包括股票代码、名字全称、状态和涨幅。重大新闻栏中存放着股市中新闻报道链接,最下方还会以折现、柱状图表的形式展示股票大盘信息。如下图5-2所示:

图5-2 后台管理首页界面图
5.1.3 股票信息维护
股票信息维护主要是通过手动的方式维护每日股票开收盘价和股票实时数据。点击更新后,系统相应的股票数据便会更新。如下图5-3所示:

图5-3 股票信息维护界面图
5.1.4 新闻管理
左侧导航栏点击“新闻管理”,右侧会以分页列表的形式展示所有新闻信息。信息展示包括编号、新闻ID、新闻标题、新闻摘要链接和发生时间等新闻基本信息,列表中最右列的操作栏中的按钮可该条记录进行各种功能操作,包括详情查看和删除功能,下方新增按钮点击输入用户信息后可新增一条新闻信息记录,还可以通过爬虫抓取一些新闻信息自动更新。如下图5-4所示:

图5-4 新闻管理界面图
5.1.5 评论管理
左侧导航栏点击“评论管理”,右侧会以分页列表的形式展示所有股票的评论信息。信息展示包括评论股票代码、发表用户、股票名称、评论标题和评论内容等评论基本信息,列表中最右列的操作栏中的按钮可该条记录进行各种功能操作,包括详情查看和删除功能。如下图5-5所示:

图5-5 评论管理界面图
5.1.6 用户管理
左侧导航栏点击“用户信息管理”,右侧会以分页列表的形式展示所有用户信息。信息展示包括用户ID、用户姓名、性别、邮箱、手机号码和账户类型等用户基本信息,列表中最右列的操作栏中的按钮可该条记录进行各种功能操作,仅包括详情查看功能。如下图5-6所示:

图5-6 用户管理界面图
5.1.7 股票管理
左侧导航栏点击“管理股票列表”,右侧会以分页列表的形式展示所有股票信息。信息展示包括股票代码、股票名称、发行时间和昨日收盘价等股票基本信息,列表中最右列的操作栏中的按钮可该条记录进行各种功能操作,仅包括详情查看功能。如下图5-6所示:

图5-7 股票管理界面图
5.2 用户端实现
5.2.1 用户首页
用户登录后,跳转至系统首业界面,系统首页会以列表的形式展示热门牛股信息,信息包括股票代码、名字全称、状态和涨幅。重大新闻栏中存放着股市中新闻报道链接,最下方还会以折现、柱状图表的形式展示股票大盘信息。如下图5-8所示:

图5-8 用户首页界面图
5.2.2 用户信息
用户信息中主要实现用户的个人基本信息,包括头像、姓名等基本信息。还包括账号余额、买入和抛出的信息。下方的修改头像按钮可以修改用户头像。如下图5-9所示:

图5-9 用户信息界面图
5.2.3 股票列表
左侧导航栏点击“股票列表”,右侧会以分页列表的形式展示所有股票信息。信息展示包括股票代码、股票名称、发行时间和昨日收盘价等股票基本信息,列表中最右列的操作栏中的按钮可该条记录进行各种功能操作,仅包括详情查看功能。如下图5-6所示:

图5-10 股票列表界面图
点击详情,右侧窗口会跳转至相应该股票的详情界面。界面中主要通过两张图表的形式展示该股票详情和预测。包括50日K线图表和预测走势中的未来30天走势图表。如下图5-11所示:

图5-11 股票详情_50日K线界面图

图5-12 股票详情_未来30天走势界面图
6 系统测试
6.1 测试目的
系统测试旨在验证各项功能是否按照需求正常运作,确保用户能够流畅使用核心模块。测试重点包括用户登录、股票数据展示、走势预测生成等关键功能是否稳定;检查数据准确性,例如预测结果与历史趋势的逻辑一致性;评估系统性能,如页面响应速度、模型预测耗时是否符合预期(控制在10秒内)。同时测试异常情况处理能力,例如输入错误密码时提示是否明确,网络中断后数据能否正常恢复。通过测试发现潜在问题,为系统优化提供依据,最终保障用户体验和研究成果的可靠性。
6.2 测试方法
测试采用手动测试与工具辅助结合的方式。功能测试通过模拟用户操作完成:依次执行登录、查看股票列表、点击预测按钮等流程,记录页面跳转、数据加载和图表渲染是否正常。数据准确性测试选取多支股票的历史数据,对比模型预测结果与实际后续走势的偏差程度,计算平均误差率。性能测试使用浏览器开发者工具监测页面加载时间,统计模型从请求到生成结果的耗时。异常测试包括输入无效账号、断开网络连接等场景,观察系统提示和容错机制。数据库测试通过Django后台直接查询数据表,验证用户操作(如交易、评论)是否准确写入对应字段。测试结果以表格形式记录通过率与问题点,作为改进依据。
6.3 测试用例
6.3.1 用户登录模块功能测试
验证用户登录功能是否能正确处理合法与非法输入。测试覆盖正常登录、密码错误、账号不存在等典型场景,检查系统提示是否准确,页面跳转是否符合预期。
表6-1 用户登录测试用例表
|
用例编号 |
测试名称 |
测试步骤 |
预期结果 |
实际结果 |
|
LOGIN_001 |
正常登录 |
输入有效用户名和密码,点击登录按钮 |
跳转至首页 |
通过 |
|
LOGIN_002 |
密码错误 |
输入正确用户名和错误密码,点击登录按钮 |
显示“密码错误”提示 |
通过 |
|
LOGIN_003 |
用户名不存在 |
输入未注册的用户名,点击登录按钮 |
显示“账号不存在”提示 |
通过 |
6.3.2 股票预测功能测试
验证用户请求股票预测时,系统能否正确生成走势图并展示结果。测试涵盖正常预测、无效股票代码输入、数据不足等场景。
表6-2 股票预测测试用例表
|
用例编号 |
测试名称 |
测试步骤 |
预期结果 |
实际结果 |
|
PREDICT_001 |
正常预测 |
输入有效股票代码,点击“预测”按钮 |
显示未来30天走势图 |
通过 |
|
PREDICT_002 |
无效股票代码 |
输入不存在的股票代码,点击“预测”按钮 |
显示“股票不存在”提示 |
通过 |
|
PREDICT_003 |
数据不足 |
输入新股代码(历史数据少于30天) |
显示“数据不足,无法预测”提示 |
通过 |
6.3.3 评论发布功能测试
验证用户评论功能的发布、删除及敏感词过滤是否正常。测试包括正常评论、空内容提交、敏感词检测等场景。
表6-3 评论功能测试用例表
|
用例编号 |
测试名称 |
测试步骤 |
预期结果 |
实际结果 |
|
COMMENT_001 |
正常发布评论 |
输入文字内容,点击“提交”按钮 |
评论显示在列表顶部 |
通过 |
|
COMMENT_002 |
空内容提交 |
不输入文字直接点击“提交”按钮 |
显示“内容不能为空”提示 |
通过 |
|
COMMENT_003 |
敏感词检测 |
输入包含“诈骗”等敏感词,点击提交 |
显示“内容包含违禁词汇”提示 |
通过 |
6.4 测试小结
系统测试覆盖用户登录、股票预测、评论发布等核心功能模块,所有基础操作流程均能正常完成,页面响应速度和数据准确性达到预期目标。测试中发现模型预测误差随股票波动性增大而升高。系统在断网、异常输入等场景下能正确提示错误信息,但部分页面加载时间超过3秒,后续可通过异步加载技术优化性能。整体测试结果表明,系统功能完整、运行稳定,满足个人投资者基础使用需求,为后续优化改进提供了明确方向。
更多推荐
所有评论(0)