×

分享一款个人记账系统/消费记账管理系统

独孤求败 独孤求败 发表于2026-09-30 11:08:01 浏览41 评论0

抢沙发发表评论

一、项目介绍

记账消费 是一款基于 PHP + MySQL 开发的轻量级个人消费记账系统,采用移动端优先的响应式设计,并具备完整的 PWA(渐进式 Web 应用)能力,可像原生 App 一样安装到手机桌面、支持离线缓存。

系统面向个人用户,覆盖从「记一笔」到「统计分析」的完整记账流程,同时提供功能完善的管理后台,适合个人自用、小型团队共享或作为源码学习/二次开发的基础。

核心亮点:

  • ‎极简记账:首页即记账,支持支出/收入双类型、快捷金额、支付方式、备注
  • ‎数据可视化:月度趋势柱状图、分类占比饼图、日历热力视图
  • ‎多主题:iOS 浅色 / iOS 深色 / 跟随系统 / 漫画风格,支持全局锁定
  • ‎预算管理:设置月度预算,实时展示预算剩余与进度条
  • ‎回收站:删除的记录可定时恢复,支持自定义保留天数
  • ‎安全体系:图片验证码、邮箱验证码、邀请码注册、登录日志、账号封禁
  • ‎管理后台:用户管理、数据统计、系统配置、反馈处理、邀请码、公告等一站式管理
  • ‎PWA 支持:manifest.json + Service Worker,可离线访问、桌面安装
图片

二、项目结构目录

项目为单层扁平结构,所有源码文件位于根目录下,无子目录依赖,部署简单。

JP7-个人记账系统源码+消费记账管理系统/
│
├── index.php              # 首页 - 记账主界面(记支出/收入、记录列表、今日&本月统计)
├── profile.php            # 个人中心 - 用户信息、设置入口、预算、回收站
├── admin.php              # 管理后台 - 仪表盘、用户管理、系统配置等(仅管理员)
├── api.php                # API 路由入口 - 所有后端接口统一通过 ?action= 分发
├── install.php            # 安装向导 - 环境检测、数据库配置、建表、初始化管理员
├── init.php               # 系统初始化检查脚本(仅管理员 token 可访问)
├── config_js.php          # 前端运行时配置(输出 window.__APP_CONFIG__)
├── config.php.tpl         # 配置文件模板(安装时生成 config.php)
│
├── login.php              # 登录页
├── register.php           # 注册页(支持邀请码/邮箱验证码注册)
├── forgot.php             # 忘记密码 - 发送重置邮件
├── reset.php              # 重置密码 - 通过邮件 token 重置
├── account_security.php   # 账号安全设置
├── email.php              # 邮箱绑定/解绑
│
├── chart.php              # 消费统计 - 月度趋势柱状图 + 分类饼图
├── calendar.php           # 日历视图 - 按日查看消费汇总与明细
├── categories.php         # 分类管理 - 新增/删除自定义分类(颜色+图标)
├── theme.php              # 主题设置 - 浅色/深色/系统/漫画风格切换
├── toggles.php            # 功能开关设置页
│
├── feedback.php           # 用户反馈提交页
├── admin_feedback.php     # 管理员反馈处理页
├── announcement.php       # 公告展示页
├── privacy.php            # 隐私政策页
├── icon.php               # 动态图标生成(按尺寸/遮罩输出 PNG)
│
├── style.css              # 全局样式表(~96KB,含浅色/深色/漫画主题变量)
├── script.js              # 全局 JavaScript(记账交互、列表加载、表单逻辑)
├── sw.js                  # Service Worker - 静态资源离线缓存
├── manifest.json          # PWA 清单(应用名、图标、启动配置)
│
├── 404.html               # 404 页面
├── icon.svg               # SVG 图标
├── favicon.ico            # 网站图标
├── favicon-16.png         # 16px 图标
├── apple-touch-icon.png   # Apple 触摸图标
├── icon-192.png           # 192px PWA 图标
├── icon-512.png           # 512px PWA 图标
│
├── package.json           # Node.js 包描述(可选,含 better-sqlite3 依赖)
├── package-lock.json      # 依赖锁文件
└── 项目介绍文档.md         # 本文档

数据库表结构

安装时自动创建以下 12 张数据表:

表名
说明
‎users
用户表(用户名、密码、角色、token、邮箱、头像等)
‎expenses
记账记录表(金额、项目、分类、类型、支付方式、备注)
‎categories
分类表(用户自定义分类,含颜色与图标)
‎deleted_expenses
回收站表(软删除记录,支持定时恢复)
‎user_themes
用户主题设置(主题、预算、分类开关)
‎feedback
用户反馈表(含管理员回复)
‎invite_codes
邀请码表(次数限制、过期时间)
‎verify_codes
邮箱验证码表
‎captcha_sessions
图片验证码会话表
‎password_resets
密码重置令牌表
‎login_logs
登录日志表(IP、UA)
‎guest_log
访客访问日志
‎admin_config
系统配置键值对表

