vfp实验7-16参考答案_第1页
vfp实验7-16参考答案_第2页
vfp实验7-16参考答案_第3页
vfp实验7-16参考答案_第4页
vfp实验7-16参考答案_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

VF实验7-16参考答案实验7检索所有供应商的全部信息。select*from供应商号检索所有员工的工号和姓名信息。select职工号,姓名from职工查询目前哪几个仓库目前有员工分配(使用单表查询)。Selectdistinct仓库号from职工检索工资最高的前两名员工姓名。Selecttop2姓名from职工orderby工资desc检索工资大于1230元的员工姓名。select姓名from职工where工资>1230检索不在WH1仓库工作的员工姓名和工资。SELECT姓名,工资from职工where仓库号=!"WH1"&&<>,#也可表不等于检索生成于2001年7月的所有订单信息。SELECT*from订购单where订购日期BETWEEN{^2010-07-01}AND{^2010-07-31}检索2001年7月发给供应商S4的订单信息。SELECT*from订购单where供应商号="S4"AND订购日期BETWEEN{^2010-07-01}AND{^2010-07-31}实验8检索所有“周”姓员工的信息。Select*from职工where姓名like"周%"检索所有订购单信息并将其按照订购日期升序排序。Select*from订购单orderby订购日期&&asc升序desc降序检索所有订购单信息并将其按照订购日期降序排序。Select*from订购单orderby订购日期desc检索工资最高的前三名员工姓名。Selecttop3姓名from职工orderby工资desc检索工资水平在所有员工中排名前50%的员工姓名。Selecttop50percent姓名from职工orderby工资desc检索职工信息并将其按所在仓库号降序排序,同一仓库的员工按工资升序排序。Select*from职工orderby仓库号desc,工资asc检索订购单中供应商号不为空值的订单号。Select订购单号from订购单where供应商号isnotnull检索订购单中供应商号和订购日期均为空值的订单号。Select订购单号from订购单where供应商号isnulland订购日期isnull检索在WH1仓库工作的员工总数。Selectcount(职工号)from职工where仓库号="WH1"检索每月支付给员工的工资总数。Selectsum(工资)from职工检索“周”姓员工工资的平均值。Selectavg(工资)from职工where姓名like"周%"检索所有员工的最高工资。Selectmax(工资)from职工检索WH2仓库员工的最低工资。Selectmin(工资)from职工where仓库号="WH2"统计各仓库员工的人数,以实现以下结果:select仓库号,count(*)as人数from职工groupby仓库号统计各仓库员工的最高工资。select仓库号,max(工资)from职工groupby仓库号统计有职工2人或2人以上的仓库的平均工资。select仓库号,avg(工资)from职工groupby仓库号havingcount(*)>=2实验9统计各员工所在的城市(分别采用INNERJOIN和WHERE两种形式实现内连接)。select姓名,城市FROM职工innerJOIN仓库ON职工.仓库号=仓库.仓库号select姓名,城市FROM职工,仓库where职工.仓库号=仓库.仓库号&&如果没有检索答案,请用命令reindex重建索引后再检索统计各订购单所对应的供应商名,若无供应商名则留空。select订购单号,供应商名FROM订购单leftJoin供应商on订购单.供应商号=供应商.供应商号列出员工的上下级隶属关系(自连接),以实现以下结果:selectS.姓名上级 ,P.姓名下级from职工S,职工PWHERES.职工号=P.上级主管以连接和嵌套两种查询方式检索在北京工作的员工信息。select*FROM职工Join仓库on职工.仓库号=仓库.仓库号and城市="北京"select*FROM职工,仓库WHERE职工.仓库号=仓库.仓库号and城市="北京"Select*from职工WHERE仓库号in(select仓库号from仓库where城市="北京")以连接和嵌套两种查询方式检索01年6月后有接到订单的供应商信息。SELECT*FROM供应商Join订购单on订购单.供应商号=供应商.供应商号and订购日期>{^2001-6-30}SELECT*FROM供应商,订购单where订购单.供应商号=供应商.供应商号and订购日期>{^2001-6-30}检索工作的仓库面积小于300平米的员工信息(分别利用in、any、exists三种形式查询)。select*from职工where仓库号in(select仓库号from仓库where职工.仓库号=仓库.仓库号and面积<300)select*from职工where仓库号=any(select仓库号from仓库where职工.仓库号=仓库.仓库号and面积<300)select*from职工whereexists(select*from仓库where职工.仓库号=仓库.仓库号and面积<300)检索各供应商所接到的最新订单信息(如下图,利用嵌套查询)select*from订购单Swhere订购日期=(selectmax(订购日期)from订购单PwhereS.供应商号=P.供应商号)实验10使用SQL语言复制”仓库”表到名为”tmp”的临时表。select*from仓库intocursortemp将订购单信息按订购日期排序并输出至“output”表。select*from订购单intocursoroutputorderby订购日期&&orderby订购日期intotableoutput统计各供应商分别接到的订单数量并输出至文件D:\1.txt中。select供应商号,coun(订购单号)from订购单grouby供应商号ToFILED:\1.txt用UNION语句检索哪些城市设有该公司的供应商或仓库。select城市FROM仓库UNIONSELECT地址from供应商使用INSERT语句的两种形式,分别在职工表中添加名为”张三”和”李四”的两条记录,其工号为E9和E10,其余信息设为空值。Insertinto职工values("E9","张三",NULL,NULL,NULL)Insertinto职工(职工号,姓名,仓库号,工资,上级主管)values("E10","李四",NULL,NULL,NULL)将所有职工的工资增加500元。Update职工set工资=工资+500将订单’OR91’的订购日期改为空值。Update订购单set订购日期=nullwhere订购单号=”OR91”将职工刘勇所工作的仓库面积修改为300平方米。UPDATE仓库set面积=300where仓库号=(select仓库号from职工where姓名="刘勇")删除北京仓库中姓”刘”的员工。Deletefrom职工where姓名like"刘%”"and仓库号=(select仓库号from仓库where城市="北京")清空供应商表的所有记录。Deletefrom供应商删除订购单表和供应商表。Droptable订购单Droptable供应商使用Create命令创建订购单表和供应商表结构和相关联系(如下图),无需输入数据。createtable供应商(供应商号C(5)PRIMARYkey,供应商名C(20),地址C(20))createtable订购单(订购单号N(8),职工号N(8),供应商号N(8)PRIMARYkey,订购日期D,;FOREIGNKEY职工号tag职工号reference职工,;FOREIGNKEY供应商号tag供应商号reference供应商)实验11找出借书超过2本的读者,输出读者姓名及所借图书册数。select姓名,coun(书号)from借书卡,借书记录where借书卡.卡号=借书记录.借书卡号grouby卡号havingcoun(书号)>2查询借阅了书号为9787020081639这本书的读者,输出姓名及班级。Select姓名,班级from借书卡where卡号in(select借书卡号from借书记录where书号=9787020081639)查询借阅了书名为《工业革命》这本书的读者,输出姓名及班级。Select姓名,班级from借书卡Join借书记录on借书卡.卡号=借书记录.借书卡号Join图书on借书记录.书号=图书.书号and书名=”工业革命”查询书名包括"觉醒"关键词的图书,输出书号、书名、作者。Select书号,书名,作者from图书where书名like“%觉醒%”查询现有图书中价格最高的图书,输出书名及作者。Selecttop1书名,作者from图书orderby单价desc查询当前借了《工业革命》但没有借《猜火车》的读者,输出其借书卡号,并按卡号降序排序输出。Select借书卡号from借书记录where书号in(select书号from图书where书名="工业革命"and书名!="猜火车")orderby借书卡号desc将"法01"班同学所借图书的还期都延长一周。Update借书记录set还书日期=还书日期+7where借书卡号in(select卡号from借书卡where班级=”法01”)从图书表中删除当前无人借阅的图书记录。Deletefrom图书where图书.书号notin(select书号from借书记录);pack新增一条借书卡记录,卡号为A090112,姓名为刘烨,班级取空值。Insertinto借书卡(卡号,姓名,班级)values(A090112,刘烨,.null.)若需要追加一个”书库”表(包含书库号、书库名、负责人三个字段,并与图书表存在联系),请写出建表SQL语句。Createtable书库(书库号C(10)PRIMARYKEY,书库名C(10),负责人C(8));Altertable图书addFOREIGNKEY所在书库TAG所在书库REFERENCES书库使用ALTER语句为借书卡表新增一个字段”所属学院”,该字段允许取空值。Altertable借书卡add所属学院null使用ALTER语句为图书的库存册数字段加入域完整性约束,册数必须介于0-100否则报错。Altertable图书alter库存册数setcheck(库存册数>=0and库存册数<=100)error"库存册数不符!"使用ALTER语句删除借书卡的班级字段。Altertable借书卡dropcolumn班级使用ALTER语句重命名”借书卡”表的姓名字段为”读者姓名”。Altertable借书卡dropcolumn班级使用ALTER语句为当前数据库中的各表创建索引及其各表间的联系。【先运行“清理数据库”】1:Altertable借书记录alter借书卡号C(10)references借书卡2:Altertable借书记录addFOREIGNKEY借书卡号TAG借书卡号REFERENCES借书卡3:Altertable借书记录alter书号N(15)references图书tag书号实验132、根据要求利用相应的系统函数写出命令,并在VFP中测试运行结果是否正确。若系统中已有变量r=5,需要输出以r为半径的圆面积,

