身为教师,有一项工作是必须自己完成的,那就是录入每一个学生的考试成绩。
按理说,现在都进入数字时代了,学校的教务管理系统应该早就实现了成绩导入功能,即老师们只需要从教务系统下载好EXCEL格式的成绩空表文档,给每个学生打好平时分、期末卷面分等,将整理好的学生成绩EXCEL文档导入教务系统就可以了。
但是,有的学校的教务管理系统是不支持通过直接导入EXCEL文档的方式来录入成绩的,而是需要老师一个一个地录入每个学生的期末成绩、平时成绩等。如果学生人数少一些,这也花不了多少时间,但是如果学生有两三百人,单单录入成绩就会花费很长时间,还很容易出错。
怎么办?
遇到问题,我们就要想办法解决问题。
方案一:用RPA机器人流程自动化。
我尝试了使用阿里RPA来完成这个简单的任务。在准备好学生成绩表(EXCEL文档的学生名单必须与教务系统的学生名单相同且顺序完全一致)之后,就需要用RPA工具对EXCEL文档进行操作(打开、读取、复制等),对浏览器进行操作(打开、激活、元素定位)等等。
这个方案的实现过程看起来简单,但是调试过程中并不顺利。记得当初请给我们培训RPA课程的老师远程协助,前前后后花了半个多小时,才调试成功。
方案二:用一键复制粘贴工具。
这个方案用起来很简单:在准备好学生成绩表(EXCEL文档的学生名单必须与教务系统的学生名单相同且顺序完全一致)之后,只需要设置好复制和粘贴的热键快捷键,就可以一次性复制好期末成绩,然后切换到教务管理系统的成绩录入界面,光标定位到期末成绩录入文本框,按下粘贴热键,就可以自动完成录入任务了。平时成绩录入流程相同。
这个方案的实现过程也很简单,但唯一的缺点就是需要付费(目前是每月5元钱)。问题是我只是在期末的这一周内才需要用一两次,5元钱尽管不多,却并不经济划算。
方案三:用python代码实现。
自从学了一些基础的python语法之后,我就想着怎么用python代码来实现这个简单的任务。但我自己并不会写,于是就在网上搜索,结果幸运的是,我找到了一个教师同行的解决方案,让我很兴奋!于是我迫不及待地联系对方,在对方的远程协助下,用70行左右的代码实现了成绩自动录入。
不过遗憾的是,在我随后的尝试过程中,出了各种各样的BUG,再也没能成功运行。
今天我忽然想到:能不能请AI帮忙写一段代码呢?于是我直接问了讯飞星火以下问题:
我需要完成以下任务: 第一,打开一个名为“D:/成绩.xls”的EXCEL文档,复制Sheet1工作表中的B列的所有数字; 第二,在一个打开的网页中,用粘贴的方式,在第一个指定的文本框中输入复制的第一个数字,按Tab键,输入复制的第二个数字,以此类推,直到输入全部数字,任务停止。 请你用Python语言帮我实现上述任务。
讯飞星火反应很快,给出了示例代码。经过我的几次调试,成功运行,哦耶!
下面是我整理后的完整代码:
"""
本代码用来提取EXCEL中的每一列数据,依次规律地输入到网页的文本框中。
需要事先安装好第三方库:
1、电脑首先安装好 Python软件(www.python.org);
2、电脑左下角点击“开始”,“运行”,输入CMD,进入命令行界面;
3、依次用 pip命令安装 pandas,xlrd,pyautogui库,示例:pip install pandas --upgrade
典型应用场景:在教务系统中自动录入“期末”和“平时”成绩,
系统按照设定好的比例,自动计算出综合成绩。
第一步,准备好“成绩.xls”文件,确保学生姓名与教务系统成绩录入页面的学生姓名顺序完全相同。
第二步,登录教务系统,进入成绩录入页面,选择“按成绩类型”。
第三步,运行本程序代码,同时配合鼠标定位到网页的文本框里。
任务完成。
2024.01.17 by skyucca&讯飞星火
"""
import pandas as pd
import pyautogui
import time
# 读取Excel文件(Sheet1工作表中存放“学号”、“姓名”、“期末”、“平时”等标题的数据)
file_path = "D:/成绩.xls"
df = pd.read_excel(file_path, sheet_name="Sheet1")
# 获取“期末”列的所有数字
numbers1 = df["期末"].tolist()
# 获取“平时”列的所有数字
numbers2 = df["平时"].tolist()
# 等待5秒钟,将光标定位到网页上期末成绩的第一个文本框
print("请在5秒钟内将光标定位到第一个期末成绩文本框")
time.sleep(5)
print("现在开始逐一录入期末成绩")
# 在第一个指定的文本框中输入复制的第一个数字,按Tab键,输入复制的第二个数字,以此类推,直到输入全部数字
for number in numbers1:
pyautogui.typewrite(str(number))
pyautogui.press("tab")
print("期末成绩录入完成。1秒钟后,开始自动录入平时成绩")
# 等待1秒钟,继续录入平时成绩
time.sleep(1)
print("现在开始逐一录入平时成绩")
# 在第一个指定的文本框中输入复制的第一个数字,按Tab键,输入复制的第二个数字,以此类推,直到输入全部数字
for number in numbers2:
pyautogui.typewrite(str(number))
pyautogui.press("tab")
print("平时成绩录入完成")
如果有教师同行搜到了这篇文章,我特别鼓励你自己试一试。如果过程中遇到了问题,欢迎联系我QQ116379452

被折叠的 条评论
为什么被折叠?



