软件环境

需求分析

1. 基本要素

个人钱款一般存放于多个账户,常见的如微信零钱、中国银行储蓄卡、支付宝余额宝、羊城通、手机卡等。账本记录的动账可以分为三类:花销、收入、转移。

  • 花销:存款账户余额减少的动作
  • 收入:存款账户余额增加的动作
  • 转移:存款账户间资金转移的动作

2. 动账分类

对每笔动账分类可以更直观地展示个人支出去向,以及收入来源。简单地对花销与收入进行分类:

花销:

expense_category: {
0: "吃食",
1: "出行",
2: "住房", //房租、水电、物业管理费等
3: "服饰",
4: "日用品",
5: "家居",
6: "医疗",
7: "固定消费", //话费、宽带等
8: "办公",
9: "学习教育",
10: "休闲娱乐",
11: "往来", //为他人的花销
12: "金融理财",
13: "动植物", //宠物、植物
14: "非本人相关", //代管他人财物时,代管存款变动时的动账类型
15: "慈善捐赠",
16: "借贷"
}

收入

income_category: {
0: "工资",
1: "储蓄利息",
2: "投资理财",
3: "额度券类",
4: "杂活收入",
5: "非本人相关",
6: "慈善捐赠",
7: "借贷"
}

此外,还需设置自己的存款账户:

账户

funds: {
0: "微信零钱",
1: "中国银行卡",
2: "羊城通",
3: "支付宝余额宝",
4: "代管存款"
}

3. 记录构成

每一条动账记录都要记录一些具体的信息,以便统计。

花销

{"基本需求": "necessity",      //维持基本生活的花销,用于统计非必要支出
"数值": "value",
"类别": "category",
"细则": "detail", //二级分类
"描述": "describe", //可以对该项记录增加说明,以便后续查看
"支出账户": "from",
"关联账户": "associatedFund" //代管他人财物时,赋值此字段以同时记录代管存款的变动
}

收入

{"数值": "value",
"类别": "category",
"细则": "detail",
"描述": "describe",
"收入账户": "to",
"关联账户": "associatedFund"
}

转移

{"数值": "value",
"细则": "detail",
"描述": "describe",
"转出账户": "from",
"转入账户": "to"
}

记录存储方式设计

本项目选择用XML格式记录收支记录,格式如下。其中设定了文件读写规则。

点击查看XML文件结构组织方式
<DailyAccountBook>
<balance>
<fund>
<value>5000.00</value>
<category>0</category>
<fundName>微信零钱</fundName>
</fund>
<fund>
<value>999.00</value>
<category>1</category>
<fundName>中国银行卡</fundName>
</fund>
<fund>
<value>90.00</value>
<category>2</category>
<fundName>羊城通</fundName>
</fund>
<fund>
<value>1700.07</value>
<category>3</category>
<fundName>支付宝余额宝</fundName>
</fund>
<fund>
<value>5000.00</value>
<category>4</category>
<fundName>代管存款</fundName>
</fund>
</balance>
<year value="2023">
<month value="09">
<day value="11">
<expenses>
<expense necessity="True" associatedFund="None">
<value>5.00</value>
<category>1</category>
<detail>地铁</detail>
<describe>早上上班。羊城通卡余额=100-5=95元</describe>
<from>2</from>
</expense>
<expense necessity="True" associatedFund="None">
<value>5.00</value>
<category>1</category>
<detail>地铁</detail>
<describe>晚上下班。羊城通卡余额=95-5=90元</describe>
<from>2</from>
</expense>
<expense necessity="False" associatedFund="None">
<value>1.00</value>
<category>12</category>
<detail>业务手续费</detail>
<describe>微信零钱提现1000的手续费</describe>
<from>0</from>
</expense>
</expenses>
<incomes>
<income associatedFund="4">
<value>3000.00</value>
<category>5</category>
<!-->代管存款的收支,应属于“非本人相关”类别<-->
<detail>转账</detail>
<describe>托管人转给本人3000,帮忙存放。本人微信零钱余额=3000+3000=6000元;同时代管存款余额=2000+3000=5000元</describe>
<to>0</to>
</income>
<income associatedFund="None">
<value>0.07</value>
<category>2</category>
<detail>理财</detail>
<describe>昨日余额宝收益。余额=1700+0.07=1700.07</describe>
<to>3</to>
</income>
</incomes>
<movements>
<!-->存款账户之间的资金转移不记录在收支变化量中,仅修改账户余额。由于两个账户余额一增一减,而总量不变,记录下来反而影响个人收支统计<-->
<movement>
<value>999.00</value>
<detail>提现</detail>
<describe>从微信零钱向中国银行卡提现1000元。完成后微信零钱余额=6000-999-1=5000;中国银行卡余额=0+999=999;被收取0.1%的手续费</describe>
<from>0</from>
<to>1</to>
</movement>
</movements>
<variation>
<fund>
<category>0</category>
<out>1.00</out>
<in>3000.00</in>
</fund>
<fund>
<category>1</category>
<out>0.00</out>
<in>0.00</in>
</fund>
<fund>
<category>2</category>
<out>10.00</out>
<in>0.00</in>
</fund>
<fund>
<category>3</category>
<out>0.00</out>
<in>0.07</in>
</fund>
<fund>
<category>4</category>
<out>0.00</out>
<in>3000.00</in>
</fund>
</variation>
</day>
</month>
</year>
</DailyAccountBook>

接下来正式开始编码啦!

