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>");

}

}

相关推荐
日里安17 分钟前
8. 基于 Redis 实现限流
数据库·redis·缓存
EasyCVR41 分钟前
ISUP协议视频平台EasyCVR视频设备轨迹回放平台智慧农业视频远程监控管理方案
服务器·网络·数据库·音视频
Elastic 中国社区官方博客1 小时前
使用真实 Elasticsearch 进行更快的集成测试
大数据·运维·服务器·数据库·elasticsearch·搜索引擎·集成测试
明月与玄武2 小时前
关于性能测试:数据库的 SQL 性能优化实战
数据库·sql·性能优化
PGCCC3 小时前
【PGCCC】Postgresql 存储设计
数据库·postgresql
PcVue China5 小时前
PcVue + SQL Grid : 释放数据的无限潜力
大数据·服务器·数据库·sql·科技·安全·oracle
魔道不误砍柴功7 小时前
简单叙述 Spring Boot 启动过程
java·数据库·spring boot
锐策7 小时前
〔 MySQL 〕数据库基础
数据库·mysql
远歌已逝8 小时前
管理Oracle实例(二)
数据库·oracle
日月星宿~8 小时前
【MySQL】summary
数据库·mysql