
一、项目,数据库与表操作
打开T盘根目录中的项目文件JXGL,在该项目中已经有一个数据库JXSJ。
1.在JXSJ数据库中按如下表格中所示的结构创建AB01.DBF表,并按照表格中的要求设置相关属性。
| 字段名 | 数据类型 | 宽度 | 字段标题 |
| CG | C | 20 | 场馆 |
| WZ | C | 1 | 位置 |
| SJZT | M | 设计主题 | |
| ZDMJ | N | 10(小数2位) | 占地面积 |
(2)设置CG字段的有效性规则:不能为空字符串;
(3)设置ZDMJ字段的输入掩码:整数部分从右至左每3位用“,”字符隔开;
(4)设置WZ字段的有效性规则:只能是“A,B,C,D,E”中的一个;
(5)创建索引名为ABCD的普通索引,要求按位置排序,位置相同时按占地面积排序。
【操作解析】
在项目管理器中,选择【数据库】→【JXSJ】→【表】,单击“新建”按钮,利用表设计器,创建AB01.DBF表。
(1) 在表设计器中,选择【表】选项卡,在【表注释】中,输入:世博会场馆简介一览表;
(2) CG字段的有效性规则: NOT EMPTY(CG)
(3) ZDMJ的输入掩码:9,999,999.99
(4) WZ字段的有效性规则: wz $“ABCDE”
或者: WZ=’A’ OR WZ=’B’ OR WZ=’C’ OR WZ=’D’ OR WZ=’E’
(5) 索引表达式: wz + str(zdmj,10,2)
2.在AB01表中输入如下记录:
3.设置项目的图标为:PC.ICO
【操作解析】
右击项目管理器,在弹出的快捷菜单中,选择【项目信息】,选中 “附加图标”,在打开的对话框中,查找指定的图标文件PC.ICO,如下图所示。
4.KC表与CJ表具有相同字段kcmc,以KC表为主表,CJ表为子表,根据kcmc建立永久性关系,并设置两表之间的参照完整性:删除级联,插入。
【操作解析】
在KC表中,以kcmc字段建立主索引或者候选索引;
在CJ表中,以kcmc字段建立普通索引;
在数据库设计器中,从KC表的kcmc主(候选)索引拖动鼠标至CJ表的kcmc普通索引,建立永久性关系连线,双击该永久性关系连线,设置“参照完整性”,注意,初次设置时,需要“清理数据库”。
二、设计查询
【操作解析】
SELECT Kc.kcdm, Kc.kcmc, count(*) as 人数, avg(cj.cj) as 平均成绩,;
sum(iif(cj<60,1,0)) as 不及格人数;
FROM jxsj!kc INNER JOIN jxsj!cj ;
ON Kc.kcdm = Cj.kcdm;
GROUP BY Kc.kcdm;
ORDER BY 4 DESC
To table ABC.DBF
【操作步骤如下列图】
三、设计菜单
JXGL项目中已存在菜单MENU,其中已定义了”文件”菜单栏及其中的”退出菜单”项。按如下要求设计菜单,完成后的运行效果如图1所示。
(1)创建“人员管理”菜单栏,并创建其子菜单“录入”、“修改”、“浏览”;
(2)在菜单项“录入”与“修改”,“修改”与“浏览”之间插入分组线
(3)为“浏览”菜单设置访问键“B”
(4)为”浏览”菜单项设置快捷键ctrl+B
(5)为”浏览”菜单设置命令:select * from js
【操作解析】
(2)分组线用“\\-”表示
(3)访问键表示为: 浏览(\\(4)快捷键在【选项】中设置:CTRL+B
四、设计表单
表单FRM11A用于学生选课等操作。按下列要求修改表单,修改后表单运行时如下图所示。
1、修改表单的有关属性,使表单的标题为“选课表单”
【操作提示】修改表单的caption属性为“选课表单”
2、在表单右侧添加一个列表框list2,用于显示学号和被选课程代码;
【操作提示】直接从控件工具栏中,向表单中添加一个列表框
3、修改“命令”按钮的click事件代码:在最后添加一条语句,其功能是将mxh+thisform.LIST1.VALUE的值添加到list2中。
【操作提示】 Thisform.LIST2.ADDLISTITEM(mxh+Thisform.LIST1.Value)
4、添加一个命令按钮,如图2 所示,“退出”按钮的功能是释放表单, 为其click事件编写代码,实现释放表单的功能。
【操作提示】 Thisform. RELEASE
五、程序改错
2011秋-vfp02
一、项目,数据库与表操作
打开T盘根目录中的项目文件JXGL,在该项目中已经有一个数据库JXSJ。
1.在JXSJ数据库中按如下表格中所示的结构创建AB02.DBF表,并按照表格中的要求设置相关属性。
| 字段名 | 数据类型 | 宽度 | 字段标题 |
| RQ | D | 日期 | |
| CG | C | 20 | 场馆 |
| SCRS | N | 10 | 参观人数 |
| PJSJ | N | 4(小数2位) | 平均排队时间 |
(2)设置RQ字段的默认值:当前系统日期;
(3)设置PJSJ字段的有效性规则:排队最长时间不能超过12小时
【操作提示】有效性规则表达式为:pjsj<=12.0
(4)设置表的删除触发器:只有场馆为空的记录可以删除;
【操作提示】删除触发器表达式为:empty(CG)
(5)创建索引名为ABCD的普通索引,要求按日期排序,日期相同时按平均排队时间排序。
【操作提示】索引表达式:DTOC(RQ,1)+STR(PJSJ,4,2)
2.在AB02表中输入如下记录:
【操作提示】在AB表中输入记录时,因为rq是默认当前系统日期,所以将计算机系统中的当前系统日期改为2010-7-15,就可以正确输入。
3.将自由表GZB设置为包含。
【操作提示】右击自由表GZB,弹出快捷菜单,选择包含
4.KC表与CJ表具有相同字段kcmc,以KC表为主表,CJ表为子表,根据kcmc建立永久性关系,并设置两表之间的参照完整性:更新级联,插入。
二、设计查询
【操作解析】
数据源:XS,CJ
联接:内联接,联接条件XS.XH=CJ.XH
输出字段: XS.XH
XS.XM
count(*)as 考试门数
Avg(cj.cj) as 平均成绩
sum(iif(cj<60,1,0)) as 不及格门数
分组依据:XS.XH
满足条件:平均成绩>=75
排序条件:Avg(cj.cj) as 平均成绩 降序
三、设计菜单
JXGL项目中已存在菜单MENU,其中已定义了”文件”菜单栏及其中的”退出菜单”项。按如下要求设计菜单,完成后的运行效果如图1所示。
图1
(1)创建“成绩处理”菜单栏,并创建其子菜单“录入”、“查询”,并设置分组线;
(2)为在菜单项“查询”创建其子菜单“不及格成绩”,“各门课平均成绩” ,并设置分组线;
(3)为” 不及格成绩”菜单项设置快捷键ctrl+B
(4)为” 不及格成绩”菜单项设置跳过条件:该菜单项不可用
【操作解析】 在选项中设置,跳过条件为.T.
(5)为“各门课平均成绩”菜单项设置命令:
select kcdm,avg(cj)as pjcj from cj group by 1
四、设计表单
表单FRM11B用于学生选课等操作。按下列要求修改表单,修改后表单运行时如下图所示。
(1)修改表单的相关属性,使表单运行时,不显示控制菜单框;
【操作提示】
表单的controlbox=.F. ,minbutton=.F. maxbutton=.F. closable=.F.
(2)如上图所示,在表单上添加一个命令按钮,并修改相关属性;
(3)为“移去“按钮的click事件编写代码:移去list2中选定的行;
【操作提示】
“移去”按钮的click代码:thisform.list2.removeitem(thisform.list2.listindex)
(4)为下拉组合框combo1编写interactivechange事件代码,实现将下拉组合框当前的值赋值给内存变量mxh
【操作提示】 下拉组合框的interactivechange事件代码: mxh=this.value
五、程序改错
STORE '101011001011' TO cBin1, cBin2
nLen=LEN(cBin1)
N=CEILING(nLen/4) && CEILING()函数返回大于或等于指定表达式的最小整数
cHex=SPACE(0)
FOR i=1 TO n
cBit4=RIGHT(cBin1, 4)
cBin1=LEFT(cBin1, ABS(nLen-4*i))
cHex=DO BinToHex WITH cBit4 &&改为 DO BinToHex WITH cBit4 + chex
ENDF
WAIT WIND '二进制数:'+cBin2+'的十六进制形式是:'+cHex
FUNCTION BinToHex
PARA pBin
LOCAL Bit,Hex,Dec
Dec=0
FOR i=1TO LEN(pBin)
Bit=SUBS(pBin, i, 1)
Dec=Dec+VAL(Bit)*2^( LEN(pBin)-i)
ENDFOR
Hex=IIF(Dec<10, STR(Dec, 1), CHR(Dec+55))
RETURN Dec &&改为 return hex
2011秋-vfp03
一、项目,数据库与表操作
打开T盘根目录中的项目文件JXGL,在该项目中已经有一个数据库JXSJ。
1.在JXSJ数据库中按如下表格中所示的结构创建AB03.DBF表,并按照表格中的要求设置相关属性。
(1) 设置表的注释:世博会门票销售统计表
(2)设置XSRQ字段的默认值:当前系统日期;
(3)设置DJ字段的默认值:160
(4)设置MPLB字段的显示类:选项按钮组
(5)设置表的删除触发器:禁止删除
【操作提示】删除触发器规则:.F.
(6)创建索引名为ABCD的普通索引,要求按销售日期排序,销售日期相同时按数量排序。
【操作提示】索引表达式:DTOC(XSRQ,1)+STR(SL,6)
【操作提示】
浏览gzb表,【表】---【替换字段】
4. XS表与CJ表具有相同字段XH,以XS表为主表,CJ表为子表,根据XH建立永久性关系,并设置两表之间的参照完整性:更新级联,插入。
二、设计查询
【操作解析】
数据源:JS,KCAP,KC
联接:内联接,联接条件JS.GH= KCAP.GH
KCAP.KCDM=kc.KCDM
输出字段: JS.XH
JS.XM
count(*)as 任课次数
sum(kc.KSS) as 总课时数
分组依据:JS.GH
满足条件:任课次数>=2
排序条件:count(*)as 任课次数 降序
三、设计菜单
JXGL项目中已存在菜单MENU,其中已定义了”文件”菜单栏及其中的”退出菜单”项。按如下要求设计菜单,完成后的运行效果如图1所示。
【操作解析】
运行程序文件 do pppp.prg
四、设计表单
图2-1 图2-2
【操作解析】
1. form1.caption=“计算圆面积”
2. shape1.width=1,shape1.HEIGHT=1 , Text1.alignment=1
3. valid事件代码:
X=THIS.VALUE
IF X<10 OR X>100
THISFORM.SHAPE1.VISIBLE=.F.
THISFORM.TEXT2.VALUE=""
=MESSAGEBOX("半径取值必须在10~~100之间!",48,"提示窗口")
THISFORM.command1. VISIBLE=.F.
ELSE
THISFORM.command1. VISIBLE=.t.
ENDIF
4. click事件代码:
X=THISform.text1.VALUE &&文本框当前值
THISFORM.TEXT2.VALUE=3.1415926*x*x
THISFORM.SHAPE1.VISIBLE=.t.
THISFORM.SHAPE1 .width= THISFORM.TEXT1.VALUE*2
THISFORM.SHAPE1 . HEIGHT = THISFORM.TEXT1.VALUE*2
五、程序改错
【操作解析】
N=n-1 改为N=n+1
Endwhile----改为enddo
