




已阅读5页,还剩140页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第3章 VBScript脚本语言 图书馆 好书共享 协会会员购书款折扣程序 休闲小游戏程序 图书馆采购组采购人员摇号程序 图书馆职工工资发放程序 求三个数的最大公约数程序 算术四则运算测试程序 本章任务 脚本语言的基本概念及VBScript语言的特点 VBScript语言的语法基础 VBScript选择结构语句的语法及其使用方法 VBScript循环结构语句的语法及其使用方法 VBScript数组定义及其使用 VBScript过程定义及其使用 本章要点 脚本语言的概念VBScript的特点在网页中嵌入VBScript代码的方法VBScript语言的写书规则 3 1VBScript简介 为了使Web网页能够与用户进行交互 或者是为了完成某种特定的功能 网页设计者通常要编写一些小程序并嵌入到网页中 这种完成某种特定功能的小程序 我们称之为脚本程序 系统对脚本程序并不采用编译执行的方法 而是一行一行解释执行 编写脚本的语言称为脚本语言 目前常用的脚本语言有VBScript和JavaScript 而VBScript的基本语法来源于VisualBasic 因而有着广泛的群众基础 3 1 1脚本语言的概念 功能强大 简单易学既可作为客户端编程语言也可作为服务器端编程语言客户端编程语言是可以由浏览器解释执行的语言 当以客户端编程语言编制的程序被下载到一个兼容的浏览器中时 浏览器将自动执行该程序 服务器端编程语言是在服务器上执行的语言 当用户请求网页时 用VBScript编写的服务器端执行的脚本将被服务器执行 3 1 2VBScript的特点 关于VBScript脚本语言 需注意以下问题 1 作为客户端编程语言 VBScript脚本程序一般只能被MicrosoftInternetExplorer浏览器解释执行 而NetscapeNavigater将忽略VBScript脚本 如果需要使用其它的浏览器 可以使用Java和Jscript JavaScript作为客户端编程语言 2 用VBScript作为服务器端编程语言的好处是VBScript不受浏览器的限制 3 用VBScript语言编写的服务器端执行的脚本程序 在网页通过网络传送给浏览器之前被执行 Web浏览器收到的只是标准的HTML文件 3 1 2VBScript的特点 3 1 3在网页中嵌入VBScript代码的方法 动态网页示例 script代码块 默认由客户浏览器执行 图3 1动态网页浏览结果 3 1 3在网页中嵌入VBScript代码的方法 说明 1 网页代码中的 标记的作用是嵌入VBScript代码 该标记的一般格式如下 VBScript代码序列 标记可以出现在HTML文档的任何地方 body或head部分之中 但最好将所有的一般目的的脚本代码放在head部分中 使所有脚本代码集中放置 这样可以确保在body部分调用代码之前所有脚本代码都被读取并解释 一般将 标记中的代码块放在HTML的注释符号 之间 2 网页代码中的标记 的作用是嵌入ASP代码 可以根据需要在其中编写VBScript脚本程序 注意 之间的代码将由服务器解释执行 3 1 4VBScript语言的写书规则 1 程序代码中不区分字母的大小写 2 一行可以写多条语句 语句之间用 分隔 3 一条语句也可以写在若干行上 但需在每行末尾加上续行标记 空格和下划线 4 一行的长度不得超过255个字符 5 在代码中可合理地使用注释 注意以 开头 可以自占一行 也可以直接出现在语句的后面 3 1 4VBScript语言的写书规则 1 程序代码中不区分字母的大小写 2 一行可以写多条语句 语句之间用 分隔 3 一条语句也可以写在若干行上 但需在每行末尾加上续行标记 空格和下划线 4 一行的长度不得超过255个字符 5 在代码中可合理地使用注释 注意以 开头 可以自占一行 也可以直接出现在语句的后面 标识符数据类型常量变量运算符与表达式内部函数 3 2VBScript语法基础 3 2 1标识符 在脚本程序中会用到各种对象 如自定义常量 变量 数组 函数等 为了识别这些对象 必须给每一个对象一个名称 这样的名称称标识符 标识符是用户定义的一种字符序列 在VBScript语言中定义的标识符 必须符合以下命名规则 1 标识符必须是由字母 数字 下划线组成的一串符号 且必须以字母开头 且长度不能超过255个字符 2 由于标识符代表对象的名称 所以用户在选取标识符时应选取有意义的字符序列 以便在程序中能从标识符看出所标识的对象 从而便于阅读和记忆 3 2 2数据类型 VBScript只有一种数据类型 称为Variant 变体类型 型由于各种数据类型的数据均可存放到Variant中 因此我们把Variant中包含的数据信息类型称为子类型 可使用VarType函数返回数据的Variant子类型 Variant中包含的数据信息的子类型如表3 1所示 3 2 3常量 常量又叫常数 是在程序运行过程中其值不改变的量 常量也有数据类型 在VBScript语言中 常量的数据类型有四种 分别是 数值常量 字符常量 逻辑型常量和日期常量 为了提高程序的可读性 用户还可以自己定义常量 用户定义的常量称为符号常量 符号常量定义的一般格式如下 Const常量名 值例如 ConstPI 3 1415926定义后 脚本程序中需要使用 的值 只需写PI即可 在VBScript中还有一些预先定义好的常量可供使用 例用Empty 空值 vbCrLf 回车换行 True 真 等 3 2 4变量 变量的含义 变量是指在程序运行过程中其值可以变化的量 通常用来保存数据 运算的中间结果或最终结果 每个变量有一个变量名 变量名是标识符 变量声明 虽然VBScript允许不声明变量就可以直接使用变量 但为了养成良好的编程习惯 建议在使用变量之前应先声明变量 对变量进行声明的一般格式如下 Dim变量名列表例如 Dimxm nl为了避免用户在不声明变量之前 就使用变量 建议在每个 块的首行加上语句 OptionExplicit 该语句将强制每个变量都必须声明 否则就会出现错误 3 2 5运算符与表达式 运算符就是表示运算的符号由运算符把运算对象连接在一起的有意义的式子称为表达式 表达式的运算结果是一个值 根据运算符的运算对象和运算结果的特点 可把运算符分成算术运算符 关系运算符 逻辑运算符和字符串运算符等几类 相应的表达式也可分为算术表达式 关系表达式 逻辑表达式和字符表达式 1 算术运算符和算术表达式 2 关系运算符和关系表达式 3 逻辑运算符和逻辑表达式 3 逻辑运算符和逻辑表达式 有下列表达式 假设x 3 y 5 a 2 b 3 x aAndybAndxb AndNot x y 结果为FalseNota xXorNotbyEquayImpa b 结果为True 4 字符运算符和字符表达式 要求参加连接的两个运算量必须均为字符串数据 可以把不同类型的数据当成字符串来连接 在连接之前系统先把其它类型转换为字符串型 用字符运算符连接运算量所组成的式子称字符表达式 例如 有下列表达式 我们 是教师 结果为 我们是教师 我们的 教龄 15 年 结果为 我们的教龄15年 3 2 6内部函数 3 2 6内部函数 3 2 6内部函数 3 2 6内部函数 随机数函数要产生随机数 可使用Rnd函数 该函数的格式与功能如下 格式 Rnd x 功能 产生一个0 1 不包括0和1 之间的单精度随机数 当x小于0时 总产生同一随机数 当x等于0时 总产生上一次产生的随机数 当x大于0时 产生序列中的下一个随机数 x值可以缺省 缺省时与x大于0等价 通常使用该函数之前 用Randomize语句初始化 然后使用不同参数的Rnd 函数 Randomize语句使随机数生成器具有一个基于系统计时器的种子 若要生成某给定范围内的随机整数 可使用此公式 Int upperbound lowerbound 1 Rnd lowerbound 这里 upperbound是此范围的上限 而lowerbound是此范围的下限 3 2 6内部函数 3 3任务3 1 购书款折扣计算程序 选择结构程序设计 任务3 1描述 请为图书馆 好书共享 协会编写一个会员购书款折扣计算的动态网页程序 程序运行时 首先出现如图3 5所示的 姓名输入 对话框 输入姓名后按 确定 按钮 将会出现如图3 6所示的 性别输入 对话框 输入性别后按 确定 按钮 将会出现如图3 7所示的 好书共享 协会会员书款折扣计算网页 在文本框中输入书款后按 确定 按钮 将会出现如图3 8所示的对话框 显示用户应付的书款 书款折扣率计算规律如下 书款小于1000元时 0 95折 书款大于等于1000元而小于2000元时 0 9折 书款大于等于2000元而小于4000元时 0 8折 书款大于等于4000元时 0 7折 3 3任务3 1 购书款折扣计算程序 选择结构程序设计 图3 5 姓名输入 对话框 图3 6 性别输入 对话框 图3 7 好书共享 协会会员书款折扣计算网页 图3 8 用户应付书款 对话框 3 3任务3 1 购书款折扣计算程序 选择结构程序设计 任务分析 访问网页时 出现的输入姓名和输入性别的对话框 在VBScript中可以用InputBox 函数来实现 根据用户输入的性别来给出是 先生 或 女士 的称呼 可用if else endif双分支语句来实现 问候语是随着时间的变化而变化的 有 上午好 下午好 和 晚上好 因此有三种不同的情况 可通过if else endif语句的嵌套来实现 也可以使用块if语句来实现 本任务使用块if语句来实现 显示当前日期和时间比较简单 此处不再详述 要显示中文的 星期几 可先使用weekday 函数得到一个指示今天是星期几的数值 由于一周有7天 有7个分支 也可以用if else endif语句的嵌套或块if语句来实现 但对于多分支 最好使用多分支语句selectcase endselect来实现 书款的折扣计算也可以通过selectcase endselect语句来实现 显示应付书款 可通过msgbox 函数来实现 3 3任务3 1 购书款折扣计算程序 选择结构程序设计 任务实现 1 打开 记事本 程序 在其中输入如下代码 图书馆 好书共享 协会会员购书款折扣计算程序optionexplicitdimxm xb str1 str2 声明四个变量xm inputbox 请输入你的姓名 姓名输入 xb inputbox 请输入性别 性别输入 ifxb 男 then 根据输入的性别 决定称呼str1 先生 elsestr1 女士 endififtime 6 00 00 andtime 12 00 00 andtime 您好 xm str1 str2 该语句输出欢迎词 3 3任务3 1 购书款折扣计算程序 选择结构程序设计 说明 程序代码中根据性别决定称呼的程序段 使用的是双分支程序设计语句if else endif 该语句的一般格式如下 IfThenElseEndIf该语句的功能是 首先计算表达式的值 如果表达式的值为真 True 则执行 语句组1 如果表达式的值为假 False 则执行 语句组2 双分支程序设计语句的执行过程如图3 9所示 箭头表示程序执行的流向 表达式为关系表达式或逻辑表达式 3 3任务3 1 购书款折扣计算程序 选择结构程序设计 程序中根据当前时间决定问候语的语句程序段 是一个块if语句 该语句的一般格式如下 IfThenElseIf Else EndIf 3 3任务3 1 购书款折扣计算程序 选择结构程序设计 程序中的姓名输入和性别输入均使用了InputBox函数 该函数的一般格式如下 V InputBox 提示 标题 缺省值 注意 参数 提示 用来设置提示用的文字信息 可在其中使用硬回车符 CHR 13 来使文本换行 对话框的高度和宽度随着 提示 内容的增加而增加 最多可有1024个字符 如果省略了某些可选项 必须加入相应的逗号分隔符 例 V InputBox 信息内容 对话框标题 默认内容 欢迎词的输出使用了document对象 该对象代表html文档 它的方法write 用来向文档中输出内容 3 3任务3 1 购书款折扣计算程序 选择结构程序设计 2 把该网页代码保存到D ASPExample CH03文件夹下 取名为Task3 1 asp 启动浏览器 在地址栏输入 http LocalHost ASPE CH03 Task3 1 asp后按回车键 首先将出现如图3 5所示的 姓名输入 对话框 输入姓名后按 确定 按钮 将会出现如图3 6所示的 性别输入 对话框 输入性别后按 确定 按钮 将会出现如图3 11所示的问候网页 图3 11问候网页 3 3任务3 1 购书款折扣计算程序 选择结构程序设计 3 在Task3 1 asp网页的Body部分的下部 继续添加下列代码 然后保存 dimy m d t w stry year date 取得当前年m month date 取得当前月d day date 取得当前日t time 取得当前时间 selectcaseweekday date 判断weekday 函数的值形成中文 星期几 信息case1w 星期日 case2w 星期一 case3w 星期二 case4w 星期三 case5w 星期四 case6w 星期五 case7w 星期六 endselectstr 现在日期时间为 y 年 m 月 d 日 w t response writestr 输出当前日期时间和星期信息 3 3任务3 1 购书款折扣计算程序 选择结构程序设计 说明 程序中分别使用函数year month 和day 取出当前日期的年月日信息 使用time 获得当前时间 使用weekday 函数获取以数字信息表示的今天是星期几 并通过select case语句形成中文信息 星期几 然后通过 运算符把相关的日期时间信息连接在一起 最后使用response对象的write方法输出日期时间信息 3 3任务3 1 购书款折扣计算程序 选择结构程序设计 本例使用了多分支语句selectcase endselect 该语句的一般格式如下 SelectCaseCaseCase CaseElse EndSelect 程序段的最后使用Response对象的Write方法把信息输出到客户端 3 3任务3 1 购书款折扣计算程序 选择结构程序设计 4 在浏览器中再次浏览该ASP网页 网页的浏览结果如图3 13所示 5 再在Task3 1 asp网页的Body部分的下部添加如下代码 然后保存 图3 13显示了日期时间信息的网页 欢迎你使用图书馆 好书共享 协会会员购书款折扣计算程序请输入你的总书款 okbtn按钮的单击事件代码dimtotalprice givepricetotalprice txtprice valueselectcaseTrue 该循环计算应付书款casetotalprice 0andtotal 1000andtotal 2000andtotal 3 3任务3 1 购书款折扣计算程序 选择结构程序设计 说明 这段程序在网页上显示两个控件 一个名为 txtprice 的文本框控件 用来输入总的购书款 一个名为 okbtn 的按钮控件 单击它将计算出购书的应付款并通过消息框显示出来 在网页中可以通过标记生成与用户交互的域控件 使用它的Type属性来决定生成的域控件的类型 设置标记的Type属性值为text时 将生成文本框控件 设置它的的name属性可给生成的文本框取一个名称 并可在程序中通过该名称来引用文本框 文本框中显示的值可通过它的value属性取得 3 3任务3 1 购书款折扣计算程序 选择结构程序设计 设置标记的Type属性值为button时 将生成命令按钮 简称按钮 控件 设置它的的name属性可给生成的命令按钮取一个名称 并可在程序中通过该名称来引用该命令按钮 命令按钮上显示的文本可通过它的value属性来设置 代码块中的最后一条语句是用msgbox函数显示应付书款 msgbox函数用于向用户发出提示信息 并要求用户做出必要的回答 该函数的格式如下 MsgBox 提示 对话框类型 标题 注 对话框类型 是一个整型表达式 由表3 10中的三组数值常量组合而成 形式为C1 C2 C3 它决定出现在对话框中的按钮数目与类型 图标类型及缺省按钮 标题 指定对话框的标题 该函数有一个返回值用来指示用户按下了哪个按钮 其取值及含义如表3 11所示 3 3任务3 1 购书款折扣计算程序 选择结构程序设计 6 在浏览器中再次浏览该ASP网页 至此本任务顺利完成 说明 ASP网页的运行模式也是事件驱动 网页在浏览器中出现后将一直在侦察是否有事件的发生 当发生某个事件时 如用户单击了某个控件 将会执行该控件的相应事件过程 如本任务中 网页在浏览器中出现后 如果用户不做任何操作 网页将一直在等待 如果单击了 确定 name属性值为okbtn 按钮 将会发生该按钮的OnClick事件 并执行对应的事件过程或代码段 可以通过以下方法使一个代码段与某控件的对应事件联系起来 当在浏览器中浏览网页时 如果发生了由 控件名 指定的控件的由 事件名 指定的事件时 将会执行 块之间的语句组 3 3任务3 1 购书款折扣计算程序 选择结构程序设计 归纳说明 选择结构是一类非常重要的程序设计结构 本节通过一个任务 图书馆 好书共享 协会会员购书款折扣计算的动态网页程序 的实现过程 全面讲解了VBScript的选择结构语句 包括If else endif语句 块if语句和Selectcase EndSelect语句 选择结构的语句也可以嵌套 所谓选择结构语句的嵌套是指在选择结构的一个分支中又完整地包含了另一个选择结构语句 3 3任务3 1 购书款折扣计算程序 选择结构程序设计 拓展提高 1 If Then else Endif语句中的Else及其后的语句组可以省略 这就是单分支选择结构 即在表达式为True时 执行Then后面的语句组 在表达式值为False时 不执行任务语句 2 在选择结构语句中还有一条行If语句 它通常用在每个分支是一条语句的情况下 行If语句的一般格式如下 If 条件 Then 语句1 Else 语句2 当程序运行到行If语句时 首先测试 条件 如果 条件 为True 则执行Then部分的 语句1 如果 条件 为False 并且有Else子句 则程序会执行Else部分的 语句2 而在执行完Then或Else之后的语句后 会跳转到EndIf之后的语句继续执行 Else子句是可选的 可以在 语句1 或 语句2 中使用冒号 将多条语句组合成一条语句 3 4任务3 2 休闲游戏程序 循环结构程序设计 用计算机解决许多问题一般均需通过循环 可以说没有循环就没有程序设计 在VBScript中 实现循环的语句主要有三条 分别是 Do Loop语句 While Wend语句和For Next语句 3 4任务3 2 休闲游戏程序 循环结构程序设计 任务3 2描述 为图书馆网站编写一个休闲游戏网页 该游戏网页由 猜数 判断某数是否为素数 百钱买百鸡 三个小游戏组成 网页的浏览界面如图3 14所示 此时如果用户单击 猜数 按钮 将会出现如图3 15所示的 猜数游戏 对话框 用户输入猜的数后单击 确定 按钮 如果猜的数小了 将会出现如图3 16所示的提示框 如果猜的数大了 将会出现如图3 17所示的提示框 如果猜中了将会出现如图3 18所示的提示框 同时提示一共猜了几次 单击 判断某数是否为素数 按钮 将会出现如图3 19所示的 判断素数游戏 对话框 如果用户猜错了 将会出现如图3 20所示的提示框 如果用户猜对了 将会出现如图3 21所示的提示框 单击 百钱买百鸡 按钮 将会出现如图3 22所示的 百鸡买百鸡 对话框 供用户输入一种购买的的方案 用户输入方案后按 确定 按钮 如果方案不正确 将会出现提示框告诉你没有答对 如果给出的方案正确 将会出现提示框告诉你回答正确 无论答对答错 最后均会出现如图3 23所示的提示框 告诉用户所有可能的方案 图3 14游戏网页浏览界面 图3 15 猜数游戏 对话框 图3 16 猜小了 的提示框 图3 17 猜大了 的提示框 图3 18 猜中了 的提示框 图3 19 判断素数游戏 对话框 图3 20 猜错 提示框 图3 21 猜对 提示框 图3 22 百钱买百鸡游戏 对话框 图3 23 所有方案 提示框 3 4任务3 2 休闲游戏程序 循环结构程序设计 任务分析 1 猜数游戏的实现方法 可用随机数函数产生要猜的数的范围和要猜的数 然后通过inputbox 函数让用户输入一个数 在循环中判断用户猜的数是否正确 如果不正确 则再弹出输入对话框供用户输入一个数 再进行判断 直到用户输入正确为止 为记录用户猜的次数 可声明一个变量 把它的初值设置为0 用户每猜一次 该变量的值加1 2 判断某数是否为素数的实现方法 本游戏的关键是判断素数的方法 所谓素数是指只能被1和其本身整除的数 换句话说 如果N是素数 则它不能被2 N 1之间的任何一个数整除 因此我们可以用N依次除以2 N 1之间的每一个数 如果有一个数能够整除N 则N不是素数 后面的数也就不用除了 3 4任务3 2 休闲游戏程序 循环结构程序设计 任务分析 3 百钱买百鸡的实现方法 可用 穷举法 来解此问题 所谓穷举法就是将各种组合的可能性全部测试一遍 对每一组合检查它是否符合给定的条件 将符合条件的解全部输出即可 假设公鸡有x只 母鸡y只 小鸡z只 根据题意有这样的等式 根据题意可知 公鸡每只5元 因此最多只能买19只 同样 母鸡每只3元 100元最多买33只 用x代表公鸡数 y代表母鸡数 对于x的值在1 19之间的每种可能 y在1 33之间的每种可能 测试条件是否满足 如果满足则是一种方案 可采用双重循环来解决该问题 小鸡数z可用100 x y得到 并且z要能够被3整除 3 4任务3 2 休闲游戏程序 循环结构程序设计 任务实现 1 启动记事本 在记事本中输入如下代码 游戏程序界面如果你累了 请玩玩游戏吧 3 4任务3 2 休闲游戏程序 循环结构程序设计 2 把该网页代码保存到D ASPExample CH03文件夹下 取名为Task3 2 htm 启动浏览器 在地址栏输入 http LocalHost ASPE CH03 Task3 2 htm后按回车键 将会出现如图3 14所示的 游戏网页 浏览界面 不过此时单击任一按钮 均没有反应 3 在部分的下部 添加下列代码 3 4任务3 2 休闲游戏程序 循环结构程序设计 Dimm n num ans cs m和n分别存放要猜的数的上下界 num存放在猜的数 ans存放用户猜的数 cs表示猜的总次数randomize 随机数初始化m int 50 rnd 产生要猜的数的范围下界n 50 int 50 rnd 产生要猜的数的范围上界num m int n m rnd 产生要猜的数ans inputbox 猜的数的范围为 m n vbclrf 请输入你猜的数 猜数游戏 上述语句让用户输入一个要猜的数ans ans 1 1 使ans具有数值数据的特性 3 4任务3 2 休闲游戏程序 循环结构程序设计 cs 1 猜的次数置1dowhileansnum 如果猜的数不对ifans numthen 如果猜的数比被猜的数大msgbox 很抱歉 你猜的数大了 显示提示信息else 如果猜的数比被猜的数小msgbox 很抱歉 你猜的数小了 显示提示信息endifans inputbox 猜的数的范围为 m n vbcrlf 请输入你猜的数 猜数游戏 上述语句让用户再输入一个要猜的数ans ans 1 1cs cs 1 猜的次数加1loopmsgbox 祝贺你猜中了 共猜了 cs 次 显示猜中信息及猜的次数 3 4任务3 2 休闲游戏程序 循环结构程序设计 说明 本例首先利用随机数函数Rnd产生要猜的数的范围并存放在变量m和n中 接着使用随机数函数产生要猜的数并存放在变量num中 定义一个变量cs用来存放猜的次数 然后通过inputbox 函数让用户输入要猜的数并存放到变量ans中 通过一个do loop循环语句实现在用户猜错的情况下让用户不停地猜 直到用户猜对为止 由于inputbox 函数返回值具有字符串属性 为使其具有数值属性 本例使用了语句 ans ans 1 1 其作用就是使变量ans具有数值特性 3 4任务3 2 休闲游戏程序 循环结构程序设计 循环的概念 从程序设计的角度来看 循环 是指某一个程序段重复执行若干次 被重复执行的程序段称 循环体 在程序中为控制循环的执行 通常需要设定一个条件 当该条件成立时执行循环 当条件不成立时 退出循环 我们把这样的控制循环是否执行的条件称 循环条件 或 循环控制条件 本游戏使用了Do Loop语句来实现循环 该语句的一般形式如下 DoWhileLoop该语句的执行过程如下 首先计算 表达式 的值 如果为True 则执行循环体 然后再次计算表达式的值 如果为True 再执行循环体 重复上述过程 当某一次计算表达式的值时发现表达式的值为False 将退出循环 转入下一语句去执行 执行流程如图3 24所示 图3 24Do Loop语句的执行流程 注 可用ExitDo语句以便中途退出循环 3 4任务3 2 休闲游戏程序 循环结构程序设计 4 保存网页代码 并在浏览器中浏览 此时 猜数 按钮可以使用 读者可根据说明验证猜数游戏是否正确 5 接着在部分的下部 添加下列代码 Dimans i n standard ans存放用户的判断 standard存放标准答案 n为要判断的数randomize 随机数初始化n 3 int 97 rnd 产生要判断的数ans inputbox 请判断 n 是否为素数 Y表示是 N表示否 判断素数游戏 Y 上述语句让用户输入判断信息 fori 2ton 1 循环判断n是否为素数ifnmodi 0thenexitfor 如果n能够为i整除 则不是素数退出循环nextifi nthen 如果i的值与n的值相等 则是素数standard Y 标准答案为 Y else 如果i的值小于n 则不是素数standard N 标准答案为 N endififucase ans standardthen 如果标准答案与用户答案一致msgbox 祝贺您 你答对了 显示答对信息else 答案不一致msgbox 很不幸 你没有猜对 显示答错信息endif 3 4任务3 2 休闲游戏程序 循环结构程序设计 说明 本游戏先用随机数函数产生一个数n 然后通过inputbox 函数让用户判断数n是否的质数 并把用户的回答存放在变量ans中 然后通过一个for循环用n被2 n 1之间的每个数除除看 如果能够n被某一个数整除 则不是素数 退出循环 此时i的值小于n 如果不能被其中的任一个数整除 退出循环时 i的值等于n 所以循环退出时 通过判断i的值就可以知道n是不是素数 并把结果存放在变量standard中 最后比较standard与ans的值是否相等 如果相等则用户回答正确 否则回答错误 并通过msgbox 函数输出提示信息 3 4任务3 2 休闲游戏程序 循环结构程序设计 说明 本游戏使用了For Next循环 一般情况下 在不知道循环需执行多少次的情况下 宜用Do Loop循环 若知道循环的执行次数时 最好使用For Next循环 其一般格式如下 For 循环变量 初值 To 终值 Step 步长 语句列1 ExitFor 语句列2 Next 循环变量 对于For循环 其循环次数可用以下公式计算 可以在循环中的任何位置放置任意个ExitFor语句 以便随时退出循环 图3 25For Next语句执行流程示意图 3 4任务3 2 休闲游戏程序 循环结构程序设计 6 保存网页代码 并在浏览器中浏览 此时 判断某数是否为质数 按钮可以使用 读者可根据说明验证该游戏是否正确 7 接着在部分的下部 添加下列代码 dimcock hen chick x y z ans i n1 n2 standard flag cock hen chick分别用来存放计算出来的公鸡数 母鸡数和小鸡数 ans存放用户输入的答案 x y z分别存放用来输入的公鸡数 母鸡数和小鸡数 standard用来存放各种具体方案 flag是一个标记 标记用户是否答对ans inputbox 公鸡每只5元 母鸡每只3元 小鸡3只1元 用100元买100只鸡 vbcrlf 问公鸡 母鸡 小鸡各多少 请给出一种方案 以 隔开 百钱买百钱 n1 instr ans 得到第一个 位置n2 instr n1 1 ans 得到第二个 位置x left ans n1 1 取左边的数字 公鸡数 y mid ans n1 1 n2 n1 1 取中间的数字 母鸡数 z right ans len ans n2 取右边的数字 小鸡数 x x 1 1 y y 1 1 z z 1 1 使x y和z具有了数的特征flag 0 标记为0 猜对后标记置为1standar 供选的方案有 forcock 1to19 公鸡数从1到19forhen 1to33 母鸡数从1到33chick 100 cock hen 小鸡数为100减去公鸡数与母鸡数ifchickmod3 0then 小鸡数应能被3整除if5 cock 3 hen chick 3 100then 如果钱数刚好是100 则是一种方案standard standard vbcrlf 公鸡数 cock 母鸡数 hen 小鸡数 chickifcock xandhen yandchick zthen 如果用户回答的方案与该方案一致flag 1 置标记flag的值为1endifendifendifnextnextifflag 1then 循环退出后 如果flag的值为1 说明用户回答正确msgbox 祝贺你 回答对了 elsemsgbox 很抱歉 你没有答对 endifmsgbox standard 输出所有方案信息 3 4任务3 2 休闲游戏程序 循环结构程序设计 说明 本游戏通过inputbox 函数让用户输入一种方案 输入的时候用 隔开 并通过字符串函数分离出输入的公鸡 母鸡和小鸡的个数 本题先设了一个标记变量flag 并置它的初值为0 然后通过一个二重循环 找出可能的方案 对每一种可能的方案与用户输入的方案相比较 如果一样 则用户回答正确 并把标记flag置1 如果用户输入的方案与所有可能的方案都不一样 则二重循环退出时 flag的值依旧是0 因此退出循环后 通过判断标记变量flag的值就可以知道用户回答是否正确 并给出相应的提示信息 本游戏使用了二重for循环 是一种循环的嵌套 所谓循环的嵌套是指在一个循环的循环体内又完整地包含了另一个循环 对于循环的嵌套 需注意以下两点 一是循环嵌套中 内层循环与外层循环不能交叉 二是各层循环变量不允许重名 6 保存网页代码 并在浏览器中浏览 此时 百钱买百鸡 按钮可以使用 读者可根据说明验证该游戏是否正确 至此本任务全部完成 3 4任务3 2 休闲游戏程序 循环结构程序设计 归纳说明 循环结构是程序设计中一门非常重要的程序结构 学好它是进入程序设计之门必备的基本功 本节通过若干个休闲游戏程序的实现过程 讲解了VBScript语言中的循环语句的功能及其使用方法 通过猜数游戏讲解了Do Loop语句的语法及其使用方法 通过判断素数游戏讲解了For Next语句的语法及其使用方法 通过百钱买百鸡游戏讲解了循环嵌套的概念及其实现方法 另外还讲解了中途退出循环的语句 ExitDo和ExitFor 拓展提高 前测型循环 允许0次 后测型循环 不允许0次 拓展提高 还有一类实现前测型循环的语句 其基本格式如下 While 条件 语句组 Wend它的作用与DoWhile Loop完全等价 还有一类与数组 对象有关的循环语句 ForEach Next循环语句 该语句的一般格式如下 ForEach 元素 In 名称 ExitFor Next 元素 注意 其中 元素 是用来枚举集合或数组中所有元素的变量 对于集合 元素 可能是Variant变量 Object变量或任意指定的Automation对象变量 对于数组 元素 只能是Variant变量 3 5任务3 3 采购人员摇号程序 一维数组程序设计 任务3 3描述 为图书馆采购组编写一个采购人员摇号网页 网页的初始浏览界面如图3 26所示 单击 输入工作人员姓名并摇号 将会连续出现十个如图3 27所示的 姓名输入框 供用户输入工作人员姓名 输入十个工作人员的姓名后 系统将会自动抽取出6名工作人员为采购组人员 并以对话框的形式显示出来 如图3 28所示 图3 26采购人员摇号网页初始浏览界面 图3 27工作人员姓名输入框 图3 28选取的采购人员名单 3 5任务3 3 采购人员摇号程序 一维数组程序设计 任务分析 可定义一个具有十个元素的数组TeaSel 每个元素的下标与工作人员的编号相对应 元素的值与对应编号的工作人员是否被选中相对应 首先把每个元素值设为0 然后通过循环产生6个1 10之间的各不相同的随机数 以随机数为下标 把对应元素值置为1 然后通过判断TeaSel数组中的每个元素值是否为1 就可以知道相应编号的工作人员有没有被选中 3 5任务3 3 采购人员摇号程序 一维数组程序设计 任务实现 1 启动记事本 在记事本中输入如下代码 采购人员摇号程序采购组采购人员摇号规则如下 某次图书采购 需要6名采购人员 采购组一共有10名工作人员 他们的编号分别是1 10 请编写程序 随机抽取6名工作人员作为采购人员 并输出他们的编号和姓名 3 5任务3 3 采购人员摇号程序 一维数组程序设计 2 把该网页代码保存到D ASPExample CH03文件夹下 取名为Task3 3 htm 启动浏览器 在地址栏输入 http LocalHost ASPE CH03 Task3 3 htm后按回车键 或直接双击该网页 将会出现如图3 26所示的网页浏览界面 不过此时单击按钮 没有反应 3 在部分的下部 添加下列代码 DimTeaSel 10 用来判断对应编号的工作人员是否被选中 下标为编号 DimTeaXM 10 用来存放对应编号的工作人员姓名 下标为编号 DimTeaNo 6 存放选出的采购人员的编号Dimi j k selmessagefori 1to10TeaSel i 0 给TeaSel数组每个元素赋值为0next 输入采购组人员姓名fori 1to10 输入编号为i的人的姓名TeaXM i inputbox 请输入第 i 个人的姓名 姓名输入框 next 3 5任务3 3 采购人员摇号程序 一维数组程序设计 说明 程序代码中 首先定义了三个一维数组 TeaXM TeaNo和TeaSel 其中TeaXM数组用来存放对应编号的工作人员姓名 TeaSel用来存放对应编号的工作人员是否被选中 TeaNo用来存放选出的采购人员的编号 然后通过一个For循环 给TeaSel数组中的数组元素TeaSel 1 TeaSel 10 赋值0 表示没有人被选中 接着再通过一个For循环 利用InputBox 函数输入10个工作人员的姓名并存放到TeaXM数组的各数组元素中 3 5任务3 3 采购人员摇号程序 一维数组程序设计 说明 数组在使用之前必须先定义 一维数组定义的一般语法格式如下 Dim数组名 上界 其中数组名是任何合法的标识符 在VBScript中 数组的下界总是0 上界确定了引用数组元素时下标的最大值 如本任务中的命令代码 DimTeaSel 10 就声明了一个包含11个元素的一维数组 其元素分别为 TeaSel 0 TeaSel 1 TeaSel 2 TeaSel 3 TeaSel 4 TeaSel 5 TeaSel 6 TeaSel 7 TeaSel 8 TeaSel 9 和TeaSel 10 虽然括号中显示的数字是10 但由于在VBScript中所有数组的下标下界都是0 所以这个数组包含11个元素 3 5任务3 3 采购人员摇号程序 一维数组程序设计 说明 在VBScript中 通常并不整个使用数组 而是使用数组元素 引用一维数组的数组元素的形式为 数组名 下标 需注意的是下标不能越界 即不能超出上下界范围 下标可以是变量或表达式 这就为在循环中使用数组元素带来了便利 3 5任务3 3 采购人员摇号程序 一维数组程序设计 4 保存网页代码 并在浏览器中浏览 此时单击按钮将会出现十个如图3 27所示的姓名输入框 供用户输入姓名 5 在代码段的下面 输入下列代码并保存 随机抽取编号Randomize 随机数初始化Fori 1to6k int 10 Rnd 1 产生一个工作人员的编号 以下循环产生一个以前没有被选中的工作人员的编号dowhileTeaSel k 0 若该编号的工作人员已被选中 则循环k int 10 Rnd 1 产生一个工作人员的编号loopTeaSel k 1 编号为k的工作人员被选中Next 3 5任务3 3 采购人员摇号程序 一维数组程序设计 说明 首先使用Randomize函数进行随机数初始化 然后通过For循环 随机产生六个工作人员的编号作为采购人员 产生的方法是 在For循环的内部首先通过随机数函数产生一个1 10之间的随机数 接着通过一个Do Loop循环判断以该随机数为编号的相应人员是否被选中 如果已被选中 则接着通过随机数函数产生一个1 10之间的随机数 再判断该编号人员是否被选中 直到找到一个没有被选中的人员 把记录该编号人员是否被选中的数组元素值置1 3 5任务3 3 采购人员摇号程序 一维数组程序设计 6 在代码段的下面 输入下列代码并保存 以下把选中的工作人员编号存放到数组TeaNo中i 1 作为TeaNo数组的下标Forj 1to10 遍历TeaSel数组ifTeaSel j 1then 如果TeaSel j 被选中TeaNo i j 把该工作人员的编号j存放到数组元素TeaNo i 中i i 1 i值加1 准备存放下一个被选中的采购人员的编号endifnext 说明 通过一个For循环 在循环中判断数组TeaSel的每一个元素值是否为1 如果为1说明对应的人员被选中 把它的编号存放到数组TeaNo的相应数组元素中 请读者考虑代码中变量i的作用 并体会这种处理的技巧 3 5任务3 3 采购人员摇号程序 一维数组程序设计 7 在代码段的下面 输入下列代码并保存 以下显示被选中的采购人员编号和姓名selmessage fori 1to6selmessage selmessage 编号 TeaNo i 姓名 TeaXM TeaNo i chr 13 nextmsgbox selmessage 说明 上述程序段中 通过一个循环 在循环中引用数组元素TeaNo i 和TeaXM TeaNo i 依次把选中人员的编号及对应编号的人员姓名连接到字符串selmessage中 循环过后通过msgbox 函数输出选中的采购人员的信息 8 双击该Task3 3 htm文件 在浏览器中浏览该网页并测试网页的正确性 至此本任务全部完成 3 5任务3 3 采购人员摇号程序 一维数组程序设计 归纳说明 本小节通过 采购人员摇号程序 任务的实现过程 讲解了一维数组的定义方法 一维数组元素的引用方法 一维数组元素其实就相当于一个变量 凡是能够使用变量的地方就可以使用数组元素 需要特别注意的是 在VBScript中 数组元素的下标是从0开始的 3 6任务3 4 员工工资发放程序 二维数组程序设计 任务3 4描述 为图书馆编写一个工资发放的网页 网页的初始浏览界面如图3 29所示 此时单击 输入工资数据并显示 将会连续出现如图3 30 3 31 3 32 3 33所示的对话框供用户输入职工的编号 基本工资 职务工资和水电费 当图书馆10名职工的工资数据输入完成后 将自动计算出职工的应发工资 并把工资信息以表格的形式显示出来 如图3 34所示 图3 29工资发放网页浏览界面 图3 30 编号输入 对话框 图3 31 基本工资输入 对话框 图3 32 职务工资输入 对话框 图3 33 水电费输入 对话框 图3 34显示出来的职工工资信息 3 6任务3 4 员工工资发放程序 二维数组程序设计 任务分析 由于每个职工均有编号 基本工资 职务工资和水电费等数据 为存放这些数据可定义一个二维数组 数组的一行存放一名职工的数据 数组至少有5列组成 分别存放职工的编号 基本工资 职务工资 水电费和应发工资 为求出每名职工的应发工资 可通过一个循环 在循环中对存放相应数据的列进行运算即可 3 6任务3 4 员工工资发放程序 二维数组程序设计 任务实现 1 启动记事本 在记事本中输入如下代码 工资发放程序工资发放程序每个职工的工资由基本工资和职务工资两部分组成 在发工资时还应扣除当月的水电费 假设图书馆有10名职工 请编程输入10名职工的基本工资 职务工资和水电费 计算出应发工资并输出 应发工资 基本工资 职务工资 水电费 3 6任务3 4 员工工资发放程序 二维数组程序设计 2 把该网页代码保存到D ASPExample CH03文件夹下 取名为Task3 4 htm 启动浏览器 在地址栏输入 http LocalHost ASPE CH03 Task3 4 htm后按回车键 或直接双击该网页 将会出现如图3 29所示的网页浏览界面 不过此时单击按钮 没有反应 3 在部分的下部 添加下列代码 Dimgzarray 10 5 定义存放职工编号和工资信息的数组dimi j 定义循环变量fori 1to10 本循环输入职工编号和工资信息gzarray i 1 inputbox 请输入第 i 个职工的编号 编号输入 gzarray i 2 inputbox 请输入第 i 个职工的基本工资 基本工资输入 gzarray i 3 inputbox 请输入第 i 个职工的职务工资 职务工资输入 gzarray i 4 inputbox 请输入第 i 个职工的水电费 水电费输入 next 3 5任务3 3 采购人员摇号程序 一维数组程序设计 说明 程序代码中 首先定义了一个具有11行6列的二维数组gzarray 然后通过一个for循环 输入10名职工的编号 基本工资 职务工资和水电费并分别存放到gzarray数组中 二维数组也必须先定义后使用 二维数组定义的一般格式如下 Dim数组名 上界1 上界2 其作用是定义一个由 数组名 命名的二维数组 数组的第一维的上界由 上界1 确定 数组的第二维的下界由 上界2 确定 数组的各维下界均为0 3 5任务3 3 采购人员摇号程序 一维数组程序设计 说明 例如有如下数组定义 DimA 2 3 该语句定义了一个3行4列的数组 其数组元素有12个 其逻辑结构如图3 35所示 图3 35二维数组的逻辑结构 3 5任务3 3 采购人员
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 消防婚恋课件
- 贝柔家庭财产保全与离婚协议书
- 餐饮行业厨师派遣及职业发展支持合同
- 仓储配送中心建设与运营管理合同
- 高端商务礼品文具采购合同模板
- 跨国公司财务报表编制与披露合同协议
- 城市综合体车位购置与商业租赁一体化合同
- 水电站建设标准工程承包合同
- 成都市车辆租赁公司与保险公司合作协议
- 茶叶采摘与加工服务合同范本
- 中医诊所管理规章制度
- 储能科学与工程单选题100道及答案解析
- 安徽省2024年普通高校招生普通高职(专科)提前批院校投档分数及名次
- DB43-T 2375-2022瓶装液化石油气计量规范
- 特丁基噻二唑项目可行性研究报告
- 核电站建设工程承包合同
- 汉字与对外汉语教学知到智慧树章节测试课后答案2024年秋西北师范大学
- APP开发及运营投资协议
- 2025届四川省成都市彭州市重点达标名校中考冲刺卷生物试题含解析
- 成人术中非计划低体温预防与护理-2024中华护理学会团体标准
- 砌体及构造柱圈梁等二次结构施工方案
评论
0/150
提交评论