ASP消防网上考试系统设计与实现
本文以ASP和Access数据库来开发服务器端,通过计算机网络技术实现了一个针对消防部队警官的网上考试系统。为了。提高消防部队的工作效率和信息化水平,体现消防部队信息化进程的特色,开发一个适合消防部队的计算机网上考试系统是非常必要的。鉴于计算机网络在消防部门的广泛应用,为了消防部队的信息化建设的需要,我们开发了本网上考试系统。它主要是在计算机网络环境中实现客户端访问服务器端,实现考试、成绩查询和对考试系统的管理等功能。并根据这一功能对该系统开发的可行性和实现过程进行了详细的介绍。
为了适应信息时代发展,提高消防部队的工作效率和信息化水平,体现消防部队信息化进程的特色,开发一个适合消防部队的计算机网上考试系统是非常必要的。鉴于计算机网络在消防部门的广泛应用,为了消防部队的信息化建设的需要,我们开发了本网上考试系统。它既能提高我消防部队的信息化程度又能节省消防部门在警官考核上的人力和物力。对提高消防部队警官的文化素质和思想素质起到了积极的作用。它也为消防部队选拔人才提供了一种很好的工具。同时它也是运用所学知识进行自我实践应用能力的一次考核。
本考试系统分为6主要功能模块。即系统登录模块、在线考试新闻模块、在线考试模块、在线题库管理模块、试卷生成模块、和在线成绩查询模块。功能模块如图2-2所示。
当用户要进入系统进行操作时,要求用户进入登录页面进行登录。登录时用的用户名和密码是管理员事先分配好的。用户登录时要选择登录模式,默认为普通用户模式。当管理员登录十要选择管理员登录模式进行登录。普通用户登录成功后可以进行考试和成绩查询等操作。本系统只有一个管理员。管理员登录后可以对考试系统内的相关信息和功能进行操作。该模块主要是用于用户的登录及身份的验证。用户进入系统后就要选择“重新登录”,进行用户的登录操作。它主要有3个表单元素,其中两个文本框用来输入用户名和密码,另一个复选框用于标识登录用户是否用管理员模式登录。系统登录界面如图3-2所示:
该模块的主要ASP代码如下:
<%’接收登录用户信息
userid=request("userid")
pwd=request("pwd")
kind=request("kind")
’在数据库中查找这个记录
sql="select * from cadre_info where userid="&userid&" and pwd='"&pwd&"'"
set rs=server.createobject("adodb.recordset")
rs.open sql,conn,3,2
if rs.eof then
’找不到则转到错误处理
else
userid=rs("userid")
username=rs("username")
department=rs("department")
office=rs("office")
duties=rs("duties")
post=rs("post")
rank=rs("rank")
spower=rs("spower")
rs.close
end if%>
该程序中用到了Cookies,它是一个储存于浏览器目录中的文本文件,记录你访问一个特定站点的信息,且只能被创建这个Cookies的站点读回。当用户正在浏览某站点时,它储存于用户机的随机存取存储器RAM中,退出浏览器后,它储存于用户的硬盘中。
对用户登录是出现错误时要进行错误信息的处理。主要包括,用户名或密码不正确,用户不具有管理员权限而进行管理员模式的登录等错误信息。当出现以上错误时系统转入loginleftframe.asp进行处理。本系统判断错误信息类型的代码如下:
’通过用户验证页传来的错误信息进行错误类型的判断。
<%if request("temp")="error" then%>
’输出用户名或者密码错误!
<%end if%>
<%if request("temp")="nota" then%>
’输出你不是系统管理员!
<%end if%>
用户进入系统后可以查看考试新闻,了解是否有自己需要参加的考试科目。考试新闻有管理员进行发布,经部队领导审核通过后发布出来。它的主要功能就是让用户及时了解考试信息,以及考试信息的发布。
该模块主要是用于实现考试新闻的发布与查看。新闻的发布主要由postnews.asp文件来完成。管理员用新闻编辑器对新闻内容进行编辑后提交审核。用户查看新闻时通过点击新闻的标题来进入到显示新闻内容的页面。主要new.asp 来实现。新闻的编辑主要有一个新闻文本编辑器来完成。在此出就不给出其代码了。新闻发布功能的界面如图3-3所示:
考试新闻查看主要是指用户查看经过领导审核同意发布后的考试新闻。所以在显示考试新闻时要判断新闻的审核意见,只有经过同意发布的新闻才能显示给用户浏览,所以在程序中要设计一段查看新闻是否通过审核的程序段。用户实现新闻查看功能的主要ASP代码如下:
<%<!--在数据库中查找已经通过审核的新闻。
sql="select * from waitforpass where havepass=1 and objname='新闻'"
set rs=server.createobject("adodb.recordset")
rs.open sql,conn,3,2
do while not rs.eof
sql1="select * from exam_news where newsid="& rs("objid")
set rs1=server.createobject("adodb.recordset")
rs1.open sql1,conn,3,2
’判断新闻是否为新的消息
<%if (date()-rs1("fabsj"))<3 then%>
<%end if%>
<%rs1.close
rs.movenext
loop %>
<%if request.cookies("userid")<>"" then
rs.close%>
题库管理模块主要实现对题库的操作。该模块的主要功能是,管理员登录系统后,可以对题库方便的进行操作。管理员可以添加、删除题库中的考试科目和试题。本模块主要实现对考试科目的添加、删除和各个科目试题的添加等操作。该模块主要由科目管理和题库管理两大块组成。科目管理由科目管理页组成,该页要实现接收用户添加或删除的考试科目题,然后对数据库进行相应的操作。题库管理主要由添加试题页和试题编辑页两个页面组成。添加试题页主要是实现得到试题信息后把试题添加到数据库的表中。试题编辑主要是用一个“form”来记录用户输入的试题信息,然后传递给添加试题页。
在科目管理页面中实现考试科目添加与删除功能的主要代码如下:
<%’此段程序实现科目的保存功能
exam_subject=trim(request("exam_subject"))
sql="select * from exam_subject"
set rs=server.createobject("adodb.recordset")
rs.open sql,conn,3,2
rs.addnew
rs("exam_subject")=exam_subject
rs.update
response.redirect "adminsubject.asp"%>
’此程序段实现对科目的删除。
<%dim i
dim j
id=request("id")
id=split(id,",") ' 将输入框中的多个变量分离开来
i=ubound(id)
'response.write i
for j=0 to i
sql="select * from exam_subject where id="& cint(id(j))
set rs=server.createobject("adodb.recordset")
rs.open sql,conn,3,2
if not rs.eof then
rs.delete
rs.update
rs.close
end if
next%>
题库管理功能主要实现添加试题及试题的编辑,此部分的数据输入由试题编辑页完成,它把用户输入的数据传递给实现数据添加的ASP文件中。添加试题的页面如图3-4所示:
上面的程序是实现单选题的添加功能,其他题型的添加程序和单选题类似,在此就不给出实现其它题型添加功能的程序了。程序中的各个变量都是在试题编辑页面中用户添加的内容,由试题编辑页面发送给实现试题添加的ASP文件中,实现对数据库的更新。
试卷生成模块要实现试卷的生成和参考人员的确定功能。由管理员进入系统后,进行生成试卷操作。生成试卷时首先是试卷结构的操作,包括:试卷的科目、题型、每个题型的试题数目和分数、试卷总分、考试时间的设置。然后进入下一步,确定参考人员。选择参考人员后要进行审核人员的选择。最后完成试卷的生成。同时该模块还要完成试卷的审核功能。
该模块主要实现试卷的生成工作以及试卷的审核功能。试卷的审核与新闻的审核基本相同,在此它的实现过程不进行说明介绍了。下面我们就介绍一下试卷的生成。试卷的生成主要是指试卷结构和考试时间等试卷基本结构的生成,根据需要我们还要确定需要参加考试的部门。该部分的实现主要是把用户所输入的试卷信息添加到相关的数据表中生成试卷的结构信息,然后由考试模块进行调用。实现数据的输入程序主要是由用户向“试卷结构”页面的文本框中输入,然后由该页面把数据传递给实现把数据写入数据库的ASP文件中。由该文件把试卷的结构信息写入数据库并等待审核。生成试卷结构页面如图3-5所示:
当一个用户登录后,如果有需要该参加考试的时候,用户可以到“选择科目”页面进行,考试科目的选择。选择考试科目后,进入到考试页面进行考试。考试结束后系统自动判卷,并显示考试者本次考试分数。考试模块主要是由考试页面和成绩发布页面组成。考试页面要通过已经生成的试卷结构信息来从数据库中随机抽取相应的试题数目生成试卷。成绩发布页面要完成用户交卷后的阅卷和成绩统计工作,通过从数据库中提取试题的答案与考试页面记录的答题信息进行比较得出考试的成绩。考试页面如图3-6所示:
该模块的功能就是实现用户对自己以往考试成绩的查询。用户登录后,可以进入到“查询成绩”页面查询成绩。本模块的功能就是实现用户对成绩的查询功能。
该模块的实现是用提出查询请求的用户ID到数据库的考试成绩表中查找本用户的所有考试成绩信息,并输出所有考试成绩。用户查询时也可指定考试科目进行查询。成绩查询页面如图3-7所示:
实现从数据库中查询成绩的主要代码如下:
<% subject=request("subject")
if subject="--选择科目--" or subject="" then
sql="select * from exam_score where userid="& request.cookies("userid")
else
sql="select * from exam_score where subject='"& subject &"' and userid="& request.cookies("userid")
end if
set rs=server.createobject("adodb.recordset")
rs.open sql,conn,3,2
on error resume next
rs.PageSize = 10 ’实现内容的分页。
Page = CLng(Request("Page"))
If Page < 1 Then Page = 1
If Page > rs.PageCount Then Page = rs.PageCount
i=page+(page-1)*9
rs.AbsolutePage = Page
For iPage = 1 To rs.PageSize%>
’此处需要进行成绩信息的输出。
<% rs.MoveNext
If rs.EOF Then Exit For
i=i+1
Next%>
本系统整体采用一个框架网页,其他页面都是在此框架网页上生成的。进入系统后,首先进入系统首页。然后,选择进入到登录页面接下来就进入功能选择页面用户可以进行所需要的功能选择。
各模块页面组成情况的分析可以得出该整个系统的页面逻辑结构示意图。如图2-3所示。
当用户进入到该考试系统时,用户首先进入到系统主页面,它就是要给用户提供一个比较直观清晰的选择进入系统其他页面的桥梁的作用。本系统的起始页面采用框架网页结构,共分为左、右和顶部三个部分。如图3-1所示
从图3-1中可以看出,网页的左边部分用于用户登录和显示用户信息,上部显示用户所能选择的功能信息,右边为网页显示的主体内容。在系统运行过程中,页面上边的信息一直都是显示状态,左边的内容在用户登录时显示登录页面,右边的页面随操作模块的不同内容也不同。实现本页面的主要代码如下:
<frameset border="1" frameSpacing="0"οnlοad="InitSync();
" MARGINWIDTH="0" MARGINHEIGHT="0" LEFTMARGIN="0" TOPMARGIN
="0" rows="60,*">
<frame border="0" name="fraToolbar" marginWidth="0"
marginHeight="0" frameBorder="no" noResize scrolling="no" LEFTMARGIN="0" TOPMARGIN="0" target="main"src="toolbar.asp">
’调用页面上边的功能选择页面toolbar.asp
<frame border="1" name="fraLeftFrame" borderColor="
#6699cc"marginWidth="0" marginHeight="0" frameBorder="0" scrolling="no" LEFTMARGIN="0" TOPMARGIN="0" target="main" src="leftframe.asp">
’调用左边的显示页面leftframe.asp
<frameset rows="20,93%">
<frame name="fraRightFrame1" border="0" borderColor
="#6699cc" frameBorder="no" scrolling="no" noresize src="righttopframe.asp" target="_self">
’调用右上边的时间显示页面 righettopframe.asp-->
<frame name="main" border="0" borderColor="#6699cc" frameBorder="no"
scrolling="auto" src="news.asp">
’调用右边的主页面为news.asp
</frameset>
</frameset>
未完待续。。。
相关文章:

