我自己用Python开发了一套教学管理软件,具有在线点名、提问、答疑、交作业、自测、在线考试、数据导入导出与汇总、Word试卷生成等多个功能,其中在线考试系统具有防作弊的功能,不少人觉得很神奇,其实思路和代码都很简单。主要的原理是关闭文本编辑器并定时清空系统剪切板,不允许复制题目和其他任何内容,也不允许搜索网页,只能一个题一个题地做,并且每个人都是随机抽题,题库里有700多道题,所以相邻的两个人同一时间抽到同一题的概率非常小,有效防止了作弊。因为完整的系统代码比较多,我写了个Demo,模拟了系统中采用的防作弊功能。下面的代码运行后,单击"开始考试”按钮启用考试模式的防作弊功能,单击"结束考试”则禁用防作弊功能。
import os
import time
import tkinter
import threading
import ctypes
import psutil
root = tkinter.Tk()
root.title('防作弊演示--by董付国')
#窗口初始大小和位置
root.geometry('250x80+300+100')
#不允许改变窗口大小
root.resizable(False, False)
jinyong = tkinter.IntVar(root, 0)
def funcJinyong():
while jinyong.get()==1:
#强行关闭主流文本编辑器和网页浏览器
for pid in psutil.pids():
try:
p = psutil.Process(pid)
exeName