max=a(i,j)
col=j
endif
endfor
min=a(1,col)
row=1
fork=2to3
ifmin>a(k,col)
min=a(k,col)
row=k
endif
endfor
ifmax==min
?
a(row,col),'是鞍点,在',row,'行',col,'列'
flag=.f.
endif
endfor
ifflag==.t.
?
'无鞍点'
endif
30.求S(n)=a+aa+aaa+...+aaa....aaa(其中有n个a)之值,a是一个数字,n和a由键盘键入(例如:
2+22+222+22222+22222,此时n=5)
clea
inpu'a='toa
inpu'n='ton
s=0
t=a
fori=1ton
s=s+t
t=a+t*10
endfor
?
s
1.显示“学生.dbf”文件中性别为“男”的记录。
SETTALKOFF
USE学生
DOWHILE.NOT.E()F()
IF性别=”女”
SKIP
LOOP
ENDIF
DISPLY
SIKP
ENDDO
USE
SETTALKON
RETURN
3.使用SCAN……ENDSCAN循环来显示”教员”表中职称为”讲师”的所有教师。
SETTALKOFF
OPENDATABASE教学管理
USE教员
CLEAR
SCANFOR职称=“讲师”
DISPLAY
ENDSCAN
CLOSEDATABASE
SETTALKON
RETURN
实验7?
VisualFoxPro6.0程序设计2
一、实验目的
1.熟练掌握分支结构的程序设计方法。
2.熟练掌握循环结构的程序设计方法。
二、实验内容与操作步骤
1.1.?
分支结构程序设计
(1)编写一程序,文件名为P4.prg,请用户输入待查学生的姓名,显示学生基本情况。
程序文件如图7.1所示。
图7.1程序文件P4.prg
(2)编写一程序,文件名为P5.prg,计算以下分段函数的值。
程序如图7.2所示。
图7.2程序文件P5.prg
(3)编写一密码校验程序,程序文件名为P6.prg(假设密码为123)。
程序代码如图7.3所示。
图7.3程序文件P6.prg
(4)编写一程序,程序文件名为p7.prg,求一元二次方程AX2+BX+C=0的实根。
程序代码如图7.4所示。
图7.4程序文件P7.prg
2.2.?
循环结构程序设计
(1)编写一程序,程序文件名为P8.prg,计算1+2+3+…+100之和。
程序文件如图7.5所示。
图7.5程序文件P8.prg
(2)编写一个程序,程序文件名为P9.prg,求出3~100之间的所有素数。
程序文件如图7.6所示。
图7.6程序文件P9.prg
(3)编写一个查询学生情况的程序,程序文件名为P10.prg,要求根据给定的学号查找并显示学生的姓名及各门课的成绩。
程序文件如下:
&&程序文件P10.prg
setsafetyoff?
?
?
?
?
&&当产生已存在的文件或索引标记时,直接覆盖,不给出确认对话框
setdefaulttoe:
\vfp6.0
opendatabaselizx
use学生
sele2
use成绩
indeon学号tagxhn
sele1
indeon学号tagxh
setrelationto学号into成绩
setskipto成绩
dowhile.t.
?
?
clear
?
?
accept'请输入学号:
'toixh
?
?
seekixh
?
?
if!
eof()
?
?
mess='学号:
'+学号+'?
姓名:
'+姓名
?
?
dowhile成绩.学号=ixh
?
?
?
?
disp学号,姓名,b->课程号,b->成绩
?
?
?
?
mess=mess+chr(10)+chr(13)+'课程号:
'+成绩.课程号+'成绩:
'+str(成绩.成绩,5,1)
?
?
?
?
skip
?
?
enddo
?
?
mess=mess+chr(10)+chr(13)+'按任意键继续...'
?
?
else
?
?
?
?
mess='查无此人,按任意键继续...'
?
?
endif
?
?
waitmesswindow
?
?
wait'继续查询吗?
(Y/N)'tom
?
?
ifupper(m)<>'y'
?
?
?
?
?
?
?
?
exit
?
?
endif
?
?
enddo
?
?
closedatabase
?
?
setsafetyon
(4)利用SELECT—SQL语句实现本实验(3)中的自动查询。
?
?
?
程序文件如图7-7所示。
图7.7用SQL语句实现查询
7编写一个判断任意某年是否为闰年的程序。
判断某年是闰年的方法为:
年份能被4整除但不能被100整除,或者能被400整除。
运行程序时,分别用1800、1958、2000、2004等年份进行测试,检查程序的正确性。
【上机步骤】
本题的知识点是双分支选择语句及IF语句的嵌套使用,程序代码如下:
CLEAR
SETTALKOFF
INPUT‘年份:
’TOye
flag=.F.
IFMOD(YE,400)=0
flag=.T.
ELSE
IF MOD(ye,4)=0ANDMOD(ye,25)!
=0
flag=.T.
ENDIF
ENDIF
IFflag
?
ye,’年是闰年’
ELSE
?
ye,’年不是闰年’
ENDIF
SETTALKON
RETURN
【上机题四】
编写程序,要求输入某学生某门课程的成绩,按成绩大小归类到A、B、C、D、E等5个等级之一,并打印成绩所属级别。
成绩标准如下:
E级:
0~60(不含60)
D级:
60~70(不含70)
C级:
70~80(不含80)
B级:
80~90(不含90)
A级:
90~100
【上机步骤】
本题的知识点是多分支选择语句的使用,程序代码如下:
CLEAR
SETTALKOFF
INPUT‘学生成绩:
’TOgrade
DOCASE
CASEgrade>=90
?
’A’
CASEgrade>=80
?
’B’
CASE grade>=70
?
’C’
CASE grade>=60
?
’D’
OTHERWISE
?
’E’
ENDCASE
SETTALKON
RETURN
实验十 SQL查询语句的使用
一、实验目的
1.掌握SQL语言中SELECT语句的格式,掌握WHERE、GROUPBY、ORDERBY等子句的用法。
2.掌握简单查询、连接查询、嵌套查询的应用。
3.了解各种查询条件的表达方法。
4.学会解决复杂查询的思路与方法。
二、实验内容及上机步骤
【上机题一】
用SQL语言查询所有在2000年以前参加工作并且职称是讲师的职工。
【上机步骤】
本题的知识点是带WHERE子句的SELECT查询语句。
在命令窗口中执行如下命令:
SELECT*FROM职工表whereyear(工作日期)<2000AND职称=’讲师’
【上机题二】
用SQL语言实现查询职工表中所有姓名里有一个“利”字的职工信息。
【上机步骤】
本题的知识点是带有WHERE子句的SELECT查询语句及like模式匹配条件与通配符的使用。
在命令窗口中执行如下命令:
SELECT*FROM职工表WHERE姓名like‘%利%’
说明:
查询条件是“姓名里有一个利字”,这个“利”字可以是姓,也可以是名,因此它可在最前,也可在中间或最后。
Like通配符只有两个:
?
和%,?
表示任意一个字符,%表示任意多个字符,因此表达式应该为‘%利%’。
【上机题三】
用SQL语言实现将工资表中所有记录按职称津贴的值升序输出,如职称津
贴值相同,再按基本工资的值降序输出。
【上机步骤】
本题的知识点是带有ORDERBY子句的SELECT语句。
在命令窗口中执行如下命令:
select*from工资表orderby职称津贴ASC,基本工资DESC
说明:
注意排序的次序,第一排序字段写在前面,第二排序字段写在后面,然后要说明排序方式。
升序用ASC表示,也可省略不写;降序用DESC表示。
【上机题四】
用SQL语言实现统计职工表中各部门的男职工人数。
【上机步骤】
本题的知识点是GROUPBY子句与WHERE子句的SELECT语句。
在命令窗口中执行如下命令:
SELECT部门编号,COUNT(*)AS人数FROM职工表WHERE性别=’男’;
groupby部门编号
说明:
先用where子句将职工表中的所有男职工筛选出来,然后对部门进行分组,统计出各部门的男职工人数。
【上机题五】
用SQL语言实现统计职工表中各部门的男职工人数,只输出人数大于1人
的部门与人数。
【上机步骤】
本题的知识点是带有HAVING子句的GROUPBY子句及WHERE子句的SELECT语句。
在命令窗口中执行如下命令:
:
SELECT部门编号,COUNT(*)as人数FROM职工表WHERE性别='男';
GROUPBY部门编号HAVINGCOUNT(*)>1
【上机题六】
用SQL语言实现从职工表、部门表和工资表中查询部门编号为“01”的职
工信息,要求输出职工编号、姓名、部门编号、部门名称、基本工资字段的值。
【上机步骤】
本题的知识点多表联合查询操作。
在命令窗口中执行如下命令:
:
SELECTa.职工编号,a.姓名,a.部门编号,b.部门名称,c.基本工资;
FROM职工表a,部门表b,工资表c;
WHEREb.部门编号=a.部门编号ANDa.职工编号=c.职工编号AND;
a.部门编号='01'
【上机题七】
使用嵌套查询,输出基本工资大于1000的职工的编号、姓名、职称字段的值。
【上机步骤】
本题的知识点是嵌套查询操作。
在命令窗口中执行如下命令:
SELECT职工编号,姓名,职称FROM职工表;
WHERE职工编号IN(SELECT职工编号F