大学在线考试系统设计毕业论文

更新时间:2023-08-31 09:56:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

关于大学生考试系统网站的毕业设计

面向对象的系统开发与设计课程设计报告书

成 绩: 学 号:姓 名: 指导教师:

2012 年 2月 15 日

关于大学生考试系统网站的毕业设计

课 程 设 计 任 务 书

关于大学生考试系统网站的毕业设计

大学在线考试系统

摘要:

随着计算机应用的迅猛发展,网络应用的不断扩大,如远程教育和虚拟大学大出现等,且这些应用正逐步深入要千家万户。人们迫切要求利用这些技术来进行在线考试,以减轻教师的工作负担及提高工作效率,与此同时也提高了考试的质量,从而是考试更趋于公正、客观,更加激发学生的学习兴趣。在线考试系统是为了方便学生考试、老师阅卷、提高考试的公正性、公平性。本文主要包括系统的课题概述、业务层设计、数据库设计、数据访问层设置、应用层设计等。

1 课题概述

1.1 系统基本需求

(1)操作简单方便,界面简洁美观。

(2)具有实时性,已注册的用户无论身在何地,通过Internet游览器,都可登录网络考试系统。 (3)具有严肃性和公正性,系统提供的自动交卷功能使考试到结束时间时,系统自动交卷。 (4)提供考试时间倒计时功能,让考生随时了解考试剩余时间。 (5)系统自动阅卷,保证成绩真实,准确。 (6)考生可以随时查看考试成绩 (7)对考生注册信息进行管理 (8)系统运行稳定,安全可靠

系统功能模块如图:

1.2 系统功能分析(用例图) 学生用例图:

关于大学生考试系统网站的毕业设计

管理员用例图:

2 业务层设计

2.1 类的识别

本网站共创建了7个类,分别为 Datacon.cs(数据操作类),JudgeProblem.cs(判断题类)MultiProblem.cs(多选题类),Paper.cs(试卷类),Scores.cs(分数类),SingleProblem.cs(单选题类),GetSafeData.cs(数据安全类)。其中JudgeProblem.cs,SingleProblem.cs,MultiProblem.cs,Paper.cs,Scores.cs放置到BusinessLogicLayer文件夹中,GetSafeData.cs放置到DataAccessHelper文件夹中。

2.2 类的属性和方法设计

(1)Datacon.cs(数据操作类) 方法:

getcon:用来连接数据库

eccom: 用来执行对数据库操作的SQL语句命令 bind: 用于将数据库绑定到表格控件中

ecDropDownList:用于姜数据库绑定到下拉列表框中

Bindinfostring:用于将数据库数据绑定到表格控件中,并获取数据表中的主键字段

(2)SingleProblem.cs(单选题类) 属性:

public int ID {

set

{

this._ID = value; }

关于大学生考试系统网站的毕业设计

get {

return this._ID; } }

public int CourseID {

set {

this._CourseID = value; } get {

return this._CourseID; } }

public string Title {

set {

this._Title = value; } get {

{

this._AnswerB = value; } get {

return this._AnswerB; } }

public string AnswerC {

set {

this._AnswerC = value; } get {

return this._AnswerC; } }

public string AnswerD {

set {

this._AnswerD = value; return } this._Title; }

public string AnswerA {

set {

this._AnswerA = value; } get {

return this } ._AnswerA; }

public string AnswerB {

set

方法:

LoadData 初始化题目

UpdateByProc 更新判断题信息

(3)MultiProblem.cs(多选题类) 属性:

public

int ID { set { this._ID = value; } get { } return this._ID; } public int CourseID { set { this._CourseID = value; } get { return this._CourseID; } } public { string Title set { this._Title = value; } get { return this._Title; } } public{ string AnswerA set { } this._AnswerA = value; get { return this._AnswerA; } }

方法:

LoadData 初始化题目

UpdateByProc 更新判断题信息 (4)JudgeProblem.cs(判断题类)

} get {

}

} return this._AnswerD; public{

string Answer set {

this._Answer = value; } get {

return this._Answer; }

} public{ string AnswerB set { this._AnswerB = value; } get { return } } this._AnswerB; public{ string AnswerC set { this._AnswerC = value; } get { return this._AnswerC; } } public{ string AnswerD set { this._AnswerD = value; } } get { } return this._AnswerD; public{ string Answer set { this._Answer = value; } get { return this._Answer; } }

