guoyu/generate_students.py
2025-12-03 18:58:36 +08:00

102 lines
3.3 KiB
Python
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.

import random
from datetime import datetime, timedelta
# 生成人员数据
def generate_data(count=50):
# 姓氏和名字
surnames = ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '']
names = ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '']
# 监区
prisons = ['一监区', '二监区', '三监区', '四监区', '五监区']
# 班级(使用指定的班级)
classes = ['中级班1班', '初级班1班', '高级班1班', '攻坚转换班1班', '攻坚转换班2班']
# 民族
ethnicities = ['汉族', '回族', '满族', '蒙古族', '藏族', '维吾尔族', '苗族', '彝族', '壮族', '布依族']
# 文化程度
educations = ['小学', '初中', '高中', '中专', '大专', '本科', '硕士']
# 罪名
crimes = ['盗窃罪', '诈骗罪', '抢劫罪', '故意伤害罪', '贩卖毒品罪', '交通肇事罪', '寻衅滋事罪', '聚众斗殴罪', '非法拘禁罪', '敲诈勒索罪']
data = []
for i in range(count):
# 信息编号从201开始
info_id = 201 + i
# 姓名
name = random.choice(surnames) + random.choice(names) + (random.choice(names) if random.random() > 0.6 else '')
# 监区
prison = random.choice(prisons)
# 班级
class_name = random.choice(classes)
# 性别
gender = ''
# 民族
ethnicity = random.choice(ethnicities)
# 文化程度
education = random.choice(educations)
# 罪名
crime = random.choice(crimes)
# 刑期 (月数)
sentence_months = random.choice([12, 18, 24, 36, 48, 60, 72, 84, 96, 120, 144, 180])
# 刑期起日
start_year = random.randint(2022, 2024)
start_month = random.randint(1, 12)
start_day = random.randint(1, 28)
start_date = f"{start_year}-{str(start_month).zfill(2)}-{str(start_day).zfill(2)}"
# 刑期止日
start_dt = datetime(start_year, start_month, start_day)
end_dt = start_dt + timedelta(days=sentence_months * 30)
end_date = end_dt.strftime("%Y-%m-%d")
# 入监时间
entry_date = start_date
# 状态
status = '在押'
data.append([
info_id, name, prison, class_name, gender, ethnicity, education, crime,
sentence_months, start_date, end_date, entry_date, status
])
return data
# 生成Excel文件
def save_to_excel(data, filename='prison_data.xlsx'):
from openpyxl import Workbook
headers = ['信息编号', '姓名', '监区', '班级', '性别', '民族', '文化程度', '罪名', '刑期', '刑期起日', '刑期止日', '入监时间', '状态']
wb = Workbook()
ws = wb.active
ws.title = '人员数据'
# 写入表头
ws.append(headers)
# 写入数据
for row in data:
ws.append(row)
wb.save(filename)
print(f'已生成 {len(data)} 条数据,保存到 {filename}')
if __name__ == '__main__':
data = generate_data(30)
save_to_excel(data, 'prison_data.xlsx')