ASP.NET基于BS的计算机等级考试系统的设计与实现

摘    要

随着计算机技术的发展及计算机的日益普及,基于B/S结构的考试系统与无纸化办公一样已成为大势所趋。论文详细论述了一个基于B/S结构的计算机等级考试系统的设计过程。软件采用ASP.NET 2005作开发平台,C#作编程语言,SQL Server 2005作数据库管理系统,实现了试题管理、试卷生成、在线考试、试卷评判、权限管理、在线报名及站内公告等功能。系统符合全国计算机等级考试的要求。

首先阐述了该系统的开发背景、意义;其次介绍了相关的开发工具及技术基础;接着对系统的需求进行了分析,并提出了具体的设计方案和数据库模型;然后展现了整个系统的具体实现,包括数据库的设计和连接,各功能模块的实现;最后对该软件进行了严格的测试。

关键词: B/S结构;计算机等级考试;考试系统

2.1 B/S结构

B/S(Browser/Server)结构即浏览器和服务器结构。它是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户工作界面是通过WWW浏览器来实现,极少部分事务逻辑在前端(Browser)实现,但是主要事务逻辑在服务器端(Server)实现,形成所谓三层3-tier结构。这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本(TCO)。

2.2 开发工具简介

2.2.1 Visual C# 2005简介

Microsoft Visual C# 2005(读作 C sharp)是一种编程语言,它是为生成在 .NET Framework 上运行的多种应用程序而设计的。C# 简单、功能强大、类型安全,而且是面向对象的。C# 凭借它的许多创新,在保持 C 样式语言的表示形式和优美的同时,实现了应用程序的快速开发。

2.2.2 SQL Sever 2005简介

SQL Server 是一个全面的、集成的、端到端的数据解决方案,它为企业中的用户提供了一个安全、可靠和高效的平台用于企业数据管理和商业智能应用。SQL Server 2005 为IT专家和信息工作者带来了强大的、熟悉的工具,同时减少了在从移动设备到企业数据系统的多平台上创建、部署、管理及使用企业数据和分析应用程序的复杂度。 通过全面的功能集、和现有系统的集成性、以及对日常任务的自动化管理能力,SQL Server 2005 为不同规模的企业提供了一个完整的数据解决方案。SQL Server 数据平台包括如下工具:关系型数据库、复制服务、通知服务、集成服务、分析服务、报表服务、管理工具、开发工具。 SQL Server 2005 数据平台为不同规模的组织提供了如下好处:充分利用数据资产、提高生产力、减少IT复杂度、更低的总体拥有成本 (TCO)。

4.2 系统功能结构图

根据需求分析,在线考试系统的结构图如下:

图2 系统功能结构图

4.3 系统架构

本系统采用ASP.NET应用程序典型的三层架构模式,其结构如图所示

各层功能介绍:

数据访问层:系统最低层,提供数据库操作的接口和存储本系统所有数据;

业务逻辑层:处于页面示层与数据访问层之间,与数据库直接关联,同时又为页面示层服务。实现业务的具体逻辑,如考生报名、登录参考、试卷试题管理等;

页面示层:系统最外层,将业务功能在浏览器上显示出来,用户通过界面对系统进行操作。

5.1  用户登录模块设计

5.1.1前台页面设计

管理员/阅卷人输入账号及密码,系统查询数据库,自动配对用户类型,进入相应的管理页面。如果出现错误,系统会弹出相应的提示信息。

5.1.2后台功能代码

单击登录按钮事件:

    protected void btnOK_Click(object sender, EventArgs e)

    {

        string UserName = txtName.Text;

        string UserPwd = Security.Encrypt(txtPwd.Text);

        User user = new User();

        user.LoadNameData(UserName);

        if (user.Exist) //如果用户存在

        {

            if (user.UserPwd == UserPwd)  //如果密码,转入留言列表页面

            {

                Session.Add("UserID", user.UserID);

                Session.Add("UserIDCard", user.UserIDCard);

                Session.Add("UserName", user.UserName);

                if (user.UserType == 3)

                {

                    Session["IsAdmin"] = "Admin";

                    Response.Redirect("Admin/AdminInfo.aspx");

                }

                else

                {

                    Session["IsAdmin"] = "Teacher";

                    Response.Redirect("Teacher/Default.aspx");

                }

            }

            else                 //如果密码错误,给出提示,光标停留在密码框中

            {

                Response.Write("<Script Language=JavaScript>alert(\"密码错误,请重新输入密码!\")</Script>");

                txtPwd.Focus();

            }

        }

        else                        //如果用户不存在

        {

            Response.Write("<Script Language=JavaScript>alert(\"对不起,用户不存在!\")</Script>");

        }

    }

5.2  后台管理页面设计

