VB课程设计报告(杨潇怡)

时间:2024.10.18

VB课程设计(论文)任务书

 土木建筑    学  院  土木工程    专  业    4  

一、课程设计(论文)题目 :             小人移动                                 

二、课程设计(论文)工作自2014 6 16日起至 20## 6 22 日止

三、课程设计(论文) 地点:           计算中心8#605     

四、课程设计(论文)内容要求:

1. 本课程设计的目的

(1)进一步巩固和加深对“VB程序设计”课程基本知识的理解和掌握,了解VB语言在项目开发中的应用。

(2)学习程序设计开发的一般方法,了解和掌握项目开发过程及方式,培养正确的设计思想和分析问题、解决问题的能力,特别是项目设计能力。

(3)通过对标准化、规范化文档的掌握并查阅有关技术资料等,培养项目设计开发能力。                                            

2. 课程设计的任务及要求

(1) 基本要求:

(1)       对系统功能进行需求分析;

(2)   使用Visual basic开发环境进行程序开发;

(3)  提出系统的设计方案;

(4)  编写源程序代码并进行调试。

(2) 创新要求

在基本要求达到后,可进行创新设计。

(3) 课程设计报告撰写及装订要求

课程设计报告的撰写要求表述简明,图表准确。

报告按如下内容和顺序用A4纸进行打印并装订成册。

(1)封面

采用统一的课程设计封面,并按要求填写好封面要求的个人信息和选题。

(2)设计任务书

(3)评阅书

(4)目录

  (5)正文

  (6)主要参考文献

(4) 课程设计评分标准:

(1)达到课程设计的目的与要求,程序的可读性较好,并调试正确,60分;

(2)能正确回答设计的中老师所提问题,可增加10分;

(3)课程设计报告书写规范整齐,可增加10分;

(4)心得体会认真总结,可增加10分;

(5)程序有创新性,可增加10分;

成绩评定实行优秀、良好、中等、及格和不及格五个等级。不及格者需重做。

(5) 课程设计进度安排


(1)准备阶段(6学时):选择设计题目、了解设计目的要求、查阅相关资料。

(2)程序模块设计分析阶段(8学时):程序总体设计、详细设计。

(3) 代码编写调试阶段(10学时):程序模块代码编写、调试、测试。

(4) 撰写论文阶段(6学时):总结课程设计任务和设计内容,撰写课程设计论文。

(6)课程设计题目具体要求:

设计要求从迷宫的入口走到出口。详细要求如下:

1. 能够打开已有的迷宫文件并进行游戏。

2. 游戏者使用光标键移动目标。

3. 可对游戏者使用时间计时。

4. 移动目标只能在通道中移动。

5. 可以自定义使用的移动键。

6. 程序分为设计和游戏两种状态。

7. 在设计模式能够通过鼠标直接绘制的方式设计迷宫并能将所设计的布局保存到文本文件中,保存格式见素材中的样例文件。

8. 设计迷宫时可以指定入口和出口(入口用S表示,出口用F表示,通道用#表示,墙用空格表示,全用半角字符,设计时用鼠标左键开辟通道,CTRL+鼠标左键设置迷宫入口,CTRL+鼠标右键设置迷宫出口)。

9. 被移动目标可以使用提供的图片,或者自行安排其他控件。

10. 支持显示的背景设置,可以设置成任意色彩或者图案。

11.创新要求

在基本要求达到后,进行创新设计,创新方向提示如下:

★ 增加三维迷宫线路。

★ 可以设置迷宫的大小。(10x20到50x100)

★ 其它创新(有一定难度,实现代码在30行以上)。

学生签名:              

20##年 6月22日

课程设计(论文)评阅意见

评阅人          职称  讲师 

20##年 6 月 22


目 录

第1章 系统概要. 1

1.1功能大概介绍. 1

第2章       总体设计. 2

2.1设计思路. 2

2.2 设计方案. 2

2.3方案解决. 2

第3章       源程序代码. 4

3.1 属性窗口. 4

3.2 Form1的窗口代码. 4

第4章  运行结果及分析. 9

4.1 运行结果. 9

4.2程序分析. 10

4.3运行程序使用说明. 10

第5章  心得体会. 11

参考文献. 12



第1章 系统概要

 程序设计可以参考图,(也可以自己设计,完成即可)本设计小人移动,从迷宫的入口走到出口,属于游戏类。

1.1功能大概介绍

 ⑴启动程序,出现小人行走的界面

 ⑵通过上、下、左、右健控制小人行走,小人通过走空白的地方寻找出口。

 ⑶当小人走出迷宫时,弹出窗口显示“恭喜你,成功走出迷宫”。

 

第2章  总体设计

2.1设计思路

通过上下左右键控制小人行走走出迷宫。

    如图2-1为程序流程图。

↓↓

图2-1 流程图

2.2 设计方案

①设计程序界面

迷宫线路可以使用两种方法实现,一是事先画好,二是利用line控件通过数组动态生成。

②编写代码

包括事件处理过程和功能函数,还有必要的声明。变量声明部分声明本程序所需要的变量和数组。要添加必要的程序说明语句。

事件处理包括下面的主要事件:

Form_Load()

作一些初始化的工作。画迷宫线路。

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)

