基于.NET的Python课程网络在线考试系统的设计与实现

一、在线考试系统概述

1.1  在线考试系统的发展现状
       近年来,随着网络、Web技术的普及,教育领域的信息化改造方兴未艾,国内致力于教育信息化建设开发的企业广泛意识到科技化转型的重要性,通过开发高科技产品降本增效的需求也越来越强烈,在线考试系统正是风口上需求日益大规模增加的系统之一。
   考试是每个学校的必备工具,一般每门课都需要进行期中、期末、补考等考试,以便检查学生对这门课程学习的掌握情况,并给出一个量化的分值作为学生该课程的成绩。目前,为提高教学质量,每个学校对出卷都有一些硬性的规定,如出题的重复率不能超过30%,客观题不多于50%,同一知识点不重复,难度有序递进等,因此出卷对每个教师是一项艰巨的任务。教师通过多年的教学,一般都积累了丰富的考试素材(题库),如何快速地从这些素材中生成符合学校规定的考试试卷,就成了很多一线教师的希望。因此当今传统的考试方式正面临变革,在线考试模式必将成为一种不可或缺的考试方式。在线考试系统提高了考试的可靠性、有效性和工作效率,降低了考试成本,且在线考试系统具有易操作、易管理、流程规范等特点,顺应了社会的网络化趋势,越来越受到学校的青睐。
  1. 高效节约
  传统考试在编写试卷、打印、阅卷、成绩统计等方面需耗费大量的时间和资源。而采用在线考试,试卷按事先设置的考试参数自动自动,学生答题完毕后系统会自动进行阅卷,并核对出最后考卷的分数,从而节约了大量的人、财、物力及时间资源。
  2. 准确客观公正
  在线考试系统主要处理的是标准化试题及试卷,它不但准确、高效、迅速而且能避免人为因素,从而在一定程度上避免人为误差及人情分等问题,保证考试的公平公正。
  3. 智能防作弊功能可有效杜绝考试的作弊现象
  利用在线考试各考生的试卷现场随机生成,不仅试卷卷面顺序不同,同一题目显示的内容也不尽相同,由此可在一定程度避免互相参看抄袭等作弊现象,在监考方面能支持音视频监控、人工干预监考、霸屏考试模式,防切屏更是能杜绝考生用手机作弊的行为。
  4. 智能批改,多维度成绩数据分析
  传统考试可能需要人工一张张试卷的去判别,而考试在线平台可以做到系统自动阅卷,智能对比参考答案与考生答案进行评分,多种评分标准快速精准。填空题识别准确,支持一题多空,多个答案可不分顺序,答案可不区分大小写,简答题可设置多个得分关键词,依据考生答案中的关键词数量模糊评分。
      综合生成考试结果分析,最高分、最低分、平均分、及格率等核心数据直接展示。可按照专业、班级、个人、性别等多维度统计考试成绩、功能全面。快速导出考试结果Excel,免去人工录入考试成绩的繁琐工作。
      总之,在线考试系统的发展现状是非常不错的,其发展趋势也呈指数增长阶段,这体现在线上考试已越来越受学校的重视,使用在线考试系统的人数也越来越多。这不仅仅是在线考试系统单方面好用的原因,其最根本的还是学校需要通过在线考试的方式降本增效,为学校提升教学质量创造有利条件。

1.2  主要研究内容
      试卷自动生成系统是为解决教师出题难的实际需要而开发的,既要满足各类考试的出题所需,与教学中出卷的理念一致,而且要方便参数设置,生成简便。为此,在线考试系统的主要目标为:
    1、系统应具备在线运行功能,用户通过网络随时随地访问和操作。
    2、所有基础数据(班级、学生、课程、章节、学期、知识点、难度)通过前台方便地进行增、删、改操作;
    3、课程试题库管理,教学计划(教师的任课信息)管理,即哪个教师上哪个班级(行政班,虚拟班)的什么课程;
    4、按教学要求,方便设置生成试卷所需的参数:题型、各题型的试题数量、难度、考试类型、组卷等参数
    5、按教学要求,方便设置生成试卷所需的参数:题型、各题型的试题数量、难度、考试类型、组卷等参数
    6、本系统支持:判断题、选择题、多选题、填空题、小型案例、案例分析、编程题等题型;
    7、为防止学生死记硬背,同一选择题的各个选项在不同的试卷中出现的位置可能是不同的;
    8、考试命令的发布及查询;
    9、学生在不考试的时间段以测试账号登录进行在线练习;练习结束后可以核对考试答案;
    10、学生在考试时间内以实际账号登录进行在线考试;
    11、任课教师或管理员登录后实时查看任教班级学生的考试情况(含登录IP监控);考试完成后查阅学生答题情况和成绩;为保存试卷及答卷,系统提供一键自动生成Word试卷的功能,并提供下载;
     12、查看学生的平时练习情况及相关成绩。
     13、该系统不光支持Python课程考试,也支持其它课程的考试(系统中已含有“VB程序设计”、“大学计算机文化基础”、“微宏观经济学”、“统计学”、“基础会计”、“管理学”、“企业税收实务”、“企业管理法规”、“财务会计”、“消费行为学”、“成本会计”、“市场调研与预测”等课程的题库)。

二、开发工具及关键技术

   1、开发平台的选择
     系统采用NET技术。.NET开发平台由一组用于建立Web服务应用程序和Windows桌面应用程序的软件组件构成,包括.NET框架(Framework)、.NET开发者工具和ASP.NET。微软对.NET的定义是The .NET Framework is a new computing platform that simplifies application development in the highly distributed environment of the Internet。意思是,.NET是在高度分布式的互联网环境中,使软件开发简单化的新的计算平台[1]。这里说了分布式的互联网环境,这个很重要,说明以后的商业活动会在网上进行,所以我们应该跟着时代潮流,做程序的时候要考虑到这一点。说白了就是.NET可以提高应用程序开发的速度。
     .NET的优点:跨语言,跨平台,安全,以及对开放互联网标准和协议的支持还可以通过Web Service和.NET Remoting技术在远程与对象交互;支持多种语言的互操作,即在一种语言下开发的组件;可在另一组件下通过面向对象的继承而得以重用;通过将各语言先编译成中间语言(IL);然后再执行时用即时(Just In Time Activation)编译器将之编译成本地平台代码来实现异构平台下对象的互操作,提高代码运行速度;通过公共语言运行库CLR(Common Language Runtime)来实现资源对象,类型的安全;通过对HTTP,XML等Internet标准的支持提供在异构网络环境下获取远程服务;连接远程设备,交互远程应用的编程界面。正因为这些优点,并且对同为微软开发数据库应用的强大支持,大大提高了数据库应用软件开发的效率,缩短了开发周期,所以这里选用.NET开发平台来开发本系统。

2、数据库技术
      数据库系统是一个实际可运行的存储、维护和应用系统提供数据的软件系统,是存储介质、处理对象和管理系统的集合体。它通常由软件、数据库和数据管理员组成。数据库由数据库管理系统统一管理,数据的插入、修改和检索均要通过数据库管理系统进行。数据库管理系统是一种系统软件,它的主要功能是维护数据库并有效地访问数据库中任意部分数据。对数据库的维护包括保持数据的完整性、一致性和安全性。
      (1) SQL Server 2008 r2概述
       SQL Server 是一款面向高端的数据库管理系统,被称为新一代大型电子商务、数据仓库和数据库解决方案,具有强大的数据管理功能,提供了丰富的管理工具支持数据的完整性管理,安全性管理和作业管理。SQL Server具有分布式数据库和数据仓库功能,能进行分布式事务处理和联机分析处理,支持客户机/服务器结构。SQL Server支持标准的ANSI SQL,还把标准SQL扩展成为更为实用的Transact-SQL[3,4]。
      SQL Server 2008 r2扩展了SQL Server 2000版的性能、可靠性、质量和易用性,同时又比它增加了许多更先进的功能、具有使用方便、可伸缩性好与相关软件集成程度高等优点。可跨越从运行Windows 7 的PC电脑到运行Windows Server 2022 的大型多处理器的服务器等多种平台使用。MSSQL Server不但可以应用于大中型数据库管理中,建立分布式关系数据库,并且也可以开发桌面数据库。事实上,SQL Server数据库处理的基本结构,采取关系型数据库模式,尽管如此,相信大家都可以轻易的发现,在SQL Server的数据库处理方式,则是使用面向对象的操作方式与精神,也就是说,SQL Server的所有功能,都可以基于系统已经建立好的一些对象来达成,是相当OO(面向对象)的一个系统结构[5]。
      (2) 数据库系统设计
       数据库对于一个成功的教务管理系统来说是一个非常重要的条件和关键技术。系统所涉及的数据库设计分五个步骤:数据库需求分析、概念设计、逻辑设计、物理设计与加载测试[6]。
      ①  数据库需求分析的任务是明确用户的需求,将业务管理流程化为数据流程,划分模块之间的边界,完成相应的数据字典。
      ②  概念设计的任务是在需求分析阶段的结果的基础上,按照特定的方法把它们抽象为一个不依赖于任何具体机器的数据模型。
      ③  逻辑设计的任务是将概念结构进一步转化为某一DBMS所支持的数据模型,然后根据逻辑设计的准则、数据的语义约束、规范化理论等对数据模型进行适当的调整和优化,形成合理的全局逻辑结构,并设计出用户子模式。
      ④  物理设计的任务是根据具体的计算机系统的特点,为给定的数据库模型确定合理的存储结构和存取方法。实现物理建库,完成数据库物理设计字典[7]。
       加载测试工作贯穿于程序测试工作的全过程,整个录入、修改、查询、处理工作均可视为对数据库的加载测试工作。
      (3) SQL语言介绍
       结构化查询语句SQL(Structured Query Language)目前是数据库的标准主流语言。SQL语言能完成定义关系模式、录入数据以建立数据库、查询、更新、维护、数据库重构、数据库安全性控制等一系列操作要求,具有集DDL(Data Definition Language,数据定义语言)、DML(Data Manipulation Language,数据操纵语言)、DCL(Data Control Language,数据控制语言)为一体的特点。SQL语言具有两种使用方式,用户使用不同的方式时,SQL语言的语法结构是基本一致的,这大大改善了最终用户和程序设计人员之间的通信[8]。在使用SQL语言时,存取路径的选择和SQL语句操作的过程都是由系统自动完成的。虽然SQL语言的功能十分强大,但是它的语法一点都不复杂,十分简洁,SQL语言的语法接近英语口语,因此易学易用。
       SQL语言的数据操纵功能主要包括两个方面:检索和更新(包括增加、修改、删除)。涉及到四个语句:查询(SELECT)、插入(INSERT)、删除(DELETE)和更新(UPDATE)[9]。
       用SQL语言对数据库中的数据进行更新、插入或删除时,都是对单个表进行的,如果表之间没有定义完整性约束,则可能导致多个表之间的数据不一致。

3、 ADO.NET
    (1)  ADO.NET概念
     .NET中对数据库的访问是通过ADO.NET来实现的,ADO.NET是ADO的升级版本,在ADO.NET中数据处理被延伸到三层以上的结构[10]。在ADO.NET中最重要的两个概念是Managed Provider和DataSet, Managed Provider提供了DataSet与数据库之间的联系,并可以通过数据集命令将需要的数据填入DataSet中;DataSet是不依赖于数据库的独立数据集合。即使数据连接断开,DataSet依然是可用的。
ADO.NET 访问数据库的步骤如下:
  ① 创建一个与数据源的连接。
  ② 请求一个数据集合。
  ③ 将集合放入DataDet中。
  ④ 如果需要,可以再请求另外的数据集合。
  ⑤ 关闭数据连接。
  ⑥ 在DataSet上进行所需要的操作。
  ⑦ 如果需要,将DataSet的变化更新到数据库中。
    (2) 数据库访问方式
SqlClient模式只用于访问MS SqlServer数据库,是ADO.NET中比较特殊的组件,对访问MS SqlServer来说,采用SqlClient模式比OleDb、ODBC模式效率更高,所以在本系统中,采用SqlClient模式[11]。
   使用SqlClient时需要引入命名空间有System.Data和System.Data.SqlClient.
    (3) 连接Connection对象
    与Connection对象关联的主要属性是ConnectionString,在本系统中ConnectionString属性如下:
Data source=.;user id=sa;password=123;initial catalog=edu;Connect Timeout=5
并在使用过程中使用Open和Close两种方法打开和关闭数据库连接。
    (4)  数据库操作Command对象
  使用Command执行数据库操作步骤:
  ① 建立数据库连接,使用Connection对象的Open()方法。
  ② 执行数据库操作,使用ExecuteReader()或ExecuteNonQuery()执行数据库命令。
  ③ 关闭数据库连接,使用Connection对象的Close()方法。
    检索数据
   SqlCommand czcmd = new SqlCommand("Select username From userb ", MyConn);
    MyDa.SelectCommand = czcmd;        
    插入数据
 string strSq2 = "INSERT INTO qtckb(ckbh, ckbm, hm,fcbm, ckrq,czy,bz,cjsm,srbldh,czsj)";
strSq2+="VALUES('"+bh.Text.ToString().Trim()+"','"+bm.Text.ToString().Trim()+"','"+hm.Text.ToString().Trim()+"','"+fcname+"','"+ckrq.Value+"','"+czy.Text.ToString().Trim()+"','"+bz.Text.ToString().Trim()+"','"+cjsm.Text.ToString().Trim()+"','"+srbldh.Text.ToString().Trim()+"','"+DateTime.Now.Hour.ToString()+":"+DateTime.Now.Minute.ToString()+":"+DateTime.Now.Second.ToString()+"')";
SqlCommand MyComm2 = new SqlCommand(strSq2, MyConn); 
int count2 = MyComm2.ExecuteNonQuery();    
    修改数据
