【办公类-110-03】20260822 “闵豆家园”开学信息处理(幼儿:归档、升班、转园、批量添加托班、小班幼儿账号Python,拆分班级幼儿转班改学号;教师:转院区)

一、背景需求

马上开学,我们使用的幼儿打卡系统闵豆家园发布信息更新通知——把数据发给他们,进行大班归档、小中班升班、托小班建班、托小班幼儿信息导入的批量操作。

根据以往经验,

1.托小班新生幼儿信息导入

提供的是批量导入托小幼儿信息的服务,但是要使用他们提供的一套幼儿数据Excel导入模版,里面有一定的输入格式限制,制作这个模版就要费时间

2.教师转园需要自行修改

不提供教师转园区的操作,还是要我自己根据人事名单来转。(安全隐私)

3.拆班幼儿数据无法分流

另外拆班的托1、托2、中6班的孩子就默认删除了,不可能精细化地帮我们把已有的名字,分到各个小班、大班

4.等待时间长

而且由于他们服务的单位很多,要排队等操作。不可能马上给我们学校操作。

综上所述,

这几年我都是自行更新,主要用uibot或Python进行归档、升班、托小班信息导入。教师转院等设置。

二、操作流程

由于少子化,幼儿人数锐减,班级数量锐减,教师人数也减少(教师退休,保育员辞职)因此这次我是“手动70%”+“Python30%”的比例进行“闵豆家园”班级和人员更新

(一)班级栏目更新(手机版闵豆家园)

这里手动,班级少(23个班级变19个班级),再花时间写代码不划算,还不如就手改

手机闵豆家园的班级栏目设置的操作手册

主要任务:大班归档、中小托升班改班级名字、新建小班托班栏目

 '''
 管理员账户登录手机
1、大班归档
 切换园区-总园
 班级管理-右上角三个点-班级信息-拉倒最下面大班-长按大1班-归档-确认-提交-归档后不可更改 确认归档吗(确认)-归档成功
  班级管理-右上角三个点-班级信息-拉倒最下面大班-长按大2班-归档-确认-提交-归档后不可更改 确认归档吗(确认)-归档成功
  六个大班全部方法归档
  效果:班级管理只剩下中班
2、中班升班大班
班级管理-右上角三个点-右上角全选-底部 批量升班-升班成功
效果,页面上还是显示中班,但实际年级已经变更为大班
更改班级名称
班级管理-右上角三个点-班级信息-中一班(下面小字已经是大一班)长按 中1班-右上角编辑-修改-中改成大-确定-确定-班级信息修改成功-(千万不要点底部的归档)左上角箭头返回
班级管理-右上角三个点-班级信息-中二班(下面小字已经是大二班)长按 中1班-右上角编辑-修改-中改成大-确定-确定-班级信息修改成功-(千万不要点底部的归档)左上角箭头返回
  六个中班全部方法改成大班
3、一分园小班 升班为中班
回到主页面,-切换园区-一分园
班级管理,里面有托班和小班
1.班级管理-右上角三个点-升班-全选-确认升级四个班级-升班成功
2.班级管理-三个点-班级信息-长按托1班-右上角编辑-修改-托 改成 小(由于托班都是拆班的,里面部分孩子会转入新的班级,所以文件名改成小1班拆班,不要和新建的小一班重名)-确定-班级信息修改成功-(千万不要点底部的归档)左上角箭头返回
  班级管理-三个点-班级信息-长按托2班-右上角编辑-修改-托 改成 小(由于托班都是拆班的,里面部分孩子会转入新的班级,所以文件名改成小2班拆班,不要和新建的小一班重名)-确定-班级信息修改成功-(千万不要点底部的归档)左上角箭头返回

  .班级管理-三个点-班级信息-长按小1班-右上角编辑-修改-小 改成 中-确定-班级信息修改成功-(千万不要点底部的归档)左上角箭头返回
  .班级管理-三个点-班级信息-长按小2班-右上角编辑-修改-小 改成 中-确定-班级信息修改成功-(千万不要点底部的归档)左上角箭头返回

3.把中1中2转入总园
班级管理-右上角三个点-班级转院-选中中1班-选总园按钮-设置班级名称-班级和25为幼儿转院成功-此时中1班没有了,只有中2班
班级管理-右上角三个点-班级转院-选中中2班-选总园按钮-设置班级名称(换成中班二班)-班级和25为幼儿转院成功-此时中班没有了

4、二分园小班,升为中班,转入总园
返回主页面-切换园区-二分园
班级管理-三个点-升班-全选-确认升级四个班级-升班成功
.班级管理-三个点-班级信息-长按小3班-右上角编辑-修改-小 改成 中-确定-班级信息修改成功-(千万不要点底部的归档)左上角箭头返回
同样方法修改另外三个小班变成中班

中3-中6转入总园
班级管理-右上角三个点-班级转院-选中中3班-选总园按钮-设置班级名称(改成中班三班)-班级和25为幼儿转院成功-此时中3班没有了,只有另外3个中班
 同样方法转另外三个中班

 5、一分园新的小班4、5,二分园新小班123,所以我把小1-5都放在二分园,(为了把原来托1托2班孩子转入新的小班)
 二分园主页面-班级管理-右上角三个点=创建班级=选择班级-选择老师(因为老师还没有转院区,所以暂时不绑定)-完成-创建班级成功
同样方式做五个班级的班级管理。

6、切入一分园,新建托班 一分园新托1托2,二分园新托3,统一放在一分园里制作。
返回二分园主页面,切换园区-一分园
班级管理-右上角三个点-创建班级-托班-托1班
同理制作托1 托2 托3

框架搭建完成。

由于托班是新的,名单也是新的,可以先把托班导入

 '''

