我自己用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 = os.path.basename(p.exe()).lower()

if exeName in ('notepad.exe', 'winword.exe',

'wps.exe', 'wordpad.exe', 'iexplore.exe',

'chrome.exe', 'qqbrowser.exe',

'360chrome.exe', '360se.exe',

'sogouexplorer.exe', 'firefox.exe',

'opera.exe', 'maxthon.exe',

'netscape.exe', 'baidubrowser.exe',

'2345Explorer.exe'):

p.kill()

except:

pass

#清空系统剪切板

ctypes.windll.user32.OpenClipboard(None)

ctypes.windll.user32.EmptyClipboard()

ctypes.windll.user32.CloseClipboard()

time.sleep(1)

def start():

jinyong.set(1)

t = threading.Thread(target=funcJinyong)

t.start()

buttonStart = tkinter.Button(root, text='开始考试', command=start)

buttonStart.place(x=20, y=10, width=100, height=20)

def stop():

jinyong.set(0)

buttonStop = tkinter.Button(root, text='结束考试', command=stop)

buttonStop.place(x=130, y=10, width=100, height=20)

#模拟用,开启考试模式以后,所有内容都不再允许复制

entryMessage = tkinter.Entry(root)

entryMessage.place(x=10, y=40, width=230, height=20)

root.mainloop()

因为有的代码比较长,为了防止用手机查看时排版错乱,附上代码截图。

python做一个考试系统_Python在线考试系统防作弊功能的思路和实现相关推荐

  1. Python在线考试系统防作弊功能的思路和实现

    我自己用Python开发了一套教学管理软件,具有在线点名.提问.答疑.交作业.自测.在线考试.数据导入导出与汇总.Word试卷生成等多个功能,其中在线考试系统具有防作弊的功能,不少人觉得很神奇,其实思 ...

  2. 基于python的在线考试系统-Python在线考试系统防作弊功能的思路和实现

    我自己用Python开发了一套教学管理软件,具有在线点名.提问.答疑.交作业.自测.在线考试.数据导入导出与汇总.Word试卷生成等多个功能,其中在线考试系统具有防作弊的功能,不少人觉得很神奇,其实思 ...

  3. python做一个银行系统的gui_自助取款机系统(python+mysql+GUI)

    为了完成学校的实践,做了一个类似于自助取款机的系统... 应用语言:python 核心控件:pymysql (数据库),wxpython(GUI) 主要功能: 登录功能:通过python访问数据库,对 ...

  4. python做一个销售管理系统_python实现手机销售管理系统

    本文实例为大家分享了python实现手机销售管理系统的具体代码,供大家参考,具体内容如下 要求如下: 手机销售系统 手机品牌                手机价格    库存数量 vivoX9   ...

  5. python做一个立体相册_python使用库绘制立体图形方法

    不同于往日,这次实现3D图形,小编给大家带来了一个新的库,这里用到的VisPy库,比起matplot更高级,非常容易上手,虽然知道了解的人可能不是很多,但是这丝毫不影响它是非常简单实用的,好啦,回归本 ...

  6. python做一个星座分析_Python 画简易中文星座

    这段时间出于兴趣,写了一个简单的画星座的代码,效果觉得还不错,所以就发在这里.有兴趣的朋友可以前往以下地址下载:oxno2/star-chart-CN​github.com 现在画星座的软件已经非常之 ...

  7. 【初学python】用python做一个简单的超市收银台付款系统

    price=float(input("请输入商品单价:")) if(price<0):print("输入不合法!") amount=int(input(& ...

  8. 用Python做一个控制台程序实现图书管理器的简单功能,例如添加图书、查询库里的图书、删除图书、修改书籍信息、显示书籍信息,或者是借阅/归还...

    为了实现图书管理器的功能,需要考虑如下几点: 需要定义一个图书类,包含书名.作者.出版社.借阅状态.借阅人等属性,可以使用类的构造函数来初始化这些属性. 需要定义一个图书管理器类,包含一个用于存储图书 ...

  9. 在线测试系统mysql_在线考试系统的设计与实现(MySQL)

    在线考试系统的设计与实现(MySQL)(任务书,开题报告,中期检查表,文献综述,外文翻译,毕业论文18000字,程序代码,MySQL数据库) 本文论述了一个以My Eclispe为网络平台.SSH三层 ...

最新文章

  1. 【GLib】GLib学习笔记(一):GLib、GObject、GType
  2. 关于现在人工智能预测的一些冷水
  3. webstorm打开网页_网页前端之HTML+CSS+JS
  4. 每天学一点儿shell:Linux三剑客——awk命令
  5. ARM 汇编中的 B . 语句意义
  6. opencv函数findcontours_OpenCV系列之轮廓入门 | 二十一
  7. 第94:受限玻尔兹曼机
  8. Unity 官方网站
  9. excel条件格式详解
  10. 不用 Python 自带的 Dict 实现自己的 HashTable
  11. cmd 笔记(随时补充)
  12. shell脚本编程之循环控制语句(continue/break/sleep)
  13. python中threading模块_举例详解Python中threading模块的几个常用方法
  14. dBeaver sql格式化配置-v1.5
  15. SAP 查询分析器的实现的3种方法
  16. 最好用的屏幕分辨率修改器:SwitchResX for Mac
  17. Python爬取2万条微博热搜,带你揭开热搜趋势!
  18. 为什么要远离色情信息(转载)
  19. 机器学习:数据归一化(Scaler)
  20. 计算机专利英语笔译,基于Trados2014的专利翻译实践报告-英语笔译专业论文.docx...

热门文章

  1. 计算机专业英语第三章在线测试,《计算机专业英语》第03章在线测试
  2. 李航《统计学习方法》之EM算法及其推广
  3. 解决matlab2018a安装后遇到matlab license manager error -8
  4. 山东大学 2020级数据库系统 实验七
  5. php自动采集入库,Phpcms v9自动采集入库自动发布组件
  6. 地线与接地螺丝_电气接地的规范要求及接地的各项参数,收藏!
  7. java 正则首位8或者9的8位数字_正则简单手机号和邮箱练习
  8. python回车键绑定按钮_python tkinter 绑定回车键
  9. VS2015启动调试程序变慢
  10. 一篇文章带你实操代码理解盒子模型