用V B制作四则运算器步骤及代码Company Document number:WUUT-WUUY-WBBGB-BWYTT-1982GT一、实验目的、目标综合运用本课程的相关知识,完成两位数四则运算器的设计、编写与测试,培养学生的实践动手能力,并检测本课程的学习效果。
二、实验内容基本要求:✓两位数(指10-99的自然数)的加减乘除(除法指的是整除)运算,其中减法和除法必须满足“被操作数不小于操作数”(即可以不考虑20-56、4\20等情况)✓两个操作数、运算符均随机产生✓完成一题后自动判断对错,并显示出来✓可以随时查看已经完成的题目情况✓完成一题自动计算题目总数、正确数、错误数和正确率,并实时显示出来扩展要求(不硬性规定):✓在答错的题目后面给出正确答案✓可增加时钟控件,10秒(或15秒)内必须完成一题✓限制题目数目为固定值(如20题、50题)✓把程序扩展成为多位数甚至任意位数的运算器三、实验过程与步骤1、在Visual Basic 系统环境下,打开“工程设计”窗口。
2、新建两个窗口Form1和Form2,添加控件并进行控件的设置, Form1作用是进行题目数量和答题时间的选择并将数据进行保存以供Form2调用,Form2的作用是进行随机两位数(指10-99的自然数)的加减乘除(除法指的是整除)运算,完成一题后自动判断对错,给出错误题目的正确答案,并显示出来,添加时间钟控,显示计算题目总数、正确数、错误数和正确率。
3、在Form1窗口,双击控件打开代码窗口,设计窗体及控件的事件代码。
采用单选的形式选择题目数量和答题时间,当点击确定按钮时,调用Form2,当点击退出时,退出整个程序。
Public tishu As Integer, shijian As IntegerPrivate Sub Form_Load()= False= False==MsgBox "请选择题量和答题时间!", 48, "提示"Unload Form2End SubPrivate Sub Option1_Click(Index As Integer)tishu = Val(Option1(Index).Caption)= tishuEnd SubPrivate Sub Option2_Click(Index As Integer)shijian = Val(Option2(Index).Caption)= shijianEnd SubPrivate Sub Command1_Click()MsgBox "请直接在文本框中输入数字作答(其中除法为整除)," & vbLf & "回车完成一题,系统自动生成下一题", , "提示"End SubPrivate Sub Command2_Click()EndEnd Sub4、在Form2窗口,双击控件打开代码窗口,设计窗体及控件的事件代码。
(1)定义变量Dim a() As IntegerDim b() As IntegerDim c() As IntegerDim result() As DoubleDim cou As IntegerDim n As StringDim X As StringDim i As IntegerDim p As IntegerDim sum As IntegerDim right As IntegerDim wrong As IntegerDim w As DoubleDim ww As StringDim S As IntegerDim d As Integer(2)两位随机数(指10-99的自然数)的加减乘除(除法指的是整除)运算Private Sub product()ReDim Preserve a(cou)ReDim Preserve b(cou)ReDim Preserve c(cou)ReDim Preserve result(cou)a(cou) = 10 + Int(Rnd * 90)b(cou) = 1 + Int(Rnd * 4)c(cou) = 10 + Int(Rnd * 90)Select Case b(cou)Case 1= CStr(a(cou))= CStr(c(cou))result(cou) = a(cou) + c(cou)= "+"Case 2If Val(CStr(a(cou))) > Val(CStr(c(cou))) Then= CStr(a(cou))= CStr(c(cou))result(cou) = a(cou) - c(cou)Else= CStr(c(cou))= CStr(a(cou))result(cou) = c(cou) - a(cou)End If= "-"Case 3= CStr(a(cou))= CStr(c(cou))result(cou) = a(cou) * c(cou)= "*"Case 4If Val(CStr(a(cou))) > Val(CStr(c(cou))) Then= CStr(a(cou))= CStr(c(cou))result(cou) = Int(a(cou) / c(cou))Else= CStr(c(cou))= CStr(a(cou))result(cou) = Int(c(cou) / a(cou))End If= "/"End SelectEnd Sub(3)设定Form2加载时的相关数据Private Sub Form_Load()==RandomizeCall product= "剩余时间" & Space(2) & S & Space(1) & "S"sum = 0right = 0wrong = 0w = 0End Sub(4)通过一个钟控和一个文本框的回车键方法实现两位随机数(指10-99的自然数)的加减乘除(除法指的是整除)运算的判断,给出错误答案并将式子显示出来,统计正确题数和错误题数Private Sub Timer1_Timer()If p >= 0 Theni = i + 1p = S - i= "剩余时间" & Space(2) & p & Space(1) & "S"End IfIf p = 0 Thenwrong = wrong + 1= "错误题数:" & Space(2) & wrongn = "×"X = result(cou)& & & & & Chr(32) & CStr(n) & Space(3) & "答案是" & CStr(X)) i = -1Call productEnd IfUnload Form2Load Form1MsgBox "请重新选择题量和答题时间或者退出系统", 48, "提示"End IfEnd SubPrivate Sub Text1_KeyPress(KeyAscii As Integer)If KeyAscii = 13 Theni = -1If = "" Or IsNumeric = False ThenMsgBox "请输入答案!", 48, "提示"ElseIf Val <> result(cou) Then n = "×" Else n = "√"If n = "×" Thenwrong = wrong + 1= "错误题数:" & Space(2) & wrongX = result(cou)& & & & & Chr(32) & CStr(n) & Space(3) & "答案是" & CStr(X))Elseright = right + 1= "正确题数:" & Space(2) & right& & & & & Chr(32) & CStr(n))End If= ""End IfCall productEnd IfEnd Sub(5)利用另一个钟控统计已答题数和正确率Private Sub Timer2_Timer()sum = right + wrong= "已答题数:" & Space(2) & sumIf sum > 0 Thenw = right / sumIf w = 0 Thenww = w= "正确率:" & Space(2) & wwElseww = Format(w, "#.###") * 100 & "%"= "正确率:" & Space(2) & wwEnd IfEnd IfEnd Sub(6)利用两个按键控件和一个图形显示控件分别实现重新开始、退出系统、识别等功能Private Sub Command3_Click()Unload Form2Load Form1MsgBox "请重新选择题量和答题时间或者退出系统", 48, "提示"End SubPrivate Sub Command1_Click()EndEnd SubPrivate Sub Picture2_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)MsgBox "版权所有,请勿模仿", 48, "提示"End Sub四、测试数据及运行结果【输入的测试数据,输出的结果】五、实验总结、经验分享【简单叙述心得,指出本次上机实验的关键环节或关键点;若经多次失败最终成功,请阐述失败之处和导致失败的原因,并简单给出你是如何一步步成功(或经验分享);若本次上机实验最终没有成功,则阐述成败之处及其原因分析。