博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
操作系统词汇在线测试平台的实现
阅读量:7291 次
发布时间:2019-06-30

本文共 1179 字,大约阅读时间需要 3 分钟。

开发起因

谢老师有一个操作系统测评软件,需要安装客户端,不太方便,于是前段时间突发奇想想做一个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

转载地址:http://yqrjm.baihongyu.com/

你可能感兴趣的文章
Java中 Scanner和BufferedReader的区别
查看>>
15条软件开发黄金定律
查看>>
微软收购Xamarin或许对C#开发者是个好消息
查看>>
Oracle推出轻量级Java微服务框架Helidon
查看>>
如何在复杂的分布式系统中做测试
查看>>
GitHub的bug赏金计划升级:奖金提高到3万美元以上
查看>>
2018年Github最受欢迎机器学习语言Python稳坐冠军,numpy、scipy是最受欢迎软件包...
查看>>
2018年开源状况:代码贡献超310亿行,而漏洞超16000个
查看>>
又拍云CDN再出力作,三驾马车为视频护航
查看>>
送给 Java 程序员的 Spring 学习指南\n
查看>>
使用ES6新特性开发微信小程序
查看>>
Java EE供应商和伦敦Java用户组宣布新的MicroProfile
查看>>
Swift内存所有权宣言
查看>>
Apache Ignite(四):基于Ignite的分布式ID生成器
查看>>
JetBrains发布了面向SQL DBA与开发者的工具DataGrip 1.0
查看>>
从Python2到Python3:超百万行代码迁移实践
查看>>
专访《Haskell函数式编程入门》作者张淞:浅谈Haskell的优点与启发
查看>>
Mozilla开发全新的公开网络API WebXR 来实现增强现实
查看>>
Blisk:一款新的面向开发人员的浏览器
查看>>
标签语义化
查看>>