📄 grade_tj.frm
字号:
Form6.Show '设置分数段
End If
If checknum3 = 0 Then
MsgBox "请现选择统计项目!", 0 + 48, "注意!"
Check3(0).SetFocus
End If
List2.Visible = True
Command12.Visible = True
Command12.Enabled = True
Check6.Visible = True
End Sub
Private Sub Command8_Click() '重置按钮(班级整体)
Text3.Text = ""
Text3.SetFocus
Combo3(0).Text = ""
Combo3(1).Text = ""
Frame6.Visible = False
Command9.Enabled = True
List2.Visible = False '隐藏结果显示框
List2.Clear '清空结果显示框的内容
myFlexGrid4.Rows = 1
For i = 0 To 5
Check3(i).Value = 0
Next i
End Sub
Private Sub Command9_Click() '确定按钮(班级整体)
If Text3.Text = "" Then
MsgBox "请输入班级!", 0 + 48, "注意!"
Text3.SetFocus
Exit Sub
End If
If Combo3(0).Text = "" Then
MsgBox "请选择学期!", 0 + 48, "注意!"
Combo3(0).SetFocus
Exit Sub
End If
txtSQL = "select Les_info.Stu_no,Stu_info.Stu_name,Cou_info.Cou_name,Les_info.Les_cj" & _
" from Stu_info,Les_info,Cou_info where Stu_info.Stu_no=Les_info.Stu_no " & _
" and Cou_info.Cou_no=Les_info.Cou_no and Stu_info.Stu_class =" & "'" & Trim(Text3.Text) & "'" & _
" and Les_info.Les_term =" & "'" & Trim(Combo3(0).Text) & "'"
If Combo3(1).Text <> "" Then
Frame6.Visible = True
txtSQL = txtSQL + " and Cou_info.Cou_name =" & "'" & Trim(Combo3(1).Text) & "'"
End If
Set mrc = ExecuteSQL(txtSQL, MsgText)
If mrc.EOF Then
MsgBox "没有符合条件的记录!", 0 + 48, "注意!"
Text3.SetFocus
mrc.Close
Set mrc = Nothing
Exit Sub
End If
myFlexGrid4.Rows = 1
While Not mrc.EOF
With myFlexGrid4
.Rows = .Rows + 1
Dim i As Integer
For i = 0 To 3
If Not IsNull(mrc.Fields(i)) Then
.TextMatrix(.Rows - 1, i) = mrc.Fields(i)
End If
Next i
End With
mrc.MoveNext
Wend
Command9.Enabled = False
End Sub
Private Sub Form_Load()
With myFlexGrid1 '初始化选课信息显示框(单个学生)
.Rows = 1
For i = 0 To 5 '设定每列为居中对齐
.ColAlignment(i) = 3
Next i
.TextMatrix(0, 0) = "课程号"
.TextMatrix(0, 1) = "课程名"
.TextMatrix(0, 2) = "学分"
.TextMatrix(0, 3) = "成绩"
.TextMatrix(0, 4) = "学分绩点"
.TextMatrix(0, 5) = "开设学期"
.ColWidth(1) = 1500
End With
With myFlexGrid3 '初始化选课信息显示框(选课整体)
.Rows = 1
For i = 0 To 3 '设定每列为居中对齐
.ColAlignment(i) = 3
Next i
.TextMatrix(0, 0) = "学生学号"
.TextMatrix(0, 1) = "学生姓名"
.TextMatrix(0, 2) = "学生班级"
.TextMatrix(0, 3) = "成绩"
End With
myFlexGrid2.TextMatrix(0, 0) = "项目\学期" '初始化统计结果显示框(单个学生)
myFlexGrid2.ColWidth(0) = 1100
With myFlexGrid4 '初始化选课信息显示框(班级整体)
.Rows = 1
For i = 0 To 3 '设定每列为居中对齐
.ColAlignment(i) = 3
Next i
.TextMatrix(0, 0) = "学生学号"
.TextMatrix(0, 1) = "学生姓名"
.TextMatrix(0, 2) = "所选课程名"
.TextMatrix(0, 3) = "成绩"
.ColWidth(2) = 1500
End With
'初始化学期选择框(选课整体,班级整体)
txtSQL = "select distinct Les_term from Les_info order by Les_term "
Set mrc = ExecuteSQL(txtSQL, MsgText)
While Not mrc.EOF
Combo2(0).AddItem mrc.Fields(0)
Combo3(0).AddItem mrc.Fields(0)
mrc.MoveNext
Wend
mrc.Close
'初始化课程名称选择框(选课整体,班级整体)
txtSQL = "select distinct Cou_info.Cou_name from Cou_info,Les_info" & _
" where Cou_info.Cou_no=Les_info.Cou_no"
Set mrc = ExecuteSQL(txtSQL, MsgText)
While Not mrc.EOF
Combo2(1).AddItem mrc.Fields(0)
Combo3(1).AddItem mrc.Fields(0)
mrc.MoveNext
Wend
mrc.Close
'初试化教师名选择框(选课整体)
txtSQL = "select distinct Les_tna from Les_info "
Set mrc = ExecuteSQL(txtSQL, MsgText)
While Not mrc.EOF
Combo2(2).AddItem mrc.Fields(0)
mrc.MoveNext
Wend
mrc.Close
Set mrc = Nothing
tj_type = 0 '初始化统计类别
End Sub
Private Sub Option1_GotFocus(Index As Integer)
Select Case Index
Case 0:
Frame2(0).Visible = True
Frame2(1).Visible = False
Frame2(2).Visible = False
Option1(1).Value = False
Option1(0).Value = True
Option1(2).Value = False
Case 1:
Frame2(0).Visible = False
Frame2(1).Visible = True
Frame2(2).Visible = False
Option1(1).Value = True
Option1(0).Value = False
Option1(2).Value = False
Case 2:
Frame2(0).Visible = False
Frame2(1).Visible = False
Frame2(2).Visible = True
Option1(1).Value = False
Option1(0).Value = False
Option1(2).Value = True
End Select
End Sub
Public Sub Aver_jd() '定义求平均绩点的过程(单个学生)
Dim sum_xj(8) As Single '定义数组用来记录各学期的累计学分绩点
Dim sum_xf(8) As Single '定义数组用来记录各学期的累计学分
Dim ave_jd(8) As Single '定义数组用来记录各学期的平均绩点(=累计学分绩点/累计学分)
For i = 0 To 7
sum_xj(i) = 0
sum_xf(i) = 0
Next i
For i = 0 To termtype - 1
mrc.MoveFirst
Do While mrc.Fields(5) = term(i)
If Not IsNull(mrc.Fields(4)) Then
sum_xj(i) = sum_xj(i) + mrc.Fields(4)
End If
If Not IsNull(mrc.Fields(2)) Then
sum_xf(i) = sum_xf(i) + mrc.Fields(2)
End If
mrc.MoveNext
If mrc.EOF Then Exit Do
Loop
ave_jd(i) = Format(sum_xj(i) / sum_xf(i), "0.0") '平均绩点=累计学分绩点/累计学分
myFlexGrid2.TextMatrix(checknum1, i + 1) = ave_jd(i)
Next i
End Sub
Public Sub Term_type() '定义用来求学期的种类过程(单个学生)
mrc.MoveFirst
For i = 0 To 7
term(i) = ""
Next i
termtype = 1
Dim lasttype As String '定义变量用来记录当前学期
lasttype = mrc.Fields(5)
term(0) = mrc.Fields(5)
While Not mrc.EOF '统计学期数
If mrc.Fields(5) <> lasttype Then
term(termtype) = mrc.Fields(5)
lasttype = mrc.Fields(5)
termtype = termtype + 1
End If
mrc.MoveNext
Wend
End Sub
Public Sub Term_sum()
Dim sum_xf(8) As Single '定义数组用来存储各学期累计学分(单个学生)
For i = 0 To 7
sum_xf(i) = 0
Next i
For i = 0 To termtype - 1 '对与不同学期分别求其所获学分累加和
mrc.MoveFirst
Do While mrc.Fields(5) = term(i) '保证是同一学期的累加
If IsNull(mrc.Fields(3)) = False And mrc.Fields(3) >= 60 Then '只有成绩及格才能获得相应学分
sum_xf(i) = sum_xf(i) + mrc.Fields(2)
End If
mrc.MoveNext
If mrc.EOF Then Exit Do
Loop
myFlexGrid2.TextMatrix(checknum1, i + 1) = sum_xf(i)
Next i
End Sub
Public Sub Total_sum() '定义求所得总学分的过程(单个学生)
Dim t_sum As Single
mrc.MoveFirst
t_sum = 0
While Not mrc.EOF
If IsNull(mrc.Fields(3)) = False And mrc.Fields(3) >= 60 Then
t_sum = t_sum + mrc.Fields(2)
End If
mrc.MoveNext
Wend
myFlexGrid2.TextMatrix(checknum1, 1) = t_sum
End Sub
Public Sub Average(tj_type As Integer) '定义计算和显示平均分的过程(选课整体)
Dim sum, ave As Single
sum = 0
mrc.MoveFirst
While Not mrc.EOF
If IsNull(mrc.Fields(3)) = False Then
sum = sum + mrc.Fields(3)
mrc.MoveNext
End If
Wend
ave = sum / mrc.RecordCount
If tj_type = 1 Then
List1.AddItem "平 均 分: " & Format(ave, "0.0")
Else
List2.AddItem "平 均 分: " & Format(ave, "0.0")
End If
End Sub
Public Sub Highest(tj_type As Integer) '定义计算和显示最高分的过程(选课整体)
Dim high As Single
mrc.MoveFirst
high = mrc.Fields(3)
While Not mrc.EOF
If IsNull(mrc.Fields(3)) = False And mrc.Fields(3) > high Then
high = mrc.Fields(3)
End If
mrc.MoveNext
Wend
If tj_type = 1 Then
List1.AddItem "最 高 分: " & high
Else:
List2.AddItem "最 高 分: " & high
End If
End Sub
Public Sub Lowest(tj_type As Integer) '定义计算和显示最低分的过程(选课整体)
Dim low As Single
mrc.MoveFirst
low = mrc.Fields(3)
While Not mrc.EOF
If IsNull(mrc.Fields(3)) = False And mrc.Fields(3) < low Then
low = mrc.Fields(3)
End If
mrc.MoveNext
Wend
If tj_type = 1 Then
List1.AddItem "最 低 分: " & low
Else:
List2.AddItem "最 低 分: " & low
End If
End Sub
Public Sub Qualified(tj_type As Integer) '定义计算和显示合格率的过程(选课整体)
Dim q_num As Integer
Dim q_per As Single
q_num = 0
q_per = 0
mrc.MoveFirst
While Not mrc.EOF
If IsNull(mrc.Fields(3)) = False And mrc.Fields(3) >= 60 Then
q_num = q_num + 1
End If
mrc.MoveNext
Wend
q_per = q_num / mrc.RecordCount
If tj_type = 1 Then
List1.AddItem "及 格 率: " & Format(q_per, "0.0%")
Else:
List2.AddItem "及 格 率: " & Format(q_per, "0.0%")
End If
End Sub
Public Sub Excellent(tj_type As Integer) '定义计算和显示优秀率的过程(选课整体)
Dim e_num As Integer
Dim e_per As Single
e_num = 0
e_per = 0
mrc.MoveFirst
While Not mrc.EOF
If IsNull(mrc.Fields(3)) = False And mrc.Fields(3) >= 85 Then
e_num = e_num + 1
End If
mrc.MoveNext
Wend
e_per = e_num / mrc.RecordCount
If tj_type = 1 Then
List1.AddItem "优 秀 率: " & Format(e_per, "0.0%")
Else:
List2.AddItem "优 秀 率: " & Format(e_per, "0.0%")
End If
End Sub
Public Sub Block_tj(tj_type As Integer) '定义统计分段人数的过程
Dim sum As Integer '定义变量用来保存各分数段的人数
If tj_type = 1 Then
List1.AddItem ""
List1.AddItem "分段人数:"
Else
List2.AddItem ""
List2.AddItem "分段人数:"
End If
For i = 0 To block_num - 1
mrc.MoveFirst
sum = 0
While Not mrc.EOF
'注意不能直接使用low(i) ,应该使用val函数
If IsNull(mrc.Fields(3)) = False Then
If mrc.Fields(3) >= Val(low(i)) And mrc.Fields(3) < Val(high(i)) Then
sum = sum + 1
End If
End If
mrc.MoveNext
Wend
If tj_type = 1 Then
List1.AddItem low(i) & " ----- " & high(i) & ": " & sum & "人"
Else:
List2.AddItem low(i) & " ----- " & high(i) & ": " & sum & "人"
End If
Next i
'统计满分人数
mrc.MoveFirst
sum = 0
While Not mrc.EOF
'注意不能直接使用low(i) ,应该使用val函数
If IsNull(mrc.Fields(3)) = False And mrc.Fields(3) = 100 Then
sum = sum + 1
End If
mrc.MoveNext
Wend
If tj_type = 1 Then
List1.AddItem "满 分:" & sum & "人"
Else:
List2.AddItem "满 分:" & sum & "人"
End If
End Sub
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 13 Then
Call Command1_Click
End If
End Sub
Private Sub Text3_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 13 Then
Call Command9_Click
End If
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -