当前位置:文档之家› 29-算术四则运算vb编程

29-算术四则运算vb编程

29-算术四则运算vb编程
29-算术四则运算vb编程

河北工业大学计算机软件技术基础(VB)

课程设计任务书

本题难度级别:C实现基本要求代码: 约150行

主要控件及算法:Command、 Label、Text及Combo;Combo控件和数组的使用。

一、设计题目:算术四则运算(出题人:李惠然)

二、目的与要求

1.目的

培养学生综合利用VB语言进行程序设计的能力,主要是通过使用VB的标准控件,加深对控件的多个属性的认识及如何使用属性进行程序设计。

2.基本要求

?每次出题数为随机 1-20题、每次1题、每次2题、……、每次20题。

?试题分为10、20、30、40、50、100、1000以内的加减乘除整数运算题。

?题型分为加、减、乘、除、加减、乘除,共 6 种方式。

?除法题目要确保不出现不能整除的情况。

?用户答题完成后,单击“交卷”,程序马上进行对错判断,根据正确率的百分比显示得分,如果错误会给出正确答案。

?单击“开始”,程序根据设定的题数、题型等条件给出下一组试题。

3.创新要求

?在完成基本要求后,可进行如下创新设计:

?题型增加加减乘除混合运算方式。

?输入法不论处在英文还是中文状态,都能保证用户输入正确的数字。

三、设计方法和基本原理

1.问题描述

?单击VB环境中的“运行”按钮,弹出如下图所示界面;

单击“开始”按钮,系统给出30以内的加法运算共10题。

?给出一道题的答案后按回车键,光标自动转到下一文本框中;

?当做完全部题目后单击“交卷”按钮,系统评分并给出对错标志及正确答案。

?若想改变出题数、运算类型和运算范围,请在3个组合框中进行。之后单击“开始”

按钮,继续出题。

?单击“退出”按钮,结束程序运行。

2. 问题的解决方案

在窗体中放置 9 个控件,它们分别是:

?Label1:在属性窗口将其 Index 属性设置为 1

?Label2:在属性窗口将其 Index 属性设置为 1

?Label3:不用设置任何属性

?Text1:在属性窗口将其 Index 属性设置为 1

?Combo1:不用设置任何属性

?Combo2:不用设置任何属性

?Combo3:不用设置任何属性

?Command1:不用设置任何属性

?Command2:不用设置任何属性

四、主要技术问题的描述:

本题技术问题不多,主要解决vb中组合框的使用。

组合框的使用

组合框控件(ComboBox)将文本框控件(TextBox)与列表框控件(ListBox)的特性结合为一体,兼具文本框控件与列表框控件两者的特性。它可以如同列表框一样,让用户选择所需项目;又可以如文本框一样通过输入文本来选择表项。

组合框默认的名称是 ComboX(X为阿拉伯数字 1、2、3 ,等等),规则的命名方式为:CboX(X为用户自定义的名字,如 CboName、CboColor ,等等)。

(1)组合框控件的主要属性:

列表框控件的大部分属性同样适合于组合框,此外,组合框还有一些自己的一些属性:

?Style(类型)属性

组合框共有三种 Style :

当值为 0 ,组合框是“下拉式组合框”(DropDown Combo),与下拉式列表框相似,但不同的是,下拉式组合框可以通过输入文本的方法在表项中进行选择,可识别 Dropdown 、Click、Change 事件。

当值为 1 ,组合框称为“简单组合框”(Simple Combo),由可以输入文本的编辑区与一个标准列表框组成,可识别 Change 、DblClick 事件。

当值为 2 ,组合框称为“下拉式列表框”(Dropdown ListBox),它的右边有个箭头,可供“拉下”或“收起”操作。它不能识别DblClick 及Change 事件,但可识别Dropdown 、Click 事件。

综上所述,如果你想让用户能够输入项目,则应将组合框设置成 0 或 1 ,如果只想让用户对已有项目进行选择,则应将组合框设置成 2

?Text(文本)属性:

本属性值返回用户选择的文本或直接在编辑区域输入的文本,可以在界面设置时直接输入但要显示多个选项,不能简单地用 Text 属性指定,因为后一选项会覆盖前面的选项,这时,常常要用到窗体的载入事件 Form_Load

Form_Load 的意思是,在打开窗口的同时,将指定的内容载入。

(2)组合框的事件:

根据组合框的类型,它们所响应的事件是不同的。

例如,当组合框的 Style 属性为 1 时,能接收 DblClick 事件,而其他两种组合框能够接收 Click 与 Dropdown 事件;当 Style 属性为 0 或 1 时,文本框可以接收 Change 事件。

(3)组合框的方法:

跟列表框一样,组合框也适用 AddItem 、Clear 、RemoveItem 方法。

(4)组合框举例:

在名为 CboChoose 的下拉组合框中任意选择一种机型,自动会在名为 LblShow 的标签上显示出来。

程序代码如下:

Private Sub Form_Load()

CboChoose.AddItem "IBM"

CboChoose.AddItem "AST"

CboChoose.AddItem "Compaq"

CboChoose.AddItem "联想"

CboChoose.AddItem "长城"

CboChoose.AddItem "东海"

End Sub

Private Sub CboChoose_Click()

LblShow.Caption = "你的机型是:" & CboChoose.Text

End Sub

五、参考资料

