给定学生的选课名单(学生选课名单.txt文件),每次实验课作业学生以word文档进行提交,现需设计程序根据选课名单中的学号或者姓名,对每次实验课学生是否交作业的情况进行判断,将没有交作业文档的学生的姓名学号打印并保存到本地文件中。
时间: 2024-02-05 13:13:15 浏览: 67
好的,这个任务可以使用Python来完成。具体实现步骤如下:
1. 读取选课名单文件,将学生的学号和姓名存储到字典中。
2. 遍历实验课作业文件夹中的所有文档,获取每个文档的文件名,并从文件名中提取出学生的学号或姓名信息。
3. 判断该学生是否在选课名单中,如果在,则将其标记为已交作业;否则,将其加入未交作业名单中。
4. 将未交作业名单中的学生的学号和姓名打印出来,并保存到本地文件中。
下面是一个简单的实现代码,你可以根据自己的实际情况进行修改:
```python
import os
# 读取选课名单文件,将学生的学号和姓名存储到字典中
students = {}
with open('学生选课名单.txt', 'r', encoding='utf-8') as f:
for line in f:
parts = line.strip().split(',')
students[parts[0]] = parts[1]
# 遍历实验课作业文件夹中的所有文档
homework_dir = '实验课作业文件夹'
unsubmitted = [] # 未交作业名单
for filename in os.listdir(homework_dir):
# 从文件名中提取出学生的学号或姓名信息
parts = filename.split('_')
if len(parts) == 2:
student_id = parts[0]
else:
student_id = parts[1]
# 判断该学生是否在选课名单中
if student_id in students:
# 将其标记为已交作业
print(f'{students[student_id]}({student_id}) 已交作业')
else:
# 将其加入未交作业名单中
unsubmitted.append(f'{student_id}\t{filename}')
# 将未交作业名单中的学生的学号和姓名打印出来,并保存到本地文件中
if unsubmitted:
print('以下学生未交作业:')
for student in unsubmitted:
print(student)
with open('未交作业名单.txt', 'w', encoding='utf-8') as f:
f.write('\n'.join(unsubmitted))
else:
print('所有学生均已交作业')
```
其中,需要将`学生选课名单.txt`和实验课作业文件夹放在同一目录下,且实验课作业文件名的格式应为`作业序号_学号_姓名.docx`或`作业序号_姓名_学号.docx`。
阅读全文