班级名称都更新正确。一共19个班级,总部都是中大班,一分园暂时是3个托班、二分园暂时5个全部小班“空班无人”+2个“小班拆分”。

(二)托小幼儿建档(网页闵豆家园)

Python读取“班级信息表”内托班、小班信息。写入

改的又快又好

但是名单是托1班,网页上要求托一班

1.获取网页各个项目的坐标

import pyautogui
import time
import pygetwindow as gw

# 1. 找到VSCode窗口(匹配标题含 Visual Studio Code)
vscode_wins = gw.getWindowsWithTitle("Visual Studio Code")
if not vscode_wins:
    print("未找到VSCode窗口,请先打开VSCode再运行!")
else:
    win = vscode_wins[0]
    # 自动最小化VSCode
    win.minimize()
    print("VSCode已自动最小化,你有5秒时间移动鼠标到目标位置")
    time.sleep(5)  # 等待5秒给你放鼠标

    # 获取当前鼠标坐标并打印
    x, y = pyautogui.position()
    # print(f"\n已捕获鼠标坐标:X = {x} , Y = {y}")
    print(f"\n已捕获鼠标坐标:{x},{y}")
    # 934,354


    # 自动最大化VSCode
    win.maximize()
    print("VSCode已自动最大化,程序结束")

2.新建托班幼儿名单的程序

(1)打开校园管理-班级管理页面,自动输入班级名称“托一班”筛选,

(2)就只有一条“托一班”,选择“学生管理”

(3)一个学生也没有,所以添加学生

(4)依次添加姓名、选择性别(等于男,点左边的坐标,等于女,点右边的坐标)、添加学号

(5)确定后返回主页-班级管理

就这样循环输入“班级-筛选-学生管理-添加学生-姓名-性别-学号-确定-班级管理




'''
孩子通-3个托班新幼儿上传
孩子通新版地址:https://passport.haizitong.com/home/login?appid=118&return_url=https%3A%2F%2Fyun.haizitong.com%2Fhome%2Fsso
管理员账号:0211XXXXX 22XXXX
谷歌浏览器,必须100%
页面放在家园互动-校园管理-班级管理-

为防止孩子通变慢,一个班级一个班级上传。完成后关闭园园通,再次开启
豆包,阿夏
20260821
'''


import openpyxl
import pyautogui
import time
import pyperclip
import pygetwindow as gw

# 1. 找到VSCode窗口(匹配标题含 Visual Studio Code)
vscode_wins = gw.getWindowsWithTitle("Visual Studio Code")
if not vscode_wins:
    print("未找到VSCode窗口,请先打开VSCode再运行!")
