摘 要
本文设计并实现了一款基于Django框架的个人理财管理系统,帮助用户高效地管理个人财务,实现收入、支出、预算等信息的全面记录和分析。系统主要包括收入账单管理、支出账单管理、预算信息管理和余额信息管理等功能模块。通过用户友好的界面,用户可以方便地查看、添加和编辑各类账单信息,实时掌握个人财务状况。同时,系统提供了预算设置功能,用户能够根据实际需求设定预算目标,并对支出进行有效控制。
在系统架构设计方面,采用Django作为后台开发框架,结合SQLite数据库实现数据存储。系统采用MVC(模型-视图-控制器)设计模式,确保了代码的模块化和可维护性。前端采用HTML、CSS、JavaScript进行页面设计,界面简洁易用,适合不同层次用户的需求。
通过对系统的功能测试和用户体验分析,结果表明,该系统能够有效地帮助用户管理个人财务,提供了直观的财务数据展示,并能根据用户的收入、支出情况进行合理的财务规划。最终,本系统为个人理财管理提供了一个智能、便捷的解决方案,有望为广大用户提供切实的帮助。
关键词:Django框架、个人理财管理、收入账单、支出账单
Abstract
This paper designs and implements a personal finance management system based on the Django framework, which aims to help users manage their personal finances efficiently and achieve comprehensive recording and analysis of income, expenditure, budget and other information. The system mainly includes functional modules such as income bill management, expenditure bill management, budget information management and balance information management. Through a user-friendly interface, users can easily view, add, and edit various types of billing information to keep track of their finances in real time. At the same time, the system provides a budget setting function, which allows users to set budget targets according to actual needs and effectively control expenditures.
In terms of system architecture design, Django is used as the backend development framework, combined with SQLite database to achieve data storage. The system adopts the MVC (Model-View-Controller) design pattern to ensure the modularity and maintainability of the code. The front-end uses HTML, CSS, and JavaScript for page design, and the interface is simple and easy to use, which is suitable for the needs of users at different levels.
Through the functional test and user experience analysis of the system, the results show that the system can effectively help users manage their personal finances, provide intuitive financial data display, and make reasonable financial planning according to users' income and expenditure. Ultimately, the system provides an intelligent and convenient solution for personal financial management, which is expected to provide practical help to the majority of users.
Keywords: Django framework, personal finance management, income bills, expense bills,
目 录
随着经济水平的不断提高和个人消费需求的多样化,个人财务管理变得愈加重要。传统的手工记账方式已无法满足现代社会对快速、高效、准确的财务管理需求。许多人在日常生活中面临着如何合理规划收入、控制支出、制定预算等问题,这对个人财务健康产生了深远影响。随着智能手机和互联网技术的发展,基于网络的财务管理工具逐渐成为解决这一问题的有效途径。
目前,市场上已有一些个人理财管理软件,但大多存在操作复杂、功能单一、用户体验差等问题。此外,这些系统往往没有提供个性化的财务分析和预算管理功能,导致用户难以进行全面的财务规划和合理的支出控制。因此,开发一款功能全面、易于使用的个人理财管理系统成为待解决的课题。
Django框架作为一种高效、灵活的Web开发框架,在开发过程中能够提高系统开发的效率和安全性,成为了构建个人理财管理系统的理想选择。本研究基于Django框架,设计并实现了一款集收入、支出、预算管理为一体的个人理财管理系统,为用户提供一个智能、便捷的财务管理工具,以便于他们更好地掌握自己的财务状况,进行科学的财务规划与管理。
本研究的主要目的是设计并实现一款基于Django框架的个人理财管理系统,帮助用户高效、便捷地管理个人财务。具体目标包括:通过该系统,用户能够方便地记录和管理个人收入、支出和预算信息,随时掌握自己的财务状况;提供直观的财务数据分析功能,帮助用户了解收支趋势、发现财务问题,并根据数据调整个人财务规划;设计简单易用的界面,确保系统的操作便捷性,适应不同用户群体的需求;提供预算设置和控制功能,帮助用户根据收入情况合理安排支出,避免过度消费,提升财务健康水平。
本研究的意义在于多方面的提升个人财务管理水平。首先,个人财务管理在日常生活中至关重要,但许多人缺乏有效的工具和方法。通过本研究开发的理财管理系统,能够简化个人财务的记录、分类和分析过程,提升用户的财务管理效率和准确性,帮助用户养成良好的理财习惯。其次,系统能够通过实时监控与分析收入和支出,帮助用户直观了解财务状况,从而进行合理的预算和支出规划,避免不必要的消费浪费,促进个人财务健康。此外,采用Django框架开发系统,结合前后端技术,推动了基于现代信息技术的个人理财工具的创新与发展,具有较强的实践意义。最后,本研究开发的系统简洁而功能全面,能够满足用户的个性化需求,提供高效、便捷的财务管理服务,适应不同用户群体的使用场景。
在国外,个人理财管理软件的研究和应用已经有较长时间的历史,并且发展相对成熟。许多知名企业提供了功能全面、易于使用的理财管理工具。例如,Mint、YNAB(You Need A Budget)、Personal Capital等都是全球范围内广泛使用的个人理财软件。这些系统通常提供收入和支出的自动记录、预算管理、财务分析和投资跟踪等多项功能,帮助用户实现财务目标和提高财务透明度。此外,随着人工智能、大数据和云计算等技术的发展,越来越多的理财管理系统开始集成智能分析和自动化功能,能够根据用户的消费行为、收入水平等信息提供个性化的财务建议和规划。
在国内,随着互联网技术的飞速发展和移动支付的普及,个人理财管理软件也逐渐成为越来越多用户日常生活的一部分。诸如支付宝、腾讯理财通、挖财、随手记等理财工具已在市场上占据了一定份额。这些工具主要聚焦于收入、支出、资产和负债的记录,并提供基本的预算管理和财务分析功能。然而,现有国内理财管理软件仍存在一些不足之处。首先,很多软件功能过于复杂,用户体验较差,尤其是对于非理财专业人士来说,操作界面繁琐,难以迅速上手。其次,部分系统的预算管理功能较为基础,缺乏智能化的预算分析和财务规划功能。再者,数据安全问题也日益成为用户关注的焦点,尤其是在涉及到个人银行账户、信用卡信息等敏感数据时,如何保护用户隐私和安全成为亟待解决的问题。
在学术研究方面,国外已有大量关于个人理财管理系统的研究,这些研究主要集中在如何利用现代信息技术来提高个人财务管理的智能化、自动化水平。国内在这一领域的研究起步较晚,但随着智能手机和互联网技术的普及,近年来也逐渐获得关注。国内研究主要集中在如何结合用户行为分析、机器学习等技术来提供个性化的理财建议和预算管理。同时,也有研究探讨了理财软件中的数据安全问题,并提出了相应的解决方案。
总体来看,虽然国内外的个人理财管理系统在功能上有很多相似之处,但国外的相关系统相对成熟,尤其在智能化财务规划、投资分析等方面具有更高的技术水平。国内的理财管理系统尚在发展阶段,虽然市场需求庞大,但在系统的个性化、智能化、用户体验等方面仍存在一定的差距。因此,开发一款高效、易用且具备智能财务规划功能的个人理财管理系统,仍然是当前亟待解决的问题。
本文的结构按逻辑顺序分为以下几个章节:
第1章绪论,本章节介绍研究背景和意义,回顾当前研究现状,并阐明本文主要组织结构。
第2章系统关键技术,本章节将对个人理财管理系统的实现关键技术进行简要介绍。
第3章系统分析,本章节基于市场调研,分析个人理财管理系统的可行性、功能、角色、性能等需求,明确各模块的业务需求。
第4章系统设计,本章节详细阐述系统的整体架构设计,包括前后端结构、数据库设计及功能模块的设计思路。
第5章系统实现,本章节介绍系统各主要模块的具体实现,包括代码示例、业务逻辑及界面设计等。
第6章系统测试,本章节描述系统的测试方法及结果,分析系统的性能、稳定性及用户反馈。
第7章结论,本章节对主要对研究成果进行总结。
B/S体系[1],即Browser/Server体系,是一种常见的网络应用程序架构。其工作原理基于客户端与服务器之间的请求-响应模型。用户通过浏览器向服务器发送请求,服务器接收到请求后进行处理,并生成相应的响应结果,最终将响应返回给客户端。浏览器接收到服务器返回的响应后,解析其中的标记语言(如HTML[2]),并根据CSS样式表和PythonScript脚本来渲染页面,呈现给用户。用户可以与页面进行交互,例如点击链接、填写表单等操作,这些操作会触发新的请求,循环执行上述过程。
2.2Python语言
Python是一种简洁易读、跨平台且功能强大的编程语言[7]。它拥有庞大而活跃的社区,提供了丰富的第三方库和框架,如NumPy、Pandas和Django,使开发人员能够快速构建各种应用程序。Python在数据处理和科学计算方面表现出色,通过相关库和工具,可以进行数据分析、机器学习和科学计算等任务。此外,Python广泛应用于Web开发[8]、自动化脚本、网络爬虫等领域,其多样性使其成为一个全能的编程语言。无论你是初学者还是有经验的开发者,Python的简单语法、跨平台性以及强大的社区支持都能为你提供高效、优雅和可靠的编程体验。总之,Python是一个强大而灵活的编程语言,深受开发人员喜爱,并在各个领域得到广泛应用。
3.2MySQL数据库
MySQL是一种广泛使用的开源关系型数据库管理系统[5](RDBMS),其稳定性、可靠性和卓越性能使其成为众多应用程序的首选数据库。MySQL支持标准SQL语法,并提供丰富的功能和特性,如事务处理、触发器和存储过程等,以满足开发者对数据管理和操作的需求。MySQL具有良好的可扩展性,支持主从复制、分布式架构和集群部署,适用于各种规模和负载的应用场景。作为一个开源项目,MySQL拥有庞大的用户社区和活跃的开发者社区,为用户提供了丰富的文档、教程和支持资源。总之,MySQL是一款可靠、强大且灵活的关系型数据库管理系统[6],通过其卓越性能和可扩展性,帮助开发者高效地管理和操作数据,并得到了广大用户的认可和应用。
3.2.1技术可行性
在技术可行性方面,选择使用Python作为开发语言,结合相应的框架Django,以实现系统的功能需求。Python作为一种简洁而强大的编程语言,具有丰富的库支持和成熟的开发社区,可以满足非物质文化遗产管理系统的开发需求。Django作为Python的Web框架,提供了高度可扩展的开发环境,使得系统的设计和实现更加便捷和高效。
系统开发采用开源技术栈,降低了软件授权与工具采购成本。Django框架简化了开发流程,缩短了项目周期,减少了人力投入。此外,借助云计算资源部署系统,可根据实际需求灵活调整服务器配置,进一步降低硬件成本。总体而言,该方案在经济上具有较高性价比,适合中小型企业或初创团队实施。
在操作可行性方面,本系统设计注重用户体验,采用了直观易用的界面设计,并提供详细的帮助文档支持,确保用户可以轻松上手使用各项功能。无论是用户还是后台管理员,都能通过简洁明了的操作流程完成信息查询和管理等任务。因此,从用户操作的角度来看,本系统具备良好的操作可行性。
本系统的目标是为用户提供一个全面的理财管理平台,帮助其有效管理收入、支出、余额以及预算等财务信息。根据不同的角色,系统分为两大用户类型:管理员和普通用户。以下是针对这两个角色的功能需求分析。
- 管理员是系统的核心管理者,负责对系统的整体运营进行管理、控制和维护。管理员具备权限对系统中的用户和财务数据进行操作。
- 后台首页:管理员登录后,将进入后台首页,首页展示系统概况,如总收入、总支出、账户余额、预算进展等信息,提供对各个模块的快捷访问入口。首页应具有统计图表功能,以便于管理员对系统运营状态进行快速了解。
- 系统用户管理:管理员能够查看、添加、删除和编辑系统中的用户账户。管理员可以查询所有用户的基本信息和账户状态,并对不活跃或违规的账户进行处理。
- 收入分类管理:管理员可以管理系统中的收入类别,如工资、奖金、投资收益等,支持添加、修改、删除收入分类,确保用户收入管理的灵活性与多样性。
- 支出分类管理:管理员负责管理支出类别,如食品、交通、娱乐等,管理员可以调整、删除或新增支出分类,以满足不同用户的需求。
- 收入账单管理:管理员具有查看、修改、删除收入账单的权限。可以对用户提交的收入账单进行审核,并确保账单记录的准确性和完整性。
- 支出账单管理:管理员负责管理所有用户的支出账单,包括查看、修改、删除账单内容。管理员可审核并确保账单信息的正确性。
- 余额信息管理:管理员可以查看所有用户的账户余额信息,并对余额进行调整。在系统出现异常时,管理员还能够进行余额纠错。
- 预算信息管理:管理员有权查看所有用户的预算设置,进行预算修改、删除等操作。管理员可查看预算执行的状态和剩余预算信息,保证系统的预算管理规范性。
- 个人中心:管理员有个人中心功能,管理自己的账户信息、密码修改、系统权限等。个人中心界面简洁直观,管理员可以查看个人信息并进行设置。
- 用户是系统的主要使用者,负责录入和管理自己的收入、支出、余额和预算信息。用户界面友好,操作便捷,能够有效记录和监控个人的财务状况。
- 首页:用户登录后,进入首页,首页展示个人账户的概览信息,如收入、支出、余额、预算情况等。首页可以通过图表或列表展示收入与支出的分类、账单总览等,便于用户快速掌握个人财务状况。
- 收入账单管理:用户可以在系统中添加、修改和删除收入账单,记录每一笔收入的具体情况。用户能够通过收入类别进行分类管理,并查看历史账单记录,便于进行财务回顾和管理。
- 支出账单管理:用户能够管理自己的支出账单,包括添加、修改、删除每笔支出记录。支出可以按照分类进行管理,帮助用户掌握每个类别的支出情况,以便进行财务调整。
- 余额信息管理:用户可以查看自己的账户余额,并进行手动调整。系统可以实时同步收入与支出,展示实时余额,确保用户随时了解账户的资金情况。余额信息应支持多种方式进行展示,如总余额、各类资金账户余额等。
- 预算信息管理:用户可以设定月度或年度的预算,制定收入和支出的预算目标。预算管理功能能够帮助用户通过预算监控自己每月的收入和支出是否符合预期,并提供剩余预算的实时反馈。
- 个人中心:用户的个人中心功能包括查看和修改个人资料、修改登录密码、设置安全信息等。个人中心应提供清晰的导航,让用户能够轻松管理自己的账户信息。
Django是一个使用Python语言开发的Web应用程序框架[3]。它提供了一种简单而强大的方式来构建复杂的网站和应用程序。通过使用Django,开发人员可以更轻松地处理数据库、创建用户界面和处理用户请求。它还提供了一个自动生成管理界面的功能,使得管理后台数据变得更加简单。Django还具有强大的安全功能,可以保护网站免受常见的网络攻击[4]。总之,Django是一个非常实用和易于学习的框架,适用于各种规模的Web项目。无论你是初学者还是经验丰富的开发人员,都可以从Django的便利性和灵活性中受益。
在设计个人理财管理系统时,确保系统满足用户需求并提升体验至关重要。用户登录后,首页展示财务概览,包括总收入、总支出、余额和预算使用情况,帮助用户快速了解财务状况。收入账单管理功能允许用户添加、编辑或删除收入记录,如工资和奖金,确保数据准确。支出账单管理则让用户跟踪和更新日常开销,更好地控制消费。余额信息管理提供实时账户余额查看及手动调整功能,确保财务信息准确。预算信息管理帮助用户设定预算并通过图表监控执行进度,便于财务规划。个人中心允许用户更新个人信息、修改密码,并安全退出系统,保障个人资料安全。通过这些功能模块,系统为用户提供全面且便捷的财务管理工具,帮助他们更有效地规划和控制财务。用户角色用例图如下所示。

