• 135.00 KB
  • 2022-04-22 11:21:13 发布

《Visual FoxPro数据库基础》 习题第八章习题及答案.doc

  • 10页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'第5章表单设计基础一、基本概念1.怎样向容器(Container)中添加控件和对容器中的控件进行操作?2.请说明多个独立的命令按钮与命令按钮组在操作与处理上的区别。3.比较命令按钮组和选项按钮组与一般容器的区别。4.Clear方法适用于哪些控件,其作用是什么?5.在什么情况下需要向表单或表单集中添加新的属性或新的方法?如何添加?6.如何在代码中设置控件的多个属性?如何一次设置容器中多个控件的属性?7.什么是数据环境?对数据环境有哪些操作?如何保存数据环境?8.请列出具有ControlSource属性、RowSource属性和RecordSource属性的控件。9.比较列表框和表格数据源类型的不同。10.请简述计时器控件的作用。二、表单程序设计1.设计一个表单,界面如图8.43,当表单运行时,标签控件自动从左向右移动。图8.43习题12.设计一个显示中文日期的表单,并且可以实现日期的前翻和后翻,界面如图8.44。图8.44习题23.将文本框中输入的金额转换成中文大写的形式,即将123.56转换成壹佰贰拾叁元伍角陆分,最高值为亿。要求:数字金额转换成中文大写金额用方法来实现,表单运行输入数据值金额后,调用这个方法。表单界面如图8.45所示。120 第5章表单设计基础图8.45习题3图8.46习题44.计算指定班级的奖学金总额,表单界面如图8.46所示。除了3个标签控件、3个文本框和两个命令按钮外,再添加3个形状控件,将输入值与显示计算结果的区域、命令按钮的区域区分开来,并设置形状控件的SpecialEffeect属性为3维。注意:班级号不存在,通过对学号的截取来获得,奖学金总额是通过计算得到的。5.显示指定表文件中的全部字段名,表单界面如图8.47所示。要求:表单运行时,在文本框中输入表名(不包括扩展名),在列表框中显示指定表的全部字段名。6.设计表单,查找指定班级学生的名单,表单界面如图8.48所示。要求:表单刚运行时,文本框为空白,输入班级号后,按“确定”按钮,将指定班级学生的姓名添加到组合框中,如果该班级不存在的话,用消息对话框提示班级不存在的信息。图8.47习题5图8.48习题67.设计一个计时器表单,用3个文本框分别显示时、分、秒,界面如图8.49所示。要求:表单刚运行时,各个文本框中显示“00”。单击“开始”按钮后,从0开始计时,单击“停止”按钮停止计时,文本框中显示当前计时的值,单击“退出”按钮结束。(a)表单刚运行(b)停止计时图8.49习题7120 第5章表单设计基础8.设计一个表单,查找指定学生的课程选修情况,其中Combo1的数据源为学生表的姓名,Label2的标题根据组合框中的选择而变化,界面如图8.50所示。要求:表单运行时,Label2、List1是不可见的。在组合框中选择姓名后,在List1中显示该生选修的课程名和成绩。图8.50习题8三、多表操作程序设计题1.对学生“学籍”数据库中的“学生”表,编写一个输入学生信息的程序,要求保证该表的实体完整性。用户界面可以自行设计。2.对学生“学籍”数据库中的“学生”表,编写一个按照“学号”修改某个学生信息的程序,要求保证该表的实体完整性。用户界面可以自行设计。3.表单的界面及控件布局情况如图8.51和图8.52所示,其中顺序排列的控件Text1~Text6被放置在容器Container1中。该表单可实现查询指定学生姓名的所修课程名及成绩情况。具体要求如下:①用户可以在控件Combo1中输入或选择学生姓名;②输入或选择学生姓名后,按回车或“确定”按钮,可在表单的左部控件中以只读方式显示对应的学号和学生姓名以及指定学生姓名所修各门课程的课程名和成绩以及总平均金额;③课程名及成绩显示项可根据表中满足条件的记录个数动态的调整,如果某学生尚无选修任何课程,则课程名及成绩显示项将不出现(包括显示控件和显示数据),且在总平均成绩显示项中显示未选修任何课程的信息;④表单中命令按钮的汉字标题在表单执行后会自动显现。编写完成上述功能的事件代码,要求写明数据源的设置情况及各个事件的名称及归属(假设销售金额显示项最多不超过10项)。120 第5章表单设计基础参考答案一、基本概念略二、表单程序设计1.timer1的timer事件代码:thisform.label1.left=thisform.label1.left+4thisform.refresh2.1.spinner1的upclick事件代码:thisform.text1.value=thisform.text1.value-1thisform.refresh2.spinner1的downclick事件代码:  thisform.text1.value=thisform.text1.value-1thisform.refresh3.(1)新建方法jezh的代码:parameterxc1="零壹贰叁肆伍陆柒捌玖"c2="分角元拾佰仟万拾佰仟亿"m=round(x,2)m=m*100i=0c=""dowhile.t.n=mod(m,10)p1=substr(c1,2*n+1,2)p2=substr(c2,2*i+1,2)c=p1+p2+ci=i+1m=int(m/10)ifm=0exitendifenddoreturnc  (2)Text1的valid事件代码:je=thisform.jezh(val(thisform.text1.value))thisform.text2.value=je120 第5章表单设计基础thisform.refresh4.(1)command1的click事件代码settalkoffsele学生bjh=alltrim(thisform.text1.value)locaforsubstr(学号,1,4)=bjhiffound()sum学生.奖学金tojxjforsubstr(学号,1,4)=bjhthisform.text2.value=bjhthisform.text3.value=jxjelsethisform.text2.value=""thisform.text3.value=""messagebox("该班级不存在!")endifthisform.refresh(2)Command2的click事件代码thisform.release5.  text1的valid事件代码:  tbn=alltrim(thisform.text1.value)iffile("&tbn..dbf") use(tbn) thisform.list1.clear fori=1tofcount() thisform.list1.additem(field(i)) endfor useelse message("指定的表文件不存在!请重新输入!")endifthisform.refresh6.(1)command1的click事件代码bjh=alltrim(thisform.text1.value)sele学生locaforsubstr(学号,1,4)=bjhthisform.combo1.clear120 第5章表单设计基础iffound()thisform.combo1.clearthisform.combo1.displayvalue=学生.姓名dowhilesubstr(学号,1,4)=bjhthisform.combo1.additem(学生.姓名)skipenddoelsemessagebox("没有该班级")thisform.text1.value=""thisform.text1.setfocusendif(2)Command2的click事件代码thisform.release7.(1)Form1的init事件代码:publich,m,sstore0toh,m,sthisform.timer1.enabled=.f.thisform.text1.value="00"thisform.text2.value="00"thisform.text3.value="00"(2)Timer1的timer事件代码:s=s+1ifs>59s=0m=m+1endififm>59m=0h=h+1endififh>24h=0endifs1=iif(s<10,"0"+str(s,1),str(s,2))m1=iif(m<10,"0"+str(m,1),str(m,2))h1=iif(h<10,"0"+str(h,1),str(h,2))thisform.text1.value=h1120 第5章表单设计基础thisform.text2.value=m1thisform.text3.value=s1(3)Command1的click事件代码thisform.timer1.enabled=.t.thisform.text1.value="00"thisform.text2.value="00"thisform.text3.value="00"store0tos,m,h(4)Command2的click事件代码thisform.timer1.enabled=.f.(5)Command3的click事件代码  thisform.release三、多表操作程序设计题操作步骤如下:(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.FORM1INIT事件代码:THISFORM.SETALL("Readonly",.T.,"Textbox")FORN=1TOTHISFORM.CONTAINER1.CONTROLCOUNTTHISFORM.CONTAINER1.CONTROLS(N).VISIBLE=.F.ENDFOR120 第5章表单设计基础2.COMMAND1CLICK事件代码:SELECT学生XH=学号XM=姓名THISFORM.TEXT1.VALUE=XHTHISFORM.TEXT2.VALUE=XMFORN=1TOTHISFORM.CONTAINER1.CONTROLCOUNTTHISFORM.CONTAINER1.CONTROLS(N).VALUE=""THISFORM.CONTAINER1.CONTROLS(N).VISIBLE=.F.ENDFORS=0L=1SELECT成绩LOCATEFORALLTRIM(学号)=ALLTRIM(XH)DOWHILE!EOF()SELECT课程LOCATEFORALLTRIM(课程号)=ALLTRIM(成绩.课程号)KCM=课程名SELECT成绩THISFORM.CONTAINER1.CONTROLS(L).VALUE=KCM+":"+STR(成绩,5,1)THISFORM.CONTAINER1.CONTROLS(L).VISIBLE=.T.S=S+成绩L=L+1CONTINUEENDDOIFL>1THISFORM.TEXT3.VALUE="该生的总平均成绩为:"+STR(S/(L-1),5,1)ELSETHISFORM.TEXT3.VALUE="该生没有选修课程!"ENDIFSELECT学生THISFORM.REFRESH3.COMMAND2CLICK事件代码:THISFORM.RELEASE操作步骤如下:(1)新建表单120 第5章表单设计基础(2)数据环境设置:将表文件“学生”、“课程”、“成绩”添加到数据环境中。(3)按题目要求在表单中加入控件:命令按纽组Commandgroup1;从数据环境中将“学生”表的“姓名”字段、“课程”表的“课程名”字段、“成绩”表的“学号”字段、“成绩”表的“课程号”字段、“成绩”表的“成绩”字段分别拖入表单对应位置。(4)主要属性设置:表单Form1的Caption属性设置为“学生成绩表编辑表单”命令按纽组Commandgroup1的ButtonCount属性设置为“7”(5)主要事件代码:1.FORM1INIT事件代码:SETSAFETYOFFTHISFORM.COMMANDGROUP1.COMMAND4.ENABLED=.F.THISFORM.COMMANDGROUP1.COMMAND5.ENABLED=.F.C="添加删除退出表头前翻表尾后翻"FORN=1TOTHISFORM.COMMANDGROUP1.BUTTONCOUNTTHISFORM.COMMANDGROUP1.BUTTONS(N).CAPTION=SUBSTR(C,4*(N-1)+1,4)ENDFORSELECT学生INDEXON学号TOXHISELECT课程INDEXON课程号TOKCISELECT成绩SETRELATIONTO学号INTO学生,课程号INTO课程THISFORM.REFRESH2.COMMANDGROUP1CLICK事件代码:SELECT成绩DOCASECASETHIS.VALUE=1APPENDBLANKCASETHIS.VALUE=2DELETECASETHIS.VALUE=3THISFORM.RELEASECASETHIS.VALUE=4GOTOPTHIS.COMMAND4.ENABLED=.F.120 第5章表单设计基础THIS.COMMAND5.ENABLED=.F.THIS.COMMAND6.ENABLED=.T.THIS.COMMAND7.ENABLED=.T.CASETHIS.VALUE=5SKIP-1IFBOF()THIS.COMMAND4.ENABLED=.F.THIS.COMMAND5.ENABLED=.F.ENDIFTHIS.COMMAND6.ENABLED=.T.THIS.COMMAND7.ENABLED=.T.CASETHIS.VALUE=6GOBOTTOMTHIS.COMMAND4.ENABLED=.T.THIS.COMMAND5.ENABLED=.T.THIS.COMMAND6.ENABLED=.F.THIS.COMMAND7.ENABLED=.F.CASETHIS.VALUE=7SKIPIFEOF()THIS.COMMAND6.ENABLED=.F.THIS.COMMAND7.ENABLED=.F.ENDIFTHIS.COMMAND4.ENABLED=.T.THIS.COMMAND5.ENABLED=.T.ENDCASETHISFORM.REFRESH120'