【日常收支账本】【Day01】用PySide6开发一个记账的小软件——初步构思的更多相关文章

  1. Android | 教你如何用代码开发一个拍照翻译小程序

    引子   想必有很多小伙伴喜欢外出旅游,能去海外玩一圈那是更好不过了,旅游前大家一定会对吃.穿.住.行.游玩路线做各种攻略,然后满怀期待的出发- 想象中的旅游   出发前,想象中的旅游目的地可能有漂亮 ...

  2. Android | 教你如何用华为HMS MLKit 图像分割 SDK开发一个证件照DIY小程序

    Android | 教你如何用华为HMS MLKit 图像分割 SDK开发一个证件照DIY小程序 引子   上期给大家介绍了如何使用如何用华为HMS MLKit SDK 三十分钟在安卓上开发一个微笑抓 ...

  3. 快速入门PaddleOCR,并试用其开发一个搜题小工具

    介绍 PaddleOCR 是一个基于百度飞桨的OCR工具库,包含总模型仅8.6M的超轻量级中文OCR,单模型支持中英文数字组合识别.竖排文本识别.长文本识别.同时支持多种文本检测.文本识别的训练算法. ...

  4. 用Java开发一个本地服务管理软件

    一.最终界面先贴上最终效果图,图1为初始化界面,图二为点击启动/停止之后的中间过渡状态,图三为启动成功后弹出的提示框 把动态gif图片嵌入到jpg背景图中?用Adobe ImageReady即可办到 ...

  5. 基于SOUI开发一个简单的小工具

    基于DriectUI有很多库,比如 Duilib (免费) soui (免费) DuiVision (免费) 炫彩 (界面库免费,UI设计器付费,不提供源码) skinui (免费使用,但不开放源码, ...

  6. 「1.0」一个人开发一个App,小程序从0到1,起航了

    古有,秦.齐.楚.赵.魏.韩.燕七国争雄:今有,微信.QQ.百度.支付宝.钉钉.头条.抖音七台争霸.古有,白起.李牧.王翦.孙膑.庞涓.赵奢.廉颇驰骋疆场:今有程序员1,程序员2,程序员3…编写代码. ...

  7. 「2.0」一个人开发一个App,小程序从0到1,文件剖析

    不知你是不是见到“文件剖析”这4个大字,才点进来看一看的?如果真是的话,那我可以坦诚.真心.负责任地告诉你:你上当了,你上了贼船啦,如果你现在想跳的话,还来得及,反正茫茫大海中,鲨鱼正缺搞程序的人.说 ...

  8. [3.0] 一个人开发一个App,小程序从0到1,删减添加

    在这个黄道吉日,咱们将要干一件,惊天地泣鬼神,妇孺皆知的大事,那就是删掉微信开发工具自动生成的源代码. 删掉pages下的index.logs目录,啥都不留: 删掉utils下的util.js,只流空 ...

  9. Python中如何开发一个注册接口小实例

    import flask from flask import request #想获取到请求参数的话,就得用这个 server = flask.Flask(__name__) #吧这个python文件 ...

  10. 「4.0」一个人开发一个App,小程序从0到1,布局

    一提到布局这个词,我总是索索发抖,不是因为天冷,而是因为布局的目标实在太宏大.古代想雄霸天下的王,就喜欢布局这个,布局那个,结果硬生生把自己的国家给布局没了.至于是哪个君王,我倒可以非常认真,非常坦诚 ...

随机推荐

  1. nrm工具

    nrm 工具 nrm(npm registry manager)是npm镜像源管理工具.可快速帮助查看.切换.管理npm镜像源. 安装 npm install -g nrm 查看 nrm ls 切换 ...

  2. docker-run-failed

    Phenomenon overlay2 not such file or directory. overlay2 not such file or directory. network not suc ...

  3. C#.NET 国密SM2 加密解密 与JAVA互通 ver:20230805

    C#.NET 国密SM2 加密解密 与JAVA互通 ver:20230805 .NET 环境:.NET6 控制台程序(.net core). JAVA 环境:JAVA8,带maven 的JAVA控制台 ...

  4. 1. 通俗易懂的Redis基础

    通俗易懂的Redis基础教程(基于CentOS 7) 目录 通俗易懂的Redis基础教程(基于CentOS 7) 1 Redis是什么 1.1 NoSQL概念 1.2 NoSQL与SQL比较 1.3 ...

  5. 抢先体验!超强的 Anchor Positioning 锚点定位

    本文,将向大家介绍 CSS 规范中,最新的 Anchor Positioning,翻译为锚点定位. Anchor Position 的出现,极大的丰富了 CSS 的能力,虽然语法稍显复杂,但是有了它, ...

  6. python机器学习经典算法代码示例及思维导图(数学建模必备)

    最近几天学习了机器学习经典算法,通过此次学习入门了机器学习,并将经典算法的代码实现并记录下来,方便后续查找与使用. 这次记录主要分为两部分:第一部分是机器学习思维导图,以框架的形式描述机器学习开发流程 ...

  7. [ABC140E] Second Sum

    2023-02-13 题目 题目传送门 翻译 翻译 难度&重要性(1~10):4 题目来源 AtCoder 题目算法 双向链表 解题思路 \(1.\) 当我们用从小到大的顺序来求解时,把原来求 ...

  8. java与es8实战之五:SpringBoot应用中操作es8(带安全检查:https、账号密码、API Key)

    欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 本篇是<java与es8实战>系 ...

  9. 如何使用io_uring构建快速响应的I/O密集型应用?

    本文分享自华为云社区<如何使用io_uring构建快速响应的I/O密集型应用>,作者: Lion Long . 当涉及构建快速响应的I/O密集型应用时,io_uring技术展现出了其卓越的 ...

  10. Web服务器部署上线的踩坑流程回顾与知新

    5月份时曾部署上线了C++的Web服务器,温故而知新,本篇文章梳理总结一下部署流程知识: 最初的解决方案:https://blog.csdn.net/BinBinCome/article/detail ...