图3-1 用户用例图
3.5.2管理员用例分析
在个人理财管理系统中,管理员登录后,后台首页展示系统关键统计数据和概览,帮助快速了解运行状况。系统用户管理允许添加、编辑或删除用户账户及权限。收入分类管理和支出分类管理使管理员能创建和修改财务类别,确保数据清晰准确。收入账单管理和支出账单管理让管理员查看和调整用户的收支记录,保证数据完整性。余额信息管理提供实时监控和调整工具,处理特殊情况。预算信息管理帮助设定和监控用户预算计划,通过图表展示执行情况。这些功能模块使管理员能够高效管理系统,确保系统的稳定运行和财务管理的准确性。这样的一站式管理平台提升了系统的可操作性和整体效率。管理员角色用例图如下所示。

图3-2 管理员用例图
系统非功能需求指的是性能需求,即对一个系统的性能需求进行分析和定义的过程。在进行性能需求分析时,因此个人理财管理系统的设计与实现主要需要考虑以下几个方面的性能需求:
响应时间:响应时间是指系统在接收到请求后,作出响应的时间。根据具体的业务需求和用户体验要求,可以确定系统在不同场景下的响应时间要求。
吞吐量:吞吐量是指系统在一定时间内处理的事务或请求的数量。根据业务需求和用户量的估计,可以确定系统需要支持的最大吞吐量。
并发用户数:并发用户数是指系统在同时使用的用户数量。根据预期的用户量和并发访问需求,可以确定系统需要支持的最大并发用户数。
可扩展性:可扩展性是指系统在面对用户量增加或并发访问需求增加时,能否通过增加硬件资源或调整系统架构来满足需求。根据预期的用户增长和扩展计划,可以确定系统需要具备的可扩展性要求。
故障处理能力:系统对故障的处理能力是指在出现错误或故障时,系统能够快速、准确地识别、定位并处理故障的能力。根据业务的重要性和对故障处理的要求,可以确定系统需要具备的故障处理能力。
安全性:系统在性能需求分析中,也需考虑安全方面的需求,如数据的保密性、完整性和可用性等。根据具体的安全需求和合规要求,可以确定系统需要满足的安全性需求。
通过对这些性能需求进行详细分析和定义,可以为个人理财管理系统的设计和开发提供指导,确保系统在满足预期的性能需求的同时,具备良好的性能和可靠性。
3.7.1注册时序图
用户通过注册模块发送注册请求,系统完成注册后返回确认信息。随后,用户通过登录模块发送登录请求,系统验证用户信息后允许访问目标系统。用户完成操作后可选择退出,系统终止会话。注册时序图,如图4-3所示。

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

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

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