利用光标键控制目标移动。

2.3方案解决

1.从文件中读取数据建立一个二维数组

打开提供的路线文件就可以发现这个文件是由”#”和” ”构成的,对于文件部分课堂上没有讲解,但是可以看课本的第7章。下面是具体使用方法。

fnum = FreeFile ‘得到空文件号

Open SelectFile For Input As #fnum ‘打开文件并指定缓冲区的文件号

Input #fnum, NumRows, NumCols ‘读入数组的行(NumRows)和列(NumCols)值
ReDim LelMove(1 To NumRows, 1 To NumCols) ‘定义动态数组的大小

对于此二维数组值的获得,可以使用双重循环逐行读入。对读入的每一行mid()取子串生成二维的逻辑性数组。

ch = Mid(row, c, 1) ‘row为读入的每行内容

LelMove(r, c) = (ch <> "#") ‘判断ch <> "#"成立则为True,否则为False

另外注意对入口s和出口f的判断。数组形成之后定义form的高度和宽度(注意应该和迷宫线路的宽度、二维数组相结合),这里还要涉及到窗口的属性ScaleMode=vbPixels。

2.利用数组画迷宫线路

如果二维数组读入正确,画线就很简单了,只需设定线高和线宽就可以了(参考线高和线宽值为20)。仍然要注意提取入口和出口的坐标值。

Line (c * SQUARE_WID, r * SQUARE_HGT)-Step(-SQUARE_WID, -SQUARE_HGT), clr, BF ‘线路的高度SQUARE_WID,宽度 SQUARE_HGT,颜色clr

3.移动目标

小人这里面使用的是Picture控件,图片已提供。小人根据坐标x,y值出现

PaintPicture picPlayer.Picture, x, y

但是怎么样使旧的小人擦除?可以确定原位置然后重新画线。小人要通过光标键来移动,这就用到了下面的事件

Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)

‘KeyCode 是按键返回的键值,我们涉及到的有vbKeyLeft,vbKeyRight, vbKeyDown, vbKeyUp

通过上面的事件和二维数组结合起来,在可走的地方小人允许出现,这样就可以确定小人只能沿着你画好的线路走。


第3章  源程序代码

3.1 属性窗口

Begin VB.Form Form1

   AutoRedraw      =   -1  'True

   BackColor       =   &H80000004&

   Caption         =   "闯迷宫"

   ClientHeight    =   9630

   ClientLeft      =   225

   ClientTop       =   555

   ClientWidth     =   12765

   FillColor       =   &H80000004&

   FillStyle       =   0  'Solid

   KeyPreview      =   -1  'True

   LinkTopic       =   "Form1"

   MaxButton       =   0   'False

   Picture         =   "迷宫.frx":0000

   ScaleHeight     =   9630

   ScaleWidth      =   12765

   StartUpPosition =   2  '屏幕中心

   Begin VB.PictureBox Picture2

      BorderStyle     =   0  'None

      Height          =   400

      Index           =   1

      Left            =   11600

      Picture         =   "迷宫.frx":0461

      ScaleHeight     =   405

      ScaleWidth      =   405

      TabIndex        =   2

      Top             =   9200

      Width           =   400

   End

3.2 Form1的窗口代码

BorderStyle     =   0  'None

      Height          =   400

      Index           =   0

      Left            =   400

      Picture         =   "迷宫.frx":08C2

      ScaleHeight     =   405

      ScaleWidth      =   405

      TabIndex        =   1

      Top             =   0

      Width           =   400

   End

   Begin VB.Timer Timer1

      Enabled         =   0   'False

      Interval        =   2000

      Left            =   7320

      Top             =   240

   End

   Begin VB.PictureBox Picture1

      BackColor       =   &H0000FF00&

      Height          =   400

      Left            =   400

      Picture         =   "迷宫.frx":0D23

      ScaleHeight     =   345

      ScaleWidth      =   345

      TabIndex        =   0

      Top             =   400

      Width           =   400

   End

   Begin VB.Menu mig

      Caption         =   "随机生成迷宫"

   End

   Begin VB.Menu dmg

      Caption         =   "启动动态迷宫"

   End

   Begin VB.Menu start

      Caption         =   "初始化"

   End

End

Attribute VB_Name = "Form1"

Attribute VB_GlobalNameSpace = False

Attribute VB_Creatable = False

Attribute VB_PredeclaredId = True

Attribute VB_Exposed = False

Const row = 22, col = 30

Dim grid(row + 1, col + 1)

Private Sub dmg_Click()

Picture1.Left = 400  '初始化图片位置

Picture1.Top = 400

Timer1.Enabled = True   '启动时钟

End Sub

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)  '键盘控制图片移动

l = Picture1.Left \ 400

t = Picture1.Top \ 400

Line (l * 400, t * 400)-(400 * (l + 1), 400 * (t + 1)), vbGreen, BF   '显示走过的路径

Select Case KeyCode       '随着键盘的动作来移动

    Case vbKeyLeft

        If Picture1.Left - 400 >= 400 Then

        If grid(t, l - 1) = 0 Then

        Picture1.Left = Picture1.Left - 400

        Picture1.Top = Picture1.Top

        End If

        End If

     Case vbKeyRight

        If Picture1.Left + 400 <= 400 * col Then

            If grid(t, l + 1) = 0 Then

            Picture1.Left = Picture1.Left + 400

            Picture1.Top = Picture1.Top

            End If

        End If

    Case vbKeyDown

        If Picture1.Top + 400 <= 400 * row Then

         If grid(t + 1, l) = 0 Then

        Picture1.Left = Picture1.Left

        Picture1.Top = Picture1.Top + 400

        End If

        End If

    Case vbKeyUp

        If Picture1.Top - 400 >= 400 Then

         If grid(t - 1, l) = 0 Then

        Picture1.Left = Picture1.Left

        Picture1.Top = Picture1.Top - 400

        End If

        End If

End Select

If Picture1.Top \ 400 = row And Picture1.Left \ 400 = col - 1 Then

    Timer1.Enabled = False

    MsgBox ("恭喜你,成功走出迷宫!")   '显示成功信息

   

End If

End Sub

Private Sub Form_Load()

Open "迷宫矩阵.txt" For Input As #1   '读取迷宫矩阵,绘制迷宫图

    For i = 0 To row + 1

        For j = 0 To col + 1

        If 1 <= i And i <= row And 1 <= j And j <= col Then

            Input #1, grid(i, j)

            If grid(i, j) = 1 Then    '值为1则表示障碍或墙,0则表示通道,即可行路径

            Line (j * 400, i * 400)-(400 * (j + 1), 400 * (i + 1)), vbBlue, BF

            End If

        Else

            Line (j * 400, i * 400)-(400 * (j + 1), 400 * (i + 1)), vbBlue, BF

        End If

        Next

    Next

Close #1

End Sub

Private Sub mig_Click()   '随机获取迷宫矩阵

Picture1.Left = 400

Picture1.Top = 400

Randomize

m = row * Int(20 * Rnd)