else:
    win = vscode_wins[0]
    # 自动最小化VSCode
    win.minimize()
    print("VSCode已自动最小化,你有5秒时间移动鼠标到目标位置")
    time.sleep(5)  # 等待5秒给你放鼠标

import random

# 随机休眠:1~3秒,带小数,模拟真人操作
def rand_sleep():
    t = random.uniform(2, 3)
    time.sleep(t)


from openpyxl import load_workbook

def num_to_chinese(s):
    """把字符串里阿拉伯数字转为中文 1→一,2→二 ...9→九"""
    digit_map = {"1":"一","2":"二","3":"三","4":"四","5":"五",
                 "6":"六","7":"七","8":"八","9":"九"}
    for k,v in digit_map.items():
        s = s.replace(k, v)
    return s


file_path = r"D:\Python最终内容\20260902孩子通新生信息上传\20260805班级信息表.xlsx"
wb = load_workbook(file_path)


for sheet_name in wb.sheetnames:
    if sheet_name.startswith("托"):
        print(f"====正在读取工作表:{sheet_name}====")
        ws = wb[sheet_name]
        for row in ws.iter_rows(min_row=2, values_only=True):
            student_id = row[0]      # A列:学号
            park = row[1]            # B列:园区
            class_name = row[2]      # C列:班级
            name = row[3]            # D列:姓名
            gender = row[4]          # E列:性别

            if not name:
                continue
            
            # 转换班级名称:托1班 → 托一班
            new_class_name = num_to_chinese(class_name)

            print(student_id, park, new_class_name, name, gender)
      


            # 点击班级,
            pyautogui.click(995,333)
            # 1. 复制指定文字到剪贴板
            # print('写入姓名:',name)
            pyperclip.copy(new_class_name)
            # 2. 模拟Ctrl+V粘贴
            pyautogui.hotkey("ctrl", "v")
            rand_sleep()  # 延迟2秒切换窗口

            # “筛选”按钮
            pyautogui.click(1408,327)
            rand_sleep()  # 延迟2秒切换窗口

            # 点击“学生管理”
            pyautogui.click(1804,512)
            time.sleep(3)  # 切换页面时间长一点

            # ”添加学生“按钮
            pyautogui.click(1556,385)
            rand_sleep()  # 延迟2秒切换窗口


            # 学生姓名
            pyautogui.click(879,297)
            # 1. 复制指定文字到剪贴板
            # print('写入姓名:',name)
            pyperclip.copy(name)
            # 2. 模拟Ctrl+V粘贴
            pyautogui.hotkey("ctrl", "v")
            rand_sleep()  # 延迟2秒切换窗口

            # 性别
            if gender=='男':
                pyautogui.click(864,365)        
                rand_sleep()
            else:
                pyautogui.click(923,365)        
                rand_sleep()


            # 学号
            pyautogui.click(866,480)
            # 1. 复制指定文字到剪贴板
            # print('写入姓名:',name)
            pyperclip.copy(student_id)
            # 2. 模拟Ctrl+V粘贴
            pyautogui.hotkey("ctrl", "v")
            rand_sleep()  # 延迟2秒切换窗口


            # 确认,回到最初的界面
            pyautogui.click(1255,967)
            time.sleep(3)    # 保存时间长一点


            # 左侧班级管理
            pyautogui.click(143,846)
            rand_sleep()    # 保存时间长一点
            

# 自动最大化VSCode
win.maximize()
print("VSCode已自动最大化,程序结束")


大约59个孩子用了25分钟

因为我怕来来不及按或者网页卡顿,每次点击的间隔秒数都是2-3秒,最后也的确没有出现问题。顺利把幼儿信息都建档了。

(三)小班幼儿建档(网页闵豆家园)

转入二分园,把5个小班按同样方法建档,代码里把“托”改成“小”




'''
孩子通-5个小班新幼儿上传
孩子通新版地址:https://passport.haizitong.com/home/login?appid=118&return_url=https%3A%2F%2Fyun.haizitong.com%2Fhome%2Fsso
管理员账号:0211XXXXX 22XXXX
谷歌浏览器,必须100%
页面放在家园互动-校园管理-班级管理-

为防止孩子通变慢,一个班级一个班级上传。完成后关闭园园通,再次开启
豆包,阿夏
20260821
'''