从技术角度来看,个人理财管理系统的架构设计至关重要。我们将采用MVC架构,包括表现层、业务逻辑层和数据访问层。表现层负责用户界面展示,业务逻辑层处理核心功能逻辑,数据访问层负责数据库交互。通过三层架构模式,确保系统的可靠性和可扩展性。
系统架构图如图4-1所示。

图4-1 系统架构图
通过整体功能模块设计,我们将根据需求分析的结果,将系统的功能划分为不同的模块。每个模块负责实现特定的功能,并与其他模块进行协作。我们将详细定义每个模块的输入、输出、处理逻辑和相互依赖关系。系统总体功能模块图如下图所示。

图4-2 系统功能模块图
借助先进的系统,E-R图使其他用户可以快速轻松地了解系统的功能以及他们之间的关系。根据个人理财管理系统分析结果,本个人理财管理系统总体E-R图如下图所示。

图4-3 系统总体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-balance_information(余额信息)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | balance_information_id | int | 是 | 是 | 余额信息ID | |
| 2 | user_information | int | 否 | 否 | 用户信息 | |
| 3 | user_name | varchar | 64 | 否 | 否 | 用户姓名 |
| 4 | balance_classification | varchar | 64 | 否 | 否 | 余额分类 |
| 5 | balance_amount | double | 否 | 否 | 余额金额 | |
| 6 | balance_remarks | text | 65535 | 否 | 否 | 余额备注 |
| 7 | create_time | datetime | 是 | 否 | 创建时间 | |
| 8 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-4-budget_information(预算信息)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | budget_information_id | int | 是 | 是 | 预算信息ID | |
| 2 | budget_title | varchar | 64 | 否 | 否 | 预算标题 |
| 3 | user_information | int | 否 | 否 | 用户信息 | |
| 4 | user_name | varchar | 64 | 否 | 否 | 用户姓名 |
| 5 | budget_amount | double | 否 | 否 | 预算金额 | |
| 6 | the_actual_amount | double | 否 | 否 | 实在金额 | |
| 7 | balance_amount | double | 否 | 否 | 结余金额 | |
| 8 | budget_remarks | text | 65535 | 否 | 否 | 预算备注 |
| 9 | create_time | datetime | 是 | 否 | 创建时间 | |
| 10 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-5-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-6-expenditure_classification(支出分类)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | expenditure_classification_id | int | 是 | 是 | 支出分类ID | |
| 2 | expenditure_classification | varchar | 64 | 否 | 否 | 支出分类 |
| 3 | create_time | datetime | 是 | 否 | 创建时间 | |
| 4 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-7-expense_bill(支出账单)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | expense_bill_id | int | 是 | 是 | 支出账单ID | |
| 2 | user_information | int | 否 | 否 | 用户信息 | |
| 3 | user_name | varchar | 64 | 否 | 否 | 用户姓名 |
| 4 | date_of_expenditure | date | 否 | 否 | 支出日期 | |
| 5 | expenditure_classification | varchar | 64 | 否 | 否 | 支出分类 |
| 6 | expenditure_amount | double | 否 | 否 | 支出金额 | |
| 7 | expenditure_remarks | text | 65535 | 否 | 否 | 支出备注 |
| 8 | create_time | datetime | 是 | 否 | 创建时间 | |
| 9 | 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-income_bill(收入账单)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | income_bill_id | int | 是 | 是 | 收入账单ID | |
| 2 | user_information | int | 否 | 否 | 用户信息 | |
| 3 | user_name | varchar | 64 | 否 | 否 | 用户姓名 |
| 4 | income_date | date | 否 | 否 | 收入日期 | |
| 5 | income_classification | varchar | 64 | 否 | 否 | 收入分类 |
| 6 | amount_of_income | double | 否 | 否 | 收入金额 | |
| 7 | revenue_remarks | text | 65535 | 否 | 否 | 收入备注 |
| 8 | create_time | datetime | 是 | 否 | 创建时间 | |
| 9 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-10-income_classification(收入分类)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | income_classification_id | int | 是 | 是 | 收入分类ID | |
| 2 | income_classification | varchar | 64 | 否 | 否 | 收入分类 |
| 3 | create_time | datetime | 是 | 否 | 创建时间 | |
| 4 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-11-ordinary_user(普通用户)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | ordinary_user_id | int | 是 | 是 | 普通用户ID | |
| 2 | user_name | varchar | 64 | 否 | 否 | 用户姓名 |
| 3 | user_gender | varchar | 64 | 否 | 否 | 用户性别 |
| 4 | contact_phone | varchar | 16 | 否 | 否 | 联系电话 |
| 5 | examine_state | varchar | 16 | 是 | 否 | 审核状态 |
| 6 | user_id | int | 是 | 否 | 用户ID | |
| 7 | create_time | datetime | 是 | 否 | 创建时间 | |
| 8 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-12-schedule(日程管理)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | schedule_id | smallint | 是 | 是 | 日程ID | |
| 2 | content | varchar | 255 | 否 | 否 | 日程内容 |
| 3 | scheduled_time | datetime | 否 | 否 | 计划时间 | |
| 4 | user_id | int | 是 | 否 | 用户ID | |
| 5 | create_time | datetime | 否 | 否 | 创建时间 | |
| 6 | update_time | datetime | 否 | 否 | 更新时间 |
表 4-13-score(评分)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | score_id | int | 是 | 是 | 评分ID | |
| 2 | user_id | int | 是 | 否 | 评分人 | |
| 3 | nickname | varchar | 64 | 否 | 否 | 昵称 |
| 4 | score_num | double | 是 | 否 | 评分 | |
| 5 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 6 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 7 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 8 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
| 9 | source_id | int | 是 | 否 | 来源ID |
表 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 | 是 | 否 | 更新时间 |
用户可以通过注册功能创建个人账号,填写包括用户名、密码、邮箱或手机号等基本信息完成注册流程。系统会对输入信息进行校验,确保唯一性和格式正确性,并将用户数据存储至数据库中,同时发送验证邮件或短信以确认账户有效性。用户注册界面如下图所示。

