vb课程设计报告书

时间:2024.12.6

                                                                                                

《可视化编程》课程设计报告

20##年6月15日


课程设计任务书

学生姓名:黎咏瑶            专业班级:软件2111

指导教师:  黄启荃李小艳  工作单位:华夏学院计算机教研室 

设计题目:连连看游戏的设计与开发

初始条件:

1、完成可视化编程的学习

      2、带Visual Basic 的机器

要求完成的主要任务:

(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)

主要任务:(在规定的时间内完成下列任务)

1、判断鼠标点击的两张图片是否相同;

2、判断2张图片是否可以相连;

3、判断时间;

4、判断剩余图片,是否胜利。

5、判断是否是死局,并死局要进行调整

6、适当给出“提示”信息

设计报告撰写格式要求:(课程设计报告按统一通用格式书写)具体内容如下:

① 设计任务与要求             ② 总体方案与说明

③ 程序主要模块的流程图        ④ 源程序清单与注释

⑤ 问题分析与解决方案(包括调试记录、调试报告,即在调试过程中遇到的主要问题、解决方法及改进设想);       ⑥ 小结与体会

附录:① 源程序(必须有简单注释)   ② 使用说明     ③ 参考资料

时间安排:6月23日---28日

指 导 教 师 签 字:        20##年6月23日

系 主 任 签 字:                     年   月    日

1.设计任务与要求

1、判断鼠标点击的两张图片是否相同;

1、判断2张图片是否可以相连;

3、判断时间;

4、判断剩余图片,是否胜利。

5、判断是否是死局,并死局要进行调整

6、适当给出“提示”信息

2.总体方案

2.1连连看游戏的功能架构

如图1功能架构

2.2类结构设计

游戏由六个类组成,如图所示2

(1)主界面对话框类:主要负责主界面及菜单的显示,棋子消除、消除提示及换盘操作,同时还要负责时间控制等。

(2) 棋子类:主要负责棋子的选中,配对及查找。

(3)连接线类:主要负责棋子中连接线的绘画。

(4)英雄榜对话框类:主要负责游戏等级记录的更新。

(5)背景音乐播放类:主要负责游戏中背景音乐的播放。

(6)帮助对话框类:主要负责帮助提示的显示及其它辅助信息

如图2类结构设计

2.3出错处理设计

当游戏中出现错误,采用弹出对话框的方式来提示用户出现错误,并可采用中止当前游戏并重新开始新游戏的方法来处理游戏中的错误。

3.    详细设计

3.1 时间限制模块的算法设计

 时间限制模块的算法主要分为如下几步:

(1)   在游戏开始时,设置当前限制时间(nOverTime)为60秒。

(2)   设定一个时间定时器TIMER1,时间间隔为1000ms 。

(3)   当每一次时间间隔到时,就把当前限制时间减少一秒。

(4)   如果游戏中有一对棋子消除时,就把限制时间增加三秒。

(5)   如果限制时间变成零秒,说明游戏结束,弹出结束提示对话框。如果当前游戏等级超过记录等级,还要弹出英雄榜对话框对话。

3.2 消除相同棋子模块的算法设计

消除相同棋子模块的算法主要分为如下几步:

(1)   当鼠标单击棋子时,保存到棋子坐标及类型到第一次选中变量中。

(2)   得到鼠标第二次选中的棋子坐标及类型。

(1)   比较两次棋子类型,如果相同,转步骤(4)。如果不相同,转步骤(5)。

(2)   画一条连接线,并消除这对棋子,退出等待下一次鼠标选择。

(3)   把鼠标第二次选中的棋子坐标及类型赋值给第一次选中变量。

3.3 游戏升级模块的算法设计

    游戏升级模块的算法主要分为如下几步:

(1)   保存当前游戏等级和限制时间初始值。

(2)   当游戏中的棋子全部被消除完毕时,就把当前游戏等级增加一级。

(3)   把限制时间的初始值减少5秒。

(4)   调用重新开始游戏接口函数。

   3.4 消除提示模块的算法设计

    消除提示模块的算法主要分为如下几步:

   (1)判断提示次数变量的值,如果等于0,结束。

   (2)查找当前棋盘中相同的棋子。

   (3)在相同棋盘中,查找可以消除的棋子。

   (4)给出提示连线,提示次数变量减少1。

   3.5 棋子换盘模块的算法设计

   棋子换盘模块的算法主要分为如下几步:

  (1)保存当前棋盘数组中的数据到临时数组中。

  (2)循环的从临时数组中,随机取出数据保存到棋盘数组中。

   3.6 英雄榜模块的算法设计

   英雄榜模块的算法主要分为如下几步:

  (1)读取配置文件,得到并显示当前最高等级及大名。

  (2)在用户结束游戏时,比较当前用户等级和最高等级。如果高于配置文件中的最高等级,就弹出英雄榜对话框,要求输入大名,并连同用户的等级保存到配置文件中。

 

   3.7 帮助类模块的算法设计

把相应的对话框资源显示出来即可。

3.8程序流程图

如图3程序流程图

4源程序清单与注释

4.1程序

Private Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszsoundname As String, ByVal uflags As Long) As Long

Const SND_SYNC = &H0

Const SND_ASYNC = &H1

Const SND_NODEFAULT = &H2

Dim focus As Integer

Dim ftype As String

Dim cc As Integer

Dim nd As Integer

Private Sub Form_Load()

'初始化

    nd = 5

    Call rom    '调用排列方法

End Sub

Private Sub Picture1_Click(Index As Integer)    '点击图片的事件

        If ftype = Picture1(Index).Tag And focus <> Index Then  '判断图片是否类型一致

            Line1.Visible = True    '显示线

            Line1.X1 = Picture1(Index).Left + 300

            Line1.X2 = Picture1(focus).Left + 300

            Line1.Y1 = Picture1(Index).Top + 300

            Line1.Y2 = Picture1(focus).Top + 300    '设置线的位置

            Label2.Width = Label2.Width + 50

           

            Picture1(Index).Visible = False     '点击图片设置为不可见

            Picture1(focus).Visible = False     '上一张图片为不可见

           

            focus = -1                          '将缓存中图片清空

            ftype = ""                          '将缓存中图片信息清空

            cc = cc - 2     '将可见图片数量减一

            Label4.Caption = Label4.Caption + 1

            Dim flag As Integer

            Dim a As Integer

            flag = SND_ASYNC Or SND_NODEFAULT

            a = sndPlaySound(App.Path & "\c.wav", flag) '播放声音

           

        Else '如果两张图片类型不一致执行

            focus = Index   '获取当前焦点

            ftype = Picture1(Index).Tag '获取当前图片类型

            

            flag = SND_ASYNC Or SND_NODEFAULT

            a = sndPlaySound(App.Path & "\a.wav", flag) '播放声音

           

        End If

       

        If cc = 0 Then  '如果可见图片数量为零就执行

       

            flag = SND_ASYNC Or SND_NODEFAULT

            a = sndPlaySound(App.Path & "\e.wav", flag)  '播放声音

            Dim but As VbMsgBoxResult

            but = MsgBox("恭喜你通过瑶瑶犀利版连连看!是否进入下一关?", vbOKCancel, "连连看")

            If but = vbOK Then

                Call rom '重新开始

                 Label3.Caption = Label3.Caption + 1

                 nd = nd + 1

            Else

                End '结束

            End If

        End If

       

End Sub

Private Sub Picture1_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)

For i = 0 To Picture1.Count - 1

    If (i = Index) Then

        Picture1(i).BorderStyle = 1

    Else

        If (i = focus) Then

            Picture1(i).BorderStyle = 1

        Else

            Picture1(i).BorderStyle = 0

        End If

    End If

Next i

End Sub

Sub rom() '开始

Label2.Width = 3255

For k = 0 To 59                 '产生随机数

Picture1(k).Visible = True

Next k

    focus = -1

    cc = False

    ftype = ""

    cc = Picture1.Count

Dim a(60) As Integer

Randomize

Dim flag As Boolean