关于大学生考试系统网站的毕业设计

属性:

public int ID {

set {

this._ID = value; } get {

return this._ID; } }

public int CourseID {

set {

this._CourseID = value; } get {

return this._CourseID; public string Title {

set {

this._Title = value; } get {

return this._Title; } }

public Boolean Answer {

set {

this._Answer = value; } get {

return this._Answer; }

} 方法:

LoadData 初始化题目

UpdateByProc 更新判断题信息

(5)Scores.cs(分数类) 属性:

public int ID {

set {

this._ID = value; } get {

return this._ID; } }

public string {

UserID set {

} this._userID = value; get {

return this._userID; }

} 方法:

InsertByProc:向Score表中添加成绩 (6)Paper.cs(试卷类) 属性:

public int PaperID {

set {

this._paperID = value; } get {

return this._paperID; } }

public {

int CourseID set {

this._courseID = value; } get {

return this._courseID;

} } 方法:

InsertByProc:向Paper表中添加试卷信息 UpdateByProc:更新试卷信息

}

} public{

int PaperID set {

this ._paperID = value; } get {

return this._paperID; }

} public{

int Score set {

this._score = value } ; get }

{

} return this._score; public{

string PaperName set {

this._paperName = value; } get {

}

} return this._paperName; public{

byte PaperState set {

this._paperState = value; } get {

return }

} this._paperState;

关于大学生考试系统网站的毕业设计

2.3 类间继承与联系设计

Datacon.cs,JudgeProblem.cs,MultiProblem.cs,Paper.cs,Scores.cs,SingleProblem.cs都运用了Datacon.cs的GetDataSet,MakeInParam方法并且继承了GetSafeData.cs。

2.4 类图

3 数据库设计

3.1 逻辑结构设计

类和关系模型向关系模式转化:

1.考生信息表(学号,姓名,密码,性别,密码问题,答案,专业,加入时间)

2.单选题信息表(题目编号,课程编号,题名,选项A,选项B,选项C,选项D,正确答案) 3.多选题信息表(题目编号,课程编号,题名,选项A,选项B,选项C,选项D,正确答案) 4.判断题信息表(题目编号,课程编号,题目,正确答案) 5.专业信息表(专业编号,专业名,加入时间) 6.考试科目表(课程编号,课程名)

7.管理员信息表(管理员编号,管理员名称,密码,加入时间)

Course表

tb_TaoTi表

关于大学生考试系统网站的毕业设计

tb_Student表

tb_Profession表

tb_Administrator表

SingleProblem表

Score表

关于大学生考试系统网站的毕业设计

MultiProblem表

JudgeProblem表

tb_TaoTiDetail表

3.2 物理结构设计

(1).为关系模式选择存取方法:

选择索引方法

(2).确定数据库的存储结构

为了提高系统性能,将表和索引放在不同的磁盘上。 系统配置使用默认值。

3.3 完整性设计

1.实体完整性:

Course表中 ID设为主键并且为自增长identity(1,1)

JudgeProblem表中 ID设为主键并且为自增长identity(1,1) MultiProblem 表中 ID设为主键并且为自增长identity(1,1) Sorce表中 ID设为 主键并且为自增长identity(1,1)

SingleProblem表中 ID设为主键并且为自增长identity(1,1) tb_Administrator表中 ID设为主键

关于大学生考试系统网站的毕业设计

tb_Profession表中 ID设为主键并且为自增长identity(1,1) tb_Student表中 ID设为主键

tb_TaoTi表中 ID设为主键并且为自增长identity(1,1)

tb_TaoTiDetail表中ID设为主键并且为自增长identity(1,1)

2.,参照完整性:

JudgeProblem表中: foreign key CourseID references Course(ID) MultiProblem 表中:foreign key CourseID references Course(ID) Sorce表中: foreign key UserID references tb_Student(ID) foreign key PaperID references tb_TaoTi(ID)

SingleProblem表中:foreign key CourseID references Course(ID)

tb_Student表中: foreign key profession references tb_Profession(Name) tb_TaoTi表中: foreign key CourseID references Course(ID)

