文档库 最新最全的文档下载
当前位置:文档库 › 中国海洋大学2013年vfp上机练习题参考答案

中国海洋大学2013年vfp上机练习题参考答案

1.在项目管理器中新建商品数据表SB.DBF,字段有:商品号(C,5),商品名(C,8),单价(N,5,2),出厂单价(N,5,2),产地(C,6)。并添加如下记录:单价要求在300~900之间。商品号(C,5),商品名(C,8),单价(N,6,2),出厂单价(N,6,2),产地(C,6)。

10001 电视机800.0 500.0 青岛

20001 电子字典360.0 200.0 深圳

10002 手机8210 980.0 600.0 北京

30001 MP3 800.0 560.0 广州

10003 商务通890.0 460.0 深圳设计一个名称为MY_FORM的表单,上面有“浏览”、“调整”、“备份”和“退出”四个命令按钮,“商品名称”标签和文本框text1。

1)在text1中输入文本,单击“浏览”按钮时,显示商品名含有该文本的所有商品记录。

a=allt(thisform.text1.value)

aa="sele * from sb where 商品名like '%&a%' into cursor x"

thisform.grid1.recordsource=aa

thisform.grid1.refresh

2)单击“调整”按钮时,将“商品号”前两位编号为“10”的商品的“单价”修改为出厂单价的110%。

update sb set 单价=出厂单价*1.1 where left(商品号,2)="10"

bb="sele * from sb into cursor y"

thisform.grid1.recordsource=bb

3)单击“备份”按钮时,将“商品表”进行备份(使用命令COPY TO ),备份文件名为“商品表备份.DBF”,

copy to 商品表备份

4)单击“退出”按钮时,关闭表单。

2.在建立“D:\学号姓名”文件夹下,建立表单(bd2.scx),添加标签“输入字符串”、文本框,添加“输出”、“退出”命令按钮,并编写代码。“输出”Click代码:把文本框内输入的字符串,去掉左、右、中间所有空格字符后,在信息框显示。“退出”:结束表单运行。a=thisform.text1.value

n=len(a)

i=1

s=""

for i=1 to n

if substr(a,i,1)<>space(1)

s=s+substr(a,i,1)

endif

endfor

messagebox(s,0)

3.建立“学生管理”数据库,在其中新建“成绩”数据表并任意输入3条记录,结构如下:学号C(8),姓名C(8),计算机N(5.1),英语N(5.1),数学N(5.1),总成绩N(5.1)。建立表单

(bd1.scx),用表格显示该数据表,添加标签“计算机平均成绩”及显示该数据的文本框。添加“计算”、“退出”命令按钮,并编写代码。“计算”Click代码:计算“总成绩”字段的值(总成绩=计算机+英语+数学),计算“计算机平均成绩”的值并在文本框显示。“退出”:结束表单运行。

update 成绩set 总成绩=计算机+英语+数学

aa="sele * from 成绩into cursor y"

thisform.grid1.recordsource=aa

sele avg(计算机) as A from 成绩into cursor"x"

thisform.text1.value=A

4.建“订货管理”数据库。在其中新建数据表customer,表结构如下:

客户号(C/8)、客户名(C/10)、地址(C/20)、电话(C/12)。以客户号建立主索引。

新建数据表order_list,表结构如下:

客户号(C/8)、订单号(C/10)、日期(D)、总金额(N/12,2)。以客户号建立普通索引,并与customer 建立表间永久关系。

1)两个数据表各添加3条记录(保证两个表的客户号存在一对一关系)。

2)新建项目“订单”并将数据库添加到该项目中。

3)在项目中新建表单如下:完成“上一条”和“下一条”命令按钮的代码。

skip-1

thisform.refresh

if bof()

https://www.wendangku.net/doc/4c2181462.html,mand1.enabled=.f.

https://www.wendangku.net/doc/4c2181462.html,mand2.enabled=.t.

Endif

skip

thisform.refresh

if eof()

https://www.wendangku.net/doc/4c2181462.html,mand2.enabled=.f.

https://www.wendangku.net/doc/4c2181462.html,mand1.enabled=.t.

endif

5.在项目管理器中创建一个student.dbf数据表其结构为学号(C,3),姓名(C,6),性别(C,2),

出生日期(D,8)。记录内容自定(出生日期应在1995年以前出生)。要求,根据输入限制条件的上限和下限来查找数据表中的记录,表单会显示查找到的结果。程序的演示效果如图所示。

a=thisform.text1.value