string strSql =    "Update qtckb Set ckbh = '"+bh.Text.ToString().Trim()+"'"+
" Where ckbh = '"+bh.Text.ToString().Trim()+"'"; 
SqlCommand MyComm = new SqlCommand(strSql, MyConn); 
int count = MyComm.ExecuteNonQuery();    
    删除数据
SqlCommand MyComm1 = new SqlCommand("Delete From qtckmxb Where qtckmxb.ckbh = '"+this.bh.Text.Trim()+"'", MyConn);
int count1 = MyComm1.ExecuteNonQuery();
    (5)  数据库操作DataAdapter对象和DataSet对象
  ① 创建一个数据库连接对象;
  ② 创建一个包含相应数据库查询语句的DataAdapter对象
      string sql_xy = "SELECT kcid,kcm FROM kcb order by kcm";
      SqlDataAdapter Da = new SqlDataAdapter(sql_xy,Conn);
  ③ 创建一个数据集
        DataSet  Ds = new DataSet();
  ④ 执行DataAdapter对象的Fill方法将查询结果添加到数据集中
       Da.Fill(Ds , "Customers")
  ⑤ 对数据集执行相应的操作

4、应用程序配置文件WEB.CONFIG以及数据库访问类DBAccess.cs
WEB.CONFIG文件是为了当数据库服务器发生更改时能方便快捷地更改数据库连接语句:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
      <connectionStrings>
        <add name="conn" connectionString="server=(local);uid=stu;pwd=7142;database=edu" />        </connectionStrings>
</configuration>
DBAccess.cs类是为了在编写代码时方便地使用数据库连接:
static private string strConn = System.Configuration.ConfigurationSettings.AppSettings["sqlConn"];

三、系统分析

3.1  可行性分析

3.2  需求分析

    为满足大多数教师对于在线试卷生成的需要,需要达到以下目标:
    ● 系统人机对话方式,界面简洁、框架清晰、美观友好,信息查询灵活、方便,数据存储安全可靠。
    ● 灵活、快速的上传和下载文件。
    ● 系统最大限度地实现易维护性和易操作性。
    ● 实现管理员对学期、班级、考生、课程、章节、知识点、难度、题型、试题库等系统基础数据的管理与维护;
    ● 实现任课计划的管理;
    ● 课程负责人设置与课程考试有关的参数:考试类型、组卷等参数,发布考试命令;
    ● 任课教师、课程负责人根据设定的参数生成课程考试的Word试卷。

    为此本系统确定应包括基础数据的维护,考试参数的设置与维护,生成试卷并下载等管理功能。

四、数据库设计

      数据库是管理信息系统运行的基础,也是业务数据存放的地方。合理设计的数据库能够提高业务处理的效率,而不合理的数据库设计则可能直接导致系统实施的失败。因此,数据库的设计必须以系统的需求分析为依据。

4.1  数据库概念结构设计

    概念结构设计阶段是整个数据库设计的关键,通过对用户需求进行综合、归纳与抽象,形成一个独立于具体 DBMS 的概念模型。

    1、数据库(Database,DB)
      数据库是长期存储在计算机内、有组织的、可共享的数据集合。数据库技术使数据能按一定格式组织、描述和存储,具有较小的冗余度,较高的数据独立性和易扩展性,并可为一定范围内的多个用户共享。
    2、数据库管理系统(Database Management System.DBMS)
      数据库管理系统位于用户和操作系统之间的一层数据管理软件。它可以科学、有效地组织和存储数据,高效地获取和维护数据。由于DBMS实现的硬件资源、软件环境不同,所以DBMS的功能和性能有差异。但它们通常都具有如下几个方面的基本功能:
    (1)  数据库定义。DBMS提供数据定义语言(Data Definition Language,DDL),通过它可以方便地对数据库的模式结构、数据库的完整性、数据库的安全性等进行定义。这些定义存储在数据字典中,是DBMS运行的基本依据。
    (2)  数据存取。DBMS提供数据操纵语言(Data Manipulation Language,DML),用户可以使用DML操纵数据,实现对数据库的基本操作,如记录查询、插入、删除和修改。
    (3)  数据库运行管理。数据库在建立、运行和维护时由DBMS统一管理、控制,以保证数据的安全性、完整性、多用户对数据的并发访问和发生故障后的系统恢复。
    (4)  数据组织、存储和管理。DBMS要分类组织、存储和管理各种数据,包括数据字典、用户数据、存取路径等。要确定以何种文件结构和存取方式在存储介质上组织这些数据,如何实现数据之间的联系。数据组织和存储的基本目标是提高存储空间利用率和方便存取,提供多种存取方法,提高存取效率。
    (5)  数据库建立和维护。包括数据库初始数据的输入、转换功能,数据库的存储、恢复功能,数据库的重组、性能监视和分析功能等。
    (6)  其他功能。DBMS的功能还包括DBMS与网络中其他软件系统的通信功能;一个DBMS与另一个DBMS或文件系统的数据转换功能;异构数据库之间的互访和互操作功能等。
    3、数据库系统(Database System,DBS)
      数据库系统是指在计算机系统中引入数据库后的系统构成,一般有数据库、数据库管理系统、应用系统、数据库管理员构成。

4.3  逻辑结构设计

      综合试卷在线生成系统的结构分析和功能的实现,数据库是存储在一起的相关数据的集合,这些数据是结构化的,无有害的或不必要的冗余,并为多种应用服务;数据的存储独立于使用它的程序;对数据库插入新数据,修改和检索原有数据均能按一种公用的和可控制的方式进行。当某个系统中存在结构上完全分开的若干个数据库时,则该系统包含一个“数据库集合” [19,20]。教务管理系统数据量是庞大的,因此它所需的数据库应具有灵活性。本系统采用的是SQL Server 2008 R2作为系统的后台数据库。数据库名称为:ExamDBs.

4.4  数据库物理设计

        试卷在线生成系统相关数据表,各表的结构如下:
    1、角色表
     为可更好地完成该系统的运行,设置了角色表。本系统设置了管理员、课程负责人、普通教师三个角色。

表4.1 Role

序号

字段名称

字段类型

长度大小

是否未空

字段说明

1

RoleID

varchar

16

0

角色号

主键

2

RoleNamevarchar

38

0

角色名

3

RoleAuthorityBigint

0

角色权限

     2、 部门表

表4.2 Department

序号

字段名称

字段类型

长度大小

是否未空

字段说明

1

DepartmentID

varchar

6

0

部门号

主键

2

DepartmentNamevarchar

30

0

部门名

3

DepartmentTypetinyint 

1

部门类别

     3、 教师表

表4.3 Teacher

序号

字段名称

字段类型