import openpyxl
import pyautogui
import time
import pyperclip
import pygetwindow as gw

# 1. 找到VSCode窗口(匹配标题含 Visual Studio Code)
vscode_wins = gw.getWindowsWithTitle("Visual Studio Code")
if not vscode_wins:
    print("未找到VSCode窗口,请先打开VSCode再运行!")
else:
    win = vscode_wins[0]
    # 自动最小化VSCode
    win.minimize()
    print("VSCode已自动最小化,你有5秒时间移动鼠标到目标位置")
    time.sleep(5)  # 等待5秒给你放鼠标

import random

# 随机休眠:1~3秒,带小数,模拟真人操作
def rand_sleep():
    t = random.uniform(2, 3)
    time.sleep(t)


from openpyxl import load_workbook

def num_to_chinese(s):
    """把字符串里阿拉伯数字转为中文 1→一,2→二 ...9→九"""
    digit_map = {"1":"一","2":"二","3":"三","4":"四","5":"五",
                 "6":"六","7":"七","8":"八","9":"九"}
    for k,v in digit_map.items():
        s = s.replace(k, v)
    return s


file_path = r"D:\Python最终内容\20260902孩子通新生信息上传\20260805班级信息表.xlsx"
wb = load_workbook(file_path)


for sheet_name in wb.sheetnames:
    if sheet_name.startswith("小"):
        print(f"====正在读取工作表:{sheet_name}====")
        ws = wb[sheet_name]
        for row in ws.iter_rows(min_row=2, values_only=True):
            student_id = row[0]      # A列:学号
            park = row[1]            # B列:园区
            class_name = row[2]      # C列:班级
            name = row[3]            # D列:姓名
            gender = row[4]          # E列:性别

            if not name:
                continue
            
            # 转换班级名称:托1班 → 托一班
            new_class_name = num_to_chinese(class_name)

            print(student_id, park, new_class_name, name, gender)
      


            # 点击班级,
            pyautogui.click(995,333)
            # 1. 复制指定文字到剪贴板
            # print('写入姓名:',name)
            pyperclip.copy(new_class_name)
            # 2. 模拟Ctrl+V粘贴
            pyautogui.hotkey("ctrl", "v")
            rand_sleep()  # 延迟2秒切换窗口

            # “筛选”按钮
            pyautogui.click(1408,327)
            rand_sleep()  # 延迟2秒切换窗口

            # 点击“学生管理”
            pyautogui.click(1804,512)
            time.sleep(3)  # 切换页面时间长一点

            # ”添加学生“按钮
            pyautogui.click(1556,385)
            rand_sleep()  # 延迟2秒切换窗口


            # 学生姓名
            pyautogui.click(879,297)
            # 1. 复制指定文字到剪贴板
            # print('写入姓名:',name)
            pyperclip.copy(name)
            # 2. 模拟Ctrl+V粘贴
            pyautogui.hotkey("ctrl", "v")
            rand_sleep()  # 延迟2秒切换窗口

            # 性别
            if gender=='男':
                pyautogui.click(864,365)        
                rand_sleep()
            else:
                pyautogui.click(923,365)        
                rand_sleep()


            # 学号
            pyautogui.click(866,480)
            # 1. 复制指定文字到剪贴板
            # print('写入姓名:',name)
            pyperclip.copy(student_id)
            # 2. 模拟Ctrl+V粘贴
            pyautogui.hotkey("ctrl", "v")
            rand_sleep()  # 延迟2秒切换窗口


            # 确认,回到最初的界面
            pyautogui.click(1255,967)
            time.sleep(3)    # 保存时间长一点


            # 左侧班级管理
            pyautogui.click(143,846)
            rand_sleep()    # 保存时间长一点
            

# 自动最大化VSCode
win.maximize()
print("VSCode已自动最大化,程序结束")


大约125位小班孩子 用时53分钟,速度和质量都很稳定,这个网页也没有出现卡顿延迟的问题。

(四)教师转院(手机操作)