tb_TaoTiDetail表中:foreign key PaperID references tb_TaoTi(ID) 3.用户定义完整性:

列值非空(not null)如上表图所示 CHECK(Sex IN('男','女'))

3.4 用户权限设计

1.创建成绩视图供管理员和考生查看成绩

3.5 存储过程设计

(1)Proc_JudgeProblemDetail 判断题详细信息

CREATE PROCEDURE [dbo].[Proc_JudgeProblemDetail] @ID [int] AS SELECT *

FROM [dbo].[JudgeProblem] where ID=@ID

(2)Proc_JudgeProblemModify 判断题修改

CREATE PROCEDURE [dbo].[Proc_JudgeProblemModify] (@ID [int], @CourseID [int], @Title [varchar](1000), @Answer [bit])

AS UPDATE [Examination].[dbo].[JudgeProblem] SET [CourseID] = @CourseID, [Title] = @Title, [Answer] = @Answer WHERE ( [ID] = @ID)

(3)Proc_MultiProblemDetail 多选题详细信息

CREATE PROCEDURE [dbo].[Proc_MultiProblemDetail] @ID [int] AS SELECT *

FROM [dbo].[MultiProblem] where ID=@ID

4)Proc_MultiProblemModify 多选题修改

CREATE PROCEDURE [dbo].[Proc_MultiProblemModify] (@ID [int], @CourseID [int], @Title [varchar](1000), @AnswerA [varchar](500), @AnswerB [varchar](500), @AnswerC [varchar](500), @AnswerD [varchar](500), @Answer [varchar](50))

关于大学生考试系统网站的毕业设计

AS UPDATE [Examination].[dbo].[MultiProblem] SET [CourseID] = @CourseID, [Title] = @Title, [AnswerA] = @AnswerA, [AnswerB] = @AnswerB, [AnswerC] = @AnswerC, [AnswerD] = @AnswerD, [Answer] = @Answer WHERE ( [ID] = @ID)

(5)Proc_PaperDetail 试卷信息 (6)Proc_PaperModify 试卷修改

CREATE PROCEDURE [dbo].[Proc_PaperModify] (@PaperID [int], @PaperState [bit])

AS UPDATE [Examination].[dbo].[tb_TaoTi] SET [PaperState] = @PaperState WHERE ( [PaperID] = @PaperID)

(7)Proc_ScoreAdd 分数插入

CREATE PROCEDURE [dbo].[Proc_ScoreAdd] (@UserID [varchar](20), @PaperID [int], @Score [int])

AS INSERT INTO [Examination].[dbo].[Score] ([UserID], [PaperID], [Score]) VALUES ( @UserID, @PaperID, @Score)

(8)Proc_SingleProblemDetail 单选题信息

CREATE PROCEDURE [dbo].[Proc_SingleProblemDetail] @ID [int] AS SELECT *

FROM [dbo].[SingleProblem] where ID=@ID

(9)Proc_SingleProblemModify 单选题修改

CREATE PROCEDURE [dbo].[Proc_SingleProblemModify] (@ID [int], @CourseID [int], @Title [varchar](1000), @AnswerA [varchar](500), @AnswerB [varchar](500), @AnswerC [varchar](500), @AnswerD [varchar](500), @Answer [varchar](2))

AS UPDATE [Examination].[dbo].[SingleProblem] SET [CourseID] = @CourseID, [Title] = @Title, [AnswerA] = @AnswerA, [AnswerB] = @AnswerB, [AnswerC] = @AnswerC, [AnswerD] = @AnswerD, [Answer] = @Answer WHERE ( [ID] = @ID)

4 数据访问层设计

4.1数据访问类设计

数据访问类为Datacon.cs,包括getcon(),bind()等方法,用于数据连接和数据绑定。

