精华内容
下载资源
问答
  • 大学平时分真的有用么?

    千次阅读 2018-11-17 23:46:55
    现在很多大学最终成绩的判定是由平时分加上期末成绩来决定的。 其中 20% 的平时成绩和 80% 的期末成绩较为常见,现在我们就来看看这平时成绩对最终成绩的影响究竟多少。 我们不妨假设平时成绩得分为 x,期末成绩...

    现在很多大学最终成绩的判定是由平时分加上期末成绩来决定的。

    其中 20% 的平时成绩和 80% 的期末成绩较为常见,现在我们就来看看这平时成绩对最终成绩的影响究竟有多少。

    我们不妨假设平时成绩得分为 x,期末卷面得分为 y,最终成绩为 z。
    其中我们可以得知 x y z 三者的关系为
    { z = x + 4 5 y 0 ⩽ x ⩽ 20 0 ⩽ y ⩽ 100 \begin{cases} z =x+\dfrac{4}{5}y \\ 0 \leqslant x \leqslant 20 \\ 0 \leqslant y \leqslant 100 \end{cases} z=x+54y0x200y100

    一般情况下,我们都希望最终成绩可以大于我们期末的卷面成绩,所以有
    z ⩾ y z \geqslant y zy
    我们将 z = x + 4 5 y z =x+\dfrac{4}{5}y z=x+54y 带入上式继续推导可以知道
    5 x ⩾ y 5x \geqslant y 5xy
    从这个式子我们可以知道,要想最终成绩比卷面成绩多,我们需要满足的条件是 5 x ⩾ y 5x \geqslant y 5xy,也就是我们的平时分的 5 倍必须大于等于期末的卷面成绩。

    我们有了上式再来看看几个例子:
    如果我们期末卷面成绩为 80 分,那么平时成绩至少得得 16 分。在得到 16 分的时候,我们最终成绩为 80 分。

    期末卷面成绩最少平时成绩得到最少平时分时的最终成绩得满
    80168084
    85178588
    86.2517.2586.2589
    87.517.587.590
    90189092

    而很多大学老师给平时分是按照课堂签到、课堂检测或者课下作业来给的。

    对于管得不严的老师,平时分基本是按签到给的,所以给的绝大多数是满分,那么此时平时分能发挥个提升 3 4 分的作用。签到我想一般都是 2 分吧,万一哪次没来还刚好被抓住,能不能提升到 90 分这可就有点难说了…

    对于管得严的老师,比如说还看你的课后作业完成的认不认真,正不正确啊。觉得你写的不认真不正确一次稍微扣你 1 2 分啊,基本上这个平时分带来的提分效果就十分有限了,甚至搞不好还比卷面成绩低。

    反正我觉得平时分按二八开的话,老师又严的话,平时分的作用不太大。

    总之,没摸清老师性情之前,还是认真完成每一次作业,不迟到不早退为上。

    附:本文不探讨 60 70 分的情况,因为在这个分数段的我想大多是不太看重绩点的


    对于大家比较关心的最终成绩 90 分这个门槛有如下表格

    期末卷面成绩平时成绩最终成绩
    87.52090
    88.751990
    901890
    91.251790
    92.51690
    93.751590

    还有与 90 分失之一线的 89 分

    期末卷面成绩平时成绩最终成绩
    86.252089
    87.51989
    88.751889
    901789
    91.251689
    92.51589

    本文难免有考虑不周之处,欢迎大家友善指出。

    展开全文
  • 学习通上的平时分

    万次阅读 2017-10-30 13:31:33
    学习通上的平时分,之前多不懂,现在还能怎么补救,现在已在补视频阅读量
    学习通上的平时分,之前多有不懂,现在还能怎么补救,现在已在补视频阅读量
    展开全文
  • 这个暑假在家我了三天的时间编了一个“教师平时分统计软件”,这个软件的功能很多,可以在上课的时候随机抽取名单点名,可以随机点名,可以统计平时作业平时分,可以统计考勤,统计课堂表现记录等!功能相当的齐全...

    这个暑假在家我用了三天的时间编了一个“教师平时分统计软件”,这个软件的功能很多,可以在上课的时候随机抽取名单点名,可以随机点名,可以统计平时作业平时分,可以统计考勤,统计课堂表现记录等!功能相当的齐全,对老师平时工作很有帮助!

    下面我就将我用的VBA的代码公布出来,当然这些代码很糟糕,但是运行软件没问题,可以供初学VBA的同学共同学习。代码可能有点长,请大家认真看!

    '=========================================================================

    '学生名单表的代码:

    Private Sub CommandButton1_Click()
    Dim zjls As Integer
    Dim xuehao, xingming As String
    Call jcsjb("学生名单")
    zjls = tj("学生名单")
    Call 清除统计数据("点名名单", 1, 5)
    Call 清除统计数据("上课名单", 1, 2)
    Call 清除统计数据("考勤统计", 1, 2)
    Call 清除统计数据("提问历史统计", 1, 2)
    Call 清除统计数据("提交作业", 1, 2)
    Call 清除统计数据("作业统计", 1, 2)
    Call 清除统计数据("平时分统计", 1, 2)
    For i = 1 To zjls
        With Worksheets("学生名单")
             xuehao = Trim(.Cells(i, 1).Value)
             xingming = Trim(.Cells(i, 2).Value)
        End With
        With Worksheets("考勤统计")
             .Cells(i, 1).Value = xuehao
             .Cells(i, 2).Value = xingming
        End With
        With Worksheets("提问历史统计")
             .Cells(i, 1).Value = xuehao
             .Cells(i, 2).Value = xingming
        End With
        With Worksheets("提交作业")
             .Cells(i, 1).Value = xuehao
             .Cells(i, 2).Value = xingming
        End With
        With Worksheets("作业统计")
             .Cells(i, 1).Value = xuehao
             .Cells(i, 2).Value = xingming
        End With
        With Worksheets("平时分统计")
             .Cells(i, 1).Value = xuehao
             .Cells(i, 2).Value = xingming
        End With
    Next
    End Sub
    Private Sub CommandButton3_Click()
    Dim renshu As Integer
    Dim zrs As Integer
    zrs = tj("学生名单") - 1
    If Val(Trim(TextBox3.Text)) = 0 Or Val(Trim(TextBox3.Text)) > zrs Then
       MsgBox "请输入点名的人数 " & Chr(13) & Chr(13) & Chr(13) & "人数必须大于0个小于" & zrs, vbOKOnly, "提醒"
       Exit Sub
    End If
    Call 清除统计数据("点名名单", 1, 5)
    renshu = Val(Trim(TextBox3.Text))
    Call 点名(renshu)
    Worksheets("点名名单").Activate
    End Sub
    Private Sub CommandButton5_Click()
    Dim renshu As Integer
    Worksheets("点名名单").Activate
    Call 清除统计数据("点名名单", 1, 5)
    renshu = Val(tj("学生名单")) - 1
    Call 点名(renshu)
    End Sub
     

    ‘======================================================================

    '平时表现记录工作表的代码:

    Private Sub CommandButton1_Click()
    Call 平时表现
    End Sub
    Sub 平时表现()
    Dim zjrs As Integer
    Dim xingming, xuehao, contents, dj, time As String
    zjrs = tj("平时表现记录")
    xuehao = Trim(TextBox1.Text)
    xingming = Trim(TextBox2.Text)
    contents = Trim(TextBox3.Text)
    If OptionButton1.Value = True Then
       dj = "1′"
    End If
    If OptionButton2.Value = True Then
       dj = "2′"
    End If
    If OptionButton3.Value = True Then
       dj = "3′"
    End If
    If OptionButton4.Value = True Then
       dj = "4′"
    End If
    If OptionButton5.Value = True Then
       dj = "5′"
    End If
    Call rdjzf(xuehao, dj)
    time = Trim(Now())
    With Worksheets("平时表现记录")
         .Cells(zjrs + 1, 1).Value = xuehao
         .Cells(zjrs + 1, 2).Value = xingming
         .Cells(zjrs + 1, 3).Value = dj
         .Cells(zjrs + 1, 4).Value = time
         .Cells(zjrs + 1, 5).Value = contents
    End With
    End Sub

    Private Sub CommandButton2_Click()
    TextBox1.Text = ""
    TextBox2.Text = ""
    TextBox3.Text = ""
    End Sub
    Private Sub TextBox1_Change()
    Call dbclick
    End Sub

    Private Sub TextBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    Call dbclick
    End Sub
    Sub dbclick()
    Dim xuehao, xuehao2, xingming2 As String
    Dim jlzs As Integer
    If TextBox1.Text = "" Then
       TextBox2.Text = ""
       CommandButton1.Enabled = False
       Exit Sub
    End If
    xuehao = Trim(TextBox1.Text)
    jlzs = tj("学生名单")
    For i = 2 To jlzs
             With Worksheets("学生名单")
             xuehao2 = Trim(.Cells(i, 1).Value)
             xingming2 = .Cells(i, 2).Value
             End With
             If xuehao = xuehao2 Then
                TextBox2.Text = xingming2
                CommandButton1.Enabled = True
                Exit Sub
             Else:
                TextBox2.Text = ""
                CommandButton1.Enabled = False
             End If
    Next
    End Sub

    '================================================================

    '提问历史统计工作表的代码:


    Private Sub CommandButton1_Click()
    Dim hdzfs, hdpjfs, hdfs, maxf, minf, sumf, avgf As Double
    Dim zjls As Integer
    zjls = tj("提问历史统计")
    maxf = 0
    minf = 100
    sumt = 0
    sumf = 0
    avgf = 0
    hdzfs = InputBox("请输入您规定的上课回答问题在平时分中的分值!", "请输入回答问题总分数", 20)
    If hdzfs = "" Then
       Exit Sub
    End If
    hdpjfs = hdpjf(hdzfs, zjls)
    For i = 2 To zjls
        With Worksheets("提问历史统计")
        hdfs = 0
        hdfs = hdfs + Val(Trim(.Cells(i, 4))) * 3 + Val(Trim(.Cells(i, 5))) * 2 + Val(Trim(.Cells(i, 6))) * 1
        .Cells(i, 7).Value = Round(hdfs * hdpjfs)
        sumf = sumf + .Cells(i, 7).Value
        If maxf < .Cells(i, 7).Value Then
           maxf = .Cells(i, 7).Value
        End If
        If minf > .Cells(i, 7).Value Then
           minf = .Cells(i, 7).Value
        End If
        .Cells(i, 3).Value = Val(Trim(.Cells(i, 4))) + Val(Trim(.Cells(i, 5))) + Val(Trim(.Cells(i, 6)))
        sumt = sumt + Val(Trim(.Cells(i, 3).Value))
        End With
    Next
    avgf = Round(sumf / zjls, 4)
    TextBox4.Text = sumt
    TextBox5.Text = avgf
    TextBox6.Text = maxf
    TextBox7.Text = minf
    End Sub

    '===========================================================================

    '点名名单工作表的代码:


    Function 添加考勤统计() As Boolean
    Dim xuehao, xingming, time As String
    Dim dmjl, kqjl, kqls, k As Integer
    Dim cd, kk, qj As Integer
    k = 2
    dmjl = tj("点名名单")
    kqjl = tj("考勤统计")
    For i = 2 To dmjl - 1
        With Worksheets("点名名单")
             xuehao = .Cells(i, 1).Value
        End With
        With Worksheets("点名名单")
             cd = .Cells(i, 3).Value
             kk = .Cells(i, 4).Value
             qj = .Cells(i, 5).Value
        If (Val(cd) + Val(kk) + Val(qj)) > 1 Then
             MsgBox "学号为: " & xuehao & " 的记录有问题。请注意查看!添加数据失败" & Chr(13) & Chr(13) & _
                     "该生的记录为:" & Chr(13) & "        迟到: " & cd & Chr(13) & "        旷课:" & kk & Chr(13) & "        请假: " & qj, vbOKOnly, "错误提示"
             添加考勤统计 = False
             .Cells(i, 3).Select
             Exit Function
        Else: 添加考勤统计 = True
        End If
        End With
    Next
    With Worksheets("点名名单")
         time = .Cells(dmjl, 2).Value
    End With
    kqls = tjl("考勤统计", 1)
    With Worksheets("考勤统计")
         .Cells(1, kqls + 1).Value = time
    End With
    For i = 2 To dmjl - 1
        With Worksheets("点名名单")
             xuehao = .Cells(i, 1).Value
             xingming = .Cells(i, 2).Value
        End With
        Do
              With Worksheets("考勤统计")
              If .Cells(k, 1).Value = xuehao Then
                  Exit Do
              End If
              End With
              k = k + 1
              If k > kqjl Then
                 MsgBox "数据有错误:有两种可能,一是点名名单有错,二是考勤名单的学号有错。" & Chr(13) & "请检查该学生  " _
                         & xingming & "  的学号。" & Chr(13) & "核实名单表和考勤统计表该学生的学号", vbOKOnly, "检查严重错误"
                 Call goback(i, "点名名单", "考勤统计")
                 Exit Function
              End If
        Loop Until False
       
        With Worksheets("点名名单")
             cd = .Cells(i, 3).Value
             kk = .Cells(i, 4).Value
             qj = .Cells(i, 5).Value
        End With
        With Worksheets("考勤统计")
                 If cd = 1 Then
                 .Cells(k, 3).Value = Val(.Cells(k, 3).Value) + cd
                 .Cells(k, kqls + 1).Value = "●"
                 End If
                 If kk = 1 Then
                 .Cells(k, 4).Value = Val((.Cells(k, 4).Value)) + kk
                 .Cells(k, kqls + 1).Value = "○"
                 End If
                 If qj = 1 Then
                 .Cells(k, 5).Value = Val((.Cells(k, 5).Value)) + qj
                 .Cells(k, kqls + 1).Value = "⊙"
                 End If
        End With
     Next
    End Function

    Sub 添加上课名单()
    Dim dmrs, skrs, zrs, k As Integer
    Dim xuehao As String
    Dim cd, kk, qj As Integer
    zrs = tj("学生名单")
    dmrs = tj("点名名单")
    skrs = 1
    For i = 2 To zrs
        With Worksheets("学生名单")
        xuehao = .Cells(i, 1).Value
        End With
        k = 2
        Do
              If k > dmrs - 1 Then
                   With Worksheets("学生名单")
                      xuehao = .Cells(i, 1).Value
                      xingming = .Cells(i, 2).Value
                   End With
                   With Worksheets("上课名单")
                      skrs = skrs + 1
                      .Cells(skrs, 1).Value = xuehao
                      .Cells(skrs, 2).Value = xingming
                  End With
                  Exit Do
              End If
              With Worksheets("点名名单")
              cd = Val(.Cells(k, 3).Value)
              kk = Val(.Cells(k, 4).Value)
              qj = Val(.Cells(k, 5).Value)
              xuehao2 = .Cells(k, 1).Value
              End With
              If xuehao2 = xuehao Then
                  If (cd + kk + qj) = 0 Then
                         With Worksheets("学生名单")
                         xuehao = .Cells(i, 1).Value
                         xingming = .Cells(i, 2).Value
                         End With
                         With Worksheets("上课名单")
                         skrs = skrs + 1
                         .Cells(skrs, 1).Value = xuehao
                         .Cells(skrs, 2).Value = xingming
                         End With
                         Exit Do
                   Else: Exit Do
                   End If
              End If
              k = k + 1
        Loop Until False
    Next
    Worksheets("上课名单").Activate
    End Sub

    Private Sub CommandButton1_Click()
    If 添加考勤统计 = False Then
       Exit Sub
    End If
    Call 添加考勤统计
    Call 清除统计数据("上课名单", 1, 3)
    Call 添加上课名单
    Call 上课名单提问次数
    End Sub

    Private Sub CommandButton2_Click()
    Call 清空点名名单
    Worksheets("学生名单").Activate
    End Sub

    '===========================================================================

    '提交作业工作表的代码:

    Private Sub CommandButton1_Click()
    Dim xuehao(), xingming(), jsstring As String
    Dim k, zjls As Integer
    k = 0
    ReDim xuehao(k)
    ReDim xingming(k)
    zjls = tj("提交作业")
    For i = 2 To zjls
        With Worksheets("提交作业")
             If Trim(.Cells(i, 3).Value) = "" Or Trim(.Cells(i, 3).Value) = "未交" Then
                ReDim Preserve xuehao(UBound(xuehao) + 1)
                ReDim Preserve xingming(UBound(xingming) + 1)
                xuehao(UBound(xuehao)) = .Cells(i, 1).Value
                xingming(UBound(xingming)) = .Cells(i, 2).Value
             End If
        End With
    Next
    For i = 1 To UBound(xuehao)
           jsstring = jsstring & xuehao(i) & Space(5) & xingming(i) & Chr(13)
    Next
    If UBound(xuehao) > 0 Then
       msg = MsgBox("选择确定键:     继续提交本次作业,没有数据的人当作未交作业! " & Chr(13) & "选择取消键:      取消本次提交,检查数据 !" _
                     & Chr(13) & Chr(13) & jsstring, vbOKCancel, "注意,有下列一些学生未交作业")
       If msg = vbCancel Then
          Exit Sub
       End If
    End If
    For i = 2 To zjls
        With Worksheets("提交作业")
             If Trim(.Cells(i, 3).Value) = "" Then
                .Cells(i, 3).Value = "未交"
             End If
        End With
    Next
    Call 作业提交
    Worksheets("作业统计").Activate
    End Sub

    Private Sub CommandButton2_Click()
    Call 添加作业
    End Sub

    Private Sub CommandButton3_Click()
    Call 清除统计数据("提交作业", 3, 3)
    End Sub

    Private Sub TextBox1_Change()
    Call dbclick
    End Sub

    Private Sub TextBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    Call dbclick
    End Sub
    Sub dbclick()
    Dim xuehao, xuehao2, xingming2 As String
    Dim jlzs As Integer
    If TextBox1.Text = "" Then
       TextBox2.Text = ""
       CommandButton2.Enabled = False
       Exit Sub
    End If
    xuehao = Trim(TextBox1.Text)
    jlzs = tj("学生名单")
    For i = 2 To jlzs
             With Worksheets("学生名单")
             xuehao2 = Trim(.Cells(i, 1).Value)
             xingming2 = .Cells(i, 2).Value
             End With
             If xuehao = xuehao2 Then
                TextBox2.Text = xingming2
                CommandButton2.Enabled = True
                Exit Sub
             Else:
                TextBox2.Text = ""
                CommandButton2.Enabled = False
             End If
    Next
    End Sub
    Sub 添加作业()
    Dim xuehao As String
    Dim dj As String
    xuehao = Trim(TextBox1.Text)
    If Trim(TextBox2.Text) = "" Then
       Call dbclick
       If Trim(TextBox2.Text) = "" Then
          MsgBox "学号输入有误,请重新输入!    ", vbOKOnly, "提醒"
          Exit Sub
       End If
    End If
    If OptionButton1.Value = True Then
       dj = "优"
    End If
    If OptionButton2.Value = True Then
       dj = "良"
    End If
    If OptionButton3.Value = True Then
       dj = "中"
    End If
    If OptionButton4.Value = True Then
       dj = "及格"
    End If
    If OptionButton5.Value = True Then
       dj = "不及格"
    End If
    If OptionButton6.Value = True Then
       dj = "未交"
    End If
    Call 添加作业记录(xuehao, dj)
    End Sub

    '=====================================================================

    '上课名单工作表的代码:

    Private Sub CommandButton1_Click()
    Dim zjls As Integer
    Dim xuehao, xingming As String
    xuehao = Trim(TextBox1.Text)
    xingming = Trim(TextBox2.Text)
    If xingming = "" Then
       MsgBox "在姓名的文本框中姓名为空!" _
               & Chr(13) & "双击学号文本框,姓名将显示出来!", vbOKOnly, "注意提示 "
          CommandButton1.Enabled = False
          Exit Sub
    End If
    Call lsjr(xuehao, xingming, vbYes)
    Call lstj(xuehao, vbYes)    '向提问历史统计表添加数据
    zjls = tj("上课名单")
    For i = 2 To zjls           '向上课名单添加数据,数据一致
        With Worksheets("上课名单")
        If xuehao = Trim(.Cells(i, 1).Value) Then
            .Cells(i, 3).Value = Val(Trim(.Cells(i, 3))) + 1
            .Cells(i, 1).Font.Bold = True
            .Cells(i, 2).Font.Bold = True
            Exit Sub
        End If
        End With
    Next
    End Sub

    Private Sub CommandButton2_Click()
    Call tiwen
    End Sub

    Sub tiwen()
    Dim zrs As Integer
    Dim id As Integer
    Dim m As Integer
        Worksheets("上课名单").Activate
        zrs = tj("上课名单")
        If zrs < 2 Then
           MsgBox "上课名单的学生数据不存在,请先点名之后使用随机提问按钮", vbOKOnly, "错误操作"
           Worksheets("点名名单").Activate
           Exit Sub
        End If
        id = sjs(zrs)
        xuehao = Sheets("上课名单").Cells(id, 1).Value
        xingming = Sheets("上课名单").Cells(id, 2).Value
        msg = MsgBox("请  " & xingming & "  同学回答问题" & Chr(13) & Chr(13) & "选择是:  回答非常满意" & Chr(13) & "选择否:  回答满意" _
                      & Chr(13) & "选择取消:回答不满意", vbYesNoCancel + 64, "随机提问")
        Call lsjr(xuehao, xingming, msg)
        Call lstj(xuehao, msg)
        With Worksheets("上课名单")
             .Cells(id, 3).Value = Val(.Cells(id, 3).Value) + 1
        End With
    End Sub

    Private Sub TextBox1_Change()
    Call dbclick
    End Sub

    Private Sub TextBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    Call dbclick
    End Sub

    Sub dbclick()
    Dim xuehao, xuehao2, xingming2 As String
    Dim jlzs As Integer
    If TextBox1.Text = "" Then
       TextBox2.Text = ""
       CommandButton1.Enabled = False
       Exit Sub
    End If
    xuehao = Trim(TextBox1.Text)
    jlzs = tj("学生名单")
    For i = 2 To jlzs
             With Worksheets("学生名单")
             xuehao2 = Trim(.Cells(i, 1).Value)
             xingming2 = .Cells(i, 2).Value
             End With
             If xuehao = xuehao2 Then
                TextBox2.Text = xingming2
                CommandButton1.Enabled = True
                Exit Sub
             Else:
                TextBox2.Text = ""
                CommandButton1.Enabled = False
             End If
    Next
    End Sub

    '======================================================================

    '平时分统计工作表的代码:

    Private Sub CommandButton1_Click()
    Call 考勤统计
    End Sub
    Private Sub CommandButton10_Click()
    ThisWorkbook.Saved = False
    ThisWorkbook.Close
    End Sub
    Sub 课堂回答问题统计()
    Dim hudazf, avgf As Double
    Dim zjls, maxr, minr As Integer
    Dim hdpjfs As Double
    Dim sumfs, sumt, hdfs As Integer
    minf = 100
    maxf = 0
    hudazf = Val(Trim(TextBox4.Text))
    If hudazf = 0 Then
       ms = MsgBox("你输入的课堂回答问题总分数: 0 " & Chr(13) & Chr(13) & "按确定键 :  继续统计,课堂回答问题分全部为0分  !" _
                     & Chr(13) & "按取消键 :  取消统计,添加数据", vbOKCancel, "警示")
       If ms = vbCancel Then
          Worksheets("平时分统计").Cells(1, 1).Select
          Exit Sub
       End If
    End If
    zjls = tj("平时分统计")
    hdpjfs = hdpjf(hudazf, zjls)
    For i = 2 To zjls
        With Worksheets("提问历史统计")
        hdfs = 0
        hdfs = hdfs + Val(Trim(.Cells(i, 4))) * 3 + Val(Trim(.Cells(i, 5))) * 2 + Val(Trim(.Cells(i, 6))) * 1
        .Cells(i, 7).Value = Round(hdfs * hdpjfs)
        sumf = sumf + .Cells(i, 7).Value
        .Cells(i, 3).Value = Val(Trim(.Cells(i, 4))) + Val(Trim(.Cells(i, 5))) + Val(Trim(.Cells(i, 6)))
        sumt = sumt + Val(Trim(.Cells(i, 3).Value))
        End With
        With Worksheets("平时分统计")
        .Cells(i, 4).Value = Round(hdfs * hdpjfs)
        If maxf < .Cells(i, 4).Value Then
           maxf = .Cells(i, 4).Value
        End If
        If minf > .Cells(i, 4).Value Then
           minf = .Cells(i, 4).Value
        End If
        End With
    Next
    avgf = Round(sumf / zjls, 4)
    TextBox9.Text = sumt
    TextBox10.Text = avgf
    TextBox11.Text = maxf
    TextBox12.Text = minf
    End Sub
    Private Sub CommandButton2_Click()
    Call 课堂回答问题统计
    End Sub

    Private Sub CommandButton3_Click()
    Call 作业统计结果
    End Sub
    Sub 作业统计结果()
    Dim zyzfs, maxr, minr, pjfs, zfs As Double
    Dim zjls As Integer
    maxr = 0
    minr = 100
    zjls = tj("平时分统计")
    zyzfs = Val(Trim(TextBox5.Text))
    For i = 2 To zjls
        Call zyfs(i, zyzfs)
        With Worksheets("平时分统计")
             zfs = zfs + .Cells(i, 5).Value
             If maxr < .Cells(i, 5).Value Then
                maxr = .Cells(i, 5).Value
             End If
             If minr > .Cells(i, 5).Value Then
                minr = .Cells(i, 5).Value
             End If
        End With
        pjfs = Round(zfs / zjls, 4)
        TextBox15.Text = pjfs
        TextBox13.Text = maxr
        TextBox14.Text = minr
    Next
    End Sub
    Private Sub CommandButton4_Click()
     Call 激活统计细节表("考勤统计")
    End Sub

    Private Sub CommandButton5_Click()
    Call 激活统计细节表("提问历史统计")
    End Sub

    Private Sub CommandButton6_Click()
    Call 激活统计细节表("作业统计")
    End Sub

    Private Sub CommandButton7_Click()
    Call 平时表现统计结果
    End Sub
    Sub 平时表现统计结果()
    Dim bxzf, maxr, djf, pjf As Double
    Dim xingming As String
    Dim zjls As Integer
    pjf = 0#
    maxr = 0#
    bxzf = Val(Trim(TextBox1.Text))
    If bxzf = 0 Then
       ms = MsgBox("你输入的课外表现总分数: 0 " & Chr(13) & Chr(13) & "按确定键 : 取消统计,添加数据!" _
                     & Chr(13) & "按取消键 :  继续统计,课外表现分全部为0分", vbOKCancel, "警示")
       If ms = vbOK Then
          Worksheets("平时分统计").Cells(1, 1).Select
          Exit Sub
       Else: TextBox1.Text = 0
       End If
    End If
    pjf = bxpjf(bxzf)
    zjls = tj("平时分统计")
    For i = 2 To zjls
         With Worksheets("平时分统计")
         djf = Val(Trim(.Cells(i, 12).Value))
         .Cells(i, 6).Value = Round(djf * pjf)
         If maxr < Val(Trim(.Cells(i, 6).Value)) Then
            maxr = Val(Trim(.Cells(i, 6).Value))
            xingming = .Cells(i, 2).Value
         End If
         End With
    Next
    TextBox19.Text = xingming
    End Sub
    Sub 考勤统计()
    Dim cd, kk, qj, zf As Single
    If Trim(TextBox3.Text) = "" Or Trim(TextBox3.Text) = 0 Then
       If msg("考勤总分") = vbOK Then
          Exit Sub
       Else: TextBox3.Text = 0
       End If
    End If
    If Trim(TextBox16.Text) = "" Then
       If msg("迟到一次扣分") = vbOK Then
          Worksheets("平时分统计").Cells(29, 1).Select
          Exit Sub
       Else: TextBox16.Text = 0
       End If
    End If
    If Trim(TextBox17.Text) = "" Then
       If msg("旷课一次扣分") = vbOK Then
          Worksheets("平时分统计").Cells(29, 1).Select
          Exit Sub
       Else: TextBox17.Text = 0
       End If
    End If
    If Trim(TextBox18.Text) = "" Then
       If msg("请假一次扣分") = vbOK Then
          Worksheets("平时分统计").Cells(29, 1).Select
          Exit Sub
       Else: TextBox18.Text = 0
       End If
    End If
    cd = Val(Trim(TextBox16.Text))
    kk = Val(Trim(TextBox17.Text))
    qj = Val(Trim(TextBox18.Text))
    zf = Val(Trim(TextBox3.Text))
    Call 考勤分数统计(cd, kk, qj, zf)
    TextBox8.Text = kqtj
    TextBox2.Text = cdtj
    TextBox6.Text = kktj
    TextBox7.Text = qjtj
    End Sub
    Private Sub CommandButton8_Click()
    Call 激活统计细节表("平时表现记录")
    End Sub
    Function msg(lb)
    msg = MsgBox("你忘了输  " & lb & "  数据,请将数据填写完整之后统计!" & Chr(13) & Chr(13) & "按确定键 : 取消统计运行,添加数据!" _
                     & Chr(13) & "按取消键 : 继续统计," & lb & "为0分", vbOKCancel, "数据不完整提醒")
    End Function
    Function 检测空值和零值() As Boolean
    If Trim(TextBox3.Text) = "" Then
       If msg("考勤总分") = vbOK Then
          检测空值和零值 = True
          Exit Function
       Else: TextBox3.Text = 0
       End If
    End If
    If Trim(TextBox16.Text) = "" Then
       If msg("迟到一次扣分") = vbOK Then
          Worksheets("平时分统计").Cells(29, 1).Select
          检测空值和零值 = True
          Exit Function
       Else: TextBox16.Text = 0
       End If
    End If
    If Trim(TextBox17.Text) = "" Then
       If msg("旷课一次扣分") = vbOK Then
          Worksheets("平时分统计").Cells(29, 1).Select
          检测空值和零值 = True
          Exit Function
       Else: TextBox17.Text = 0
       End If
    End If
    If Trim(TextBox18.Text) = "" Then
       If msg("请假一次扣分") = vbOK Then
          Worksheets("平时分统计").Cells(29, 1).Select
          检测空值和零值 = True
          Exit Function
       Else: TextBox18.Text = 0
       End If
    End If
    If Trim(TextBox4.Text) = "" Then
       If msg("课堂表现总分") = vbOK Then
       检测空值和零值 = True
          Exit Function
       Else: TextBox4.Text = 0
       End If
    End If
    If Trim(TextBox5.Text) = "" Then
       If msg("作 业 总 分") = vbOK Then
       检测空值和零值 = True
          Exit Function
       Else: TextBox5.Text = 0
       End If
    End If
    If Trim(TextBox1.Text) = "" Then
       If msg("课外表现总分") = vbOK Then
       检测空值和零值 = True
          Exit Function
       Else: TextBox1.Text = 0
       End If
    End If
    End Function
    Private Sub CommandButton9_Click()
    Dim 考勤_sum, 课堂_sum, 作业_sum, 表现_sum, 平时分_sum As Integer
    Dim 总记录数 As Integer
    If 检测空值和零值 = True Then
       Exit Sub
    End If
    Call 考勤统计
    Call 课堂回答问题统计
    Call 作业统计结果
    Call 平时表现统计结果

    总记录数 = tj("学生名单")
    For i = 2 To 总记录数
        With Worksheets("平时分统计")
             .Cells(i, 7).Value = .Cells(i, 3).Value + .Cells(i, 4).Value + .Cells(i, 5).Value + .Cells(i, 6).Value
             平时分_sum = 平时分_sum + .Cells(i, 7).Value
             考勤_sum = 考勤_sum + .Cells(i, 3).Value
             课堂_sum = 课堂_sum + .Cells(i, 4).Value
             作业_sum = 作业_sum + .Cells(i, 5).Value
             表现_sum = 表现_sum + .Cells(i, 6).Value
        End With
    Next
    TextBox20.Text = Round(考勤_sum / 总记录数, 2)
    TextBox21.Text = Round(课堂_sum / 总记录数, 2)
    TextBox22.Text = Round(作业_sum / 总记录数, 2)
    TextBox23.Text = Round(表现_sum / 总记录数, 2)
    TextBox24.Text = Round(平时分_sum / 总记录数, 2)
    End Sub

    '======================================================================

    '下面是几个模块的代码:

    '=======================================================================

    '第一个模块的代码:

    Sub auto_open()

        'MsgBox "次工作簿每5钟将自动保存一次。", vbInformation, "提醒"
        UserForm1.Show 0
       ' Call runtimer
        Call rununload
    End Sub
    Sub rununload()
    Application.OnTime Now + TimeValue("00:00:2"), "卸载"
    End Sub
    'Sub runtimer()
    '    Application.OnTime Now + TimeValue("00:10:00"), "saveit"
    'End Sub
    'Sub saveit()
    'ActiveWorkbook.Save
    'Call runtimer
    'End Sub
    Sub 卸载()
        unload UserForm1
    End Sub
    '===============================================================================================================
    Public Function tj(lb) As Integer
         Dim k As Integer
         k = 2
         Do
             Set myR = Sheets(lb).Cells(k, 1)
             If Trim(myR.Value) = "" Then     '出现空记录
                Exit Do
             End If
             k = k + 1
         Loop Until False
         tj = k - 1
    End Function
    Public Function tjl(lb, row As Integer) As Integer
        Dim k As Integer
        k = 1
        Do
            Set myR = Sheets(lb).Cells(row, k)
            If Trim(myR.Value) = "" Then Exit Do
            k = k + 1
        Loop Until False
        tjl = k - 1
    End Function
    Public Function sjs(zrs) As Integer
    Dim flag As Boolean
    flag = False
    Randomize Timer    '随机数种子
    Do
        x = Int(Rnd * zrs) + 1
        sjs = x
        flag = zntw(x, zrs)
        If x = 1 Then flag = False
    Loop Until flag
    End Function
    Sub lsjr(xuehao, xingming, msg)
    Dim k As String
    Dim t As String
    t = Now()
    k = tj("提问历史纪录") + 1
    With Worksheets("提问历史纪录")
         .Cells(k, 1).Value = k - 1
         .Cells(k, 2).Value = xuehao
         .Cells(k, 3).Value = xingming
         .Cells(k, 7).Value = t
         If msg = vbYes Then .Cells(k, 4).Value = 1
         If msg = vbNo Then .Cells(k, 5).Value = 1
         If msg = vbCancel Then .Cells(k, 6).Value = 1
    End With
    End Sub
    Sub lstj(xuehao, msg)
    Dim zjls As Integer
    Dim xuehao2 As String
    zjls = tj("提问历史统计")
    For i = 2 To zjls
        With Worksheets("提问历史统计")
        xuehao2 = Trim(.Cells(i, 1).Value)
        If xuehao = xuehao2 Then
            If msg = vbYes Then .Cells(i, 4).Value = Val(Trim(.Cells(i, 4).Value)) + 1
            If msg = vbNo Then .Cells(i, 5).Value = Val(Trim(.Cells(i, 5).Value)) + 1
            If msg = vbCancel Then .Cells(i, 6).Value = Val(Trim(.Cells(i, 6).Value)) + 1
             .Cells(i, 3).Value = Val(Trim(.Cells(i, 3))) + 1
            Exit Sub
        End If
        End With
    Next
    End Sub
    Public Function zntw(x, zrs) As Boolean
    Dim max, min As Integer
    Dim m As Integer
    min = 10000
    max = 0
    With Worksheets("上课名单")
    For i = 2 To zrs
        If min > Int(Val((Trim(.Cells(i, 15).Value)))) Then
           min = Int(Val((Trim(.Cells(i, 15).Value))))
        End If
        If max < Int(Val((Trim(.Cells(i, 15).Value)))) Then
           max = Int(Val((Trim(.Cells(i, 15).Value))))
        End If
    Next
    If max = min Then max = max + 1
    m = Int(Val((Trim(.Cells(x, 15).Value))))
    End With
    If m = max Then
       zntw = False
    Else: zntw = True
    End If
    End Function
    Sub 清除统计数据(lb, start, last)
    zjls = tj(lb)
    With Worksheets(lb)
    For i = 2 To zjls
        For j = start To last
            .Cells(i, j).ClearContents
            .Cells(i, j).Font.Bold = False
            .Cells(i, j).Font.Bold = False
        Next j
    Next i
    End With
    End Sub
    Sub 清除考勤统计表()
    Dim zjls As Integer
    zjls = tj("考勤统计")
    zjlcs = tjl("考勤统计", 1)
       With Worksheets("考勤统计")
       For i = 1 To zjls
           For j = 6 To zjlcs
            .Cells(i, j).ClearContents
           Next j
       Next i
      End With
    End Sub
    Sub 清除作业统计表()
    Dim zjls As Integer
    zjls = tj("作业统计")
    zjlcs = tjl("作业统计", 1)
       With Worksheets("作业统计")
       For i = 1 To zjls
           For j = 9 To zjlcs
            .Cells(i, j).ClearContents
           Next j
       Next i
      End With
    End Sub
    Sub 清空点名名单()
    Dim zjls, t, nt As Integer
    Dim n As String
    zjls = tj("点名名单")
    With Worksheets("点名名单")
         t = Val(Mid(Trim(Cells(zjls, 2).Value), 8, 2))
         n = Now()
         nt = Val(Mid(Trim(n), 8, 2))
         If nt = t Then
               msg = MsgBox("确定要清空这次点名名单的数据吗", vbOKCancel, "提醒")
         Else: msg = MsgBox("确定要清空上次点名名单的数据吗", vbOKCancel, "提醒")
         End If
    End With
    If msg = vbCancel Then Exit Sub
    Call 清除统计数据("点名名单", 1, 5)
    End Sub
    Sub 初始化所有表格()
    Call 清除统计数据("学生名单", 1, 2)
    Call 清除统计数据("点名名单", 1, 5)
    Call 清除统计数据("上课名单", 1, 3)
    Call 清除考勤统计表
    Call 清除统计数据("考勤统计", 1, 5)
    Call 清除统计数据("提问历史纪录", 1, 7)
    Call 清除统计数据("提问历史统计", 1, 7)
    Call 清除统计数据("提交作业", 1, 3)
    Call 清除作业统计表
    Call 清除统计数据("作业统计", 1, 8)
    Call 清除统计数据("平时表现记录", 1, 5)
    Call 清除统计数据("平时分统计", 1, 7)
    End Sub

    '=======================================================================

    '第二个模块的代码:

    Dim mingdan() As Integer


    Sub 点名名单(zrs, renshu)
    Randomize Timer    '随机数种子
    k = 1
    Do While k <= renshu
             x = Int(Rnd * zrs) + 1
             cf = 0
             While (x = 1)
                x = Int(Rnd * zrs) + 1
             Wend
             For m = 1 To k - 1
                 If mingdan(m) = x Then cf = 1 '有重复放弃
             Next
             If cf = 0 Then                 '不重复,有效
                mingdan(k) = x: k = k + 1
             End If
    Loop
    End Sub

    Sub 点名(renshu As Integer)
    ReDim mingdan(renshu)
    Dim zrs, k, t As Integer
    Dim xuehao As String
    Dim xingming As String
    Dim time As String
    zrs = tj("学生名单")
    Call 点名名单(zrs, renshu)
    For i = 1 To renshu - 1
        t = mingdan(i)
        p = i
        For j = i + 1 To renshu
             If mingdan(j) < t Then
                t = mingdan(j)
                p = j
             End If
        Next
        t = mingdan(p)
        mingdan(p) = mingdan(i)
        mingdan(i) = t
    Next
    For i = 1 To renshu
         k = mingdan(i)
         With Worksheets("学生名单")
              xuehao = .Cells(k, 1).Value
              xingming = .Cells(k, 2).Value
         End With
         With Worksheets("点名名单")
              .Cells(i + 1, 1).Value = xuehao
              .Cells(i + 1, 2).Value = xingming
         End With
    Next
    time = Now()
    With Worksheets("点名名单")
        .Cells(renshu + 2, 1).Value = "点名时间"
        .Cells(renshu + 2, 2).Value = time
    End With
    End Sub
    Sub goback(j, lb1, lb2)
    Dim xuehao As String
    Dim dmjl, kqjl, kqls, k As Integer
    Dim cd, kk, qj As Integer
    k = 2
    dmjl = tj(lb1)
    kqjl = tj(lb2)
    kqls = tjl(lb2, 1)
    With Worksheets(lb2)
         .Cells(1, kqls).Value = ""
    End With
    For i = 2 To j - 1
        With Worksheets(lb1)
             xuehao = .Cells(i, 1).Value
        End With
        Do
              With Worksheets(lb2)
              If .Cells(k, 1).Value = xuehao Then
                  Exit Do
              End If
              k = k + 1
              End With
        Loop Until False
        With Worksheets(lb1)
             cd = .Cells(i, 3).Value
             kk = .Cells(i, 4).Value
             qj = .Cells(i, 5).Value
        End With
        With Worksheets(lb2)
                 .Cells(k, 3).Value = .Cells(k, 3).Value - cd
                 .Cells(k, 4).Value = .Cells(k, 4).Value - kk
                 .Cells(k, 5).Value = .Cells(k, 5).Value - qj
                 If cd = 1 Then
                    .Cells(k, kqls).Value = ""
                 End If
                 If kk = 1 Then
                    .Cells(k, kqls).Value = ""
                 End If
                 If qj = 1 Then
                    .Cells(k, kqls).Value = ""
                 End If
        End With
        k = k + 1
     Next
    End Sub

    Sub 上课名单提问次数()
    Dim zrs, zrst, k As Integer
    Dim xuehao As String
    Dim twcs As Integer
    zrs = tj("上课名单")
    zrst = tj("提问历史统计")
    For i = 2 To zrs
        With Worksheets("上课名单")
        xuehao = .Cells(i, 1).Value
        End With
        k = 2
        Do
              With Worksheets("提问历史统计")
              xuehao2 = .Cells(k, 1).Value
              twcs = .Cells(k, 3).Value
              End With
              If xuehao2 = xuehao Then
                    With Worksheets("上课名单")
                    .Cells(i, 3).Value = twcs
                    End With
                    Exit Do
              End If
              k = k + 1
              If k > zrst Then
                 Exit Do
              End If
        Loop Until False
    Next
    End Sub

    Sub jcsjb(lb)
         Dim k, t As Integer
         Dim xuehao  As String
         Dim flag As Boolean
         t = 0
         k = 2
         Do
             flag = True
             With Worksheets(lb)
             xuehao = Trim(.Cells(k, 1).Value)
             If xuehao = "" Then    '出现空记录
                t = t + 1
             End If
             k = k + 1
             xuehao = Trim(.Cells(k, 1).Value)
             While t = 6
                Exit Do
             Wend
             While t = 5 And flag = True
                If xuehao <> "" Then
                   MsgBox lb & "数据表在第" & k - 1 & "行出现空记录,请检查修改后。" & "保证数据表中间不出现空记录后才能运行此软件。" _
                          , vbOKOnly, "数据表记录有误"
                   Exit Sub
                Else: flag = False
                End If
             Wend
             While t = 4 And flag = True
                If xuehao <> "" Then
                   MsgBox lb & "数据表在第" & k - 1 & "行出现空记录,请检查修改后。" & "保证数据表中间不出现空记录后才能运行此软件。" _
                          , vbOKOnly, "数据表记录有误"
                   Exit Sub
                Else: flag = False
                End If
             Wend
             While t = 3 And flag = True
                If xuehao <> "" Then
                   MsgBox lb & "数据表在第" & k - 1 & "行出现空记录,请检查修改后。" & "保证数据表中间不出现空记录后才能运行此软件。" _
                          , vbOKOnly, "数据表记录有误"
                   Exit Sub
                Else: flag = False
                End If
             Wend
             While t = 2 And flag = True
                If xuehao <> "" Then
                   MsgBox lb & "数据表在第" & k - 1 & "行出现空记录,请检查修改后。" & "保证数据表中间不出现空记录后才能运行此软件。" _
                          , vbOKOnly, "数据表记录有误"
                   Exit Sub
                Else: flag = False
                End If
             Wend
             While t = 1 And flag = True
                If xuehao <> "" Then
                   msg = MsgBox(lb & "数据表在第" & k - 1 & "行出现空记录,请检查修改后。" & "保证数据表中间不出现空记录后才能运行此软件。" _
                          , vbOKOnly, "数据表记录有误")
                   If msg = vbOK Then
                   Exit Sub
                   End If
                Else: flag = False
                End If
             Wend
         End With
         Loop Until False
    End Sub

    '========================================================================

    '第三个模块的代码:

    Dim time As String
    Sub 添加作业记录(xuehao, dj)
    Dim zjls, i As Integer
    Dim xuehao2 As String
    zjls = tj("提交作业")
    i = 2
    Do
        With Worksheets("提交作业")
        xuehao2 = Trim(.Cells(i, 1).Value)
        If xuehao = xuehao2 Then
           If Trim(.Cells(i, 3).Value) <> "" Then
              msg = MsgBox("该学生的作业记录上有数据" & Chr(13) & "是否覆盖上面的数据?" & Chr(13) & Chr(13) & Chr(13) _
                         & "选择是:覆盖数据" & Chr(13) & "选择否:取消添加", vbYesNo, "提醒")
              If msg = vbYes Then
                 .Cells(i, 3).Value = dj
                 Exit Sub
              Else: Exit Sub
              End If
           Else
             .Cells(i, 3).Value = dj
             Exit Sub
           End If
        End If
        End With
        i = i + 1
        If i > zjls Then
           MsgBox " 该生不存在列表里面,请检查后再添加!", vbOKOnly, "错误提醒"
           Exit Sub
        End If
    Loop Until False
    End Sub
    Sub 作业提交()
    Dim zjls, ls As Integer
    Dim dj As String
    zjls = tj("提交作业")
    time = Now()
    ls = tjl("作业统计", 1)
    With Worksheets("作业统计")
         .Cells(1, ls + 1).Value = time
    End With
    For i = 2 To zjls
        With Worksheets("提交作业")
             dj = .Cells(i, 3).Value
        End With
        With Worksheets("作业统计")
             .Cells(i, ls + 1).Value = dj
             If dj = "优" Then
                .Cells(i, 3).Value = .Cells(i, 3).Value + 1
             End If
             If dj = "良" Then
                .Cells(i, 4).Value = .Cells(i, 4).Value + 1
             End If
             If dj = "中" Then
                .Cells(i, 5).Value = .Cells(i, 5).Value + 1
             End If
             If dj = "及格" Then
                .Cells(i, 6).Value = .Cells(i, 6).Value + 1
             End If
             If dj = "不及格" Then
                .Cells(i, 7).Value = .Cells(i, 7).Value + 1
             End If
             If dj = "未交" Then
                .Cells(i, 8).Value = .Cells(i, 8).Value + 1
             End If
        End With
    Next
    End Sub

    '==========================================================================

    '第四个模块的代码:

    Public cdtjs, kktjs, qjtjs, kqtjnumber  As Integer
    Sub 考勤分数统计(cd, kk, qj, zf)
    Dim zjls As Integer
    Dim code As Single
    kqtjnumber = tjl("考勤统计", 1) - 5
    zjls = tj("考勤统计")
    cdtjs = 0: kktjs = 0: qjtjs = 0
    For i = 2 To zjls
        With Worksheets("考勤统计")
             cdtjs = cdtjs + Val(Trim(.Cells(i, 3).Value))
             kktjs = kktjs + Val(Trim(.Cells(i, 4).Value))
             qjtjs = qjtjs + Val(Trim(.Cells(i, 5).Value))
             code = zf - Val(Trim(.Cells(i, 3).Value)) * cd - Val(Trim(.Cells(i, 4).Value)) * kk - Val(Trim(.Cells(i, 5).Value)) * qj
        End With
        With Worksheets("平时分统计")
             If code > 0 Then
                .Cells(i, 3).Value = Round(code)
             Else: .Cells(i, 3).Value = 0
        End If
        End With
    Next
    End Sub
    Function cdtj()
    cdtj = cdtjs
    End Function
    Function kktj()
    kktj = kktjs
    End Function
    Function qjtj()
    qjtj = qjtjs
    End Function
    Function kqtj()
    kqtj = kqtjnumber
    End Function
    Sub 激活统计细节表(lb)
    Worksheets(lb).Activate
    Worksheets(lb).Cells(1, 1).Select
    End Sub
    Public Function bxpjf(bxzf) As Double
    Dim zjrs As Integer
    Dim rdjf As Double
    rdjf = 0#
    zjrs = tj("平时分统计")
    With Worksheets("平时分统计")
    For i = 2 To zjrs
        If rdjf < Val(Trim(.Cells(i, 12).Value)) Then
           rdjf = Val(Trim(.Cells(i, 12).Value))
        End If
    Next
    If rdjf = 0 Then
       bxpjf = 0#
       Exit Function
    End If
    bxpjf = bxzf / rdjf
    End With
    End Function

    Public Function djf(dj) As Integer
    Select Case dj
           Case "1′"
                djf = 1
           Case "2′"
                djf = 2
           Case "3′"
                djf = 3
           Case "4′"
                djf = 4
           Case "5′"
                djf = 5
           Case "未交"
                djf = -1
           Case "不及格"
                djf = 0
           Case "及格"
                djf = 1
           Case "中"
                djf = 2
           Case "良"
                djf = 3
           Case "优"
                djf = 4
    End Select
    End Function
    Sub rdjzf(xuehao, dj)
    Dim zjrs, dengjifen, i As Integer
    zjrs = tj("平时分统计")
    dengjifen = djf(dj)
    i = 2
    Do
        With Worksheets("平时分统计")
        If xuehao = Trim(.Cells(i, 1).Value) Then
           .Cells(i, 12).Value = .Cells(i, 12).Value + dengjifen
           Exit Do
        End If
        End With
        i = i + 1
        If i > zjrs Then
           MsgBox "学号输入有误!,请重新输过!", vbOKOnly, "错误提醒"
           Exit Sub
        End If
    Loop Until False
    End Sub
    Function zypjf(zyzf) As Double
    Dim zjls, zs As Integer
    zs = tjl("作业统计", 1) - 8
    If zs = 0 Then
       zypjf = 0
       Exit Function
    End If
    zf = djf("优")
    zypjf = zyzf / (zs * zf)
    End Function
    Sub zyfs(i, zyzfs)
    Dim zdjfs, zyzf As Integer
    Dim sumf As Single
    zyzf = zyzfs
    zdjfs = 0
    With Worksheets("作业统计")
        djy = .Cells(i, 3).Value * djf("优")
        djl = .Cells(i, 4).Value * djf("良")
        djz = .Cells(i, 5).Value * djf("中")
        djjg = .Cells(i, 6).Value * djf("及格")
        djbjg = .Cells(i, 7).Value * djf("不及格")
        djwj = .Cells(i, 8).Value * djf("未交")
        zdjfs = djy + djl + djz + djjg + djbjg + djwj
    End With
    With Worksheets("平时分统计")
        sumf = zdjfs * zypjf(zyzf)
        If sumf > 0 Then
              .Cells(i, 5).Value = Round(sumf)
        Else: .Cells(i, 5).Value = 0
        End If
    End With
    End Sub
    Function hdpjf(huidazf, zjls) As Double
    Dim zdjs, maxr As Integer
    Dim sumf As Double
    If huidazf = "" Then
       huidazf = 0
    End If
    sumf = huidazf
    maxr = 0
    For i = 2 To zjls
        With Worksheets("提问历史统计")
        zdjs = Val(Trim(.Cells(i, 4).Value)) * 3
        zdjs = zdjs + Val(Trim(.Cells(i, 5).Value)) * 2
        zdjs = zdjs + Val(Trim(.Cells(i, 6).Value)) * 1
        End With
        If maxr < zdjs Then
           maxr = zdjs
        End If
    Next
    If maxr = 0 Then
       hdpjf = 0#
       Exit Function
    End If
    hdpjf = sumf / maxr
    End Function

    ’===========================================================================

    上面就是个软件的所有的代码,当然,你要从我的资源里下载这个软件,然后再看我这些代码。

    展开全文
  • 平时的一个学习方法

    万次阅读 多人点赞 2018-09-19 08:59:59
    相信大家都通过看书、看博客学习的时候,但是很多时候,我们看完一篇又一篇博客,一本又一本书,过几天看到相同的内容时,还是觉得很陌生。 所以我今天想跟大家分享下,如何更好的压缩、记忆知识。 大家先看一个...

    概述

    相信大家都有通过看书、看博客学习的时候,但是很多时候,我们看完一篇又一篇博客,一本又一本书,过几天看到相同的内容时,还是觉得很陌生。

    所以我今天想跟大家分享下,如何更好的压缩、记忆知识。

    大家先看一个例子,下面有7个成语:

    1. 张牙舞爪
    2. 有的放矢
    3. 鸿鹄之志
    4. 帅气逼人
    5. 不折不扣
    6. 行为举止
    7. 洋洋得意

    假设想要记住这7个成语,按照以前我上学时的方式,多读几遍,强迫自己记忆,可以在短时间内记住,但是过了一小时,两小时,一天,两天后,就忘了。

    有同学说,我还有个诀窍,可以把短期记忆变成长期记忆,很简单,每隔1小时回忆一下,半天回忆一下,慢慢的就记住了,按照递增的时间周期不断重复记忆即可。

    不过这样做太浪费时间了,下面我们看一个更有意思的记忆方式,还是刚才的词语,我们重新排列一下顺序:

    1. 张牙舞爪
    2. 鸿鹄之志
    3. 洋洋得意
    4. 帅气逼人
    5. 有的放矢
    6. 不折不扣
    7. 行为举止

    有没有发现什么?

    没有…

    如果我把每个词语抽取一个字出来:

    张鸿洋帅的不行

    记住这句话,我估计你短期内都忘不了这句话了,根据这句话推到那7个成语,也是件非常轻松的事情。

    其实这也是我们说的,不要死记硬背,要用推导的方式去记忆。

    当然了,你可能要说,你这都是准备好的词语,实际生活中哪有这么巧的事情,说的没错,实际生活中很难有这么完美的压缩知识的例子。所以接下来我准备用一个实际的案例来分享下经历。

    案例

    上周我在地铁上看一篇朱赟老师的文章,讲 A/B 测试的,我以前不怎么关注这些,不过来到了头条之后,发现 A/B 测试用的非常好,所以对这个文章饱含兴趣,也想学习下,对于 A/B 测试需要关注的点,可以拿来衡量工作上的实际场景。

    文章中对于 A/B 测试提到了10个点:

    1. 永远不要过分相信你的直觉;
    2. 实验样本的数量和分配很重要;
    3. 分析的维度尽可能全面;
    4. 其它组的改动对 A/B 测试产生的影响;
    5. 比较值的趋势必须是收敛的,而不是发散的;
    6. 数据埋点,数据的埋点和采集是 A/B 测试成功的关键;
    7. 形成一个流程,或者设计一个工具;
    8. 试图给每个结果一个合理的解释;
    9. 必要的时候重新设计实验;
    10. 不同客户端分开进行实验;

    我的第一想法是记住这10个点,便于以后和产品做 A/B 的时候吹一吹。

    我心里默读了好几遍,但是10条实在是太多了,关掉手机就忘了。

    于是,我打开便签,把上面的内容作了重新调整:

    不要相信自己的直觉
    
    样本数量分配
    防止其他实验影响
    必要时重新实验
    
    考虑不同维度
    结果应该收敛
    不同平台单独分析
    给每个结构一个合理的解释
    
    埋点
    形成流程
    

    是不是觉得没什么变化,其实变化有两点:

    • 文字少了;
    • 分类了;

    可以看到我分成了四类,哪四类呢?

    要做 AB 测试 -> 如何做 AB 测试 -> 如何分析 AB 测试结果 -> 对整个过程总结。
    

    这四类因为是递进的关系,非常容易记忆。

    于是现在就变成:

    要做 AB 测试;
    	不要相信自己的直觉
    
    如何做 AB 测试;
    	样本数量分配
    	防止其他实验影响
    	必要时重新实验
    
    如何分析 AB 测试结果;
    	考虑不同维度
    	结果应该收敛
    	不同平台单独分析
    	给每个结构一个合理的解释
    	
    对整个过程总结
    	埋点
    	形成流程
    

    是不是好记了很多,有分类在,10条知识也清晰了很多。

    当然还没有结束。

    接下来我又做了一件事情,因为第二、第三类,条数还是太多:

    2. 如何做 AB 测试;
        - 样本数量分配
        - 防止其他实验影响
        - 必要时重新实验
    

    提取关键词,变成:

    样本、独立、重复 -> 独立重复样本

    我们也给第三类提取关键词:

    3. 如何分析 AB 测试结果;
        - 考虑不同维度
        - 结果应该收敛
        - 不同平台单独分析
        - 给每个结构一个合理的解释
    

    提取关键词:

    多维度的对不同平台做单独分析,对收敛的结果给出解释

    ok,现在10条变成了:

    1. 要做 AB 测试;
    	- 不要相信自己的直觉
    
    2. 如何做 AB 测试;
    	- 独立重复样本
    
    3. 如何分析 AB 测试结果;
    	- 多维度的给平台单独分析,对收敛的结果给出解释
    
    4. 对整个过程总结
    	- 埋点、形成流程
    

    如果你是在纸质笔记上完成了这项工作,你还可以:

    屏幕快照 2018-09-18 下午7.24.10.png

    给你压缩后的词句或者句子,把核心词语标注出来,提醒自己标注需要扩展。

    好了,以上这个过程就是我记住 AB 测试这篇文章的流程,任何时间我只要想要回忆都能回忆起来。要是以前的方式来记忆,我估计10分钟后,我就只能记住两条了。

    总结

    今天我通过了一篇实际的例子给大家分享下我在平时是如何记忆这些琐碎的知识的,可以看到今天这个文章还是比较贴近实际的。

    最后注意:

    压缩出来的句子或者词语不一定需要具有实际的意义

    就像文章开始你通过张鸿洋帅的不行来尝试记忆7个成语,实际上张鸿洋并不帅气,但这个句子仍然帮助你完成了记忆。

    还记得高中时候要记忆9种人体必需的氨基酸,老师也是使用类似的方式帮助我们去记忆,话说你们高中时候9种氨基酸是硬背还是有什么技巧,欢迎分享。

    最后这篇文章上述的行为,都是在地铁上完成的,mark 一个图作为纪念。

    屏幕快照 2018-09-18 下午7.24.42.png

    以上就是我想分享给大家的,但是不一定适合大家,请抱着质疑的态度去尝试,如果对你有用,倍感荣幸。

    展开全文
  • 微信支付618处于什么水平?

    千次阅读 2020-10-01 12:14:29
    微信支付的评分依据,大部分还是平时使用微信支付,以及收款转账多少为依据的。 根据微信官方的说明,微信支付的评分依据三个维度: 身份特质:稳定的实名信息以及个人基本信息; 支付行为:与微信...
  • CCF CSP python考试如何不得0

    千次阅读 2019-09-20 15:19:56
    是件很丢脸的事情啦,上周第一次去考CCF结果考了0,五道题,除了第三题暂时看不懂,感觉这次考试难度还不是很大,下面讲一下为什么得0吧! 考试所用的软件就是这个最基础的python shell: 不能粘贴复制,只能手写,所以...
  • 当前目录下一个文件名为 score1.txt 的文本文件,存放着某班学生的计算机课成绩,共有学号、平时成绩、期末成绩三列。请根据平时成绩占 40%,期末成绩占 60%的比例计算总评成绩(取整数) ,并学号、总评成绩...
  • 期末考试完了很多小伙伴都在等成绩的出来,成绩出来又只有一个最终成绩,所以才了这次的更新,教大家如何查看自己的平时成绩和卷面成绩!!!(P.S:因为学长好像写过类似文章,大致方法差不多,如雷同纯属巧合...
  • 支付宝每天都,芝麻信用每次贷款都会问到,但究竟多大作用?为什么有些大神的芝麻信用特别高?   芝麻信用900,小美生活在基层,估计咱们社会阶层达不到啊;您肯定认为这些人都是大神级别的人物吧,咱们普通...
  • 你真的理解二的写法吗 - 二写法详解

    千次阅读 多人点赞 2018-02-05 16:35:24
    于是,痛定思痛,一定要把二的写法吃透,就了这篇文章。 二写法的种类 二写法的种类很多,最常见的就是二查找了的最普遍写法了。代码如下: bool bFind(int a[], int left, int right,
  • 积极心理学与幸福感研究(一):课程概况已完成成绩: 100.01【单选题】下列关于习得性无助的说法中,不正确的是()窗体顶端· A、主要受先天因素影响· B、基于生活体验· C、由重复失败或惩罚造成· D、会...
  • Java都到16了,为什么都还在8,是越做越烂了么?

    千次阅读 多人点赞 2021-03-20 19:47:14
    从这张图可以一目了然,大家平时最喜欢的是什么?当然是白嫖啦~ 而从JDK 8u211开始往后的版本,可都是需要商业收费的,所谓的商业收费,就是你自己开发程序使用不打紧,但是一旦当你开发的程序如果用于商业用途,也...
  • 大体内容我不打算变动,对于第一次没有详进的的内容,我已经加以完善。请直接移步看下面分割线后的干货。 第二:这是我要补充的内容。 下面我举的例子和得出的结论都是我从身边的人经历得出来的,可能具有偶然性
  • 我手里几万张图片,请问用什么工具创建一个专门分类存储图片的数据库,方便平时查询
  • Unity3D中常的数据结构总结与

    万次阅读 2015-03-21 23:59:38
    阅读目录 1.几种常见的数据结构2.几种常见数据结构的使用情景 来到周末,小匹夫终于精力和时间来更新下博客了。前段时间小匹夫读过一份代码,对其中...那么还是从小匹夫的工作内容入手,就谈谈在平时使用U3D时经常
  • 大白话告诉你 :Java 后端到底是在做什么

    万次阅读 多人点赞 2019-08-05 23:19:13
    今天我们就来聊一聊,Java 开发工程师到底开发的是什么东西。准确点来说,Java后端到底在做什么? 大家都知道 Java 是一门后端语言,后端指的就是服务端,服务端代码一般运行在服务器上,通常我们...
  • 教你解析教务处网站,查找卷面成绩、平时成绩(西邮教务处)
  • 之前写过一篇使用sharding-jdbc进行库分表的文章,https://blog.csdn.net/tianyaleixiaowu/article/details/70242971,当时的版本还比较早,现在已经不能了。这一篇是基于最新版来写的。新版已经变成了...
  • 查找的Java实现

    千次阅读 2018-03-13 21:32:15
    但是平时的工作中我们基本上不会去写二查找,所以我觉得必要写一篇博文来记录二查找的学习。 二查找的原理 所谓二查找,其实就是获取一组有序数据的中间数据,判断其跟查询关键字的...
  • 昨天接到了一个面试电话,对方直接就告诉我他们是XXX钧成技术有限责任公司深圳公司的,深圳公司主要给华为移动终端做外包项目,工作地点深圳科技园,理论上“五天八小时”,每月最后一天加班,平时加班按国家规定...
  • 一名合格的程序员应该是什么样子

    万次阅读 多人点赞 2019-06-28 10:01:05
    ”因为她平时的成绩也就在二本线上下徘徊。 这句话挺伤人的,尤其是对于高考失利的妹妹来说,她听完我的话,立马就哭了起来,情绪非常激动,质问母亲为什么要打电话告诉我(玻璃心)。 我参加高考了两次,两次都离...
  • Python 解析har 文件将域名分类导出

    千次阅读 2016-07-17 10:22:35
    前言作为程序员平时主要是使用 shadowsocks 作为代理工具的。shadowsocks 个很明显的优点儿就是可以设置白名单和黑名单。白名单是会走shadowsocks的自动代理模式。遇到的问题:shadowsocks 代理是白名单和黑...
  • 整体界面的实现方式可能很多,但是需要尽可能的简单的方式,比如左边的分类界面和右边的一起看的话,好像tablayout+viewpager也可以实现?虽然说他们都是垂直的,我们平时使用的是水平的,但是应该要实现的话也...
  • 浅谈-二查找

    万次阅读 2016-10-07 20:54:13
    一、什么是二查找? 1、我们首先引入这样一个问题:如果规定某一科目成绩分数范围:[0,100],现在小明知道自己的成绩,他让你猜他的成绩,如果猜的高了或者低了都会告诉你,最少的次数猜出他的成绩,你会如何...
  • 芝麻曲线图

    千次阅读 2016-11-17 10:21:31
    平时文章也写的比较少,所以可能有点杂乱,有什么需要改进的地方欢迎给出建议,不胜感激。效果图:2.步骤: 初始化View的属性 初始化画笔 绘制代表最高和最低的两根虚线 绘制文字 绘制代表月份的属性 绘制芝麻...
  • 还有就是,平时我做项目基本都是SSH全部整合在一起,而我看到的人,可能只用Sturts和Hibernate,应该是我对这三个框架各自的功能理解不到位,不管什么情况都SSH整合在一起会不会显得很累赘?只有50了,都给...
  • arcmin 弧的转换

    千次阅读 2019-03-20 08:54:22
    前一段时间接触到arcmin(弧)这个角度单位,这个单位平时用的比较少,上百度查一下,各中说法的都,最后上wiki上看了比较权威的解释。 arcmin的全名是arc minute,表示1°的1/60,虽然名称中包含了“弧”这个...
  • 非常高产的卡里本里今天要给大家推荐十个最最最好用的记笔记 app / 网站 / 本子。记笔记是我们从小到大都一直在经历的事情,听课记笔记,看书做笔记,考试复习...前九个排名不先后,全看心情!最后一个是我最最最...
  • ShardingSphere库分表实战

    万次阅读 多人点赞 2019-06-28 15:44:03
    我们做项目的时候,数据量比较大,单表千万级别的,需要库分表,于是在网上搜索这方面的开源框架,最常见的就是mycat,sharding-sphere,最终我选择后者,它来做库分表比较容易上手。 二. 简介sharding-sphere ...
  • 哪些让程序员受益终生的建议

    万次阅读 多人点赞 2019-10-28 07:11:59
    从业五年多,辗转两个大厂,出过书,创过业,从技术小白成长为基层管理,联合几个业内大牛回答下这个问题,希望能帮到大家,记得帮我点赞哦。 敲黑板!...为什么要尽量进大厂? 如何选择语言及方...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 159,503
精华内容 63,801
关键字:

平时分有什么用