长度大小

是否未空

字段说明

1

TeacherID

varchar

8

0

教师号

主键

2

TeacherNamevarchar

10

0

姓名

3

DepartmentIDvarchar

6

0

部门号

4Groupsvarchar501所在组
5Sexvarchar21性别
6TelePhonevarchar161联系电话
7PassW varchar160密码

     4、 用户角色表

表4.4 UserRole

序号

字段名称

字段类型

长度大小

是否未空

字段说明

1

UserID

varchar

8

0

用户号

主键

2

RoleID varchar

16

0

角色号

     5、 专业表

表4.5 Speciality

序号

字段名称

字段类型

长度大小

是否未空

字段说明

1

SpecialityID

varchar

8

0

专业号

主键

2

SpecialityName varchar

60

0

专业名

3

DepartmentIDvarchar

6

0

部门号

   6、 班级表

表4.6 Class

序号

字段名称

字段类型

长度大小

是否未空

字段说明

1

ClassID

varchar

10

0

班号

主键

2

ClassName varchar

60

0

班名

3

SpecialityIDvarchar

8

0

专业号

4EntranceYearsmallint1入学年份

   7、 课程表

表4.7 Course

序号

字段名称

字段类型

长度大小

是否未空

字段说明

1

CourseID

varchar

8

0

课程号

主键

2

CourseName varchar

60

0

课程名

3

CreditHourfloat

0

学分

4TotalPeriod smallint0学时
5WeekPeriodsmallint0周学时
6ExprimentPeriodtinyint0实践学时

     8、 章表

表4.8 Chap

序号

字段名称

字段类型

长度大小

是否未空

字段说明

1

ChapID

int

0

章号

主键

2

ChapNamevarchar

50

0

章名

3

CourseIDvarchar

6

0

课程ID

   9、 知识点表

表4.9 kps

序号

字段名称

字段类型

长度大小

是否未空

字段说明

1

kpsID

int

0

知识点号

主键

2

kpsName varchar

50

0

知识点名
3KpContentvarchar380

3

CourseIDvarchar

6

0

课程ID

  10、 难度系数表

表4.10 Difficulty

序号

字段名称

字段类型

长度大小

是否未空

字段说明

1

DifficultyIDtinyint

0

难度系数ID

主键

2

DifficultyNamevarchar

26

0

难度名

   11、 学期表

表4.11 Term

序号

字段名称

字段类型

长度大小

是否未空

字段说明

1

TermIDint

0

学期ID

主键

2

TermNamevarchar

13

0

学期名

   12、 题型表

表4.12 SubjectType

序号

字段名称

字段类型

长度大小

是否未空

字段说明

1

SubjectTypeIDtinyint 

0

题型ID

主键

2

SubjectTypeName varchar

26

0

题型名
3SubjectTypeHintvarchar661该类题型提示
4PointPerSubjectnumeric(6, 1)0该类题型每题的分值

   13、 考试类别表

表4.13 ExamType

序号

字段名称

字段类型

长度大小

是否未空

字段说明

1

ExamTypeIDbigint

0

考试类别ID

主键

2

ExamTypeName varchar

16

0

考试类别名
3EnabledTinyint 0是否参加指定考试
4Range_ChapIDvarchar480出题范围
5CourseIDvarchar80课程ID

  14、 试题表

表4.14 ExamSet

序号

字段名称

字段类型

长度大小

是否未空

字段说明

1

SubjectIDint 

0

题号

主键

2

SubjectTypeIDtinyint 

0

题型ID
3ChapIDint0章ID
4KpsIDint0知识点ID
5DifficultyID tinyint 0难度系数ID
6Subjectvarchar79800主题内容
7ResultNumtinyint 0答案个数
8Option1varchar6881选项1
9Option2varchar6881选项2
10Option3varchar1381选项3
11Option4varchar1381选项4
12Option5varchar1381选项5
13Option6varchar1481选项6
14Option7varchar1381选项7
15Option8varchar1381选项8
16Option9varchar1381选项9
17Option10varchar1381选项10
18Pointnumeric(6, 1)0分值
19ExamTypeIDbigint0考试类型ID
20AnswerToParsevarchar3661解析 

15、 考试参数表

表4.15 ExamOption

序号

字段名称

字段类型

长度大小

是否未空

字段说明

1

ExamOptionIDint 

0

考试参数id

主键

2

CourseIDvarchar

8

0

课程ID
3ExamTimestinyint 0考试时间(分钟)

  16、 试卷题型系数表

表4.16 ExamSubjectType

序号

字段名称

字段类型

长度大小

是否未空

字段说明

1

ExamSubjectTypeIDint 

0

试卷题型id

主键

2

ExamOptionIDint 

0

考试参数ID
3SubjectTypeIDtinyint 0题型ID
4Pointstinyint 0该题型分值
5ExamCounttinyint 0题数
6ScorePerTopictinyint0单题分值

  17、 题型难度系数表

表4.17 Option_Difficulty

序号

字段名称

字段类型

长度大小

是否未空

字段说明

1

ExamSubjectTypeIDint 

0

试卷题型id

主键

2

DifficultyIDtinyint 

0

难度ID
3Pointstinyint 0百分比

  18、 考试状态表

表4.18 TestStatus

序号

字段名称

字段类型

长度大小

是否未空

字段说明

1

TestStatusIDint 

0

考试状态id

主键

2

TestStatusvarchar

16

0

考试状态

19、 考试命令表

表4.19 ExamCommRecord

序号

字段名称

字段类型

长度大小

是否未空

字段说明

1

ECRIDbigint

0

考试命令id

主键

2

ExamOptionIDint 

0

考试参数ID
3ExamTypeIDbigint0考试类别ID
4ExamDatedatetime 0考试时间
5TeacherIDvarchar80发布该考试命令的教师
6CreateDate datetime0发布时间

20、 教学计划表

表4.20 TeacherPlaning

序号

字段名称

字段类型

长度大小

是否未空

字段说明

1

TPIDbigint

0

教学计划id

主键

2

TermIDint 

0

学期ID
3TeacherIDvarchar80教师ID
4ClassIDvarchar480任教班级列表
5CourseIDvarchar80课程id
6TeachingClassTypeIDtinyint0教学班类型

21、 教学计划考试时间表

表4.21 TeacherPlanExamDate

序号

字段名称

字段类型

长度大小

是否未空

字段说明

1

TPIDbigint

0

教学计划id

主键

2

ExamTypeIDbigint

0

考试类别id
3ExamDate smallDatetime1考试时间
4ECRIDbigint0考试命令号

22、 学生表

表4.22 Student

序号

字段名称

字段类型

长度大小

是否未空

字段说明

1

StudentIDvarchar

16

0

学生id

主键

2

StudentNamevarchar

20

0

学生名
3Sexvarchar21性别
4ClassIDvarchar100班级ID
5PassWvarchar160密码
6Telephonevarchar161联系电话
7Emailvarchar381

