计算机程序设计基础(VB)实验指导书主编:刘华伟单位:信息工程学院实验报告要求:每次实验要求写实验报告(word电子版),包括实验名称,实验目的,实验内容,所有主要界面(需把界面图贴上,用截图工具)和所有源程序(将代码复制粘贴到word报告里),每次上机课后的周五理论课对上机题目进行讲解,每次上机实验报告要求在上机内结束前提交,如果没做完最迟当天内提交给教师信箱458007844@ 只能用自己的邮箱在这个时间段提交。
提交格式:邮件名和word文件名均为:公141班张三000000第1次作业第一次上机课要做实验指导书中前两次实验的内容,将两次上机的实验报告都写在同一个word文档里提交。
以后每次上机均做一次实验的内容。
实验一VB6.0环境和程序设计初步一、实验目的1.学会使用VB开发环境。
2.学会建立、编辑、运行一个简单的VB应用程序的全过程。
3.掌握变量的概念及使用。
4.通过程序实践结合课堂例子,理解类、对象的概念,掌握属性、事件、方法的应用。
二、实验内容:1.熟悉VB开发环境的标题栏、菜单栏、工具栏、窗体窗口、属性窗口、工程资源管理器窗口、代码窗口、立即窗口、窗体布局窗口、工具箱窗口的位置以及用法。
(此题不需要写实验报告)2.编写一个四则运算的功能,在界面上输入两个数,并设置加减乘除四个按钮,点击不同的按钮,显示不同的运算结果。
步骤:(1)建立用户界面的对象。
(2)对象属性的设置。
(3)对象事件过程及编程。
(4)保存和运行程序实验二选择结构程序设计一、实验目的1.掌握逻辑表达式的正确书写形式。
2.掌握单分支与双分支语句的使用。
3.掌握多分支条件语句的使用。
4.掌握情况语句的使用与多分支条件语句的区别。
二、实验内容1.P272实验C的1,2题,界面按自己思路设计。
其中第1题要求用两种方法实现。
2.在界面上输入4个数,求最大值和最小值并显示,要求用两种方法实现。
提示:先编写求最大值的程序,然后再编写求最小值的程序。
3.输入三门功课的成绩,评定某个学生是否得奖学金。
评奖学金标准如下:平均分大于95分或两门100分第三门不低于80分。
实验三循环和数组一、实验目的1.理解循环结构的思想2.学会用for语句编写程序3.掌握数组的概念、用法4.学会用for循环语句与数组结合来解决问题二、实验内容(1)课本112页第12题前两小题(2)求1-2+3-4+5-6………+99-100(3)输入1-10的数(若不在此范围内,应提示出错),求出该数的阶乘并显示。
(3)在界面上设计5个文本框,输入5个数并存入一数组中,通过for语句求出最大值,最小值以及和数,并在另外的几个文本框中显示出来.(4)用控件数组实现以下功能:放置自上而下排列的四个按钮,无论按哪个按钮,其他三个按钮都向右移动一小段距离。
实验四过程一、实验目的1.掌握自定义函数过程和自过程的定义和调用方法。
2.掌握形参和实参的对应关系。
3.掌握变量、函数和过程的作用域。
二、实验内容1. 定义一个函数:1 x>0f(x)= 0 x=0-1 x<0在文本框上输入一个x,而后在窗体上用函数求得f(x)的值并显示。
2.求出1-50的所有素数,并依次显示在窗体的左上角,要求定义一个判断一个数是否为素数的函数,通过调用函数的方式来逐一求得。
步骤:(1)定义一个判断一个数是否为素数的函数,首先确定参数的个数,类型,意义,然后确定返回值的类型。
(2)通过循环的方法,将1-50的每个数都作为函数的参数调用一次,如果判断结果为真,则显示,若为假,则不显示。
3.在三个文本框上输入不等整数x,y,z,排列一下使得结果为x>y>z,并将结果依次显示在窗体的左上角。
要求定义一个交换两个数的子过程,通过调用子过程的方式来求解。
步骤:(1)复习曾经讲过的一个相近的例题,吃透思想。
(2)程序中三处用到交换两个数的功能,因此将此功能定义成子过程。
(3)在程序中将每一处交换两个数的地方都换成子过程调用的形式。
实验五常用控件和普通菜单设计一、实验目的1.掌握单选钮、复选框、框架等控件的基本用法。
2.掌握菜单设计技术。
二、实验内容1.做一个简易考试系统,包括两道单选题,一道多选题(4个选项,正确答案为其中三个选项),一道填空题,要求所有的题目做在一个窗体界面上,题目及答案自定。
评分标准为:单选题每题20分,多选题40分(错选不得分,漏选:选中一个得10分,选中两个得20分),填空题20分,满分100分,共4道题,点击提交按钮,用msgbox函数显示总成绩以及每题的得分情况。
步骤:先设计一个单选题,调试成功了再设计一个单选题,在调试成功了设计多选题,单选题主要考虑如何用框架分组,多选题主要考虑实现按照评分标准判分,最后设计分数的显示功能。
2.设计一个三级菜单,每一级别并列项数不少于两项。
并让其中的几项有一定的功能(自定义)综合练习:用数组结合自定义类型实现以下功能:首先从界面上依次输入一些(不超过5个)学生的姓名和成绩信息,每输入一个学生信息,点击一下“下一个”按钮,输入5个学生后,依次自动显示出5个学生信息,然后在同一个窗体上设置查询功能,使得能够通过输入学生的姓名进行查询(设置姓名文本框以及查询按钮),若该姓名与曾经输入的某个学生的姓名相同,则在窗体的左上角显示出该学生姓名以及成绩,如果不同,则给出相应提示信息,如果输入的学生信息超过5个,给出出错信息。
步骤:(1)定义一个存放学生信息的数组。
(2)每次输入一个学生信息,都将其信息存入数组中。
(3)每次输入一个学生信息,都要判断是否已经是第5个学生,如果是,就显示数组中所有学生信息,如果超过5,则给出出错信息。
(4)输入需要查询的学生信息后,将其姓名与数组中存放的所有学生的信息进行比较,若存在相同,则显示出所有信息,若不存在相同的,显示相应提示信息。
实验六项目实践-----五子棋软件设计一、实验目的1.通过五子棋软件设计或者自拟题目设计,巩固本课程所学的各个章节重点知识,自拟题目的同学需尽早向教师提出自己的想法及设计方案。
2.通过开发一个较大的系统,增强软件开发能力。
3.通过调试系统,增强逻辑思维能力。
二、实验内容1.基本要求:(1)输入两个对手名字,然后进入游戏界面。
(2)用鼠标点击的方式在棋盘上摆放棋子,黑白交替。
(棋盘15*15)(3)可以悔棋。
(4)五子连在一起的时候能判断胜利,并且显示出胜利者的名字。
(5)能够将棋局的结果保存,保存该棋局结束的状态、对手名字、棋局名字(棋局名字在保存时由用户在相应的界面下添入)(此功能要求用数据库和文件两种技术实现)。
(6)棋局能够恢复,即重新打开,打开后出现棋局结束的状态、对手名字(此功能要求用数据库和文件两种技术实现)。
2.其它要求:(1)界面友好、漂亮。
(2)程序尽可能无bug。
(3)程序健壮性强,基本上达到无论用户如何操作,软件都不出错,都有相应的处理方法。
3.设计步骤(1)首先做界面界面包括几个窗体,窗体上有相应的控件。
因为需要画棋盘,所以必须有图形容器,这里用picturebox框第一个窗体是登陆界面,因为玩家姓名需要在程序中不断变换,因此需要将玩家名定义成两个变量,又因为这两个变量在几个窗体中都用到,所以在模块中定义为全局变量当五子棋主界面启动之后,首先系统要自动绘制棋盘。
思路:用直线绘制棋盘----直线是由点绘制的---每个点都有坐标----改变坐标系为用户坐标系用户坐标系的定义要在窗体启动时实现。
(2)坐标系的两个顶点坐标的确定?考虑到五子棋15*15,确定棋盘坐标系顶点为(-8, 8),(8, -8)(3)棋子的绘制与存储棋子的绘制用实心圆模式,颜色为黑色及白色两种。
棋子在内存中的存储方式:因为表示各个棋子的数据类型都相同,所以考虑用数组存储,因为棋盘是二维的,因此棋子用二维数组a存储。
a(i,j)表示用户坐标(i,j)的棋子状态,0表示此处无棋子,1表示此处为黑子,2表示此处为白子,下棋初始时,棋盘所有位置的初始状态都为0 (4)下棋子的步骤鼠标点击棋盘交叉点附近的位置,系统应实现自动识别鼠标点击位置附近的交叉点解决方法:坐标系的变换已经将棋盘交叉点坐标整数化,因此系统所需要实现的功能即是将鼠标所点击的位置坐标化为整数即可,例如将(6.2, -5.3)变成(6, -5)。
在交叉点上交替下黑白棋子。
解决方法:定义一个逻辑数据类型变量blackwhite,该变量的值为真时下黑子,为假时下白子,每下一个棋子,该变量的值都要取反(NOT)。
判断赢棋每次下子时都必须进行赢棋判断,判断的依据是5个子按照横线、竖线或斜线连成一行。
解决方法:2层循环。
当有一方胜利时,棋局结束,此时在棋盘上继续点击,将不再下棋。
解决方法:设置一个逻辑变量wuziqi,其值为真时说明棋局没有结束,可以在棋盘上放棋子,该值为假时,说明该棋局结束,不能放棋子。
(6)五子棋保存棋局思路:保存棋局的功能即把内存中与棋局相关的数据(棋局名称、棋子位置、棋子颜色、棋局状态(即棋局是否结束))存入外存中,以便以后能够恢复棋局。
保存的实现用两种技术实现:文件和数据库。
采用数据库技术实现棋局保存:数据库设计:数据表字段:棋局名、x坐标、y坐标、该点状态值、下棋状态。
每条记录表示棋盘上一个存储的点的信息。
要实现用数据库保存数据,就必须使程序连接到数据库上,这里用的是data控件,通过在程序中对data控件属性的设置来连接数据库、数据表。
首先判断如果输入的棋局名和当前记录的棋局名相等,说明表中有输入棋局名对应的棋局信息,将其删除,判断过程是将用户输入的棋局名(字符串)从记录集(即表)的棋局字段顶端至下逐一比较在表的最后,也就是最后一条记录后加上新保存棋局的各条记录因为棋盘上空点居多,大部分点的信息为0,因此只需保存有棋子的点的信息用文件技术进行棋局保存,思路相同。
(7)五子棋恢复棋局思路:首先从数据库文件中找到要恢复棋局的数据(即曾经保存的数据),然后把这些数据赋值给内存中相应的数组或者变量中,按照这些数据重新绘制棋盘和棋子,即完成了对棋局的恢复。
窗体启动事件应该完成的事情:组合框中应该显示曾经保存的棋局名。
因为每次保存棋局时,都是将棋局所有棋子的记录添加在表的最后,因此表中关于棋局名的记录只能是类似于aaabbbbccccc的形式,而不可能是abbcacc的形式,根据这个特点编程序取出表中不同的棋局名。
具体算法:用一个字符串变量strfile初始值为空,从表的顶端向下依次移动记录指针,如果当前记录的棋局名字段和strfile 不相等,说明进入另一个棋局的记录中,将该棋局记录的棋局名赋值给strfile,并加入到组合框中,一直到表中最后一个记录因为要从数据库中取出相关数据到a数组中,因此要将a数组所有数据清零。