ASP消防网上考试系统设计与实现
本文以ASP和Access数据库来开发服务器端,通过计算机网络技术实现了一个针对消防部队警官的网上考试系统。为了。提高消防部队的工作效率和信息化水平,体现消防部队信息化进程的特色,开发一个适合消防部队的计算机网上考试系统是非常必要的。鉴…...

MongoDB - 数据模型的设计模式
简介 官方文章的地址是 Building with Patterns: A Summary,其中汇总了 12 种设计模式及使用场景。 上述的图表列举了 12 种设计模式及应用场景,主要是以下这些: 近似值模式(Approximation Pattern)属性模式…...

3D格式转换工具助力Shapr3D公司产品实现了 “无障碍的用户体验”,可支持30多种格式转换!
今天主要介绍的是HOOPS Exchange——一款支持30多种CAD文件格式读取和写入的工具,为Shapr3D公司提供的重要帮助! Shapr3D是一家有着宏伟目标的公司:将CAD带入21世纪!该公司于2016年首次推出其同名应用程序,并将Shapr3D带到了macOS…...

虚拟环境-----virtualenv和pipenv的安装和应用
1.pip install virtualenv 2.pip安装虚拟环境管理包virtualenvwrapper-win 3.创建一个存放虚拟环境的目录(建议命名为.env或者.virtualenv) 4.配置环境变量(变量名:WORKON_HOME,值:上面创建的目录路径) …...