23、 试卷表

表4.23 TestOption

序号

字段名称

字段类型

长度大小

是否未空

字段说明

1

TestOptionIDbigint

0

试卷号

主键

2

UAIDbigint

0

考生编号
3LoginDateDatetime1首次登录时间
4LoginClientIPvarchar180本场考试首次登录IP
5UploadDatedatetime 0考生上传文件的时间
6UploadFilevarchar321考生上传的文件名
7Score1numeric(6, 1)1第1类题型得分
Score2numeric(6, 1)1第2类题型得分
Score3numeric(6, 1)1第3类题型得分
10Score4numeric(6, 1)1第4类题型得分
11Score5numeric(6, 1)1第5类题型得分
12Score6numeric(6, 1)1第3类题型得分
13Score7numeric(6, 1)1第7类题型得分
14Score8numeric(6, 1)1第8类题型得分
15TotalScorenumeric(6, 1)1考生得分
16TestTypetinyint1考试类型

24、 教学班表

表4.24 TeachingClassStu

序号

字段名称

字段类型

长度大小

是否未空

字段说明

1

TCSIDbigint

0

教学班编号

主键

2

ClassIDvarchar10

0

虚拟班编号
3StudentIDvarchar161学生ID
4Peacemarkvarchar100期中占比
5Endmarkvarchar100期末占比
6Peroidmarkvarchar101平时占比
7Exmmarkvarchar101实验占比
markvarchar101总评成绩

25、 考生表

表4.25 UserAccount

序号

字段名称

字段类型

长度大小

是否未空

字段说明

1

UAIDbigint

0

考生登录号

主键

2

UseraccountIDvarchar16

0

学生名
3ECRIDbigint1考试命令号
4ClassIDvarchar100考试学生所在的班级ID
5TestStartDatedatetime 0考试时间
6TestStatustinyint1考试状态
7TestEndDatedatetime1结束考试时间
TestTypetinyint 1考试类型
TestOptionIDbigint1学生当场考试的试卷号
10Enabledbit1是否参加该考试
11ExamTypeIDbigint1考试类别id

26、 登录表

表4.26 Logins

序号

字段名称

字段类型

长度大小

是否未空

字段说明

1

LoginIDbigint

0

登录号

主键

2

UAID bigint

0

考生登录名
3LoginDate datetime1登录时间
4IpAddressvarchar161登录IP

27、 试卷表

表4.27 ExamPaper

序号

字段名称

字段类型

长度大小

是否未空

字段说明

1

ExamIDbigint

0

题号id

主键

2

TestOptionIDbigint

0

试卷号
3SubjectIDint1题号
4ItemPosint1单选题答案打乱后的具体位置
5StandardAnswerint1标准答案
6UserResultvarchar6801考生答案
7UserPointdecimal(6,1)1考生得分

28、 测试试卷表

表4.28 TestPaper

序号

字段名称

字段类型

长度大小

是否未空

字段说明

1

ExamIDbigint

0

题号id

主键

2

TestOptionIDbigint

0

试卷号
3SubjectIDint1题号
4ItemPosint1单选题答案打乱后的具体位置
5StandardAnswerint1标准答案
6UserResultvarchar6801考生答案
7UserPointdecimal(6,1)1考生得分

五、系统实现

      完成了系统的需求分析之后,就进入了系统的设计阶段,在整个系统的开发时期中,设计阶段是最主要的阶段。按软件生存周期的划分,设计任务通常分两个阶段来完成。第一个阶段是概要设计,它的任务是建立软件的总体结构,即软件的组成,以及各组成成分(子系统或模块)之间的相互联系。第二个阶段是是详细设计,其任务是确定模块的内部算法和数据结构,产生描述各个模块程序过程的详细设计文档。在本系统的设计过程中采取了模块化的设计方法,化繁为简。

5.1  连接数据库

      1、在web.config配置文件的添加一个用于连接数据库字符串的节:
    <connectionStrings>
    <add name="strconn" connectionString="server=.;uid=stu;pwd=7142;database=ExamSet_Python_DBs" />
  </connectionStrings>

      2、编写一个访问数据库的类:DBAccess.cs
public class DBAccess
{
  #region 变量声明
  protected SqlConnection Conn;
  protected DataSet DS;
  protected SqlDataAdapter SDA;
  protected SqlCommand SC = null;
  protected SqlDataReader SDR;
  protected HttpResponse Response;
  #endregion

  #region 构造函数
  /// <summary>
  /// 构造函数
  /// </summary>
  public DBAccess()
  {
    //
    // TODO: 在此处添加构造函数逻辑
    //
  }
  #endregion

  /// <summary>
  /// 打开数据库连接
  /// </summary>
  public void Open()
  {
    try
    {
      string ConnStr = System.Configuration.ConfigurationManager.ConnectionStrings["strconn"].ToString().Trim();
      Conn = new SqlConnection(ConnStr);
      Conn.Open();
    }
    catch (Exception e)
    {
      WriteMessage(e.Message.ToString(), true, true);
    }
  }
  /// <summary>
  /// 关闭数据库连接
  /// </summary>
  public void Close()
  {
    try
    {
      if (Conn == null)
        return;
      if (Conn.State == ConnectionState.Open)
      {
        Conn.Close();
        Conn = null;
      }
    }
    catch (Exception e)
    {
      WriteMessage(e.Message.ToString(), true, true);
    }
  }
  /// <summary>
  /// 释放资源
  /// </summary>
  public void Dispose()
  {
    this.Close();
    if (this.DS != null)
    {
      this.DS.Dispose();
      this.DS = null;
    }
    if (this.SDA != null)
    {
      this.SDA.Dispose();
      this.SDA = null;
    }
    if (this.SC != null)
    {
      this.SC.Dispose();
      this.SC = null;
    }
    if (this.SDR != null)
    {
      if (!this.SDR.IsClosed)
        this.SDR.Close();
      this.SDR = null;
    }
  }

  /// <summary>
  /// 用给定的SQL语句填充DataSet中的一个表并返回该DataSet
  /// </summary>
  /// <param name="strSql">给定的SQL语句</param>
  public DataSet Fill(string strSql)
  {
    try
    {
      if (Conn == null || Conn.State == ConnectionState.Closed)
        Open();
      if (SDA == null)
        SDA = new SqlDataAdapter(strSql, Conn);
      DS = new DataSet();
      SDA.Fill(DS);
      return this.DS;
    }
    catch (Exception e)
    {
      WriteMessage(e.Message.ToString().Trim(), true, true);
      return null;
    }
    finally
    {
      this.Dispose();
    }
  }
......
}

