实现修改单词信息功能模块和添加单词的实现差别不大,主要是把NameText控件的Enabled的属性值改为False,即不可修改的,代码和相关图示在这里就省略了。
(3)测试功能的实现
测试功能中筛选的单词是根据数据库中按单词的上次记忆的日期(date)和熟悉程度(state)两级排序来选取前面5个或少于5个(如果数据库中的单词项少于5个)单词。进入测试模式后,系统会根据你回答的正误,来更新数据库中单词的记忆日期和熟悉程度,同时显示相应的提示信息,强化记忆的效果。用户在输入单词时,不区分大小写,并且可以按回车确认提交答案,使用户操作更方便。测试功能如图6所示。
图6 测试模式的对话框图示
当拼写正确时,熟悉度值增加,否则减少,并更新日期为当天的日期。同时根据用户的单词拼写和操作,系统会显示相应地提示信息,代码实现如下:
Dim i As Integer '标记测试单词的个数
Private Sub Form_Load()
sql = "select * from word order by date,state"
Set rs = TransactSQL(sql)
i = 0
If Not rs.EOF Then '判断达记录是否为空
'显示单词的词性和意思
MeanLabel.Caption = rs.Fields(1) & " " & rs.Fields(2)
Else
Unload Me '退出测试
End If
End Sub
Private Sub OkButton_Click() '确定按钮响应函数
'判断输入是否正确,不区分大小写
If UCase(AnsText.Text) = UCase(rs.Fields(0)) Then
TestMessage.MessageLabel.Caption = "哇塞,这样的单词你都记住了! 不错!"
TestMessage.Show vbModal '显示提示信息
'答对时,增加数据库单词的state的值
rs.Fields(4) = rs.Fields(4) + 1
Else
'答错时,减少数据库单词的state的值
rs.Fields(4) = rs.Fields(4) - 1
TestMessage.MessageLabel.Caption = "我怎么又错了?" & vbCrLf & "哦,正确答案是:" & rs.Fields(0)
TestMessage.ExampleLabel.Caption = "例句:" & rs.Fields(3)
TestMessage.Show vbModal '显示提示信息
End If
rs.Fields(5) = Date '更新数据库单词的日期
rs.MoveNext
|