图5-1 用户注册界面
用户登录模块为前台用户提供安全快捷的访问方式。登录页面设计简洁明了,用户只需输入用户名及密码即可完成身份验证。登录成功后,用户将被重定向至系统首页页面。对于忘记密码的用户,提供了找回密码功能,通过邮箱或手机号接收重置链接,保障账户安全。用户登录界面如下图所示。

图5-2 用户登录界面
Django个人理财管理系统的管理员界面提供了一个集中管理平台。管理员可以通过后台首页查看系统概况,管理用户信息、收入与支出分类,审核收入和支出账单,跟踪余额和预算信息。同时,个人中心功能让管理员管理自己的账户和设置。后台首页界面如下图所示。

图5-3 后台首页界面
收入分类管理模块包括收入分类列表和收入分类添加功能。管理员可以在收入分类列表中查看所有已有的收入分类,包括分类名称、描述及相关操作(如编辑、删除)。通过收入分类添加功能,管理员可以创建新的收入分类,输入名称和描述,以便更好地管理不同来源的收入。整个界面简洁易用,便于管理员高效管理和维护收入分类。收入分类管理界面如下图所示。

图5-4 收入分类管理界面
支出分类管理模块包含支出分类列表和支出分类添加功能。管理员可以在支出分类列表中查看所有已有的支出分类,包括分类名称、描述以及相关操作(如编辑、删除)。通过支出分类添加功能,管理员可以创建新的支出分类,输入分类名称和描述,以便更清晰地管理各类支出。该界面简洁直观,操作方便,帮助管理员高效维护支出分类,确保财务记录的准确性。支出分类管理界面如下图所示。

