state int 考试状态
(2)考生试卷表用来保存考生试卷信息,如表2所示:
表2 考生试卷表
表名:PD_Test 中文名:考生试卷表
说明:保存考生试卷信息
字段名 数据类型及长度 中文含义 约束 备注
testID int 试卷ID 主键
testContent nvarchar(50) 试卷名
stuID varchar 考生ID
testUrl nvarchar(50) 试卷存放地址
testTime datetime 考试时间段
(3)管理员信息表用来保存管理员信息,如表3所示:
表3 管理员信息表
表名:administrator 中文名:管理员信息表
说明:保存管理员信息
字段名 数据类型及长度 中文含义 约束 备注
ID int 自增ID
adminID varchar 管理员帐号 主键
adminPwd varchar 管理员密码
4.2数据库逻辑结构设计
数据库设计中,通常使用E-R图对需求分析阶段的数据进行分类,形成实体、实体的属性和实体的标识码,并确定实体之间的关系,根据数据库需求分析以及前面系统分析得到系统各实体间的关系,主要是管理员,学生,试卷的管理关系。数据库总体E-R图如图3所示。
图3 数据库总体E-R图
5.系统详细设计与实现
本系统用户有两种身份:学生和管理员。系统主要完成用户登录、试卷下载、试卷上传、考试状态监控等功能,以下将详细介绍具体的实现。
5.1公共类设计
在开发过程中,经常会用到一些公共模块,如数据库连接及操作的类、字符串处理的类等。数据库操作类用来完成数据库的连接操作,以及数据库的查询、添加、删除和修改操作。将这几种操作编写到一个公共类里,可以减少重复代码的编写,有利于代码的文护。
DbHelperSQL公共类中一共定义了7个方法,如表4所示。
表4 DbHelperSQL类的方法说明表
方法名 说明
ColumnExist 判断是否存在某表的某个字段,此方法的返回值类型是bool。
ExecuteReader 执行查询语句,返回SqlDataReader ( 注意:调用该方法后,一定要对SqlDataReader进行Close )。
ExecuteSql 执行SQL语句,返回影响的记录数,返回值类型是整型。
GetMaxID 获取表中新添加记录的某一列的值。返回值类型是整型。
GetSingle 执行一条计算查询结果语句,返回查询结果(object)。
Query 执行查询语句,返回DataSet数据集。
RunProcedure 执行存储过程,可以返回的类型: SqlDataReader、int(影响的行数)、DataSet数据集。
5.2用户登录
考生登录时,首先是用户名、密码验证,应用程序根据用户输入的用户身份首先从数据库相应的数据表里获取用户的信息,检索用户信息表,核对用户的用户名、密码。如果用户名不存在或者密码输入不正确,显示出错提示信息,用户需要重新输入信息;最后是验证考生所用机器的IP地址,考生的用户名、密码验证成功后,根据该考生的用户名检索学生信息表中的IP字段,如果IP为空则考生是第一次登录系统,系统将会把该机器的IP地址自动保存到数据库中的学生信息表中,并且验证通过,考生进入相应的主操作页面。但是如果IP不为空,则考生不是第一次登录,系统将会把该机器的IP地址与学生信息表中的IP作对比,如果IP不同系统将会显示错误提示信息,考生需与管理员联系进行处理,处理完成后,考生才能再次登录系统进入相应的主操作页面。考生登录流程图如图4所示。 ASP.net+sqlserver上机考试管理系统设计与实现(3):http://www.youerw.com/jisuanji/lunwen_2122.html