awd pwn——LIEF学习
文章目录1. 什么是LIEF2. 加载可执行文件3. 修改ELF的symbols4. ELF Hooking5. 修改got表6. 总结1. 什么是LIEF LIEF是一个能够用于对各种类型的可执行文件(包括Linux ELF文件、Windows exe文件、Android Dex文件等)进行转换、提取、修改的项目…...

亚商投资顾问 早餐FM/0330 6G发展持开放态度
01/亚商投资顾问 早间导读 1.工信部副部长:中国对6G发展持开放的态度已成立工作组推动关键技术研究 2.易纲、周小川最新发声 中国加快绿色低碳发展的决心坚定不移 3.中移动出手!450亿溢价包圆邮储银行定增股份 4.海南全面启动全岛封关运作准备 免税消…...

cookie和session的区别
文章目录cookie和session的区别1. 存储位置不同2. 生命周期不同3. 存储数据大小不同4. 数据类型不同5. 安全性不同cookie和session的区别 1. 存储位置不同 cookie:cookie数据保存在客户端。 session:session数据保存在服务器端。 2. 生命周期不同 s…...

android 人脸考勤机 卡死原因
Android人脸考勤机卡死的原因可能有以下几个方面: 硬件限制:如果使用的设备性能较低,如处理器、内存、存储等都不足以支持应用程序的运行,就容易出现卡顿、卡死等问题。 代码优化:代码的优化也是影响应用程序性能的重…...

