考试系统(含源码),希望各位多提意见,谢谢!

这次是我第一次用asp.net 做的东西,由于时间比较急,临近考试也没有太多的精力来做这个系统,系统做的很垃圾也烂的惨不忍睹,但我希望各位能多多批评指导,能多提宝贵意见能让我能对系统进行改进同时也能更好的提高自身的水平,谢谢!!
本系统的设计说明
本系统使用Microsoft .net架构下的VB.NET和Access2000的数据库开发的在线考试系统
本系统将实现将传统的笔试和手动改卷利用WWW服务扩展到网络层面,并对所有的考生进行信息化的管理,本系统程序中简单的设计了四个模块。这四个模块分别如下:
学生考试登陆模块:对学生输入的信息进行查询,让考生在考试前对个人信息进行核对
学生考试模块:不同的考生根据不同的ID号生成不同的试卷,防止了考生作弊的情况
教师登陆模块:通过对教师的登陆控制不同的教师有不同的权限
教师管理模块:让教师可以对考生的信息进行添加,修改,删除
 
主页面(WEBMAIN)的设计:
让老师和考生可以通过不同的HyperLink来进行选择登陆
学生考试登陆模块:
考生Login页面的设计:
3个lable(lable1.text=请输入准考证号:, lable2.text=请输入姓名: , lable3.text=欢迎登陆考试系统),2个textbox(textbox1,2.text都为空值),并用requiredFieldValidator控件分别对textbox1,textbox2进行验证.不允许2个textbox的值为空(requiredFieldValidator1对textbox1进行验证 , (requiredFieldValidator2对textbox2进行验证) ,1个botton(通过查询ACCESS数据库来对textbox1和textbox2输入的值进行查询,如果匹配把查询结果赋给的LABEL和IMAGE)
详细代码如下:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim cn As New System.Data.OleDb.OleDbConnection("provider=microsoft.jet.oledb.4.0;data source=F:/mysite/考试系统/database/Examination.mdb")
        Dim cmd As New OleDbCommand("select * from Basicinfo where Examinee_id=@i and name=@j ", cn)
        cmd.Parameters.Add("@i", TextBox1.Text)
        cmd.Parameters.Add("@j", TextBox2.Text)
        Dim da As New OleDbDataAdapter(cmd)
        Dim ds As New DataSet
        da.Fill(ds)
        'DataGrid1.DataSource = ds
        'DataGrid1.DataBind()
        Image1.ImageUrl = ds.Tables(0).Rows(0)("user_img")
        Session("examinee_id") = ds.Tables(0).Rows(0)("examinee_id")
        Session("name") = ds.Tables(0).Rows(0)("name")
        Session("sex") = ds.Tables(0).Rows(0)("sex")
        Session("age") = ds.Tables(0).Rows(0)("age")
        Session("test_room") = ds.Tables(0).Rows(0)("test_room")
        Session("text") = ds.Tables(0).Rows(0)("text")
        Label6.Text = Session("examinee_id")
        Label12.Text = Session("name")
        Label13.Text = Session("sex")
        Label14.Text = Session("age")
        Label15.Text = Session("test_room")
当考生在确认自己的个人信息无误后就可以单击“开始”按钮进行考试
这里通过一个VB.NET 的内置对象Session将考生的信息传递给考试页面,通过
  Me.Response.Redirect("exam.aspx")连接到考试页面
学生考试模块:
由于时间的关系只能将考试的试题设计为图片并根据查询数据库与准考证进行对应,可以由不同的准考证号生成不同的试题,IMG1为显示考试题目
LABEL2和LABEL4分别用来接受由Session("examinee_id") = ds.Tables(0).Rows(0)("examinee_id")
                                                             Session("name") = ds.Tables(0).Rows(0)("name")
传递过来的参数
再答题后把答案写到textbox1-textbox5中,在单击"提交答案"后label25-label29中显示你所输入的答案,代码如下:
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Label25.Text = TextBox1.Text
        Label26.Text = TextBox2.Text
        Label27.Text = TextBox3.Text
        Label28.Text = TextBox4.Text
        Label29.Text = TextBox5.Text
    End Sub
在确认交卷后答案将被写入到数据库,答案将不可以再修改,在按”确认交卷”后,把数据写入数据库的同时对所提交的答案与数据库保存的标准答案进行匹配,得出每一题的得分,在进行统计后在LABEL35中显示所得分数,并把所得分数保存到数据库相应的地方,在提交后为防止再次修改答案情况“提交答案”按钮将不可见  Me.Button1.Visible = False
代码如下:
 Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Dim cn As New System.Data.OleDb.OleDbConnection("provider=microsoft.jet.oledb.4.0;data source=F:/mysite/考试系统/database/Examination.mdb")
        Dim cmd As New OleDbCommand("update answer set user_answer=@i where answer_id=@j  ", cn)
        cmd.Parameters.Add("@i", Label25.Text)
        cmd.Parameters.Add("@j", Label8.Text)
        Dim da As New OleDbDataAdapter(cmd)
        Dim ds As New DataSet
        da.Fill(ds)
        Dim cn1 As New System.Data.OleDb.OleDbConnection("provider=microsoft.jet.oledb.4.0;data source=F:/mysite/考试系统/database/Examination.mdb")
        Dim cmd1 As New OleDbCommand("update answer set user_answer=@k where answer_id=@l  ", cn1)
        cmd1.Parameters.Add("@k", Label26.Text)
        cmd1.Parameters.Add("@l", Label9.Text)
        Dim da1 As New OleDbDataAdapter(cmd1)
        Dim ds1 As New DataSet
        da1.Fill(ds1)
        Dim cn2 As New System.Data.OleDb.OleDbConnection("provider=microsoft.jet.oledb.4.0;data source=F:/mysite/考试系统/database/Examination.mdb")
        Dim cmd2 As New OleDbCommand("update answer set user_answer=@m where answer_id=@n  ", cn2)
        cmd2.Parameters.Add("@m", Label27.Text)
        cmd2.Parameters.Add("@n", Label13.Text)
        Dim da2 As New OleDbDataAdapter(cmd2)
        Dim ds2 As New DataSet
        da2.Fill(ds2)
        Dim cn3 As New System.Data.OleDb.OleDbConnection("provider=microsoft.jet.oledb.4.0;data source=F:/mysite/考试系统/database/Examination.mdb")
        Dim cmd3 As New OleDbCommand("update answer set user_answer=@o where answer_id=@p  ", cn3)
        cmd3.Parameters.Add("@o", Label28.Text)
        cmd3.Parameters.Add("@p", Label14.Text)
        Dim da3 As New OleDbDataAdapter(cmd3)
        Dim ds3 As New DataSet
        da3.Fill(ds3)
        Dim cn4 As New System.Data.OleDb.OleDbConnection("provider=microsoft.jet.oledb.4.0;data source=F:/mysite/考试系统/database/Examination.mdb")
        Dim cmd4 As New OleDbCommand("update answer set user_answer=@k where answer_id=@l  ", cn4)
        cmd4.Parameters.Add("@k", Label29.Text)
        cmd4.Parameters.Add("@l", Label15.Text)
        Dim da4 As New OleDbDataAdapter(cmd4)
        Dim ds4 As New DataSet
        da4.Fill(ds4)
        '向数据库保存答案
        Dim cn5 As New System.Data.OleDb.OleDbConnection("provider=microsoft.jet.oledb.4.0;data source=F:/mysite/考试系统/database/Examination.mdb")
        Dim cmd5 As New OleDbCommand("select * from answer where answer_id=@a ", cn5)
        cmd5.Parameters.Add("@a", Label8.Text)
        Dim da5 As New OleDbDataAdapter(cmd5)
        Dim ds5 As New DataSet
        da5.Fill(ds5)
        Session("answer") = ds5.Tables(0).Rows(0)("answer")
        Session("user_answer") = ds5.Tables(0).Rows(0)("user_answer")
        If Session("answer") = Session("user_answer") Then
            Label10.Text = 1
        Else
            Label10.Text = 0
        End If
        Dim cn6 As New System.Data.OleDb.OleDbConnection("provider=microsoft.jet.oledb.4.0;data source=F:/mysite/考试系统/database/Examination.mdb")
        Dim cmd6 As New OleDbCommand("select * from answer where answer_id=@b ", cn6)
        cmd6.Parameters.Add("@b", Label9.Text)
        Dim da6 As New OleDbDataAdapter(cmd6)
        Dim ds6 As New DataSet
        da6.Fill(ds6)
        Session("answer") = ds6.Tables(0).Rows(0)("answer")
        Session("user_answer") = ds6.Tables(0).Rows(0)("user_answer")
        If Session("answer") = Session("user_answer") Then
            Label11.Text = 1
        Else
            Label11.Text = 0
        End If
        Dim cn7 As New System.Data.OleDb.OleDbConnection("provider=microsoft.jet.oledb.4.0;data source=F:/mysite/考试系统/database/Examination.mdb")
        Dim cmd7 As New OleDbCommand("select * from answer where answer_id=@c ", cn7)
        cmd7.Parameters.Add("@c", Label13.Text)
        Dim da7 As New OleDbDataAdapter(cmd7)
        Dim ds7 As New DataSet
        da7.Fill(ds7)
        Session("answer") = ds7.Tables(0).Rows(0)("answer")
        Session("user_answer") = ds7.Tables(0).Rows(0)("user_answer")
        If Session("answer") = Session("user_answer") Then
            Label16.Text = 1
        Else
            Label16.Text = 0
        End If
        Dim cn8 As New System.Data.OleDb.OleDbConnection("provider=microsoft.jet.oledb.4.0;data source=F:/mysite/考试系统/database/Examination.mdb")
        Dim cmd8 As New OleDbCommand("select * from answer where answer_id=@d ", cn8)
        cmd8.Parameters.Add("@d", Label14.Text)
        Dim da8 As New OleDbDataAdapter(cmd8)
        Dim ds8 As New DataSet
        da8.Fill(ds8)
        Session("answer") = ds8.Tables(0).Rows(0)("answer")
        Session("user_answer") = ds8.Tables(0).Rows(0)("user_answer")
        If Session("answer") = Session("user_answer") Then
            Label17.Text = 1
        Else
            Label17.Text = 0
        End If
        Dim cn9 As New System.Data.OleDb.OleDbConnection("provider=microsoft.jet.oledb.4.0;data source=F:/mysite/考试系统/database/Examination.mdb")
        Dim cmd9 As New OleDbCommand("select * from answer where answer_id=@e ", cn9)
        cmd9.Parameters.Add("@e", Label15.Text)
        Dim da9 As New OleDbDataAdapter(cmd9)
        Dim ds9 As New DataSet
        da9.Fill(ds9)
        Session("answer") = ds9.Tables(0).Rows(0)("answer")
        Session("user_answer") = ds9.Tables(0).Rows(0)("user_answer")
        If Session("answer") = Session("user_answer") Then
            Label18.Text = 1
        Else
            Label18.Text = 0
        End If
        Label32.Text = Session("name")
        Dim score As Single
        score = Val(Label10.Text) + Val(Label11.Text) + Val(Label16.Text) + Val(Label16.Text) + Val(Label18.Text)
        Label35.Text = Val(score)
        Me.Button1.Visible = False
        Dim cn10 As New System.Data.OleDb.OleDbConnection("provider=microsoft.jet.oledb.4.0;data source=F:/mysite/考试系统/database/Examination.mdb")
        Dim cmd10 As New OleDbCommand("update Basicinfo set score=@z where Examinee_id=@u ", cn10)
        cmd10.Parameters.Add("@z", Label35.Text)
        cmd10.Parameters.Add("@u", Label2.Text)
        Dim da10 As New OleDbDataAdapter(cmd10)
        Dim ds10 As New DataSet
        da10.Fill(ds10)
教师登陆模块:
这里的界面做的比较简单,只有两个TEXTBOX和两个requiredFieldValidator控件分别对textbox1,textbox2进行验证.不允许2个textbox的值为空(requiredFieldValidator1对textbox1进行验证 , (requiredFieldValidator2对textbox2进行验证)botten用来提交登陆信息并查询数据库,如果有匹配的记录就跳转到Webmanage.aspx页面
并根据不同教师得出不同的权限
Session("pepdom") = ds.Tables(0).Rows(0)("pepdom")
 Me.Response.Redirect("Webmanage.aspx")
如果在数据库里查询不到匹配的记录LABEL3将会显示  Label3.Text = "没有这个用户或密码错误!"
代码如下:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim cn As New System.Data.OleDb.OleDbConnection("provider=microsoft.jet.oledb.4.0;data source=F:/mysite/考试系统/database/teacher.mdb")
        Dim cmd As New OleDbCommand("select * from teacher where teacher_id=@i and password=@j ", cn)
        cmd.Parameters.Add("@i", TextBox1.Text)
        cmd.Parameters.Add("@j", TextBox2.Text)
        Dim da As New OleDbDataAdapter(cmd)
        Dim ds As New DataSet
        Dim pepdom As Integer
        da.Fill(ds)
        If ds.Tables(0).Rows.Count > 0 Then
            Session("pepdom") = ds.Tables(0).Rows(0)("pepdom")
            Me.Response.Redirect("Webmanage.aspx")
        Else
            Label3.Text = "没有这个用户或密码错误!"
        End If

    End Sub
教师管理模块:
这里只有简单的四个HyperLink,但不同权限登陆的教师这里显示的情况是不同的:
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim pepdom As Integer
        If IsPostBack = False Then
            If Session("pepdom") = 1 Then
                Me.HyperLink4.Visible = False
            End If
            If Session("pepdom") = 2 Then
                Me.HyperLink2.Visible = False
                Me.HyperLink4.Visible = False
            End If
        End If
End Sub
在考生管理页面
DataGrid1控件用来显示所以考生的信息
Textbox1用来输入要查找的考生:在查找后DataGrid1只显示查找考生的信息,IMAGE用来显示考生的照片
代码如下:
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        '在此处放置初始化页的用户代码
        Dim cn As New System.Data.OleDb.OleDbConnection("provider=microsoft.jet.oledb.4.0;data source=F:/mysite/考试系统/database/Examination.mdb")
        Dim cmd As New OleDbCommand("select * from Basicinfo", cn)
        Dim da As New OleDbDataAdapter(cmd)
        Dim ds As New DataSet
        da.Fill(ds)
        DataGrid1.DataSource = ds
        DataGrid1.DataBind()
    End Sub
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim cn As New System.Data.OleDb.OleDbConnection("provider=microsoft.jet.oledb.4.0;data source=F:/mysite/考试系统/database/Examination.mdb")
        Dim cmd As New OleDbCommand("select examinee_id as 准考证号,name as 姓名,sex as 性别, age as 年龄,test_room as 考场, user_img as 考生照片,text as 考题,score as 考试成绩 from Basicinfo where Examinee_id=@i", cn)
        cmd.Parameters.Add("@i", TextBox1.Text)
        Dim da As New OleDbDataAdapter(cmd)
        Dim ds As New DataSet
        da.Fill(ds)
        DataGrid1.DataSource = ds
        DataGrid1.DataBind()
        Image1.ImageUrl = ds.Tables(0).Rows(0)("考生照片")
 
    End Sub
添加考生页面
该页面用于添加考生,把输入TEXTBOX的信息保存到数据库中
代码如下:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim cn As New System.Data.OleDb.OleDbConnection("provider=microsoft.jet.oledb.4.0;data source=F:/mysite/考试系统/database/Examination.mdb")
        Dim cmd As New OleDbCommand("insert into Basicinfo(Examinee_id,name,sex,age,test_room) values(@a,@b,@c,@d,@e)", cn)
        cmd.Parameters.Add("@a", TextBox1.Text)
        cmd.Parameters.Add("@b", TextBox2.Text)
        cmd.Parameters.Add("@c", TextBox3.Text)
        cmd.Parameters.Add("@d", TextBox4.Text)
        cmd.Parameters.Add("@e", TextBox5.Text)
        Dim da As New OleDbDataAdapter(cmd)
        Dim ds As New DataSet
        da.Fill(ds)
    End Sub
版权所有:卢彦
第1章 前台 本网站的前台主要实现的网络在线考试及成绩查询等功能。 1.1 注册 想要进行在线考试必须先登录,如果您是新用户需要先进行注册,以获取登录密码,单击登录页面中的“注册”按钮,进入“学生注册信息”页面。 在此页面中填写完整的注册信息,单击“注册”按钮,完成注册操作。 注意:如果忘记密码可以通过密码问题及问题答案来找回密码。 1.2 在线考试 在线考试的操作步骤如下: (1)进入登录页面,在学生证号、密码及验证码处填写正确的登录信息,单击“登录”按钮,进入前台在线考试的主页面,学号:0000000000000001,密码:25175。 (2)阅读完考生规则后,单击“开始”按钮,进入选择考试套题页面。 (3)在此页面中选择考试课程及相应的套题名称,单击“同意”按钮,进入准备考试页面。 (4)单击“开始”按钮,进入考试页面。 (5)考试时间为20分钟,20分钟后如果不交卷,自统自动提交考卷。单击“交卷”按钮,下面将显示您的考试成绩。 (6)单击“退出当前系统”按钮,完成本次在线考试。 1.3 成绩查询 登录成功后,在此页面的右上方单击“查询成绩”按钮,进入查询页面。 在此页面中考生不但可以查看自己的考试成绩,还可以查看其他考生的成绩。在查询条件处选择相应的查询条件,并输入查询关键字,单击“查询”按钮,下方列表栏中显示查询结果。 第2章 后台 在登录页面中的“学生证号”处输入管理员用户名“25175”,在密码处输入“25175”,填写正确的验证码,并勾选“管理员登录”复选框,单击“登录”按钮, 后台主要包括:管理员、管理注册学生、管理课程信息、管理套题信息、管理考生成绩、管理考试题目、添加试题。其中管理员、管理注册学生、管理课程信息、管理套题信息、管理考生成绩、管理考试题目的操作方法相同,下面以管理员为例,讲解其操作方法。 在功能导航区中单击“管理员”按钮。此页面主要实现添加、修改、删除、查询管理员信息等功能。 管理员页面的操作方法如下: (1)添加管理员。单击“添加管理员”按钮,在管理员名称及管理员密码处填写管理员名称及密码,然后单击“添加”按钮,完成添加操作。 (2)修改。单击“修改”按钮,在此页面中可对管理员的名称及密码进行修改,修改完成后,单击“修改”按钮,完成修改操作。 (3)删除。单击“删除”按钮,即可删除该条管理员信息。 (4)查询。在查询条件处选择相应的查询条件并输入相对应的关键字,单击“查询”按钮,下方显示查询结果,完成查询操作。 在功能导航区中单击“添加试题”按钮,进入如图2.6所示的页面,在此页面中选择要添加的试题的所属专业、课程主套题名称。 单击“选择”按钮,在此页面中填写完整的试题信息,单击“添加”按钮,完成添加操作。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值