一 基本操作题1. 在考生文件夹下完成如下操作:
1.新建一个名为“学生”的数据库。
2.将“学生”、“选课”、“课程”3个自由表添加到新建的数据库“学生”中。
3.通过“学号”字段为“学生”表和“选课”表建立永久联系。
4.为上面建立的联系设置参照完整性约束:更新和删除规则为“级联”,插入规则为“限制”。
在Visual FoxPro主窗口中按下组合键Ctrl+N,系统弹出“新建”对话框,在文件类型中选择“数据库”,单击“新建文件”按钮,在弹出的对话框的“数据库名”处输入“学生”,单击“保存”按钮。
2.打开考生文件夹下的“学生”数据库,打开数据库菜单选择“添加表(A)”,在弹出的“打开”对话框中,选定考生文件夹下的“学生”表,再单击“确定”按钮即可。这样表“学生”就添加到了“学生”数据库中,用同样的方法,将“选课”表、“课程”表也添加到“学生”数据库中。
3.在数据库设计器中选中表“学生”,在主菜单中选择“修改(Y)”,弹出表设计器,选择表设计器“索引”标签,在索引名列中填入“学号”,在索引类型列中选择“主索引”,在索引表达式列中填入“学号”,单击“确定”按钮以保存表结构。用类似的方法为“选课”表建立必要的索引。在数据库设计器中,选中“学生”表中的索引“学号”将其拖动到表“选课”的“学号”的索引上并松开,这样两个表之间就建立起了永久联系。
4.在第3题建立好永久联系之后,在“学生”表和“选课”表的“学号”索引之间有一条线,单击这条表示两个表之间联系的线(线会加粗),此时在主菜单中选择“数据库”中的“编辑参照完整性(I)”,系统弹出“参照完整性生成器”对话框,在“更新规则”标签中,选择“级联”规则,在“删除”规则中选择“级联”,在“插入规则”中选择“限制”,单击“确定”按钮保存所编辑的参照完整性。
二 简单应用题1. 在考生文件夹下完成如下简单应用:
1.用SQL语句完成下列操作:将选课在5门课程以上(包括5门)的学生的学号、姓名、平均分和选课门数按平均分降序排序,并将结果存放于数据库表stu_temp中(字段名为学号、姓名、平均分和选课门数)。
2.建立一个名为menu_lin的下拉式菜单,菜单中有两个菜单项“查询”和“退出”。“查询”项下还有一个子菜单,子菜单有“按姓名”和“按学号”两个选项。在“退出”菜单项下创建过程,该过程负责使程序返回到系统菜单。
1.在Visual FoxPro的命令窗口中输入下列命令:
SELECT 学生.学号,学生.姓名,AVG(选课.成绩) as 平均分,;
COUNT(选课.课程号) AS 选课门数;
FROM 学生! 学生 INNER JOIN 学生! 选课;
INNER JOIN 学生! 课程;
ON课程.课程号=选课.课程号;
ON学生.学号=选课.学号;
GROUP BY 学生.姓名;
HAVING COUNT(选课.课程号)>=5;
ORDER BY 3 DESC:
INTO TABLE stu_temp.dbf
三 综合应用题1. 设计名为mystu的表单(控件名为form1,文件名为mystu)。表单的标题为“学生学习情况统计”。表单中有一个选项组控件(命名为myOption)和两个命令按钮“计算”(名称为Command1)和“退出”(名称为Command2)。其中,选项组控件有两个按钮“升序”(名称为Option1)和“降序”(名称为Option2)
运行表单时,首先在选项组控件中选择“升序”或“降序”,单击“计算”命令按钮后,按照成绩“升序”或“降序”(根据选项组控件)将选修了“C语言”的学生学号和成绩分别存入stu_sort1.dbf和stu_sort2.dbf文件中。
单击“退出”按钮关闭表单。
第一步:在Visual FoxPro主窗口中按下组合键Ctrl+N,系统弹出“新建”对话框,在文件类型中选择“表单”,单击“新建文件”按钮,系统将打开表单设计器;或直接在命令窗口中输入“crea form mystu”。
第二步:单击工具栏按钮“表单控件工具栏”,在弹出的“表单控件”对话框中,选中“选项按钮组”控件,在表单设计器中拖动鼠标,这样在表单上得到一个“选项按钮组”控件optiongroup1,用类似的方法为表单加入一个“命令按钮”控件command2,两个“文本框”控件text1和text2。
相关控件的属性值如下所示:
对象 属性 属性值
Form1 Caption 学生学习情况统计
Optiongroup1 Name myOption
MyOption.option1 Caption 升序
MyOption.option2 Caption 降序
Command1 Caption 计算
Command2 Caption 退出
***命令按钮command1(计算)的Click事件代码如下****
DO CASE
CASE THISFORM.myOption.VALUE=1
SELECT 学生.学号,选课.成绩;
FROM 学生! 课程 INNER JOIN 学生! 选课;
INNER JOIN 学生! 学生;
ON 学生.学号=选课.学号;
ON课程.课程号=选课.课程号;
WHERE AT("C语言",课程.课程名称)>0;
ORDER BY 选课.成绩;
INTO TABLE stu_sort1
CASE THISFORM.myOption.VALUE=2
SELECT 学生.学号,选课.成绩;
FROM 学生! 课程 INNER JOIN 学生! 选课;
INNER JOIN 学生! 学生;
ON学生.学号=选课.学号;
ON 课程.课程号=选课.课程号;
WHERE AT("C语言",课程.课程名称)>0;
ORDER BY 选课.成绩 DESC;
INTO TABLE stu_sort2
ENDCASE
***命令按钮command2(退出)的Click事件代码如下***
THISFORM.RELEASE