版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第1部分实 验 篇73第7章程序设计基础实验7.1 顺序结构程序设计一、实验目的(1)了解程序的概念。(2)掌握程序的创建和运行方式。(3)掌握交互命令ACCEPT、INPUT的使用方法。二、实验内容及步骤(1)编写程序prog1-1.prg,输入任意三个正数,输出它们的平均值。 新建一个程序文件,在程序文件编辑窗口中输入如下程序语句。CLEARINPUT "请输入第一个数:" TO oneINPUT "请输入第二个数:" TO twoINPUT "请输入第三个数:" TO threeavg=(one+two+three)/3? &q
2、uot;这三个数的平均数是:",avgRETURN【提示】新建程序文件可以使用“文件”“新建”命令实现,也可以通过在命令窗口中输入“MODIFY COMMAND <程序文件名>”命令实现。 保存程序,程序文件名为prog1-1.prg。【技巧】按<Ctrl+W>组合键可以保存程序。 运行程序,程序运行结果如图7-1所示。图7-1 程序运行结果【提示】运行程序可以通过单击工具栏上的按钮实现,也可以通过在命令窗口中执行命令“DO <程序文件名>”来实现。【思考】 建立和运行程序还有哪些不同的方式? 如果将程序中的交互语句INPUT改为ACCEPT,程序
3、还能正确运行吗?编程练习1:编写程序proglx1-1.prg,要求是用INPUT语句输入两个日期,计算并显示两个日期相差的天数。【提示】INPUT语句输入日期时要使用严格日期格式,如YYYY-MM-DD。(2)编写程序prog1-2.prg,在“工资表”中,按员工编号查询相应员工的工资信息。 新建一个程序文件,输入如下程序代码。CLEARUSE 工资表ACCEPT "请输入员工编号:" TO ygbhLOCATE FOR ygbh=员工编号?"员工编号:",员工编号?"基本工资:",基本工资?"津贴:",津贴?&
4、quot;公积金:",公积金?"扣款:",扣款?"应发工资:",应发工资USERETURN 保存程序,程序文件名为prog1-2.prg。图7-2 程序运行结果 运行程序,按提示输入员工编号,如输入00001001并按<Enter>键,则显示结果如图7-2所示。【思考】若员工编号不存在,程序结果会怎样显示?这种显示方式是理想的吗?编程练习2:编写程序proglx1-2.prg,要求输入员工姓名,并在员工表中查找该员工的记录,最后显示找到的员工的性别和出生日期信息。实验7.2 选择结构程序设计一、实验目的(1)掌握选择结构的程序设计方
5、法。(2)掌握条件语句、情况语句的使用方法。二、实验内容及步骤(1)编写程序prog2-1.prg,完善实验7.1中的程序prog1-1.prg,使其输入非正整数时,不进行计算和显示。 新建一个程序文件,将程序prog1-1.prg中的代码复制粘贴到该程序中,在该程序中加入IF的单分支结构语句,新程序代码如下。CLEARINPUT "请输入第一个数:" TO oneINPUT "请输入第二个数:" TO twoINPUT "请输入第三个数:" TO threeIF one>0 AND two>0 AND three>
6、0&&新增加的IF单分支语句的开始 avg=(one+two+three)/3 ? "这三个数的平均数是:",avgENDIF&&新增加的IF单分支语句的结束RETURN 保存程序,程序文件名为prog2-1.prg。然后运行程序,输入三个正数查看运行结果。【思考】若输入带有非正数的数据,程序的运行结果是什么?(2)编写程序prog2-2.prg,完善上面的程序prog2-1.prg,使其输入非正整数时,提示出错信息。 新建一个程序文件,将程序prog2-1.prg中的代码复制、粘贴到该程序中,在该程序中加入IF的双分支结构语句,新程序代码如
7、下。CLEARINPUT "请输入第一个数:" TO oneINPUT "请输入第二个数:" TO twoINPUT "请输入第三个数:" TO threeIF one>0 AND two>0 AND three>0&&新增加的IF双分支语句的开始 avg=(one+two+three)/3 ? "这三个数的平均数是:",avgELSE &&新增加的IF双单分支ELSE语句 MESSAGEBOX("输入非法数据,请输入正数!")ENDIF&
8、;&新增加的IF双分支语句的结束RETURN 保存程序,程序文件名为prog2-2.prg。然后运行程序,输入三个正数查看运行结果。再输入带有非正数的数据,则显示对话框进行报错。(3)编写程序prog2-3.prg,根据输入的部门编号查询该部门的员工工资。 新建一个程序文件,输入如下程序代码。USE 部门表ACCEPT "请输入部门编号:" TO bmbhLOCATE FOR 部门编号=bmbhIF FOUND()SELECT 员工表.员工编号,姓名,基本工资 FROM 员工表,工资表;WHERE 员工表.员工编号=工资表.员工编号 AND 部门编号=bmbhELS
9、EWAIT "您输入的部门编号不存在!"ENDIFUSERETURN 保存程序,程序文件名为prog2-3.prg。然后运行程序,提示输入员工编号,如果输入的员工编号在“部门表”中不存在,输出“您输入的部门编号不存在!”,如果输入的员工编号在“部门表”中存在,则输出该部门员工的员工编号、姓名和基本工资三个字段的值。如运行时输入0002,则结果如图7-3所示。图7-3 程序运行结果(4)设计如图7-4所示的表单myform7-1.scx,要求在选项按钮组中选择查询的内容,若单击“查询”按钮,则查询对应的信息。 创建一个表单,添加一个选项按钮组,将其ButtonCount属性设
10、置为“4”,将组内的选项按钮Option1、Option2、Option3和Option4的标题(Caption)分别设置为“员工编号”、“姓名”、“性别”和“出生日期”。添加一个命令按钮,其标题设置为“查询”。 为“查询”按钮的Click事件过程添加如下代码。DO CASE CASE ThisForm.OptionGroup1.Value=1SELECT 员工编号 FROM 员工表 CASE ThisForm.OptionGroup1.Value=2SELECT 姓名 FROM 员工表 CASE ThisForm.OptionGroup1.Value=3SELECT 性别 FROM 员工表
11、CASE ThisForm.OptionGroup1.Value=4SELECT 出生日期 FROM 员工表 ENDCASE 保存表单,表单文件名为myform7-1.scx。运行表单,当选中“姓名”单选按钮,并单击“查询”按钮时,其查询结果如图7-5所示。图7-4 表单属性设置效果图7-5 程序运行结果编程练习:设计如图7-6所示的表单myform7-2.scx,要求如下。 在表单中添加一个选项按钮组,含三个选项按钮,标题分别为“员工表”、“工资表”和“部门表”。再添加一个命令按钮,标题为“备份”。 为“备份”按钮的Click事件过程编写程序,使得表单运行以后,在选项中选择某表,并单击“备份
12、”按钮,则为选中的表生成一个副本。副本表文件名为原始表名后加“2”。例如,选中“员工表”,则备份生成的文件名为“员工表2”。图7-6 表单属性设置效果【提示】查询所用的SELECT语句要使用查询去向子句,如“员工表”选项的Click事件代码如下:SELECT * FROM员工表 INTO DBF 员工表2实验7.3 循环结构程序设计一、实验目的(1)熟练掌握DO WHILE-ENDDO循环结构的应用。(2)掌握SCAN-ENDSCAN和FOR-ENDFOR循环的应用。(3)掌握LOOP和EXIT语句的使用方法。二、实验内容及步骤(1)编写程序prog3-1.prg,计算并显示110的整数和。
13、新建程序文件,输入如下程序代码。CLEARs=0 &&累计和变量i=1 &&循环变量DO WHILE i<=10&&只要i不大于10,就执行一次循环体 s=s+i &&累加整数i i=i+1 &&每执行一次循环体,循环变量i都要加1ENDDO?s 保存程序,程序文件名为prog3-1.prg,运行程序,查看程序结果。编程练习1:编写程序proglx3-1.prg,计算并显示210之间的偶数的积,即2×4×6×8×10。(2)编写程序prog3-2.prg,遍历员工表所有
14、记录,统计所有员工的平均年龄。 新建程序文件,输入如下程序代码。CLEARn=0&&累计员工个数s=0&&累计所有员工年龄USE 员工表DO WHILE NOT EOF()&&当指针没在文件尾时,该条件为真 s=s+(YEAR(DATE()-YEAR(出生日期)&&计算当前记录的年龄,并累加到s中 n=n+1&&每执行一次循环体,员工个数增加1 SKIPENDDO?"平均年龄为"+ALLTRIM(STR(s/n) &&STR将数值转为字符,ALLTRIM去掉空格USERETURN
15、 保存程序,程序文件名为prog3-2.prg,运行程序,查看程序结果。【技巧】员工表中并不包含年龄字段,通过表达式YEAR(DATE( )-YEAR(出生日期)计算出年龄。编程练习2:编写程序proglx3-2.prg,要求是用DO WHILE循环遍历“工资表”,统计并显示所有员工的津贴总和。(3)编写程序prog3-3.prg,遍历“员工表”中所有男员工记录,显示每个男员工的姓名,并统计男员工的人数。 新建程序文件,输入如下程序代码。CLEARn=0USE 员工表LOCATE FOR 性别="男"&&指针定位到第一个符合条件的记录上DO WHILE FO
16、UND()&&可替换为DO WHILE NOT EOF() ?姓名 n=n+1 CONTINUE &&指针定位到下一个符合条件的记录上ENDDO?"男员工人数为"+ALLTRIM(STR(n) USERETURN 保存程序,程序文件名为prog3-3.prg,运行程序,查看程序结果。编程练习3:编写程序proglx3-3.prg,要求是用DO WHILE循环遍历“工资表”中员工编号以2结束的记录,显示记录的员工编号,同时统计并显示这些员工基本工资之和。【提示】用表达式RIGHT(员工编号,1)= "2"判断员工编号是否以2
17、结束。(4)编写程序prog3-4.prg,显示“员工表”中从第三个到最后一个记录范围内,且是党员的员工的员工编号和姓名。 新建程序文件,输入如下程序代码。CLEARn=0USE 员工表GO 3SCAN REST FOR 党员=.T.DISPLAY 员工编号,姓名ENDSCANUSERETURN 保存程序,程序文件名为prog3-4.prg,运行程序,查看程序结果。编程练习4:编写程序proglx3-4.prg,要求是用SCAN循环显示“工资表”从第二到第五个记录范围内基本工资大于1200元的员工编号和基本工资。【提示】要实现从第二到第五个记录的范围,需要先执行GO 2,并在之后的SCAN条件
18、中使用范围子句NEXT 4。(5)编写程序prog3-5.prg,实现将工资表中所有党员的工资增加100元。 新建程序文件,输入如下程序代码。SELECT * FROM 员工表 WHERE 党员=.T. INTO TABLE xUSE xSCAN UPDATE 工资表 SET 基本工资=基本工资+100 WHERE 工资表.员工编号=x.员工编号ENDSCANUSERETURN 保存程序,程序文件名为prog3-5.prg,运行程序,查看程序结果。编程练习5:编写程序proglx3-5.prg,要求是将“工资表”中所有女员工的津贴减少50元。(6)编写程序prog3-6.prg,从左向右搜索字
19、符串"This is a bus!"中,第一个“s”字符出现的位置。 新建程序文件,输入如下程序代码。str="This is a bus!"n=LEN(str)&&str中字符的个数FOR i=1 to n IF SUBSTR(str,i,1)="s" &&SUBSTR(str,i,1)从str中的第i位取一个字符 ?"第一个s的位置为"+ALLTRIM(STR(i) EXIT&&当搜索到第一个s后,不需要继续循环,所以执行EXIT跳出循环 ENDIFENDFOR
20、保存程序,程序文件名为prog3-6.prg,运行程序,查看程序结果。实验7.4 多模块程序设计一、实验目的(1)掌握过程的定义与调用方法。(2)掌握过程调用中的参数传递。二、实验内容及步骤(1)编写程序prog4-1.prg,程序中有两个过程dsp和ist。过程dsp查询“部门表”所有信息,过程ist向“部门表”插入一条新记录,新记录的部门名称和部门编号分别为“招就处”和“0007”。主程序中,在插入记录之前和之后调用两次查询过程dsp,以对比插入记录前后的变化。 新建主程序文件如下。CLEARDO dsp &&查询部门表DO ist &&插入记录DO dsp
21、 &&再次查询部门表PROCEDURE dsp SELECT * FROM 部门表ENDPROCPROCEDURE ist INSERT INTO 部门表(部门名称,部门编号) VALUES("招就处","0007")ENDPROC 保存程序,程序文件名为prog4-1.prg,运行程序,查看程序结果。(2)编写程序prog4-2.prg,程序中有两个过程add和sub,分别实现计算显示两个数之和、两个数之差。在主程序中,用这两个过程分别计算10和5之间的和与差。 新建主程序文件如下。DO add WITH 10,5DO sub WITH 10,5PROCEDURE add&&加法过程PARAMETERS x,y s=x+y ?"x与y的和等于"+ALLTRIM(STR(s)ENDPROCPROCEDURE sub&&减法过程PARAMETERS x,y s=x-y ?"x与y的差等于"+ALLTRIM(STR(s)ENDPROC 保存程序,程序文件名为prog4-2.prg,运行程序,查看程序结
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年大学大二(植物营养学)肥料施用期末测试试题及答案
- 2025年中职(仓储实务综合实训)管理实操试题及答案
- 2025年大学汉语言文学(文学概论基础)试题及答案
- 2025年高职第一学年(工商管理)企业管理综合试题及答案
- 2026年家电维修(洗衣机检修)试题及答案
- 2025年高职健康管理(慢病管理)试题及答案
- 《潮流玩偶服饰设计》动漫玩具设计专业全套教学课件
- 运营中心管理制度新
- 中国银行大学生培训课件
- 养老院老人疾病预防措施制度
- ESHRE子宫内膜异位症的诊断与治疗指南(2025年)
- 基于视频图像的大型户外场景三维重建算法:挑战、创新与实践
- 2025年四川省高职单招模拟试题语数外全科及答案
- 2025年江苏事业单位教师招聘体育学科专业知识考试试卷含答案
- 合肥市轨道交通集团有限公司招聘笔试题库及答案2025
- 《智慧水电厂建设技术规范》
- GB/T 46275-2025中餐评价规范
- 2025年6月大学英语四级阅读试题及答案
- 信访工作系列知识培训课件
- 压力变送器拆校课件
- 2025年高考真题分类汇编必修二 《经济与社会》(全国)(原卷版)
评论
0/150
提交评论