a(0) = Int(Rnd * 60)

For i = 1 To 59

Do

flag = True

temp = Int(Rnd * 60)

For j = 0 To i - 1

If temp = a(j) Then

 flag = False

  Exit For

  End If

  Next j

  Loop While (flag = False)

  a(i) = temp

  Next i

 

Dim tt As Integer

Dim ll As Integer

tt = Picture1(0).Height + 100

ll = Picture1(0).Width + 100

Dim tp As Integer

tp = 0

For xx = 1 To 10    '设置图片位置

    For yy = 1 To 6

        Picture1(a(tp)).Left = xx * ll

        Picture1(a(tp)).Top = yy * tt

        tp = tp + 1

    Next yy

Next xx

End Sub

Private Sub Timer1_Timer()

Line1.Visible = False   '让线消失

End Sub

Private Sub Timer2_Timer()

Label2.Width = Label2.Width - nd

If Label2.Width <= 50 Then

     flag = SND_ASYNC Or SND_NODEFAULT

     a = sndPlaySound(App.Path & "\d.wav", flag)  '播放声音

    MsgBox ("恭喜您败了!")

    End

End If

If Label2.Width >= 3255 Then Label2.Width = 3255

End Sub

4.2程序运行截图

图1

图2

5.问题分析与解决方案

在第一步编程过程中很顺利的编写好了各模块,最后整合成了一个完整的程序,但在调试过程中遇到许多问题。如一些由于粗心导致分号,括号,字母输错的例子很多,但都很快改正。还有函数调用错误,还有在写程序中我常忘记头文件包含命令,以及函数声明,导致调试中出现警告。这让我体会到只有耐心的一行一行的改错误才能把程序调试好。

运行中遇到的问题:例如,对数据的写文件操作中,我把存在

Fly[N]中的数据以fwite(&fly[N,sizeof(struct flight)],1,fp)写入文件,结果发现文件中总是不能出现数据。以致程序不能运行后面部分。后来才发现取得地址错了应改成fwrite(&t,sizeof(struct flight),1,fp)。在显示阶段就是这问题让程序出现错误。不能正确读出输入的信息

6.小结与体会

回顾大学这一年的学习生活,拾起记忆的碎片,点点滴滴如幕影般在脑海中匆匆闪过,百感交集……

下面就闲谈一些学习生活上的心得以及这次课程设计的一些体会,整理一下自己的学习历程,希望能给自己一些启示。做为学生,学习是自己重要的事情是理所当然的,在明确它的重要性之后,就要以严谨的态度对待学习,认真的态度是学习上取得成绩的首要条件。在具体的学习过程中,要注意学习方法的利用和学习效率的保证。要知道长时间的自习并不一定能取得相应的成果,每个人的学习习惯是不同的,合理的安排自己的学习与休息时间是非常重要的,尽量挑选自己注意力最集中的时间段做关键科目的学习。注意劳逸结合,走科学的学习道路。学习计划的拟定也是必不可少的,特别是在课程较多的学期,拟定学期的学习计划可以提高学习的效率,并做到根据自己的实践情况实时地调整计划。学习的方法多种多样,同学之间一起研讨问题是提高大家水平的很好途径,教学相长,遇到困难请教同学,向同学讲解题目都有很大的益处,当然要掌握尺度,自己要有独立思考的能力。在各个科目的学习中,考试虽然是检验学生学习成果的有力手段,是我们应该重视的环节,可是平时的学习过程才是最重要的,扎实地掌握各专业课程内容,并尽量多的了解课本之外的专业相关的内容对将来的发展有极大的好处,无论是以后工作还是继续深造。以上的一切学习方法只是理论,要付诸实践毅力是必备的,牢记学海无涯苦作舟,学习并不是轻松的事情,须要刻苦求学并为之坚持不懈。路漫漫其修远兮,人们一直在寻求学习的方法,每个人在不同的阶段应追求不同的学习方法,可是学习应有的态度是始终不变的,在今后的学习道路上,我将在新的环境下新的学习历程中继续追寻…

参考资料