Visual Basic 程序设计教程及 Visual Basic 实验教程

MSDN中文版,课程设计网站上提供的其它资料。Dim a() As Integer

Dim b() As Integer

Dim c() As String

Private Sub Combo1_Click()

For i = 0 To 9

Text1(i).Visible = True

Next

If Combo1.ListIndex < 9 Then

For i = 9 To Combo1.ListIndex + 1 Step -1

Text1(i).Visible = False

Next

End If

Label1.Caption = ""

ReDim a(Combo1.ListIndex)

ReDim b(Combo1.ListIndex)

ReDim c(Combo1.ListIndex)

End Sub

Private Sub Combo3_Click()

If Combo3.ListIndex = 3 Or Combo3.ListIndex = 5 Then

For i = 0 To Combo1.ListIndex

While a(i) Mod b(i) <> 0

b(i) = Int(((Combo2.ListIndex + 1) * 10) * Rnd + 1) Wend

Next

End If

Select Case Combo3.ListIndex

Case 0

For i = 0 To Combo1.ListIndex

c(i) = "+"

Next

Case 1

For i = 0 To Combo1.ListIndex

c(i) = "-"

Next

Case 2

For i = 0 To Combo1.ListIndex

c(i) = "*"

Next

Case 3

For i = 0 To Combo1.ListIndex

c(i) = "/"

Next

Case 4

For i = 0 To Combo1.ListIndex

Randomize

If Int(10 * Rnd + 1) Mod 2 = 0 Then c(i) = "+"

Else

c(i) = "-"

End If

Next

Case 5

For i = 0 To Combo1.ListIndex

Randomize

If Int(10 * Rnd + 1) Mod 2 = 0 Then

c(i) = "*"

Else

c(i) = "/"

End If

Next

End Select

End Sub

Private Sub Command1_Click()

For i = 0 To Combo1.ListIndex

Randomize

If Combo2.ListIndex < 5 Then

a(i) = Int(((Combo2.ListIndex + 1) * 10) * Rnd + 1)

b(i) = Int(((Combo2.ListIndex + 1) * 10) * Rnd + 1)

Else

If Combo2.ListIndex = 5 Then

a(i) = Int(((Combo2.ListIndex + 1) * 100) * Rnd + 1)

b(i) = Int(((Combo2.ListIndex + 1) * 100) * Rnd + 1)

Else

a(i) = Int(((Combo2.ListIndex + 1) * 1000) * Rnd + 1)

b(i) = Int(((Combo2.ListIndex + 1) * 1000) * Rnd + 1)

End If

End If

Next

Label1.Caption = ""

Call Combo3_Click

For i = 0 To Combo1.ListIndex

Label1.Caption = Label1.Caption + "(" & i + 1 & ")" & a(i) & c(i) & b(i) & "=" & vbCrLf & vbCrLf

Next

Label2.Caption = ""

For i = 0 To 9

Text1(i).Text = ""

Next

End Sub

Private Sub Command2_Click()

For i = 0 To Combo1.ListIndex

Select Case c(i)

Case "+"

If a(i) + b(i) = Val(Text1(i).Text) Then

Label2.Caption = Label2.Caption & "√" & vbCrLf & vbCrLf

Else

Label2.Caption = Label2.Caption & "正确答案是:" & a(i) + b(i) & vbCrLf & vbCrLf

End If

Case "-"

If a(i) - b(i) = Val(Text1(i).Text) Then

Label2.Caption = Label2.Caption & "√" & vbCrLf & vbCrLf

Else

Label2.Caption = Label2.Caption & "正确答案是:" & a(i) - b(i) & vbCrLf & vbCrLf

End If

Case "*"

If a(i) * b(i) = Val(Text1(i).Text) Then

Label2.Caption = Label2.Caption & "√" & vbCrLf & vbCrLf

Else

Label2.Caption = Label2.Caption & "正确答案是:" & a(i) * b(i) & vbCrLf & vbCrLf

End If

Case "/"

If a(i) / b(i) = Val(Text1(i).Text) Then

Label2.Caption = Label2.Caption & "√" & vbCrLf & vbCrLf

Else

Label2.Caption = Label2.Caption & "正确答案是:" & a(i) / b(i) & vbCrLf & vbCrLf

End If

End Select

Next

End Sub

Private Sub Command3_Click()

End

End Sub

Private Sub Form_Load()

Command2.Enabled = False

For i = 1 To 10

Combo1.AddItem "每次" & i & "题"

Next

For i = 10 To 50 Step 10

Combo2.AddItem i & "以内"

Next

Combo2.AddItem "100以内"

Combo2.AddItem "1000以内"

Combo3.AddItem "加"

Combo3.AddItem "减"

Combo3.AddItem "乘"

Combo3.AddItem "除"

Combo3.AddItem "加减"

Combo3.AddItem "乘除"

Combo1.Text = Combo1.List(0)

Combo2.Text = Combo2.List(0)

Combo3.Text = Combo3.List(0)

End Sub

Private Sub Text1_KeyDown(Index As Integer, KeyCode As Integer, Shift As Integer) If KeyCode = 13 Then

If Index = Combo1.ListIndex Then

Command2.Enabled = True

Command2.SetFocus

Else

Text1(Index + 1).SetFocus

End If

End If

End Sub

相关主题
文本预览
相关文档 最新文档