Files
admin 2d8c1ea8f9 chore: 批量新增各类工具脚本与配置文件
1. 新增音频录制、下载、上传相关脚本
2. 新增数据库操作、API调用工具
3. 新增Excel数据处理脚本
4. 新增弱密码检测脚本
2026-06-14 17:47:15 +08:00

89 lines
3.1 KiB
Python

import pandas as pd
import json
from datetime import datetime
# 读取Excel文件
file_path = r'e:\project\python\工具\智慧校园\本部\消费数据\2024学生.xlsx'
df = pd.read_excel(file_path)
print("=" * 80)
print("学生消费数据提取")
print("=" * 80)
# 1. 提取年级ID和班级ID(供用户查表)
grade_ids = sorted(df['gradeId'].unique().tolist())
class_ids = sorted(df['classId'].unique().tolist())
print(f"\n【年级ID列表】(共{len(grade_ids)}个):")
print(grade_ids)
print(f"\n【班级ID列表】(共{len(class_ids)}个):")
print(class_ids)
# 2. 提取学生消费信息
student_records = []
for _, row in df.iterrows():
record = {
'学号': str(row['stuNo']),
'姓名': row['stuName'],
'年级ID': row['gradeId'],
'班级ID': row['classId'],
'支付金额(元)': row['totalFee'] / 100, # 转换为元
'支付状态': '支付成功' if row['payState'] == 1 else '其他',
'创建时间': row['createTime'].strftime('%Y-%m-%d %H:%M:%S') if pd.notna(row['createTime']) else '',
'支付时间': row['payTime'].strftime('%Y-%m-%d %H:%M:%S') if pd.notna(row['payTime']) else '',
'物理卡号': str(row['serialNo']) if pd.notna(row['serialNo']) else '',
'teamId': row['teamId']
}
student_records.append(record)
# 3. 统计信息
print(f"\n【数据统计】")
print(f"总记录数: {len(student_records)}")
print(f"唯一学生数: {df['stuNo'].nunique()}")
print(f"总金额: {df['totalFee'].sum() / 100:.2f} 元")
# 4. 按年级统计
print(f"\n【按年级统计】")
grade_stats = df.groupby('gradeId').agg({
'stuNo': 'nunique',
'totalFee': 'sum'
}).reset_index()
grade_stats.columns = ['年级ID', '学生人数', '总金额(分)']
grade_stats['总金额(元)'] = grade_stats['总金额(分)'] / 100
print(grade_stats.to_string(index=False))
# 5. 按班级统计
print(f"\n【按班级统计】")
class_stats = df.groupby('classId').agg({
'stuNo': 'nunique',
'totalFee': 'sum'
}).reset_index()
class_stats.columns = ['班级ID', '学生人数', '总金额(分)']
class_stats['总金额(元)'] = class_stats['总金额(分)'] / 100
print(class_stats.to_string(index=False))
# 6. 保存详细记录到JSON
output_file = r'e:\project\python\工具\智慧校园\本部\消费数据\student_records.json'
with open(output_file, 'w', encoding='utf-8') as f:
json.dump(student_records, f, ensure_ascii=False, indent=2)
print(f"\n【输出文件】")
print(f"详细记录已保存到: {output_file}")
# 7. 保存ID映射表(等待用户补充年级和班级名称)
id_mapping = {
'grade_ids': grade_ids,
'class_ids': class_ids,
'note': '请查询数据库补充年级名称和班级名称'
}
id_mapping_file = r'e:\project\python\工具\智慧校园\本部\消费数据\id_mapping.json'
with open(id_mapping_file, 'w', encoding='utf-8') as f:
json.dump(id_mapping, f, ensure_ascii=False, indent=2)
print(f"ID映射表已保存到: {id_mapping_file}")
print("\n请查询数据库,告诉我以下ID对应的名称:")
print(f"年级ID: {grade_ids}")
print(f"班级ID: {class_ids}")