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.学号