安装k8s工具之三-kube-ansible
一、介绍 Kube-ansible 是一个开源的 Kubernetes 部署和管理工具,它使用 Ansible 自动化工具来管理 Kubernetes 集群。Kube-ansible 提供了一套可扩展的框架,可以方便地部署和管理 Kubernetes 集群。 Kube-ansible 的主要特点包括: 支持多…...

《程序员面试金典(第6版)》面试题 08.09. 括号(回溯算法,特殊的排列问题,C++)
题目描述 括号。设计一种算法,打印n对括号的所有合法的(例如,开闭一一对应)组合。 说明:解集不能包含重复的子集。 例如,给出 n 3,生成结果为: ["((()))","(()())…...

大厂面试篇--2023软件测试八股文最全文档,有它直接大杀四方
前言 已经到了金三银四的黄金招聘季节了,还在准备面试跳槽涨薪的小伙伴们可以看看本篇文章哟,这里呢笔者就不多说废话了直接上干货!答案已整理好,文末拿去即可!非常好用! 一、字节跳动测试面经篇 1、在搜…...

LeetCode326_326. 3 的幂
LeetCode326_326. 3 的幂 一、描述 给定一个整数,写一个函数来判断它是否是 3 的幂次方。如果是,返回 true ;否则,返回 false 。 整数 n 是 3 的幂次方需满足:存在整数 x 使得 n 3的x次方 示例 1: 输…...

Redis第九讲 Redis之Hash数据结构Dict字典哈希算法与hash存储过程
Redis dict使用的哈希算法 前面提到,一个kv键值对,添加到哈希表时,需要用一个映射函数将key散列到一个具体的数组下标。 Redis 目前使用两种不同的哈希算法: MurmurHash2 是种32 bit 算法:这种算法的分布率和速度都非常好;Murmur哈希算法最大的特点是碰撞率低,计算速度…...

2个月月活突破1亿,增速碾压抖音,出道即封神的ChatGPT,现在怎么样了?ChatGPT它会干掉测试?
从互联网的普及到智能手机,都让广袤的世界触手而及,如今身在浪潮中的我们,已深知其力。 前阵子爆火的ChatGPT,不少人保持观望态度。现如今,国内关于ChatGPT的各大社群讨论,似乎沉寂了不少,现在…...

Linux常用文件目录操作指令
linux 文件目录操作指令pwd 指令ls 指令cd 指令mkdir 指令rmdir 指令touch 指令cp 指令rm 指令mv 指令cat 指令more 指令less 指令> 和 >> 指令echo 指令head 指令tail 指令ln 指令history 指令pwd 指令 基本语法 pwd (显示当前工作目录的绝对路径) ls 指令 基本语法…...
阿哈罗诺夫——玻姆效应(AB效应)
规范变换 规范场是与物理规律的定域规范变换不变性相联系的物质场纵场的旋度为零,横场的散度为零 由于 因此 为了消除此影响,我们需要对标势场做规范 库伦规范(Coulomb gauge):使麦克斯韦方程组自然满足静电场的条件 洛伦兹规范 (Lorentz gauge&#x…...

sed使用
概述 Linux sed 命令是利用脚本来处理文本文件。sed 可依照脚本的指令来处理、编辑文本文件。Sed 主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等。 语法 sed [-hnV][-e<script>][-f<script文件>][文本文件]注意:-e是可以省…...

redhat9忘记root密码操作(普通用户也适用)
目录 一.编辑启动条目 二、按enter键 三、重新挂载/sysroot,并且修改/sysroot的权限为rw 四、将根目录修改到/sysroot 五、修改密码 5.1修改root密码 5.2 修改普通用户的密码 六、创建文件 七、退出 八、测试 一.编辑启动条目 进入以下页面的时候࿰…...

Android 五种启动模式小结
ActivityRecord、TaskRecord、ActivityStack区别 ActivityRecord对应着一个Activity实例,保存了Activity所有相关信息 TaskRecord指的是一个任务栈,里面包含多个ActivityRecord ActivityStack用于管理TaskRecord 五种启动模式 Standard模式 默认的启…...

算法竞赛ICPC、CCPC、NIO、蓝桥杯、天梯赛
算法竞赛前言一、为什么学习算法竞赛二、学习算法的阶段三、算法竞赛具体学习内容1、基础数据结构1.1、链表1.1.1、动态链表1.1.2、静态链表1.1.3、STL list1.2、队列1.2.1、STL queue1.2.2、手写循环队列1.2.3、双端队列和单调队列1.2.4、优先队列1.3、栈1.3.1、STL stack1.3.…...

图像分割技术及经典实例分割网络Mask R-CNN(含基于Keras Python源码定义)
图像分割技术及经典实例分割网络Mask R-CNN(含Python源码定义) 文章目录图像分割技术及经典实例分割网络Mask R-CNN(含Python源码定义)1. 图像分割技术概述2. FCN与语义分割2.1 FCN简介2.2 反卷积2.2 FCN与语义分割的关系3. Mask …...

元宇宙和医疗保健
让我们明确定义医疗保健领域的元宇宙 元宇宙这个概念已经有几十年的存在历史了,尽管当Facebook改名为Meta时,这个话题才成了头版头条。现在卫生部门的领导们也开始关注这个话题。 数字卫生领域对元宇宙的定义是如今的医疗科技主要是由医疗软件解决方案…...

iOS_从相机或相册里扫描二维码或条形码
文章目录1. 从相机里扫描1.1 申请相机权限1.2 创建Scanner1.3 开始扫描1.4 处理扫描结果2. 从相册里扫描2.1 获取相册权限2.2 打开相册2.3 获得选择结果2.4 解析相片中的二维码或条形码1. 从相机里扫描 1.1 申请相机权限 导入: import AVFoundation在项目的 Info.…...

Python 自动化指南(繁琐工作自动化)第二版:十六、使用 CSV 文件和 JSON 数据
原文:https://automatetheboringstuff.com/2e/chapter16/ 在第 15 章,你学习了如何从 PDF 和 Word 文档中提取文本。这些文件是二进制格式的,需要特殊的 Python 模块来访问它们的数据。另一方面,CSV 和 JSON 文件只是纯文本文件。…...

knife4j接口文档
knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案,前身是swagger-bootstrap-ui,取名knife4j是希望它能像一把匕首一样小巧,轻量,并且功能强悍!其底层是对Springfox的封装,使用方式也和Springfox一致,只是对接口文档UI进行了优化。 核心功能…...

Windows机器安装SSH搭建,自己搞个局域网机房玩一玩
Windows机器安装SSH搭建为啥要装SSH安装OpenSSH使用 Windows 设置来安装 OpenSSHps脚本在线安装ps脚本离线安装其他二进制安装包安装为啥要装SSH 家里有多台Win机器,一台主机两个笔记本,本着不浪费的原则,打算把它们在平时的工作学习中利用起…...

二叉树的前序遍历(力扣144)
目录 题目描述: 解法一:递归法 解法二:迭代法 解法三:Morris 遍历 二叉树的前序遍历 题目描述: 给你二叉树的根节点 root ,返回它节点值的 前序 遍历。 示例 1: 输入:root […...

【数据库管理】①实例与数据库
1.Oracle RDBMS 架构图 2. Oracle 体系结构 由此区分database和instance的区别 No.1.oracle serverdatabase instance2.databasedata file、control file、redo log file3.instancean instance accesses a database4.oracle memorySGA PGA(oracle的内存结构)5.instanceSGA …...

vba:单元格的选择,查找,合并,批注,SpecialCells,图形插入
一: 活动单元格:activecell,工作表中活动单元格只有一个 Sub activecells() a activecell.Address 取得活动单元格地址 Cells(2, 3).Activate 激活指定单元格 End Sub selection光标所选区域 Sub 光标所选区域() Selection 1 End Sub Sub …...

【内网安全】横向移动域控提权NetLogonADCSPACKDC永恒之蓝
文章目录章节点横向移动-系统漏洞-CVE-2017-0146(永恒之蓝)影响版本插件检测-横向移动CS联动MSF-检测&利用横向移动-域控提权-CVE-2014-6324横向移动-域控提权-CVE-2020-1472影响版本横向移动-域控提权-CVE-2021-42287前提条件影响版本python版本EXP利用过程C#版本EXP利用过…...