5.2  后台管理登录模块

      网络在线考试系统的大部分数据都是通过后台的若干数据管理模块完成输入和修改的,考试系统的大量参数也是通过后台完成设置的,因此后台管理登录模块至关重要。为规范各类人员的操作权限,系统设置了5个角色:管理员、教务秘书、命题教师、课程任课教师和学生,前4个角色都可以通过该模块登录后,按系统设置的角色权限完成规定的操作,而学生角色通过登录前台管理界面完成测试练习、考试和查看试卷的批阅情况。

 图5.1 后台管理登录界面

 5.3  基础数据的增、删、改

      用于对系统中需要使用的基础数据:班级、学生、课程、章节、知识点、题型等进行管理。其中班级、考生、难度、题型由系统管理员或教务秘书登录后进行管理,其它教师可以查看这些信息,但只能查看没有修改权限。课程、章节、知识点由系统管理员、命题教师或任课教师进行维护。
      用户登录后,进入后台主页,如图5.2所示。

 5.2 试卷在线生成系统后台管理主页

  1. 班级信息管理

       该模块用于对班级信息进行管理。登录后,通过“基础信息”->“班级管理”菜单进入,如图5.3所示。

 5.3 “班级信息”管理页面

       先在页面左测按学院、专业查询到需要操作的班级,单击行后的“修改”超链接进入记录的修改界面,如图5.4所示。

图5.4 “班级信息”修改页面

       修改数据完成后,单击“修改”按钮保存数据。
       也可以单击左上角的“添加班级”按钮,添加一个新的班级,如图5.5所示。

  图5.5  “添加班级”信息页面

       输入班级ID、班名、入学年份、人数,选择学院和专业等数据后,单击“添加”按钮班级添加完成。

2.  考生信息管理

       该模块用于课程学生信息的维护。登录后,通过“基础信息”->“考生管理”菜单进入,如图5.6所示。

 图5.6 “考生登录账号”管理页面

       先在页面左测按学院、专业查询到需要操作的班级,单击记录行后的“修改”超链接进入修改界面,如图5.7所示。

图5.7  “考生信息”修改页面

       修改数据完成后,单击“修改”按钮保存数据。

 3. 课程信息管理

       该模块用于对课程信息进行管理。登录后,通过“基础信息”->“课程管理”菜单进入,如图5.8所示。

5.8 “课程信息”管理页面

       查询到需要操作的课程后,单击行后的“修改”超链接进入记录的修改界面,如图5.9所示。

图5.9 “课程信息”修改页面

       修改数据完成后,单击“修改”按钮保存数据。
       也可以单击左上角的“添加课程”按钮,添加一门新设立的课程,如图5.10所示。

图5.10  “添加课程”信息页面

       输入课程ID、课程名、选择课程类别等数据后,单击“添加”按钮保存数据。

4.  章节信息管理

       该模块用于课程章节信息的维护。登录后,通过“基础信息”->“章节信息”菜单进入,如图5.11所示。

图5.11 “章节信息”管理页面

      单击记录行后的“修改”超链接进入修改界面,如图5.12所示。

图5.12  “章节信息”修改页面

       修改数据完成后,单击“修改”按钮保存数据。
       也可以单击左上角的“添加”按钮,添加一个新的章节,“添加章节”界面与“修改章节”界面大同小异,这里就不一一详述了。

5.  知识点管理

      该模块用于对课程中涉及的知识点进行管理。登录后,通过“基础信息”->“知识点信息”菜单进入,如图5.13所示。

图5.13  “知识点”管理页面

       单击记录行后的“修改”超链接进入修改界面,如图5.14所示。

图5.14 “知识点”修改页面

       修改数据完成后,单击“修改”按钮保存数据。
       也可以单击左上角的“添加知识点”按钮,添加一个新的知识点,“添加知识点”界面与“修改知识点”界面大同小异,这里就不一一详述了。

6.   题型管理

      该模块用于确定试卷中所涉及的出题题型管理。登录后,通过“基础信息”->“题型维护”菜单进入,如图5.15所示。

图5.15 “题型”维护页面

      单击记录行后的“修改”超链接进入修改界面,如图5.16所示。

图5.16 “题型信息”修改页面

       修改数据完成后,单击“修改”按钮保存数据。
7.  试题库维护

        该模块用于对考试出题的试题库进行添加、修改和删除等维护工作。登录后,通过“基础信息”->“试题库维护”菜单进入,如图5.17所示。

图5.17 “试题库维护”页面

      首先可以通过页面上部的“课程”选择要操作的试题所对应的课程,并在其后的“章节”中选择是第几章的试题,并在“题型”选择框中确定要操作的题型后,系统将在页面下部以表格的形式显示对应题库中已录入的试题信息。
      可以单击“修改”超链接进入试题的修改界面,如图5.18所示。

图5.18 “试题修改”页面

      修改数据后,单击“修改”按钮保存数据。
      可以单击左上角的“添加”按钮,添加一个新的试题,如图5.19所示。

图5.19  “添加试题”信息页面

       选择或输入章节、类型编码、所属知识点、难度、考试类型、题目内容、标准答案和答案解析后,单击“添加”按钮保存添加的试题数据。
      可以单击行后的“删除”超链接删除试题,系统弹出如图5.20所示“确认”对话框。

图5.20  确认“删除试题”对话框

      单击“确定”按钮,就可删除选择删除的记录。

8.  新生数据导入

      每年9月新生报到后,大量的新生数据需要导入到系统中。管理员登录后,通过“基础数据”->“考生数据导入”菜单进入,如图5.21所示。导入时Excel文件中必须有以下字段:学号、 姓名、 性别、 学院、 专业名称、 行政班。可以在该页面上进行先通过“浏览”按钮选择一个存放新生数据的Excel文件,然后点击“导入”按钮。

 图5.21 “从Excel导入”界面

      单击“导入”按钮,如图5.22所示。

 图5.22 “学生导入”界面

     从上面的界面可以看到,Excel文件中共有5138名学生,其中5138人已在数据库中,本次导入了0名学生。说明2022级新生数据已导入到系统中(注:与新生相关的新增专业、班级也同步添加到了数据库中相关的表中)。

9.  系统用户管理

      管理员登录后,通过“考试环境”->“用户信息管理”菜单进入,如图5.23所示。可以在该页面上进行用户的添加、修改和删除操作。

 图5.23 “系统用户”管理界面

      (1) 单击“修改”按钮就可修改对应的用户信息,如图5.24所示。

 图5.24 修改“用户信息”界面

      (2)  可以设置用户的密码,设置该用户的系统角色及命题课程(在相关课程前的方框中打勾),选择该用户的审核情况(即是否可以登录该系统)。
      (3)  选择和设置完成后,单击“修改”按钮,就将修改后的用户信息存放到数据库中。

10.  学期参数管理

      管理员登录后,通过“考试环境”->“学期参数管理”菜单进入,如图5.23所示。可以在该页面上进行学期的添加、修改和删除操作。

图5.23 “学期参数”设置界面

      (1) 单击“修改”按钮就可修改对应的学期信息,如图5.24所示。

