📄 paper.aspx
字号:
<%@ Page Language="VB" Debug="true" %>
<%@ Import Namespace="system.Data" %>
<%@ Import Namespace="system.Data.Oledb" %>
<Html>
<Head>
<Title>网上考试系统</Title>
<Script Language="VB" runat="Server">
Dim dt As DataTable
Dim score1,score2,score3 As Single
Dim number1,number2,number3 As Integer
Dim type1,type2,type3 As string
Dim num As Integer
Dim examname As String
Sub Page_Load(Sender As object,e As Eventargs)
Dim SQL As String
if not page.ispostback then
CreateTable()
ReadPaper()
Randomize(timer)
SQL = "select * from subject where type='单项选择题'"
if type1<>"type" then
MakePaper(SQL,number1)
SingleChoice.DataSource=dt.defaultview
SingleChoice.databind()
end if
SQL = "select * from subject where type='多项选择题'"
if type2<>"type" then
MakePaper(SQL,number2)
MultiChoice.DataSource=dt.defaultview
MultiChoice.databind()
end if
SQL = "select * from subject where type='判断题'"
if type3<>"type" then
MakePaper(SQL,number3)
Judge.DataSource=dt.defaultview
Judge.databind()
end if
end if
End Sub
Sub CreateTable()
dt = New DataTable("Paper")
CreateColumn("System.Int32","SubjectID")
CreateColumn("System.String","question")
CreateColumn("System.String","option1")
CreateColumn("System.String","option2")
CreateColumn("System.String","option3")
CreateColumn("System.String","option4")
CreateColumn("System.String","answer")
End Sub
Sub CreateColumn(Byval DataType As String,Byval ColumnName As String)
Dim dc As DataColumn
dc = New DataColumn()
with dc
.DataType = System.Type.GetType(DataType)
.ColumnName = ColumnName
end with
dt.Columns.Add(dc)
End Sub
Sub ReadPaper()
Dim conn as OledbConnection
Dim com as OledbCommand
Dim rd As OledbDataReader
Dim conStr As String ="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & server.mappath("EXAM.MDB")
Dim SQL As String="select type1,number1,score1,type2,number2,score2,type3,number3,score3,examname,examid from paper where examdate=(select max(examdate) from paper) "
conn = New OleDbConnection(conStr)
Conn.Open()
Com = New OledbCommand(SQL,conn)
rd=Com.ExecuteReader()
type1="type"
type2="type"
type3="type"
while rd.read()
label1.Text=rd.GetString(9)
if not rd.IsDbNull(0) then
type1=trim(rd.GetString(0))
number1=rd.GetInt16(1)
score1=rd.GetFloat(2)
end if
if not rd.IsDbNull(3) then
type2=trim(rd.GetString(3))
number2=rd.GetInt16(4)
score2=rd.GetFloat(5)
end if
if not rd.IsDbNull(6) then
type3=trim(rd.GetString(6))
number3=rd.GetInt16(7)
score3=rd.GetFloat(8)
end if
session("examid")=rd.GetInt32(10)
end while
rd.close()
conn.Close()
End Sub
Sub MakePaper(Byval str As String,Byval number As Integer)
Dim conn as OledbConnection
Dim conStr As String ="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & server.mappath("EXAM.MDB")
Dim ad as OledbDataAdapter
Dim ds as Dataset
Dim i,examid As Integer
Dim count As Integer '某项题型的试题数目
Dim dr As DataRow
conn = New OleDbConnection(conStr)
Conn.Open()
dt.Clear()
For i=0 to number -1
ad=New OledbDataAdapter(Str,conn)
ds = New DataSet()
ad.Fill(ds, "Single")
count=ds.Tables(0).Rows.Count
examid = CInt(Int(count * Rnd()))
dr = dt.NewRow()
dr("SubjectID")=ds.Tables(0).Rows(examid)("SubjectID")
dr("question")=ds.Tables(0).Rows(examid)("question")
dr("option1")=ds.Tables(0).Rows(examid)("option1")
dr("option2")=ds.Tables(0).Rows(examid)("option2")
dr("option3")=ds.Tables(0).Rows(examid)("option3")
dr("option4")=ds.Tables(0).Rows(examid)("option4")
dr("answer")=ds.Tables(0).Rows(examid)("answer")
dt.Rows.Add(dr)
Next
conn.Close()
End Sub
Sub OnSubmit_Click(Sender As object,e As Eventargs)
Dim conn as OledbConnection
Dim com as OledbCommand
'Dim rd As OledbDataReader
Dim conStr As String ="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & server.mappath("EXAM.MDB")
Dim SQL As String
Dim total As Single
conn = New OleDbConnection(conStr)
Conn.Open()
total = SingleScore() + MultiScore() + JudgeScore()
SQL="insert into score(userid,examid,score) values(" & session("userid") & "," & session("examid") & "," & total & ")"
Com = New OledbCommand(SQL,conn)
Com.ExecuteNonQuery()
Score.Text = "总成绩为:" & total & "分"
conn.close()
End Sub
Function SingleScore() As Single
Dim s1,s2,s3,s4 As RadioButton
Dim tmp As DataListItem
Dim SingleID,SingleAnswer,SScore As Label
Dim SingleResult As Image
Dim i As Integer
Dim TotalScore As Single = 0
Dim ans As String
For i=0 To SingleChoice.Items.Count-1
tmp = SingleChoice.Items(i)
s1 = tmp.FindControl("Single1")
s2 = tmp.Findcontrol("Single2")
s3 = tmp.FindControl("Single3")
s4 = tmp.FindControl("Single4")
SingleID = tmp.FindControl("SingleID")
SingleAnswer = tmp.FindControl("SingleAnswer")
SScore = tmp.FindControl("SingleScore")
SingleResult = tmp.FindControl("SingleResult")
If s1.Checked Then
ans = "A"
Else If s2.Checked Then
ans = "B"
Else If s3.Checked Then
ans = "C"
Else If s4.Checked Then
ans = "D"
Else
ans = "0"
End If
SingleResult.Visible="True"
if ans = trim(SingleAnswer.Text) Then
TotalScore = TotalScore + Single.Parse(SScore.Text)
SingleResult.ImageUrl="Right1.jpg"
else
SingleResult.ImageUrl="error1.jpg"
End IF
Next
return TotalScore
End Function
Function MultiScore() As Single
Dim m1,m2,m3,m4 As CheckBox
Dim tmp As DataListItem
Dim MultiID,MultiAnswer,MScore As Label
Dim MultiResult As Image
Dim i As Integer
Dim ans As String
Dim TotalScore As Single
Dim no As Integer
For i=0 To MultiChoice.Items.Count-1
tmp = MultiChoice.Items(i)
m1 = tmp.FindControl("Multi1")
m2 = tmp.Findcontrol("Multi2")
m3 = tmp.FindControl("Multi3")
m4 = tmp.FindControl("Multi4")
MultiID = tmp.FindControl("MultiID")
MultiAnswer = tmp.FindControl("MultiAnswer")
MScore = tmp.FindControl("MultiScore")
MultiResult = tmp.FindControl("MultiResult")
If m1.Checked Then
ans = "A"
Else
ans = "0"
End If
If m2.Checked Then
ans &= "B"
Else
ans &= "0"
End If
If m3.Checked Then
ans &= "C"
Else
ans &= "0"
End If
If m4.Checked Then
ans &= "D"
Else
ans &= "0"
End If
MultiResult.Visible="True"
if ans = Trim(MultiAnswer.Text) Then
TotalScore = TotalScore + Single.Parse(MScore.Text)
MultiResult.ImageUrl="Right1.jpg"
else
MultiResult.ImageUrl="error1.jpg"
End IF
Next
return TotalScore
End Function
Function JudgeScore() As Single
Dim j1,j2 As RadioButton
Dim tmp As DataListItem
Dim JudgeID,JudgeAnswer,JScore As Label
Dim JudgeResult As Image
Dim i As Integer
Dim TotalScore As Single
Dim ans As String
For i=0 To Judge.Items.Count-1
tmp= Judge.Items(i)
j1 = tmp.FindControl("Judge1")
j2 = tmp.Findcontrol("Judge2")
JudgeID = tmp.FindControl("JudgeID")
JudgeAnswer = tmp.FindControl("JudgeAnswer")
JScore = tmp.FindControl("JudgeScore")
JudgeResult = tmp.FindControl("JudgeResult")
If j1.Checked Then
ans = "Y"
ElseIf j2.Checked Then
ans = "N"
Else
ans = "0"
End If
JudgeResult.Visible="True"
if ans = Trim(JudgeAnswer.Text) Then
TotalScore = TotalScore + Single.Parse(JScore.Text)
JudgeResult.ImageUrl="Right1.jpg"
else
JudgeResult.ImageUrl="error1.jpg"
End IF
Next
return TotalScore
End Function
Sub OnReturn_Click(byval Sender As object,e As Eventargs)
Response.Redirect("exam.aspx")
End Sub
</Script>
</Head>
<Body>
<form runat="server">
<P>
<asp:Label id="Label1" Font-Bold="True" Font-Size="26pt" ForeColor="Orange" runat="server" /><P>
<asp:Label id="Score" Font-Bold="True" Font-Size="20pt" ForeColor="Red" runat="server" /><P>
<asp:DataList id="SingleChoice" runat="server">
<HeaderTemplate>
<HR><P>
<b><Font color="Blue" size="5"><%#type1%>(共<%#number1%>题,每题<%#score1%>分)</b></FONT>
<table border=0 width="740">
<% num=0 %>
</HeaderTemplate>
<ItemTemplate>
<% num=num+1 %>
<tr>
<td bgcolor="#EFEFEF"><FONT COLOR="BLUE">
<%=num%>、 <%# DataBinder.Eval(Container.DataItem, "question") %>
<asp:Label id="SingleID" visible="False" Text='<%# DataBinder.Eval(Container.DataItem, "SubjectID")%>' runat="server" />
<asp:Label id="SingleAnswer" visible="False" Text='<%# DataBinder.Eval(Container.DataItem, "answer")%>' runat="server" />
<asp:Label id="SingleScore" visible="False" Text='<%# score1%>' runat="server" />
</font></td>
</tr>
<tr>
<td>
<asp:RadioButton id="Single1" GroupName="S" runat="Server" Text='<%# DataBinder.Eval(Container.DataItem, "option1")%>'/>
</td>
</tr>
<tr>
<td>
<asp:RadioButton id="Single2" GroupName="S" runat="Server" Text='<%# DataBinder.Eval(Container.DataItem, "option2")%>'/>
</td>
</tr>
<tr>
<td>
<asp:RadioButton id="Single3" GroupName="S" runat="Server" Text='<%# DataBinder.Eval(Container.DataItem, "option3")%>'/>
</td>
</tr>
<tr>
<td>
<asp:RadioButton id="Single4" GroupName="S" runat="Server" Text='<%# DataBinder.Eval(Container.DataItem, "option4")%>'/>
</td>
</tr>
<tr>
<td>
<asp:Image id="SingleResult" Visible="False" runat="Server" />
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:DataList><P>
<asp:DataList id="MultiChoice" runat="server">
<HeaderTemplate>
<HR><P>
<b><Font color="Blue" size="5"><%#type2%>(共<%#number2%>题,每题<%#score2%>分)</b></FONT>
<table border=0 width="740">
<% num=0 %>
</HeaderTemplate>
<ItemTemplate>
<% num=num+1 %>
<asp:Label id="MultiID" visible="False" Text='<%# DataBinder.Eval(Container.DataItem, "SubjectID")%>' runat="server" />
<asp:Label id="MultiAnswer" visible="False" Text='<%# DataBinder.Eval(Container.DataItem, "answer")%>' runat="server" />
<asp:Label id="MultiScore" visible="False" Text='<%# score2%>' runat="server" />
<tr>
<td bgcolor="#EFEFEF"><FONT COLOR="BLUE">
<%=num%>、 <%# DataBinder.Eval(Container.DataItem, "question") %>
</font></td>
</tr>
<tr>
<td>
<asp:CheckBox id="Multi1" runat="Server" Text='<%# DataBinder.Eval(Container.DataItem, "option1")%>'/>
</td>
</tr>
<tr>
<td>
<asp:CheckBox id="Multi2" runat="Server" Text='<%# DataBinder.Eval(Container.DataItem, "option2")%>'/>
</td>
</tr>
<tr>
<td>
<asp:CheckBox id="Multi3" runat="Server" Text='<%# DataBinder.Eval(Container.DataItem, "option3")%>'/>
</td>
</tr>
<tr>
<td>
<asp:CheckBox id="Multi4" runat="Server" Text='<%# DataBinder.Eval(Container.DataItem, "option4")%>'/>
</td>
</tr>
<tr>
<td>
<asp:Image id="MultiResult" Visible="False" runat="Server" />
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:DataList><P>
<asp:DataList id="Judge" runat="server">
<HeaderTemplate>
<HR><P>
<b><Font color="Blue" size="5"><%#type3%>(共<%#number3%>题,每题<%#score3%>分)</b></FONT>
<table border=0 width="740">
<% num=0 %>
</HeaderTemplate>
<ItemTemplate>
<% num=num+1 %>
<asp:Label id="JudgeID" visible="False" Text='<%# DataBinder.Eval(Container.DataItem, "SubjectID")%>' runat="server" />
<asp:Label id="JudgeAnswer" visible="False" Text='<%# DataBinder.Eval(Container.DataItem, "answer")%>' runat="server" />
<asp:Label id="JudgeScore" visible="False" Text='<%# score3%>' runat="server" />
<tr>
<td bgcolor="#EFEFEF" ><FONT COLOR="BLUE">
<%=num%>、 <%# DataBinder.Eval(Container.DataItem, "question") %>
</font></td>
</tr>
<tr>
<td>
<asp:RadioButton id="Judge1" GroupName="J" runat="Server" Text="对"/>
</td>
</tr>
<tr>
<td>
<asp:RadioButton id="Judge2" GroupName="J" runat="Server" Text="错"/>
</td>
</tr>
<tr>
<td>
<asp:Image id="JudgeResult" Visible="False" runat="Server" />
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:DataList><P align="center">
<asp:Button id="Submit" Text="交 卷" OnClick="OnSubmit_Click" runat="server"/>
<asp:Button id="Return" Text="返 回" OnClick="OnReturn_Click" runat="server"/>
</form>
</Body>
</Html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -