ZRR RQ C D 12 负责人 注册日期 (1) 设置机器编号字段的输入掩码:第一个字符为任意字符,其它只能输入数字字符; (2) 设置单位字段的默认值:南京大学;
(3) 设置IP地址字段的注释:只能为C类地址;
(4) 设置责任人字段的有效性规则:不能为空;not empty(zrr) (5) 创建普通索引,索引名为abcd,要求按注册日期排序,注册日期相同时按单位排序。 表达式:Dtoc(rq,1) +dw
2、在AB表中输入如下记录: BH B1023 IP 194.11.12.222 DW 南京大学XX系 ZRR 张小 RQ 2010-05-14 3、将自由表CJB添加到当前数据库中,并设置为“包含”。 选择数据库jxsj下方的“表”这个字,然后点“添加”,再在“表”下方找到cjb表,右击,选择“包含”
4、XS表已存在主索引XH,索引表达式为XH;CJ表已存在普通索引XH,索引表达式为XH。以XS表为主表、CJ表为子表,根据XH建立永久关系,并设置两表之间的参照完整性:更新级联、删除级联。 二、设计查询
已知自由表图书表(TSB)含有分类号(flh,C)、书名(sm,C)、价格(jg,N)等字段;自由表图书借阅表(JYB),含有读者类型(lx,C)、分类号(flh,C)等字段,按如下要求修改JXGL项目中的查询CHAXUN:
基于TSB和JYB表查询价格在20(含20)元以上的图书借阅情况。要求:查询输出字段为FLH、SM、教师借阅次数、学生借阅次数、价格;查询结果按价格降序排列;输出去向为表文件TEMP。
注:lx字段值为“J”时表示是教师;为“X”时表示是学生。 筛选:jg>=20
Sum(iif(lx=”J”,1,0)) as 教师借阅次数 ---注意J大写,字符串区分大小写 Sum(iif(lx=”X”,1,0)) as 学生借阅次数 ---注意J大写,字符串区分大小写 Jg as 价格 排序:自己排 去向:自己写 分组:FLH 三、设计菜单
JXGL项目中已存在菜单MENU,其中已定义了“文件”菜单栏及其中的“退出菜单”项。按如下要求设计菜单,菜单运行后的效果如图1所示。
1、在“文件”菜单栏右侧创建“窗口”菜单栏。
2、在“窗口”菜单栏下插入“数据工作期”和“命令窗口”二个系统菜单项。
3、在菜单项“数据工作期”和“命令窗口”之间插入分组线。 4、在“文件”菜单栏下添加“字号还原”菜单项。
5、为“字号还原”菜单项设置命令:_SCREEN.FontSize=9。 四、设计表单
表单F102C用于实现对矩阵进行转置。按下列要求修改表单,修改后表单运行时如图2
所示。
1、设置“行数”微调框spnRows可输入数值的最小值为1,最大值为5,初始值为3. SpinnerLowValue、KeyBoradLowValue 中均输入 1 SpinnerHighValue、KeyBoradHighValue 中均输入 5 Value 3
2、在“生成”按钮的右侧添加一个命令按钮Command2,设置标题为“转置”,初始状态为禁用。
Caption Enabled .F.
3、已知表单已经创建了一个方法程序RandArray(m,n),功能是生成一个m行n列的全局数组arr1.编写“生成”命令按钮的事件代码,要求仅用3条语句实现如下功能:(1)调用表单的RandArray(m,n)方法,将行数和列数微调框spnRows和spnCols中的值作为实参数,以生成数组,(2)将全局数组名“arr1”设置为List1的数据源;(3)设置“转置”按钮可操作。
Thisform.RandArray(Thisform.spnRows.Value,Thisform.spnCols.value)
Thisform.List1.RowSource=?arr1? Thisform.Command2.Enabled=.T.
4、编写微调框spnCols的InterActiveChange事件代码,当spnCols的值发生改变时,用一条语句实现列表框List1的列数与SpnCols的当前值保持一致。
Thisform.List1.ColumnCount=Thisform.spnCols.value 五、程序改错
下列程序的功能是:将二进制转换成十进制数。其基本算法是:将每一位的二进制数字乘以其相应的权并将乘积相加。二进制数字的权为:以小数点为界,整数部分从右向左依次为20、21、22?;小数部分从左向右依次为2-1、2-2、2-3?。例如二进制数1011.11转换成十进制为1*23+0*22+1*21+1*20+1*2-1+1*2-2=11.75。要求:
① 将下列程序输入到项目中的程序文件PCODE中,并对其中的2条错误语句进行修改; ② 在修改程序时,不允许修改程序的总体框架和算法,不允许增加减少语句数目。 CLEAR
ACCEPT ?请输入二进制数字? TO s2
??二进制数?,s2,?的十进制表示为:?,Trf(s2) FUNCTION Trf()
Parameters s2 &&Parameters cstr n=AT(?.?,cstr)
cstr1=IIF(n>0,SUBSTR(cstr,1,n-1),cstr) cstr2=IIF(n>0,SUBSTR(cstr, n+1),??) STORE 0 TO m1,m2 FOR i=1 TO LEN(cstr1)
m1=m1+VAL(SUBSTR(cstr1,i,1))*2**(LEN(cstr1)-i)
ENDFOR
FOR j=1 TO LEN(cstr2)
m2=m2+VAL(SUBSTR(cstr2,i,1))*2**( -j)
&&改为 m2=m2+VAL(SUBSTR(cstr2,j,1))*2**( -j)
ENDFOR
ENDFUN m1+m2 && RETURN m1+m2
2011C VFP04
一、项目、数据库和表操作
打开T盘根目录中的项目文件JXGL,在该项目中已有一数据库JXSJ。
1、在JXSJ数据库中按如下表格中所示的结构创建AB.DBF表,并按表格中的要求设置相关属性。
字段名 BZDH QCPH RQ JE 数据类型 C C D N 宽度 12 8 8 字段标题 保险单号 汽车牌号 生效日期 保险金额 (1) 设置保险单号字段的注释:自动编号; (2) 这只保险金额字段的输入掩码:采用会计格式(即形如”1,234,457”);99,999,999 (3) 设置保险金额字段的有效性规则:大于等于一万,且小于一千万; Je>=10000 and je<=10000000
(4) 设置表的删除触发器:不能删除;.F.
(5) 创建普通索引,索引名为abcd,要求按保险金额降序排列。je 2、在AB表输入如下记录: BXDH 123420110012 QCPH 苏ABC001 RQ 2011-0402 JE 1,200,000 3、将自由表CJB表添加到当前数据库中,并设置为“包含”。
4、KC表已存在主索引KCDM,索引表达式KCDM;CJ表已存在普通索引KCDM,索引表达式为KCDM。以KC表为主表、CJ表为子表,根据KCDM建立永久关系,并设置两表之间的参照完整性:更新级联、删除限制、插入限制。 二、设计查询
院系专业表(YXZY)含有院系专业代码(yxzydm,C)、专业名称(zymc,C)等字段;学生表(XS)含省市(jg,C)和性别(xb,C)等字段。按如下要求修改JXGL项目中的查询CHAXUN:
基于YXZY表和XS表统计各专业各省市的男女学生人数。要求:输出字段为zymc、jg、xb、人数;查询结果按专业名称排序,专业名称相同时按省市排序;输出去向为屏幕。
Count(*) as 人数
分组:zymc jg xb 顺序不可以错 排序:zymc jg 顺序不可以错 去向:
三、设计菜单
JXGL项目中已存在菜单MENU,其中已定义了“文件”菜单栏及其中的“退出菜单”项。按如下要求设计菜单,菜单运行后如图1所示。
1、在“文件”菜单栏下插入系统菜单“新建(N)?”。 2、在菜单项“新建”和“退出菜单”之间插入分组线。 3、为菜单项“退出菜单”设置快捷键CTRL+E。
4、将菜单项“退出菜单”的“结果”类型由“命令”改为“过程”,并设置过程代码为:
CLEAR ALL
SET SYSMENU TO DEFAULT
5、在“文件”菜单栏右侧创建“管理信息系统”菜单栏。 四、设计表单
表单F102D用于实现对矩阵进行转置,按下列要求修改表单,修改后表单运行时如图2所示。
1、设置表单样式:无最大化、最小化控制按钮,单线边框,运行时自动居中。
MaxButton .F. MinButton .F. BorderStyle AutoCenter .T.
2、设置列表框List1的列分割线隐藏,并设置其数据类型为“数组”。
ColumnLine RowSourceType
3、编写微调框spnRows的InterActiveChange事件代码,要求实现当其值发生改变时,列表框List2的列数与spnRows的当前值保持一致,同时调用“生成”按钮的Click事件的方法程序,以重新生成矩阵。要求仅用2条语句完成。
Thisform.List2.ColumnCount=Thisform.spnRows.Value Thisform.Command1.Click
4、已知表单已创建了一个用来对矩阵进行转置的方法程序TranArray(),该方法将List1中的行列数据进行转置,生成一个对应于转置矩阵的全局数组“arr2”,试编写“转置”按钮的Click事件代码,要求仅用2条语句实现:(1)调用表单的TranArray()方法程序以生成转置矩阵的全局数组“arr2”;(2)将数组名“arr2”设置为列表框List2的数据源。
Thisform.TranArray
Thisform.List2.RowSource=?arr2? 五、程序改错
下列程序的功能是:计算汉字的录入速度,单位为:字/分钟。其基本算法是:从键盘录入汉字至一个字符变量中,当按回车键时结束。统计该变量中汉字的个数及所用的时间,统计时忽略所有的非汉字字符(本题讨论的汉字均为GB2312—80的汉字)。要求:
① 将下列程序输入到项目中的程序文件PCODE中,并对其中的2条错误语句进行修改; ② 在修改程序时,不允许修改程序的总体框架和算法,不允许增加减少语句数目。 CLEAR n=0
t1=DATETIME()
ACCEPT ?开始输入:? TO s t2=DATETIME()
DO WHILE LEN(s)>0
IF ASC(LEFT(s,1))>?127? && IF ASC(LEFT(s,1))>127 n=n+1
s=RIGHT(s,LEN(s)-2) ELSE
s=LEFT(s,LEN(s)-1) ENDIF ENDDO
p=n*60/(t2-t1)
??汉字的录入速度为:?+p &&??汉字的录入速度为:?,p
2011C VFP05
一、项目、数据库和表操作
打开T盘根目录的项目文件JXGL,在该项目中已有一数据库JXSJ。
1、在JXSJ数据库中按如下表格中所示的结构创建AB.DBF表,并按表格中的要求 相关属性。
字段名 ND GJDQ JF BZ 数据类型 C C N M 宽度 4 20 6(小数1位) 字段标题 年度 国家地区 军费 备注 (1) 设置表的注释:世界各国(地区)军费;
(2) 设置年度字段的输入掩码:只能输入数字字符;9999 (3) 设置国家地区字段的显示类:列表框;Listbox
(4) 设置表的更新触发器:只能更新年度为当前年度(以系统日期为准)或上一年度的记录(例如:当前系统日期为2011年,则只能修改2010和2011年度的记录);
Nd=Str(year(date()),4) or Nd=Str(year(date())-1,4)
(5) 创建普通索引,索引名为abcd,要求按年度排序,年度相同时按军费排序。 Nd + Str(jf)
2、在AB表中输入如下记录: ND 2009 GJDQ 美国 JF 6120 BZ 3、将菜单文件MENU设置为项目“包含”。 4、KC表已存在主索引KCDM,索引表达式KCDM;CJ表已存在普通索引KCDM,索引表达式为KCDM。以KC表为主表、CJ表为子表,根据KCDM建立永久关系,并设置两表之间的参照完整性,更新级联、删除级联、插入限制。 二、设计查询
已知课程表(KC)含有课程代码(kcdm,C)、类型(lx,C)和课程名称(kcmc,C)等字段,成绩表(CJ)含有成绩(cj,N)和课程代号(kcdm,C)等字段。按如下要求修改JXGL项目中的查询CHAXUN:
基于KC表和CJ表查询各种类型课程的选课人数、获学分人数。要求:查询输出字段为lx、选课人数、获学分人数;查询结果按类型降序排序,类型相同时按选课人数排序; 去向为临时表TEMP。
注:获学分的条件是cj.cj>=60。