软件环境

需求分析

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. [爬虫]1.2.2 CSS选择器

    CSS (Cascading Style Sheets) 是一种样式表语言,用于描述HTML元素的样式.CSS选择器是CSS规则的一部分,它决定了CSS规则应用于哪些元素.在网络爬虫的开发中,我们经常 ...

  2. Linux Crontab 使用单行命令需要注意使用命令的绝对路径

    crontab 中不支持||的写法,但是支持&&所以用 xxx ; [ $? -ne 0] && xxx的格式就没有问题. crontab 中环境变量与shell中不一 ...

  3. HTML超文本标记语言4

    框架标签...等等 1.框架 <frameset> 框架标签 cols="按列划分" rows="按行划分" 格式:rows="100,* ...

  4. GoRedisLock:Golang保障数据一致性的分布式锁解决方案

    在现代分布式系统中,多个节点之间共享资源是常见的需求.然而,并发访问共享资源可能导致数据不一致性和竞争条件.为了解决这些问题,我们需要引入分布式锁.GoRedisLock是一个出色的分布式锁库,它结合 ...

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

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

  6. 【Azure App Service】为部署在App Service上的PHP应用开启JIT编译器

    问题描述 在App Service for linux上创建一个PHP应用,通过 phpinfo() 查看PHP的扩展设置,发现JIT没有被开启, jit_buffer_size 大小为0. 那么,在 ...

  7. 推荐几款三维模型OBJ格式轻量化处理工具软件

    推荐几款三维模型OBJ格式轻量化处理工具软件 以下是几款常用的三维模型OBJ格式轻量化处理软件的介绍: 1.MeshLab: MeshLab是一款免费且强大的开源三维模型处理软件,支持多种文件格式,包 ...

  8. 聊聊HuggingFace Transformer

    概述 参见:聊聊HuggingFace 项目组件 一个完整的transformer模型主要包含三部分:Config.Tokenizer.Model. Config 用于配置模型的名称.最终输出的样式. ...

  9. dotnet SemanticKernel 入门 自定义变量和技能

    本文将告诉大家如何在 SemanticKernel 框架内定义自定义的变量和如何开发自定义的技能 本文属于 SemanticKernel 入门系列博客,更多博客内容请参阅我的 博客导航 自定义变量是一 ...

  10. Nomad 系列-安装

    系列文章 Nomad 系列文章 Nomad 简介 开新坑!近期算是把自己的家庭实验室环境初步搞好了,终于可以开始进入正题研究了. 首先开始的是 HashiCorp Nomad 系列,欢迎阅读. 关于 ...