三、项目主要技术框架

后端技术

技术
说明
‎PHP >= 7.0
服务端语言,面向过程 + PDO 面向对象混合风格
‎MySQL
关系型数据库,InnoDB 引擎,utf8mb4 字符集
‎PDO
数据库抽象层,全程使用预处理语句防 SQL 注入
‎原生 SMTP
手写 SMTP 协议(EHLO/AUTH LOGIN/DATA),无第三方邮件库依赖

前端技术

技术
说明
‎原生 HTML/CSS/JS
无前端框架(无 Vue/React/jQuery),纯原生开发
‎CSS 量
使用 CSS 自定义属性(‎--var)实现多主题切换
‎Canvas API
原生 Canvas 绘制饼图
‎SVG
图标与验证码使用 SVG 生成
‎Fetch API
前后端通过 Fetch + JSON 通信

PWA 技术

技术
说明
‎manifest.json
应用清单,支持 standalone 模式安装到桌面
‎Service Worker (sw.js)
静态资源离线缓存(css/js/图片/字体)
‎apple-mobile-web-app
iOS Safari 全屏模式与桌面图标支持

安全技术

技术
说明
‎password_hash / password_verify
PHP 原生密码哈希(bcrypt)
‎Token 认证
登录后生成 64 位 hex token,无状态会话
‎图片验证码
SVG 随机生成 4 位验证码,5 分钟有效
‎邮箱验证码
注册/绑定邮箱/重置密码均需验证码
‎邀请码
支持邀请码注册,可设置次数与过期
‎输入过滤
‎strip_tags、‎preg_replace、‎mb_substr 多层过滤
‎账号封禁
支持临时封禁(1/3/7/30天)与永久封禁

四、项目主要功能

用户端功能

1. 记账核心

  • ‎记支出 / 记收入:首页一键录入,支持双类型切换
  • ‎快捷金额:¥10 / ¥20 / ¥50 / ¥100 / ¥200 / ¥500 快捷按钮
  • ‎支付方式:现金 / 微信 / 支付宝 / 银行卡 / 其他
  • ‎备注:支持最多 500 字备注
  • ‎记录列表:按全部/今日/昨日筛选,分页加载,支持关键词搜索
  • ‎记录编辑:支持修改金额、分类、支付方式、备注、类型
  • ‎滑动删除:左滑显示删除按钮,带确认弹窗

2. 统计分析

  • ‎今日概览:今日支出、今日收入卡片
  • ‎本月汇总:本月支出、本月收入、预算剩余
  • ‎月度趋势:1/3/6/12 个月及全部范围柱状图
  • ‎分类占比:饼图展示各分类消费金额与百分比
  • ‎日历视图:按日汇总消费金额,点击查看当日明细

3. 预算管理

  • 设置月度预算金额
  • 预算进度条实时展示
  • 预算剩余金额显示

4. 分类管理

  • 自定义分类名称、颜色、图标
  • 预设 6 个默认分类(餐饮、交通、购物、娱乐、住房、其他)
  • 分类功能开关(可关闭分类功能)

5. 主题与个性化

  • 四种主题:iOS 浅色、iOS 深色、跟随系统、漫画风格
  • 管理员可全局锁定主题
  • 自定义头像(支持 QQ 邮箱头像同步)

6. 账号安全

  • 用户名 + 密码登录
  • 邮箱验证码注册
  • 邀请码注册
  • 忘记密码(邮箱重置链接)
  • 修改密码
  • 邮箱绑定 / 解绑 / 更换
  • 登录日志查看

7. 回收站

  • 删除的记录进入回收站
  • 支持恢复已删除记录
  • 自定义保留天数(到期自动清理)

8. 反馈系统

  • 用户提交反馈
  • 查看管理员回复
  • 反馈状态跟踪

9. 公告系统

  • 管理员发布站内公告
  • 区分游客公告与用户公告
  • 支持横幅/弹窗展示模式
  • 支持一次性/每次展示频率

管理后台功能

1. 数据仪表盘

  • 总用户数、总记录数、总金额
  • 今日记录数、今日金额、今日活跃用户
  • Top 用户排行(按记录数/金额)

2. 用户管理

  • 查看所有用户列表
  • 新增用户
  • 编辑用户信息(用户名、密码、昵称、邮箱)
  • 封禁/解封用户(1/3/7/30天、永久,带理由)
  • 强制下线(清除 token)
  • 查看用户登录日志
  • 查看用户记账明细
  • 查看用户统计(总记录、总支出、总收入、最后登录)
  • 触发用户密码重置邮件
  • 向用户发送邮件

