就业数据资源平台
当前位置:首页 > Visual FoxPro
2010年全国计算机等级考试二级VFP习题及答案:第八章2

  多表操作程序设计题

  操作步骤如下:


  (1) 新建表单


  (2) 按题目要求在表单中加入控件:


  命令按纽Command1、Command2;


  标签 Label1、Label2、Label3;


  组合框 Combo1;


  文本框 Text1、Text2、Text3;


  容器 Container1, 并在容器 Container1 中加入文本框 Text1、Text2、Text3、Text4、Text5、Text6、Text7、 Text8、Text9、Text10。


  (3) 数据环境设置:


  将表文件“学生”、“课程”、“成绩”添加到数据环境中。


  (4) 主要属性设置:


  表单 Form1 的Caption 属性设置为 “学生成绩查询表单”


  命令按纽Command1的Caption 属性设置为 “确定”


  命令按纽Command2的Caption 属性设置为 “退出”


  标签Label1的Caption 属性设置为 “选择姓名”


  标签Label2的Caption 属性设置为 “学号”


  标签Label3的Caption 属性设置为 “姓名”


  组合框 Combo1的RowSourceType属性设置为 “6-字段”


  组合框 Combo1的RowSource属性设置为 “学生.姓名”


  (5) 主要事件代码


  1. FORM1 INIT 事件代码:


  THISFORM.SETALL("Readonly",.T.,"Textbox")


  FOR N=1 TO THISFORM.CONTAINER1.CONTROLCOUNT


  THISFORM.CONTAINER1.CONTROLS(N).VISIBLE=.F.


  ENDFOR


  2. COMMAND1 CLICK 事件代码:


  SELECT 学生


  XH=学号


  XM=姓名


  THISFORM.TEXT1.VALUE=XH


  THISFORM.TEXT2.VALUE=XM


  FOR N=1 TO THISFORM.CONTAINER1.CONTROLCOUNT


  THISFORM.CONTAINER1.CONTROLS(N).VALUE=""


  THISFORM.CONTAINER1.CONTROLS(N).VISIBLE=.F.


  ENDFOR


  S=0


  L=1


  SELECT 成绩


  LOCATE FOR ALLTRIM(学号)=ALLTRIM(XH)


  DO WHILE ! EOF()


  SELECT 课程


  LOCATE FOR ALLTRIM(课程号)=ALLTRIM(成绩.课程号)


  KCM=课程名


  SELECT 成绩


  THISFORM.CONTAINER1.CONTROLS(L).VALUE=KCM+":"+STR(成绩,5,1)


  THISFORM.CONTAINER1.CONTROLS(L).VISIBLE=.T.


  S=S+成绩


  L=L+1


  CONTINUE


  ENDDO


  IF L>1


  THISFORM.TEXT3.VALUE="该生的总平均成绩为:"+STR(S/(L-1),5,1)


  ELSE


  THISFORM.TEXT3.VALUE="该生没有选修课程!"


  ENDIF


  SELECT 学生


  THISFORM.REFRESH


  3. COMMAND2 CLICK 事件代码:


  THISFORM.RELEASE


  操作步骤如下:


  (1) 新建表单


  (2) 数据环境设置:


  将表文件“学生”、“课程”、“成绩”添加到数据环境中。


  (3) 按题目要求在表单中加入控件:


  命令按纽组Commandgroup1;


  从数据环境中将“学生”表的“姓名”字段、“课程”表的“课程名”字段、“成绩”表的“学号”字段、“成绩”表的“课程号”字段、“成绩”表的“成绩”字段分别拖入表单对应位置。


  (4) 主要属性设置:


  表单 Form1 的Caption 属性设置为 “学生成绩表编辑表单”


  命令按纽组Commandgroup1的ButtonCount 属性设置为 “7”


  (5) 主要事件代码:


  1. FORM1 INIT 事件代码:


  SET SAFETY OFF


  THISFORM.COMMANDGROUP1.COMMAND4.ENABLED=.F.


  THISFORM.COMMANDGROUP1.COMMAND5.ENABLED=.F.


  C="添加删除退出表头前翻表尾后翻"


  FOR N=1 TO THISFORM.COMMANDGROUP1.BUTTONCOUNT


  THISFORM.COMMANDGROUP1.BUTTONS(N).CAPTION=SUBSTR(C,4*(N-1)+1,4)


  ENDFOR


  SELECT 学生


  INDEX ON 学号 TO XHI


  SELECT 课程


  INDEX ON 课程号 TO KCI


  SELECT 成绩


  SET RELATION TO 学号 INTO 学生, 课程号 INTO 课程


  THISFORM.REFRESH


  2. COMMANDGROUP1 CLICK 事件代码:


  SELECT 成绩


  DO CASE


  CASE THIS.VALUE=1


  APPEND BLANK


  CASE THIS.VALUE=2


  DELETE


  CASE THIS.VALUE=3


  THISFORM.RELEASE


  CASE THIS.VALUE=4


  GO TOP


  THIS.COMMAND4.ENABLED=.F.


  THIS.COMMAND5.ENABLED=.F.


  THIS.COMMAND6.ENABLED=.T.


  THIS.COMMAND7.ENABLED=.T.


  CASE THIS.VALUE=5


  SKIP -1


  IF BOF()


  THIS.COMMAND4.ENABLED=.F.


  THIS.COMMAND5.ENABLED=.F.


  ENDIF


  THIS.COMMAND6.ENABLED=.T.


  THIS.COMMAND7.ENABLED=.T.


  CASE THIS.VALUE=6


  GO BOTTOM


  THIS.COMMAND4.ENABLED=.T.


  THIS.COMMAND5.ENABLED=.T.


  THIS.COMMAND6.ENABLED=.F.


  THIS.COMMAND7.ENABLED=.F.


  CASE THIS.VALUE=7


  SKIP


  IF EOF()


  THIS.COMMAND6.ENABLED=.F.


  THIS.COMMAND7.ENABLED=.F.


  ENDIF


  THIS.COMMAND4.ENABLED=.T.


  THIS.COMMAND5.ENABLED=.T.


  ENDCASE


  THISFORM.REFRESH

就业数据资源平台