管理页面只允许具有管理员权限的人员访问,因此在每个管理页面都有相关的权限判断,以保证系统的安全使用。

if (Session["IsAdmin"] == null)

{

    Response.Write("<Script Language=JavaScript>alert('管理员未登录,非法请求!');</Script>");

    Response.Write("<Script Language=JavaScript>window.location.href='../AdminLogin.aspx';</Script>");

}

5.2.1人员管理页面设计

图6 人员管理

此页面用于管理所有用户,包括考生、阅卷人和管理员。通过用户类型下拉框选择相应类型的用户,在GridView中会显示出用户详细的信息。当考生报名成功后,前来交费时,管理员可以通过审核方式来确认考生的参考资格。管理员也可以删除一些无效用户。

审核事件代码:

  foreach (string UserID in selectedUsers)

  {

      Hashtable ht = new Hashtable();

      ht.Add("IsCheck", 1);

      (new User()).Check(ht, UserID);

   }

   Response.Write("<Script Language=JavaScript>alert('审核考生成功!');</Script>");

    Query();

删除事件代码:

  foreach (string UserID in selectedUsers)

  {

      User.Delete(UserID);

  }

  Query();

5.2.2试题管理页面设计

图7 试题管理

此页面用于管理所有试题信息。通过考试科目下拉框选择相应的科目,在GridView中会显示出试题的详细信息,包括题干、备选答案和正确答案。管理员可以对试题进行编辑、删除操作。

操作实现代码:

    protected void gvQuestion_RowCommand(object sender, GridViewCommandEventArgs e)

    {

        int index = Convert.ToInt32(e.CommandArgument); //待处理的行下标

        int questionId = -1;

        switch (e.CommandName)

        {

            //修改

            case "Edit":

                questionId = Convert.ToInt32(gvQuestion.Rows[index].Cells[0].Text);

                Response.Redirect("QuestionAddEdit.aspx?id=" + questionId);

                break;

            //删除

            case "Delete":

                questionId = Convert.ToInt32(gvQuestion.Rows[index].Cells[0].Text);

                Question question = new Question();

                question.GetSingleQuestion(questionId);

                question.Delete();

                Response.Write("<Script Language=JavaScript>alert('删除成功!');</Script>");

                gvBind();

                break;

            default:

                break;

        }

    }

5.2.3公告管理页面设计

此页面用于管理网站公告信息。通过GridView显示出公告的详细信息,包括编号、标题和时间。管理员可以通过详细信息查看公告内容,也可以对公告进行编辑、删除操作。

GridView数据绑定:

    private void InitData()

    {

        News news = new News();

        DataSet ds = news.GetNews();

        gvNewsList.DataSource = ds;

        gvNewsList.DataBind();

    }

操作代码:

    protected void gvNewsList_RowCommand(object sender, GridViewCommandEventArgs e)

    {

        int index = Convert.ToInt32(e.CommandArgument); //待处理的行下标

        int newsId = -1;

        switch (e.CommandName)

        {

            //修改

            case "Edit":

                newsId = Convert.ToInt32(gvNewsList.Rows[index].Cells[0].Text);

                Response.Redirect("NewsAddEdit.aspx?id=" + newsId);

                break;

            //删除

            case "Delete":

                newsId = Convert.ToInt32(gvNewsList.Rows[index].Cells[0].Text);

                News news = new News();

                news.GetSingleNews(newsId);

                news.Delete();

                Response.Write("<Script Language=JavaScript>alert('删除成功!');</Script>");

                InitData();

                break;

            default:

                break;

        }

    }

5.2.4密码管理页面设计

此页面用于管理员信息修改。当管理员名及原密码均正确时,可以对管理员的相关信息进行修改操作。否则将无法修改相关信息。

修改事件代码:

    if ( UserOldPwd == user.UserPwd )

    {

        Hashtable ht = new Hashtable();

        ht.Add("UserPwd", SqlStringConstructor.GetQuotedString(UserPwd));

        ht.Add("UserIDCard", SqlStringConstructor.GetQuotedString(txtIDCard.Text));

        user.Update(ht);

        Response.Write("<Script Language=JavaScript>alert(\"更新数据成功,请重新登录!\")</Script>");

        Session.Abandon();

        Response.Write("<Script Language=JavaScript>window.location.href='../AdminLogin.aspx';</Script>");

    }

    else

    {

        Response.Write("<Script Language=JavaScript>alert(\"原密码错误!\")</Script>");

    }

5.2.5试卷成绩信息管理页面设计

此页面用于管理考生考试信息。在GridView中显示出了所有考生的考试信息,包括考试科目、总成绩和是否通过阅卷人审核。阅卷人可以查看考试的详细信息,并进行进一步地操作,如图11所示。