图5-5 支出分类管理界面
收入账单管理模块包括收入账单列表和收入账单添加功能。管理员可以在收入账单列表中查看所有已录入的收入账单,查看账单的详细信息,如金额、类别、日期等,并进行编辑或删除操作。通过收入账单添加功能,管理员可以录入新的收入账单,填写相关信息如收入来源、金额、日期等,以确保财务记录的完整性和准确性。收入账单管理界面如下图所示。

图5-6 收入账单管理界面
支出账单管理模块包括支出账单列表和支出账单添加功能。管理员可以在支出账单列表中查看所有已录入的支出账单,查看账单的详细信息,如金额、类别、日期等,并进行编辑或删除操作。通过支出账单添加功能,管理员可以录入新的支出账单,填写相关信息如收入来源、金额、日期等,以确保财务记录的完整性和准确性。支出账单管理界面如下图所示。

图5-7 支出账单管理界面
预算信息管理模块包括预算信息列表和预算信息添加功能。管理员可以在预算信息列表中查看所有已设置的预算,包括预算类别、金额、使用情况等,并可进行编辑或删除操作。通过预算信息添加功能,管理员可以创建新的预算,设置预算类别、金额及相关信息,以帮助用户更好地规划财务支出。整个界面简洁明了,操作方便,便于管理员高效管理和调整预算信息。预算信息管理界面如下图所示。

