106 lines
4.1 KiB
Markdown
106 lines
4.1 KiB
Markdown
# 考勤统计助手 (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 依赖 Webview2(Windows 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 # 项目说明文档
|
||
```
|