且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

操作系统词汇在线测试平台的实现

更新时间:2022-09-16 20:21:56

开发起因

谢老师有一个操作系统测评软件,需要安装客户端,不太方便,于是前段时间突发奇想想做一个web版的,主要是熟悉一下如何用python开发网站。

web版的有如下优点:

  • 不用安装任何客户端软件,打开浏览器就能在线测试
  • 数据库放在云端,增加安全性
  • 基于web,跨平台
  • 更方便地统计所有用户的成绩
  • 方便用户获取自己的排名

需求分析

需要实现的功能:

前端:

    首页:选择题目难度
测试页面:展示题目,提供输入框,显示剩余时间,时间到自动提交,防止复制,防止粘贴
成绩及答案页面:显示得分,排名,以及错题的正确答案

后台:

   数据库部分:题目入库,题目检索,获取答案,成绩入库,获取排名
web页面部分:为测试页面提供题目,时间等数据,接收用户数据,判断用户答案是否正确,计算成绩,返回排名与正确答案,错误处理,纠错功能,自动删除输入空格,输入字母自动转大写

实现方案:

  • 后台编程语言:python。因为python是一门全能语言,既能处理数据库应用,还能方便得处理事物联系,比如计算成绩。web模块也很强大
  • 前台实现:主要是html,通过css美化,用javascript来实现计时和自动提交动作。
  • web框架:web.py。这是一个轻量级的web框架,可以很方便地构建小型web服务器并对外提供服务,一个类就是一个页面,每个页面有POST和GET两种方法。可以很方便获取用户输入
  • 数据库:sqlite数据库,因为这个程序用到的数据很少,sqlite数据库采用单个文件来存放,管理方便,python自带其模块,使用也很简单,查询速度方面也是比较给力的。
  • 模板引擎:jinja2。jinja2模板可以很方便的嵌入到html中,还可以实现一些判断,循环等操作来动态生成html代码。

具体实现

首先是题目入库,连接数据库,建表,从文本文件读取题目数据写入数据库。当web服务器启动后,初始页一个静态页面,可以选择题目难度,通过GET方法告诉服务器题目难度,然后服务器从数据库里面随机选出6个题目,根据难度和空数确定时间,通过jinja2模板填充页面数据,并返回测试页面。测试者开始做题,时间到或者测试者手动提交都会将测试者的答案提交到服务器,然后服务器对答案依次进行判断,并统计正确个数和错误答案,根据正确个数确定成绩,在根据成绩获取在系统里面的排名,一并将上面的信息返回。后台自动保存用户的成绩信息。测试者可以选择再测一次或者重新选择题目难度。

程序代码

演示地址

存在问题

  • 在成绩页面点击浏览器后退按钮页面不能刷新
  • 排名页面只给出排名第几,没有具体排名列表
  • 页面还需要进一步美化
  • 没有提供后台管理页面
  • 如果用户禁用javascript则不能正常计时和自动提交(后台可以检测出来)

其他

  • 前台美工:zcz
  • 后台实现:ma6174

本文转自ma6174博客园博客,原文链接:http://www.cnblogs.com/ma6174/archive/2012/12/18/2822930.html,如需转载请自行联系原作者