图5-8 预算信息管理界面
用户通过前台登录模块验证身份后进入管理系统,该模块支持账号密码登录,并可选择记住登录状态或进行双因素认证以增强安全性。登录失败时提供错误提示,确保管理员账户的安全性。界面如下图所示。

用户首页界面提供了一个全面的财务管理平台,包括收入账单管理、支出账单管理、余额信息管理、预算信息管理和个人中心功能。用户可以在收入账单管理中查看和添加自己的收入记录,在支出账单管理中查看和录入支出详情;余额信息管理功能帮助用户实时查看账户余额,掌握财务状况;预算信息管理则让用户设置和调整个人预算,合理规划支出。个人中心为用户提供账户信息管理、密码修改等个性化设置,确保用户操作的便捷性和安全性。用户首页界面如下图所示。

图5-10 用户首页界面
收入账单管理模块包括收入账单列表和收入账单添加功能。用户可以在收入账单列表中查看所有已录入的收入账单,查看账单的详细信息,如收入来源、金额和日期,并进行编辑或删除操作。通过收入账单添加功能,用户可以录入新的收入账单,填写收入来源、金额、日期等信息,确保财务记录的完整性和准确性。收入账单管理界面如下图所示。

图5-11 收入账单管理界面
支出账单管理模块包括支出账单管理列表和支出账单添加功能。用户可以在支出账单管理列表中查看所有已记录的支出账单,查看详细信息,如支出类别、金额和日期,并可进行编辑或删除操作。通过支出账单添加功能,用户可以录入新的支出账单,填写支出类别、金额、日期等相关信息,以便更好地跟踪和管理个人财务。支出账单管理界面如下图所示。

图5-12支出账单管理界面
库存管理模块主要用于管理员对商品和书籍的库存信息进行维护,包括库存查询、更新及出入库记录管理。管理员可通过该模块实时查看商品或书籍的库存数量,并执行入库或出库操作,生成相应的记录。此外,模块支持设置库存预警阈值,当库存低于设定值时自动提醒管理员补充货源,确保库存管理的高效性和准确性。余额信息管理界面如下图所示。

图5-13 余额信息管理界面
预算信息管理模块包括预算信息管理列表和预算信息添加功能。用户可以在预算信息管理列表中查看所有已设置的预算,包括预算类别、金额及使用情况等详细信息,并可进行编辑或删除操作。通过预算信息添加功能,用户可以创建新的预算,设置预算类别、金额等相关信息,帮助合理规划个人支出。界面设计简洁直观,操作便捷,便于用户高效管理和调整个人预算,确保财务规划的科学性和可控性。预算信息管理界面如下图所示。