图5.24 修改“学期参数”界面

      (2)  在“学期”输入框中输入学期、学期开始日期等参数后,单击“修改”按钮就可将修改的学期保存到数据库中。
      (3)  当进入一个新学期时,就需要添加一个新学期的信息。单击“添加”按钮,在出现的“请添加学期参数”界面中输入学期参数后(界面与如图5.24相似),单击“添加”按钮就可将修改的学期信息添加到数据库中。

11.  教师任课安排

      每个学期,每门在线考试的课程都需要在系统中安排好任课教师。教师的任教班级有二种:1是由若干个行政班组成;2是由不同学生选修的课程。
      管理员、教学秘书、命题教师和任课教师登录后,通过“教学计划管理”->“教师任课安排”菜单可以设置由若干个行政班组成的班级,如图5.25所示。可以在该页面上进行教师任课的安排和删除操作,先在左侧的组织机构中选择需要安排教学任务的教师。

图5.25 “教师任课安排”设置界面

      (1) 中间显示出该学期教师的所有任课情况。在单击“修改”按钮就可修改对应的学期信息,如图5.25所示。在“课程”下拉式列表框中,选择该教师的任课课程,如图5.26所示。

图5.26 选择“任教班级”界面

      (2)  在中间左边的“班级”多级列表班级前的方框中打勾后,单击中间下部的“确定”按钮,就将选中的班级设置为该教师的任教课程,并将任教课程显示在中间上部的表格中,如图5.27所示。


图5.27 设置的“任教班级”界面

      (3)  重复以上步骤,将该教师的所有任教班级全部设置完成。

     另外,可以通过“教学计划管理”->“选修班”菜单进入,如图5.28所示。

 图5.28 “选修班”设置界面

      (1)  在“请选择Excel文件路径”中选择一个存放选修课学生名单的Excel文件后,单击“导入”按钮,系统将Excel文件中的选修学生名单显示在中间的表格中,如图5.29所示。


 图5.29 读取到的“选修班学生名单”界面

      (2)  表格中每行最后的学生姓名前,都有一个已打勾的选择框,表示已选择导入。检查完成后,在下部的“任教班级类别”中选择一个类别:补考/选修/重修;在“任课教师”中选择任教该班的教师;在"选修/补考/重修班名"中输入该班的班名后,单击“确定”按钮,系统就将该Excel文件中的学生名单作为选修班设置完成,如图5.30所示。

图5.30 “选修班”设置完成后的界面

      单击中间表格的任教班级行,系统就将该班级的学生名单显示在中间下面的表格中,如图5.31所示。

 图5.31 任教班“学生名单”显示界面

 5.4  生成试卷所需参数的设置

      试卷参数设置用于设定试卷自动生成所需的参数,可由系统管理员或课程负责人完成设置,其中考试参数、考试类型也可由该课程的任课教师完成设置。
      1.   考试类型管理
       用户登录后,通过“考试环境”->“考试类型管理”菜单进入,在选择“课程”后,出现如图5.32所示的考试类型管理界面。

图5.32 考试类型管理页面

      (1) 单击“修改”超链接,进入“修改考试类型参数”,如图5.33所示。

图5.33 考试类型参数修改界面

     (2)  在考试类型、选择出题范围(复选框打勾)等参数后,单击“修改”按钮,保存该考试类型的相关参数。

    2.  组卷参数管理

      管理员或命题教师登录后,通过“考试环境”->“组卷参数管理”菜单进入,如图5.34所示。可以在该页面上对考试参数进行添加、修改和删除操作。

图5.34 查询指定课程的考试参数

    (1) 选择课程后,单击“查询”按钮,出现该学期该课程已录入的组卷参数。若系统中不存在该课程的组卷参数,则系统自动添加一个初始的组卷参数,如图5.35所示。

图5.35 查询到的考试场次参数

    (2) 单击“修改”超链接,进入“修改考试场次参数”,如图5.36所示。

图5.36 修改考试场次参数界面

     (3) 在该界面上可以修改考试时间、是否本场考试等信息,还需要通过下部的“添加题型”按钮添加该考试的出题题型和分值,如图5.37所示。

图5.37 添加/修改考试试卷的题型系数界面

    (4) 在“题型”选择框中选择一种考试题型,在“题数”、“单题分值”输入框中输入该题型要出的试题数与每题的分值,还可以在下面设置试题的难易程度(是所占的百分比,如为0则表示不对难易程度进行设定)。修改完成后,单击“修改”/“添加”按钮,就返回图5.36。
    (5) 修改完成后,单击“修改”按钮,就返回图5.35。

    可以在图5.36中单击“修改”按钮,修改相关题型参数。

    也可以在图5.35中单击“添加”按钮,添加一个考试场次。添加的过程与修改大致相同,这里就不一一叙述了。

5.5  考试

      当系统完成了基础数据的输入及试卷参数设置后,就可以按设置的试卷参数从试卷库中提取试题生成考试所用的试卷。教师可以发布考试命令,学生按发布的考试命令中设置的时间参加线上考试,教师可以在线上监考学生的考试情况:什么时间进入考试,完成考试,考试时间结束,系统就自动完成交卷。考试结束后,教师可以按教学班为单位,将学生的试卷、学生答案与批阅情况自动生成Word文件的形式保存。
      命题教师、教务秘书或管理员登录后,发布考试命令;其他教师可以进行线上监考,任课教师可以生成Word试卷。
    1、发布考试命令
     通过“考试环境”->“发布考试命令”菜单进入,如图5.38所示。

 图5.38 “发布考试命令”界面

    (1) 在上图的“考试类型”一栏中选择是什么考试:期中、期末、补考或重修;在“考试开始时间”中输入该场考试的起始时间;在下面的教学班表格中行尾的选择框中选择要在该时间进行考试的班级;
    (2) 选择和输入完毕,单击右上角的“确定”按钮,系统弹出如图5.39所示的“考试命令成功发布”提示框,表示这场考试已发布完成;

  图5.39 “考试命令”发布成功提示框

    (3)  重复以上步骤,将本次考试全部发布完毕。

  2、查看考试命令及考生情况
      发布考试命令后,就可以通过“考试环境”->“考试命令及相关考生情况”菜单进入,如图5.40所示。

  图5.40 发布的“考试命令”清单

     (1)  单击“考试班级”行后的“详细”超链接,系统就将该教学班参加考试的学生名单显示出来,如图5.41所示。

   图5.41 “考试命令”涉及的考生名单

     (2)  若学生确定不参加该场考试,可以通过考生行后的“删除”超链接删除。删除后该考生就无法参加该场考试了。若该考试命令发布不正确,需要删除,则在该页面的最底部有一个“删除全部”的按钮,单击该按钮,就可将该场考试删除。

  3、学生练习和参加考试

      本系统的练习和考试界面是同一个,当系统处于非考试时间,则所有学生都可以进行练习;否则处于考试时间时,只允许该场考试的学生进入考试。
      学生通过http://192.168.0.106/testpaper/ 进入练习或考试界面,如图5.42所示。

