zoukankan      html  css  js  c++  java
  • 一个cs架构的在线考试系统

    ---------------------------------------------------------------------------------------------------------

    注意:在这个例子里我采用了拼SQL语句的方法,因此是不安全的,无法抵御SQL注入式攻击。!有时间再改进吧。

                           ——hoodlum1980           2008年10月7日12:32:14

    ---------------------------------------------------------------------------------------------------------

    最近很多人讨论数据库和面向对象,使我想起这个我在暑假里帮别人做的在线考试系统,由于需求中提到要提醒考生时间快到了,而我考虑bs不好控制(并且不熟),所以采用了是cs架构。数据库拟采用的是sqlserver,但考虑到为了演示时部署方便,我也添加了使用access数据库的接口(仅用于演示)。

    其他需求还有随机抽取题目组成一张试卷。题目的重要属性有题干,选项,答案,难度,相关章节等。考试的属性有难度,时间等。系统角色有学生,教师,管理员。
    试卷的属性有所有题目ID字符串,正确答案字符串,用户答案字符串,所得分数等。

    我希望用最快速度把它写出来,基本功能我写了4天以后可以在我本机上演示了。由于很多属于数据库操作,所以写起来很烦琐。。。
    核心的逻辑主要是随机抽取试题,这里我使用了在程序用random函数。当然在sql语句里面也可以用newid()生成一个随机顺序。需求中要求题目涉及面均衡,我使用把所有题目按照相关章节的顺序排列,然后在里面随机抽取来实现。因此试卷的章节分布和题库的章节比例相一致。但这样可能并不一定是真正的需求,另外一种选择是尽可能使不同章节的题目数量相同。

    时间提醒,由于考试时处于紧张状态,显然不希望受到干扰,所以为了不妨碍考生答题,但又能醒目的提供提醒,我引入了一个模仿msn提醒的浮出窗口(它是来源于codeproject.com上的源码)。

    程序截图:


    教师的登录后界面:


    在系统中使用了一些UserControl页面,例如题目页面,每次装载不同题目。用户选择的答案是一个字符,如果用户已经选择答案,则是ABCD中的一个,如果为选,则设为‘X’,表示还没做答。(这里都是单选题目,尚未设置多选题目的界面。)在用户交卷时,系统检查是否有未答题目,如果有,则提醒考生。

    所有角色的测试帐号:123456 密码:123456
    教师可以增加学生,管理员可以增加教师。

    最后是源代码(code of vs03 & vs05)下载的链接:
    https://files.cnblogs.com/hoodlum1980/ExamSys.rar

  • 相关阅读:
    软件开发测试模式:迭代→全功能模式
    LUN挂载到Linux主机后,如何对磁盘进行分区
    MySQL性能优化方法四:SQL优化
    MySQL性能优化方法三:索引优化
    MySQL性能优化方法二:表结构优化
    MySQL性能优化方法一:缓存参数优化
    MySQL配置文件my.ini或my.cnf的位置
    javascript今生前世
    如何在sublime中使用sass
    全栈最后一公里
  • 原文地址:https://www.cnblogs.com/hoodlum1980/p/961078.html
Copyright © 2011-2022 走看看