课程综合设计报告
目录
一、课程的主要目标. 1
二、课程设计的介绍. 1
三、课程设计的主要功能. 1
1、窗体一(Form1) 1
2、窗体二(Form2) 2
四、课程设计的主要特色. 2
五、功能扩展设想. 3
六、设计过程中遇到的主要问题及解决方法. 3
七、课程设计的主要分工. 4
正 文
一、课程的主要目标
为了增加学习的乐趣,调动大家的积极性,我们组讨论后最终决定制作一个小游戏,名字是“大家一起来找茬”,这个课程的目标是熟练掌握各种控件的作用,体验程序设计的基本思想方法,实践与理论的结合,在设计过程中自己发现问题,提出问题,解决问题,实现知识的迁移,循序渐进,由繁到简。在设计过程中,我们充分得体会到了知识的欠缺与不熟练,但是通过这次学习,我们能够对基本的语句灵活运用,掌握了上机调试程序的基本技能。总而言之,通过这次设计,我们充分地了解到了自己的不足,并且有克服困难的决心,最后圆满的完成了我们最初的设想。
二、课程设计的介绍
我们组的设计是一款很简单的小游戏---大家一起来找茬。
这个游戏就是找出两幅图的不同处,用鼠标点击左边图片的不同处,便会出现一个笑脸的图片,表示选正确了。游戏共设置了4关卡。5个窗体,后4个窗体是雷同的,只是两张图片不同。
三、课程设计的主要功能
1、窗体一(Form1)
其中有5个标签,1个时钟控件,1个文本框
文本框(Text1):输入选择的关卡。
Label4(GO):单击Label4(GO)时,便进入您所选择的关卡。关卡只能是1-4,否则弹出“输入关卡有误,请重新输入!”卸载某些image中装载的笑脸图片。
Label3(退出):结束游戏。
Label5(游戏说明):单击Label5(游戏说明)时,会弹出“找出两幅图的不同处,点击左边的图片不同处。时间共60秒!”并且,Label5(游戏说明)会变红、绿、蓝三种颜色,用Timer1控制时间,使其1秒变一次色。变色时为了引起游戏玩家的注意,同时使窗体更美观。
2、窗体二(Form2)
其中有6个图像,2个时钟控件,4个标签,1个文本框,3个命令按钮
图像(image1--image6):①Image1为对照图片,已装载 。
② Image2--image6未装载图片,当玩家点击时,装载笑脸图像,表示正确。若规定时间内最后在image2处找到不同,即text1的值为0,则提示为“恭喜您通过第一关,进入下一关”;若为image3,则提示为“过关了耶,THE NEXT”;若image4,则为“恭喜您通过第一关,进入下一关,噶吗爹”;若image5,则“( ^_^ )不错嘛,继续加油”;若image6,则“COME ON,THE NEXT”。
时钟控件:①Timer1控制剩余秒数的label3红~绿~蓝颜色变化。
②Timer2控制时钟的倒计时,为零且玩家未找到所有不同处时提示“时间 已到!失败是成功的妈妈,加油!”。
标签:①label1(剩余不同数)与 label2(剩余时间)起提醒作用。
②Label3的标题为剩余时间秒数,且有红~绿~蓝的1秒间隔变化。
③Label7为标题是“大家来找茬”的橙色背景标签,当玩家单击command2(暂停)时, 其可见性为false;单击command3(继续)时,其可见性为true。
文本框(text1):内容为玩家在图片处未找到的剩余不同数,为零时有提示,详见image2——image6处介绍。
命令按钮:①command1(退出)单击则窗体二卸载,返回至窗体一;窗体一的text1(可选择关卡数值)内容清空,且获得焦点,可重选关卡。
②Command2(暂停)单击则暂停计时,使label7的可见性为真,6个image的可见性为假,则此时窗体二显示为“大家来找茬”的标签。
③Command3(继续)单击则继续计时,且label7的可见性为假,6个image的可见性为真,则此时玩家可继续玩游戏。
四、课程设计的主要特色
通过本程序的设计,一方面此课程设计可应用于幼儿开发智力,生动有趣的图片、动感有力的游戏音乐,无论在视觉还是听觉上都会给人一种有活力有朝气的享受;另一方面组员得到了一定的锻炼,当前社会更加注重大学生的实践能力,大学生的综合素质尤为重要。在商业经济高度发展的今天,企业需要的是理论知识与实践经验完备的人才,因此作为时代的新秀,大学生十分有必要抓住在校的有效时间,积极锻炼自己提高综合素质。在提高学生学习主动性积极性的同时,使学生通过学习体会进一步提升自己的各方面能力和价值观念。而本次课程设计正契合这一前提,通过这一实践学生搭建一条理论知识与实践经验结合的桥梁,从而进一步完备学生的能力和综合素质。组员们通过课程设计修改及应用,较好地提高了自身的计算机能力、综合素质等。
五、功能扩展设想
只是单找图片的不同之处,可能显得比较单调,于是小组成员认为可以加入一些元素。比如:可以加入商店,道具,奖励类,当在游戏过程中有时间限制将到,但不同处仍未找到时,可以加时,或提供帮助,对此,又可以在前面的所得到的奖励中相互抵消。当然,这些扩展都可在商店中实现。就“大家来找茬”游戏本身,小组虽是经一番努力才完成,或许玩家玩了一,两遍后就会感到很无聊。对此,小组一致认为可以多加些关卡,,并以随机形式出现,使得游戏的趣味性和复杂性得以增加。
六、设计过程中遇到的主要问题及解决方法
在编程过程中我们先把大体的代码写出来,然后反复运行,找出不足,再修改。主要遇到两个问题。一是,把装载到image中的图片再卸载下来。二是,加入声音时不会申明变量。经过查阅书籍和网上查找知道“set image1.picture=Nothing”可以卸载image中的图片。还有,有”playsound”语句时要先声明变量“Private Declare Function PlaySound Lib "winmm.dll" Alias "PlaySoundA" (ByVal lpszName As String, ByVal hModule As Long, ByVal dwFlags As Long) As Long”
七、课程设计的主要分工
第二篇:VB程序设计实验要求及报告6
上海立信会计学院本科实验报告
班级: 学号: 姓名: 指导教师:
系部: 专业: 实验时间:
实验6 列表框、组合框与过程
一、 实验目的
1. 掌握列表框和组合框的使用
2. 掌握自定义函数过程和子过程的定义和调用方法
3. 掌握形参和实参之间的对应关系
4. 掌握值传递和地址传递的传递方式
二、实验要求
1. 在C:\下建立子文件夹“VB实验6”,按照题目要求,在该文件夹下为各题保存相应的文件,如本实验中的第一题,需保存的文件有:工程文件(61.vbp)、窗体文件(61.frm) 及可执行文件(61.exe),本实验中的第二题,需保存的文件有:工程文件(62.vbp)、窗体文件(62.frm) 及可执行文件(62.exe),其余实验依此类推。
2. 撰写实验过程中出现了哪些问题、错误,你是如何解决的,做一个小结。
三、 实验内容:
1. 设计一个选课的运行界面,如图6-1(a)所示。它包含2个列表框,左边为可供选择的课程名称,通过Form_Load事件加入,并按拼音字母顺序排序;当单击某门课程名称后,将该课程加入到右边的列表框中,并在左边列表框中删除该课程。当右边课程数已满5门时,不允许再加入并出现如图6-1(b)所示的提示。窗体及所有控件字体默认、大小均为小四。
图6-1 (a) 图6-1 (b)
Private Sub Form_Load()
List1.AddItem "C/C++程序设计 "
List1.AddItem "VB程序设计 "
List1.AddItem ""数据库数据与应用
List1.AddItem "硬件技术基础"
List1.AddItem "Web程序设计"
List1.AddItem "多媒体技术与应用"
List1.AddItem "网络技术与应用"
List1.AddItem "软件技术基础"
List1.AddItem "大学计算机基础"
End Sub
Private Sub List1_Click()
If List2.ListCount < 5 Then
List2.AddItem List1.Text
List1.RemoveItem List1.ListIndex
Else
MsgBox "超过5门功课,不能再选", , "信息提示"
End If
End Sub
2. 在窗体上建立一个简单组合框,在组合框的文本区输入数字字符,按回车键后加入到组合框的列表区内(非数字则不加入),然后清空文本区,如图6-2(a)所示;单击“交换”按钮后,可将组合框列表区中最小值项目和第0个项目交换;最大值项目与最后项交换, 如图6-2(b)所示。窗体中所有控件字体默认大小。
图6-2(a) 图6-2(b)
Private Sub Combo1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
If IsNumeric(Combo1.Text) Then
Combo1.AddItem Combo1.Text
End If
Combo1.Text = ""
End If
End Sub
Private Sub Command1_Click()
Dim i%, min%, max%, x%
min = 0
For i = 1 To Combo1.ListCount - 1
If Val(Combo1.List(i)) < Val(Combo1.List(min)) Then min = i
Next
x = Combo1.List(0)
Combo1.List(0) = Combo1.List(min)
Combo1.List(min) = x
max = Combo1.ListCount - 1
For i = 0 To Combo1.ListCount - 2
If Val(Combo1.List(i)) > Val(Combo1.List(max)) Then max = i
Next
x = Combo1.List(Combo1.ListCount - 1)
Combo1.List(Combo1.ListCount - 1) = Combo1.List(max)
Combo1.List(max) = x
End Sub
3. 设计一个点菜程序,当单击“添加到我点的菜单中”按钮时,将组合框“饭店菜单”中选中的菜添加到列表框“我点的菜”中,当单击“添加到饭店菜单中”按钮时,可以将文本框中输入的菜单名添加到组合框“饭店菜单”中,如已存在将不重复添加。要求:设计窗体界面,窗体中所有控件字体默认、大小为小四,并设计代码,初始时文本框、列表框、组合框内容均为空。
图6-3
Private Sub Command1_Click()
Dim i%, flag As Boolean
flag = False
For i = 0 To List1.ListCount - 1
If List1.List(i) = Combo1.Text Then
flag = True
Exit For
End If
Next i
If flag = False Then List1.AddItem Combo1.Text
End Sub
Private Sub Command2_Click()
Dim i%, flag As Boolean
flag = False
For i = 0 To Combo1.ListCount - 1
If Combo1.List(i) = Text1.Text Then
flag = True
Exit For
End If
Next i
If flag = False Then Combo1.AddItem Text1.Text
End Sub
4. 编写一个子过程ProcMin(a(),amin),求一维数组a中的最小值amin。要求主调程序在随机产生10个-300 ~ -400之间的数,在窗体上显示所产生的数组中的各元素,通过Form_Load事件加入;调用ProcMin(a(),amin)过程,在窗体上显示数组中的最小值。窗体中所有控件字体默认、大小为小四,效果如图6-4所示。
图6-4
Private Sub Form_Load()
Dim min%, i%
Dim s%(1 To 10)
Randomize
Print "数组中的各元素:";
For i = 1 To 10
s(i) = Int(Rnd * (-101) - 300)
Print s(i);
Next
Call ProcMin(s, min)
End Sub
Public Sub ProcMin(a%(), aMin%)
Dim i!
aMin = a(LBound(a))
For i = LBound(a) + 1 To UBound(a)
If a(i) < aMin Then aMin = a(i)
Next
Print "数组中的最小值是:"; aMin
End Sub
5. 编写一个自定义函数过程MySin(x),求:。当第n项的值小于|10-5|时结束,x为弧度。主调程序同时调用MySin(x)函数和内部函数Sin(x),计算x=2时的函数值。要求:通过单击按钮事件在窗体上显示结果,进行比较验证,窗体中所有控件字体默认、大小为小四,效果如图6-5所示。
图6-5
Option Explicit
Public Function Mysin#(x#, eps#)
Dim n%, t#
n = 1
Mysin = 0
t = (-1) ^ (n - 1) * x ^ (2 * n - 1) / Fac(2 * n - 1)
Do While (Abs(t) > eps)
Mysin = Mysin + t
n = n + 1
t = (-1) ^ (n - 1) * x ^ (2 * n - 1) / Fac(2 * n - 1)
Loop
End Function
Public Function Fac#(m%)
Dim i%
Fac = 1
For i = 1 To m
Fac = Fac * i
Next i
End Function
Private Sub Command1_Click()
Print "调用自定义函数 Mysin(2)求正弦函数值 ="; Mysin(2, 0.00001)
Print "当调用 VB标准函数 Sin(2)求正弦函数值 ="; Sin(2)
End Sub
6. 如果一个整数的所有因子(包括1,但不包括它本身)之和与该数相等,则称这个数为完数。如6=1+2+3,所以6是一个完数。编写一个函数IsWs(m),判断m是否为完数,函数的返回值是逻辑型。主调程序在窗体上输出1000以内所有的完数,通过Form_Load事件加入,窗体中所有控件字体默认、大小为小四,效果如图6-6所示。
图6-6
Private Sub Form_Load()
Dim sum%, out1$, m%, j%
Print "1000以内的完数为: "
For m = 2 To 1000
If IsWs(m, out1) Then Print m & "=" & out1
Next
End Sub
Private Function IsWs(m%, out2$) As Boolean
Dim sum%, j%
IsWs = False
sum = 1
out2 = "1"
For j = 2 To Int(m / 2)
If m Mod j = 0 Then sum = sum + j: out2 = out2 & "+" & j
Next
If m = sum Then IsWs = True
End Function
四、 实验过程中的问题、错误,解决方法,总结、体会、建议。