图5.42 “练习或考试”登录界面

      一、在线练习
       在登录界面的中间,可以看到系统目前处于练习状态。这里所有学生都可以登录后进行练习。登录后,练习界面,如图5.43所示。

 图5.43 “练习或考试”答题界面

      练习界面的最下面,是“保存”按钮、上交编程题压缩包的文件上传控件和“交卷”按钮,如图5.44所示。

  图5.44 “练习或考试”答题界面(2)

  考生考试和练习过程中,可以单击“保存”按钮保存答题结果。离考试和练习结束不够5分钟时,系统将在试卷卷面的右上角闪烁地显示“请抓紧时间交卷!”(红色字显示)信息,如图5.45所示。

图5.45  “练习或考试”考试时间提示

      当考生考试和练习过程结束时,可以单击“交卷”按钮完成。
      当考试时间结束时,也可由系统自动进行“交卷”操作。交卷成功后,出现如图5.46所示的成绩和试卷显示界面,这时卷面就不能再答题了。

图5.46  “交卷”成功后的卷面

       二、在线考试
       当系统处于“在线考试”状态时,考生必须以实际帐号进行登录,并进行考试,如图5.47所示。

 图5.47  “倒计时”等待“在线考试”登录界面

       考试时间一到,则系统自动将“登录”按钮变为有效,如图5.48所示。

 图5.48  考生“在线考试”登录界面

      输入实际准考证号和密码,单击“登录”按钮,就可进入考试界面,如图5.49所示。 

图5.49  考生“在线考试”答题界面

      考试过程与练习一样,这里就不重复了。

  4、考试情况监控

       考试开始后,监考教师登录系统后台后,通过“考试情况”->“考试情况监控”菜单进入,如图5.50所示。

 图5.50  选择监考的“考试场次”界面

      选择完毕,单击其后的“查询”按钮,出现该场次所有考试班级的列表,如图5.51所示。

图5.51  该“考试场次”所有考试班级的列表界面

      该列表中显示了各教学班学生参加考试的总体情况。单击要监考的教学班后的“明细”超链接,系统显示该教学班学生参加考试的所有情况,如图5.52所示。

 图5.52  选择的“教学班”的学生考试情况界面

  5、考试成绩管理

      当所有学生考试完成后,任课教师登录系统后台后,通过“考试情况”->“考试成绩管理”菜单进入,如图5.53所示。

  图5.53  选择考试的“教学班”

       (1) 选择任教的教学班后,单击“查询”按钮,系统显示该教学班所有参加考试的学生情况表格,如图5.54所示。

图5.54  任教“教学班”的考试情况

      (2) 表格中每个考生行后都有一个“明细”超链接,点击后可以看到该考生的答题和得分情况,如图5.55所示。

 图5.55  考生“答题和得分”情况表

      (3) 单击图5.54中下部的“下载上交程序压缩包”,就可下载考生上传的编程题压缩包;单击“生成试卷”,系统就将该教学班所有考生的试卷生成Word文件后,自动打包后提供下载,如图5.56所示。

  图5.56  考生Word试卷“生成”提示信息

      (4) 单击“确定”后,页面的右边将出现“下载Word试卷压缩包”超链接,提供Word试卷压缩包的下载,如图5.57所示。

图5.57 生成的“下载Word试卷压缩包”超链接

    (5) 单击“下载Word试卷压缩包”链接,系统弹出“新建下载任务”对话框,如图5.58所示。

  图5.58 “新建下载任务”对话框

    (6) 点击“浏览”,选择文件“保存位置”,如图5.59所示。

图5.59  “选择文件保存位置”对话框

    (7) 选择保存位置后,单击“确定”->"下载"。随后打开下载的压缩文件,并将其中的试卷文件解压到指定的目录中,如图5.60所示。

图5.60 解压文件

    (8) 从图5.60中可以看到,有1个Word文件,就是考生考试的试卷内容。
    (9) 打开其中的某一个Word文件,可以看到试卷的内容,如图5.61所示。

图5.61 生成的课程考试试卷

六、系统测试

     试卷生成系统完成后,对每个功能进行了测试,与设计目标一致。

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
【资源说明】 课程设计基于python实现的成绩查询系统源码.zip课程设计基于python实现的成绩查询系统源码.zip课程设计基于python实现的成绩查询系统源码.zip课程设计基于python实现的成绩查询系统源码.zip课程设计基于python实现的成绩查询系统源码.zip课程设计基于python实现的成绩查询系统源码.zip课程设计基于python实现的成绩查询系统源码.zip课程设计基于python实现的成绩查询系统源码.zip课程设计基于python实现的成绩查询系统源码.zip课程设计基于python实现的成绩查询系统源码.zip课程设计基于python实现的成绩查询系统源码.zip课程设计基于python实现的成绩查询系统源码.zip课程设计基于python实现的成绩查询系统源码.zip课程设计基于python实现的成绩查询系统源码.zip课程设计基于python实现的成绩查询系统源码.zip课程设计基于python实现的成绩查询系统源码.zip 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!
设计一个基于 Python在线考试系统,可以分为以下几个模块: 1. 用户管理模块:实现用户的注册、登录、修改密码等功能。 2. 试题管理模块:实现试题的录入、修改、删除等功能。 3. 考试管理模块:实现考试的创建、编辑、删除等功能。 4. 考试答题模块:实现考生对试题的答题、提交、查看成绩等功能。 具体实现步骤如下: 1. 用户管理模块: (1)使用 Python 的 Flask 框架搭建 Web 应用,实现页面的渲染和数据的传输。 (2)使用 SQLAlchemy 模块操作数据库,实现用户的注册、登录、修改密码等功能。 (3)在用户登录成功后,使用 Flask 的 session 对象保存用户信息,确保用户的身份验证。 2. 试题管理模块: (1)使用 Flask 的模板引擎渲染试题管理页面,实现试题的录入、修改、删除等功能。 (2)使用 SQLAlchemy 模块对试题进行增删改查操作,将数据存储在数据库中。 3. 考试管理模块: (1)使用 Flask 的模板引擎渲染考试管理页面,实现考试的创建、编辑、删除等功能。 (2)使用 SQLAlchemy 模块对考试信息进行增删改查操作,将数据存储在数据库中。 4. 考试答题模块: (1)使用 Flask 的模板引擎渲染考试页面,展示试题和答题界面。 (2)使用 Flask 的 session 对象保存用户信息和考试信息。 (3)使用 SQLAlchemy 模块对答题结果进行保存和查询操作,将数据存储在数据库中。 (4)使用 JavaScript 和 AJAX 实现试题的异步加载和提交,提高用户体验。 以上是基于 Python在线考试系统设计实现的简单介绍,具体实现过程中需要根据需求进行相应调整和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

axmanHZ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值