public class Datacon {

public SqlConnection getcon() {

string strCon = "server=JW-PC;database=Examination;Integrated Security=True"; SqlConnection sqlCon = new SqlConnection(strCon); return sqlCon;

关于大学生考试系统网站的毕业设计

}

public bool eccom(string sqlstr) {

SqlConnection cn = this.getcon(); cn.Open();

SqlCommand cmd = new SqlCommand(sqlstr, cn); try {

cmd.ExecuteNonQuery(); return true; } catch {

return false; }

finally {

cn.Close(); } }

public SqlParameter MakeInParam(string ParamName, SqlDbType DbType, int Size, object Value) {

return MakeParam(ParamName, DbType, Size, ParameterDirection.Input, Value); }

public void bind(GridView gv, string sqlstr) {

SqlConnection cn = this.getcon(); cn.Open();

SqlDataAdapter mydata = new SqlDataAdapter(sqlstr, cn); DataSet mydataset = new DataSet(); mydata.Fill(mydataset); gv.DataSource = mydataset; gv.DataBind(); cn.Close();

}

public bool ecDropDownList(DropDownList DDL, string sqlstr, string DTF, string DVF) {

SqlConnection cn = this.getcon(); cn.Open();

SqlDataAdapter mydata = new SqlDataAdapter(sqlstr, cn); DataSet mydataset = new DataSet(); mydata.Fill(mydataset);

DDL.DataSource = mydataset; DDL.DataTextField = DTF; DDL.DataValueField = DVF; try {

DDL.DataBind(); return true; } catch {

return false; }

finally {

cn.Close(); } }

public void bindinfostring(GridView gv, string sqlstr, string DNK) {

SqlConnection cn = this.getcon(); cn.Open();

SqlDataAdapter mydata = new SqlDataAdapter(sqlstr, cn); DataSet mydataset = new DataSet(); mydata.Fill(mydataset); gv.DataSource = mydataset;

gv.DataKeyNames = new string[] { DNK }; gv.DataBind(); cn.Close(); }

public DataSet GetDataSet(string ProcName, SqlParameter[] Params) {

SqlConnection cn = this.getcon(); cn.Open();

SqlCommand Cmd = CreateCommand(ProcName, Params); SqlDataAdapter adapter = new SqlDataAdapter(Cmd); DataSet dataset = new DataSet(); adapter.Fill(dataset); cn.Close(); return dataset; }

private SqlCommand CreateCommand(string ProcName, SqlParameter[] Prams) {

SqlConnection cn = this.getcon(); cn.Open();

关于大学生考试系统网站的毕业设计

SqlCommand Cmd = new SqlCommand(ProcName, cn); http://www.77cn.com.cnmandType = CommandType.StoredProcedure;

if (Prams != null) {

foreach (SqlParameter Parameter in Prams) Cmd.Parameters.Add(Parameter); }

return Cmd; }

public int RunProc(string ProcName, SqlParameter[] Params) {

SqlConnection cn = this.getcon(); cn.Open(); int Count = -1;

SqlCommand Cmd = CreateCommand(ProcName, Params); Count = Cmd.ExecuteNonQuery(); cn.Close(); return Count; } }

5 应用层设计

5.1 输入设计

后台管理页面使用了菜单栏,在菜单栏的右侧使用了iframe框架,实现了右侧动态显示网页的功能。在添加中还使用了DropDownList,TextBox等控件。布局在 Dreamweaver 8中实现。

例如试题添加:

5.2 输出设计

输出界面主要运用GridView,便于查询。布局同样在Dreamweaver 8中实现。 考试页面运用GridView和RadioBotton,CheckBox的嵌套。同时运用javascript 编写一个时间控件。

例如学生管理:主要运用GridView

关于大学生考试系统网站的毕业设计

考试界面:GridView和RadioBotton,CheckBox的嵌套

6 系统开发实施

6.1 开发工具选择

网站开发环境:Microsoft Visual Studio 2008 网站开发语言:http://www.77cn.com.cn+C#

网站后台数据库:SQL Server 2005

6.2 系统体系结构选择

该系统采用三层结构开发,核心层在App_code下:

关于大学生考试系统网站的毕业设计

7 系统使用指南

前台登陆地址:/MyWeb/Index.aspx 学生需要注册以后方能使用 后台管理地址:/MyWeb/admin.aspx 默认管理帐号/密码:2010/123

8 总结

参考资料

1.http://www.77cn.com.cn项目开发全程实录/张领等编著 -北京:清华大学出版社,2008.6 2.C#程序设计教程/李瑞旭主编 —北京:中国电力出版社,2009.6

3.数据库系统概论/王珊,萨师煊 -第四版 -北京:高等教育出版社,2006.5

本文来源:https://www.bwwdw.com/article/zu5i.html

Top