分享
RCC平台上作业统计的Python程序设计与实现.pdf
下载文档

ID:2745905

大小:1.63MB

页数:5页

格式:PDF

时间:2023-11-29

收藏 分享赚钱
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
RCC 平台 作业 统计 Python 程序设计 实现
河 北 软 件 职 业 技 术 学 院 学 报第 25 卷文章编号:员远苑猿鄄圆园圆圆(圆园23)02鄄0024鄄05RCC 平台上作业统计的 Python 程序设计与实现林玫(江苏旅游职业学院,江苏 扬州 225000)收稿日期:圆园22原10原22作者简介:林玫(1979-),女,江苏扬州人,讲师,工程师,主要研究方向为信息技术的应用与推广、信息技术教育教学。摘要:以教学中遇到的实际问题为出发点,采用 Python 程序的理论及设计方法,依据需求,设计了云课堂平台作业统计程序,并在应用中不断完善,版本从 0.1 更新到了 5.1。该程序减轻了教师作业统计负担,提高了作业统计效率,降低了因数量巨大带来统计错误的概率,实现了 RCC 平台上高效、快捷地作业统计。关键词:Python;程序设计;作业统计;模块;库中图分类号:TP393.09文献标志码:A0引言实训室采用的 RCC(Ruijie Cloud Class)教学环境,将云计算技术和教育场景紧密结合,将实训室打造成了云课堂。云课堂由学生端、教师端和云服务器三部分构成。教师通过教师端实现集中化教学,对学生进行智能化的管理;学生使用学生端实现高效学习和提交作业等操作。作为一门解释型脚本语言,Python 具备开源性、门槛低、可移植性强及拥有更为丰富的资源库的特点。1Python 程序设计语言是一个高层次的面向对象脚本语言,Python 功能强大又易于开发,编程优势明显,具有较强的可移植性、可扩展性以及丰富的代码库。21程序设计需求1.1云课堂作业提交环境特点在云课堂 1.0 版本中,学生端将电子作业提交至教师端时,文件名前均会自动添加所在学生端的机器编号,格式为“Stu原编号原”,其中编号为两位数。云课堂升级为 2.0 版本后,机器号就不再自动添加。学生提交作业时,云课堂按照时间段进行归类,并自动生成以本时间段起始时间命名的文件夹。于是容易出现一个问题:两个班级课间交替过程中,不同班级学生作业保存在一个文件夹中,不利于按照班级查看和统计作业。1.2电子作业数量巨大近几年,笔者所在学院每年的新生人数占全校新生的一半左右,每位教师需承担多个班级的授课任务。为确保课程的实践教学效果,任课教师每周需指导学生完成 1耀3 个实践操作电子作业。以其中一位任课教师为例,某一学期教授 526名学生,以一周平均 2 份电子作业来计算,一周内就需要批改 1052 份,一学期除去理论部分的作业,仅估算 12 周实践操作时间,则需要批改 12 624份电子作业。2程序的设计思路在云课堂平台实现快捷、高效的作业统计,将为后续作业的批改和反馈提供很大帮助。2.1设计流程通过程序设计来实现快捷、高效的作业统计,首先需要明确程序设计的整体流程,云课堂平台作业统计流程如图 1 所示。2.2历史版本信息2.2.1版本的设计说明Python 程序设计过程中,根据分析不断更新版本,解决各类具体需求问题,实现了更多新功能。如图 2 V0.1 设计说明部分所示,其标注了新增功能、可能存在缺陷、版本信息、设计时间、设计作者等基本信息。2.2.2历史版本的基本信息云课堂平台作业统计程序自 2019 年初设计第 25 卷第 2 期河 北 软 件 职 业 技 术 学 院 学 报灾燥造援25晕燥援2圆园23 年 6 月允燥怎则灶葬造 燥枣 匀藻遭藻蚤 杂燥枣贼憎葬则藻 陨灶泽贼蚤贼怎贼藻Jun援圆园23第 2 期以来,版本从 0.1 至 5.1,依据需求和调试情况不断新增或修改功能。各个版本功能信息、可能存在的缺陷以及历经的版本号,如表 1 所示。2.3Python 库的运用拥有一套高质量、具备良好可复用性库对于一门通用开发语言来说非常重要。3在程序的设计中,采用了一个标准库os 库、一个第三方库xlwt 库。os 库是 Python 的标准库,它提供了大量函数来使用操作系统的各项基础功能,是一个较为常用的库。4xlwt 库是开发人员用来生成Excel 电子表格文件的库,支持 Python 语言对 Ex原cel 表格的操作。其模块导入代码如下:#导入模块import osimport xlwt as xls3程序实现3.1执行结果以 v5.1 版本即当前最终版本为例,程序执行结果显示如图 3 所示,其中包含所有不符合格式要求的文件名、扫描的文件总数量、提示扫描完成等信息。3.2数据写入表格程序将读取的数据写入 Excel 表格中,其数据显示如图 4 所示。Excel 中的工作表均按照班级分类并以班级编码命名,表中配置了标题行,并提供了班级、学号、姓名、项目、文件类型这几个字段名,分别表示班级编码、学生学号、学生姓名、项目开 始文件夹名机器号位数学号位数模块:recurrence获取文件夹信息是否存有机器名遍历所有文件名模块:split_filename识别文件名各部分信息元素 name文件名是否识别并剔除机器名新建作业统计文件学生电子作业文件名新建班级工作簿遍历结束新建标题行获取班级编码、学号、姓名、项目编号信息按行写入表格保存表格结束图 1云课堂平台作业统计流程图 2V0.1 设计说明部分图 3程序执行结果林玫:RCC 平台上作业统计的 Python 程序设计与实现同步生成25河 北 软 件 职 业 技 术 学 院 学 报第 25 卷编号和文件的扩展名,以便于任课教师及时掌握学生实训操作作业的提交情况,以及后期对统计结果做个性化处理。3.3功能模块的设计模块的设计思路是简化主程序的设计。模块设计样式如图 5 所示,与版本基本信息相似,含设计作者、模块功能简介、版本信息、设计时间等。程序设计中调用的功能模块如表 2 所示。3.4程序设计部分代码3.4.1获取路径名在数据存入统计表格前,程序设置了统计文件保存的路径。表 1各版本基本信息版本号新增/修改的功能可能存在的缺陷历史版本V0.1读取电子作业文件作业文件名写入 Txt 文件只能读取与程序同文件夹内的所有文件,不利于多班级读取;去扩展名问题V0.1V1.0系列识别扩展名修改读取不同文件夹内的文件增加分割文件名,并以逗号隔开文件内部构成的长短不一,需要进一步识别V1.0V1.1V2.0系列增加交互功能,对特殊的格式长度能同时识别文件写入 Txt 文件不利于进一步编辑V2.0V2.1V3.0系列增加作业文件名写入 Excel 表格中;增加分行识别文件名,获取班级编码、学号、姓名、作业项目名等;增加表格每行的标题对应内容命名;增加工作表按照班级命名没有读取错误命名的电子作业记录,以便记录和纠正学生的知识点V3.0V3.1V3.2V4.0系列增加识别各类未按照作业要求命名的电子作业文件名程序内出现固定功能,需要简化V4.0.0V4.0.1(练习版)V4.0.2(项目版)V4.0.3(扩展版)V4.1V4.2V5.0系列修改去机器号的识别;进一步完善程序,构建模块化可增加可视化界面V5.0V5.0.1(特殊版)V5.1图 4写入表格的数据图 5模块设计样式26第 2 期#切割路径名和文件名,获得两个参数:path为路径,file 为文件名。fs=os.path.join(path,file)if os.path.isfile(fs):fs=os.path.split(fs)file_list.append(fs)3.4.2生成以作业统计命名的 Excel 表格程序中新建了 Excel 表格,表格内新建了以每一个班级编码命名的工作表,在每个工作表中添加标题行,并将此表格命名为“作业统计”。#新建 Excel 文件myexcel=xls.Workbook()#新建 sheet 工作表,dz 代表工作表名sheet_add=myexcel.add_sheet(dz)#设置标题行,在第 0 行写入班级标题sheet_add.write(0,0,班级)#开始每行填写信息,第 0 列写入班级编码#si,sj 代表行号和列号,#从 0 开始,随着数量而增加,直至全部读取完毕sheet_add.write(si,sj,file_name0)#保存 Excel 文件,命名为作业统计myexcel.save(作业统计.xls)3.4.3学生作业的文件名和文件类型(扩展名)的划分及识别#rfind 切割文件名中文件名 allname 和扩展名leixingallname,leixing=name.rfind(.)3.4.4确定所需信息长度采用交互式确定特殊信息数据长度,包括文件夹路径名、班级编码和学号的信息位数等。dz=input(请输入目录地址:)names=os.listdir(./作业/+dz)#读取文件名所在目录的路径名n=int(input(请输入班级编码信息位数:)m=int(input(请输入学号信息位数:)在程序运行过程中,因学生数量较多,遇到了某些专业班级名出现了 10 班、11 班导致班级编码和学生学号的位数等信息均非默认状态,即为超出现象,为此设计了交互功能,以便于识别。3.5根据命名规范,获取学生作业统计信息作业文件名规范格式为:机器号+班级编码+学号+姓名+“项目”+项目编号,各类型作业文件名示范如图 6 所示。首先通过遍历获得文件所在文件夹,获取所有文件路径下的文件名。#遍历读取文件名所在目录的路径为for dz in banji_name:再通过获取每个文件夹下的所有文件,遍历并一一识别文件名信息。部分代码如下:#遍历读取目录中所有文件名for name in names:#机器号名称识别和剔除,识别云课堂是否自行在文件名中生成学生端机器号name=name7:if name:4=Stu-elsename:#根据班级编码,识别班级编码字符数n=5 if name3 in p,x,m,c else 4#识别字符项目,获取 xm(姓名信息)和 bh(项目编号)xm,bh=namen+m:.split(项目)其中,机器号名称识别和剔除是指因云课堂1.0 版本会自动在文件名中添加机器号,因此,需判断文件名开头部分是否读取到含有“Stu-”的机器号信息。如果有,则剔除该部分,即剔除前 7 个字符,获取学生提交前设置的文件名,否则保留原文件名不变。模块名称模块功能模块参数调用格式recurrence文件(文件夹)读取模块path:文件夹所在路径file_list:文件名称列表recurrence(path,filenames)split_filename切割文件名的各部分,并识别、判断和获取具体信息name:以数组形式出现,封装含有班级编码、学号、姓名file_name=split_filename(name),其中 file_name 为一个自定义变量表 2功能模块介绍图 6 作业文件名规范格式林玫:RCC 平台上作业统计的 Python 程序设计与实现27河 北 软 件 职 业 技 术 学 院 学 报第 25 卷这个判断语句运用了列表推导式。列表推导式是 Python 构建列表的一种快捷方式,用简洁的代码创建一个列表,并不会产生所有元素,仅在要用到元素时才生成,能够极大节省内存。剔除处理中使用了切片技术。Python 的切片技术,简单地说,就是从一个大的数据集合中提取其子集。在实际应用中,经常需要从给定的数据集合中提取符合条件的数据项,5可使用切片来截取列表中的部分元素,也可以通过切片来修改和删除列表中的部分元素。6在提取班级编码、学生姓名、项目编号等信息时就使用了此方法。此外,对于姓名字段的处理,因近几年由四个字构成的姓名以及少数民族学生的数量急剧增加,姓名字段的识别要求就变得更加复杂。在本程序中采用直接识别“项目”这个特定的关键字符,再运用切片技术,划分出学生姓名、项目编号两个字段,从而可忽略因姓名字段实际长度的不确定性带来的问题,简化了程序。3.6程序打包这里使用的是第三方库 Pyinstaller 打包7,直接生成 exe 执行文件。在使用过程中,不受实训室终端的系统版本以及是否安装 Python 运行环境等因素影响。传输和执行都非常方便,只需这个执行文件便

此文档下载收益归作者所有

下载文档
你可能关注的文档
收起
展开