应使用?PI()*R*R命令。若系统中已有变量t=345.678,希望输出其保留两位小数的四舍五入值,应使用?ROUND(t,2)命令。若需要让计算机输出2010年2月2日、2007年3月3日和1999年4月4日三个日期的最大值,应使用?MAX({^2010-02-02},{^2007-03-03},{^1999-04-04})命令。系统中已有变量a=”select*fromdb”,若需要将变量a的字母全部转换为大写并输出,应使用?UPPER(a)命令。输入:A=”天行健,君子以自强不息”,从A中取出子串”自强不息”并输出,应使用?RIGHT(A,8)命令或?SUBSTR(A,15,8)命令。输入:A=”MyE-Mail地址”,从A中取出子串”E-M”并输出,应使用?SUBSTR(A,4,3)命令。若需要输出字母”o”在字符串”VisualFoxpro”中第二次出现的字符位置,应使用?AT("o","VisualFoxpro",2)命令。若需要使用函数将字符串”VisualBasic”中的”Basic”替换为”C++”并将结果输出,应使用?STUFF("VisualFoxpro",8,6,"C++")命令。若需要使用函数在字符串”Foxpro”前插入”Visual”并将结果输出,应使用?STUFF("Foxpro",0,0,"Visual")命令。输出当前的系统时间,可使用?TIME()命令。输出今天系统日期中的月份数字,可使用?MONTH(DATE())命令。输出当前系统日期中的小时数字,可使用?HOUR(DATETIME())命令。若需要让计算机输出明年的年份,可使用?YEAR(DATE())+1命令。若需要将当前时间输出为小时:分钟的形式,忽略秒数(如12:30),可使用?left(time(),5)命令。有一存储学生成绩的变量s,若希望成绩小于60时输出“不合格”,成绩60-90时输出“合格”,成绩大于90分时输出“优秀”,可使用?iif(s<60,"不合格",iif(s>90,"优秀","合格"))命令(利用IIF函数)。实验14根据用户输入的圆半径求出圆面积。提示:1)清屏2)使用INPUT接收用户输入的圆半径3)计算圆半径并保存到一个变量4)输出提示信息和该变量值。clearinput"请输入圆的半径"torm=pi()*r^2?"圆的面积是:"+str(m)根据用户输入的教师出生日期查找并输出相应的教师信息。提示:1)清屏2)打开教师表3)使用INPUT接收用户输入的日期值4)使用LOCATE定位指针到指定记录5)使用DISPLAY输出指针记录信息clearuse教师input"请输入出生日期:"todlocatefor出生日期=ddisplay根据用户输入的学生姓名查找并输出相应的学生信息。提示:1)清屏2)打开学生表3)使用ACCEPT接收用户输入文本4)使用LOCATE定位指针到指定记录5)使用DISPLAY输出指针记录信息clearuse学生accept"请输入学生姓名:"tonlocatefor姓名=ndisplay根据用户输入的年份判断该年份是否为闰年。提示:1)清屏2)使用INPUT接收用户输入的年份数值3)使用IF单语句判断该数值是否符合闰年的条件(可被400整除,或是可被4整除但不能被100整除),如果符合输出提示信息。clearinput"请输入年份:"toyify%400==0or(y%4==0andy%100!=0)?"该年是闰年"else?"该年是平年"endif根据用户输入的学生分数,判断该学生是不合格(<60分)、合格(60-90分)还是优秀(>90分)。(分别采用IF和CASE两种形式编写)clearinput"请输入学生分数:"togifg<60?"该学生成绩不合格"elseifg>90?"该学生成绩优秀"else?"该学生成绩合格"endifendif方法二clearinput"请输入学生分数:"togdocasecaseg<60?"该学生成绩不合格"caseg>90?"该学生成绩优秀"otherwise?"该学生成绩合格"endcase根据用户输入的学生姓名,输出该学生的性别,若学生表中不存在该姓名的学生则显示“查无此人”。提示:1)清屏2)打开学生表3)使用ACCEPT接收用户输入的学生姓名4)使用LOCATE定位指针到符合条件的记录5)使用FOUND()函数判断是否有找到记录,若无记录输出“查无此人”,若有记录则判断性别是否等于’男’,并输出判断结果。clearuse学生accept"请输入学生姓名:"tonlocatefor姓名=niffound()if性别='男'?"该生是男生"else?"该生是女生"endifelse?"查无此人"endif计算自然数1-100中的偶数总和并输出(分别使用WHILE和FOR两种循环形式)。提示:参考课本P78例子。clearsum=0i=0dowhilei<=100sum=sum+ii=i+2enddo?"自然数1-100中的偶数总和为:"+str(sum)方法二clearsum=0fori=0to100step2sum=sum+iendfor?"自然数1-100中的偶数总和为:"+str(sum)从键盘接收用户输入的5个数,输出其中的最大值。提示:参考课本P81例子。clearinput"请输入一个数:"toastoreatoma,mifori=2to5input"请再输入一个数:"toaifma<ama=aendififmi>ami=aendifendfor?"最大值为:"+str(ma)建立一个包含20个元素的数组,令数据各元素的值为该元素下标的平方,并将该数组各元素值输出。提示:建立数组的命令DECLAREa(20)cleardeclarea(20)fori=1to20a(i)=i^2?"a("+ltrim(str(i))+")"+"="+ltrim(str(a(i)))endfor输出1号院系所有男生的姓名(尝试分别使用WHILE、FOR和SCAN三种循环形式)提示:使用WHILE循环时,首先使用LOCATE定位指针到第一条符合条件的记录,循环条件为DOWHILEFOUND(),若有找到记录则输出姓名字段值,并使用Continue改变循环条件。使用FOR循环时,循环条件为FORi=1toRECCOUNT(),依次判断每条记录的所属院系是否为1且性别是否为男,若结果为真则输出姓名字段值。使用SCAN循环时,循环条件为SCANALLFOR所属院系=1and性别=’男’,每次循环输出当前指针所在的姓名字段值。方法一clearuse学生locatefor所属院系=1and性别="男"dowhilefound()?姓名continueenddo方法二clearuse学生fori=1toRECCOUNT()gotoiif所属院系=1and性别='男'?姓名endifendfor方法三clearuse学生scanALLFOR所属院系=1and性别='男'?姓名endscan实验15学生表中学生的所属院系为1-4,请根据用户输入的院系ID号,输出该院系的学生总数。思路:1)清屏2)打开学生表3)使用Input命令接受用户输入的ID号4)设置一个计算器变量5)并使用循环语句循环符合该ID号的学生记录,每次循环使计数器值+16)循环结束后输出计数器值,即为学生总数。clearuse学生input"请输入院系ID号:"toIDs=0fori=1toreccount()gotoiif所属院系=IDs=s+1endifendfor?"学生总数为:",s根据用户输入的院系名称(非院系ID),输出该院系中所有教师的姓名。思路:1)清屏2)使用Accept命令接收用户输入的院系名称3)使用SQL连接或嵌套查询语句检索该院系名对应的院系教师,并将结果存入名为tmp的临时表4)使用SELECTtmp选择该临时表工作区5)循环输出tmp表中的姓名值。clearaccept"请输入院系名称:"toaselect姓名from教师,院系where所属院系=院系idand院系名=aintocursortmpselecttmpdowhilenoteof()?姓名skipEnddo实验16设计一个命令行菜单,当用户点击键盘上的1-4数字键,分别输出信息工程系、信息管理系、电脑艺术系或影视动漫系中教师的信息清单(输出工号、姓名、性别、婚否、职称5列信息,其中婚否输出“已婚”或“未婚”)。效果图如下:提示:1)接收单个字符可用WAIT命令。2)使用DOCASE命令对用户输入进行分支判断,可以设置一个过程用来输出信息,例如用户输入1,则执行listTeacher(1)。2)若希望多列输出排列整齐,可使用?"工号"at1,"姓名"at11…的形式。3)原始数据中的婚否字段为逻辑型,可用if语句转换为字符“已婚”或“未婚”。clearUSE教师?"1.信息工程系教师清单"?"2.信息管理系教师清单"?"3.电脑艺术系教师清单"?"4.演视动漫系教师清单"WAIT"请选择(1-4):"TOAA=VAL(A)DOCASECASEA=1LISTTEACHER(1)CASEA=2LISTTEACHER(2)CASEA=3LISTTEACHER(3)CASEA=4LISTTEACHER(4)endcasePROCEDURELISTTEACHERPARAMETERSALOCATEFOR所属院系=ADOWHILEFOUND()?"姓名","工号","性别","职称"?姓名,工号,性别,职称continueenddoendproc设计一个命令行菜单,当用户选择命令1时,查询指定学号的学生记录;当用户选择命令2时,删除指定学号的学生记录(执行后提示删除是否成功);当用户选

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论