2025-12-02 17:38:59 +08:00
2025-12-03 09:53:10 +08:00
2025-12-03 11:07:32 +08:00
2025-12-02 17:38:59 +08:00
2025-12-02 15:51:21 +08:00
2025-12-02 17:38:59 +08:00
2025-12-02 17:38:59 +08:00
2025-12-03 09:56:53 +08:00
2025-12-03 11:07:32 +08:00
2025-12-02 17:38:59 +08:00
2025-12-03 11:07:32 +08:00

考勤统计助手 (Attendance Counter)

这是一个基于 Rust + Tauri 开发的桌面应用程序,用于自动化处理学生考勤数据并生成月度费用报表。

核心功能

  1. Excel 数据读取

    • 支持导入 .xlsx.xls 格式的考勤表。
    • 自动识别表头中的日期列(支持 Excel 序列号日期格式)。
    • 解析学生基本信息(入学年份、年级、班级、姓名)。
  2. 智能数据处理

    • 考勤统计:自动统计每个学生每月的出勤次数(输入表中标记为 1 即为出勤)。
    • 费用计算
      • 思维班(班级名称包含"思维"):单价 30元/次
      • 其他班级:单价 24元/次
    • 月度汇总:自动按月份聚合数据,生成每月的次数和费用小计。
  3. 报表生成

    • 生成格式化的 Excel (.xlsx) 报表。
    • 样式还原:完美复刻目标模板的视觉风格(宋体、蓝色表头、边框、居中对齐)。
    • 自动公式:生成的表格包含 Excel 公式(=PRODUCT(...)=SUM(...)),方便后续手动修改数据时自动更新合计。
    • 智能保存
      • 默认保存在应用同级目录。
      • 若从桌面快捷方式启动,则自动保存到桌面。

技术栈

本项目采用现代化的 Tauri 2.0 框架构建,结合了 Rust 的高性能和 Web 前端的灵活性。

  • 核心框架: Tauri 2.x (构建跨平台桌面应用)
  • 后端 (Rust):
    • calamine: 高效读取 Excel 文件。
    • rust_xlsxwriter: 生成带有复杂样式和公式的 Excel 文件。
    • serde: 数据序列化与反序列化。
    • chrono: 日期和时间处理。
    • dirs: 跨平台路径处理(识别桌面路径)。
  • 前端:
    • HTML5 / CSS3
    • Vanilla JavaScript (原生 JS无繁重框架依赖)

开发环境准备

在开始之前,请确保您的开发环境已安装以下工具:

  1. Rust: 安装 Rust
  2. Node.js: 安装 Node.js (建议 LTS 版本)
  3. 系统依赖:

跨平台支持

本项目代码完全跨平台,可以在 WindowsmacOSLinux 上编译运行。

  • Windows 用户注意
    • Tauri 依赖 Webview2Windows 10/11 通常已内置)。
    • 建议直接在 Windows 系统上拉取代码并运行 npm run tauri build 进行打包,生成的 .exe 文件即可直接使用。
    • 输出文件逻辑与 macOS 一致:如果 .exe 放在桌面上运行,生成的 Excel 也会在桌面;否则在同级目录。

安装与运行

  1. 克隆项目/进入目录

    cd count_attendance
    
  2. 安装前端依赖

    npm install
    
  3. 启动开发模式 此命令会同时启动前端服务和 Rust 后端,并打开应用窗口。

    npm run tauri dev
    

打包与发布

要生成可分发的应用程序(如 macOS 的 .app.dmg),请运行:

npm run tauri build

打包完成后,安装包通常位于: src-tauri/target/release/bundle/macos/ (macOS)

项目结构

count_attendance/
├── src/                 # 前端源代码 (HTML, CSS, JS)
├── src-tauri/          # Rust 后端源代码
│   ├── src/
│   │   ├── lib.rs           # Tauri 命令与模块入口
│   │   ├── excel_reader.rs  # Excel 读取逻辑
│   │   ├── data_processor.rs# 数据处理与计算逻辑
│   │   └── excel_writer.rs  # Excel 生成与样式逻辑
│   ├── Cargo.toml           # Rust 依赖配置
│   └── tauri.conf.json      # Tauri 项目配置
├── package.json        # 前端依赖配置
└── README.md           # 项目说明文档
Description
No description provided
Readme 499 KiB
Languages
Rust 83.3%
JavaScript 7.3%
CSS 6.4%
HTML 3%