单击审核事件:

  foreach ( string ID in selectedIDs )

  {

      Hashtable ht = new Hashtable();

      ht.Add("IsCheck", 1);

      (new Score()).Check(ht, ID);

  }

  Response.Write("<Script Language=JavaScript>alert('审核试卷成功!');</Script>");

  Query();

此页面用于显示考试的详细信息。阅卷人可以查看到考生考试的具体信息,包括考试时间、成绩以及每一道题的答案。阅卷人可以根据考生的答题情况,对考生分数进行相应的修改。

单击修正事件:

    protected void btnModify_Click(object sender, EventArgs e)

    {

        if (txtModifyScore.Text != "")

        {

            Score score = new Score();

            score.ID = Convert.ToInt32(Request.QueryString["id"]);

            Hashtable ht = new Hashtable();

            ht.Add("TotalScore", SqlStringConstructor.GetQuotedString(txtModifyScore.Text));

            ht.Add("IsCheck", 1);

            score.Update(ht);

            Response.Write("<Script Language=JavaScript>试卷得分修改成功!</Script>");

        }

        else

        {

            Response.Write("<Script Language=JavaScript>alert('请输入实际得分!');</Script>");

        }

    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/816277.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【DNS】

文章目录 DNS域名解析系统&#xff08;Domain Name System&#xff09;DNS系统需要解决的问题DNS域名解析系统&#xff08;Domain Name System&#xff09;问题1&#xff1a;DNS名字空间(The DNS Name Space&#xff09;DNS名字空间(The DNS Name Space)DNS名字空间(The DNS Na…

边缘计算【智能+安全检测】系列教程--使用OpenCV+GStreamer实现真正的硬解码,完全消除马赛克

通过现有博客的GST_URL = "rtspsrc location=rtsp://admin:abcd1234@192.168.1.64:554/h264/ch01/main/av_stream latency=150 ! rtph264depay ! avdec_h264 ! videorate ! videoconvert ! appsink sync=false" GStreamer的解码方式解码,大多情况应该存在上图马赛克…

解决jenkins运行sh报process apparently never started in XXX

个人记录 问题 process apparently never started in /var/jenkins_home/workspace/ks-springboot_mastertmp/durable-bbfe5f99(running Jenkins temporarily with -Dorg.jenkinsci.plugins.durabletask.BourneShellScript.LAUNCH_DIAGNOSTICStrue might make the problem cl…

架构师系列-搜索引擎ElasticSearch(八)- 集群管理故障恢复

故障转移 集群的master节点会监控集群中的节点状态&#xff0c;如果发现有节点宕机&#xff0c;会立即将宕机节点的分片数据迁移到其它节点&#xff0c;确保数据安全&#xff0c;这个叫做故障转移。 下图中node1是主节点&#xff0c;其他两个节点是从节点 节点故障 此时node1…

卷积神经网络(LeNet5实现对Fashion_MNIST分类

参考6.6. 卷积神经网络&#xff08;LeNet&#xff09; — 动手学深度学习 2.0.0 documentation (d2l.ai) ps&#xff1a;在这里预备使用pythorch 1.对 LeNet 的初步认识 总的来看&#xff0c;LeNet主要分为两个部分&#xff1a; 卷积编码器&#xff1a;由两个卷积层组成; …

OLTP 与 OLAP 系统说明对比和大数据经典架构 Lambda 和 Kappa 说明对比——解读大数据架构(五)

文章目录 前言OLTP 和 OLAPSMP 和 MPPlambda 架构Kappa 架构 前言 本文我们将研究不同类型的大数据架构设计&#xff0c;将讨论 OLTP 和 OLAP 的系统设计&#xff0c;以及有效处理数据的策略包括 SMP 和 MPP 等概念。然后我们将了解经典的 Lambda 架构和 Kappa 架构。 OLTP …

振兴国腾GM8775C MIPIDSI桥接到双 PORT LVDS

GM8775C描述&#xff1a; GM8775C 型 DSI 转双通道 LVDS 发送器产品主要实现将 MIPI DSI 转单 / 双通道 LVDS 功能&#xff0c;MIPI 支持 1/2/3/4 通道可选&#xff0c;每通道最高支持 1Gbps 速率&#xff0c;最大支持 4Gbps 速率。LVDS 时钟频率高达 154MHz &a…

Vue列表渲染

一、Vue列表渲染 1.用 v-for 把一个数组对应为一组元素 我们可以用 v-for 指令基于一个数组来渲染一个列表。v-for 指令需要使用 item in items 形式的特殊语法&#xff0c;其中 items 是源数据数组&#xff0c;而 item 则是被迭代的数组元素的别名。 <ul id"exampl…

Facebook广告投放数据API对接流程

说明&#xff1a;仅供学习使用&#xff0c;请勿用于非法用途&#xff0c;若有侵权&#xff0c;请联系博主删除 作者&#xff1a;zhu6201976 一、需求背景 App在Facebook、Google等巨头进行广告投放&#xff0c;想要拿到实时广告投放效果数据&#xff0c;如曝光、点击、花费、触…

Django第三方功能的使用

Django第三方功能的使用 Django REST framework前言1、Django--Restframework--coreapi版文档BUG:AssertionError: coreapi must be installed for schema support.How to run Django with Uvicorn webserver?2、序列化类 Serializer的使用模型序列化类 ModelSerializer的使用…

MySQL 社区版 安装总结

很早就安装过MySQL&#xff0c;没有遇到过什么问题&#xff0c;直接next就行了&#xff0c;这次在新电脑上安装却遇到了一些问题&#xff0c;记录一下。 安装的是MySQL社区版&#xff0c;下载地址是www.mysql.com&#xff0c;进入后选择DOWNLOAD页面&#xff0c;选择MySQL Com…

SqlServer专题

目录 1&#xff0c;连接数据库 2&#xff0c;连接池 1.何为连接池&#xff1f; 2.连接池运行原理。 3.如何查看连接池&#xff1f; 4.连接池注意事项。 3&#xff0c;一般SQL语句。 4&#xff0c;控制语句 1.判断语句 2.循环语句 5&#xff0c;视图 1.使用…

<计算机网络自顶向下> P2P应用

纯P2P架构 没有或者极少一直运行的Server&#xff0c;Peer节点间歇上网&#xff0c;每次IP地址都可能变化任意端系统都可以直接通信利用peer的服务能力&#xff0c;可扩展性好例子&#xff1a;文件分发; 流媒体; VoIP类别:两个节点相互上载下载文件&#xff0c;互通有无&#…

C# Solidworks二次开发:相机访问相关API详解

大家好&#xff0c;今天要介绍的API为相机相关的API&#xff0c;这篇文章比较适合女孩子&#xff0c;学会了相机就会拍照了&#xff0c;哈哈。 下面是要介绍的API: &#xff08;1&#xff09;第一个为GetFocalDistance&#xff0c;这个API的含义为获取相机的焦距&#xff0c;…

ASP.NET基于BS的图书销售管理系统的设计与实现

随着Internet的兴起&#xff0c;网络已经成为现代人生活中的一部分&#xff0c;越来越多的人喜欢在网上交易。本系统就是一个基于B/S模式的网络化的图书销售管理系统,采用的是ASP.NET技术&#xff0c;实现了用户注册信息管理、用户信息管理、图书销售点管理、图书信息管理、客户…

特征工程(IV)--特征选择

特征工程 有这么一句话在业界广泛流传&#xff1a;数据和特征决定了机器学习的上限&#xff0c;而模型和算法只是逼近这个上限而已。由此可见&#xff0c;特征工程在机器学习中占有相当重要的地位。在实际应用当中&#xff0c;可以说特征工程是机器学习成功的关键。 特征工程是…

【C语言】简易版扫雷+进阶版扫雷

目录 前言 一、分模块化 二、准备雷盘 2.1 游戏菜单 2.2 创建雷盘思路 2.3 构建雷盘 2.4 雷盘展示 2.4.1 初始化雷盘 2.4.2 打印雷盘 三、排雷 3.1 布置雷 3.2 排查雷 四、进阶版扫雷 总结 前言 C语言实现扫雷小游戏&#xff0c;帮我们更进一步的掌握数组、模块化…

Windows Server 2016虚拟机安装教程

一、VMware Workstation虚拟机软件的下载 官网下载入口&#xff1a;​​​​​​Download VMware Workstation Pro - VMware Customer Connect​​​​​ 下载好之后自己看着提示安装软件就好. 二、镜像文件的下载 下载网站入口&#xff1a;MSDN, 我告诉你 - 做一个安静…

【Java EE】Spring核心思想(一)——IOC

文章目录 &#x1f38d;Spring 是什么&#xff1f;&#x1f384;什么是IoC呢&#xff1f;&#x1f338;传统程序开发&#x1f338;传统程序开发的缺陷&#x1f338;如何解决传统程序的缺陷&#xff1f;&#x1f338;控制反转式程序开发&#x1f338;对比总结 &#x1f332;理解…

汇编语言知识点整理(应付考试专用,想学习找其他的)

1 基础知识 1.1 信息在计算机内部的表示和存储 1.1.1 信息存储的基本概念 信息在计算机内部是以二进制数据的形式在存储器中存取的。介绍两个基本概念&#xff1a; 位&#xff08;Bit&#xff09; 计算机中最小的数据单位&#xff0c;一位有0、1两状态。Bit是计算机中最小…