1、 :(Visual Basic程序设计教程 0 ThenCommandl.Enabled=True End IfEnd Sub第5章编程及上机调试1.和数为:1.21。程序代码如下:Private Sub Form_Load()Show s=0 For k=1 To 100 s=s+1/(l+k*4)Next kPrint s=;Format(s,#.00)End Sub2.程序代码如下:Private Sub Form_Load()4Dim i A s Integer,a A s Integer,b A s Integer,c A s Integer ShowFor i=100 To 9 9
2、 9a=Int(i/100)b=Int(i-100*a)/10)c=i-100*a-10*bIfa*a*a+b*b*b+c*c*c=i Then Print iEnd IfNext iEnd Sub3.在窗体上建立一个文本框Textl(初始值)、一个列表框Listl(显示结果)和一个命令按钮Comdl(“查找”)oPrivate Sub Comdl_Click()“查找”Dim n A s Integer n=Vai(Textl.Text)Listl.Clear:k=0 Do While k=0.00001Print a;的平方根为;xnlEnd Sub第6章编程及上机调试1.程序代码如下:P
3、rivate Sub Form_Load()Dim a(6,6)A s Integer ShowFor i=1 To 6For j=1 To 6Select Case iCase Is ja(i,j)=25Case Is=j a(i,j)=0 End Select Print a(i,j);Next jPrintNext i For i=1 To 6 t=a(l,i):a(l,i)=a(6,i):a(6,i)=t Next i Print:Print For i=1 To 6 For j=1 To 6Print a(i,j);Next jPrint Next i End Sub 2.程序代码如
4、下:Option Base 1 Private Sub Form_Load()Dim a(8,8)A s Integer,n A s Integer Dim max A s Integer,r A s Integer,c A s Integer Show Randomize n=8 For i=1 To n For j=1 To nx=Int(9 00*Rnd+100)产生一个随机数a(i,j)=x Print x;Next jPrintNext i max=0:r=1:c=1 Print For i=1 To n For j=1 To nIf a(i,j)max Then 判断有无更大数ma
5、x=a(i,j):r=i:c=jEnd If Next j,i Print 最大值为:;max Print”位于行:;r,列:;c End Sub3.在窗体上建立两个列表框List 1(处理前数据)和List2(处理后数据),以及标签Labell。程序代 码如下:Private Sub Form_Load()Dim a(100)A s Integer,b(100)A s Integer Randomize n=100For i=1 To n 输入数组a的n个元素x=Int(20*Rnd)List 1.A dditem x a(i)=x Next i k=0 For i=1 To n 删除零元素
6、If a(i)0 Then k=k+1:b(k)=a(i):List2.A dditem b(k)End If Next iLabel 1.Caption=数组中零元素个数:+Str(n-k)6End Sub4.在窗体WinFcmnl中建立1个单选按钮组Optl和1个命令按钮Cmdl,单选按钮组包含3个单选按 钮,其标题分别为“单选1”、“单选2”和“单选3”,下标分别为0、1和2。设置第一个单选按钮被选中。程序代码如下:Dim n A s IntegerPrivate Sub Cmdl_Click()n=n+1 If n=3 Then n=0 Optl(n).Value=TrueEnd Su
7、b5.(1)s(i)s(j)(2)t=n(i):n(i)=n(j):n(j)=t(2)s(i)s(i-l)(4)h=h+1第7章编程及上机调试1.在窗体上建立四个文本框Textl和一个命令按钮Command 1(“检验”)。文本框TextlText3用于 输入,Text4用于输出结果。Private Sub Command1_C1ick()Dim a A s String,b A s String,c A s String a=Trim(Textl.Text)b=Trim(Text2.Text)c=Trim(Text3.Text)If che(a)A nd che(b)A nd che(c)T
8、hen Text4.Text=Vai(a)+Vai(b)+Vai(c)E se Text4.Text=存在非数字字符 End If End SubFunction che(x A s String)A s Boolean 若存在非数字字符,函数值为假che=True For k=1 To Len(x)s=Mid(x,k,1)If s 9 Then che=False Exit For End If Next k End Function2.在窗体上建立一个文本框控件数组Textl(0)Textl(5)一个文本框Text2和一个命令按钮 Commandl(“比较”)。文本框控件数组用于输入6个数
9、Text2用于输出结果。Private Sub Commandl_Click()Dim d(5)A s Single,m A s Single For k=0 To 5 d(k)=Vai(Textl(k).Text)Next k,d(l),d(2),m)d(3),d(4),m)m,d(5),m)Text2.Text=m End Sub 标准模块文件Sub max(x,y,z,m)比较三个数x、y、z的大小,并返回大数mIf x y Then m=x Else m=y If m z Then m=zEnd Sub(d(m,(m,XXX73.(1)s(2)Mid(s,p+1)(3)Listl.L
10、istCount4.程序代码如下:Private Sub Form_Load()Dim x A s Single,n A s Integer,y A s Doublex=InputBox(x=,求 X 的 n 次方)n=InputBox(n=,求 X 的 n 次方)y=Power(x,n)ShowPrint x;的“;n;次方=“;Format(y,#,#.#)End SubFunction Power(x A s Single,n A s Integer)A s DoubleIf n 1 ThenPower=Power(x,n-1)*xElse Power=x End If End Func
11、tion5.创建一个新工程,建立二个窗体Forml及Form2,把Form2设置为启动窗体。在Form 1中设置命 令按钮Cl,Form2中设置命令按钮C2。程序代码如下:Private Sub Cl_Click(),窗体 Forml 的“隐藏按钮Forml.HideEnd SubPrivate Sub C2_Click()窗体 Form2 的“显示”按钮Forml.ShowEnd Sub6.在窗体上设置三个窗体Forml-Form3oForml中建立了两个文本框Textl(“用户名”)和Text2(“密 码”),以及命令按钮Commandl(“判断”)。Form2中建立了一个文本框Textl
12、其Text属性值为“欢迎你 使用本系统”)和命令按钮Commandl(“返回”)。Form3中建立了一个文本框Textl(其Text属性值为“对 不起,请向管理员查询”)和命令按钮Commandl(“退出”)。Dim n A s IntegerPrivate Sub Command 1_Click(),窗体 Forml 的“判断”usern=Trim(Textl.Text):passw=Trim(Text2.Text)If usern=username A nd passw=password”ThenForml.HideForm2.ShowElsen=n+1:Text1.SetFocusIf
13、 n=3 ThenForml.HideForm3.ShowEnd IfEnd IfTextl.Text=z,:Text2.Text=End SubPrivate Sub Form_A ctivate()Textl.Text=,z,:Text2.Text=Textl.SetFocusEnd SubPrivate Sub Commandl_Click(),窗体 Form2 的“返回”Form2.HideForml.ShowEnd SubPrivate Sub Command 1_C 1 ick()窗体 Form3 的“退出”Unload FormlUnload Form2Unload Form38
14、EndEnd Sub第8章编程及上机调试1.在窗体上建立一个列表框Listl(存放从文件中读出的数据)、一个文本框(存放累加值)和三个命令按钮CommandlComniand3。程序代码如下:Private Sub Command 1_C1 ick()”写入数据Dim x A s IntegerOpen MyFile3.txt For Output A s#1For x=1 To 10Write#1,xNext xClose#1End SubPrivate Sub Command2_Click()读出并累加Dim x A s Integer,sum A s IntegerOpen MyFile
15、3.txt For Input A s#1Listl.Clear sum=0Do While Not EOF(l)Input#1,x Listl.A dditem x sum=sum+xLoopClose#1Textl.Text=sumEnd SubPrivate Sub Command3_Click()结束EndEnd Sub2.程序代码如下:Dim d(l To 20)A s IntegerPrivate Sub Commandl_Click()产生随机数For i=1 To 20d(i)=Int(l+9 9*Rnd)Listl.A dditem d(i)Next iEnd SubPriv
16、ate Sub Command2_Click()保存Open MyFile3.txt For Output A s#1For i=1 To 20Write#1,d(i)Next iClose#1End SubPrivate Sub Command3_Click()读出Open MyFile3.txt For Input A s#1Do While Not EOF(l)Input#1,xList2.A dditem xLoopClose#1End SubPrivate Sub Command4_Click()结束EndEnd Sub3.本程序的用户界面和程序代码较为复杂,请见具体程序文件。9第9
17、章编程及上机调试1.程序代码如下:Private Sub Form_load()Dim x(3)A s Single,y A s SingleOn Error GoTo errlnErr.Raise 11Err.Rai se 9MsgBox(终止程序的运行)Enderrln:Select Case Err.NumberCase 11MsgBox(除数为0(错误码为H),跳过该错误)Resume NextCase 9MsgBox(下标越界(错误码为9),跳过该错误)Resume NextCase ElseMsgBox(错误发生在&Err.Source _&”,代码为&Err.Number _&,
18、即&Err.Description)End SelectEnd Sub2.改正后的程序代码如下:Private Sub Form_Load()ShowFor i=1 To 11Print Tab(20-i);For j=1 To 2*i-1If j 9 Then k=k+7Print Chr(k+48);Next jNext iEnd Sub3.解法一程序如下:Private Sub Form_Load()Showt 二 324For a=23 To t Step 23For b=19 To t Step 19For c=43 To t Step 43 If a+b+c=t ThenPrint
19、 这三个加数是:;a,b,cEnd IfNext c,b,aEnd Sub解法二程序如下;Private Sub Form_Load()Showt=324For a=23 To t Step 23For b=19 To t Step 19 c=t-a-bIf c Mod 43=0 A nd c 0 Then Print 这三个加数是:;a,b,c以后出错时转移到errln 产生除数为0的错误 产生下标越界的错误标号除数为0的错误码为11返回下标越界的错误码为9返回其他错误处理10End If Next b,aEnd Sub第10章编程及上机调试1.在窗体上建立一个水平滚动条HScrolll和一
20、个文本框Textl。程序代码如下:Private Sub Form_Load()HScrolll.Max=1000HScrolll.Min=0HScrolll.LargeChange=5HScrolll.LargeChange=10HScrolll.Value=500End SubPrivate Sub HScrol1l_Change()Textl.Text=HScrolll.ValueEnd SubPrivate Sub HScrolll_Scroll()Textl.Text=HScrolll.ValueEnd Sub2.在窗体上建立一个计时器Timerl和“开始”、“停止”两个命令按钮。程
21、序代码如下:Private len_S A s Single,s A s Integer 模块级变量Private Sub Command 1_Click()“开始”Timer1.Enabled=Trues=0Call Sub_MoveEnd SubPrivate Sub Command2_Click()“停止”Timer1.Enabled=False End Sub Private Sub Form_Load()Timer1.Enabled=False 先取各指针的长度len_S=Sqr(LineS.Y 2-LineS.Y l)-2+(LineS.X2-LineS.XI)-2)秒针长度End
22、 SubPrivate Sub Timerl_Timer()定时器的定时事件过程s=s+1 Call Sub_MoveEnd SubPrivate Sub Sub_Move()定时器的定时事件过程pi=3.14159LineS.X2=LineS.XI+len_S*Sin(pi*s/30)绘制秒针LineS.Y 2=LineS.Y l-len_S*Cos(pi*s/30)End Sub3.按要求在窗体上设计一个二级下拉菜单。4.在窗体上建立一个通用对话框CommonDialogl、“打开”及“字体”两个命令按钮和文本框Textl。程序代码如下:Private Sub Command1_Click
23、)CommonDialogl.DialogTitle=选择文件CommonDialogl.Filter=文本文件CommonDialogl.InitDir=C:CommonDialogl.ShowOpenTextl.Text=CommonDialogl.FileNameEnd SubPrivate Sub Command2_Click()CommonDialogl.Flags=cdlCFScreenFontsCommonDialogl.ShowFontTextl.FontName=CommonDialogl.FontNameTextl.FontSize=CommonDialogl.FontS
24、ize打开设置文件过滤器设置默认文件夹显示打开”对话框字体设置字体名称 设置字体大小11Textl.FontBold=CommonDialogl.FontBold 粗体Textl.Fontltalic=CommonDialogl.Fontltalic 斜体End Sub第11章编程及上机调试1.利用可视化数据管理器建立职工人事数据库(Rsk.mdb),并按表结构格式建立职工表”和“工资 表”两个表。对“职工表”按“职工号”字段建立主索引Z gbh,按“姓名”字段建立索引Z gxm;对“工 资表”按“职工号”字段建立主索引Gzbho2.分别向“职工表”和“工资表”录入一批数据(由读者自行给定),
25、其中“实发数”字段不输入数 据。3.在可视化数据管理器的“SQL语句”窗口中,使用下列SQL语句计算所有职工的实发数:Update工资表Set实发数=基本工资+补贴-扣除4.(1)“查询1”所用的SQL语句如下:Select职工表.职工号,职工表.姓名,职工表.部门From职工表Where(职工表.性别=女);(2)“查询2”所用的SQL语句如下:Select工资表.职工号,工资表.基本工资,工资表.补贴,工资表.扣除,工资表.实发数From匚资表Where(工资表.实发数 1500);(3)“查询3”所用的SQL语句如下:Select工资表.基本工资,工资表.实发数,职工表.职工号,职工表.
26、姓名,职工表.部门From工资表,职工表Where(工资表.实发数2000)A nd(职工表.性别=男)A nd工资表.职工号=职工表.职工号;5.使用“数据窗体设计器”生成一个名为Z g的数据窗体,用于显示和维护“职工表”中的数据,再把该数据窗体设置为当前工程的启动对象。其操作步骤类似于例11。6.类似于例11.2的操作步骤,在窗体上添加1个数据控件Datal,4个标签LabellLabel4,4 个用于显示对应字段的文本框TextlText4,1个命令按钮控件数组Comdl(0)Comdl(4)。设置Datal 及4个文本框的属性。编写的程序代码如下:Private Sub Datal_R
27、eposition()Datal.Caption=第&Datal.Recordset.A bsolutePosition+1&个记录End SubPrivate Sub Datal_Validate(A ction A s Integer,Save A s Integer)If Save=True Theny=MsgBox(要保存已更改内容吗?,vbY esNo,“保存记录”)If y=vbNo Then 若Fl答“否”Save=FalseDatal.UpdateControls 恢复原值End IfEnd IfEnd SubPrivate Sub Comdl_Click(Index A s
28、Integer)Select Case IndexCase 0 查询记录s=Trim(InputBox(“请输入要查找的职工号,查找)xh=职工号=&s&Datal.Recordset.FindFirst xhIf Datal.Recordset.NoMatch ThenMsgBox”找不到职工号为&xh&的职工!”Datal.Recordset.MoveFirstEnd IfCase 1 添加记录Datal.Recordset.MoveLast 移到记录集的末尾Datal.Recordset.A ddNew 添加新记录Case 2 修改记录Datal.Recordset.Edit 修改当前记录Case 3 删除记录y=MsgBox(要删除该记录吗?,vbY esNo,删除记录)12If y=vbY es ThenDatal.Recordset.Delete 删除记录Datal.Recordset.MoveNext 显示下一记录End IfCase 4 退出Unload MeEnd SelectEnd Sub(完)13