以前是用过手动把所有教师从分园转回总园,再从总园转到分园,还用uibot把教师们的昵称改成全名,再写代码测算位置。进行分班。

如今孩子少了,班级少了,老师也少了(陆续退休,不招新人)所以我还是手动操作,对着名单,用手机把教师一一转到总园,再分配到分园。岗位配正确后,再给教师和保育员添加班级。

"''
手机版
1.把二分园的教师班主任转到总园(默认教师)。保育员转入总园(选择保育员)两位营养员也转入总园(选择后勤老师)。只有副院长和保健老师保留
2把一分园托班教师4人+保育员2人保留,小班教师4(默认教师)+保育2(选择保育员)转入总园,1位营养员(默认后勤老师)转入总园
3.现在所有的老师都在总院了,先根据一分园名单,点击教师名字,把教师转入一分园(默认教师)、保育员转入一分园(选择保育员),后勤老师转入一分园(选择后勤老师)。然后同样方式把二分园的老师、保育员、后倾老师都做了。
4.为总园,每个老师、保育员分配班级,打开教师名字,右上角点开详细信息,最下面就是所在班级。
4.为一分园,每个老师、保育员分配班级,打开教师名字,右上角点开详细信息,最下面就是所在班级。
4.为二分园,每个老师、保育员分配班级,打开教师名字,右上角点开详细信息,最下面就是所在班级。(分配班级)
5.总园部分老师保育员转入机动岗位,需要把这个人先转到一分园(默认老师即可),再打开一分园界面,选中教师名字,再转回总园,选择“行政岗位”。
6.删除已经退休、调离的名单
7.确保每个园区的岗位人数与名单人数一致,如总园,园长1人、教师人数22,保育员11人,保健2,后勤(营养员)2,管理人员(行政5+教辅3+机动人员5)
'''

(五)分流班孩子的处理

 原2025年9月中6班的全部孩子,会分散转入到2026年9月的5个大班中。(有名单)

原来2025年9月托1托2班的部分孩子,会分散转入到2026年9月的5个小班中。

(因为托班不是直接升入小班,而是重新按照小班新生入园的方式,幼儿全部打乱)

没有分流名单,但是我觉得如果直接删除有点可惜,还是想尽量把已注册的幼儿从托班转入到新的小班里。

操作方法:

检索孩子的姓名,匹配“新的班级信息表”,观看转入新的班级的名称,调整新的学号

(1)拆分班级幼儿学号修改+转入对应班级

孩子通网页版-班级管理打开“小一班拆班”,复制第一个名字,到收集的“班级信息表”里,工作簿检索这个名字。

如果存在,就会在小1-小5的工作表内。了解这个孩子新的班级是小4班,他的新学号是多少(1号)

在网页里,这个孩子的名字下方“修改学生”-修改新班级里的学号

学号改成1号-确定

然后选择“转班”

同样方式把整个拆分班级的孩子都全部转完后,会遗留部分孩子在“班级信息表”里没有匹配。

说明该幼儿并不在本园上小班,而是去了其他幼儿园。

这个孩子账号直接删除。

拆分班级里面人数为0,才能删除班级,否则就没有这个按钮,这一点“孩子通(闵豆家园)”做的很严谨

同样方式制作托一班拆分、托二班拆分、再根据分流名单,把中6班(已经改成大六班)分到各个大班

(2)转入班级要检查,去掉重复

已存在托班账号幼儿升入小班,转入新的小班班级后,要进行检查。去掉重复的空档案。

因为前面Python按照Excel自动重复录入了名单,所以现在一个孩子会有两个同样的学号。

观察两个相同名字的档案,保留有“手机号”的一行数据(这是去年托班时,家长使用的卡片)今年继续到小班用。因此,要把没有数据(空行)的一个表格删除,

同理拆分“小二班拆分到其他小班”“大6班拆分到其他大班”。

中6班(大六班)转入其他大班后,虽然不太会出现姓名重复,但是这些孩子通常插入到“已经转走”的孩子的学号里,所以会出现两个孩子都是30号的情况。

此时管理员可以把另一个30学号(转走幼儿的)删除,也可以通知班主任手动删除(更保险,以免删错。)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿夏reasonsummer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值