A168-django个人消费记账管理系统【完整项目源码报告】

A168-django个人消费记账管理系统【完整项目源码报告】

导出时间:2025/11/26 14:26:37

【购买前必看】

1、关于我们

深度学习乐园是由python哥全职技术团队组建运营【团队成员为:复旦大学博士、华东理工爱丁堡博士、格拉斯哥博士、纽约大学硕士、浙江大学硕士】。

我们只做python业务,精通sklearn机器学习/torch深度学习/django/flask/vue全栈开发。

2、关于项目

我们从2018年开始,就专注于深度学习sci、ei、ccf、kaggle等,至今已有7年,共发表过10多篇顶刊顶会。

官网累积了数百个项目,已有3000多学员付费购买,圈子内有口皆碑:www.zzgcz.com (更多高级私密项目无法对外,联系微信定制:zzgcz_com

3、售后承诺

包远程安装调试,所有项目均在本地运行通过,大部分都有截图和录屏。

支持二次修改,所有项目都是我们自己写的,改起来也非常容易。

加急定制1-2天可完成这就是实力证明,远程验收满意后再付全款!

所有客户终身售后。兼职的人家都有主业,谁愿意持续服务你?

注:此html可能格式或图片显示不全,请购买后查看docx文档
image.png

目录

1 需求分析1
1.1 系统背景介绍1
1.2 功能需求分析1
2 总体设计1
2.1系统程序结构设计1
2.2 系统用例图3
2.3 开发及运行环境3
3 数据库设计4
4 详细设计5
4.1 用户注册5
4.2 用户登录5
4.3 个人中心5
4.4 首页(新增收入/支出记录)5
4.5 收入记账管理5
4.6 支出记账管理6
4.7 记账图表6
4.8 系统其他功能实现6
5 代码实现7
5.1代码截图7
5.2运行截图10
6 测试13
7 总结15

1 需求分析

系统背景介绍

个人理财的主要对象不像企业那样,是企业的资产和资本这些大量的资金,个人的理财对大多数的人来说就是对个人收入的支配与规划。当代社会个人的收入往往就是工资,这些工资有的是以存入卡形式出现的,有的是现金形式出现的,这两种形式其实本身就为个人理财提供了很大的方便。在存卡形式出现之前,工资往往是完全以现金形式出现的,这就使得人们对收入的规划无序,大多数人遵循着“有多少,花多少”的原则,当然也有不少人利用“记账”的方式进行规划,这其实就是个人财务管理的初级表现之一。

功能需求分析

本系统的最终目的是设计一个名为“TIME 时时记”的个人记账理财系统。对不会自主理财,同时有渴望有一个合理的消费和收入标准的广大用户来说,TIME 时时记系统就非常合适,该系统功能齐全但操作简单。
主要包括用户登录、用户管理、系统记账和图表统计四大功能,能实现用户的注册、登录以及用户信息的修改;实现用户对收入/支出记录的增加、删除、修改和查询。并对最近15天收入/支出的当天总和以柱状图对比显示,对最近15天收入/支出总和的饼状图对比显示。

2 总体设计

2.1系统程序结构设计

OAProject—项目名
├─OAProject # 项目同名文件目录
│ asgi.py# 支持异步网络服务器和应用
│ settings.py # 配置文件
│ urls.py # 根路由,用来控制页面url访问
│ wsgi.py # 帮助Django应用和网络服务器间的通讯
├─OAUser # App目录
———migrations文件目录 # 修改数据模型时,会自动升级数据库
│ __init__.py # 空文件,允许在项目的其他部分使用它
——— static文件目录 # 网站渲染所需文件
—————— login文件目录
│ css文件目录 # 渲染html所需的css文件
│ font文件目录
│ images文件目录 # 渲染html所需的图片
│ js文件目录 # 渲染html所需的js文件
│ __init__.py # 空文件,允许在项目的其他部分使用它
│ admin.py
│ apps.py # app的相关配置
│ froms.py # 该系统登录、注册、收入、支出的表单设计
│ models.py # 该系统创建用户、收入、支出的三张表
│ tests.py
│ urls.py # 网页路由
│ views.py # 视图函数,业务层逻辑代码
├─templates文件目录 # 模板文件(一个一个的html)
———login文件目录
│ __init__.py # 空文件,允许在项目的其他部分使用它
│ chart.html # 记账图表分析页面
│ income.html # 收入记账管理页面
│ index.html # “TIME 时时记”首页

│ login.html # 用户登录页面
│ pay.html # 支出记账管理页面
│ personal-info.html # 用户个人信息管理页面
│ register.html # 用户注册页面
│ update_income.html # 更新收入记账管理页面
│ update_pay.html # 更新支出记账管理页面
├─manage.py # django启动项目文件
└─temp.html # 图表管理页面

2.2 系统用例图

image1.png

2.3 开发及运行环境

本系统是基于64位 windows10家庭中文版,处理器Intel(R) Core(TM) i5-8250U CPU @ 1.60GHz 1.80GHz,机带RAM 12.0GB。
开发工具:PyCharm,Navicat 15 for MySQL




3 数据库设计

表1 用户信息表
表序号
1
表名

Users


含义
存储用户的基本信息





序号
属性名称
含义
数据类型
长度
说明
约束
1
uid
用户id
Int

Not nulll
主键
2
uname
用户名
varchar
30
Not nulll

3
upwd
密码
varchar
30
Not null

4
usex
性别
varchar
30
Not nulll

5
uemail
邮箱
varchar
254
Not null

6
utel
电话号码
bigint

Not null


表2 收入表
表序号
2
表名

Income


含义
存储收入记录





序号
属性名称
含义
数据类型
长度
说明
约束
1
iId
收入id
Int

Not nulll
主键
2
iType
类型
varchar
30
Not nulll

3
iMoney
金额
decimal
10
Not null

4
iRemark
备注
varchar
55
Not nulll

5
iTime
时间
date

Not null


表3 支出表
表序号
3
表名

Pay


含义
存储支出记录





序号
属性名称
含义
数据类型
长度
说明
约束
1
pId
支出id
Int

Not nulll
主键
2
pType
类型
varchar
30
Not nulll

3
pMoney
金额
decimal
10
Not null

4
pRemark
备注
varchar
55
Not nulll

5
pTime
时间
date

Not null



4 详细设计

4.1 用户注册

新用户可以通过输入用户名、密码、确认密码、邮箱地址、电话号码、性别和验证码进行注册。
在/login/forms.py中添加一个新的表单类,upwd1和upwd2用于输入两遍密码,并进行比较,防止误输密码;uemail是一个邮箱输入框;usex是一个select下拉框。然后在register.html中编写forms相关条目。在/viwes.py/文件中完善register()视图,首先两次输入的密码必须相同,其次不能存在相同用户名和邮箱,最后如果条件都满足,则创建一个用户实例,然后保存到数据库内。

4.2 用户登录

用户注册成功后会跳转至登录页面,输入用户名、密码和验证码,点击登录按钮进入系统首页。
用户通过login.html中的表单填写用户名和密码,并以POST的方式发送到服务器的/1ogin/地址。服务器通过1ogin/views.py 中的1ogin() 视图函数,接收并处理这一请求。

4.3 个人中心

可在顶部导航栏进入个人信息界面,对个人信息进行修改操作。点击保完信息完成信息修改。

4.4 首页(新增收入/支出记录)

选择记账类型(收入/支出),金额,备注和时间,点击保存跳出弹窗,点击确定,这条收入/支出记录就会保存至数据库中并显示在相对应的页面上。
后台通过判断iType是否等于“收入”,是的话就将该条记账信息保存至收入记录页面,不是的话就保存至支出记录页面,首先收入、支出页面分开显示。

4.5 收入记账管理

该页面显示收入的序号、类型、金额、备注和时间。
搜索框:输入要搜索的“备注”中的内容,查找到相关记录;
编辑按钮:点击编辑按钮,进入修改页面,修改内容后点击保存即可;
删除按钮:点击删除按钮,在弹窗上点击确认,删除该条信息。
在views.py中实现了收入记录的查询、修改和删除的功能,将其通过income.html页面显示出来。

4.6 支出记账管理

该页面显示支出的序号、类型、金额、备注和时间。
搜索框:输入要搜索的“备注”中的内容,查找到相关记录;
编辑按钮:点击编辑按钮,进入修改页面,修改内容后点击保存即可;
删除按钮:点击删除按钮,在弹窗上点击确认,删除该条信息。
在views.py中实现了支出记录的查询、修改和删除的功能,将其通过pay.html页面显示出来。

4.7 记账图表

通过Echarts,一款基于JavaScript的数据可视化图表库,根据前面的收入和支出记录,生成最近15天每一天的总收入和总支出的对比柱状图。
根据前面的收入和支出记录,生成最近15天的总收入和总支出的对比饼图,以百分比的形式呈现。
得到当前的年月日信息,判断收入日期和支出日期是否在最近15天内,若在,则计算当天收入和支出金额总和,得到“最近15天的收入与支出”信息对比柱状图,生成一个temp.html文件,显示在chart.html页面上。
将最近15天每一天的收入/支出总金额相加,以饼图的形式对比呈现在chart.html页面上。

4.8 系统其他功能实现

计算收入/支出的记录总条数,将其分为一页十条呈现出来。

5 代码实现

5.1代码截图

image2.pngimage3.pngimage4.pngimage5.png
image6.pngimage7.png
image8.pngimage9.png

5.2运行截图

image10.png
图5.1 用户注册界面
image11.png
图5.2 用户登录界面
image12.png
图5.3 个人中心界面
image13.png
图5.4 首页
image14.png
图5.5 搜索显示
image15.png
图5.6 编辑界面
image16.png
图5.7删除界面
image17.png
图5.8 柱状图
image18.png
图5.9 饼图
image19.png
图5.10 分页样式

6 测试

Django 提供了住专门的命令用来执行测试,命令如下所示:我们可以在项目的 manage.py 文件目录下直接执行此命令,但是该命令会将所有的测试结果都输出,如果你的每个应用下都做了单元测试,这显然会给你造成很错乱的感觉,所以我们可以使用下面的命令进行相关的测试输出:
  1. 执行 index 应用下的所有测试用例: python manage.py test index。
  2. 执行 index应用下 tests 模块下定义的测试用例:python manage.py test.index.tests。
  3. 直接执行 tests.py 文件下测试类:python manage.py test index.tests.ExampleTest。
  4. 直接执行测试类下某个测试方法:python manage.py test index.tests.ExampleTest.test_view。
用户注册时,upwd1和upwd2用于输入两遍密码,并进行比较,防止误输密码;uemail是一个邮箱输入框;usex是一个select下拉框。然后在register.html中编写forms相关条目。在/viwes.py/文件中完善register()视图,首先两次输入的密码必须相同,验证码也需要输入正确,其次不能存在相同用户名和邮箱,最后如果条件都满足,则创建一个用户实例,然后保存到数据库内。
image20.png
image21.pngimage22.pngimage23.png
用户登录时,用户通过login.html中的表单填写用户名和密码,并以POST的方式发送到服务器的/1ogin/地址。服务器通过1ogin/views.py 中的1ogin() 视图函数,接收并处理这一请求。除了需要填写正确的验证码之外,用户名和用户密码也必须要正确,否则都无法登录。
image24.png image25.png image26.png

7 总结

本次项目开发带给我最大的感受就是要细心。在编写过程中总是出现一些小bug和因为自己粗心写错的地方,每次都弄得自己莫名其妙,找到并解决之后就会恍然大悟,其实很多是原本认真一点就能避免的。做项目的过程中,遇到问题是很正常的事情,通过查找网页、书籍等方式都有可能解决,在这个过程中最重要的就是要学会找到问题,并解决问题,从中学到之前不懂的知识,加深印象,以防止下次再碰到时束手无策。
在网络如此发达的环境下,学习新知识和新技术的方式有许多。除了通过课堂上老师的讲解,书本上的理解等,这次的项目我还通过b站、百度、询问他人的方法,获取到了自己想要的技术,同时也学到了许多新的知识。
通过使用Django进行开发,我更理解了它为何是高水准的Python编程语言驱动的一个开源模型、视图,控制器风格的Web应用程序框架。在Dj ango框架中,包含了许多功能强大的第三方插件,使得Django具有较强的可扩展性。Django使用自己的Templates模板进行HTML渲染控制,然后我们再通过Django的render()函数给用户返回可视化的图表页面。
在个人收入与支出的对比中,我运用了echarts的条形图和饼图,清晰直观的展现了二者之间的对比。用户的登录验证是通过唯一的用户名,使用Django的ORM去数据库中查询用户数据,如果有匹配项,则进行密码对比,如果没有匹配项,说明用户名不存在。如果密码对比错误,说明密码不正确。增加了message变量,用于保存提示信息。当有错误信息的时候,将错误信息打包成一个字典,然后作为第三个参数提供给render方法。这个数据字典在渲染模板的时候会传递到模板里供你调用。
无论是做什么事情,一定要懂得坚持、遇到困难要懂得自己去寻找答案或者寻求帮助,不害怕不退缩,才能完成自己想要的东西。