[1]刘大有等,《数据结构》(vb语言版),高等教育出版社,2003

[2]严蔚敏等,《数据结构》(vb语言版),清华大学出版社,2010

[3]William Ford,William Topp,《Data Structure with C++》清华大学出版社。 2009

[4]苏仕华等,《vb课程设计》,华夏出版社 2008

[5]陶大鹏,《vb语言实践教程》北京:中国水利水电出版社:2010

 


第二篇:vb课程设计说明书






Vb课程设计说明书






学生姓名:               学  号:               
系别班级:                                      
题    目: 记事本应用程序                              
               

     20##年 12月19日




1
选题背景与意义
1.1  背景    
为了满足一般用户对文本文件编辑的最基本需求,主要包括文本输入、字体编辑、支持纯文本文件的保存和文件打开处理等功能。所以在老师的帮助和自己查阅书籍的情况下,选择了记事本应用程序这个题目。
1.1.1  记事本应用程序的要求
记事本应用程序要求实现新建,打开,保存文件,对文本进行字体颜色编辑,对文本实现查找,能够复制粘贴功能。
1.1.2  记事本应用程序的功能
文件:可在任意时刻打开或新建文件,可将文件另存为和打印。也可对打开后的任意文件进行保存关闭。在退出时,对于没有保存的文件,程序将给予提示。
编辑:支持所有块操作。利用菜单或快捷键进行设置,有粘贴、复制、剪切、全选等功能。
对齐:包括居中、左对齐、右对齐。
颜色:有黑色、蓝色、绿色、红色以及所有颜色。
样式:粗体、下划线、删除线、斜体。
查找:查找和查找下一个。
帮助:提供对所有操作的详细说明。几乎所有操作都有对应的快捷键,使用户使用更加方便。
1.2  意义
通过设计记事本程序,学会了更好的使用CommonDialog 控件、ComboBox控件、RichTextBox等一些重要控件,掌握了如何设计工具栏和状态栏,在设计的过程中,把课堂上学到的知识,真正的运用到实践当中去,不仅加深了旧知识,还学到了一些新知识,收获很大。

主要程序代码及图示
Private Sub mnuedit_Click() '编辑 菜单项代码
If RichTextBox1.SelLength <> 0 Then   '如果文本框中有选中的内容
muncut.Enabled = True           '则剪切\复制\删除和粘贴菜单有效,
 muncopy.Enabled = True
mnudelete.Enabled = True
 munpaste.Enabled = True
 Else
 muncut.Enabled = False              '否则无效
 muncopy.Enabled = False
 mnudelete.Enabled = False
End If
End Sub
设计界面如下:

Private Sub center_Click()                      '居中
  RichTextBox1.SelAlignment = 2
End Sub

Private Sub right_Click()                       '右对齐
 RichTextBox1.SelAlignment = 1
End Sub

Private Sub left_Click()                         '左对齐
   RichTextBox1.SelAlignment = 0
End Sub

Private Sub RichTextBox1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
  If Button = 1 Then
    If RichTextBox1.SelText <> "" Then
      muncut.Enabled = True                   '启用"剪切"菜单项
      muncopy.Enabled = True                  '启用 "复制"菜单项
      mnudelete.Enabled = True                '启用"删除"菜单项
      munpaste.Enabled = True                 '启用"粘贴"菜单项
    End If
  End If
End Sub

Private Sub muncopy_Click()                     '复制
 Clipboard.SetText RichTextBox1.SelText
End Sub

Private Sub muncut_Click()                      '剪切
 Dim muncut As Integer
   Clipboard.SetText RichTextBox1.SelText
   RichTextBox1.SelRTF = ""
 End Sub

Private Sub munpaste_Click()                    '粘贴
  If Clipboard.GetFormat(vbCFRTF) Then
     RichTextBox1.SelText = Clipboard.GetText
     ElseIf Clipboard.GetFormat(vbCFText) Then
     RichTextBox1.SelText = Clipboard.GetText
  End If
End Sub


