python做一个考试系统_Python在线考试系统防作弊功能的思路和实现
我自己用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在线考试系统防作弊功能的思路和实现相关推荐
- Python在线考试系统防作弊功能的思路和实现
我自己用Python开发了一套教学管理软件,具有在线点名.提问.答疑.交作业.自测.在线考试.数据导入导出与汇总.Word试卷生成等多个功能,其中在线考试系统具有防作弊的功能,不少人觉得很神奇,其实思 ...
- 基于python的在线考试系统-Python在线考试系统防作弊功能的思路和实现
我自己用Python开发了一套教学管理软件,具有在线点名.提问.答疑.交作业.自测.在线考试.数据导入导出与汇总.Word试卷生成等多个功能,其中在线考试系统具有防作弊的功能,不少人觉得很神奇,其实思 ...
- python做一个银行系统的gui_自助取款机系统(python+mysql+GUI)
为了完成学校的实践,做了一个类似于自助取款机的系统... 应用语言:python 核心控件:pymysql (数据库),wxpython(GUI) 主要功能: 登录功能:通过python访问数据库,对 ...
- python做一个销售管理系统_python实现手机销售管理系统
本文实例为大家分享了python实现手机销售管理系统的具体代码,供大家参考,具体内容如下 要求如下: 手机销售系统 手机品牌 手机价格 库存数量 vivoX9 ...
- python做一个立体相册_python使用库绘制立体图形方法
不同于往日,这次实现3D图形,小编给大家带来了一个新的库,这里用到的VisPy库,比起matplot更高级,非常容易上手,虽然知道了解的人可能不是很多,但是这丝毫不影响它是非常简单实用的,好啦,回归本 ...
- python做一个星座分析_Python 画简易中文星座
这段时间出于兴趣,写了一个简单的画星座的代码,效果觉得还不错,所以就发在这里.有兴趣的朋友可以前往以下地址下载:oxno2/star-chart-CNgithub.com 现在画星座的软件已经非常之 ...
- 【初学python】用python做一个简单的超市收银台付款系统
price=float(input("请输入商品单价:")) if(price<0):print("输入不合法!") amount=int(input(& ...
- 用Python做一个控制台程序实现图书管理器的简单功能,例如添加图书、查询库里的图书、删除图书、修改书籍信息、显示书籍信息,或者是借阅/归还...
为了实现图书管理器的功能,需要考虑如下几点: 需要定义一个图书类,包含书名.作者.出版社.借阅状态.借阅人等属性,可以使用类的构造函数来初始化这些属性. 需要定义一个图书管理器类,包含一个用于存储图书 ...
- 在线测试系统mysql_在线考试系统的设计与实现(MySQL)
在线考试系统的设计与实现(MySQL)(任务书,开题报告,中期检查表,文献综述,外文翻译,毕业论文18000字,程序代码,MySQL数据库) 本文论述了一个以My Eclispe为网络平台.SSH三层 ...
最新文章
- 【GLib】GLib学习笔记(一):GLib、GObject、GType
- 关于现在人工智能预测的一些冷水
- webstorm打开网页_网页前端之HTML+CSS+JS
- 每天学一点儿shell:Linux三剑客——awk命令
- ARM 汇编中的 B . 语句意义
- opencv函数findcontours_OpenCV系列之轮廓入门 | 二十一
- 第94:受限玻尔兹曼机
- Unity 官方网站
- excel条件格式详解
- 不用 Python 自带的 Dict 实现自己的 HashTable
- cmd 笔记(随时补充)
- shell脚本编程之循环控制语句(continue/break/sleep)
- python中threading模块_举例详解Python中threading模块的几个常用方法
- dBeaver sql格式化配置-v1.5
- SAP 查询分析器的实现的3种方法
- 最好用的屏幕分辨率修改器:SwitchResX for Mac
- Python爬取2万条微博热搜,带你揭开热搜趋势!
- 为什么要远离色情信息(转载)
- 机器学习:数据归一化(Scaler)
- 计算机专利英语笔译,基于Trados2014的专利翻译实践报告-英语笔译专业论文.docx...
热门文章
- 计算机专业英语第三章在线测试,《计算机专业英语》第03章在线测试
- 李航《统计学习方法》之EM算法及其推广
- 解决matlab2018a安装后遇到matlab license manager error -8
- 山东大学 2020级数据库系统 实验七
- php自动采集入库,Phpcms v9自动采集入库自动发布组件
- 地线与接地螺丝_电气接地的规范要求及接地的各项参数,收藏!
- java 正则首位8或者9的8位数字_正则简单手机号和邮箱练习
- python回车键绑定按钮_python tkinter 绑定回车键
- VS2015启动调试程序变慢
- 一篇文章带你实操代码理解盒子模型