图5-14预算信息管理界面
6.1测试目的
测试是为了验证系统在功能、性能、安全性和用户体验等方面的表现。通过测试,可以发现并修复潜在的问题和缺陷,确保系统的正常运行和稳定性。功能验证确保各项功能按设计要求运行;性能评估评估系统的响应时间和并发处理能力;安全检测确保系统的身份认证和数据传输安全;用户体验评估提升界面友好性和操作流程;兼容性测试确保系统在不同设备和浏览器上的兼容性。通过全面的测试,系统将更可靠地支持用户需求,并提供优质的用户体验。
6.2测试用例
对以下功能进行测试,包括包括用户注册、用户登录、支出账单管理、收入账单管理、预算信息管理、余额信息管理,具体测试用例如下表所示。
表6-1 用户注册测试用例表
| 用例编号 | 用例名称 | 测试步骤 | 测试结果 |
| 6-1 | 用户注册 | 1. 输入有效注册信息,包括用户名、密码和联系方式。 | 注册成功,系统保存用户信息。 |
| 2. 点击注册按钮进行提交。 | 跳转至登录页面。 | ||
| 3. 检查是否成功注册并跳转至登录页面。 | 用户成功注册,可以登录使用。 |
表6-2 用户登录测试用例表
| 用例编号 | 用例名称 | 测试步骤 | 测试结果 |
| 6-2 | 用户登录 | 1. 输入正确用户名和密码。 | 登录成功,系统验证通过。 |
| 2. 点击登录按钮进行验证。 | 跳转至用户首页。 | ||
| 3. 检查是否成功登录并跳转至用户首页。 | 用户成功登录,进入用户首页。 |
表6-3 支出账单管理测试用例表
| 用例编号 | 用例名称 | 测试步骤 | 测试结果 |
| 6-3 | 支出账单管理 | 1. 在搜索框输入关键词。 | 显示相关支出账单列表。 |
| 2. 点击搜索按钮进行搜索。 | 匹配关键词的支出账单显示在搜索结果中。 | ||
| 3. 检查是否显示相关支出账单列表。 | 用户看到与搜索关键词匹配的支出账单。 |
表6-4 收入账单管理测试用例表
| 用例编号 | 用例名称 | 测试步骤 | 测试结果 |
| 6-3 | 收入账单管理 | 1. 点击收入账单管理。 | 显示所有收入账单列表。 |
| 2. 进入详情页浏览。 | 展示收入账单详情页。 | ||
| 3. 检查是否显示收入账单是否正常展示。 | 收入账单展示正常。 |
表6-5 预算信息管理测试用例表
| 用例编号 | 用例名称 | 测试步骤 | 测试结果 |
| 6-4 | 预算信息管理 | 1. 进入预算信息管理界面,点击添加按钮。 | 显示预算信息列表页面。 |
| 2. 正确填写并提交相关信息。 | 信息填写完整准确。 | ||
| 3. 检查是否提交成功,并检查预算信息是否成功添加至平台。 | 预算信息成功添加至平台。 |
表6-6 余额信息管理测试用例表
| 用例编号 | 用例名称 | 测试步骤 | 测试结果 |
| 6-4 | 余额信息管理 | 1. 进入余额信息管理情页,点击购买按钮。 | 显示余额信息页面。 |
| 2. 用户正确填写并提交订单余额信息。 | 余额信息填写完整准确。 | ||
| 3. 检查是否提交成功,并检查订单信息是否成功添加至平台。 | 余额信息成功添加至平台。 |
6.3测试结果
经过对用户注册、用户登录、支出账单管理、收入账单管理、预算信息管理、余额信息管理等功能的测试,系统表现稳定,用户注册流程顺畅,登录验证准确,个人理财搜索、查看、添加功能有效,个人理财商品购买信息流程顺利。各项功能符合预期,用户可以顺利注册登录,选择所需个人理财进行浏览,可以成功发布购买个人理财商品生成订单信息。系统运行良好,用户体验良好,功能完善。
结 论
在个人理财管理系统中,管理员通过后台首页快速了解系统的关键统计数据和整体运行状况。系统用户管理功能允许管理员添加、编辑或删除用户账户及权限,确保系统的安全性和灵活性。收入分类管理和支出分类管理使管理员能够创建和修改财务类别,保证数据的清晰和准确。收入账单管理和支出账单管理让管理员查看和调整用户的收支记录,确保数据的完整性和准确性。余额信息管理提供实时监控和调整工具,处理特殊情况。预算信息管理帮助设定和监控用户预算计划,并通过图表展示执行情况,便于全局把控。这些功能模块使管理员能够高效管理系统,确保系统的稳定运行和财务管理的准确性。
关于使用 Vue.js 作为 Django 的前台技术,这是一种常见且有效的前后端分离开发模式。Django 主要用于后端开发,提供强大的 ORM、数据库管理、身份验证等功能,并通过 RESTful API 向前端提供数据服务。Vue.js 则专注于构建动态单页应用(SPA),具有响应式的数据绑定和组件化的开发方式。通过 Django REST Framework (DRF) 创建 RESTful API 接口,Vue.js 可以轻松调用这些接口获取或提交数据。Vue CLI 可用于快速搭建 Vue.js 项目,Axios 或 Fetch API 用于前后端通信。将构建好的 Vue.js 应用部署到 Django 的静态文件目录下或独立服务运行,并配置 django-cors-headers 处理跨域请求。这种架构不仅提高了开发效率,还增强了系统的可维护性和扩展性,使得系统更加灵活和高效。本次个人理财管理系统将Python同现实个人理财销售工作进行相结合,在系统功能开始编码之前,作者花费了大量时间在图书馆内进行资料文献的收集和总结,通过大量文献的分析,能够发现,个人理财销售的方式在当前在线个人理财市场及销售管理中扮演的位置是越来越重要,而使用的方式也是越来越多元化,也正是因为这个原因,作者深深的希望能够开发出一种专门针对性的个人理财管理系统,以满足不同用户的多样化需求。
基于Python的个人理财管理系统设计与实现得到设计与实现,利用了目前市场上普遍使用的Python编程语言,以及MySQL数据库管理功能,和目前比较流行的Django框架进行系统界面的布置,以现实生活的个人理财销售管理过程为标准,设计实现了包括首页、网站公告、新闻资讯、个人理财、商城管理、租借书籍等模块,为用户提供多元前面的功能操作,基本实现整个个人理财商品销售管理流程。
参考文献
- 黄维.基于B/S模式的虚拟网络实验室安全管理体系分析[J].信息系统工程,2024,(05):4-7.
- 张宇薇.HTML5在Web前端开发中的应用[J].集成电路应用,2024,41(04):274-276.
- 邱红丽,张舒雅.基于Django框架的web项目开发研究[J].科学技术创新,2021,(27):97-98.
- 段艺,涂伟忠.Django开发从入门到实践[M].机械工业出版社:202211.635.
- 李艳杰.MySQL数据库下存储过程的综合运用研究[J].现代信息科技,2023,7(11):80-82+88.
- 肖睿,李鲲程,范效亮,等.MySQL数据库应用技术及实践[M].人民邮电出版社:202206.228.
- 明日科技.快速上手Python[M].化学工业出版社:202211.337.
- 明日科技.Python Web开发手册[M].化学工业出版社:202201.411.
- Shelly G ,Firoz M .Mapping the mindset for personal financial planning[J].Management Research Review,2025,48(4):604-624.
- Sharma V ,Kumar R ,Sood K .The Influence of Financial Socialization, Financial Self-Efficacy, and Self-Control on Financial Well-Being: Does Personal Financial Management Behavior Mediates the Relationship?[J].Journal of the Knowledge Economy,2025,(prepublish):1-31.
- Ahmad S B ,Mushtaq U L ,ArunKumar S , et al.Digital financial literacy and financial well-being – evidence from India[J].International Journal of Bank Marketing,2025,43(3):522-548.
- 唐瑶,王云良,刘涓,等.“课堂革命”背景下高职“个人理财”课程教学改革与实践[J].湖南工业职业技术学院学报,2025,25(01):101-106.DOI:10.13787/j.cnki.43-1374/z.2025.01.020.
- 张琳.全球化背景下高校理财人才培养模式的创新与挑战[J].山西青年,2025,(02):90-92.
- 邓继军.县域商业银行理财业务风险的防范和控制[J].黑龙江金融,2025,(01):73-75.
- 浦仕朝,浦美艳.商业银行个人理财业务发展探讨[J].当代县域经济,2025,(01):100-101.DOI:10.16625/j.cnki.51-1752/f.2025.01.028.
- 王思迪.我国商业银行个人理财业务发展问题和对策[J].现代企业,2024,(12):112-114.
- 吴威.商业银行个人理财产品营销策略研究[J].商业观察,2024,10(34):110-112+120.
- 刘俊丽.基于就业导向的高职(个人理财)课程项目驱动式教学模式研究[J].公关世界,2024,(24):75-77.
- 卓颜君,陈芷馨.互联网金融背景下商业银行个人理财业务的发展对策[J].财富时代,2024,(11):64-65.
致 谢
眨眼之间,大学生活就要结束了。在本文的最后,我要感谢我和蔼可亲的导师、团结有爱的同学的帮助和鼓励。此刻,我找不到感谢之词可以用来表达我最深切的感激之情。尤其感谢我的指导老师,在选题的过程中与我进行了深入的交流,在毕业设计期间给我提供了一些指导。四年的学习生活让我受益良多,老师们的丰富的学术知识、认真负责的学习态度让我受益匪浅。在此,我深深地感谢那些曾经给予我帮助和指导的老师!
我的论文得益于许多学者的贡献,他们的研究成果为我提供了宝贵的指导,使我能够更好地完成这篇文章。感谢我的同学和朋友在我的写作以及排版过程中给予热情的帮助,才使得我比较顺利的完成了这篇论文。
感谢大学里遇见的朋友,你们在我这四年里留下无数的温暖和快乐,让我对这个校园多了一份留念。最后,感谢我的父母、辅导员、班长,以及室友们对我大学生活上的关心和理解,让我能保持乐观和追求我所热爱的。尽管我的能力有限,但我仍然尽力去完善这篇论文,并且诚挚地希望各位老师和学友能够给予宝贵的指导与意见!
点赞+收藏+关注 →私信领取本源代码、数据库
关注博主下篇更精彩
一键三连!!!
一键三连!!!
一键三连!!!
感谢一键三连!!!
-附源码&spm=1001.2101.3001.5002&articleId=161980235&d=1&t=3&u=adc2607ff0bd4e64af04d69e0ca8fd3e)
674

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



