SCORE_MANAGER数据库中含有三个数据库表STUDENT、SCORE1和COURSE。
为了对SCORE_MANAGER数据库数据进行查询,设计一个表单Myform3(控件名为form1,表单文件名为Myform3)。表单标题为\成绩查询\;表单有\查询\名称为Command1)和\退出\名称为Command2)两个命令按钮。表单运行时,单击\查询\按钮,查询每门课程的最高分,查询结果中含\课程名\和\最高分\字段,结果按课程名升序保存在表NEW_TABLE3。 单击\退出\按钮,关闭表单。
注意:完成表单设计后要运行表单的所有功能
答案:步骤1:打开考生文件夹下的\数据库。
步骤2:“文件”—“新建”—“表单”,新建一个名为\的表单文件。 步骤3:为表单添加两个命令按钮控件,按照题目的要求设置各控件的相关属性。 步骤4:双击\查询\命令按钮,编写其Click事件代码如下: SELECT Course.课程名, MAX(score1.成绩) AS 最高分; FROM course,score1,student ; WHERE Student.学号 = Score1.学号 ; AND Course.课程号 = Score1.课程号; ORDER BY Course.课程名; GROUP BY Course.课程名; INTO TABLE NEW_TABLE3
步骤5:双击\退出\命令按钮,编写其Click事件代码:ThisForm.Release。 步骤6:保存并运行表单,查看表单的运行结果。 第四十三套————基本操作
在考生文件夹下有一表单文件myform.scx,其中包含Text1和Text2两个文本框,以及Ok和Cancel两个命令按钮。打开该表单文件,然后在表单设计器环境下通过属性窗口设置相关属性完成如下操作: 2. 设置Text1,使其在表单打开时显示123,数据类型为字符型。
3. 设置Text2,使其在表单打开时显示表单的宽度值,数据类型为数值型。注意:表单打开时的初始宽度可以是任意值。
4. 将Ok按钮设置为\确认\按钮,即通过按Enter键就可以选择该按钮;将Cancel按钮的第1个字母C设置成\访问键\,即通过按字母键C就可以选择该按钮。
答案:(1) 选中文本框text1和Text2,在属性框中找到宽度属性(Width),单右键选\重置为默认值\。 (2)选中文本框text1,在value属性框中输入:=\
(3)选中文本框text2,在value属性框中输入:=thisform.width
(4)选中ok按钮,将它的default属性设置为:.t.,将Cancel按钮的Caption属性设置为:\\ 1. 利用查询设计器创建查询,根据xuesheng和chengji表统计出各班(学号的前8个数字串为班号)男、女生在英语课程上各自的最高分、最低分和平均分。查询结果包含班号、性别、最高分、最低分和平均分5个字段;各记录按班号升序排序,同一班的女生在前、男生在后;查询去向为表table1。最后将查询保存在query1.qpr文件中,并运行该查询。 在选定字段中用函数和表达式生成:left(xuesheng.学号,8) as 班号,添加到选定字段中,然后添加”性别”字段,再用函数和表达式生成:max(chengji.英语) as 最高分,min(chengji.英语) as 最低分,avg(chengji.英语) as 平均分分别添加到选定字段中;在”分组依据”中分别选择left(xuesheng.学号,8) as 班号和性别 综合应用: 在考生文件夹下创建一个下拉式菜单mymenu.mnx,并生成菜单程序mymenu.mpr。运行该菜单程序时会在当前vfp系统菜单的末尾追加一个\考试\子菜单,如下图所示。 菜单命令\计算\和\返回\的功能都通过执行过程完成。菜单命令\计算\的功能是从xuesheng表和chengji表中找出所有满足如下条件的学生:其在每门课程上的成绩都大于等于所有同学在该门课程上的平均分。并把这些学生的学号和姓名保存在表table2中(表中只包含学号和姓名两个字段)。表table2中各记录应该按学号降序排序。 菜单命令\返回\的功能是恢复标准的系统菜单。 菜单程序生成后,运行菜单程序并依次执行\计算\和\返回\菜单命令。 答案:【操作步骤】 步骤1:通过\新建\对话框新建一个菜单文件,并打开菜单设计器。打开\显示\菜单下的\常规选项\对话框,在\位置\处选择追加,则新建立的子菜单会在当前vfp系统菜单后显示。 步骤2:在菜单名称中填入\考试\,结果为子菜单,单击创建按钮,在子菜单的菜单名称中输入\计算\,结果为过程,在过程中输入下列代码: select xuesheng.学号,xuesheng.姓名 from xuesheng; inner join chengji on xuesheng.学号=chengji.学号; where 数学>=(select avg(数学) from chengji); and 英语>=(select avg(英语) from chengji); and 信息技术>=(select avg(信息技术) from chengji); order by xuesheng.学号 desc; into table table2 步骤3:在菜单名称中填入\返回\,结果为过程,在过程中输入:SET SYSMENU TO DEFAULT。 步骤4:最后保存菜单mymenu.mnx,并生成可执行菜单程序mymenu.mpr,“菜单”—“生成”,运行菜单程序并依次执行\计算\和\返回\菜单命令。 第四十四套——基本操作 1. 利用SQL SELECT命令将表stock_sl.dbf复制到stock_bk.dbf; 2.利用SQL INSERT命令插入记录(\到stock_bk.dbf表。 3.利用SQL UPDATE命令将stock_bk.dbf表中\股票代码\为\的股票\现价\改为8.88。 4.利用SQL DELETE命令删除stock_bk.dbf表中\股票代码\为\的股票。 答案:本题应分为两个步骤完成: (1)在命令窗口中分别输入相应命令,并按回车以执行。 ①SELECT * FROM stock_sl INTO TABLE stock_bk ② INSERT INTO stock_bk VALUES(\③ UPDATE stock_bk SET 现价=8.88 WHERE 股票代码=\④ DELETE FROM stock_bk WHERE 股票代码=\ (2)将命令按题目要求把以上4条语句复制到sql.txt文件中(注意加.txt) 简单应用: 2. modi.prg中的SQL语句用于计算\银行\的股票(股票简称中有\银行\两字)的总盈余,现在该语句中有三处错误分别出现在第1行、第4行和第6行,请改正之。 (注意:不要改变语句的结构、分行,直接在相应处修改。) (2)【操作步骤】 步骤1:通过常用工具栏中的\打开\对话框打开考生文件夹下的\文件。 步骤2:修改程序中的错误如下。 错误1:SELECT COUNT((现价-买入价)*持有数量) ; 修改为:SELECT SUM((现价-买入价)*持有数量) ; 错误2:= ; 修改为:IN ; 错误3:WHERE \银行\股票简称) 修改为:WHERE股票简称LIKE \银行%\ 步骤3:保存并运行修改后的程序文件,查看程序运行结果。 综合应用 在考生文件夹下,建立满足如下要求的应用并运行: (1) 建立一个表单stock_form,其中包含两个表格控件,第一个表格控件名称是grdStock_name, 用于显示表stock_name中的记录,第二 个表格控件名称是grdStock_sl,用于显示与表stock_name中当前记录对应的stock_sl表中的记录。 答案; 首先新建表单stock_form,在表单空白处右击——“数据环境”,把表stock_name和表stock_sl依次添加到数据环境中,然后从stock_name表的“股票代码”字段拖动到stock_sl表的“股票代码”字段上(即建立两个表的临时联系),在弹出的对话框中单击“确定”按钮,最后在数据环境中拖着两个表的标题栏拖动到表单当中,再添加“关闭”命令按钮并写代码:thisform.release,最后保存运行表单。 第四十五套————基本操作 在考生文件夹下,完成如下操作: 1. 打开考生文件夹下的表单one(如图所示),在\打开\命令按钮的Click事件中增加一条语句,使表单运行时单击该命令按钮的结果是使\关闭\按钮变为可用。 2. 打开考生文件夹下的表单two(如图1所示),在选项组中增加一个单选钮(如图2所示)。注意:不能改变原先的名称以及属性值。 3. 使用SQL语句为考生文件夹下的\学院表\增加一个字段\教师人数\整数型),同时为该字段设置有效性规则:教师人数>=0。请将该SQL语句存储在three.prg文件中,否则不得分。 4. 使用SQL语句将考生文件夹下的自由表teacher中教师姓名为Jack的工资修改为8000元。请将该SQL语句存储在four.prg文件中,否则不得分。 答案:(1)打开表单\,在\打开\命令按钮的Click事件中增加如下语句。 ThisForm.Command2.Enabled=.T. (2)打开表单\,选中选项按钮组,将它的buttoncount属性改为:3,然后在选项按钮组上右击—“编辑”,选中第三个选项按钮改它的caption属性 (3)在命令窗口输入语句并敲回车执行: ALTER TABLE 学院表 ADD 教师人数 I CHECK 教师人数>=0 然后通过\新建\对话框新建一个名为\的程序文件,将上述语句复制并粘贴到新建的程序文件中。 (4)在命令窗口输入语句并敲回车执行: UPDATE teacher SET 工资=8000 WHERE 姓名=\ 然后通过\新建\对话框新建一个名为\的程序文件,将上述语句复制并粘贴到新建的程序文件中。 简单应用: 1. 考生文件夹下的程序文件five.prg的功能是:根据\教师表\计算每个系的教师人数并将相应数据填入\学院表\,程序中有三处错误,请修改并执行程序。只能修改标有错误的语句行,不能修改其他语句。 答案:(1)【操作步骤】 步骤1:打开考生文件夹下的five.prg文件。 步骤2:修改其中的命令语句如下。 错误1:DO .NOT. EOF() 修改为:DO WHILE .NOT. EOF() 错误2:SELECT COUNT(*) FROM 教师表 WHERE 教师表.系号=xihao INTO A 修改为:SELECT COUNT(*) FROM 教师表 WHERE 教师表.系号=xihao INTO ARRAY A 错误3:NEXT 修改为:SKIP 步骤3:保存修改后的程序并运行。 2. 在\课程管理\数据库中使用视图设计器建立视图teacher_view,该视图根据\教师表\和\课程表\建立,视图包括姓名、工资、课程名和学时4个字段,视图中的记录按\工资\升序排列。 (2)【操作步骤】 步骤1:打开考生文件夹下的\课程管理\数据库,在数据库设计器中右键单击数据库空白处,选择\新建本地视图\命令,打开视图设计器。 步骤2:新建一个视图文件,将\教师表\和\课程表\添加到视图设计器中;在视图设计器的字段选项卡中,将字段\姓名\、\工资\、\课程名\和\学时\个字段添加到\选定字段\列表框中;在排序依据选项卡中,选择按\工资\升序排序记录。 步骤3:将视图保存为\并运行。 综合应用 在考生文件夹下完成下列操作: 1. 建立一个名为myform的表单,表单中包括一个列表框(List1)和两个命令按钮(Command1和Command2),Command1和Command2的标题分别为\生成表\和\退出\。 2. 设置列表框的数据源(RowSource)和数据源类型(RowSourceType)两个属性,使用SQL语句根据\学院表\的\系名\字段的内容在列表框中显示\系名\(注意不要使用命令指定这两个属性)。 3. 为\生成表\命令按钮的单击事件编写程序。程序的功能是根据表单运行时列表框中选定的\系名\,将\教师表\表中相应系的所有记录存入以该系名命名的自由表中,自由表中包含\职工号\,\姓名\和\工资\三个字段,并按照\职工号\升序排列。 4. 运行表单,分别生成存有\计算机\、\通信\、\信息管理\系信息的3个表。 答案:首先建立一个名为myform的表单,按题目要求添加一个列表框和两个命令按钮。然后按照题目的要求设置表单中各控件的相关属性,将列表框控件的rowsourcetype属性更改为3-SQL语句,rowsource属性框中输入:select 系名 from 学院表,敲回车确定;为\生成表\命令按钮的Click事件编写如下代码: x=thisform.list1.value SELECT 教师表.职工号, 教师表.姓名, 教师表.工资; FROM 课程管理!教师表 INNER JOIN 课程管理!学院表 ; ON 教师表.系号 = 学院表.系号; WHERE 学院表.系名 = thisform.list1.value; ORDER BY 教师表.职工号; into table &x 最后保存并按照题目要求运行表单 第四十六套——-基本操作 简单应用: 在考生文件夹下的SELLDB数据库中包含“部门表”、“销售表”、“部门成本表”和“商品代码表”等。 1. 在考生文件夹下已有程序文件three.prg,其功能如下: 查询2006年各部门商品的年销售利润情况。查询内容为:部门号、部门名、 商品号、商品名和年销售利润,其中年销售利润等于销售表中一季度利润、二季度利润、三季度利润和四季度利润的合计。查询结果按部门号升序,然后按年销售利润降序排序,并将查询结果输出到表TABA中。表TABA的字段名分别为:\部门号\、\部门名\、\商品号\、\商品名\和\年销售利润\。 答案:(1)【操作步骤】 步骤1:打开考生文件夹下的\程序文件。 步骤2:按照题目的要求修改程序文件中的错误如下。 错误1:SELECT 部门表.部门号, 部门名, 销售表.商品号, 商品名,一季度利润 + 二季度利润 + 三季度利润 + 四季度利润 to 年销售利润; 修改为:SELECT 部门表.部门号, 部门名, 销售表.商品号, 商品名,一季度利润 + 二季度利润 + 三季度利润 + 四季度利润 as 年销售利润; 错误2:ORDER BY 1, 5; 修改为:ORDER BY 1, 5 DESC; 错误3:TO TABLE TABA 修改为:INTO TABLE TABA 请打开程序文件three.prg,修改其中的错误,然后运行该程序。 2. 在考生文件夹下已有程序文件four.prg,其功能如下: 计算2005年按部门不分商品的\年销售利润\,以及\年销售利润\减去部门成本表中对应部门的\工资支出\和\办公支出\后的纯利润,并将结果存储到表account中。表account的字段名分别为:\部门号\、\部门名\、\年销售利润\、\工资支出\、\办公支出\和\纯利润\。 请打开程序文件four.prg,修改其中的错误,然后运行该程序。 (2)【操作步骤】 步骤1:通过\新建\对话框新建一个程序文件。 步骤2:按照题目的要求在其中编写如下命令语句。 **********four.prg中的程序代码********** SELECT 部门表.部门号, 部门表.部门名,; sum(销售表.一季度利润) as 一季度利润,; sum(销售表.二季度利润) as 二季度利润,; sum(销售表.三季度利润) as 三季度利润,; sum(销售表.四季度利润) as 四季度利润; FROM 部门表,销售表 ; WHERE 部门表.部门号 = 销售表.部门号; GROUP BY 部门表.部门号; ORDER BY 部门表.部门号; INTO TABLE account.dbf 步骤3:将程序保存为\并运行 综合应用: 创建一个标题名为\部门销售查询\、表单名为Form1,文件名为XS的表单,如下图所示。 表单要求如下: 在该表单中设计两个标签、两个文本框、一个表格和两个命令按钮。 1. 两个标签对象标题文本分别为\部门号\和\年度\;两个文本框分别用于输入部门号(Text1)和年度(Text2);表格控件用于显示查询结果(Grid1)。 2. 两个命令按钮的功能如下: ⑴ \查询\按钮(Command1):在该按钮的Click事件中编写程序,根据输入的部门号和年度,在表格控件中显示:该部门销售的\商品号\、\商品名\、\一季度利润\、\二季度利润\、\三季度利润\和\四季度利润\,将查询结果存储到以\部门号\为名称的表中(例如,部门号为02,则相应的表名为xs02.dbf)。注意:表的字段名分别为:\商品号\、\商品名\、\一季度利润\、\二季度利润\、\三季度利润\和\四季度利润\。 ⑵ \退出\按钮(Command2):关闭并释放表单。 注意:表格控件的RecordSourceType属性设置为\-SQL说明\;表单设计完成后,运行该表单,输入部门号:02,年度:2005,单击\查询\按钮进行查询。 答案:首先新建一个表单,根据题目要求更改表单及各控件的属性,这儿需要特别注意一点的是:先将表格控件的columncount属性改为6(即表格中有6列),再在表格上右击—“编辑”,单击每一列的header1,修改它们的caption属性,依次改为“商品号”,“商品名”,“一季度利 润”直到“四季度利润”,若不做这一步,考试将不会得满分。然后将表格控件的recordsourcetype属性改为4-SQL说明。“查询”按钮的click事件代码如下: x=\ SELECT 商品代码表.*, 销售表.一季度利润, 销售表.二季度利润,; 销售表.三季度利润, 销售表.四季度利润; FROM selldb!商品代码表 INNER JOIN selldb!销售表 ; ON 商品代码表.商品号 = 销售表.商品号; WHERE 销售表.部门号 = thisform.text1.value; AND 销售表.年度 = thisform.text2.value; INTO TABLE &x thisform.grid1.recordsource=\第四十七套————基本操作 简单应用: 1) 视图按顺序包含列Currency_sl.姓名、Rate_exchange.外币名称、Currency_sl.持有数量和表达式Rate_exchange.基准价* Currency_sl.持有数量; 2) 按\基准价* Currency_sl.持有数量\降序排序; 3) 将视图保存为view_rate。 答案:1)【操作步骤】 步骤1:打开考生文件夹下的\外汇管理\数据库,在打开的数据库设计器的空白处单击鼠标右键,选择\新建本地视图\命令。将\和\两个添加到视图设计器中。 步骤2:在\字段\选项卡中将字段Currency_sl.姓名、Rate_exchange.外币名称、Currency_sl.持有数量,以及表达式\基准价*Currency_sl.持有数量\添加到\选定字段\列表框中。 步骤3:在\排序依据\选项卡中将表达式\基准价*Currency_sl.持有数量\添加到\排序条件\列表框中。 步骤4:保存视图为\并运行视图。 2. 使用SQL SELECT语句完成一个汇总查询,结果保存在results.dbf表中,该表含有\姓名\和\人民币价值\两个字段(其中\人民币价值\为每人持有外币的\基准价* Currency_sl.持有数量\的合计),结果按\人民币价值\降序排序。 (2)【操作步骤】 在命令窗口输入下列命令语句并运行。 ********************************** SELECT Currency_sl.姓名,; SUM(Currency_sl.持有数量*Rate_exchange.基准价) as 人民币价值; FROM currency_sl ,rate_exchange ; WHERE Currency_sl.外币代码 = Rate_exchange.外币代码; GROUP BY Currency_sl.姓名; ORDER BY 2 DESC; INTO TABLE results 综合应用 设计一个表单,所有控件的属性必须在表单设计器的属性窗口中设置,表单文件名为\外汇浏览\,表单界面如下所示: 其中: 1. \输入姓名\为标签控件Label1; 2. 表单标题为\外汇查询\; 3. 文本框的名称为Text1,用于输入要查询的姓名,如 张三丰; 4. 表格控件的名称为Grid1,用于显示所查询人持有的外币名称和持有数量,RecordSourceType的属性为4(SQL说明); 5. \查询\命令按钮的名称为Command1,单击该按钮时在表格控件Grid1中按持有数量升序显示所查询人持有的外币名称和数量(如上图所示),并将结果存储在以姓名命名的DBF表文件中,如张三丰.DBF; 步骤3:编写\查询\按扭的Click代码事件代码如下。 x=thisform.text1.value thisform.grid1.recordsource=; \外币名称, Currency_sl.持有数量; FROM 外汇管理!currency_sl INNER JOIN 外汇管理!rate_exchange ;