记账软件(包括前后端完整的代码)

记账软件

一款简单的记账软件,包括后端代码和前端代码,后端是基于SpringBoot开发,前端基于uni-app。

整个软件功能很简单,数据库表就4张。麻雀虽小,但五脏俱全,适合在校大学生或者刚入门java后端开发的程序员学习。

前端代码:https://github.com/tigerleeli/money-keep-app

后端代码:https://github.com/tigerleeli/money-keep

再次强调 代码很简单,功能很简单,仅仅是为了刚入坑的小白准备的。
个人觉得如果后续有时间把功能界面完善一下也不比市场上那些收费的记账软件差。

原理都很简单。

相关功能

就是记账软件,记录每一笔支出和收入、支出和收入可以分类,比如吃饭、学习、工资等,
然后可以创建账户,记账的时候可以选择这一笔记录在哪个账户下。

  • 登录 注册
  • 记账
  • 分类管理
  • 账户管理
  • 个人管理
  • 统计相关

界面

在这里插入图片描述

相关技术

后端:

  • SpringBoot
  • Mybatis Plus
  • hutool
  • jjwt

前端:

  • uni-app 地址:https://uniapp.dcloud.net.cn/
  • 需要一点vue知识
  • ui用了color ui 地址:https://www.yuque.com/swing-xcgis/hytn5l/qgsd7s

数据库语句

用mysql或者mariadb(mysql同一个作者)。建议用mariadb,下载安装简单。mariadb下载地址:https://mariadb.org/

然后创建数据库,名称为money_keep,编码为utf8mb4,排序规则utf8mb4_general_ci(其它的也可以),然后执行如下建表sql。

-- 创建用户表
CREATE TABLE user
(
    `id`          bigint          NOT NULL AUTO_INCREMENT,
    `username`    varchar(50)  NOT NULL COMMENT '用户名',
    `password`    varchar(200) NOT NULL COMMENT '密码',
    `create_time` datetime     NOT NULL COMMENT '创建时间',
    `update_time` datetime     NOT NULL COMMENT '更新时间',
    `is_deleted`  int          NOT NULL DEFAULT 0 COMMENT '逻辑删除,0:未删除,1:已删除',
    PRIMARY KEY (`id`)
);

-- 创建账户表
CREATE TABLE account
(
    `id`          bigint            NOT NULL AUTO_INCREMENT,
    `user_id`     bigint            NOT NULL COMMENT '用户ID',
    `name`        varchar(50)    NOT NULL COMMENT '账户名称',
    `balance`     decimal(10, 2) NOT NULL DEFAULT 0 COMMENT '账户余额',
    `create_time` datetime       NOT NULL COMMENT '创建时间',
    `update_time` datetime       NOT NULL COMMENT '更新时间',
    `is_deleted`  int            NOT NULL DEFAULT 0 COMMENT '逻辑删除,0:未删除,1:已删除',
    PRIMARY KEY (`id`),
    KEY           `idx_user_id` (`user_id`) USING BTREE
);

-- 创建分类表
CREATE TABLE category
(
    `id`          bigint         NOT NULL AUTO_INCREMENT,
    `user_id`     bigint         NOT NULL COMMENT '用户ID',
    `name`        varchar(50) NOT NULL COMMENT '分类名称',
    `type`        int         NOT NULL COMMENT '类型,1:支出,2:收入',
    `create_time` datetime    NOT NULL COMMENT '创建时间',
    `update_time` datetime    NOT NULL COMMENT '更新时间',
    `is_deleted`  int         NOT NULL DEFAULT 0 COMMENT '逻辑删除,0:未删除,1:已删除',
    PRIMARY KEY (`id`),
    KEY           `idx_user_id` (`user_id`) USING BTREE
);

-- 创建记录表
CREATE TABLE record
(
    `id`          bigint            NOT NULL AUTO_INCREMENT,
    `user_id`     bigint            NOT NULL COMMENT '用户ID',
    `category_id` bigint            NOT NULL COMMENT '分类ID',
    `account_id`  bigint            NOT NULL COMMENT '账户ID',
    `amount`      decimal(10, 2) NOT NULL COMMENT '金额',
    `type`        int            NOT NULL COMMENT '类型,1:支出,2:收入',
    `remark`      varchar(200)   DEFAULT NULL COMMENT '备注',
    `create_time` datetime       NOT NULL COMMENT '创建时间',
    `update_time` datetime       NOT NULL COMMENT '更新时间',
    `is_deleted`  int            NOT NULL DEFAULT 0 COMMENT '逻辑删除,0:未删除,1:已删除',
    PRIMARY KEY (`id`),
    KEY           `idx_user_id` (`user_id`) USING BTREE,
    KEY           `idx_category_id` (`category_id`) USING BTREE,
    KEY           `idx_account_id` (`account_id`) USING BTREE
);

导入项目

前端代码用 HBuilderX 打开 下载地址:https://dcloud.io/hbuilderx.html

后端代码用 Idea 打开 下载地址:https://www.jetbrains.com/zh-cn/idea/

后端相关配置

后端代码修改相关配置:src\main\resources\application.properties

主要是:启动端口,数据库名称、用户名、密码

spring.application.name=money-keep
server.port=8888
# 数据库配置
spring.datasource.url=jdbc:mysql://localhost:3306/money_keep?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&useSSL=false
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

前端相关配置

路径: \util\constant.js

// #ifdef APP-PLUS
export const remoteUrl = 'http://192.168.1.1:8888';
// #endif

// #ifdef H5 || MP-WEIXIN
export const remoteUrl = '/api';
// #endif
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
背景 最开始记账的时候使用的某著名记账应用,软件本身也算中规中矩,后来一方面因为卖用户信息的传闻闹得沸沸扬扬,一方面觉得输入太慢,也远不如 Excel 灵活,于是改用 Excel。 Excel 的好处就比较多了,输入快捷,统计方便,扩展灵活。但因为当时记得是简单的流水账,虽然可以分类统计开销之类,但各种账户之间的情况一团乱麻,最近接触到复式记账法,打算尝试下,而支持复式记账软件可供选择的就不多了。 GnuCash 免费开源、支持 Windows、支持复式记账,相比 Excel,麻烦的就是需要记录的东西比较多(其实 Excel 也可以复式记账,不过功能实现上相对麻烦,不如专业软件省心) ,好处是你可以精确知道自己有多少钱了(或者,钱在哪了?或者,有没有钱了?或者,欠多少钱了?) 目前使用的是 GnuCash 2.6.18 版本(中文界面)。 复式记账概念 对于普通用户来说,GnuCash 涉及到大量财务方面的专业词汇,本身的汉化也不全,上手可能略有麻烦,建议使用之前简单了解一下复式记账法。 (以下说法仅供参考)因为复式记账是以公司为主体的,所以有些概念套到个人、家庭账目上会很别扭,像借记、贷记的说法也比较绕,开始可以略过,基本上了解「一切皆科目,数字在科目中流动」即可。具体来说,任何一笔账目,都会至少对应两个科目——点个外卖,「支出」会变化,如果信用卡付账,「负债」会变化,如果现金付账,「资产」会变化。至于左列、右列、加还是减这些也可以等具体记账时实践。此外的两大科目,「收入」很好理解,发工资了,「收入」和「资产」都会变化;「权益」这个概念因为也是主要针对公司的(谁出了多少本钱?),个人使用的时候,可以简单理解为最开始记账的时刻各个账户(科目)有多少钱(「所有者权益」-「期初余额」) 软件的使用 科目设置 装好软件后会首先要求设置科目层次(不清楚设置的话一路前进即可),因为后面要提到的快速补全不支持中文的问题,可以先选择「通用科目」,之后根据实际情况修改成英文或拼音,不同科目大类的设定多有不同,不熟悉复式记账的最好直接修改「通用科目」中特定或类似的科目。科目大类一般为默认的「权益」、「资产」、「负债」、「收入」、「支出」。 账目不对的时候系统会自动生成「不平衡的」科目,这是因为复式记账任何账目至少涉及两大科目而实际录入的账目不平的关系,改好账目后「不平衡的」科目金额会归零(「孤立的」科目情况类似) 存储格式 GnuCash 提供了四种存储格式,xml 格式有定期的数据备份(sqlite3 似乎没有),数据库放在云同步软件(Dropbox 或者坚果云)中就可以轻松实现多终端同步使用了。 快速录入 科目快速补全(Quickfill) 对中文用户来说有点尴尬,中文版默认创建中文科目,而该功能仅支持英文(不包括数字),所以为了使用该功能,建议使用英文(或拼音)命名所有科目。例如 Assets:Cash(ZiChan:XianJin) 可以在任意科目类单元格里使用 A:C (Z:X)快速补全(中间的冒号可以在设置「编辑-首选项-科目-分隔字符」中修改为其他符号,如填入 slash 可修改为 /) 注意,「自动提升列表」(功能编辑-首选项-账簿-动作)和科目快速补全功能有点冲突,可以关闭该功能(或者使用每次打冒号之前按下 Esc 键关闭提示列表,再用子科目的首字母补全)。 日期快速切换 在日期类单元格,可以使用 - = 切换至前一天和后一天 _ + 切换至前一周和后一周 m h 切换至本月的第一天和最后一天 y r 切换至本年的第一天和最后一天 t 切换至今天 金额简单计算 作为一款记账软件,GnuCash 在金额类单元格里提供了简单的计算功能,例如可以直接输入 30*2 这类表达式(不需要输入 = 号) 交易记忆补全 在描述单元格输入之前输入过的内容时,会出现自动补全提示,TAB 执行补全会根据匹配历史交易自动补全整个交易(包括相关科目和金额),这个功能极大的减轻了频繁发生的日常开支记账的工作量。 账簿模式 GnuCash 提供了「基本分类账」、「自动拆分分类账」和「交易日记账」三种账簿模式(「查看」菜单),新手建议一般情况下使用「基本分类账」模式方便账目录入,需要拆分交易的时候切换到「交易日记账」模式方便分割交易。另外可以通过 工具-总分类账 菜单调出「总分类账」页面,熟练的话直接在该页面记账更方便(不需要打开或者选择科目页面)。 拆分交易 因为关系到交易涉及各科目的准确记录,拆分交易这种操作就很有必要了(购买记录根据物品拆分,支出记录根据付款方式拆分等)。Gnucash 的拆分交易操作刚接触有点绕,新手建议切换至「交易日记账」模式中操作。 具体操作(根据物品拆分的情况),(「交易日记账」下),每笔交易在选中状态时至少包括四行内容: 第一行为交易描述,可以在描述单元格中填入交易梗概(因为在其他模式中无法直接看到具体分割条目的备注,所以梗概建议有一定信息量方便查阅) (之后 TAB 转入)第二行开始记录具体分割条目,首先记录资金去向,依次填入(可通过 TAB 切换)备注(物品名)、科目(消费类别)、资金收入(物品价格)、资金支出(应为空)。(之后 TAB 转入)第三行重复,直至分项物品记录完毕。 (之后 TAB 转入)最后一行记录资金来源,依次填入备注(可为空)、科目(支出账户)、资金收入(应为空)、资金支出(支出总金额),其中资金支出一栏已由系统自动计算,可与实际支出金额对照校验。 对账 对于个人用户来说,涉及存在清晰账单(银行卡、支付宝之类)的科目,对账功能比较好用。下面以具体操作说明: 选择特定科目,右键 - 对账,选择日期(如信用卡的账单日期),期末余额(信用卡的账单金额)- 确定,对账窗口会列出所有对账期间的收入和支出明细,分别全选(Crtl + A,空格),账目无误的话右下角的差额会为 0,否则表示账目与实际不符,需要手动修正(补充)具体账目或者通过「面板菜单栏-余额」自动添加条目修正,修正无误后点击「选中项对账」即可。(对账操作后,对过账的条目的第五列内容会由「未」变为「对」) 修改界面语言 在 \\gnucash\\etc\\gnucash\\environment 任意位置中添加 链接:https://www.jianshu.com/p/d04231e2c76f
很抱歉,我是一名语言模型,无法提供完整的源代码。但是,我可以给你一些指导和提示。 首先,你需要创建一个 Android 项目,并添加必要的依赖项。其中,你需要使用 RecyclerView 控件来显示所有的记账条目。另外,你还需要使用 Android 本地数据库来保存记账的结果。 接下来,你需要实现记账软件的基本功能,包括: 1. 记录每笔支出或收入的金额、日期和备注信息。 2. 显示所有的记账条目,并按照日期排序。 3. 支持编辑和删除记账条目。 在实现这些功能时,你需要使用 RecyclerView 控件来显示所有的记账条目,并使用 Android 本地数据库来保存记账的结果。具体来说,你可以使用 SQLite 数据库来保存数据,并使用 Content Provider 来管理数据库中的数据。 在实现记账软件的过程中,你还需要注意一些细节问题,比如: 1. 如何使用 RecyclerView 控件来显示所有的记账条目,并按照日期排序。 2. 如何使用 Android 本地数据库来保存记账的结果。 3. 如何处理用户对记账条目的编辑和删除操作。 4. 如何处理用户输入的金额和日期信息,以确保它们的格式正确。 最后,为了增强用户体验,你可以添加一些额外的功能,比如数据统计、数据备份和恢复等。此外,你还可以使用 Material Design 风格来设计记账软件的界面,以使其更加美观和易用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小虎哥的技术博客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值