Open "迷宫矩阵.txt" For Input As #1  '读取事先设计好的迷宫矩阵,随机读取一种矩阵

Do While n <> m

    Line Input #1, temp

    n = n + 1

Loop

    For i = 1 To row

        For j = 1 To col

            Input #1, grid(i, j)

            If grid(i, j) = 1 Then

            Line (j * 400, i * 400)-(400 * (j + 1), 400 * (i + 1)), vbBlue, BF

            Else

            Line (j * 400, i * 400)-(400 * (j + 1), 400 * (i + 1)), vbWhite, B

            End If

        Next

    Next

Close #1

End Sub

Private Sub start_Click()

Picture1.Left = 400

Picture1.Top = 400

Open "迷宫矩阵.txt" For Input As #1   '初始化迷宫矩阵

    For i = 1 To row

        For j = 1 To col

            Input #1, grid(i, j)

            If grid(i, j) = 1 Then

            Line (j * 400, i * 400)-(400 * (j + 1), 400 * (i + 1)), vbBlue, BF

            Else

            Line (j * 400, i * 400)-(400 * (j + 1), 400 * (i + 1)), vbWhite, B

            End If

        Next

    Next

Close #1

End Sub

Private Sub Timer1_Timer()   '使迷宫矩阵动态变化,随机生成的迷宫可能是走不通的

X = 1: Y = 1

    For i = 1 To row

        For j = 1 To col

            Randomize

            grid(i, j) = Int(2 * Rnd)

            If grid(i, j) = 1 Then

            Line (j * 400, i * 400)-(400 * (j + 1), 400 * (i + 1)), vbBlue, BF

            Else

            Line (j * 400, i * 400)-(400 * (j + 1), 400 * (i + 1)), vbWhite, B

            End If

        Next

    Next

End Sub


第4章  运行结果及分析

4.1 运行结果

如图4-1、4-2、4-3所示均为本程序的控制窗口。

图4-1form1(打开时显示截图)

图4-2为form1运行时截图

图4-3走出迷宫时截图

4.2程序分析

解释:得到的数据[i,j]既为小人在预先设定的二维数组的迷宫里的位置,依次通过这些位置,小人即可到达出口。

4.3运行程序使用说明

双击打开迷宫.exe,以上下左右键控制小人的移动,当你走出迷宫后会弹出一个“恭喜,成功走出迷宫”的窗体,除此之外,还可以点击左上角随机生成迷宫或动态迷宫等功能。


第5章  心得体会

(1)树立良好的学习心态

  1、要相信自己能学好,要积极主动地学习。

  2、要有一颗永不退缩的心,如果编程没有达到我们预期的效果和目的,这就需要我们细心地去寻找问题的所在,或许会找很久,但是只要我们有耐心,一点一点去查,就一定能找到问题所在。

(2)要有良好的学习习惯

    1、课前预习,上课要认真听课并适当做些笔记,课后要认真复习并消化所学内容,在上机前可以先做一遍题目,看看会遇到那些问题。

  2、VB程序设计的入门学习并不难,但却是一个十分重要的过程,这为培养程序设计思想打下了必要的基础。

 (3)学习程序设计要注重理解一些重要的概念。

  VB程序设计本身并不复杂,翻开一本程序设计学习的书籍,看到的无非就是变量、函数、条件语句、循环语句等概念。但要真正能进行程序设计,需要深入理解这些概念。因此,在程序入门阶段还是应该重视概念的学习。

 (4)自己动手编写程序

  在刚开始学习的阶段,锻炼自己的动手能力是非常重要的,亲自动手编写程序就是培养能逻辑思维。因此一定要多动手编写程序,而且要从小程序开始练习,逐渐提高写程序的能力。

 (5)阅读、借签别人设计的好程序

  多看别人设计好的程序代码,多看多实践,水平才能不断地提高,这才是“学以致用”。即使看不懂也没有关系,可以把这些代码输到机子里运行,然后根据运行结果去体会程序的思路和用途。

 (6) VB程序设计学习的重点

    1、程序设计课是高强度的脑力劳动,不是听会的,也不是看会的,而是练会的。

  2、只有自己动手,编写一些程序,才会有成就感,进而对课程产生兴趣,学起来才比较从容。等你在编写大量程序之后,我想过二级肯定没问题,不过能不能做到真知灼见,运用自如我就不敢说了。

  3、动手能力的培养是这门课和以往课程最大的不同之处。重点放在思路、算法、编程构思和程序实现上。语句只是表达工具,要求堂上积极思,尽量当堂学懂,并做到灵活应用。


