计算机(VF)二级设计题2
- 格式:doc
- 大小:2.46 MB
- 文档页数:23
一、基本操作题(共4小题,第1和2题是7分、第3和4题是8分)注意:基本操作题为4道SQL题,请将每道题的SQL命令粘贴到SQL1.txt文件,每条命令占一行,第1道题的命令是第1行,第2道题的命令是第2行,以此类推;如果某道题没有做相应行为空。
1、利用SQL SELECT命令将表stock_sl.dbf复制到stock_bk.dbf。
2、利用SQL INSERT命令插入记录("600028",4.36, 4.60, 5500)到stock_bk.dbf表。
3、利用SQL UPDATE命令将stock_bk.dbf表中"股票代码"为"600007"的股票"现价"改为8.88。
4、利用SQL DELETE命令删除stock_bk.dbf表中"股票代码"为"600000"的股票。
二、简单应用(2小题,每题20分,计40分)1、在考生文件夹下建立数据库sc2,将考生文件夹下的自由表score2添加进sc2中。
根据score2表建立一个视图score_view,视图中包含的字段与score2表相同,但视图中只能查询到积分小于等于1500的信息。
然后利用新建立的视图查询视图中的全部信息,并将结果按积分升序存入表v2。
2、建立一个菜单filemenu,包括两个菜单项"文件"和"帮助","文件"将激活子菜单,该子菜单包括"打开"、"存为"和"关闭"三个菜单项;"关闭"子菜单项用SET SYSMENU TO DEFAULT命令返回到系统菜单,其他菜单项的功能不做要求。
三、综合应用(1小题,计30分)在考生文件夹下有学生成绩数据库XUESHENG3,包括如下所示三个表文件以及相关的索引文件: 1、XS.DBF(学生文件:学号 C8,姓名 C8,性别 C2,班级 C5;另有索引文件XS.IDX,索引键:学号) 2、CJ.DBF(成绩文件:学号 C8,课程名 C20,成绩 N5.1;另有索引文件CJ.IDX,索引键:学号) 3、CJB.DBF(成绩表文件:学号 C8,班级 C5,姓名 C8,课程名 C12,成绩N5.1)。
VF试题及答案(一)一、选择题下列各题A) 、B) 、C) 、D) 四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。
(1) DBMS的含义是:A) 数据库系统 B) 数据库管理系统C) 数据库管理员 D) 数据库(2)从关系模式中指定若干个属性组成新的关系的运算称为:A) 联接 B) 投影 C) 选择 D) 排序(3)对于“关系”的描述,正确的是:A) 同一个关系中允许有完全相同的元组B) 同一个关系中元组必须按关键字升序存放C) 在一个关系中必须将关键字作为该关系的第一个属性D) 同一个关系中不能出现相同的属性名(4)在表设计器的“字段”选项卡中可以创建的索引是A) 唯一索引 B) 候选索引 C) 主索引 D) 普通索引(5)在程序中不需要用public等命令明确声明和建立,刻直接使用的内存变量是A) 局部变量 B) 公共变量 C) 私有变量 D) 全局变量(6)扩展名为dbf的文件是A) 表文件 B) 表单文件 C) 数据库文件 D) 项目文件(7)下列程序段的输出结果是CLEARSTORE 10 TO ASTORE 20 TO BSET UDFPARMS TO REFERENCEDO SWAP WITH A,(B)A,BPROCEDURE SWAPPARAMETERS X1, X2TEMP=X1X1=X2X2=TEMPENDPROCA) 10 20 B) 20 20 C) 20 10 D) 10 10(8)使用调试器调试第(7)小题的程序,如果想在过程SWAP执行时观察X1的值,可以在其中安置一条命令,程序执行到该命令时,系统将计算X1的值,并将结果在调试输出窗口中显示,这条命令的正确写法是:A) DEBUGOUT X1 B) DEBUG X1 C) OUT X1 D) TEST X1(9) 设X=10, 语句?VARTYPE ("X")的输出结果是A) N B) C C) 10 D) X(10) 表达式LEN(SPACE(0))的运算结果是A) .NULL. B) 1 C) 0 D) ""(11) 为表单建立了快捷菜单mymenu,调用快捷菜单的命令代码DO mymenu.mpr WITH THIS 应该放在表单的那个事件中?A) Destory事件B) Init事件C) Load事件D) RightClick事件(12)(24)题使用的数据表如下:当前盘当前目录下有数据库:学院.dbc,其中有“教师”表和“学院”表。
全国计算机等级考试二级vf答案一、单项选择题(每题2分,共40分)1. 在Visual FoxPro中,以下哪个选项不是数据库表的属性?A. 表的字段类型B. 表的记录数C. 表的索引D. 表的存储位置答案:D2. 在Visual FoxPro中,以下哪个函数不能用于计算字符串的长度?A. LEN()B. STRLEN()C. LEFT()D. RIGHT()答案:D3. Visual FoxPro中,以下哪个选项不是SQL语句?A. SELECTB. INSERTC. UPDATED. PRINT答案:D4. 在Visual FoxPro中,以下哪个选项不是数据类型?A. NumericB. DateC. MemoD. Boolean答案:D5. 在Visual FoxPro中,以下哪个选项不是表单控件的事件?A. ClickB. DblClickC. MouseMoveD. Load答案:D6. 在Visual FoxPro中,以下哪个选项不是报表控件?A. LabelB. TextboxC. LineD. Shape答案:D7. 在Visual FoxPro中,以下哪个选项不是查询设计器的功能?A. 创建查询B. 修改查询C. 删除查询D. 运行查询答案:C8. 在Visual FoxPro中,以下哪个选项不是视图设计器的功能?A. 创建视图B. 修改视图C. 删除视图D. 运行视图答案:D9. 在Visual FoxPro中,以下哪个选项不是项目管理器的功能?A. 创建项目B. 修改项目C. 删除项目D. 运行项目答案:D10. 在Visual FoxPro中,以下哪个选项不是报表向导的功能?A. 创建报表B. 修改报表C. 删除报表D. 预览报表答案:C11. 在Visual FoxPro中,以下哪个选项不是表单向导的功能?A. 创建表单B. 修改表单C. 删除表单D. 预览表单答案:C12. 在Visual FoxPro中,以下哪个选项不是菜单设计器的功能?A. 创建菜单B. 修改菜单C. 删除菜单D. 运行菜单答案:D13. 在Visual FoxPro中,以下哪个选项不是工具栏设计器的功能?A. 创建工具栏B. 修改工具栏C. 删除工具栏D. 运行工具栏答案:D14. 在Visual FoxPro中,以下哪个选项不是类设计器的功能?A. 创建类B. 修改类C. 删除类D. 运行类答案:D15. 在Visual FoxPro中,以下哪个选项不是代码编辑器的功能?A. 编写代码B. 修改代码C. 删除代码D. 运行代码答案:D16. 在Visual FoxPro中,以下哪个选项不是项目管理器的视图?A. 项目视图B. 类视图C. 数据视图D. 代码视图答案:D17. 在Visual FoxPro中,以下哪个选项不是项目管理器的选项?A. 项目选项B. 表单选项C. 报表选项D. 代码选项答案:D18. 在Visual FoxPro中,以下哪个选项不是项目管理器的窗口?A. 项目窗口B. 类窗口C. 数据窗口D. 代码窗口答案:D19. 在Visual FoxPro中,以下哪个选项不是项目管理器的菜单?A. 文件菜单B. 编辑菜单C. 查看菜单D. 运行菜单答案:D20. 在Visual FoxPro中,以下哪个选项不是项目管理器的工具?A. 项目管理工具B. 表单设计工具C. 报表设计工具D. 代码编辑工具答案:D二、填空题(每题2分,共20分)1. 在Visual FoxPro中,使用________命令可以创建一个新的数据库。
计算机二级《VF》考试试题及答案2016年计算机二级《VF》考试试题及答案一、基本操作题1.在考生文件夹下建立数据库BOOKAUTH.DBC,把表BOOKS和AUTHORS添加到该数据库中。
2.为AUTHORS表建立主索引,索引名为“PK”,索引表达式为“作者编号”。
3.为BOOKS表建立两个普通索引,第一个索引名为“PK”,索引表达式为“图书编号”;第二个索引名和索引表达式均为“作者编号”。
4.建立AUTHORS表和BOOKS表之间的永久性联系。
二、简单应用题在考生文件夹下完成如下简单应用:1.打开表单MYFORM4-4,把表单(名称为Fomd)标题改为“欢迎您”,将文本“欢迎您访问系统”(名称为Label1的标签)改为25号黑体。
最后在表单上添加“关闭”(名称为Command1)命令按钮,单击此按钮关闭表单。
保存并运行表单。
设计一个表单MYFORM4,表单中有两个命令按钮“查询”和“退出”(名称分别为Command1和Command2)。
(1)单击“查询”命令按钮,查询BOOKAUTH数据库中出版过3本以上(含3本)图书的作者信息,查询信息包括作者姓名和所在城市;查询结果按作者姓名升序保存在表NEW-VIEW4中。
(2)单击“退出”命令按钮关闭表单。
注意:完成表单设计后要运行表单的所有功能。
三、综合应用题(1)在考生文件夹下,将BOOKS表中所有书名中含有“计算机”3个字的图书复制到BOOKS_BAK表中,以下操作均在BOOKS_BAK表中完成。
(2)复制后的图书价格在原价格的基础上降低5%。
(3)从图书均价高于25元(含25)的出版社中,查询并显示图书均价最低的出版社名称及均价,查询结果保存在new_table4表中(字段名为出版单位和均价)。
【参考答案及解析】一、基本操作题【考点分析】本大题主要考查的知识点是:数据库的建立、向数据库中添加表、为表建立索引以及表间建立联系。
【解题思路】通过“新建”菜单或“新建”命令按钮实现数据库的建立,在数据库设计中完成表的添加;为表建立索引需要在表设计器中进行;为两张表建立永久性联系需要在数据库设计器中进行,并且两张表要分别在对应的字段上建立主索引和普通索引。
计算机二级VF考试试题及答案2016计算机二级VF考试试题及答案1、下列关于自由表的叙述中,错误的是( )。
A.全部是用以前版本的FoxPro(FoxBASE)建立的表B.可以用VisualFoxPro建立,也可以把它添加到数据库中C.自由表可以添加到数据库中D.数据库表也可以从数据库中移出成为自由表2、在VisualFoxPr0中,下列关于查询的描述中正确的是( )。
A.不能用自由表建立查询B.只能用自由表建立查询C.不能用数据库表建立查询D.可以用数据库表和自由表建立查询3、在SQL的数据定义功能中,删除表字段名的命令格式是( )。
A.ALTER TABLE数据表名DELETE COLUMN字段名B.ALTER TABLE数据表名DROPCOLUMN字段名C.ALTER TABLE数据表名CANCELC0LUMN字段名D.ALTER TABLE数据表名CUT COLUMN字段名4、设有学生表S(学号,姓名,性别,年龄),查询所有年龄小于等于l8岁的女同学,并按年龄进行降序排序,生成新的表WS,正确的'SQL语句是( )。
A.SELECT*FROM SWHERE性别=’女’ AND年龄<=18 0RDER BY 4 DESC INTOTABLEWSB.SELECT*FROM SWHERE性别=’女’AND年龄<=18 0RDER BY 年龄INTOTABLEWSC.SELECT*FROM SWHERE性别=’女’AND年龄<=18 0RDER BY 年龄DESC INTO TABLEWSD.SELECT*FROM SWHERE性别=’女’0R 年龄<=18 0RDER BY ’年龄’ASC INTO TABLEWS5、对于长度为n的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是( )。
A.冒泡排序为n/2B.冒泡排序为nC.快速排序为nD.快速排序为n(n-1)/26、将当前表中有删除标记的记录物理删除的命令是A.DELETEB.ERASEC.ZAPD.PACK7、在VisualFoxPm中,属于命令按钮属性的是A.ParentB.ThisC.ThisFormD.CliCk8、要将一个弹出式菜单作为某个控件的快捷菜单,需要在该控件的某事件代码中调用弹出式菜单程序的命令。
计算机等级二级VF模拟笔试题一、选择题(1)在深度为5的满二叉树中,叶子结点的个数为A)32B)31C)16D)15(2)若某二叉树的前序遍历访问顺序是abdgcefh,中序遍历访问顺序是dgbaechf,则其后序遍历的结点访问顺序是A) bdgcefhaB) gdbecfhaC) bdgaechfD) gdbehfca(3)一些重要的程序语言(如C语言和Pascal语言)允许过程的递归调用。
而实现递归调用中的存储分配通常用A)栈B)堆C)数组D)链表(4)软件工程的理论和技术性研究的内容主要包括软件开发技术和A)消除软件危机B)软件工程管理C)程序设计自动化D)实现软件可重用(5)开发软件时对提高开发人员工作效率至关重要的是A)操作系统的资源管理功能B)先进的软件开发工具和环境C)程序人员的数量D)计算机的并行处理能力(6)在软件测试设计中,软件测试的主要目的是A)实验性运行软件B)证明软件正确C)找出软件中全部错误D)发现软件错误而执行程序(7)数据处理的最小单位是A)数据B)数据元素C)数据项D)数据结构(8)索引属于A)模式B)内模式C)外模式D)概念模式(9)下述关于数据库系统的叙述中正确的是A)数据库系统减少了数据冗余B)数据库系统避免了一切冗余C)数据库系统中数据的一致性是指数据类型一致D)数据库系统比文件系统能管理更多的数据(10)数据库系统的核心是A)数据库B)数据库管理系统C)模拟模型D)软件工程(11)为了合理组织数据,应遵循的设计原则是A)"一事一地"的原则,即一个表描述一个实体或实体之间的一种联系B)用外部关键字保证有关联的表之间的联系C)表中的字段必须是原始数据和基本数据元素,并避免在表之间出现重复字段D)以上各原则都包括(12)关系运算中花费时间可能最长的运算是A)选择B)联接C)并D)笛卡儿积(13)下列赋值语句中正确的是A)STORE 1 TO X,YB)STORE 1,2 TO XC)STORE 1 TO X YD)STORE 1、2 TO X(14)执行下列语句,其函数结果为STORE -100 TO X?SIGN(X)*SQRT(ABS(X))A)10B)-10C)100D)-100(15)通过项目管理器窗口的命令按钮,不能完成的操作是A)添加文件B)运行文件C)重命名文件D)连编文件(16)在Visual FoxPro中,在命令窗口输入CREATE DATABASE命令,系统产生的结果是A)系统会弹出"打开"对话框,请用户选择数据库名B)系统会弹出"创建"对话框,请用户输入数据库名并保存C)系统会弹出"保存"对话框,请用户输入数据库名并保存D)出错信息(17)ABC.DBF是一个具有两个备注型字段的数据表文件,若使用COPY TO TEMP命令进行复制操作,其结果是A)得到一个新的数据表文件B)得到一个新的数据表文件和一个新的备注文件C)得到一个新的数据表文件和两个新的备注文件D)错误信息,不能复制带有备注型字段的数据表文件(18)要将数据库表从数据库中移出成为自由表,可使用命令A)DELETE TABLE <数据表名>B)REMOVE TABLE <数据表名>C)DROP TABLE <数据表名>D)RELEASE TABLE <数据表名>(19)下列关于视图的说法中,错误的是A)视图可以从单个表或多个表中派生B)可以在磁盘中找到相应的视图文件C)视图可以作为查询的数据源D)利用视图可以暂时使数据从数据库中分离成为自由数据(20)不需要事先建立就可以使用的变量是A)公共变量B)私有变量C)局部变量D)数组变量(21)设某程序中有PROG1.prg、PROG2.prg、PROG3.prg三个程序依次嵌套,下面叙述中正确的是A)在PROG1.prg中用!RUN PROG2.prg语句可以调用PROG2.prg子程序B)在PROG2.prg中用RUN PROG3.prg语句可以调用PROG3.prg子程序C)在PROG3.prg中用RETURN语句可以返回PROG1.prg主程序D)在PROG3.prg中用RETURN TO MASTER语句可以返回PROG1.prg主程序(22)执行下列程序:以下是引用片段:CLEARDO ARETURNPROCEDURE APRIVATE SS=5DO B?SRETURNPROCEDURE BS=S+10RETURN程序的运行结果为A)5B)10C)15D)程序错误,找不到变量(23)将编辑框的ReadOnly属性值设置为.T.,则运行时此编辑框中的内容A)只能读B)只能用来编辑C)可以读也可以编辑D)对编辑框设置无效(24)下列关于表格的说法中,正确的是A)表格是一种容器对象,在表格中全部按列来显示数据B)表格对象由若干列对象组成,每个列对象包含若干个标头对象和控件C)表格、列、标头和控件有自己的属性、方法和事件D)以上说法均正确(25)在表单MyForm中通过事件代码,设置标签Lbl1的Caption属性值设置为"计算机等级考试",下列程序代码正确的是A)MyForm.Lbl1.Caption="计算机等级考试"B)This.Lbl1.Caption="计算机等级考试"C)ThisForm .Lbl1.Caption="计算机等级考试"D)ThisForm.Lbl1.Caption=计算机等级考试(26)下列关于报表预览的说法,错误的是A)如果报表文件的数据源内容已经更改,但没有保存报表,其预览的结果也会随之更改B)只有预览了报表后,才能打印报表C)在报表设计器中,任何时候都可以使用预览功能,查看页面设计的效果D)在进行报表预览的同时,不可以更改报表的布局(27)下列关于域控件的说法,错误的是A)从数据环境设置器中,每拖放一个字段到报表设置器中就是一个域控件B)域控件用于打印表或视图中的字段、变量和表达式的计算结果C)域控件的"表达式生成器"对话框中的"表达式"文本框中必须要有数值表达式,否则将不能添加该域控件D)如果域控件的"表达式生成器"对话框中的"表达式"文本框中没有数值表达式,可在"格式"文本框中设置表达式添加该域控件(28)下列关于别名和自联接的说法中,正确的是A)SQL语句中允许在WHERE短语中为关系定义别名B)为关系定义别名的格式为:<别名><关系名>C)在关系的自联接操作中,别名是必不可少的D)以上说法均正确(29)下列关于SQL对表的定义的说法中,错误的是A)利用CREATE TABLE语句可以定义一个新的数据表结构B)利用SQL的表定义语句可以定义表中的主索引C)利用SQL的表定义语句可以定义表的域完整性、字段有效性规则等D)对于自由表的定义,SQL同样可以实现其完整性、有效性规则等信息的设置(30)在SQL的数据定义功能中,下列命令格式可以用来修改表中字段名的是A)CREATE TABLE 数据表名NAME...B)ALTER TABLE 数据表名ALTER字段名...C)ALTER TABLE 数据表名RENAME COLUMN字段名TO...D)ALTER TABLE 数据表名ALTER 字段名SET DEFAULT...(31)利用SQL 命令从职工表中派生出含有"职工号"、"姓名"字段的视图,下列语句正确的是A)CREATE VIEW ZG_view;SELECT 职工号,姓名FROM 职工表B)CREATE VIEW ZG_view AS;SELECT 职工号,姓名FROM 职工表C)CREATE QUERY ZG_view;SELECT 职工号,姓名FROM 职工表D)CREATE QUERY ZG_view AS;SELECT 职工号,姓名FROM 职工表第(32)~(35)题使用如下的班级表和学生表。
xx计算机二级《VF》上机试题及答案1(1)创立一个新的工程“customermanagement”。
(2)在新建立的工程“customermanagement”中创立数据库“ordermanagement”。
(3)在数据库“ordermanagement”中建立表“orderlist”,表名称分别为:“客户型”、“订单号”、“订购日期”和“总金额”;类型分别为:“字符型(6)”、“字符型(6)”、“日期型”和“浮动型”。
(4)为“order list”表创立一个主索引,索引名和索引表达式均是“订单号”。
参考解析:(1)【操作步骤】①在Visual FoxPro主窗口下按组合键Ctrl+N,那么系统弹出“新建”对话框,在文件类型中选择“工程”,再单击“新建文件”按钮;②在弹出的“创立”对话框中,选定考生文件夹,在工程文件中填入“customermanagement.pjx”,再单击“保存”按钮;这样便新建了一个工程。
(2)【操作步骤】①在弹出的工程管理器中先选择“数据”标签,再选择“数据库”,最后单击“新建”按钮;②在弹出的“新建数据库”对话框中单击“新建文件”;③在弹出的“创立”对话框中,选定考生文件夹,在“数据库名”中填入“0rdermanagement.dbc”,再单击“保存”按钮。
(3)【操作步骤】①完成了数据库的添加;②在添加的数据库中选择“数据”标签,再单击“数据库”标签,选择“0rdermanagement.bdc”数据库,再选择“表”标签,单击“新建”铵扭,在弹出的“创立”对往左框中将表名更改为“0rderlist”,单击“确定”按钮,在弹出“表设计器”中的“字段名”中填入题干中的字段,“类型”中选择题干中规定的类型,单击“确定”按钮,在弹出的提示框中单击“是”按钮保存表;③在弹出的“新建表”对话框中单击“新建袭”,并在弹出的“创立”对话框中,选定考生文件夹,在“输入表名”中填人“0rderlist.dbf”,再单击保存。
计算机二级VF练习题及答案单项选择题 (每小题1分,共20分)1. 在VFP的命令窗口中,以下叙述正确的是(A )(A) 所使用的变量都是全局变量 (B)不能运行任何程序(C) 不能打开数据表 (D)不能修改执行过的命令2. 在数据库的三级模式中,真正存储数据的是( B )。
(A)模式 (B)内模式 (C)外模式 (D)概念模式3. 在VFP的命令窗口中已经定义了若干个内存变量,若执行QUIT命令后,这些变量所保存的数据将(C )(A) 存入一个自动生成的'内存变量文件中 (B)自动转到磁盘存储器上保留(C) 随着系统的退出全部丢失 (D)转为外存变量保存下来4. 通用字段的数据宽度为4,它存放的是( C ).(A) 多媒体数据 (B) 文件名称 (C) FPT指针 (D) CDX指针5. 下列符号中,不是变量名的是( A )。
(A) "姓名" (B) 性别 (C) A100 (D) AB6. 表达式SUBSTR(RIGHT(“ZIYUANGUANLI”,6),3,4)的结果( A )。
(A) ANLI (B) GUAN (C) YUAN (D) ZIYU7. 下列函数中,将字符串转换为数值的是( B )。
(A) STR() (B) VAL() (C) CHR() (D) MOD()8. TIME()函数返回值的数据类型是(B )。
(A) 数值型 (B) 字符型 (C) 逻辑型 (D) 日期型9. 执行A=″1.保护环境″和B=20两条赋值命令后,能够正确求值的表达式是( B )。
(A) RIGHT(A,4)+SUBSTR(B,2) (B)VAL(LEFT(A,1))+B(C) A+B (D)SUBSTR(A,1,1)+B10. 设X=123,Y=678,H=”X+Y”,则表达式1+&H的值是( A )。
(A) 802 (B)数据类型不匹配 (C)1+X+Y (D)67911. DB(数据库)、DBMS(数据库管理系统)和DBS(数据库系统)三者之间的关系是(B )。
<>必选项;[]可选项;…前面内容重复;I任选项1.*将任意一个三位数反向输出x=123x1=int(x/100)x2=int(mod(x,100)/10)x3=mod(x,10)?x1+x2*10+x3*100 ~~~~~3212.x=123y=str(x,3) &&将数值转化为字符串?right(y,1)+subs(y,2,1)+left(y,1) ~~~~~~3213.xb="女"?iif(xb='男',1,iif(xb='女',2,3)) &&条件函数 ~~~~~~24.note () **或^ * / %(求余数) + -从高到低;==(精确等于),<>、#、!(不等于);Not and nor (依次降级)5.*查找姓“张”的学生at("张",姓名)=1;substr(姓名,1,2)=”张”;姓名=”张”&&非精确比较;left(姓名,2)=”张”;6.*20岁以下学生Date()-出生日期<=20*365;Year(date())-year(出生日期)<=20;7.*少数民族学生少数民族否;少数民族否=.T.;Iif(少数民族否,”少数民族”,”汉族”)=”少数民族”*use 学生 &&这是vf语言首先需要做的,以下操作省略此条8~39 8.*显示第五条记录go 5display;list record 5;list for recn()=5;display for recn()=59.*显示记录号为偶数的记录list for mod(recno(),2)=0 &&recno()是记录号函数;list for recno()%2=0;list for int(recno()/2)=recno()/2;list for int(recno()/2)<>recno()/2 &&显示记录号为奇数的记录10.*显示汉族女学生的记录list for 少数民族否=.F. and 性别="女"list for !少数民族否 and 性别="女"11.*显示女学生的姓名、性别、年龄及简历list 姓名,性别,year(date())-year(出生日期),简历 for;性别="女"Use &&关闭表12.*表结构显示list/display structure;表结构修改modify structure;表记录显示list=display all;表记录修改edit/change/browse/replace··with··for/while··13.*将汉族学生数学成绩减少10分,并将外语成绩增加20分replace 数学 with 数学-10,外语 with 外语+20 for 少数民族否14.*将6号记录的出生日期修改为1983年9月7日go 6replace 出生日期 with {^1983/09/07};replace 出生日期 with {^1981/09/07} for recno()=615.*将汉族学生的数学成绩减少20分,将少数民族学生的外语成绩增加20分Replace 数学 with 数学-20 for 少数民族否=.F.Replace 外语 with 外语+20 for 少数民族否 &&必须用两条命令,因条件不同16.绝对定位 go top/bottom;相对定位skip17.* 插入记录Insert/insert blank18.*添加记录append &&用全屏方式进行添加记录append blank &&添加空白记录,在尾部19.*删除记录delete for recno()=3 or recno()=5 &&添加删除标志browset delete on &&做了删除标志的不参与运算recall &&取消删除标志pack &&物理删除记录zap=delete all 和 pack20.*复制表结构copy structure to 学生1 fields 学号,姓名,性别21.*复制表copy to new1 for 数学>=60use new1 &&显示表的记录必须先打开新表listcopy to new2 sdftype new2.txt &&查看新文本文件copy to new3 delimitedtype new3.txt &&查看新文本文件,若为字符型,带有""22.*从其他文件向表添加数据use 学生表copy stru to 学生2use 学生2list &&显示记录为空list struappend from 学生表 &&将学生表记录添加到学生2中list &&显示学生2表记录23.数据表文件的删除delete file new1.dbf &&扩展名不能省略erase 表1.dbf &&删除的文件必须关闭24.*表的排序* A(ascding 升序);D(descding 降序);C(加上忽略大小写),改变物理顺序USE 学生表sort on 数学/DC to sxuse sxlist next 525.*索引文件*种类:单索引文件:.idx;复合索引:.cdx;改变逻辑顺序*用表单设计器建立的索引号都是结构复合索引*To 单索引文件;tag 复合索引文件;compact 压缩的单索引文件*复合索引系统默认升序,单索引只能升序索引,默认普通索引*按年龄降序,年龄相同数学成绩升序(复合索引)index on str(year(date())-year(出生日期),2)+str(100-数学) tag xx desc *按数学降序(单索引)index on -数学 to su*按学号升序,不允许有编号相同的记录index on 学号 tag xh unique*按出生日期升序(非结构复合索引)index on 出生日期 tag cs of ss26.*打开索引文件*打开表后再打开索引文件set index to suset index to &&关闭当前单索引文件*表和索引文件同时打开Use 学生 index su27.*确定主控索引*go top/bottom指向逻辑顺序use 学生set index to su,nameset order to 2 &&设置name 为主索引list next 3set order to 1 &&设置su为主索引,或set order to sulist next 3set order to &&取消主索引28.*关闭索引文件,不能关闭结构索引; use 命令关闭当前表和相关索引close indexset index to29.*删除索引Delete file su &&删除单索引文件Delete tag all;delete tag cs &&删除复合索引文件索引标志30.*更新索引Reindex[compact]31.*顺序查询定位locate for !少数民族否 and 性别='男'disp 姓名,数学,year(date())-year(出生日期)continue &&继续查找下一个?recno(),姓名,数学,year(date())-year(出生日期)?found()32.*索引查询定位 &&继续查找下一个skipindex on 出生日期 tag sy4d={^1983/09/07}seek d &&内存变量,不加&dispindex on 姓名 tag xmfind 王大为 &&查找字符型,不需要加定界符dispseek '张大力' &&查找任意数据,需要加定界符disp33.*统计记录个数count for 性别='女' to x1count for 性别='男' to x2?x1,x2e 学生aver year(date())-year(出生日期) to y?y &&求表达式平均值sum 数学,外语 to a,b?a,b &&求数学,外语总分calculate avg(数学),min(数学),max(数学) to x,y,z?x,y,z &&avg,数值表达式平均值;max,数值,日期或字符35.*分类汇总*按性别、数学和外语成绩进行汇总index on 性别 tag xbhztotal on 性别 to hzuse hz &&先建立索引再分类汇总list在一个工作区只能打开一个表文件,且一个表文件也仅仅在一个工作区打开Select 0选择当前没有被使用的最小工作区为当前工作区36.*在1号工作区打开学生表并取别名use 学生 alias zg in 1;use 学生 alias zg in A &&1~10号别名A~J37.*表的逻辑关联Set relation to…into<工作区号>;选择additive建立一对多关系Set relation to 取消所有关联,取消后仍是两个表38.*表的物理联接Join with …to…for/fields…39.按性别对数学成绩和外语成绩汇总Index on 性别 tag cTotal on 性别 fields 数学,外语 to xbcj分别统计男女生平均年龄Average(date()-出生日期)/365 for 性别=’男’Average(date()-出生日期)/365 for 性别=’女’显示性别为女的学生数学成绩的总分,平均分,最高分和最低分Cal sum(数学),avg(数学),max(数学),min(数学) for 性别=’女’to x1,x2,x3,x4?x1,x2,x3,x440.建立数据库文件:creat database 学生打开数据库:use 学生.dbc &&.dbc不能省略;open database…关闭数据库:close all/database修改数据库:modify database …删除数据库:delete database …41.建立数据库索引父表建立主索引,子表建立普通索引;清理数据库;编辑参照完整性42.数据库表设计器字段有效性规则:性别=’男’ or 性别=‘女’信息:’性别只能为男或者为女’默认值:’女’43.SQL命令动词数据查询:select数据操纵:insert update delete数据定义:creat drop alter44.*用SQL命令建立学生管理数据库,包括学生表、选课表、课程表*用creat建立数据库creat database 学生管理*建立学生表creat table 学生表(学号 c(5) primary key,姓名 c(8),性别 c(2),年龄 i, 数学 n(5,1) check (数学>0) error "成绩应该大于0!" defa 0,外语 n(5,1)) *建立课程表creat table 课程表(课程号 c(5) primary key,课程名 c(10),学分 n(1)) &&primary key 建立主索引*建立选课表creat table 选课(学号 c(5),课程号 c(5),成绩 i check(成绩>=0 and 成绩<=100) error "成绩值范围0~100!" default 60,foreign key 学号 tag 学号reference 学生,foreign key 课程号 tag 课程号 reference 课程号)&&reference 与 foreign key 成对出现,建立普通索引Creat table=creat dbf45.*删除表Open database 学生管理Drop table 课程46.*修改表结构*为课程表增加一个整数型的学时字段alter table 课程 add 学时 i check(学时>=16) error "学时应该大于16!" *讲课程表的课程字段名由10改为20alter table 课程 alter 课程名 C(20)*为学生表外语字段添加有效性规则alter table 学生 alter 外语 set check(外语>=0 and 外语 <=100) error "外语成绩应在0~100之间!"*删除学时字段的有效性规则alter table 课程 alter 学时 drop check*删除课程表中学时字段alter table 课程 drop column 学时*将学生表中数学字段改为数学成绩字段alter table 学生 rename column 数学 to 数学成绩*在学生表中定义学号和姓名为候选索引alter table 学生表 add unique 学号+姓名 tag ran*删除学生表候选索引ranalter table 学生表 drop unique tag ran47.*数据查询Select …from…where…order by/group by…into/to…Top与order by 连用,默认升序Into array:数组;into cursor:临时表;into dbf/table:数据表(先运行再加into)48.*简单查询*列出所有学生名单select * from 学生 &&*表示输出所有字段,以浏览方式显示*列出所有学生去掉重名select distinct 姓名 as 学生名单 from 学生select 姓名 from 学生 distinct*查询数学成绩在80~95分之间的学生select * from 学生 where 数学>=80 and 数学<=95*统计男学生人数select count(*) as 男生人数 from 学生 where 性别='男' &&count(*)求满足条件的数值*将所有学生数学成绩四舍五入,只显示学号,姓名,数学cjselect 学号,姓名,round(数学成绩,0) as 数学cj from 学生*求所有学生的数学平均成绩、最高分和最低分select avg(数学成绩) as 数学平均分,max(数学成绩) as 数学最高分,min(数学成绩) as 数学最低分from 学生49.*带有特殊运算符的条件查询Where 子句中的特殊运算符All:满足子查询中所有值的记录Any:满足子查询中任意一个值的记录Between:字段值在指定范围内Exists:测试子查询中查询结果是否为空,若为空,则返回.f.In:字段值是结果集合或子查询中的内容Like :对字符型数据进行字符串比较,通配符“-”代表一个字符;“%”代表0或多个字符Some:满足集合中某个值*查询数学成绩在80到95分之间的学生select 数学成绩 from 学生 where 数学成绩 between 80 and 95*列出学号第二个字符为7的所有学生,注意学号字段类型为字符型select * from 学生 where 学号 like "-7%"select * from 学生 where left(学号,2)="7"*列出所有姓赵的学生名单select 学号,姓名 from 学生 where 姓名 like"赵%"select 学号,姓名 from 学生 where 姓名=’赵’50.*简单连接查询*等值连接与非等值连接*查询所有学生的成绩单,要求给出学号、姓名、课程号、课程名和成绩select a.学号,a.姓名,b.课程号,c.课程名,b.成绩 from 学生表 a,选课表 b,课程 c where a.学号=b.学号and b.课程号=c.课程号*查询男生的选课情况,要求列出学号,姓名,课程号,课程名和学分数select a.学号,a.姓名,b.课程号,c.课程名,c.学分 from 学生表 a,选课表 b,课程 c where a.学号=b.学号 and b.课程号=c.课程号 and 性别="男"*自连接查询*列出选修01102课的学生中,成绩大于学号为070410的学生该门课成绩的那些学号及成绩select a.学号,a.成绩 from 选课表 a,选课表 b where b.课程号="01102" andb.学号="070410" and a.课程号=b.课程号 and a.成绩>b.成绩51.*嵌套查询*返回单值的子查询*列出选修“数据库原理”的所有学生的学号select 学号 from 选课表 where 课程号=(select 课程号 from 课程 where 课程名="数据库原理")*返回一组值的子查询*列出选修01101课的学生中期末成绩比选修01102课的最低成绩还要高的学生的学号和成绩select 学号,成绩 from 选课表 where 课程号="01101" and 成绩>any(select 成绩 from 选课表 where 课程号="01102") &&any运算符的用法*列出选修01101课的学生的成绩比选修01102课的最高还要高的学生的学号和成绩select 学号,成绩 from 选课表 where 课程号="01101" and 成绩>all(select 成绩 from 选课表 where 课程号="01102") &&all运算符的用法*列出选修“数据库原理”或“软件工程”课程的所有学生的学号select 学号 from 选课表 where 课程号 in(select 课程号 from 课程 where 课程名="数据库原理" or 课程名="软件工程") &&any运算符的用法in等价于=any52.*超连接查询Select…from…inner/left/right/full join…*内部链接*列出男生的学号、课程号及成绩select a.学号,b.课程号,b.成绩 from 学生表 a,选课表 b wherea.学号=b.学号 and a.性别='男'select a.学号,b.课程号,b.成绩 from 学生表 a inner join 选课表 b ona.学号=b.学号 where 性别="男"53.*排序*按性别顺序列出学生的学号、姓名、性别、课程名及成绩,性别相同的再按课程名排序,最后按成绩由高到低排序select a.学号,a.姓名,a.性别,c.课程名,b.成绩 from 学生表 a,课程 c,选课表 b where a.学号=b.学号 and b.课程号=c.课程号ord er by a.性别,c.课程名,b.成绩 desc*输出学生表中数学成绩最高的前5名学生的信息select * top 5 from 学生表 order by 数学 desc54.*查询结果输出Into array 数组;cursor 临时表;dbf/table 表To file 文本文件*输出学生表数学成绩最高的前五名保存到testselect a.学号,b.课程号,b.成绩 from 学生表 a,选课表 b;where a.学号=b.学号 and a.性别='男' to file test*输出合并*列出选修01101或01102的所有学生和学号select 学号 from 选课表 where 课程号="01101" union select 学号 from 选课表 where 课程号="01102"*分组统计查询与筛选*分别统计男女人数select 性别,count(性别) from 学生 group by 性别*分别统计男女学生中数学成绩大于85分的学生人数select 性别,count(性别) from 学生 group by 性别where 数学成绩>85&&where:分组前所有记录满足的条件错误:select 性别,count(性别) from 学生 group by 性别 having 数学>85 &&having:查询后的结果是否满足条件55.*插入记录*向学生表中添加记录insert into 学生表 values("231002","杨阳","男",87.0,88.0)insert into 学生表(学号,姓名) values ("231109","李兵")dimension a(5)a(1)="221013"a(2)="张阳"a(3)="女"a(4)=97.0a(5)=88.0insert into 学生表 from array a56.*删除记录*将学生表中所有男生的记录逻辑删Delete from 学生 where 性别=’男’*删除学生管理里学生表中所有少数民族的学生Delete from 学生管理!学生 where 少数民族否Delete from 无条件删除所有记录57.*更新记录*将学生表中姓名为杨阳的学生的外语成绩改为93分update 学生 set 外语=93 where 姓名="杨阳"*将所有男生的各科成绩加20分update 选课表 set 成绩=成绩+20 where 学号 in (select 学号 from 学生表where 性别="男")update一次只能在单一表中更新记录58.*查询哪些仓库有工资多于1210元的职工Select distinet 仓库号 from 职工 where 工资>1210*给出在仓库WH1或WH2工作,并且工资少于1250元的职工号select 职工号 from 职工 where 工资<1250 and(仓库号="WH1" or 仓库号="WH2")*哪些城市至少有一个仓库的职工工资为1250元select dist a.城市 from 仓库 a,职工 b where 工资=1250 anda.仓库号=b.仓库号*找出和职工E4有相同工资的所有员工select * from 职工 where 工资=(select 工资 from 职工 where 职工号="E4") and 职工号!="E4"*找出供应商所在地数目select count(dist 地址) from 供应商*求所有职工的工资都多于1210元的仓库的平均面积select avg(面积) as 平均面积。
0 (三)设计题 【注意】 编写程序代码之前,若有必要,则先在“属性”对话框中查看控件属性的类型和初始值,查看相关表文件的结构和记录。
Dsg2302
【解答】 组合框Combo1的InterativeChange事件代码如下: Thisform.Grid1.RecordSource="select * from FGrade where 课程名称=This.value into cursor tmp" select max(成绩),min(成绩),avg(成绩) from FGrade where 课程名称=This.value into array cj Thisform.Text1.value=cj(1) Thisform.Text2.value=cj(2) Thisform.Text3.value=cj(3) 1
Dsg2502 【解答】 “显示”命令按钮Command1的Click事件代码如下: thisform.grid1.recordsourcetype=4 thisform.grid1.recordsource=" sele 售价(万),地址 from fshangpf where 房型=thisform.combo1.value into cursor temp" sele avg(售价(万)) from fshangpf where 房型=thisform.combo1.value into array sj thisform.text1.value=sj(1)
Dsg2602.png 2
【解答】 “统计”命令按钮Command1的Click事件代码如下: thisform.grid1.recordsourcetype=4 thisform.grid1.recordsource= “sele 商品名称,sum(销售价*销售数量) from fstocknames,fstocknums where fstocknames.商品编号=fstocknums.商品编号 group by fstocknames.商品编号 into cursor temp”
Dsg2702.png
【解答】 “统计”命令按钮Command1的Click事件代码如下: if thisform.optiongroup1.value=1 thisform.grid1.recordsource=" sele 股票代码,持有数量,买入价 from fnums where 股票代码=thisform.combo1.value order by 买入价 into cursor temp " endif if thisform.optiongroup1.value=2 thisform.grid1.recordsource=" sele 股票代码,持有数量,卖出价 from fnums where 股票代码=thisform.combo1.value order by 卖出价 desc into cursor temp " endif 3
Dsg2402.png 【解答】 列表框List1的InterativeChange事件代码如下: dbfname=this.value thisform.grid1.recordsource="sele * from &dbfname into cursor temp" sele count(*) from &dbfname into array ctmp thisform.text1.value=ctmp(1)
Dsg2503.png
【解答】 “计算”命令按钮Command1的Click事件代码如下: n=thisform.text1.value s=0 for x=100 to n x1=x%10 4
x2=int(x/10)%10 x3=int(x/100) if x=x1^3+x2^3+x3^3 s=s+x endif endfor thisform.text2.value=s
Dsg2603.png
【解答】 “统计”命令按钮Command1的Click事件代码如下: n=thisform.text1.value s=0 for x=100 to n x1=x%10 x2=int(x/10)%10 x3=int(x/100) if x=x1^3+x2^3+x3^3 s=s+1 endif endfor thisform.text2.value=s 5
Dsg2303.png 【解答】 “计算”命令按钮Command1的Click事件代码如下: n=Thisform.Text1.Value s=0 for m=2 to n for i=2 to m if mod(m,i)=0 exit endif endfor if i>=m s=s+m endif endfor thisform.text2.value=s
Dsg2403.png
【解答】 6
“统计”命令按钮Command1的Click事件代码如下: n=Thisform.Text1.Value s=0 for m=2 to n for i=2 to m if mod(m,i)=0 exit endif endfor if i>=m s=s+1 endif endfor thisform.text2.value=s
Dsg2703.png
【解答】 “开始”命令按钮Command1的Click事件代码如下: if thisform.command1.caption="开始" thisform.command1.caption="停" thisform.timer1.enabled=.t. else thisform.command1.caption="开始" thisform.timer1.enabled=.f. endif
计时器Timer1的Timer事件代码如下: if thisform.optiongroup1.value>=8 thisform.optiongroup1.value=0 endif thisform.optiongroup1.value=thisform.optiongroup1.value+1
历年设计编程题: 7
DSG1303.png 【解答】 * 编写代码之前,先在“属性”对话框中查看到文本框Text1…Text5的初始值为0(N型) “计算”命令按钮Command1的Click事件代码如下: p=ThisForm.Text1.Value*ThisForm.Text2.Value+ThisForm.Text3.Value*ThisForm.Text4.Value IF p>800 ThisForm.Text5.Value=Round(p*0.9,0) ELSE ThisForm.Text5.Value=Round(p,0) ENDIF
DSG1403.png
【解答】 “计算”命令按钮Command1的Click事件代码如下: x=thisform.text1.value do case 8
case x>5 y=cos(x)-2 case x>=-5 y=(2+abs(x))/5 otherwise y=2*x-3 endcase thisform.text2.value=y
DSG1603.png
【解答】 “成绩等级”命令按钮Command1的Click事件代码如下: x=ThisForm.Text1.Value do case case x<0 or x>100 y="非法数据" case x>=85 y="优秀" case x>=60 y="合格" otherwise y="不合格" Endcase ThisForm.Text2.Value=y 9
DSG1503.png 【解答】 文本框控件Text1的Click事件代码如下: if ThisForm.Check1.Value=1 ThisForm.Text1.FontBold=.T. else ThisForm.Text1.FontBold=.F. endif if ThisForm.Check2.Value=1 ThisForm.Text1.FontItalic=.T. else ThisForm.Text1.FontItalic=.F. endif if ThisForm.Check3.Value=1 ThisForm.Text1.FontUnderline=.T. else ThisForm.Text1.FontUnderline=.F. endif
DSG2002.jpg
【解答】 “中文意思是”命令按钮Command1的Click事件代码如下: