属性或属性组合为本关系的外部关键字。关系之间的联系是通过外部关键字实现的。如果该外部关键字不是该关系的主关键字那么根据参照完整性规则,该外部关键字可以是空值,否则如果该外部关键字也是该关系的主关键字则根据参照完整性规则不能是空值。
4.简述Visual FoxPro的数据类型。
Visual FoxPro中的数据类型包括以下几种:1. 字符型,2. 数值型,3. 货币型,4. 日期型,5. 日期时间型,6. 逻辑型,7. 备注型,8. 通用型,9. 二进制字符型和二进制备注型。 5.字段变量与内存变量有何区别?
字段变量就是表中的字段名,它是表中最基本的数据单元。字段变量是一种多值变量, 一个表有多少条记录,那么该表的每一字段就有多少个值,当用某一字段名作变量时,它的 值就是表记录指针所指的那条记录对应字段的值。
内存变量独立于表,是一种临时工作单元,它是一种单值变量。可以用内存变量名直接访问内存变量。
6.什么是自由表?什么是数据库表?
属于某一数据库的表称为数据库表,不属于任何数据库而独立存在的表称为自 由表。
7.一个表有3个备注型字段,该表有多少个备注文件?
一个备注文件。
8. 修改表的结构有哪些方法?它们有何区别? 有两中方法第一种是先打开表,然后在命令窗口输入modify structure 命令打开表设计器来修改表的结构。第二中方法是先打开表然后在视图菜单中打开表设计器来对表的结构进行修改,这两中方法的实质都是用表设计器来修改表的结构,不同的只是打开表设计器的方法不同而已。 9.DISPLAY和LIST命令有何异同?
两个命令的作用基本相同,区别仅在于LIST是连续显示,当显示的内容超过一屏时,自动向上滚动,直到显示完成为止。DISPLAY是分屏显示,显示满屏时暂停,待用户按任一键后继续显示后面的内容。
10.排序与索引有何区别?索引有哪几种?如何建立索引文件?
排序是改变表中记录的实际物理顺序,而索引是为该表建立一个索引文件设置一个逻辑顺序,索
引可分为下列4种类型:主索引,候选索引,惟一索引,普通索引。建立索引文件有两种方法:1. 用命令建立索引,2. 在表设计器中建立索引。 11. 设置字段的显示标题、字段的注释信息、字段的默认值、字段的有效规则会给数据 库中表的操作带来什么好处?
(1) 数据库表可以使用长表名和长字段名; (2) 可以为数据库表中的字段指定标题和添加注释;
(3) 可以为数据库表的字段指定默认值和输入掩码;
(4) 数据库表的字段有默认的控件类; (5) 可以为数据库表规定字段级规则和记录级规则;
所有这些都是为了能够让用户更方便的输入数据,减少数据出错的几率,并且保证数据的完整性。
12. 字段级规则和记录级规则有何区别?如何设置?
字段有效性用于对当前字段输入数据的有效性、合法性进行检验。记录有效性验证指建立一规则对同一记录中不同字段之间的逻辑关系进行验证。这两种规则都可以在表设计器里面来进行设置。 13. 触发器有哪几种?各有什么作用?
触发器包括插入触发器、更新触发器和删除触发器。这些触发器用于保证当对数据库表进行插入(包括追加)、更新和删除时,不会违反那些已经设置好的有效性规则,只有当规则成立时才能进行相应操作。主要是用于保证记录和数据的完整性。 14.简述SQL语言的功能及特点。
SQL是Structured Query Language(结构化查询语言)的缩写。查询是SQL语言的重要 组成部分,但不是全部,SQL还包含数据定义、数据操作和数据控制功能等部分。SQL语言具有如下特点:
(1) SQL是一种一体化的语言。
(2) SQL语言是一种高度非过程化的语言。 (3) SQL语言非常简洁。
SQL语言可以直接以命令方式交互使用,也可以嵌入到程序设计语言中以程序方式
(4) 使用。
.15.名词解释:类、子类、对象、事件、方法、属性。
类(Class)是具有相同属性特征和行为规则的
6
多个对象的一种统一描述。
子类用来模拟现实世界中的类的层次问题,子类将继承其父类的全部特征和方法程序,当然,在子类中可以对这些继承的特征和方法程序进行修改,以对该子类进行更准确的模拟。
对象是对现实世界中实体的一种模拟工具,是类的实例。
事件是由外部实体作用在对象上的一个动作。在面向对象方法中,事件是驱动蕴涵在对象中的程序的引擎,一个事件有一个事件名,且与一个事件响应程序(方法程序)相关联,当作用在一个对象上的事件发生时,与这个事件相关联的程序就获得一次运行。
属性(Property)是模拟所描述实体的静态特征。
方法(Method)是模拟实体对一些事件(Event)的反映
.16.菜单由哪几部分组成?
常规的菜单系统一般是一个下拉式菜单,由一个条形菜单和一组弹出式菜单组成。 17.简述菜单文件与菜单程序的区别与联系。
菜单文件是菜单设计器中用户定义的保存文件。而菜单程序则是最后用户看到的菜单所 对应的程序代码文件,可以在菜单设计器中用生成命令把菜单文件转化为对应的菜单程序。两者都是对菜单的描述,只不过描述的层次不同而已。 18.报表和表单的区别在哪里?
\表单\能让用户按另一种形式在屏幕上查阅数据表中的数据记录,实用性非常的很强,不但能用它来简化\浏览窗口\,还能更直观的显示和浏览数据、并且可按用户所喜欢的风格来显示记录,以及通过一组控制按钮更方便、更加容易地控制和使用数据记录。报表除了能像查询、表单那样够浏览数据记录外,还能控制打印输出数据记录的格式,并且允许将各种格式的文本与图形对象组合在一起输出,从而建立起清晰的、图文并茂的报表。 19. 报表包括哪几个基本组成部分?
报表主要由两部分组成:数据源和报表布局。数据源是报表的数据来源,报表布局则定义报表打印格式。
20.报表控件是指的什么?
报表控件是显示在报表上的,用来配合报表来向用户输出更多更灵活的内容如图形、图象、表达式等。
21.什么是标签?标签与报表的区别是什么?
标签是一种特殊的报表,它的创建、修改方法与报表基本相同。两者之间主要的不同是标签设计器基于所选标签的大小自动定义页面和列。
程序设计练习
1 . 编一个程序求S=1+(1+2)+(1+2+3)+?+(1+2+3+4+?10)之和。 set talk off clea s=0
for i=1 to 10 for j=1 to i s=s+j endfor endfor ?s
set talk on
2 . 某院校按学生选修的学分收费。学分在12学分以下的收费4000元,若超过12学分,则超过部分每学分加收200元。编一个程序计算收费。输入学号I及学分U,输出学号及应缴学费T。 T=4000 U≤12 T=4000+200(U-12) U>12 set talk off clea t=0
input \请输入学号:\ input \请输入学分:\ if u<=12 t=4000 else
t=4000+200*(u-12) endif ?i,t set talk on
3. 设一个班有学生10名,循环输入每个学生的分数(百分制),统计并显示各分数段的人数。其中分数段的划分如下:90分以上,80-89分,70-79分,60-69分,60分以下。 clear
store 0 to a,b,c,d,e for i=1 to 10
input \请输入学生的成绩:\ do case
7
case cj>=90 a=a+1 case cj>=80 b=b+1 case cj>=70 c=c+1 case cj>=60 d=d+1 other e=e+1 endcase endfor
?\成绩在90以上的人数\人\ ?\成绩在80~89的人数\人 \?\成绩在70~79的人数\人 \?\成绩在60~69的人数\人 \?\成绩在60以下的人数\人\
4. 编一个程序,将华氏温度F=77°F,变换成摄氏温度℃,并将结果显示出来。计算公式为: C=5×(F-32)÷9。 SET TALK OFF F=77 C=5*(F-32)/9
?”摄氏:”+STR(C,4)+”度”+”,”+”华氏:”+STR(F,4)+”度” CANCEL
5 . 设计一个程序,输出一个由*组成的三角形。 set talk off clea for i=1 to 6
? space(10-i)+replicate(\Endfor set talk on
6 . 编写一个程序,从键盘输入10个数,找出其中的最大最小值。
7 . 编写一个程序,求1到10之间的奇数之和及偶数之积。要求:奇数之和存放在变量S中,偶数之积存放在变量N中。 set talk off clea s=0 n=1
for i=1 to 10 if int(i/2)=i/2 n=n*i else s=s+i endif endfor ?s ?n
set talk on
8.编写程序求100到999之间的水仙花数。(水仙花数:对于一个三位数abc,a^3+b^3+c^3=abc) 9. 编写一个程序,将Da1.dbf表中凡是工资小于800元的增加100元。 SET TALK OFF USE Da1
DO WHILE NOT EOF( ) IF工资>=800 SKIP LOOP ENDIF
REPLACE 工资 WITH 工资+100 SKIP ENDDO CANCEL
10. 编写一个程序,在Da1.dbf表中,查找职称是“讲师”的记录,计算满足条件的记录个数和工资的总和。 SET TALK OFF USE Da1 S=0 N=0
SCAN FOR 职称=”讲师” DISPLAY S=S+工资 N=N+1 ENDSCAN USE ?”S=”,S ?”N=”,N
11.输入一个三位整数,将其反向输出。如输入326,输出623。 set talk off
input \请输入一个三位数\
8
b=100*mod(a,10)+10*mod(int(a/10),10)+mod(int(a/100),10) ?b return
12..输入学生成绩,若成绩大于80分,则输出“优良”,成绩小于60分,则输出“不及格”,否则输出“中等”。 set talk off
input \请输入学生成绩\if a>80 ?\优良\else if a<60 ?\不及格\ else ?\中等\ endif endif return
13.在学生表中,分别统计汉族学生和少数民族学生的人数。 set talk off use 学生表
count for 少数民族=.T. to a count for 少数民族=.F. to b ?\少数民族学生人数为\?\汉族学生人数为\return
14.假定有包含若干个记录的表文件c1.dbf,其结构是:f1(N,3,0),f2(N,3,0)。编写程序,其功能是把各记录中所有大于40的字段值累加起来,最后把累加的结果存入第一个记录的f2字段中。 set talk off use c1 a=0
do while .not. eof() if f1>40 a=a+f1 endif if f2>40 a=a+f2 endif continue enddo
go top f2=a use return
15.一个自然数是素数,且它的数字位置经过任意对换后仍为素数,则称为绝对素数,例如13就是一个绝对素数。试求所有两位绝对素数。 set talk off for m=11 to 99
n=mod(m,10)*10+mod(int(m/10),10) if check(m) and check(n) ?m endif endfor
function check parameters a flag=.t. k=int(sqrt(a)) j=2
do while j<=k and flag if mod(a,j)=0 flag=.F. endif j=j+1 enddo return flag
16.用过程方式求S=A!+B!+C!(其中A,B,C从键盘输入)。 set talk off
input \请输入第一个数到A\input \请输入第一个数到B\input \请输入第一个数到C\?\function ss parameter n m=1
for i=1 to n m=m*i endfor return m
return
9