一、项目介绍
记账消费 是一款基于 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 | |
expenses | |
categories | |
deleted_expenses | |
user_themes | |
feedback | |
invite_codes | |
verify_codes | |
captcha_sessions | |
password_resets | |
login_logs | |
guest_log | |
admin_config |
三、项目主要技术框架
后端技术
前端技术
--var)实现多主题切换 | |
PWA 技术
安全技术
strip_tags、preg_replace、mb_substr 多层过滤 | |
四、项目主要功能
用户端功能
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. 访客统计
总访客数、今日访客、本周访客
五、项目安装和部署
环境要求
部署步骤
第一步:上传源码
将项目所有文件上传到 Web 服务器的网站根目录(如 Apache 的 htdocs 或 www 目录,Nginx 的 root 目录)。
第二步:确保目录可写
确保项目所在目录对 Web 服务器进程可写(安装向导需要在此生成 config.php 文件)。
第三步:访问安装向导
在浏览器中访问:
http://你的域名或IP/install.php
安装向导分 4 个步骤:
环境检测:自动检测 PHP 版本、扩展、目录权限是否满足要求 数据库配置:填写 MySQL 主机地址、用户名、密码、数据库名(不存在会自动创建) 执行安装:自动创建 12 张数据表、写入配置文件、创建管理员账号 安装完成:显示管理员账号信息
第四步:登录使用
安装完成后:
管理员账号: admin初始密码: admin登录地址: http://你的域名/login.php首页地址: http://你的域名/index.php管理后台: http://你的域名/admin.php
安全提示:首次登录后请立即修改默认管理员密码。
手动配置(可选)
如果无法使用安装向导,可手动操作:
复制 config.php.tpl为 config.php在 config.php开头填入数据库连接信息:<?php
$DB_HOST = 'localhost';
$DB_USER = 'root';
$DB_PASS = '你的密码';
$DB_NAME = 'xiaowu';手动创建数据库并执行 install.php中的建表 SQL手动插入管理员记录(密码使用 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 或通过面板设置) | |
config.php 文件后重新访问 install.php |
夸克:https://pan.quark.cn/s/4a9fb05cecb0
百度:https://pan.baidu.com/s/1gHXdvY_q8Z7z9e5vwoNLuA?pwd=8888