VB程序设计报告
学院土木工程
专业工程管理
班级1102
学号 201102938
姓名若笔奇诺
一、课程设计题目 成绩计算模拟系统
二、课程设计工作自20##年5月15日起至2012 年6 月1 日止。
三、课程设计 地点: 兰州交通大学
四、课程设计内容要求:
1.本课程设计的目的
1. 综合Visual Basic相关知识制作简单的可视化应用程序
2. 灵活对程序代码进行利用,修改和编写;
3. 熟练将Visual Basic所学知识和其它知识相结合
2.课程设计的任务及要求
1)基本要求:
1、目的是进一步培养学生综合应用VB的各种编程知识和技巧进行程序设计的能力。
通过课程设计,学生能达到具备设计功能较为复杂的Windows应用程序的能力。
2、窗体界面不限。
3、使用菜单、数组、文件操作、图形操作等制试点。
4、对运算结果的正、误分析原因。
2)课程设计编写要求
(1)要按照书稿的规格打印誊写程序设计。
(2)程序设计装订按学校的统一要求完成
3)参考文献:
1:《Visual Basic程序设计教程》
2:《Visual Basic程序设计教程》(第二版)
3:《新编Visual Basic程序设计教程》
一、开发简介
(一)背景
本学期系统学习了VB程序设计课程,按照惯例,在学期结束时进行VB程序设计课程软件的开发,也就是本次课程设计。
(二)课题名称
这次课程设计的课题为:成绩计算模拟系统
(三)开发工具及开发环境
开发工具:Microsoft Visual Basic 6.0
开发环境:Windows 7
二、开发流程二、开发流程
本次数据库课程设计采用一般数据库开发的流程:
其中软件设计部分采用的流程:
三、需求分析
通过本成绩计算模拟系统用户能随时计算学生成绩,评出优良及及格人数,班级平均分。本系统既面向教师,也面向广大学生,界面简洁,人性化可操作性强。
四.软件展示及详情
1.开始界面
2.点击“进入”后的界面(1)
该界面对应程序:
Private Sub Command1_Click()
Dim counter As Integer
Dim workarea(25000) As String
ProgressBar1.Min = LBound(workarea)
ProgressBar1.Max = UBound(workarea)
ProgressBar1.Visible = True
ProgressBar1.Value = ProgressBar1.Min
For counter = LBound(workarea) To UBound(workarea)
workarea(counter) = "initial value" & counter
ProgressBar1.Value = counter
Next counter
Form1.Hide
Form2.Show
End Sub
Private Sub Command2_Click()
End
End Sub
Private Sub Form_Load()
Form1.Caption = "成绩计算模拟系统"
Command1.Caption = "进入"
Command2.Caption = "退出"
End Sub
3.点击“进入”后的界面(2)
该界面对应程序:
Private Sub B_Click()
Form2.Hide
Form1.Show
End Sub
Private Sub C_Click()
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
Text4.Text = ""
Text5.Text = ""
End Sub
Private Sub Command3_Click()
该界面对应程序:
Private Sub Command1_Click()
Dim counter As Integer
Dim workarea(25000) As String
ProgressBar1.Min = LBound(workarea)
ProgressBar1.Max = UBound(workarea)
ProgressBar1.Visible = True
ProgressBar1.Value = ProgressBar1.Min
For counter = LBound(workarea) To UBound(workarea)
workarea(counter) = "initial value" & counter
ProgressBar1.Value = counter
Next counter
Form1.Hide
Form2.Show
End Sub
Private Sub Command2_Click()
End
End Sub
Private Sub Form_Load()
Form1.Caption = "成绩计算模拟系统"
Command1.Caption = "进入"
Command2.Caption = "退出"
End Sub
该界面对应程序:
Private Sub B_Click()
Form2.Hide
Form1.Show
End Sub
Private Sub C_Click()
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
Text4.Text = ""
Text5.Text = ""
End Sub
Private Sub Com
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
Text4.Text = ""
Text5.Text = ""
End Sub
End Sub
Private Sub E_Click()
End
End Sub
Private Sub Form_Load()
Timer1.Interval = 1000
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
Text4.Text = ""
Text5.Text = ""
Command1.Caption = "输入成绩"
Command3.Caption = "清空"
Label1.Caption = " 最低分"
Label2.Caption = "最高分"
Label3.Caption = "平均分"
Label4.Caption = "及格人数"
Label5.Caption = "优秀人数"
End Sub
4.点击“输入成绩”后的界面
该界面对应程序:
Private Sub Command1_Click()
Dim val(1 To 10) As Integer
Dim pass%, good%, i%, j%, temp%, sum%
For i = 1 To 10
val(i) = InputBox("请输入第" & i & "个学生的成绩:", "请输入成绩")
sum = sum + val(i)
If val(i) > 59 Then pass = pass + 1
Next i
For i = 1 To 10
For j = i + 1 To 10
If val(i) > val(j) Then
temp = val(i): val(i) = val(j): val(j) = temp
End If
Next j
Next i
Text1 = Format(val(1), "0.00")
Text2 = Format(val(10), "0.00")
Text3 = Format(sum / 10, "0.00")
Text4 = pass
Text5 = good
End Sub
Private Sub Command2_Click()
Form2.Hide
Form1.Show
End Sub
Private Sub S_Click()
Dim val(1 To 10) As Integer
Dim pass%, good%, i%, j%, temp%, sum%
For i = 1 To 10
val(i) = InputBox("请输入第" & i & "个学生的成绩:", "请输入成绩")
sum = sum + val(i)
If val(i) > 59 Then pass = pass + 1
If val(i) > 89 Then good = good + 1
Next i
For i = 1 To 10
For j = i + 1 To 10
If val(i) > val(j) Then
temp = val(i): val(i) = val(j): val(j) = temp
End If
Next j
Next i
Text1 = Format(val(1), "0.00")
Text2 = Format(val(10), "0.00")
Text3 = Format(sum / 10, "0.00")
Text4 = pass
Text5 = good
End Sub
Private Sub Timer1_Timer()
Static PickBmp As Integer
If PickBmp = 0 Then
Image1(0).Picture = Image2(0).Picture
Image1(1).Picture = Image2(1).Picture
Image1(2).Picture = Image2(2).Picture
Image1(3).Picture = Image2(3).Picture
Image1(4).Picture = Image2(4).Picture
PickBmp = 1
Else
Image1(0).Picture = Image3(0).Picture
Image1(1).Picture = Image3(1).Picture
Image1(2).Picture = Image3(2).Picture
Image1(3).Picture = Image3(3).Picture
Image1(4).Picture = Image3(3).Picture
PickBmp = 0
End If
End Sub
5.计算成绩结果界面
五.特别说明
1.本程序只是模拟系统,所以只做了输入是个同学的成绩。
2.由于本人疏忽,最后没有将“command2”改为“返回”,这也是这个程序的一个不足之处。
六.经验总结
经过本次课程设计,我对软件工程项目开发中的项目制定、开发流程、整体统筹等方面有了一定的了解和提高。对于VB程序设计、编程通过理论结合实践也有了更深层次的理解。这次课程设计,给我印象非常深刻的地方有以下几点:
1.统筹规划,严格按照数据库管理软件的开发流程来进行开发,使软件开发过程中未出现严重问题。整个开发过程,需求分析占用了一半的时间,使软件设计构架比较合理,而代码编辑和软件测试占用了另一半时间。这种时间安排我认为比较合理,比较满意。
2.资料查找,设计一个软件,需要大量的相关资料,为了本次课程设计我在网上和图书馆查阅了大量资料,不断的发现问题、提出问题、解决问题。
3.程序员需要灵活的头脑思维和敏锐的嗅觉。在编程和调试的过程中,经常会出现意想不到的问题,并非每个问题都可以从相关资料中找到解决方法,有些问题是无法预料到的。这就需要通过自己理性的分析得出问题的解决方案。
通过这次课程设计,使我对数据库开发和软件开发产生了极大的兴趣,我想我会在这条路上继续前进下去。我相信,只要不断以程序员的标准严格要求自己,注意培养自己的思维能力,就一定会有更大更辉煌的发展和提高
4. 通过一学期的学习,本人已对VB 可视化编程工具有了一个基本的了解,为今后从事大型软件的开发积累了经验。
第二篇:VB课程设计报告样例
南 京 理 工 大 学
能源与动力工程学院
VB课程设计报告
题目1: 贪吃蛇游戏
题目2: 列车时刻查询
指导老师: 张小兵
学生姓名: 学 号:
专 业:
班 级: 10083201
20##年3月20日
《VB程序设计》课程设计任务书
题目:
用VB语句实现贪吃蛇游戏
任务与要求:
程序能够实现简单的贪吃蛇游戏,保证软件可正常运行。
时间:2011 年 2 月 22 日 至 2011 年 3 月 13日 共 3 周
学生姓名: 马帅 学 号: 1008320126
专业: 武器系统与发射工程
指导教师: 张小兵
20##年3月 20日
贪 吃 蛇 游 戏
第一章 课程设计目的
随着学习内容的不断增多,各专业知识也不断增长,为了有效地提高学习效率,更有效的掌握所学知识,利用所学知识设计贪吃蛇游戏,熟练运用专业知识。本课题主要锻炼了对于控件数组,绘图,键盘事件处理,文本文件的读写,多模块程序设计,定时器控件,菜单的使用等知识的运用能力。
第二章 课程设计的要求
题目介绍:
“贪吃蛇”是一款很流行的电子游戏。一条蛇在棋盘状的格子上爬行,由键盘控制其转弯;格子上随机地出现5个数字(1-5),当蛇的头部碰到数字时会将数字“吃掉”,蛇的身体会变长。当蛇的头撞到障碍物(深色部分)或碰到自己身体时,游戏结束。游戏结束时,蛇身越长得分越高。
课程设计功能要求:
(1)程序启动界面由20*20个方格构成。开始时,蛇静止不动,蛇身由一串共5个圆圈表示,身体黄色,代表头部的圆圈为红色,且有两只绿眼睛。
(2)按回车键开始游戏,蛇自动向前爬行,用户使用“←↑↓→”4个方向键使其拐弯不至于碰到障碍物或自己。蛇只能向前走或向左右转90度的弯,不能后退。吃掉一个数字后,蛇的身体的幅度与数字的大小相同。例如,吃掉“3”后,蛇身伸长3个圆圈。蛇身体的伸长不是一下子完成的,而是在吃掉数字后一边爬行一边伸长的,这样是为了避免蛇的“尾巴”突然伸长撞到障碍物或蛇自己。
(3)5个数字(1 -5)的位置是随机的,互不重叠的,且不能出现在障碍物和蛇的身上。当蛇吃掉一个数字时,同样的数字随机的出现在其他位置上,即格子上总保持有“1-5”5个数字。
(4)游戏进行时,窗口标题栏上显示出已使用的时间和得分,得分是当前蛇身体的长度。使用回车键可以暂停或继续游戏。
(5)蛇在爬行到边界时,如果未遇到障碍物,会从一侧爬出再从对面一侧爬入。如果运行过程中,其头部碰到障碍物或自己的身体,则被撞死,游戏结束。如果该用户的成绩超过了记录成绩,则显示对话框,提示输入用户名,以供记录成绩由“排行榜”功能显示。
(6)通过程序菜单的“开始/暂停(回车)”命令,也可以暂停或继续游戏(与回车键功能相同)。选择“新开局”菜单项可以从头开始游戏。
(7)选择“设置”菜单命令,打开设置对话框。在该对话框中可以选择不同的障碍物形状,也可以指定背景和障碍物的颜色。单击“设置”对话框底部的“背景颜色”和“障碍物颜色”后面的颜色区,弹出“颜色”公共对话框来指定颜色。设置完毕后,单击“确定”按钮关闭“设置”对话框,游戏将按所选形状从头开始游戏。下一次启动程序,自动使用上次的设置。
(8)选择“排行榜”菜单命令打开“排行榜”对话框,显示每种障碍物下的最好成绩。选择“清除所有记录”按钮可将记录清零。
第三章 课程设计报告内容
一.贪吃蛇游戏界面
主窗体界面:
“帮助”窗体界面:
“设置”窗体界面:
“排行榜”窗体界面:
“关于”窗体界面:
二.贪吃蛇游戏部分代码
主窗体的部分代码:
'为所有随机出现的的数字定位:
Sub ShowNumberAll()
Dim i As Integer, j As Integer
Dim k As Integer, m As Integer, l As Integer
Dim f As Boolean
Randomize
For m = 1 To 5
Do
i = Int(Rnd * 20)
j = Int(Rnd * 20)
'判断数字出现的位置是否合理
f = True
For k = 1 To intNum '判断是否出现在蛇身上
If i = Int(shp(k).Left / GRID) And j = Int(shp(k).Top / GRID) Then
f = False
Exit For
End If
Next
If f = True Then
For k = 1 To m - 1 '判断是否出现在已有的数字上
If i * GRID = lblNumber(k).Left And j * GRID = lblNumber(k).Top Then
f = False
Exit For
End If
Next
End If
If f = True Then
For k = 1 To 20 '判断是否出现在障碍物上
For l = 1 To 20
If Maze(j + 1, i + 1, curMaze) = 1 Then
f = False
Exit For
End If
Next
Next
End If
If f = True Then
Exit Do
End If
Loop
AppleX(m) = i
AppleY(m) = j
lblNumber(m).Left = AppleX(m) * GRID
lblNumber(m).Top = AppleY(m) * GRID
Next
End Sub
'为指定的数字定位:
Sub ShowNumber(m As Integer)
Dim i As Integer, j As Integer
Dim k As Integer, l As Integer
Dim f As Boolean
Randomize
Do
i = Int(Rnd * 20)
j = Int(Rnd * 20)
' 判断数字出现的位置是否合适
f = True
For k = 1 To intNum
If i = Int(shp(k).Left / GRID) And j = Int(shp(k).Top / GRID) Then
f = False
Exit For
End If
Next
If f = True Then
For k = 1 To 5
If i * GRID = lblNumber(k).Left And j * GRID = lblNumber(k).Top Then
f = False
Exit For
End If
Next
End If
If f = True Then
For k = 1 To 20 '判断是否出现在障碍物上
For l = 1 To 20
If Maze(j + 1, i + 1, curMaze) = 1 Then
f = False
Exit For
End If
Next
Next
End If
If f = True Then
Exit Do
End If
Loop
AppleX(m) = i
AppleY(m) = j
lblNumber(m).Left = AppleX(m) * GRID
lblNumber(m).Top = AppleY(m) * GRID
End Sub
'画蛇:
Private Sub DrawSnake()
Dim i As Integer
intNum = 5 '初始段数
ReDim intDirect(5)
intDirect(1) = MazeInfo(3, curMaze)
shp(1).Left = GRID * (MazeInfo(2, curMaze) - 1) '蛇头位置
shp(1).Top = GRID * (MazeInfo(1, curMaze) - 1)
For i = 2 To intNum '加载新节点并确定其相对于头部的位置
Load shp(i)
shp(i).FillColor = vbYellow
shp(i).Left = shp(i - 1).Left
shp(i).Top = shp(i - 1).Top
Select Case MazeInfo(3, curMaze)
Case enmRight
shp(i).Left = shp(i - 1).Left - GRID
Case enmLeft
shp(i).Left = shp(i - 1).Left + GRID
Case enmDown
shp(i).Top = shp(i - 1).Top - GRID
Case enmUp
shp(i).Top = shp(i - 1).Top - GRID
End Select
shp(i).Visible = True
intDirect(i) = MazeInfo(3, curMaze) '默认运动方向
Next
Call DrawEye
End Sub
Private Sub DrawMaze()
Dim i As Integer, j As Integer
For i = 1 To 20
For j = 1 To 20
If Maze(i, j, curMaze) = 1 Then
Pic.Line ((j - 1) * GRID + 2, (i - 1) * GRID + 2)-(j * GRID - 2, i * GRID - 2), lngMazeColor, BF
End If
Next
Next
End Sub
第四章 总结及个人心得体会
存在的不足:
在玩此游戏时,一不小心就可能将蛇“撞死”,本程序不能够添加“多条命”,即不能够允许蛇撞死3次或5次。
心得体会:
课程设计是培养学生综合运用所学知识,发现,提出,分析,和解决实际问题,锻炼时间能力的重要环节,是对学生实际工作能力的具体训练和考察过程。
通过这几周的vb课程设计,我学到了很多很多的东西,同时不仅可以巩固了以前学过的知识,而且学到了很多书本上所没有学到的知识。通过这次课程设计是我懂得了理论与实践相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说是困难重重,这毕竟是自己第一次做一个程序,难免会遇到各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解的不够深刻,掌握的不够牢固。通过这次课程设计之后,一定把以前所学的知识重新温故。
程序设计师需要大量的时间去动手练习才能体会到她的内涵,同时还需要用心去投入,时间和感情花下去之后,的确慢慢的感受到有所收获了,我也收获到了一点点的乐趣。可能是一个良性循环的开始吧,相信以后会做的更好的。
这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,但在老师和同学的帮助下终于解决。在此向老师还有给过我帮助的同学表示衷心的感谢!
第五章 参考书目:
Visual Basic程序设计教程(6.0版)
Visual Basic
《VB程序设计》课程设计任务书
题目:
用VB语句实现列车时刻查询
任务与要求:
程序能够实现列车时刻查询,保证软件可正常运行。
时间:2011 年 3 月 13 日 至 2011 年 3 月 18日 共 1 周
学生姓名: 马帅 学 号: 1008320126
专业: 武器系统与发射工程
指导教师: 张小兵
20##年3月 20日
列车时刻查询
第一章 课程设计目的
根据课堂讲授内容,学生做相应的自主练习,消化课堂所讲解的内容;通过做课程设计积累调试vb程序的经验;通过完成课程设计中的编程题,逐渐培养学生的编程能力、用计算机解决实际问题的能力。本程序设计主要锻炼了对于读文本文件,动态数组,字符串处理,列表框控件的使用,多行文本控件的使用等知识的实际运用能力。
第二章 课程设计的要求
题目介绍:
坐火车是人们出行的重要交通方式,列车的起点站,终点站和发车时间,到达时间以及沿途经停各站的站名,停车发车时刻是人们非常关心的内容。本题目要求编制一个能够方便地查询上述信息的实用程序。
课程设计功能要求:
1. 程序启动后,左边的列表框中显示全部车次。单击其中一项,在窗口右上方的4个文本框中显示此车站的起点站,终点站和发车,到达时刻;在右下方的文本框(不能使用列表框)中显示此次车沿途停靠的所有车站及相应的到站和发车时刻。
2. 在“经停车站”组合框中选择或输入一个站名然后回车,列表框中只列出经过该车站的车次;单击列表框下方的“显示全部车次”按钮,列表框中重新列出所有车次。
3. “经停站及时刻”文本框中各车站所对应的站名,到站时刻,发车时刻应纵向对齐,特别是时间,必须通过冒号对齐。
4. 本题目提供了两个数据文件:content.txt和detail.txt,程序用到的车次信息均来自于这两个文件。如果本程序启动时在可执行文件所在的文件夹下未找到其中任何一个文件,则显示出错信息并自动关闭程序。要求编程时不能改变这两个文件的存储格式。
第三章 课程设计报告内容
列车时刻查询部分代码
我在设计这个程序时主要遇到两个问题。
第一个大的问题就是怎样才能实现查询经过站点和显示车次途径车站和,经学长的指点后,通过以下代码就可以实现了:
Private Sub Com1_Click() '**查询经过站点
Dim n As Integer
List1.Clear: List2.Clear '清除界面
For i = 0 To k
If str(i) = Cob1.Text Then
For j = 0 To num - 1
If i < int1(j + 1) And i > int1(j) Then '判断经过站的车次区间
List1.List(n) = str1(j)
n = n + 1
End If
Next j
End If
Next i
End Sub
Private Sub Form_Activate()
Text1.SetFocus '起点站获得焦点
End Sub
Private Sub List1_Click() '显示车次途径车站和时刻
Dim m As Integer, b As String, n As Integer, p As Integer
b = List1.Text: j = 0
List2.Clear
For i = 0 To num - 1
If b = str1(i) Then
Text1.Text = str2(i): Text2.Text = str3(i) '将起点站,终点站,发车时刻,到达时刻添入文本框中
Text3.Text = str4(i): Text4.Text = str5(i)
End If
End Sub
我所遇到的二个问题就是怎样才能让各项对齐,在学长的帮助下并给我提供了一段非常重要的代码“List2.List(j) = str(m) + Space(p) + RTrim(Format(str(m + 1), "@@@@@@@@@")) + RTrim(Format(str(m + 2), "@@@@@@@@@@@@@@"))”,和一些指点,以下代码得以实现:
If List1.ListIndex = List1.ListCount - 1 Then n = k Else n = int1(i + 1)
For m = int1(i) + 2 To n - 3 Step 3
Select Case Len(str(m)) '判断站名长度以便list2中各项对齐
Case Is = 2: p = 5
Case Is = 3: p = 3
Case Is = 4: p = 1
End Select
List2.List(j) = str(m) + Space(p) + RTrim(Format(str(m + 1), "@@@@@@@@@")) + RTrim(Format(str(m + 2), "@@@@@@@@@@@@@@"))
'对齐各项
j = j + 1
Next m
End If
Next i
End Sub
列车时刻查询界面设计:
一、系统登陆界面设计
二、查询界面设计
第四章 总结及个人心得体会
综合分析,本程设计有四个难点:
1. 程序显示的信息都是从content.txt和detail.txt两个文件中读取的。如果列车时刻没有变化,只需修改这两个文件的内容即可,不必改动程序。
2. Content.txt文件保存了各车次的概要信息,包括车次名,起点站,终点站,发车时刻,到达时刻,一个车次占一行。
3. Detail.txt文件中保存了所有车次停靠站的详细信息。每个车次信息的保存方式都是相同的:首先一个星号“*”
为一行:然后是车次名为一行:在后是停靠站的站名和到达,发车时刻,每个站为一行。起点站的“到达时刻”和终点站的“发车时刻”均为“--”。因为每次车停靠站的数目不同,在读取detail.txt文件时,必须正确判断星号“*”的位置。
4. 程序应在启动时将所有信息从文件读入动态数组中,从而不必在查询过程中频繁地读取文件影响查询速度。
存在的不足:
只能够查询信息,不能够扩充程序使之对列车信息进行修改,添加和删除操作。
心得及体会:
通过这几周的vb课程设计,我学到了很多很多的东西,同时不仅可以巩固了以前学过的知识,而且学到了很多书本上所没有学到的知识。通过这次课程设计是我懂得了理论与实践相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,可以说是困难重重,这毕竟是自己第一次做一个程序,难免会遇到各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解的不够深刻,掌握的不够牢固。通过这次课程设计之后,一定把以前所学的知识重新温故。
程序设计师需要大量的时间去动手练习才能体会到她的内涵,同时还需要用心去投入,时间和感情花下去之后,的确慢慢的感受到有所收获了,我也收获到了一点点的乐趣。可能是一个良性循环的开始吧,相信以后会做的更好的。
第五章 参考书目:
Visual Basic程序设计教程(6.0版)
Visual Basic