Private Sub mnuprint_Click()                      '文件打印
On Error Resume Next
   CmnDlg1.ShowPrinter
   Printer.Copies = CmnDlg1.Copies
   Printer.Print RichTextBox1.Text
End Sub

 

Private Sub mnusave_Click()                     '文件保存
  Dim rtffile As String, ab As Boolean
  CmnDlg1.Filter = "text 文件(*.txt)|*.txt|rtf文件(*.rtf)|*.rtf"
  CmnDlg1.FilterIndex = 2
  CmnDlg1.ShowSave
  rtffile = CmnDlg1.FileName
  RichTextBox1.SaveFile rtffile
  ab = False
End Sub

Private Sub allcolor_Click()                  '所有颜色
  CmnDlg1.ShowColor
  RichTextBox1.SelColor = CmnDlg1.Color
End Sub

Private Sub about_Click()                         '帮助
 Shell ("notepad 帮助文件.txt")
End Sub

Private Sub Form_Load()
 Dim I As Integer
 RichTextBox1.Width = Form1.ScaleWidth
 RichTextBox1.Height = Form1.ScaleHeight
ab = True
 Form1.Caption = "新文档 - 记事本"          '标题栏显示名
 For I = 0 To Screen.FontCount - 1
    Combo1.AddItem (Screen.Fonts(I))          '将系统屏幕字体赋给Combo1
 Next I
    Combo1.Text = RichTextBox1.Font.Name     '将RichTextBox1字体赋给Combo1
 For I = 1 To 80
    Combo2.AddItem (I)                      '给Combo2赋值1~80
    Next I
 Combo2.Text = RichTextBox1.Font.Size  '将当前RichTextBox1控件的字体大小作为
End Sub                                     '初值赋给combo2
Private Sub Combo1_Click()
  RichTextBox1.SelFontName = Combo1.Text   '改变RichTextBox1所选文本的字体
End Sub
Private Sub Combo2_Click()
  RichTextBox1.SelFontSize = Combo2.Text   '改变RichTextBox1所选文本字体大小
End Sub Private Sub find_Click()                  '查找
 findstr = InputBox("请输入字符串:", "输入", RichTextBox1.SelText)
 If Len(findstr) > 0 Then
 RichTextBox1.find findstr, 0
 findpos = RichTextBox1.SelStart + 1
 find.Enabled = True
 End If
End Sub

Private Sub fintN_Click()                 '查找下一个
   If Len(findstr) > 0 Then
      RichTextBox1.find findstr, findpos
      findpos = RichTextBox1.SelStart + 1
   End If
End Sub

文本编辑栏中工具栏的程序设计如下:
Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)
   Select Case Button.Key     
   Case "tnew"
     mnunew_Click
   Case "topen"
     mnuopen_Click
   Case "tsave"
     mnusave_Click
   Case "tcut"
     muncut_Click
   Case "tcopy"
     muncopy_Click
   Case "tpaste"
     munpaste_Click
   Case "tprint"
     mnuprint_Click
   Case "tprint"
     mnuprint_Click
   Case "tabout"
     about_Click
   End Select
 End Sub

Private Sub mnuexit_Click()                  '退出
 Dim stat As Integer, ab As Boolean
 If ab Then
   stat = MsgBox("文件已被修改,是否保存?", vbYesNo Or vbQuestion, "警告")
 End If
  If stat = 6 Then
   mnusave_Click
  Else
   Unload Me
  End If
End Sub



课程设计心得
经过这几周的课程设计,使我对 Visual Basic编程有了更深一层的了解。经过这几天的编程与不断调试,我的努力终于有了成果。我设计的是记事本,这其中得用CommonDialog 控件、ComboBox控件、RichTextBox等一些重要控件,来设计工具栏和状态栏完成文本编辑和操作。整个设计的过程也是我不断学习的一个过程,我在运用旧知识的同时也学到了不少新知识,给自己大脑充电的同时也填补了一些相关知识方面的空白。
整个设计的过程中,我不仅仅只是经历了是失败与成功所带来的启迪,我还体会到了一种很重要的东西,那就是团体的力量。设计中,我有解决不了得地方就请教老师和同学, 可以说在大家的帮助下我才得以完整的呈现出我的成果。这次课程设计让我学到了很多东西。对程序设计有了更具体的认识,让我复习了以前学过的知识,也让我们对程序设计有了更深刻的理解。总之,这次的设计使我受益颇深。

 参 考 文 献