3. 记录管理

  • 查看任意用户的记账记录
  • 按日期范围筛选
  • 删除用户记录
  • 回收站管理(查看/恢复已删除记录)

4. 邀请码管理

  • 生成邀请码(自定义前缀、次数、有效期)
  • 启用/禁用邀请码
  • 查看邀请码列表

5. 系统配置

  • ‎基础设置:站点名称、站点描述、ICP 备案号、Logo、Favicon
  • ‎注册控制:开启/关闭注册、邮箱验证注册、邀请码注册
  • ‎主题控制:全局主题、主题锁定、漫画主题
  • ‎公告管理:游客公告、用户公告(标题/内容/类型/频率)
  • ‎邮件配置:SMTP 主机/端口/加密/账号/密码/发件人,支持在线测试
  • ‎功能开关:访客模式、反馈功能、反馈每日上限
  • ‎数据保留:回收站保留天数

6. 反馈管理

  • 查看所有用户反馈
  • 回复反馈(邮件通知用户)
  • 更新反馈状态(已读/采纳/未采纳,邮件通知)
  • 未读反馈计数提醒

7. 访客统计

  • 总访客数、今日访客、本周访客

五、项目安装和部署

环境要求

组件
最低版本
必需
PHP
>= 7.0
是
MySQL
5.6+
是
PDO 扩展
-
是
pdo_mysql 扩展
-
是
OpenSSL 扩展
-
是
MBString 扩展
-
是
JSON 扩展
-
是
Web 服务器
Apache / Nginx
是

部署步骤

第一步:上传源码

将项目所有文件上传到 Web 服务器的网站根目录(如 Apache 的 htdocs 或 www 目录,Nginx 的 root 目录)。

第二步:确保目录可写

确保项目所在目录对 Web 服务器进程可写(安装向导需要在此生成 config.php 文件)。

第三步:访问安装向导

在浏览器中访问:

http://你的域名或IP/install.php

安装向导分 4 个步骤:

  1. ‎环境检测:自动检测 PHP 版本、扩展、目录权限是否满足要求
  2. ‎数据库配置:填写 MySQL 主机地址、用户名、密码、数据库名(不存在会自动创建)
  3. ‎执行安装:自动创建 12 张数据表、写入配置文件、创建管理员账号
  4. ‎安装完成:显示管理员账号信息

第四步:登录使用

安装完成后:

  • ‎管理员账号:‎admin
  • ‎初始密码:‎admin
  • 登录地址:‎http://你的域名/login.php
  • 首页地址:‎http://你的域名/index.php
  • 管理后台:‎http://你的域名/admin.php

安全提示:首次登录后请立即修改默认管理员密码。

手动配置(可选)

如果无法使用安装向导,可手动操作:

  1. 复制 ‎config.php.tpl 为 ‎config.php
  2. 在 ‎config.php 开头填入数据库连接信息:
    <?php
    $DB_HOST = 'localhost';
    $DB_USER = 'root';
    $DB_PASS = '你的密码';
    $DB_NAME = 'xiaowu';
  3. 手动创建数据库并执行 ‎install.php 中的建表 SQL
  4. 手动插入管理员记录(密码使用 ‎password_hash 哈希)

邮件配置(可选)

如需启用邮箱验证码、密码重置、反馈通知等功能,在管理后台 → 系统配置 → 邮件配置中填写:

  • SMTP 主机(如 ‎smtp.qq.com)
  • SMTP 端口(如 ‎465)
  • 是否加密(推荐开启)
  • SMTP 用户名(完整邮箱地址)
  • SMTP 密码/授权码
  • 发件人地址

配置完成后可点击「测试发送」验证 SMTP 连接。

Nginx 参考配置

server {
    listen 80;
    server_name your-domain.com;
    root /var/www/jizhang;
    index index.php;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

常见问题

问题
解决方案
安装提示目录不可写
给项目目录赋予写权限(‎chmod 755 或通过面板设置)
数据库连接失败
检查主机地址、账号密码、MySQL 是否启动
邮件发送失败
QQ 邮箱需开启 SMTP 服务并使用授权码(非登录密码)
验证码不显示
确认 PHP 已启用 GD 或允许 SVG 输出
已安装后重新安装
删除 ‎config.php 文件后重新访问 ‎install.php

这个项目源码获取方式

夸克:https://pan.quark.cn/s/4a9fb05cecb0
百度:https://pan.baidu.com/s/1gHXdvY_q8Z7z9e5vwoNLuA?pwd=8888

群贤毕至

访客