哇塞不!赛博时代云上自动化辅导孩子学习。

背景

孩子天天上网看动画片,都幼儿园大班了还不会100以内的加减法,因为我平时还需要忙着工作不能天天陪着孩子。
这次我们整个活,让孩子每天心甘情愿的做100道题。而且电脑还要给孩子一些提醒,即使做错了也会不厌其烦的给孩子提示计算的方法,每做对一道题还会鼓励孩子坚持学习。
无论是做对还是做错了题,都要存到C盘根目录里,这样等下班回来了还可以针对孩子做错的题分析和加强训练。

做一个让孩子输入数学运算的成绩


为了能够实现让孩子在算完数学题之前不能用电脑,我们要拿出祖传的VB.Net语言
哇塞不!赛博时代云上自动化辅导孩子学习。_第1张图片
主窗体把TopMost勾上,界面就会永远覆盖在其他界面之上,孩子就没办法擅自打开网页和游戏了
哇塞不!赛博时代云上自动化辅导孩子学习。_第2张图片
外观FormBorderStyle选择None,这样界面就不会显示最大化、最小化、关闭按钮了

哇塞不!赛博时代云上自动化辅导孩子学习。_第3张图片
屏幕初始位置设置为CenterScreen(居中),窗口状态设置为Maximized(最大化),这样就能实现全屏效果
哇塞不!赛博时代云上自动化辅导孩子学习。_第4张图片
把控件都拖拽到界面上,属性栏里可以设置一下界面背景、文字颜色、文字大小
哇塞不!赛博时代云上自动化辅导孩子学习。_第5张图片
为了能用系统自带的文字转语音功能,让程序能和孩子互动说话,还需要加上System.Speech引用
然后重点来了,我们双击窗体任意空白位置,开始写代码

Imports System.Speech.Synthesis
Public Class Form1
    ' 第一个数
    Dim a As Integer = 0
    ' 第二个数
    Dim b As Integer = 0
    ' 符号
    Dim c As Integer = 0
    ' 正确得数
    Dim d As Integer = 0
    ' 得分
    Dim score As Integer = 0
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        出题()
    End Sub

    Private Sub 出题()
Start:
        Dim rand As New Random()
        a = rand.Next(100)
        b = rand.Next(100)
        c = rand.Next(2)

        If c = 0 Then
            If a + b > 100 Then
                GoTo Start
            End If
            d = a + b
            Label1.Text = a & "+" & b & "="
        ElseIf c = 1 Then
            If a - b < 0 Then
                GoTo Start
            End If
            d = a - b
            Label1.Text = a & "-" & b & "="
        End If

        Dim thread As New Threading.Thread(AddressOf say)
        thread.Start()

        Label2.Text = "得分:" & score
    End Sub

    Private Sub say()
        SpeakText(Label1.Text.Replace("-", "减").Replace("+", "加").Replace("=", "等于多少"))
    End Sub

    Private Sub yes()
        Dim a = New Random().Next(10)
        Dim text = ""
        Select Case a
            Case 0
                text = "对啦!你好聪明!"
            Case 1
                text = "哇,天才!"
            Case 2
                text = "太棒了!"
            Case 3
                text = "未来的科学家!"
            Case 4
                text = "数学不错!"
            Case 5
                text = "好极了!"
            Case 6
                text = "你真优秀!"
            Case 7
                text = "答对啦!"
            Case 8
                text = "不错哦!"
            Case 9
                text = "继续保持,加油!"
        End Select
        SpeakText(text)
    End Sub

    Private Sub no()
        Dim text = "再想想"

        Dim 算式 = Label1.Text.Replace("=", "")
        If 算式.Contains("+") Then
            Dim 数字 As String() = 算式.Split("+")
            Dim 数字1 As Integer = 数字(0)
            Dim 数字2 As Integer = 数字(1)
            If HasCarry(数字1, 数字2) Then
                text &= ",这是个加法进位题,个位凑十之后剩下的就是新的个位,而且不要忘了进位"
            Else
                text &= ",这道题对你来说不难"
            End If
        ElseIf 算式.Contains("-") Then
            Dim 数字 As String() = 算式.Split("-")
            Dim 数字1 As Integer = 数字(0)
            Dim 数字2 As Integer = 数字(1)
            If NeedsBorrow(数字1, 数字2) Then
                text &= ",这个是减法退位题,不够减我们要借一个十,最后不要忘了十位上要退位"
            Else
                text &= ",这道题对你来说不难"
            End If
        End If

        SpeakText(text)
    End Sub

    Public Function NeedsBorrow(a As Integer, b As Integer) As Boolean
        If a Mod 10 < b Mod 10 Then
            Return True
        Else
            Return False
        End If
    End Function

    Public Function HasCarry(a As Integer, b As Integer) As Boolean
        If a Mod 10 + b Mod 10 > 9 Then
            Return True
        Else
            Return False
        End If
    End Function

    Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged

    End Sub

    Private Sub TextBox1_KeyUp(sender As Object, e As KeyEventArgs) Handles TextBox1.KeyUp
        If e.KeyCode = Keys.Enter Then
            If TextBox1.Text = d.ToString Then
                IO.File.AppendAllLines("C:\答对题目.txt", New String() {Label1.Text & TextBox1.Text})
                score += 1
                If score >= 100 Then
                    SpeakText("宝贝,恭喜你全部答对了,你真聪明!现在可以看动画片了,拜拜!")
                    End
                End If
                yes()
                出题()
            Else
                Dim thread As New Threading.Thread(AddressOf no)
                thread.Start()
                IO.File.AppendAllLines("C:\错题本.txt", New String() {Label1.Text & TextBox1.Text})
            End If
            TextBox1.Text = ""
            TextBox1.Focus()
        End If
    End Sub

    Private Sub TextBox1_LostFocus(sender As Object, e As EventArgs) Handles TextBox1.LostFocus
        TextBox1.Focus()
    End Sub

    Public Sub SpeakText(text As String)
        Try
            Using synth As New SpeechSynthesizer()
                synth.SetOutputToDefaultAudioDevice() '设置输出音频设备(默认)
                synth.Speak(text) '朗读文本
            End Using
        Catch ex As Exception

        End Try
    End Sub
End Class

加上监控手段

配合上向日葵远程桌面观看和萤石云摄像头,就可以随时查看孩子是否在学习了
哇塞不!赛博时代云上自动化辅导孩子学习。_第6张图片哇塞不!赛博时代云上自动化辅导孩子学习。_第7张图片
有的时候孩子跑去玩别的,或者注意力不集中,则可以用系统自带的文本转语音把孩子叫回来(监控对讲也有相同的效果,不过就没有电脑对孩子的神秘感了)
哇塞不!赛博时代云上自动化辅导孩子学习。_第8张图片

实际使用效果

用了大概一周的时间,孩子已经把100以内的加减法练的非常熟练了,家里的老人和保姆都夸这解决方案是真的让人很省心。现在孩子每天甚至会主动打开电脑把100道题做完,因为着急要用电脑看动画片。达到了想要的效果。

你可能感兴趣的:(自动化,学习,远程工作,教育电商)