1张宇敬,郑艳娟. Visual Basic程序设计教程.第1版.中国市场出版社,2006 


更多相关推荐:
VB课程设计报告 (32)

沈阳航空航天大学课程设计任务书学院机电工程专业机械设计制造及其自动化班级04060101学号20xx040601011题目选择教师系统一课程设计时间20xx年3月59日第1周共计1周20学时二课程设计内容有5位...

VB课程设计报告

课程设计题目个人收支管理难度:☆☆☆姓名:刘泽禄学号:913103860633随着社会生活步调的不断加快,人们越来越繁忙。也因此各项收入和支出名目繁多,如果不善于管理常会出现入不敷出,工资感觉没怎么用到月底就已…

VB课程设计报告(实例样本)1

VB程序设计报告学院土木工程专业工程管理班级1102学号20xx02938姓名若笔奇诺一课程设计题目成绩计算模拟系统二课程设计工作自20xx年5月15日起至20xx年6月1日止三课程设计地点兰州交通大学四课程设...

VB课程设计实验报告

VB课程设计实验报告题目:超市销售管理系统任课教师:专业:姓名:学号:班级:一、目的:本次课程设计结合是实际应用的要求,使课程设计既覆盖VB的知识点,又接近工程实际需要。目的是通过课程设计的综合训练,培养我们学…

vb课程设计报告-仓库管理系统

VB程序设计实验报告姓名:班级:学号:专业:软件工程指导老师:20##年5月13日目录实验题目3实验要求3设计思路3实验流程图3源程序清单4运行界面6存在问题6解决思路6心得6教师评语6评分6内容摘要:仓库管理…

VB课程设计报告样例

南京理工大学能源与动力工程学院VB课程设计报告题目1贪吃蛇游戏题目2列车时刻查询指导老师张小兵学生姓名学号专业班级1008320120xx年3月20日VB程序设计课程设计报告VB程序设计课程设计任务书题目用VB...

VB课程设计报告

课程设计报告书课程设计名称VB程序设计报告书系部专业班级学生姓名XXX学号指导教师完成日期20xx年1月6日山东科技大学泰山科技学院12课程设计报告书一前言VisualBasic是可视化程序设计语言具有简单易学...

VB课程设计报告模板

VisualBasic课程设计报告题目1难度题目2难度指导教师姓名学号专业班级学院日期目录1题目简介22设计思路与总体方案421窗体frm1422窗体form1623窗体frmcssz724窗体frmlsz10...

Vb课程设计报告

课程设计题目贪吃蛇四星一功能贪吃蛇是一种很流行的电子游戏游戏方法如下一条蛇在棋盘上爬行由键盘控制其转弯棋盘上随机地出现5个数字15当蛇的头部碰到数字时吃数字蛇的身体会变长当蛇的头部撞到障碍时或碰到自己身体时游戏...

VB家庭财务管理系统课程设计报告

经济管理学院本科课程设计说明书面向对象课程设计学号10051701131005170116姓名朱松洁李登班级管理101专业信息管理与信息系统系别管理系指导教师杨胜春目录家庭财务管理系统31项目概述311系统概述...

VB课程设计报告模板及范例-20xx-3-2

VisualBasic课程设计报告题目1难度题目2难度指导教师袁红兵姓名学号专业班级学院日期20xx年3月目录1题目简介22设计思路与总体方案421窗体frm1422窗体form1623窗体frmcssz724...

VB课程设计实验报告---图片浏览器

VB课程设计报告课程设计题目:图片浏览器学生姓名:专业:信息管理与信息系统班级:信管二班(093222)指导教师:20##年05月28日目录VB课程设计报告.1一.内容摘要.3二.功能描述(含流程图).32.1…

vb课程设计报告(36篇)