第七章编程题答案Word文档格式.docx

上传人:b****6 文档编号:21699036 上传时间:2023-01-31 格式:DOCX 页数:19 大小:25.87KB
下载 相关 举报
第七章编程题答案Word文档格式.docx_第1页
第1页 / 共19页
第七章编程题答案Word文档格式.docx_第2页
第2页 / 共19页
第七章编程题答案Word文档格式.docx_第3页
第3页 / 共19页
第七章编程题答案Word文档格式.docx_第4页
第4页 / 共19页
第七章编程题答案Word文档格式.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

第七章编程题答案Word文档格式.docx

《第七章编程题答案Word文档格式.docx》由会员分享,可在线阅读,更多相关《第七章编程题答案Word文档格式.docx(19页珍藏版)》请在冰豆网上搜索。

第七章编程题答案Word文档格式.docx

COURSE(课程号,课程名,先修课程号,学分)

在考生文件夹下有一个程序test.prg,该程序的功能是检索选修课程门数等于3门或3门以上,每门课程成绩大于或等于70分的每个学生的学号、姓名、性别、平均成绩、最低分和选课门数,并将结果存放到表new_test中。

考生不得增加或删减程序行。

OPENDATABASESDB

SELECTSTUDENT.学号,姓名,性别,AVG(成绩)平均成绩,MIN(成绩)最低分,;

COUNT(*)选课门数;

FROMSTUDENT,SC;

whereSTUDENT.学号=SC.学号AND成绩>

=70;

&

********Error********

GROUPBYSTUDENT.学号HAVINGcount(课程号)>

=3;

********Error*******

intotableNEW_TEST&

**********Error**********

CLOSEALL

03

1、在考生文件夹中有一个数据库SDB,其中有数据库表STUDENT、SC和COURSE表结构如下:

在考生文件夹下有一个程序DBTEST61.PRG,该程序的功能是检索同时选修了课程号C1和C2的学生的学号。

SELECT学号;

FROMSC;

WHERE课程号='

c1'

AND学号=any;

******Error******

(SELECT学号FROMSC;

*********Error*********

WHERE课程号='

c2'

)&

04

1、在考生文件夹中有数据库STSC,其中有数据库表STUDENT、SCORE和COURSE。

STUDENT(学号,姓名,性别,院系,出生日期)

SCORE(学号,课程编号,成绩)

COURSE(课程编号,课程名称,开课院系,开课学期)

在考生文件夹下有一个程序dbtest4.prg,该程序的功能是检索选课门数是3门以上的(包括3门)每个学生的学号、姓名、平均成绩、最低分、选课门数和院系,并按平均成绩降序排序,同时将结果存放到表TEST1中,请修改程序中的错误,并调试该程序,使之正确运行。

SELECTSTUDENT.学号,姓名,AVG(成绩)平均成绩,MIN(成绩)最低分,;

COUNT(*)选课门数,院系院系;

FROMSTUDENT,SCORE;

WHERESTUDENT.学号=SCORE.学号;

GROUPBYSTUDENT.学号HAVINGcount(课程编号)>

****Error****

ORDERBY平均成绩desc;

*******Error*********

INTOtableTEST1SDF&

05

三、综合应用(1小题,计30分)

当order_detail表中的单价修改后,应该根据该表的"

单价"

和"

数量"

字段修改order_list表的总金额字段,现在编写程序实现此功能,具体要求和注意事项如下:

(1)根据order_detail表中的记录重新计算order_list表的总金额字段的值;

(2)一条order_list记录可以对应几条order_detail记录;

(3)最后将order_list表中的记录按总金额降序排序存储到od_new表中(表结构与order_list表完全相同);

(4)将程序保存为prog1.prg文件。

USEorder_list

SCAN

ddh=订单号

SELECTsum(单价*数量)fromorder_detailwhere订单号=ddhintoarrayje

REPLACE总金额withje

ENDSCAN

USE

SELECT*fromorder_listorderby总金额descintotableod_new

或:

SELECT订单号,sum(单价*数量)asjefromorder_detailgroupby订单号;

intotablels

SCAN

UPDATEorder_listset总金额=ls.jewhere订单号=ls.订单号

CLOSEall

06

字段修改order_list表的总金额字段,现在有部分order_list记录的总金额字段值不正确,请编写程序挑出这些记录,并将这些记录存放到一个名为od_mod的表中(与order_list表结构相同,自己建立),然后根据order_detail表的"

字段修改od_mod表的总金额字段(注意一个od_mod记录可能对应几条order_detail记录),最后od_mod表的结果要求按总金额升序排序,编写的程序最后保存为prog1.prg。

COPYSTRUCTUREtood_mod1

IF总金额<

>

je

khh=客户号

dgrq=订购日期

INSERTintood_mod1values(khh,ddh,dgrq,je)

ENDIF

ENDSCAN

SELECT*fromod_mod1orderby总金额intotableod_mod

SELECT订单号,sum(单价*数量)as金额fromorder_detailgroupby订单号intotableorder_ls

SELECTa.*fromorder_lista,order_lsbwherea.订单号=b.订单号and总金额#金额intotableod_mod1

selectorder_ls

UPDATEod_mod1set总金额=order_ls.金额whereorder_ls.订单号=订单号

07

首先为order_detail表增加一个新字段:

新单价(类型与原来的单价字段相同),然后编写满足如下要求的程序:

根据order_list表中的"

订购日期"

字段值确定order_detail表的"

新单价"

字段的值,原则是:

订购日期为2001年的"

字段的值为原单价的90%,订购日期为2002年的"

字段的值为原单价的110%(注意:

在修改操作过程中不要改变order_detail表记录的顺序),将order_detail表中的记录存储到od_new表中(表结构与order_detail表完全相同);

最后将程序保存为prog1.prg,并执行该程序。

USEorder_detail

SELECT订购日期fromorder_listwhere订单号=ddhintoarraydgrq

IFYEAR(dgrq)=2001

REPLACE新单价with单价*0.9

ENDIF

IFYEAR(dgrq)=2002

REPLACE新单价with单价*1.1

SELECT*fromorder_detailintotableod_new

UPDATEorder_detailset新单价=单价*0.9where订单号=order_list.订单号andYEAR(order_list.订购日期)=2001

UPDATEorder_detailset新单价=单价*101where订单号=order_list.订单号andYEAR(order_list.订购日期)=2002

Select*fromorder_detailintotableod_new

Closeall

08

首先将order_detail表全部内容复制到od_bak表,然后对od_bak表编写完成如下功能的程序:

1.把"

订单号"

尾部字母相同并且订货相同("

器件号"

相同)的订单合并为一张订单,新的"

就取原来的尾部字母,"

取最低价,"

取合计;

2.结果先按新的"

升序排序,再按"

升序排序;

3.最终记录的处理结果保存在od_new表中;

4.最后将程序保存为prog1.prg,并执行该程序。

USEod_bak

COPYSTRUCTUREtotemp

SELECTdistinctRIGHT(订单号,1)订单号,器件号,器件名fromod_bakintotableod_temp

SELECTod_temp

ddh=订单号

qjh=器件号

qjm=器件名

SELECTMIN(单价),sum(数量)fromod_bakwhereRIGHT(订单号,1)=ddhand器件号=qjhintoarrayjg

INSERTintotempvalues(ddh,qjh,qjm,jg

(1),jg

(2))

SELECT*fromtemporderby订单号,器件号intotableod_new

CLOSETABLESall

SELECTdistinctRIGHT(订单号,1)订单号,器件号,器件名fromod_bakintotablels

SELECTls

SELECTMIN(单价),sum(数量)fromod_bakwhereRIGHT(订单号,1)=ls.订单号and器件号=ls.器件号intoarrayjg

INSERTintotempvalues(ls.订单号,ls.器件号,ls.器件名,jg

(1),jg

(2))

SELECT*fromtemporderby订单号,器件号intotableod_new1

09

1.请编写名称为change_c的程序并执行;

该程序实现下面的功能:

将雇员工资表salarys进行备份,备份文件名为baksals.dbf;

利用"

人事部"

向"

财务部"

提供的雇员工资调整表c_salary1的"

工资"

,对salarys表的"

进行调整(请注意:

按"

雇员号"

相同进行调整,并且只是部分雇员的工资进行了调整,其他雇员的工资不动);

最后将salarys表、中的记录存储到od_new表中(表结构与salarys表完全相同)

SELECT*fromsalarysintotablebaksals

USEc_salary1

gyh=雇员号

gz=工资

UPDATEsalarysset工资=gzwhere雇员号=gyh

SELECT*fromsalarysintotableod_new

Select*fromsalarysintotablebaksals

Usec_salary1

Scan

Updatesalarysset工资=c_salaty1.工资where雇员号=c_salaty1.雇员号

Endscan

Select*fromsalarysintotableod_new

010

在考生文件夹下,对"

商品销售"

数据库完成如下综合应用:

1.请编写名称为change_c的命令程序并执行,该程序实现下面的功能:

将"

商品表"

进行备份,备份文件名为"

SPBAK.dbf"

中"

商品号"

前两位编号为"

10"

的商品的"

修改为出厂单价提高10%;

使用"

单价调整表"

对商品表的部分商品出厂单价进行修改(按"

相同)。

SELECT*from商品表intotablespbak

UPDATE商品表set单价=出厂单价*1.1whereLEFT(商品号,2)="

USE单价调整表

UPDATE商品表set出厂单价=单价调整表.出厂单价where商品号=单价调整表.商品号and商品名=单价调整表.商品名

CLOSEall

sph=商品号

ccdj=出厂单价

spm=商品名

UPDATE商品表set出厂单价=ccdjwhere商品号=sphand商品名=spm

011

在考生文件夹下完成如下简单应用:

1.rate_pro.prg中的程序功能是计算出"

林诗因"

所持有的全部外币相当于人民币的价值数量,summ中存放的是结果。

注意:

某种外币相当于人民币数量的计算公式:

人民币价值数量=该种外币的"

现钞买入价"

*该种外币"

持有数量"

请在指定位置修改程序的语句,不得增加或删除程序行,请保存所做的修改。

usecurrency_sl

***********Error*****************

locatefor姓名="

summ=0

DOwhilenoteof()

select现钞买入价fromrate_exchange,currency_sl;

whererate_exchange.外币代码=currency_sl.外币代码intoarraya

summ=summ+a[1]*currency_sl.持有数量

continue

enddo

?

summ

012

2.在考生文件夹下打开命令文件ONE.PRG,该命令文件用来建立一个名称为S_VIEW的视图,视图查询学生的班级号、班级名、姓名、性别和班主任名(来自TEACHER表的教师名)。

命令文件只包含两条语句,第1条语句有一个错误,第2条语句有两个错误,请修改之,并运行。

注意,修改时不可改变SQL语句的结构和短语的顺序,不允许增加或合并行。

OPENDATABASEsdb

CREATEVIEWs_viewas;

SELECTClass.班级号,班级名,姓名,性别,教师名AS班主任名;

FROMStudent,Class,Teacher;

WHEREStudent.班级号=Class.班级号andTeacher.教师号=Class.班主任号

013

在考生文件夹下,打开公司销售数据库SELLDB,完成如下简单应用:

2.在考生文件夹下打开命令文件TWO.PRG,该命令文件用来查询各部门的分年度的部门号、部门名、年度、全年销售额、全年利润和利润率(全年利润/全年销售额),查询结果先按年度升序、再按利润率降序排序,并存储到S_SUM表中。

注意,程序在第5行、第6行、第8行和第9行有错误,请直接在错误处修改。

修改时,不可改变SQL语句的结构和短语的顺序,不允许增加或合并行。

OPENDATABASESELLDB

SELECTS_T.部门号,部门名,年度,;

一季度销售额+二季度销售额+三季度销售额+四季度销售额AS全年销售额,;

一季度利润+二季度利润+三季度利润+四季度利润AS全年利润,;

(一季度利润+二季度利润+三季度利润+四季度利润)/(一季度销售额+二季度销售额+三季度销售额+四季度销售额)AS利润率;

FROMS_T,DEPT;

WHERES_T.部门号=DEPT.部门号;

OrderBY年度,利润率DESC;

INTOtableS_SUM

014

1.用SQL语句新建一个表rate,其中包含4个字段"

币种1代码"

C

(2)、"

币种2代码"

C

(2)、"

买入价"

N(8,4)、"

卖出价"

N(8,4),请将SQL语句存储于two.txt中。

3.编写程序three.prg完成下列操作:

根据"

外汇汇率"

表中的数据产生rate自由表中的数据。

要求:

将所有"

表中的数据插入rate表中并且顺序不变,由于"

中的币种1和币种2存放的是外币名称,而rate表中的币种1代码和币种2代码应该存放外币代码,所以插入时要做相应的改动,外币名称与外币代码的对应关系存储在"

外汇代码"

表中。

程序必须执行一次,保证rate表中有正确的结果。

1.Two.txt文件内容:

CREATETABLErate(币种1代码c

(2),币种2代码c

(2),买入价n(8,4),卖出价n(8,4))

3.程序three.prg

USE外汇汇率

SELECT外币代码from外汇代码where外汇汇率.币种1=外币名称intoarraydm1

SELECT外币代码from外汇代码where外汇汇率.币种2=外币名称intoarraydm2

INSERTintoratevalues(dm1,dm2,外汇汇率.买入价,外汇汇率.卖出价)

bz1mc=币种1

bz2mc=币种2

mrj=买入价

mcj=卖出价

SELECT外币代码from外汇代码where外币名称=bz1mcintoarraybz1dm

SELECT外币代码from外汇代码where外币名称=bz2mcintoarraybz2dm

INSERTintoratevalues(bz1dm,bz2dm,mrj,mcj)

015

1.改错题

student是一个"

学生"

表,其中包含学号(C8)、姓名(C8)、性别(C2)、政治面目(C4)、班级(C5)等字段。

考生目录下的modi1.prg程序文件的功能是显示输出所有政治面目为"

群众"

的"

男"

生的姓名和班级,每行输出一个学生的信息;

程序中有三处错误,请加以改正。

说明:

程序中******ERRORFOUND******的下一行即为错误所在行。

请用改正后的程序行覆盖错误所在行,不要插入或删除任何程序行。

2.建立命令文件sprog.prg,该命令文件包含如下两条语句:

●第一条语句使用SQLUPDATE命令计算和更新student表的年龄字段值(计算年龄的表达式是year(date())-year(出生日期));

●第二条语句使用SQLSELECT命令查询各种"

政治面目"

的学生人数和平均年龄,并将结果存储于表sqlresults(字段名是政治面目、人数和平均年龄)。

以上命令文件必须执行,并产生所要求的结果。

US

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 其它课程

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1