搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
盐析白兔
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
linux shell常用实例,常用shell实例1
2
鸿蒙Harmony应用开发—ArkTS声明式开发(容器组件:FormLink)
3
快速上手GitGUI实现多人项目开发_fetch form remote
4
Java包名的命名规则_java模块下的包命名
5
MOOC·嵩天老师团队·北京理工大学:《Python语言程序设计》自学笔记_mooc北理工嵩天老师
6
可用于实时嵌入式设备的心电信号基线漂移滤除方法——基于延迟的近似零相位IIR滤波器_和零相位相似的滤波算法
7
IDEA常见错误_visual layout of bidirectional
8
Java无人售货机管理系统(毕设源码+mysql+lw)_无人售货机管理系统源码
9
Docker上安装部署Elasticsearch(ES)详细教程_docker 安装es
10
鸿蒙会不会跟安卓一样,华为发布“鸿蒙系统”后,安卓系统会不会像WP系统一样消亡?...
当前位置:
article
> 正文
利用ASP.NET构建网上考试系统_asp.net开发一个简单的在线考试程序,包括单选题、多选题和填空题,单击“交卷”按
作者:盐析白兔 | 2024-03-10 11:18:14
赞
踩
asp.net开发一个简单的在线考试程序,包括单选题、多选题和填空题,单击“交卷”按
随着计算机
网络
的普及,基于数据库的B/S网上考试系统得到广泛地应用,现以ASP.net(C#)+SQL server(或ACCESS)为例说明开发网上考试系统的实现方法。
一、数据库的设计:
建立数据库netexam,在库中添加考生信息表StuInfo,分别建立以下字段:考号ExamId(c)(主键)、考生姓名Name(c)、是否登录考试LogYn(c)、得分Score(c)、随机生成的试题答案mca(c) (注:此处以多选题为例,单选题、判断题同理)。添加多选题题库表mc,建立以下字段:题目question(c)、四个选choice1(c)、choice2(c)、choice3(c)、choice4(c)、答案answer(c)(注:多选题答案用0表示未选,1表示选择,如选择ABD就用1101表示)。
二、考生登录:
在此处将考生信息插入表StuInfo,此处要防止考生重复登录!给指定唯一的考号,并将考号字段ExamId(c)设为主键,当重复登录时,用Catch捕获错误,给出相应提示,部分代码如下(login.aspx):
private void ButOk_Click(object sender, System.EventArgs e)
{
...
SqlConnection StuConn=new SqlConnection("Data Source=localhost;Integrated Security=SSPI;
Initial Catalog=netexam");
SqlCommand LoginCmd=StuConn.CreateCommand(); //可根据不同情况选择不同的数据库连接
...
LoginCmd.CommandText="Insert into StuInfo(ExamId,Name) values('"+TxtId.Text.Trim()+"','"+TxtName.Text.Trim()+"')";
//将考号、姓名插入相应字段,其中TxtId,TxtName分别是输入考号和姓名的文本框
try
{
...
Session["Id"]=TxtId.Text.Trim();
StuConn.Open();
LoginCmd.ExecuteReader();
Response.Redirect("test.aspx");
}
catch(Exception) //捕获相应错误
{
Response.Write("<script language=/"javascript/">"+"/n");
Response.Write("alert(/"不能重复登录,或考号、姓名、密码是否有误!/")"+"/n</script>");
}
...
}
三、试题生成:
1、防止考生刷新页面:
由于加载试题页面时将从数据库中随机抽取试题,所以应防止考生刷新面页(刷新页面会重新生成新的试题)。方法是将表StuInfo中的LogYn字段默认值设为0,加载试题后设为1,交卷评分后设为2,加载试题页面时进行相应检查,以防止页面的刷新,代码如下(test.aspx):
private void Page_Load(object sender, System.EventArgs e)
{
if(!IsPostBack)
{
...
QuestCmd.CommandText="select LogYn from StuInfo where ExamId= '"+ Session["Id"].ToString()+"'";
QuestConn.Open();
SqlDataReader QuestRd=QuestCmd.ExecuteReader();
QuestRd.Read();
if(QuestRd["LogYn"].ToString().Trim().Equals("1")||QuestRd["LogYn"].ToString().Trim().Equals("2"))
//判断是否已加载试题或是否已评分
{
...
Response.Write("<script language=/"javascript/">"+"/n");
Response.Write("alert(/"不能刷新!请与管理员联系,重新登录。/")"+"/n</script>");
...
}
else
{
...
QuestCmd.CommandText="update StuInfo set LogYn='1'"; //已成功加载试题
QuestCmd.ExecuteReader();
...
}
}
...
}
2、随机生成试题:
网上考试系统的关键是试题的随机生成,即对于不同的计算机访问系统时将从题库中随机地抽取不同的试题。
在此我们可使用SQL语句"select top n * from mc order by newid()"从题库中随机抽取n条记录,其中newid()生成 uniqueidentifier 值(若是ACCESS数据库则用"select top n * from mc order by rnd(id)",其中id为自动编号字段)。
在test.aspx页面上放置一个Panel容器控件,以便动态生成绑定到试题的控件,并将从表mc中随机生成的试题答案写入表StuInfo表中的mca字段,代码如下(test.aspx):
private void Page_Load(object sender, System.EventArgs e)
{
if(!IsPostBack)
{
...
QuestCmd.CommandText="select top 10 * from mc order by newid()";//以随机生成10道题为例
QuestConn.Open();
QuestRd=QuestCmd.ExecuteReader();
while(QuestRd.Read())
{
Literal LitTxt=new Literal();
Literal LitBl=new Literal();
CheckBoxList ChkMc=new CheckBoxList();
ChkMc.ID="ChkMc"+i.ToString();
LitTxt.Text=i.ToString()+"、 "+Server.HtmlEncode(QuestRd["Question"].ToString())+"<BR><Blockquote>";
LitBl.Text="</Blockquote>";
ChkMc.Font.Size=11;
for(int j=1;j<=4;j++)
{
ChkMc.Items.Add(Server.HtmlEncode(QuestRd["Choice"+j.ToString()].ToString()));
ChkMc.Items[j-1].Value=j.ToString();
}
mcStr+=QuestRd["Answer"].ToString().Trim(); //mcStr是存储随机生成试题答案的字符串变量
MyPanel.Controls.Add(LitTxt);
MyPanel.Controls.Add(ChkMc);
MyPanel.Controls.Add(LitBl);
i++;
}
...
QuestCmd.CommandText="update StuInfo set Mca='"+mcStr+"' where ExamId= '" +Session["Id"].ToString()+"'"; //将随机生成试题答案写入数据表
QuestConn.Open();
QuestRd=QuestCmd.ExecuteReader();
...
}
...
}
四、交卷评分:
当用户点击交卷按钮后,应将用户的答题结果与试题答案进行比对,并给出相应的分值写入数据表,最后将表StuInfo中的LogYn字段设置为2,显示考试得分,代码如下(test.aspx):
private void ButSend_Click(object sender, System.EventArgs e)
{
...
for(int i=1;i<=10;i++) //由于随机生成了10道题,所以循环10次
{
for(int j=0;j<4;j++)
if(Request.Form["ChkMc"+i.ToString()+":"+j.ToString()]!=null)
mcs+="1"; //mcs是存储考生所选答案的字符串变量,已选用"1"表示,未选用"0"表示
else
mcs+="0";
}
...
QuestCmd.CommandText="select mca from StuInfo where ExamId= '" +Session["Id"].ToString()+"'";
QuestConn.Open();
SqlDataReader QuestRd=QuestCmd.ExecuteReader();
QuestRd.Read();
int StuScore=0; //存储得分的变量
for(i=0;i<10;i+=4)
{
if(QuestRd["mca"].ToString().Substring(i,4).Equals(mcs.Substring(i,4)))
StuScore+=2; //从字段mca和mcs中每次取四个字符进行比对,如相等则加上2分
}
...
QuestCmd.CommandText="update StuInfo set score="+StuScore.ToString()+",LogYn='2' where ExamId= '" + Session["Id"].ToString()+"'and LogYn='1'"; //设置已评分标志
QuestRd=QuestCmd.ExecuteReader();
...
Response.Redirect("score.aspx"); //显示考试得分页面
...
}
限于篇幅,在此只列出了实现网上考试系统的几个要点,读者可根据自已的需要进一步完善相应的数据验证、后台管理及界面设计。
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/盐析白兔/article/detail/217892
推荐阅读
article
Biomedical
knowledge
graph
-
enhanced
prompt
generat...
大语言模型(LLM)一直在以前所未有的速度推动人工智能的进步,但在生物医学等知识密集型领域仍然面临挑战。预训练和特定领域...
赞
踩
article
【附源码】
Java
计算机
毕业设计
作业
查重
系统(程序+LW+部署)
_
文档
查重
开源
实现
...
项目运行环境配置:Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+...
赞
踩
article
华为
OD
机试
(2022&
2023
)
真题
目录 + 考点 +
复盘
思路_
华为
od
机试
真题
题库...
华为
OD
,千机百炼_
华为
od
机试
真题
题库
华为
od
机试
真题
题库 ...
赞
踩
article
2024
年
AI
辅助
研发
:
科技
变革的引擎...
2024
年
AI
辅助
研发
:
科技
变革的引擎
2024
年
AI
辅助
研发
:
科技
变革的引擎 &nb...
赞
踩
article
mac
安装
pymssql
遇见的问题_
mac
raise
calledprocesserror
(ret...
mac
安装
pymssql
可以直接在终端运行: pip install
pymssql
Jason-MacBook-Pro:~...
赞
踩
article
《
BERT
基础教程
:
Transformer
大
模型
实战》
读书笔记
...
概念、原理;变体:AL
BERT
、Ro
BERT
a、ELECTRA、Span
BERT
、Distil
BERT
、Tiny
BERT
...
赞
踩
article
oracle
日期
格式...
to_date("要转换的字符串","转换的格式") 两个参数的格式必须匹配,否则会报错。即按照第二个参数的格式解释第一...
赞
踩
article
【步骤详解】
Docker
一键
部署
微
服务
详细教程_
docker
部署
微
服务
项目实现过程...
我们使用
Docker
完成一个
微
服务
的搭建过程我们需要在总pom文件定义全局配置,例如nacos、mysql等配置_doc...
赞
踩
article
Ubuntu
24.04
抢先体验换国内
源
清华
源
阿里
源
中科大
源
163
源
_ubuntu24.0...
代号,即将与我们见面!Canonical 已经宣布,作为 LTS 版本,它会有 5 年的常规维护和安全更新。如果订阅Ub...
赞
踩
article
Rustdesk
内网
服务器
端口映射到外网IP 不能访问_
rustdesk
无法
通过
中继
服务器
建立
连接
...
21115.22216.2116(udp).2117.2118.2119 端口都开放就是
无法
连接
到
中继
服务器
, 希望前辈...
赞
踩
article
pytorch
学习笔记(七)——
pytorch
中
现有
网络
模型
的
使用
、
修改
、
模型
的保存、
加载
_
加载
模型
...
位于torchvision.models
使用
vgg
模型
为例,采用的数据集是ImageNet,而ImageNet数据集
使用
...
赞
踩
article
关于
ssd
存储原理
的
介绍_
fstrim
debian
...
众所周知SSD
的
读写速度远比hdd磁盘要快,理解
ssd
的
工作原理使我们开发处高效储存方案。linux 相关指令fstri...
赞
踩
article
Hibernate
查询时
,
在控制台有发送SQL
语句
,
没有
打印
查询结果。_
hibernate
打印
...
1.org.
hibernate
.SessionException:Session was already closed错...
赞
踩
article
Oracle
日期格式化问题:
to
_
date
(sys
date
,'
yyyy
-MM-
dd
')与
to
_
da...
Oracle
日期格式化以问题:
to
_
date
(sys
date
,'
yyyy
-MM-
dd
')与
to
_
date
(
to
_
cha...
赞
踩
article
基于
SpringBoot
的
音乐网站
...
随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了
音乐网站
的开发全过程。通过分...
赞
踩
article
微信小
程序
点击
事件
...
1、效果2、界面布局通过 bind 或者 catch 属性 来绑定相关
事件
,和触发时调用函数3、逻辑文件在 pages ...
赞
踩
article
MySQL
操作之
事务
管理_
mysql
ddl
事务
...
一、概念1.1 简介1.2
事务
的4个特性二、
事务
的提交、回滚三、
事务
的隔离级别3.1 并发问题3.3
事务
隔离级别3....
赞
踩
article
群晖
DS
Video
支持
DTS
音轨
(最新
解决方案
)_
mac
群晖
音轨
...
让你的群辉DS
Video
播放
DTS
音轨
不再是梦!_
mac
群晖
音轨
mac
群晖
音轨
目录 ...
赞
踩
article
搭建我的世界
Minecraft
服务器
_
minecraft
_
server
...
在Windows中,您可以在
Minecraft
服务器
文件夹中双击“start.bat”文件来启动
服务器
。在您的
服务器
文件...
赞
踩
article
JS把
两个
数组
对象
合并
过程解析
_
js
两个
数组
对象
合并
...
JS把
两个
数组
对象
合并
过程解析var obj1 = [ { "id": 1, "name" : "Lucy" }...
赞
踩
相关标签
知识图谱
prompt
语言模型
java
课程设计
mybatis
算法
华为机试
人工智能
科技
python pymssql
数据库
程序员
docker
微服务
ubuntu
linux
运维
ssh
pytorch
深度学习
python
ssd
Hibernate
Oracle