《vfp实验题整理》word版.docx

上传人:wux****ua 文档编号:9065814 上传时间:2020-04-02 格式:DOCX 页数:23 大小:234.35KB
返回 下载 相关 举报
《vfp实验题整理》word版.docx_第1页
第1页 / 共23页
《vfp实验题整理》word版.docx_第2页
第2页 / 共23页
《vfp实验题整理》word版.docx_第3页
第3页 / 共23页
点击查看更多>>
资源描述
Visual FoxPro实验题汇总顺序结构程序设计1. 用过程化编成方式编写本题。求解一元二次方程 (JFC.PRG) a=1b=4c=4x1=(-b+SQRT(b2-4*a*c)/(2*a)x2=(-b-SQRT(b2-4*a*c)/(2*a)?方程的一个根是:,x1,space(10),另一个根是:,x22.理解大小写转换函数。在文本框中输入文本串,按“转大写”按钮,文本中的英文字母变为大写,按“转小写”按钮,文本中的英文字母变为小写(如图所示)。:Public a:Thisform.text1.value=a:Thisform.text1.value=upper(a):Thisform.text1.value=lower(a):Thisform.text1.value=a3.班上集体购买课外读物,在文本框中输入3种书的单价、购买数量,计算并输出所用的总金额。:a=val(thisform.text1.value)b=val(thisform.text2.value)c=val(thisform.text3.value)d=val(thisform.text4.value)e=val(thisform.text5.value)f=val(thisform.text6.value)thisform.text7.value=a*b+c*d+e*f4. 在文本框中输入小时、分、秒,化成共有多少秒,然后输出之。a=val(thisform.text1.value)b=val(thisform.text2.value)c=val(thisform.text3.value)thisform.text4.value=a*3600+b*60+c5. 编程序输出在指定范围内的3个随机数,范围在文本框中输入。:Thisform.label3.caption=str(int(b-a+1)*rand()+a)Thisform.label4.caption=str(int(b-a+1)*rand()+a)Thisform.label5.caption=str(int(b-a+1)*rand()+a)6.编写例题4-8求圆面积,用对话框输出结果:r=val(thisform.text1.value)a=”圆的面积为:”+alltrim(str(3.14*r2)messagebox(a,0,”计算圆的面积”)thisform.text1.selstart=0thisform.text1.sellength=len(thisform.text1.text)thisform.text1.setfocus顺序结构程序1. 输入3个不同的数,将它们从大到小排序。:a=val(thisform.text1.value)b=val(thisform.text2.value)c=val(thisform.text3.value)do casecase a=max(a,b,c)thisform.text4.value=alltrim(str(a)case a=min(a,b,c)thisform.text6.value=alltrim(str(a)otherwisethisform.text5.value=alltrim(str(a)endcasedo casecase b=max(a,b,c)thisform.text4.value=alltrim(str(b)case b=min(a,b,c)thisform.text6.value=alltrim(str(b)otherwisethisform.text5.value=alltrim(str(b)endcasedo sasecase c=max(a,b,c)thisform.text4.value=alltrim(str(c)case c=min(a,b,c)thisform.text4.value=alltrim(str(c)otherwisethisform.text5.value=alltrim(str(c)endcase2. 创建一个检查输入口令的表单,口令设定为“SOFTWARE”,允许用户输入三次口令。如果三次输入错误,则显示相关信息,并禁止再次输入口令:如果正确,则显示“欢迎使用本系统!”字样,请编写该程序。:a=ALLTRIM(thisform.container1.text1.value)if a=SOFTWARE thisform.label1.caption=欢迎使用本系统! thisform.container1.visible=.F. thisform.label1.visible=.T. thisform.command1.visible=.t.else b=b+1 if b=3 messagebox(你已第+str(b,3)+次输入错误,+chr(13); +不能使用该系统,48,错误提示) thisform.release ELSE messagebox(你已第+str(b,3)+次输入错误!,48,错误提示) thisform.container1.text1.selstart=0 thisform.container1.text1.sellength=len(ltrim(thisform.container1.text1.value) RETURN 0 endifendif:Thisform.release3. 输入一个数字(06),用中英文显示星期几。:a=thisform.text1.valuedo casecase a=”0” &注意带”,字符型thisform.text2.value=”星期日”thisform.text3.value=”Sunday”case a=”1”thisform.text2.value=”星期一”thisform.text3.value=”Monday”case a=”2”thisform.text2.value=”星期二”thisform.text3.value=”Tuesday”case a=”3”thisform.text2.value=”星期三”thisform.text3.value=”Wednesday”case a=”4”thisform.text2.value=”星期四”thisform.text3.value=”Thursday”case a=”5”thisform.text2.value=”星期五”thisform.text3.value=”Friday”case a=”6”thisform.text2.value=”星期六”thisform.text3.value=”Saturday”otherwisemessagebox(“对不起,只能输入0-6的整数”,48,”提示”)endcasethisform.text1.selstart=0 &以下可不写thisform.text1.sellength=len(thisform.text1.text)thisform.text1.setfocus4. 若基本工资大于等于600元,增加工资20%;若小于600元大于等于400元,则增加工资15%;若小于400元则增加工资10%。请根据用户输入的基本工资,计算出增加后的工资。:x=val(thisform.text1.value)do casecase x=600y=x*1.2case x=400y=x*1.15case x400y=x*1.1endcasethisform.text2.value=y5. 输入圆的半径r,利用选项按钮,选择运算:计算面积、计算周长等。r=val(thisform.text1.value)n=This.valueDo caseCase n=1Y=alltrim(str(2*3.14*r)A=圆的周长为:+yCase n=2Y=alltrim(str(3.14*r2)A=圆的面积为:+yEndcaseThisform.label2.caption=a6. 设计一个电子游动标题板,标题“使用VFP设计动画”在表单的黄色区域(容器中)自左至右地反复移动。单击“暂停”按钮,标题停止移动,按钮变成“继续”。 单击“继续”按钮,标题继续移动,按钮又变回“暂停”:10 &动画移动的快慢,数字越大移动越慢:If thisform.container1.label1.left+thisform.container1.width670 &”670”大于container的宽度和label的宽度加和数.即动画要完全过去才能再开始.thisform.container1.label1.left=thisform.container1.label1.left+1elsethisform.container1.label1.left=-360 &”-360”绝对值要大于container的宽度endif:If thisform.command1.caption=”暂停”Thisform.command1.caption=”继续”Thisform.container1.timer1.enabled=.f.ElseThisform.command1.caption=”暂停”Thisform.container1.timer1.enabled=.t.Endif7设计一个计算一元二次方程根的程序:从文本框输入一元二次方程的三个系数:A,B,C,计算并输出方程的两个根X1、X2。当A0时,有两个根。当B*B-4*A*C0时,有两个不等的实根。当B*B-4*A*C=0时,有两个相等的实根。当B*B-4*A*C0时,有两个不等的虚根。:a=val(thisform.text1.value)b=val(thisform.text2.value)c=val(thisform.text3.value)m=b2-4*a*cdo casecase a=0x=-c/bthisform.label4.caption=”该方程不是二次方程,只有一个根,X=”+alltrim(str(x)otherwise do case case m0 x1=(-b+sqrt(m)/(2*a) x2=(-b-sqrt(m)/(2*a) thisform.label4.caption=”该方程有两个不相等的实根,X1=”+alltrim(str()+space(5); +”X2=”+alltrim(str(x2) Case m=0 X=-b/(2*a) Thisform.label4.caption=”该方程有两个相等的实根,X1=X2=”+alltrim(str(x) Case m0 Thisform.label4.caption=”该方程有两个不相等的虚根.” EndcaseEndcase4循环结构程序设计1. 在列表框中输出1001000之间能被37整除的数。:For n=100 to 1000 If n%37=0Thisform.list1.additem(alltrim(str(n) EndifEndfor:Thisform.release2. 设计程序,求s = 1 + (1 + 2) + (1 + 2 + 3) + + (1 + 2 + 3 + + n)的值。click:n=val(thisform.text1.value)m=0s=0for i=1 to n if i=n m=m+i s=s+m endifendforthisform.label3.caption=alltrim(str(s)thisform.text1.selstart=0thisform.text1.sellength=len(thisform.text1.text)thisform.text1.setfocus:Thisform.release3. 输出“九九”乘法表,格式如图所示。columncount:10Columnwidth:30,30,30,30,30,30,30,30,30,30(10个):Thisform.list1.additem(“*”)For i=1 to 9Thisform.list1.addlistitem(alltrim(str(i,3),1,i+1)Thisform.list1.addlistitem(alltrim(str(i,3),i+1,1) For n =1 to i Thisform.list1.addlistitem(alltrim(str(n,3),i+1,n+1) EndforEndfor:Thisform.list1.clear4.组合框中显示2000-2400年间所有闰年。For n=2000 to 2400 If n%4=0 and n%1000 or n%400=0 Thisform.combo1.additem(alltrim(str(n) Thisform.combo1.displayvalue=1 &使第一行总是显示 EndifEndfor:thisform.release5.页框:素数页:在列表框中显示2到1000的所有素数。含7页:列表框中显示1-200之间所有含7的数据。素数页:For n=2 to 1000S=0 For i=2 to n-1 &除本身以外 if n%i=0 s=1 exit endif endforif s=0this.parent.list1.additem(alltrim(str(n)endifendfor含7页:FOR n=1 to 200If “7”$ str(n)This.parent.list1.additem(alltrim(str(n)EndifEndfor5索引,表单中使用数据表4. 设计一个操作数据表的表单,使之具有按记录浏览数据表的功能(首记录、上一个、下一个、尾记录):Go topThisform.commandgroup1.command1.enabled=.f.Thisform.commandgroup1.command2.enabled=.f.Thisform.commandgroup1.command3.enabled=.t.Thisform.commandgroup1.command4.enabled=.t.Thisform.refresh:Skip -1If recno=1Thisform.commandgroup1.command1.enabled=.f.Thisform.commandgroup1.command2.enabled=.f.EndifThisform.commandgroup1.command3.enabled=.t.Thisform.commandgroup1.command4.enabled=.t.Thisform.refresh:Skip 1If eof()=0Go bottomThisform.commandgroup1.command3.enabled=.f.Thisform.commandgroup1.command4.enabled=.f.EndifThisform.commandgroup1.command1.enabled=.t.Thisform.commandgroup1.command2.enabled=.t.Thisform.refresh:Go bottomThisform.commandgroup1.command1.enabled=.t.Thisform.commandgroup1.command2.enabled=.t.Thisform.commandgroup1.command3.enabled=.f.Thisform.commandgroup1.command4.enabled=.f.Thisform.refresh:Thisform.release6多表操作7数组1. 有一个86的矩阵,各元素的值由由计算机随机产生,求全部元素的平均值,并输出高于平均值的元素以及它们的行、列号。:column count 6Column widths:30,30,30,30,30,30Row source: aRow source type: 5-数组:Public a(8,6)For i=1 to 48a(i)=alltrim(str(rand()*100)Thisform.list1.numberofelements=48在list中设随机数矩阵Endfor:P=”K=this.valueDo caseCase k=1 S=0 For i=1 to 48 S=s+val(a(i) EndforAv=s/48Thisform.label2.caption=”平均值为:”+alltrim(str(av) For m=1 to 8 For n=1to 6 If a(i)av P=p+”a(“+str(a(m,1)+”,”+str(a(1,n)+”)=”+alltrim (a(m,n)+”,” & a(m,n)=x中m和n必须加上str endif endfor endfor messagebox(p,0,”大于平均值的元素为:”)Case k=2Thisform.activateThisform.refreshThisform.label2.caption=”平均值为:” &Endcase2. 求方阵(66)的两个对角线元素和。属性:column count :6 Column widths:30,30,30,30,30,30 Rowsource: a RowsourceType:5-数组:Public a(6,6)For i=1 to 36a(i)=alltrim(str(rand()*100)thisform.list1.numberofelements=36endfor:S=0Z=0For i=1to 6S=s+val(a(i,i)Z=z+val(a(I,7-i)Thisform.text1.value=alltrim(str(s)Thisform.text2.value=allrtrim(str(z)Endfor:Thisform.activateThisform.text1.value=”Thisform.text2.value=” &value”默认值Thisform.refresh3任意10个数由大到小排列:Public a(10)For i=1 to 10 Yes=1 Do while yes=1 X=int(rand()*100) Yes=0 For j=1to i-1 If x=val(a(j) Yes=1 Exit &exit直接跳到endfor Endif Endfor Enddo &避免随机数重复的do循环a(i)=str(x,2) &任何数字预留两位字符,避免alltrimp=p+a(i)+”,” &不能写a(i)=allt(str(x,2) 这样如果随机产生了个位数,那么用asort排序(字符排序)时“7”会比“66”大thisform.text1.value=left(p,len(p)-1) &把最后一个逗号去掉:Assort(a) P=”For i=10 to 1 step-1 &默认从小到大排P=p+a(i)+”,”Thisform.text2.value=left(p,len(p)-1):Thisform.activateThisform.text2.value=”Thisform.refresh自定义属性和方法1. 求两个数n,m的最大公约数和最小公倍数。添加自定义方法:Gys:Parameters m n zIf mnT=mm=nN=t &对调m nEndifR=m%nDo while r0N=rM=nR=m%nEnddoZ=n & z为公约数,公倍数=m*n/z:thisform.text1.setfocus:X=val(thisform.text1.value)Y= val(thisform.text2.value)A=0B=0If x*y0Thisform.gys(x,y,a)B=x*y/aThisform.label3.caption=alltrim(str(a)Thisform.label5.caption=alltrim(str(b)endif2. 使用“传址”方式传递参数,编写判断素数的自定义方法,验证哥德巴赫猜想:一个不小于6的偶数可以表示为两个素数之和(参见例8-8)。:Parameters m,fF=.t.If m3 For i=3 to sqrt(m) If m%i=0 F=.f. exit endif endforendifreturn:N=val(thisform.text1.value)A=.f.If n%2!=0 or n6Messagebox(“必须输入大于等于6的偶数!”,48,”非法数据”)ElseFor x=3 to n/2 step 2Thisform.哥德巴赫(x,a) If a=.t. Y=n-x If.thisform.哥德巴赫(y,a) If a=.t. Thisform.text2.value=alltrim(str(x) Thisform.text3.value=alltr(str(y) Exit endif endif EndifEndforEndifThisform.text1.setfocus3计算组合数的程序:Parameters aP=1For i=1 to a P=p*iEndforReturn p:m=val(thisform.text1.value)n= val(thisform.text2.value)if mnmessagebox(“m必须大于n!”,48,”非法数据”)else x=thisform.zhs(m) y=thisform.zhs(n) z=thisform.zhs(m-n) thisform.text3.value=alltr(str(x/(y*z)endifthisform.text1.setfocusthisform.text2.setfocus查询与视图1、【例13-1】设计一个数据查询表单,可以浏览全体同学、查询数据库中优秀学生的成绩、平均成绩前5名以及成绩不及格的学生名单。(数据表在data3.rar中)新建查询,添加xs和cj,kc表,建立学号关联.根据要求分别制作4个选项相应要求的查询1,2,3,4命名:查询1:查询1 &否则表单释放时表空白3-查询QPR:Thisform.grid1.recordsource=”查询1”Thisform.refresh:Thisform.grid1.recordsource=”查询2” Thisform.refresh:Thisform.grid1.recordsource=”查询3”Thisform.refresh:Thisform.grid1.recordsource=”查询4.qpr”Thisform.refresh2、 完成以下基本操作题:1) 创建一个新的项目“student_p”。2) 在新建立的项目“student_p”中创建数据库“student_db”。3) 在student_db数据库中,使用视图设计器创建一个名称为sview5_8的视图以std_cj新建一本地视图,显示所有记录、所有字段,其中学号、姓名字段值不能修改,平时、期中、期末及总成绩是可以修改的。(略)SQL语言1设计查询表单,在两个文本框内分别输入总成绩的下限和上限,可以从std_cj表中查询出该分数段的所有学生分数,并显示在表格中。:4-SQL说明:a=val(thisform.text1.value)b=val(thisform.text2.value)c=”select * from std_cj where 总成绩 between a and b order by 总成绩 DESC into cursor std_cj2“ &必须带引号thisform.grid1.recordsource=cthisform.refresh2设计一个能进行查询的表单,界面如图10-5所示。当输入专业按回车时,会在表格内显示该专业学生的基本信息,并在下面相应的文本框内显示该专业学生总成绩的最高、最低以及平均值。:recordsource Type:4-SQL说明: &表单释放时表格就出现Thisform.grid1.recordsource=”select * from std_da into cursor cx”:If keycode=13 &回车a=alltrim(thisform.text1.value)select max(总成绩) as zgf from std_cj where 学号in (select学号 from std_da where专业=a ) into cursor ssthisform.text2.value=zgfselect min(总成绩) as zdf from std_cj where 学号in (select学号 from std_da where专业=a ) into cursor ssthisform.text3.value=zdfselect avg(总成绩) as pjf from std_cj where 学号in (select学号 from std_da where专业=a ) into cursor ssthisform.text4.value=pjfthisform.grid1.recordsource=”select std_da.学号,std_da.姓名,性别,专业,期末,总成绩 from std_cj std_da where std_da.学号=std_cj.学号 and 专业=a into cursor ss” &字段是唯一的,前面可以不加前缀表名thisform.refreshendif菜单作业1 设计一个菜单。主菜单子菜单任务文件(F)建查询 Ctrl+C建立查询,表自备,查询内容、文件名自定保存(S)关闭 (G)编辑(E)输入 (I)修改 (E) 运行(R) Ctrl+R退出(X)过程提示“退出菜单?”,退出恢复系统菜单2利用Visual FoxPro的快速报表或报表向导功能建立一个满足如下要求的简单报表: (1) 报表的内容是STD_DA表的记录(除照片、备注以外的所有字段); (2) 增加“标题带区”,然后在该带区中放置一个标签控件,该标签控件显示报表的标题“学生档案”; (3) 将页注脚区默认显示的当前日期改为显示当前的时间; (4) 最后将建立的报表保存为print1.frx。
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 考试试卷


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!