Files
count_attendance/README.md
2025-12-03 09:56:53 +08:00

106 lines
4.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 考勤统计助手 (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](https://tauri.app/) (构建跨平台桌面应用)
* **后端 (Rust)**:
* `calamine`: 高效读取 Excel 文件。
* `rust_xlsxwriter`: 生成带有复杂样式和公式的 Excel 文件。
* `serde`: 数据序列化与反序列化。
* `chrono`: 日期和时间处理。
* `dirs`: 跨平台路径处理(识别桌面路径)。
* **前端**:
* HTML5 / CSS3
* Vanilla JavaScript (原生 JS无繁重框架依赖)
## 开发环境准备
在开始之前,请确保您的开发环境已安装以下工具:
1. **Rust**: [安装 Rust](https://www.rust-lang.org/tools/install)
2. **Node.js**: [安装 Node.js](https://nodejs.org/) (建议 LTS 版本)
3. **系统依赖**:
* **macOS**: 需要安装 Xcode Command Line Tools (`xcode-select --install`)。
* **Windows**: 需要安装 [Microsoft Visual Studio C++ 生成工具](https://visualstudio.microsoft.com/visual-cpp-build-tools/)。
## 跨平台支持
本项目代码完全**跨平台**,可以在 **Windows**、**macOS** 和 **Linux** 上编译运行。
* **Windows 用户注意**
* Tauri 依赖 Webview2Windows 10/11 通常已内置)。
* 建议直接在 Windows 系统上拉取代码并运行 `npm run tauri build` 进行打包,生成的 `.exe` 文件即可直接使用。
* 输出文件逻辑与 macOS 一致:如果 `.exe` 放在桌面上运行,生成的 Excel 也会在桌面;否则在同级目录。
## 安装与运行
1. **克隆项目/进入目录**
```bash
cd count_attendance
```
2. **安装前端依赖**
```bash
npm install
```
3. **启动开发模式**
此命令会同时启动前端服务和 Rust 后端,并打开应用窗口。
```bash
npm run tauri dev
```
## 打包与发布
要生成可分发的应用程序(如 macOS 的 `.app` 或 `.dmg`),请运行:
```bash
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 # 项目说明文档
```