这是课程设计的时候写的一个随机组卷的原理代码 ,没有进行相关的优化处理,但是功能已经实现,能够从数据库中随机的取出n条数据组成试卷。根据需求再修改一下就可以在自己的项目中使用了!
这是课程设计的时候写的一个随机组卷的原理代码 ,没有进行相关的优化处理,但是功能已经实现,能够从数据库中随机的取出n条数据组成试卷。

源代码
1 Imports System.Data
2 Imports System.Data.SqlClient
3 Imports System.Configuration.AppSettingsReader
4
5
6 Namespace WebApplication1
7
8 Partial Class SuiJi
9 Inherits System.Web.UI.Page
10
11 #Region " Web 窗体设计器生成的代码 "
12
13 '该调用是 Web 窗体设计器所必需的。
14 <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
15
16 End Sub
17 Public db As New SupperSDR.DbConnection
18 Dim strconn As String = ConfigurationSettings.AppSettings("strdata")
19 '注意: 以下占位符声明是 Web 窗体设计器所必需的。
20 '不要删除或移动它。
21
22 Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
23 'CODEGEN: 此方法调用是 Web 窗体设计器所必需的
24 '不要使用代码编辑器修改它。
25 InitializeComponent()
26 End Sub
27 '*************张海波定义的秘密变量嘿嘿**************
28 Dim ArrNum, Num As Integer '这个变量是数组长度减去1所余下的数值(arrnum),Num是所要产生的小题的数目
29
30 '************秘密变量就藏在这里,一般不会被小菜鸟发现滴**********
31 #End Region
32 Dim ArrListXz, ArrListPd, ArrListTk As ArrayList '声明选择判断填空数组用来保存该类试题
33 Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
34 '在此处放置初始化页的用户代码
35 If Not IsPostBack Then
36 BindKc()
37 End If
38 End Sub
39 Sub BindKc() '绑定课程
40 db.DbConn.Open()
41
42 db.DbCmd.CommandText = "select distinct(CourseType) from testType"
43 Dim dr As SqlClient.SqlDataReader = db.DbCmd.ExecuteReader
44 While dr.Read
45 KcName.Items.Add(dr(0))
46 End While
47
48 db.DbConn.Close()
49 End Sub
50
51 Private Sub Type_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Type.SelectedIndexChanged
52 Try
53 IDArrlist()
54 Catch ex As Exception
55
56 End Try
57
58 End Sub
59
60 Function IDArrlist() As Integer
61 '先根据表TestInfo中的CourseType和Type项目索引出试题的Id号码,组成一个以逗号为分隔符的字符串
62 db.DbConn.Open()
63 db.DbCmd.CommandText = "select id from testinfo where CourseType=@kecheng and type=@leixing"
64 db.DbCmd.Parameters.Add("@kecheng", KcName.SelectedValue)
65 db.DbCmd.Parameters.Add("@leixing", Type.SelectedValue)
66 Dim dr As SqlClient.SqlDataReader = db.DbCmd.ExecuteReader
67 ltID.Text = ""
68 While dr.Read
69 ltID.Text += dr(0) & ","
70 End While
71 Session.Add("ID", ltID.Text)
72 db.DbConn.Close()
73
74
75 '******开始调用相关函数****
76
77 'ChuLiStr()
78 '*********结束*************
79 Dim StrId As String = Session("id")
80 Dim Num As Integer = 2
81
82
83 Dim str() As String = StrId.Replace("(", "").Replace(")", "").Split(",")
84 Dim ArrNum As Integer = str.Length
85 Select Case Type.SelectedValue
86 Case "选择"
87 Session("xz") = ""
88 LtXiaoTi.Text += "《选择题》" & "<br>"
89 Case "判断"
90 Session("pd") = ""
91 LtXiaoTi.Text += "《判断题》" & "<br>"
92 Case "填空"
93 Session("tk") = ""
94 LtXiaoTi.Text += "《填空题》" & "<br>"
95 End Select
96 For Num = 1 To CInt(txtNUm.Text)
97 Dim i As Integer = CInt(Int((ArrNum - 1 + 1) * Rnd() + 1))
98
99 db.DbConn.Close()
100 db.DbConn.Open()
101
102 db.DbCmd.CommandText = "select * from testinfo where id=" & str(i)
103
104 Dim SdrDr As SqlClient.SqlDataReader = db.DbCmd.ExecuteReader
105
106 While SdrDr.Read
107
108 Select Case Type.SelectedValue
109 Case "选择"
110
111 LtXiaoTi.Text += "【" & SdrDr(0) & "】、" & SdrDr(1) & "<br>"
112 Session.Add("xz", LtXiaoTi.Text)
113 Case "判断"
114
115 LtXiaoTi.Text += "【" & SdrDr(0) & "】、" & SdrDr(1) & "<br>"
116 Session.Add("pd", LtXiaoTi.Text)
117 Case "填空"
118
119 LtXiaoTi.Text += "【" & SdrDr(0) & "】、" & SdrDr(1) & "<br>"
120 Session.Add("tk", LtXiaoTi.Text)
121 End Select
122
123 End While
124 'Response.Write("这是下标" & i & "值" & str(i))
125 Next
126 End Function
127
128
129 'Function ChuLiStr() '分割字符串操作将分割好的字符串组成数组,并返回数组长度
130 ' Dim StrId As String = Session("id")
131 ' Dim str() As String = StrId.Replace("(", "").Replace(")", "").Split(",")
132 ' ArrNum = str.Length - 1
133 ' Response.Write("数组长度" & ArrNum & "<br>" & "这是数组的第一项" & str(0) & "<br>")
134
135 ' ' Return ArrNum '返回数组的长度
136
137 ' Num = 3000
138 ' Dim i As Integer
139
140 ' 'Response.Write("这是什么" & str(CInt(Sjhanshu(1, ArrNum, Num))))
141 ' Response.Write("数组下标:" & Sjhanshu(1, ArrNum, Num) & "<br>对应ID号" & str(CInt(lbNum.Text)) & "<br>" & "数组的第三项是:" & str(2))
142 ' For i = 1 To Num
143
144 ' 'db.DbConn.Open()
145 ' 'db.DbCmd.CommandText = "select * from testinfo where id=" & Str(Sjhanshu(1, ArrNum, Num)) & ""
146 ' 'Dim SdrDr As OleDbDataReader = db.DbCmd.ExecuteReader
147 ' 'While SdrDr.Read
148 ' ' Response.Write("这是随机取出的题号" & SdrDr(0) & "这是题干" & SdrDr(1) & "结束输出")
149 ' 'End While
150
151
152 ' Next
153
154
155
156
157 'End Function
158 Function Sjhanshu(ByVal lowerbound As Integer, ByVal upperbound As Integer) As Integer '这是一个产生随机数字的函数
159 '这是产生随机数字用的代码
160 lbNum.Text = ""
161 lbNum.Text = CInt(Int((upperbound - lowerbound + 1) * Rnd() + lowerbound))
162 End Function
163
164
165 Private Sub btnCreatPaper_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnCreatPaper.Click
166
167 LtXiaoTi.Visible = False
168 LtShiJuan.Text = LtXiaoTi.Text
169 End Sub
170
171 Private Sub BtnSubmit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnSubmit.Click
172 db.DbConn.Close()
173 Try
174 db.DbConn.Open()
175 db.DbCmd.CommandText = "insert into paperinfo(TestContent,CourseType) values(@SdrNeiRong,@SdrKecheng)"
176 db.DbCmd.Parameters.Add("@SdrNeiRong", LtShiJuan.Text)
177 db.DbCmd.Parameters.Add("@SdrKecheng", KcName.SelectedValue)
178 db.DbCmd.ExecuteNonQuery()
179 lbmsg.Visible = True
180 lbmsg.Text = "保存成功"
181 db.DbConn.Close()
182 Catch ex As Exception
183 Response.Write("<script language='javascript'>'保存失败'</script>")
184 End Try
185 End Sub
186
187 Private Sub txtNUm_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtNUm.TextChanged
188 Try
189 Dim Snum As Integer = CInt(txtNUm.Text)
190 Catch ex As Exception
191 txtNUm.Text = 10
192 End Try
193 End Sub
194 End Class
195
196 End Namespace
197
1 Imports System.Data
2 Imports System.Data.SqlClient
3 Imports System.Configuration.AppSettingsReader
4
5
6 Namespace WebApplication1
7
8 Partial Class SuiJi
9 Inherits System.Web.UI.Page
10
11 #Region " Web 窗体设计器生成的代码 "
12
13 '该调用是 Web 窗体设计器所必需的。
14 <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
15
16 End Sub
17 Public db As New SupperSDR.DbConnection
18 Dim strconn As String = ConfigurationSettings.AppSettings("strdata")
19 '注意: 以下占位符声明是 Web 窗体设计器所必需的。
20 '不要删除或移动它。
21
22 Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
23 'CODEGEN: 此方法调用是 Web 窗体设计器所必需的
24 '不要使用代码编辑器修改它。
25 InitializeComponent()
26 End Sub
27 '*************张海波定义的秘密变量嘿嘿**************
28 Dim ArrNum, Num As Integer '这个变量是数组长度减去1所余下的数值(arrnum),Num是所要产生的小题的数目
29
30 '************秘密变量就藏在这里,一般不会被小菜鸟发现滴**********
31 #End Region
32 Dim ArrListXz, ArrListPd, ArrListTk As ArrayList '声明选择判断填空数组用来保存该类试题
33 Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
34 '在此处放置初始化页的用户代码
35 If Not IsPostBack Then
36 BindKc()
37 End If
38 End Sub
39 Sub BindKc() '绑定课程
40 db.DbConn.Open()
41
42 db.DbCmd.CommandText = "select distinct(CourseType) from testType"
43 Dim dr As SqlClient.SqlDataReader = db.DbCmd.ExecuteReader
44 While dr.Read
45 KcName.Items.Add(dr(0))
46 End While
47
48 db.DbConn.Close()
49 End Sub
50
51 Private Sub Type_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Type.SelectedIndexChanged
52 Try
53 IDArrlist()
54 Catch ex As Exception
55
56 End Try
57
58 End Sub
59
60 Function IDArrlist() As Integer
61 '先根据表TestInfo中的CourseType和Type项目索引出试题的Id号码,组成一个以逗号为分隔符的字符串
62 db.DbConn.Open()
63 db.DbCmd.CommandText = "select id from testinfo where CourseType=@kecheng and type=@leixing"
64 db.DbCmd.Parameters.Add("@kecheng", KcName.SelectedValue)
65 db.DbCmd.Parameters.Add("@leixing", Type.SelectedValue)
66 Dim dr As SqlClient.SqlDataReader = db.DbCmd.ExecuteReader
67 ltID.Text = ""
68 While dr.Read
69 ltID.Text += dr(0) & ","
70 End While
71 Session.Add("ID", ltID.Text)
72 db.DbConn.Close()
73
74
75 '******开始调用相关函数****
76
77 'ChuLiStr()
78 '*********结束*************
79 Dim StrId As String = Session("id")
80 Dim Num As Integer = 2
81
82
83 Dim str() As String = StrId.Replace("(", "").Replace(")", "").Split(",")
84 Dim ArrNum As Integer = str.Length
85 Select Case Type.SelectedValue
86 Case "选择"
87 Session("xz") = ""
88 LtXiaoTi.Text += "《选择题》" & "<br>"
89 Case "判断"
90 Session("pd") = ""
91 LtXiaoTi.Text += "《判断题》" & "<br>"
92 Case "填空"
93 Session("tk") = ""
94 LtXiaoTi.Text += "《填空题》" & "<br>"
95 End Select
96 For Num = 1 To CInt(txtNUm.Text)
97 Dim i As Integer = CInt(Int((ArrNum - 1 + 1) * Rnd() + 1))
98
99 db.DbConn.Close()
100 db.DbConn.Open()
101
102 db.DbCmd.CommandText = "select * from testinfo where id=" & str(i)
103
104 Dim SdrDr As SqlClient.SqlDataReader = db.DbCmd.ExecuteReader
105
106 While SdrDr.Read
107
108 Select Case Type.SelectedValue
109 Case "选择"
110
111 LtXiaoTi.Text += "【" & SdrDr(0) & "】、" & SdrDr(1) & "<br>"
112 Session.Add("xz", LtXiaoTi.Text)
113 Case "判断"
114
115 LtXiaoTi.Text += "【" & SdrDr(0) & "】、" & SdrDr(1) & "<br>"
116 Session.Add("pd", LtXiaoTi.Text)
117 Case "填空"
118
119 LtXiaoTi.Text += "【" & SdrDr(0) & "】、" & SdrDr(1) & "<br>"
120 Session.Add("tk", LtXiaoTi.Text)
121 End Select
122
123 End While
124 'Response.Write("这是下标" & i & "值" & str(i))
125 Next
126 End Function
127
128
129 'Function ChuLiStr() '分割字符串操作将分割好的字符串组成数组,并返回数组长度
130 ' Dim StrId As String = Session("id")
131 ' Dim str() As String = StrId.Replace("(", "").Replace(")", "").Split(",")
132 ' ArrNum = str.Length - 1
133 ' Response.Write("数组长度" & ArrNum & "<br>" & "这是数组的第一项" & str(0) & "<br>")
134
135 ' ' Return ArrNum '返回数组的长度
136
137 ' Num = 3000
138 ' Dim i As Integer
139
140 ' 'Response.Write("这是什么" & str(CInt(Sjhanshu(1, ArrNum, Num))))
141 ' Response.Write("数组下标:" & Sjhanshu(1, ArrNum, Num) & "<br>对应ID号" & str(CInt(lbNum.Text)) & "<br>" & "数组的第三项是:" & str(2))
142 ' For i = 1 To Num
143
144 ' 'db.DbConn.Open()
145 ' 'db.DbCmd.CommandText = "select * from testinfo where id=" & Str(Sjhanshu(1, ArrNum, Num)) & ""
146 ' 'Dim SdrDr As OleDbDataReader = db.DbCmd.ExecuteReader
147 ' 'While SdrDr.Read
148 ' ' Response.Write("这是随机取出的题号" & SdrDr(0) & "这是题干" & SdrDr(1) & "结束输出")
149 ' 'End While
150
151
152 ' Next
153
154
155
156
157 'End Function
158 Function Sjhanshu(ByVal lowerbound As Integer, ByVal upperbound As Integer) As Integer '这是一个产生随机数字的函数
159 '这是产生随机数字用的代码
160 lbNum.Text = ""
161 lbNum.Text = CInt(Int((upperbound - lowerbound + 1) * Rnd() + lowerbound))
162 End Function
163
164
165 Private Sub btnCreatPaper_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnCreatPaper.Click
166
167 LtXiaoTi.Visible = False
168 LtShiJuan.Text = LtXiaoTi.Text
169 End Sub
170
171 Private Sub BtnSubmit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnSubmit.Click
172 db.DbConn.Close()
173 Try
174 db.DbConn.Open()
175 db.DbCmd.CommandText = "insert into paperinfo(TestContent,CourseType) values(@SdrNeiRong,@SdrKecheng)"
176 db.DbCmd.Parameters.Add("@SdrNeiRong", LtShiJuan.Text)
177 db.DbCmd.Parameters.Add("@SdrKecheng", KcName.SelectedValue)
178 db.DbCmd.ExecuteNonQuery()
179 lbmsg.Visible = True
180 lbmsg.Text = "保存成功"
181 db.DbConn.Close()
182 Catch ex As Exception
183 Response.Write("<script language='javascript'>'保存失败'</script>")
184 End Try
185 End Sub
186
187 Private Sub txtNUm_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtNUm.TextChanged
188 Try
189 Dim Snum As Integer = CInt(txtNUm.Text)
190 Catch ex As Exception
191 txtNUm.Text = 10
192 End Try
193 End Sub
194 End Class
195
196 End Namespace
197
浙公网安备 33010602011771号