b=thisform.text2.value

aa="sele * from student where 学号between a and b into cursor y"

thisform.grid1.recordsource=aa

6.建立一表单文件BF.SCX. 如图

要求:

(1)在“建表”按钮中编写代码,使用SQL语句建立一XSDA.DBF表,字段结构:学号C(6); 姓名C(10) ; 成绩N(5,1) 再用SQL命令方式添加三条记录,如下:

学号姓名成绩

100101 德华89

100202 学友40

100103 曼玉78

(2)在”排序按钮”中编写SQL代码,完成按成绩降序查询,结果显示在表格控件中。

(3)在”分组按钮”中编写SQL代码,完成按班级(学号前四位表示班级)分组,并显示班级总成绩。结果显示在相应的控件中。

(4)在“欠分按钮”中检索将成绩加5%后,仍然小于60分的同学。

(5)在”输出按钮”中编写SQL代码,完成将成绩在80—89之间的同学信息输出到表xsda1.dbf中。

n=this.value

do case

case n=1

creat table xsda(学号c(6),姓名c(10),成绩n(5,1))

insert into xsda values ("100101","德华",89)

insert into xsda values ("100202","学友",40)

insert into xsda values ("100103","曼玉",78)

case n=2

aa="sele * from xsda order by 成绩desc into cursor y"

thisform.grid1.recordsource=aa

case n=3

bb="sele left(学号,4) as 班级,sum(成绩) as 班级总成绩from xsda group by 班级into cursor x"

thisform.grid1.recordsource=bb

case n=4

update xsda set 成绩=成绩*1.05

cc="sele * from xsda where 成绩<60"

thisform.grid1.recordsource=cc

case n=5

sele * from xsda where 成绩between 80 and 89 into dbf xsda1 endcase

7.有学生管理数据库BOOK,数据库中有SCORE表(含有学号、物理、高数、英语和学分)等5个字段,其中前4项已有数据。

请编写符合下列要求的程序并运行程序。

设计一个名MYFORM4的表单,表单中有两个命令按钮,按钮的名称分别是CMDYES 和CMDNO,标题分别为“计算”和“关闭”。程序运行时,单击“计算’’按钮应该完成下列操作:

1)计算每一个学生的总学分并存入对应的“学分”字段。学分的计算方法是:物理60以上(包括60分)为2学分,否则为0分;高数60分以上(包括60分)为3学分,否则为0分;英语60以上(包括60分)为4学分,否则为0分。

2)根据上面的计算结果,生成一个新的表XF,(要求表结构的字段类型与SCORE表对应字段的类型一致),并且按学分升序排列,如果学分相等,则按学号降序排序。

单击“关闭”按钮,程序终止运行。

update SCOREP set 学分=iif(物理>=60,2,0)+iif(高数>=60,3,0)+iif(英语>=60,4,0)

aa="sele * from SCOREP into cursor x"

thisform.grid1.recordsource=aa

select * from SCOREP order by 学分,学号desc into table XF

8.有一学生管理数据库stu,该数据库中有CHENGJI表和XUESHENG表,各表结构如下:

XUESHENG表(学号C(9)、姓名C(10)、出生日期D,性别C(2),平均分N(7,2)),—个学生只有一个记录,“学号”字段是表的主关键字。

CHENGJI表(学号c(9)、课程号c(3)、课程名C(8),成绩N(7,2),该表用于记录学生的考试成绩,一个学生可以有多项记录,(登记一个学生的多门成绩),其中,字段“学号”与“课程名”的组合构成表CHENGJI的主关键字。

设计一个名为FORM_STU的表单、表单中有两个命令按钮,按钮的名称分别是CMDYES和CMDNO,标题分别为“统计”和“关闭”及其他相关控件。

程序运行时,单击“统计”按钮应完成下列操作:

1)根据CHENGJI表计算每个学生的平均分,并将结果存入XUESHENG表的平均分字段。

2)根据上面的计算结果,生成一个新的表PINGJUN,该表的字段按顺序取自XUESHENG表的学号、姓名和平均分3项,并按平均分升序排序,如果平均分相等,则按学号升序排序。

3)按照出生日期统计每月份各有多少名学生,男女生各有多少名。

4)查询每门课的选课人数、优秀人数和不及格人数。

单击“关闭”按扭,程序终止运行。

sele avg(成绩) from chengji group by 学号into array a(任青(运行不出来))

update xuesheng set 平均分=a

select * from xuesheng