参考文献

(1)       Visual basic程序设计实验教程【M】 吴昊  杜玲玲(人民邮电出版社   2011.3)

(2)       Visual basic程序设计【M】 熊李艳  周美玲(人民邮电出版社    2011.3)

更多相关推荐:
课程设计报告

1课程设计目的课程设计是船舶设计原理课程重要的实践性教学环节是培养学生掌握船舶设计基本原理和能力的技术基础主尺度论证与总布置设计是船舶总体设计的重要组成部分通过课程设计的训练力求使学生实现从学生到船舶设计师的角...

课程设计报告内容

一设计目的1强化上机动手能力在理论和实践的基础上进一步巩固数据结构课程学习的内容掌握工程化软件设计的基本方法2掌握图的创建和应用3掌握迪杰斯特拉以及Prim等基本算法思想4掌握if语句及switch语句的运用方...

课程设计报告

中国计量学院信息工程学院课程设计报告课程设计名称系统设计与仿真课程计二级学院信息工程学院专业班级10电信2班学姓成绩号名1000301232廖壁波指导老师20xx年12月13日中国计量学院信息工程学院课程设计报...

课程设计报告模板

信息科学与工程学院高级语言程序设计课程设计报告学生成绩管理系统学科专业计算机科学与技术班级1301学号指导教师唐郑熠讲师学生二零年月目录目录1设计任务12需求分析121基础功能122扩展功能13系统概要设计13...

课程设计报告

扬州大学数据结构课程设计报告课题名称姓名学院系科班级指导老师日期自来水管架设问题广陵学院陈宏建1一课程设计的题目自来水管理架设问题问题描述若要在扬州大学的八个居民区A区B区C区D区E区F区G区H区之间架设自来水...

课程设计报告

系统软件课程设计时钟中断与进程调度学号姓名指导教师11070319许明秀金雪云20xx年12月一报告摘要进程调度是操作系统十分重要的一个部分在操作系统的设计过程中进程调度和时钟中断形成了密不可分的关系系统时钟定...

计算机高级语言课程设计报告—学生成绩管理系统

计算机高级语言课程设计报告学生成绩管理系统班级:学号:姓名:日期:20##年1月18日一.课程设计题目与要求实习题目:学生成绩管理系统【实习内容】C++语言,面向对象的分析与设计。【基本要求】学生成绩管理是高等…

网页课程设计与报告

存档资料成绩:华东交通大学理工学院课程设计报告书所属课程名称网页设计与制作课程设计题目网站首页分院电信分院专业班级信息管理与信息系统1班学号##学生姓名何XX指导教师##20##年12月24日目录第一章绪论..…

简易温度控制系统(课设报告)

长安大学单片机课程设计-简易温度控制系统-专业:电气工程及其自动化学号:姓名:指导老师:时间:20##.12.30摘要随着科技的不断进步,在工业生产中温度是常用的被控参数,而采用单片机来对这些被控参数进行控制已…

Java课程设计报告模板

Java程序设计课程设计报告(20##--20##年度第1学期)Hannio塔专业:计算机科学技术(网络工程)学生姓名:##班级:B计算机##学号:##指导教师:##完成日期:20##年1月8日目录目录...2…

计算机网络课程设计报告

计算机网络课程设计报告一.课程设计的题目、目的及要求.........................................................2二.课程设计的内容(分析和设计).....…

软件课程设计报告

任务书北京信息科技大学计算机软件基础课程设计题目从某个源点到其余各顶点的最短路径学院专业学生姓名班级学号指导老师起止时间任务书1摘要摘要本次课程设计的问题假设西安北京沈阳武汉4个城市构成小型交通网4个城市表示图...

课程设计报告(33篇)