




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
码:码:Textl.Text="欢迎学习VisualBasic程序设计",如图1.20所示。开"按钮,进入开"按钮,进入VB集成开发环境,出现Forml的窗体,如图1.16所示。国家开放大学VisualBasic程序设计形考任务参考答案
实验一欢迎程序实验目的区学会VB(VisualBasic)6.0的安装,掌握启动与退出VB6.0的方法。囈熟悉VB集成开发环境,掌握工具栏、工具栏、属性窗口、工程资源管理器窗口、代码编辑器窗口的使用。掌握建立、编辑和运行一个简单的VB应用程序的全过程。实验内容本实验将要开发一个"欢迎"程序。程序运行界面如图1.15所示,完成的功能是:单击"显示〃按钮,在文本框内显示"欢迎学习VisualBasic程序设计”字样。图1.15欢迎程序运行界面实验步骤界面设计(1)启动VisualBasic6.0,在出现的"新建工程”对话框中,单击"打
图1.16"Forml"窗体(2)在Forml窗体上添加控件。用鼠标单击工具箱中的文本框按钮,然后在Forml窗体上用鼠标拖曳,或者直接双击工具箱中的文本框按钮,在Forml窗体上形成一个默认名为Textl的按钮对象,用同样方法将工具箱中的命令按钮添加到Forml窗体上,调整好位置,如图1.17所示。图1.17在窗体上添加控件(3)设置窗体的属性。单击Forml窗体,在属性窗口列表的左栏中选择Caption属性,并将右栏中的属性值改为"欢迎",窗体效果如图1.18所示。
图1.18设置了Forml属性后的窗体(4)设置控件的属性。在窗体上单击Commandl按钮控件,在属性列表的左栏中选择Caption属性,并将右栏中的属性值改为"显示"。单击文本框控件,在属性列表的左栏中找到Text属性,将其值Textl删除。更改了属性值之后的应用程序界面如图1.19所示。图1.19设置属性后的应用程序界面代码设计双击窗体上的Commandl按钮,可在代码编辑器窗口中自动建立起Commandl_Click事件的代码框架。在Commandl.Click事件过程中添加代FW工程1"Forml(Code)TOC\o"1-5"\h\z|CoBB&ndl ▼I|Click ▼|IOotionExplicitPrivateSubCommand!Click0Textl.Text="欢迎学JJV"ualBasic程序设计「二|EndSub ▼我jJJ 痘图1.20Commandl_Click事件的代码注意:代码顶部的0ptionExplicit语句用于要求对程序中的变量进行显示声明。要使该语句自动生成,可从“工具”菜单中选择“选项",在弹出的“选项”对话框中,将编辑器选项卡中“要求变量声明"前的复选框选中即可。聞和运行工程单击工具栏上的"保存”按钮口,将窗体、工程分别以hy.frm、hy.vbp保存在磁盘上预先建立好的文件夹中。单击工具栏中的“启动"按钮►,再单击运行界面上的"显示"按钮,在文本框中显示"欢迎学习VisualBasic程序设计",如图1.15所示。生成可执行文件从"文件”菜单中选择生成hy.exe,在"生成工程”对话框中,单击"保存"按钮。该文件可以脱离VB环境,在操作系统下单独运行。排列,如图排列,如图2.28所示。实验二计时秒表程序实验目的掌握建立和运行VisualBasic程度设计应用程序的步骤。掌握文本框、标签、命令按钮和时钟控件的使用方法。实验内容本实验将要开发f"计时秒表”程序。程序运行界面如图2.27所示,运行逻辑是:单击"开始"按钮,文本框显示计时的毫秒数值,直到单击"停止“按钮终止计时。图2.27计时器运行界面实验步骤界面设计(1)新建一个“标准EXE"工程,在工程资源管理器窗口中单击”工程1”,将工程属性窗口中的该工程名称设置为JSP。(2)单击Forml窗体,在属性窗口中将窗体名称由默认的Forml改为frmJsp,注意观察工程资源管理器窗口的变化。(3)在窗体frmJsp上添加1个Label控件,1个TextBox控件、2个CommandButton控件和1个Timer控件,并将控件按如图2.27所示的样式
BEB|Form!图2.28BEB|Form!图2.28程序界面设置控件属性窗体及各控件属性设置如表2.10所示。表2.10属性设置Mtt设定值FormlCaption计时器LabellNameLabellCaption计时秒表AutosizeTrueTextlNameTextlTextLockedTrueCommandlNameCommandlCaption开始图图2.30程序运行效果Command2NameCommand2Caption停止TimerEnabledFalseInterval10设置属性值后的程序界面如图2.29所示。•计时齧 HBB:计时秒表-开始|停止|::图2.29设置属性后的程序界面编写代码在工程资源管理器窗口中,选中frmJsp窗体,然后单击"查看代码"按钮,打开代码编辑器窗口,编写如下程序代码:DimTAsIntegerPrivateSubForm_Load()Timerl.Interval=10Timerl.Enabled=FalseTextl.Text="0"EndSubPrivateSubCommandl_Click()Timerl.Enabled=TrueEndSubPrivateSubCommand2_Click()Timerl.Enabled=FalseEndSubPrivateSubTimerl_Timer()T=T+1Textl.Text=StrfT)+"O"EndSub际运行程序单击工具栏上的"保存”昼安钮,分别以frmJsq.frm文件名和jsq.vbp文件名保存窗体文件和工程文件。单击工具栏中的"启动”►按钮,再单击运行界面上的"开始"按钮,计时器开始计时,如图2.30所示。目打包将调试后运行无误的程序打包制作安装盘,并其他计算机上进行安装,检验效果。实验三冒泡排序功能实验目的理解冒泡排序算法。7拿握循环、分支结构的使用方法。掌握断点设置、监视跟踪等调试方法,深入分析该程序的运行过程、值的变化情况。实验内容本实验开发—"冒泡排序”程序,并通过这个程序,巩固一下第2章所学的程序调试方法。这个程序的运行逻辑是:首先用户在Textl中输入一个整数,单击"添加到初始序列中"按钮后将该整数添加到“初始序列"Listl中,如此多次后,再单击"排序"按钮,在List2中显示排序结果,我们期望的运行结果如图3.10所示。图3.10期望的程序运行结果实验步骤界面设计(1)首先请同学们参照图3.11完成排序程序的界面设计。图3.11排序程序的界面设计编写事件代码"添加到初始序列中"按钮的Click事件:PrivateSubCommandl_Click()Listl.AddltemText.TextEndSub"排序"按钮的Click事件;PrivateSubCommand2_Click()Dimi,jAsInteger'定义数组,以Listl的项目个数为数组维数DimstrList(Listl.ListCount)AsInteger'定义中间临时变量,用于数据交换DimstrTmpAsInteger'将Listl中的项目导入到strList数组中Fori=0ToListl.ListCountstrList(i)=Listl.List(i)Nexti'按"冒泡"算法完成排序工作Fori=0ToUBound(strList)Forj=i+1ToUBound(strList)IfstrList(i)>strList(j)ThenstrTmp=strList(i)strList①=strList(j)strList(j)=strTmpEndIfNextjNexti'将fiE序结果输出到List2中Fori=0ToUBound(strList)List2.AddItemstrList(i)NextiEndSub运行程度并调试程序语法错误(1)运行程序,在Textl文本框中输入一个整数,比如1,然后单击"添加到初始序列中"按钮,此时会出现如图3.12所示的错误提示。图3.12实时错误(2)单击"调试"按钮,进入中断模式,VB编译器将自动标识岀引发错误的语句行,如图3.13所示窗体。图3.13自动定位引发错误的语句行(3)分析错误原因,很容易发现该行语句的正确写法应该是:Listl.AddltemTextl.Text
(4)修改错误后,按F5键继续执行程序,将出现如图3.14所示界面。图3.14排序程序运行界面(5)依次输入整数序列21、9、8、6后,将岀现如图3.15所示界面。图3.15输入初始序列后的界面(6)单击"排序”按钮后,又出现如图3.16所示的运行错误。strList(i)strList(i)=Val(Listl.List(i))strList(i)strList(i)=Val(Listl.List(i))DimstrListQAsIntegerDimstrListQAsIntegerMicrosoftVisualBasicMicrosoftVisualBasic图3.16编译错误(7)单击"确定"按钮后,再次进入中断模式,编译器以加重显示的形式指出了引发错误的位置,如图3.17所示。图3.17图3.17以加重显示的形式定位错误(8)分析如图3.16所示的错误提示"要求常数表达式”后,发现引用错误的原因是不能用变量作为数组的下标,即下列数组声明语句不符合VB语法约定:DimstrList(Listl.ListCount)AsInteger为此我们作如下选择,即采用动态数组声明的方法。
ReDimstrList(Listl.ListCount)AsInteger(9)选择完成后,按F5键继续执行,又会岀现如图3.18所示的错误提图3.18类型不匹配错误提示(10)单击“调试”按钮后,错误定位如图3.19所示。HiXU1・Forml(Code)■|(ClickstrListOast!ListCotmf)AzInt«c«r'定义中间临时麦量,用于数矣交狹DimstrTapAsInt«c«r'将laHi中的項目号入到f谶■中Fori-0ToLiitl.ListCountxtrUstG)=ListlList(i)V<xti书“冒且茂,完成拜序工作Fori=0ToUBouad(strList)Pwj•i♦1ToUBound(strList)IfstrListG)> Then争21l图3.19类型不匹配错误定位(11)分析错误原因发现,我们将数组strListO声明为Integer数据类型,而Listl.ListO表示的是字符型数据,VB无法进行自动类型转换,因此我们只能通过Vai函数进行转换:图图3.22程序遇到断点图图3.22程序遇到断点(1)(1)单击如图3.21所示位置,设置断点。(12)按F5键继续,程序成功运行,出现如图3.20所示界面。这说明语法错误已基本排除了。但是观察运行结果,发现"排序结果"序列中多岀了一个数值0。这种结果并不是我们期望的。图3.20有问题的运行结果(13)关闭程序,重新运行,仍然出现图3.20的问题,这说明程序中存在逻辑问题,需要进一步调试。设置断点,分析逻辑错误逻辑错误是最难定位的,对于那些逻辑稍微复杂的程序,常常需要花费大量的时间和精力查找分析。一般要用到设置断点、单步执行和立即调试窗等工具或技术。
m工程1Forml(Code)!CoaBa><12'定义中冋临时变量,用于理交技DimstrTnpAs'格la,t1中的吸目导入至ktrList数鉗中For1=0ToListlListCountstrList(i)=VaiCListl.LiltG))Nexti度“冒泪”算法,芫成捧序工作Forj=i♦1ToUBoundUtrList)IfstrList(i)>strList(j)ThenstrTmp=strListG)strlast(i)=strlustQ)strListQ)=strTapEndIfNextjNexta』212SJ~3图3.21』212SJ~3(2)按F5键运行程序并输入一组整数,比如5、4、3、2。单击“排序"按钮后,程序将进入中断模式,出现如图3.22所示界面。Hi工程1•Form!(Code)lc-'房义中间細剣t,用于数取換Di・strTapAsInteger捋LimU中的項目导入到strListStffi中For1=0ToListl.ListCountstriast(i)=V»1distl.List(i))Nextiit茂,芫成拷序工作 G|For. 0ToUBomUGtrLisOForj=i♦1ToUBouad(itrList)IfstrListG)>itrLislQ)ThenHrTap=slrList(i)strUstG)=strLxstG)strLiitG)=itrTmpIndIf程序在此处中斬/lastjI«xli程序在此处中斬/(3)在VB集成环境的"立即"窗口中,使用"?"打印strList数组的上界和相关的值,如图3.23所示。当然也可以使用Print.Debug.Print命令,它们等效于”?〃。立即ListCount ▲4?ubound(strlist)4?strlist(0)502 —L1U 2T1图3.23在"立即"窗中观察变量的值(4)仔细分析不难发现,Listl.ListCount的最大值是4,说明数字序列中共有4个数,即5、4、3、2。但是Listl.ListO的下标是从0开始的,下标最大值应该为3,即:Listl.ListCount-1为此,我们需要选择strList。数组的上界和循环次数。,个性数组声明ReDimstrList(Listl.ListCount-1)AsInteger修改循环次数Fori=0ToListl.ListCount-1strList(i)=Val(Listl.List(i))Nexti(5)修改后的完整代码及运行结果如图3.24、图3.25[并排这两个图]所图3.24修改后的代码图3.25最终的运行结果程序的进一步完善这个程序经过调试能够正常运行了,但还是存在一些不足,比如我们可以在Textl中输入非整数、字符和汉字等。另外,当重新单击"排序"按钮后,数字序列会被重复添加到List2中。上述情况下,应用程序并不会报错,但这与我们的设计要求是不相符的,因此需要进一步完善程序功能,主要有以下两种措施,这些知识将在后续章节介绍。请同学们先提前思考一下。(1)通过Keypress事件控制Textl控件的输入,使它只能接收数字。(2)在"排序"按钮的Click事件中加入List2.Clear语句。实验四菜单程序实验目的掌握菜单编辑器的使用方法。官掌握下拉式菜单的制作。实验内容本实验主要开发一个如图4.21所示的菜单系统。在菜单栏中有"插入"和"颜色”两个菜单,其中"插入"菜单中包含"符号""图片""文本框"和"文件"4个菜单项,"文本框"子菜单又包含"横排”和"竖排"两个选项。"颜色”菜单中包含“红色""蓝色”和〃绿色"3个子菜单。图4.21简单菜单设计程序的运行逻辑是:若文本框中没有文本,"颜色”菜单中的各项均为灰色显示,表示当前不可用。当用户向文本框中输入了文字后,单击"颜色"菜单中相应的选项可以改变文本框中文字的颜色。实验步骤界面设计(1)启动VB进入VisualBasic6.0集成开发环境。单击工程菜单下的"菜单编辑器"命令,打开菜单编辑器对话框,如图4.22所示。数据区一标题任):|| 确定名称區):| 取消索引也):| 快捷键危):|(None) ▼帮助上下艾IDQP:|。 协调位§(Q):|o"-Kone ▼编辑区一厂复选© 17有效但) 戸可见@)厂显示窗口列表也)令|♦|♦|♦|下一个俎)|插入Q)|删除任)菜单项显示区-图4.22菜单编辑器(2)在标题框中输入"插入(&I)”,在名称框中输入Insert,这样就创建了〃插入"菜单。各菜单控件设置如表4.3所示。表4.3菜单控件设置菜单层次标题(Caption)名称(Name)快捷键设置顶层插入(&T)fnsert一级符号(&S)Symbol一级图片(&P)Picture一级文本框(&X)Fext二级横排(&H)lorizon二级竖排(&V)Vertical一级—Sep一级文件(&L))ocument顶层颜色Color一级红色(&R)(cd一级蓝色(&B)Uue一级绿色(&G)ireen(3)单击钮,再单击4按钮(条形光标的左端出现了,在标题框中输入"符号(&S)”,在名称框中输入Symbol,即创建了"插入”菜单的一级子菜单:"符号"。(4)单击钮,在标题框中输入"图片(&P)”,在名称框中输入Picture,创建了"插入"菜单的子菜单:"图片”。按照同样方法创建“文本框"子菜单。(5)单击钮,再单击4按钮,在标题框中输入〃横排(&H)”,在名称框中输入Horizon,即创建了"文本框"的下一级菜单:"横排”。用同样方法创建"文本框”的另一个子菜单:"竖排"。(6)单击安钮,再单击_^钮,在标题框中输入“-“,在名称框中输入Sep,创建了分隔条。(7)单击匕询城钮,在标题框中输入"文件",在名称框中输入File,创建一级子菜单“文件“。(8)单击Ir迪城钮,再单击亠帔钮,在标题框中输入"颜色”,在名称框中输入Color,创建了顶级菜单"颜色"。(9)仿照上面的步骤,创建"颜色”菜单的一级子菜单:"红色"”蓝色”和"绿色"o创建了各菜单项的菜单编辑器如图4.23所示。图4.23创建了各菜单项后的菜单编辑器(10)单击菜单编辑器上的"确定"按钮,生成了如图4.24所示的菜单栏。图4.24菜单设计窗体界面(11)在Forml窗体上添加文本框Textl,并将文本框的Text属性值清空,将ScrollBars属性设置为3-both,将MultiLine设置为True。代码设计单击工程资源管理器窗口中的"查看代码"按钮囹,打开代码编辑器窗口,编写如下程序代码:PrivateSubColor_Click()IfTextl.Text=""ThenRed.Enabled=FalseBlue.Enabled=FalseGreen.Enabled=FalseElseRed.Enabled=TrueBlue.Enabled=TrueGreen.Enabled=TrueEndIfEndSubPrivateSubRed_Click()Textl.ForeColor=vbRedEndSubPrivateSubBlue_Click()Textl.ForeColor=vbBlueEndSubPrivateSubGreen_Click()Textl.ForeColor=vbGreenEndSub§际和运行工程单击工具栏上的"保存”按钮口,分别以CDSJ(1).frm和CDSJ(1)-vbp保存窗体文件和工程文件。单击工具栏中的"启动”►按钮运行程序,在文本框中输入文字,检验效果。如果程序出现运行错误或者未达到预期效果,则请同学们根据第2章学习的程序调试方法,找找原因并改正。实验五鼠标MouseMove事件应用实验目的掌握鼠标有关事件的应用。实验内容我们上网浏览一些精彩的网页时,会经常看到一串五颜六色的字符或漂亮的图片尾随着鼠标不断移动。在VB程序中要实现这一功能非常容易,只需要一个MouseMove事件就可以了,本实验就是要学习这种编程技巧。实验步骤界面设计(1)新建一个标准工程,将Forml的Caption设置为"鼠标MouseMove事件应用"。(2)在Forml上放置f标签控件Labell,将其Caption设置为"欢迎进入VisualBasic世界"。代码设计在Forml的MouseMove事件中加入以下代码:PrivateSubForm_MouseMove(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)'随机改变Labell控件的前景色Labell.ForeColor=RGB(Rnd*255,Rnd*255,Rnd*255)'根据鼠标当前的X,Y坐标设置Labell控件的Top和Left属性Labell.Top=YLabell.Left=XEndSub运行效果运行程序你会发现,"欢迎进入VisualBasic世界"会随着鼠标的移动而移动,同时字体的颜色也会不断变化,如图5.9所示。图5.9鼠标MouseMove事件应用实验六word文件显示程序实验目的掌握驱动器列表框(DriveListBox)、目录列表框(DirListBox)和文件列表框(FileListBox)等文件系统控件的使用方法。昌掌握文件管理类应用程序的开发方法。实验内容本实验开发一个word文件显示程序,程序要完成的基本功能是,程序运行后选择磁盘,显示该磁盘下的文件夹,选择某文件夹下的word文件,单击"打开”按钮,在右侧显示word文件的内容。比如选择D盘,进入"VB教
材'已完实验"目录,在文件列表中选择"实验9网络应用程序设计.doc",然后单击打开按钮,将岀现如图6.5所示的结果。图6.5文件读写程序界面实验步骤界面设计(1)新创建一个标准工程,选择“工程,菜单中的“部件’,在弹出的"部件"对话框中选择“控件"选项卡(默认),将MicrosoftRichTextBoxControl6.0(或者其他可用的版本)前的复选框选中,单击“确定"按钮,将RichTextBox控件添加到工具箱中,我们将用这个控件显示RTF格式的Word文件。选择"工程”菜单中的"引用",在弹出的"引用-工程1”对话框中,将MicrosoftWordll.OObjectLibrary(或者其他可用的版本)前的复选框选中,单击"确定”按钮,添加Word应用程序对象。(2)在窗体上添加驱动器列表框、目录列表框、文件列表框、命令按钮和RichTextBox控件,它们的默认名分别是Dirl、Drivel.Filel.Commandl、RichTextBoxlo(3)将Commandl按钮,将它的Caption属性设置为"打开"。(4)将Filel控件的Pattern属性设置为"*.doc",表示只显示Word格式文件。代码设计PrivateSubDrivel_Change()Dirl.Path=Drivel.Drive 建立目录列表与驱动器列表的联动EndSubPrivateSubDirl_Change()Filel.Path=Dirl.Path 建立文件列表与目录列表间的联动EndSubPrivateSubCommandl_Click()'定义新的Word应用程序对象DimwdAppAsNewWord.Application'定义新的Word文档对象DimwdDocAsWord.DocumentDimstrFileNameAsString使用Word应用程序窗口隐含wdApp.Visible=False'读取当前在Filel文件列表中选中的文件全名strFileName=Filel.Path+"\"+Filel.FileName'在Word中打开文件SetwdDoc=wdApp.Documents.Open(strFileName)以RTF文件格式另存文件为"C:\临时文件.rtf'wdDoc.SaveAs"C:\临时文件rtf",6'关闭Word文档并退出Word应用程序wdDoc.ClosewdApp.Quit在RichTextBox控件中显示临时文件RichTextBoxl.FileName="C:\临时文件.rtf"'删除临时文件Kill"C:\IIS时文件.rtf・EndSub保存和运行程序程序运行结果如图6.5所示。实验七绘制图形程序实验目的掌握建立图形坐标系的方法。掌握VB图形控件和图形方法以及常见几何图形的绘制方法。实验内容本实验创建f绘制三角函数图形的程序,程序运行界面如图7.18所示,要求:(1)程序运行时单击"建立坐标系"按钮,画出坐标轴和坐标刻度。(2)单击"y=Sin(x)”按钮,在(-6.28,6.28)区间内绘制出正弦曲线。(3)单击"y=Cos(x)"按钮,在(-6.28,6.28)区间内绘制出余弦曲线。图7.18程序运行界面实验步骤实验步骤新建标准EXE工程,将默认窗体Forml的Caption属性改为"绘制三角函数图形",在窗体上添加3个命令按钮CommandsCommand2和Commands,将其Caption属性分别改为"建立坐标系""y=Sin(x)”和“y=Cos(x)",并技图7.18调整好位置。编写代码双击窗体上的“建立坐标系“按钮,进入代码编辑器窗口,在代码编辑区的Commandl_Click()中添加代码:'绘制坐标轴和坐标刻度PrivateSubCommandl_Click()CisForml.Scale(-8,2)-(8,-2) '用Scale方法定义坐标系Line(-7.5,0)-(7.5,0) '用Line方法画X轴Line(0,1.7)-(0f•1.7) '画Line方法画Y轴CurrentX=7.6:CurrentY=0.1:Print"X"标识X轴"X"CurrentY=0.5:CurrentY=1.8:Print"Y" '标识X轴Fori=-7To7Line(i,0)-(i,0.1) '在X轴上标记坐标刻度CurrentX=i-0.2:CurrentY=-0.1:PrintI '在X轴上输岀数字标识NextiFori=-1To1Ifi<>0ThenCurrentX=-0.7:CurrentY=i+0.1:PrintI 在Y轴上输出数字标识Line(0.5,i)-(0fi) 在Y轴上标记坐标刻度EndIfNextiEndSub'绘制正弦曲线PrivateSubCommand2_Click()CurrentX=-6.283:CurrentY=0 '曲线的起点坐标Fori=-6.283To6.283Step0.01x=i:y=Sin(i)Line-(x,y) '用Line方法绘制正弦曲线NextiCurrentX=2.5:CurrentY=1:Print"y=Sin(x)"输出y=Sin(x)EndSubPrivateSubCommand3_Click() 绘制余弦曲线DrawWidth=2 '设置线宽CurrentX=-6.283:CurrentY=1Fori=-6.283To6.283Step0.01x=i:y=Cos(i)
Line-(x,Line-(x,y)'绘制余弦曲线y)NextiCurrentX=-7:CurrentY=1.2:Print"y=Cos(x)n '输出y=Cos(x)EndSub运行程序,并单击“建立坐标系“按钮,即绘制岀坐标系,然后单击“y=Sin(x)""y=Cos(x)"按钮,分别绘制出正弦、余弦曲线。实验八网络下载程序实验目的我们在使用Internet时经常需要从网上下载(Download)一些资料,对于那些容量不大的文件,一般可以使用鼠标右击,然后从弹出菜单中选择"目标另存为"命令。对于那些容量较大的文件,多数情况下会使用一些具有断点续接功能的下载软件。其实这些流行的下载软件的原理并不复杂,利用Winsock控件,我们完全可以实现这类软件的核心功能。实验内容本实验开发一个简单的Internet下载软件。拟开发的程序思路E匕较简单,使用Winsock控件与服务器建立连接后,客户端计算机调用SendData方法发送特定的FTP命令瓣。当客户端接收数据时,Winsock控件会发生DataArrival事件,调用DataArrival事件内的GetData方法即可获取数据。程序虽然简单,但它却包含了下载软件的基本原理,同学们完全可以在本实验的基础上结合多线程和断点保存技术,开发出更加强大的网络下载程序,也许下f红遍南北的网络下载工具就是你的杰作。。实验步骤界面设计新建一个标准工程,在Forml上放置一个Winsock控件、一个Command命令按钮控件、一个TextBox控件即可,如图8.6所示。图8.6网络下载程序界面设计编写事件代码(1)Commandl命令按钮的Click事件代码。PrivateSubCommandl_Click()DimstrCommandAsStringDimstrWebPageAsString'设置连接的IP地址,请根据你的实验环境调整Winsockl.RemoteHost=n01"'设置连接的远程端口号Winsockl.RemotePort=80开蟾接远程计算机Winsockl.ConnectEndSub(2)Winsock控件事件。当Winsock控件连接操作完成,就可以传送FTP命令给服务器了,因此在Winsock控件的Connect事件中加入以下代码:PrivateSubWinsockl_Connect()'设置要下载的文件,请根闾尔的实验环境调整strWebPage="错误!超链接引用无效01/main.htm"'添加FTP中取得文件的命令(GET)strCommand="GET"+strWebPage+"HTTP/1.0"+vbCrLfstrCommand=strCommand+"Accept:*/*"+vbCrLfstrCommand=strCommand+"Accept:text/html"+vbCrLfstrCommand=strCommand+vbCrLf '必须以vbCrLf结束命令Winsockl.SendDatastrCommand向远程计算机发送命令EndSub当Winsock控件获取到数据时,需要对数据进行处理,将获取的内容显示在文本框控件中,因此在Winsock控件的DataArrival事件中加入以下代码:PrivateSubWinsockl_DataArrival(ByValbytesTotalAsLong)DimwebDataAsStringWinsockl.GetDatawebData,vbString '获取当前的数据块Textl.Text=Textl.Text+webData用文本框显示接收到的数据'同学们也可以将接收到的webData瓣以文件的形式保存EndSub同学们可以利用上述应用程序访问Internet上的国可WWW服务器,只要地址和端口号正确,程序均能成功运行。一般情况下,WWW服务器的端口号为80,FTP服务器的端口号为21。如果你无法得到Internet网站的IP地址,可直接使用网络的URL网址替代IP地址项。实验九进销存管理信息系统实验目的掌握利用SQL语句,通过ADO数据对象管理数据库的方法。顎解数据库实用程序的框架体系。3了解数据报表的制作方法。实验内容本实验主要开发一个"进销存"管理系统。要求同学们首先在SQLServer上创建名为"进销存"的数据库,并在该数据库上创建"物资台账""物资入库""物资出库”3张表。然后编写一个简单”进销存"数据库管理系统,它具有数据增加(Insert)、删除(Delete).修改(Update)和查询(Select)功能,并能将查询结果在计算屏幕和打印机上输出。实验步骤创建数据库在进行本实验之前,请同学们先根据表9.4、表9.5、表9.6在SQLServer上创建"进销存"数据库。如果你不具备SQLServer实验环境,也可以在Access数据库上完成创建工作。无论采用哪种数据库,程序设计过程和代码基本相同。表9.4物资台账表结构字段名类型长度备注物资编码Char4
物资名称Varchar10主关键字为"物资编码“在主关键字上创建聚集唯一索引3."物资编码”由4位组成,其中第1位使用英文字母表示物资类别,后3位使用数字表示流水号。物资类别如下:A表示钢笔类,B表示橡皮类计量单位Char2单价Money8期初库存Numeric9表9.5物资入库表结构字段名类型长度备注物资编码Char4在主关键字"物资编码"上创建聚集不唯一索引入库时间Datetime8入库数量Numeric9表9.6物资出库表结构字段名类型长度备注物资编码Char4在主关键字"物资编码”上出库时间Datetime8创建聚集不唯一索引出库数量 Numeric9同学们既可以利用SQLServer企业管理器,通过图形化界面完成数据库创建工作,也可以直接在SQLServer查询分析器中运行以下语句:■-创建"进销伊数据库容器CREATEDATABASE进销存GOUSE进销存GO--创建物资台账表CREATETABLE物资台账(物资编码char■⑷NOTNULL,物资名称varchar(10)NOTNULL,计量单位char(2)NOTNULL,单价moneyNOTNULL,期初库存numeric(18,0)NOTNULL)ON[PRIMARY]GO--创建物资入库表CREATETABLE物资入库(物资编码char(4)NOTNULL,入库时间datetimeNOTNULL,入库数量numeric(18,0)NOTNULL)ON[PRIMARY]GO--创建物资出库表CREATETABLE物资出库(物资编码char⑷NULL,出库时间datetimeNOTNULL,出库数量numeric(18,0)NOTNULL)ON[PRIMARY]GO根据业务逻辑书写SQL语句由于拟开发的应用程序具有对数据表的增加、删除、修改和查询4项基本功能,因此请同学们首先在实验报告上写出相应的SQL语句,比如:■-向物资台账表中新增数据INSERTINTO物资台账(物资编码,物资名称,计量单位,单价,期初库存)VALUESCA0017英雄牌钢笔',只,2.5,50)--修改物资台账表中现有数据UPDATE物资台账SET单价=3,期初库存=60WHERE物资编码='A001'■-删除物资台账表中现有数据DELETEFROM物资台账WHERE物资编码='A0011•-査询物资台账表中现有数据SELECT*FROM物资台账WHERE物资编码='A001'-(其他略,请同学们自己完成)程序界面设计(1)创建工程。新建一"标准EXE"工程,工程名为"进销存管理信息系统"O通过"工程-部件"或"工程-引用"菜单项添加ADO数据对象、工具条、MSFIexGrid等相关对象或控件,并按以下要求创建窗体,所有窗体的StartUpPosition属性均设置为:2-屏幕中心。
(2)创建主窗体(frmMain)。如图9.33所示,运用菜单技术、工具条技术创建窗体。窗体名frmMain,其他控件保留默认名称。图9.33主窗体(frmMain)运行界面(3)创建"物资台账管理"窗体(frm台账)。如图9.34所示,使用图片(PictureBox)、表格(MSFIexGrid)、命令按钮(CommandButton)控件,添加并设计"新增记录"窗体。窗体名为"frm台账",所有控件保留默认名称。图9.34”物资台账管理"窗体(frm台账)设计界面(4)创建"物资台账数据增加"窗体(frmAdd台账)。如图9.35所示,使用标签、文本框、组合框、命令按钮控件,添加并创建"物资台账数据增加"窗体。窗体名为"frmAdd台账”。其中Textl为控件数组,Textl(4)控件的Enable属性为False。另外,在Combol控件的List属性中输入一些常用的计量单位,比如"台""个""只”等,其他控件保留默认名称和设置。图935”物资台账数据增加"窗体(frmAdd台账)设计界面(5)创建"物资台账数据修改"窗体(frmUpdate台账)。如图9.36所示,使用标签、组合框、命令按$理空件,添加并创建"物资台账数据修改"窗体。窗体名为"frmUpdate修改"。其中Textl为控件数组,Textl(0)和Textl(4)(物资编码和期初金额)控件的Enable属性设置为False,其他控件保留默认名称和设置。
图9.36"物资台账数据修改"窗体(frmUpdate台账)运行界面(6)创建"物资台账数据查询"窗体(frmQuery台账)。如图9.37所示,使用标签、组合框、命令按钮控件,添加并创建"物资台账数据查询"窗体。窗体名为"frmQuery台账"。其中Textl为控件数组,ComboBox控件的Style属性为2-DropdownList。图9.37"物资台账数据查询"窗体(frmQuery台账)设计界面(7)创建"物资台账报表"窗体(frmReport台账)。通过"工程-添加DataReport"菜单项添加报表窗体,命名为"frmReport台账"。按下列步骤完成设计工作(如图9.38所示):图9.38"物资台账”报表窗体设计界面在报表标头、页标头部分添加rptLabel控件,并修改它们的Caption属性。在细节部分添加rptTextBox控件,并修改它们的DataField属性。添加rptLine控件。(8)按上述(3)-(7)步的方法创建"物资入库管理""物资岀库管理"界面。代码设计(1)添加Module模块,编写Main过程:'声明全局对象变量ADOcn,用于创建与数据库的连接PublicADOcnAsConnection,声明全局变量strQueryl用于存储查询条件PubicstrQuerylAsStringPublicSubMainQ,定义数据库连接字符串DimstrSQLServerAsString'用于连接SQLServer数据库,其中:'Server为服务器名称'UserID为登录账号,Password为登录口令'Database为具体的数据库名'请根据具体的实验环境修改这些参数strSQLServer="Provider=SQLOLEDB;Server=bigdog;Us_erID=sa;Password=sa;Database=i2t§^"'连接SQLServer数据库ADOcn.OpenstrSQLServer'显示主窗体frmMain.ShowEndSub将Main过程设为工程启动对象。(2)FrmMain窗体主要代码。该窗体的代码主要用于调度其他各窗体,起串接作用。PrivateSubToolbarl_ButtonClick(ByValButtonAsMSComctlLib.But_ton)SelectCaseButtonCase"物资台账管理"frm台账.Show1Case"物资入库管理"frm入库.Show1Case"物资出库管理"frm出库.Show1Case"退出系统"UnloadMe'或者使用End命令EndSelectEndSub(3)Mfrm台账”窗体代码。“通用“部分声明一个Sub过程,用于在MSFIexGrid中显示记录。PrivateSubDisplayGrid()'声明变量DimstrGridAsStringDimiAsIntegerDimADOrsAsNewRecordsetADOrs.ActiveConnection=ADOcn打开物资台账IfstrQueryl<>""ThenADOrs.Open"Select*From物资台账Where"+strQueryl+-OrderBy物资编码”ElseADOrs.Open"Select*From物资台账orderby物资编码"EndIf'设置MSFIexGrid控件的表头MSFIexGridl.ClearMSFIexGridl.Rows=0MSFIexGridl.Cols=6strGrid="物资编码.+vbTab+"物资名称”+vbTab+■计量单位"+vbTabstrGrid=strGrid+"单价-+vbTab+"期初库存"+vbTab+"期初金额“i=0庇第i行增加一列MSFIexGridl.AddltemstrGrid,i'通过循环显示表中所有记录DoWhileNotADOrs.EOFstrGrid=ADOrs("物资编码")+vbTab+ADOrsC•物资名称。+vbTab+ADOrs("计量单位”)strGrid=strGrid+vbTab+Str(ADOrs("单价"))+vbTab+Str(ADOrs(”期初库存"))strGrid=strGrid+vbTab+Str(ADOrs("单价。)*ADOrs(■期初库存"))MSFIexGridl.AddltemstrGrid,iADOrs.MoveNext指针下移f记录i=i+1LoopMSFIexGridl.Rows=i+1MSFIexGridl.FixedRows=1MSFIexGridl.FixedCols=1EndSubPrivateSubForm_Load()'设置查询条件变量的初值strQueryl=""ExitSubExitSubExitSubExitSub'显示物资台账记录DisplayGridEndSubPrivateSubCommandl_Click()'调用增加记录窗体FrmAdd台账.Show1DisplayGridEndSubPrivateSubCommand2_Click()删除f己录DimstrSQLAsStringDimiAsInteger'取当前光标所在行i=MSFIexGridl.Row'取当前行的第0列单元值,即物资编码列IfMSFIexGridl.TextMatrix(i,0)=""ThenMsgBox"请先选择一个记录!",vbQuestion+vbOKOnly,"信息提EndIfEndIfEndSubEndSubEndIfEndIfEndSubEndSubEndIfEndIfExitSubExitSubstrSQL="DeleteFrom物资台账"strSQL=strSQL+"Where物资编码+MSFIexGridl.TextMatr ix(i,0)+IfMsgBox(H是否要删除?",vbQuestion+vbOKCancel,"信息提示")=vbOKThenADOcn.ExecutestrSQL'执行删除操作EndIf'重新显示DisplayGridEndSubPrivateSubCommand3_Click(),调用修改记录窗体DimiAsIntegeri=MSFIexGridl.RowIfMSFIexGridl.TextMatrix(i,0)=""ThenMsgBox"请先选择一记录!",vbQuestion+vbOKOnly,"信息提示"'对frmUpdate台账窗体赋值WithfrmUpdate台账.Textl(O)=MSFIexGridl.TextMatrix(i,0).Textl⑴=MSFIexGridl.TextMatrix(i,1).Combol.Text=MSFIexGridl.TextMatrix。2).Textl(2)=MSFIexGridl.TextMatrix(i,3).Textl(3)=MSFIexGridl.TextMatrix(i,4).Show1EndWith'修改完后重新显示DisplayGridEndSubPrivateSubCommand4_Click(),调用设置查询条件窗体FrmQuery查询.Show1,设置完查询条件后重新显泊己录DisplayGridEndSubEndSubPrivateSubCommand5_Click()'调用打印报表窗体DimADOrsAsNewRecordsetADOrs.ActiveConnection=ADOcnIfstrQueryl<>""ThenADOrs.Open"Select*From物资台账Where"+strQueryl+"OrderBy物资编码"ElseADOrs.Open"Select*From物资台账OrderBy物资编码"EndIf'设置报表窗体的DataSource和DataMember属性SetfrmReport台账.DataSource=ADOrs.DataSourceFrmReport台账.DataMember=ADOrs.DataMemberFrmReport台账.Show1EndSubPrivateSubCommand6_Click()'退出本窗体UnloadMe(4)"frmAdd台账”窗体代码。PrivateSubCommandl_Click()DimstrSQLAsStringDimADOrsAsNewRecordsetSetADOrs.ActiveConnection=ADOcn'首先查询主关键字"物资编码”是否重复ADOrs.Open"Select物资编码From物资台账Where物资编码=,M+Textl(O)+叶NotADOrs.EOFThenMsgBox"物资编码已存在,请重新输入",vbQuestion+vbOKOnly,"信
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论