Select 学号,姓名,平均分from xuesheng into dbf pingjun order by 平均分,学号

sele month(出生日期) as 月份,性别,count(*) from xuesheng group by 月份,性别

select 课程名,count(*)as 每门人数from chengji group by 课程号

select 课程名,count(*)as 每门优秀人数from chengji group by 课程号where 成绩>80 select 课程名,count(*)as 每门不及格人数from chengji group by 课程号where 成绩<60

9.设计一个能进行查询的表单,界面如图所示。当输入学生姓名并单击“查询统计”按钮时,会在右边的表格内显示该同学所选各科的成绩,并在左边相应的文本框内显示其中的

最高分、最低分以及平均成绩。单击“退出”按钮将关闭表单。(运行不出来) thisform.grid1.recordsource="sele 课程号,成绩from dijiti where 姓名

=thisform.text1.value into cursor x"

a=allt(thisform.text1.value)

sele max(成绩) as A from dijiti where 姓名=a into cursor x

thisform.text2.value=A

sele mIN(成绩) AS B from dijiti where 姓名=a into cursor y

thisform.text3.value=B

sele A VG(成绩) AS C from dijiti where 姓名=a into cursor z

thisform.text4.value=C

10.有“学生管理”数据库。在其中新建数据表student,表结构如下:

学号(C/8)、姓名(C/10)、专业号(C/4)、成绩(N/4)。以学号建立主索引,以专业号建立普通索引。建数据表class,表结构如下:

专业号(C/4)、专业名称(C/10),以专业号建立主索引,并与student建立表间永久关系。

1)两个数据表各添加3条记录(要有”英语”专业的记录)。

2)新建项目“管理”并将数据库添加到该项目中。

3)在项目中新建表单FORM1。选择选项按钮后“运行”可以完成相应的操作。结果显示在相应的控件中。

n=this.value

do case

case n=1

aa="sele 姓名,专业from 学生class join 学生student on 学生student.专业号=学生class.专业号"

thisform.grid1.recordsource=aa

case n=2

y="select 专业名称,count(学号) as 人数from 学生student join 学生class on 学生student.专业号=学生class.专业号group by 学生student.专业号into cursor z"

thisform.grid1.recordsource=y

case n=3

update 学生student set 成绩=成绩*1.05 where 专业号in (sele 专业号from 学生class where 专业名称="英语")

cc="sele 学号,姓名,专业号,成绩from 学生student into cursor w"

thisform.grid1.recordsource=cc

case n=4

thisform.release

endcase

Do case(任青)

case thisform.optiongroup1.value=1

Select 姓名,专业名称from student join class1 on student.专业号=class1.专业号into cursor a

thisform.grid1.recordsource=a

Case thisform.optiongroup1.value=2

select 专业名称,count(*) as 学生数from student join class on student.专业号=class.专业号group by 专业名称

case thisform.optiongroup1.value=3

update student set 成绩=成绩*1.05 where 专业号in (select 专业号from class where 专业名称="英语")

select * from student

case thisform.optiongroup1.value=4

thisform.release

endcase

12.设计如上图表单,要求对于学生管理数据库std.dbc用SQL语句完成如下功能:

(1)点击学生名单显示学号,姓名(若选中复选框显示详细信息,则显示学号, 姓名,性别,出生日期,入学日期,专业)。(运行不出来)

n=thisform.check1.value

do case

case n=0

aa="select 姓名,学号from std_da into cursor x"

thisform.grid1.recordsource=aa

case n=1

bb="select * from std_da into cursor y"

thisform.grid1.recordsource=bb

endcase

(2)点击计算成绩,重新计算总成绩。结果显示在相应的控件中。

update std_cj set 总成绩=期中+期末+平时

cc="sele * form std_cj into cursor z"

thisform.grid1.recordsource=cc

(3)点击显示成绩,根据选项按钮组升序或降序的要求,按照总成绩显示std_cj表所有字段。结果显示在表格控件中。

a=thisform.optiongroup1.value

do case

case a=1

dd="select * from std_cj order by 总成绩asc into cursor w"

thisform.grid1.recordsource=dd

case a=2

ee="sele * from std_cj order by 总成绩desc into cursor v"

thisform.grid1.recordsource=ee

endcase

(4)点击选课统计,所有学生的学号,姓名及选课的门数。结果显示在表格控件中。sele std_da.学号,std_da.姓名,count(课程代号) as 选课的门数from std_xk join std_da on std_da.学号=std_xk.学号group by std_xk.学号

相关文档