365网友提供计算机信息管理试题_工学-查字典自考网
 
请输入您要查询的关键词
  查字典自考网 >> 工学 >> 365网友提供计算机信息管理试题

365网友提供计算机信息管理试题

发布时间: 2016-06-29 来源:查字典自考网

03年管信的考试题目上机练习

(一)创建数据库

1.按下列要求建立数据库ST1.DBF .

XH(C,6)?XM(C,8)?XB(C,2)?CS(D,8)?SJK(N,3)?GLXX(N,3)

200101?安潜光?男?82-08-25?70?90

200114?毛?皓?男?83-06-08?65?70

200118?冯岳阳?女?80-08-15?82?95

200205?戴晓霞?女?81-07-18?60?65

200218?闫安雪?男?83-05-08?80?88

(XH、XM、XB、CS、SJK、GLXX分别表示:学号、姓名、性别、出生日期、数据库、管理信息)

2.按下列要求编写命令文件P1.PRG .

①复制数据库ST1的结构,生成数据库ST2.

②复制数据库ST1的结构,生成数据库ST3,其中只含字段XM、GLXX及SJK.

③将数据库ST1复制成ST4.

④将数据库ST1中,满足80≤GLXX≤90的XM及GLXX复制成数据库ST5.

⑤将数据库ST1中1983年出生的男学生的记录复制成数据库ST6.

⑥将数据库ST1中学号最后二位为‘18’的记录复制成数据库ST7.

⑦将数据库ST1中姓名含有‘安’字的记录复制成数据库ST8.

「解答」

在COMMAND窗口中,输入命令:?MODIFY?COMMMAND?P1

然后,在编辑窗口中输入下列命令组。

USE ST1

COPY STRUCTURE TO ST2

COPY STRUCTURE TO ST3 FIELDS XM, GLXX, SJK

COPY TO ST4

COPY TO ST5 FIELDS XM, GLXX FOR GLXX=80 .AND. GLXX<=90

COPY TO ST6 FOR SUBSTR(DTOC(CS),1,2)=‘83’。AND. XB=‘男’

COPY TO ST7 FOR SUBSTR(XH,5,2)=‘18’

COPY TO ST8 FOR‘安’$ XM

RETURN

最后,按Ctrl+W保存退出。

如果在COMMAND窗口中,先输入命令:

SET DE**UAL TO A:

设置当前驱动器为A .即可在A驱动器中建立文件P1.PRG.

如果数据库文件没有打开,要使用命令

COPY?FILE?<源文件名?TO?<目标文件名来复制文件。

(二)窗口设计

1.按下列要求编制窗口设计模块程序文件P2.PRG .

①在位置(10,15)到(20,65)建立一个名为WINA,标题为‘显示记录’的窗口。

②在该窗口中,按下图所示的格式,逐条显示数据库ST1.DBF的记录信息。

(10,15)

显示记录?姓名:XXX?学?号:XXXXXX?性别:X?出生日期:XX-XX-XX

(20,65)

「解答」

用命令MODIFY COMMAND P2?来建立程序文件P2.PRG

先定义窗口的名字、大小、标题等,使用时要激活窗口,结束要释放窗口。

使用数据库先要打开,最后要关闭。

在窗口中按要求格式显示一条记录后,要用WAIT命令暂停一下,否则,后一条记录会覆盖

前一条记录。

参考程序如下:

SET TALK OFF

CLEAR

DEFINE WINDOW WINA FROM 10,15 TO 20,65 FONT 'T黑体',11 TITLE‘显示记录’

ACTIVATE WINDOW WINA

USE ST1

DO WHILE .NOT. EOF()

@2,2 SAY‘姓名:’+XM

@2,25 SAY‘学?号:’+XH

@4,2 SAY‘性别:’+XB

@4,25 SAY‘出生日期:’+DTOC(CS)

WAIT

SKIP

ENDDO

USE

RELEASE WINDOW WINA

SET TALK ON

RETURN

2.按下列要求编制程序文件P3.PRG .

①在位置(10,15)到(20,65)建立一个名为WINB,标题为‘姓名查询’的窗口。

②对数据库ST1.DBF的记录进行查看:先输入学号查找,若无此学号,再输入姓名查找记录。

找到了,则在窗口中按下图所示的格式显示该记录信息,否则显示‘查无此学生’。

(10,15)

姓名查询?姓?名:XXX?出生日期:XX-XX-XX?数据库:XX?管理信息:XX

(20,65)

「解答」

用命令MODIFY COMMAND P3?来建立程序文件P3.PRG.

查找是从大量记录中找出满足条件的记录,把记录指针定位在要查找的记录上。

查找有两种方式:顺序查询和索引查询。

题中按学号查找是采用顺序查询,命令为?LOCATE.?

按姓名查找是采用索引查询,它必须在姓名XM为关键字段进行索引的基础上进行,程序中

使用了命令:

FIND?&STXM?

或?SEEK?STXM .?

可以通过FOUND()或EOF()函数来判断是否查到记录。

查到时,记录指针总是指向第一个满足条件的记录,此时FOUND()函数为真, EOF()函数为假。

未找到,记录指针指向库文件尾部, FOUND()函数为假, EOF()函数为真。

参考程序如下:

SET TALK OFF

CLEAR

DEFINE WINDOW WINB FROM 10,15 TO 20,65 FONT 'T黑体',11 TITLE‘姓名查询’

ACTIVATE WINDOW WINB

USE ST1

ACCEPT‘请输入学号’TO STXH

LOCATE FOR XH=STXH

IF .NOT. EOF()

CLEAR

@2,2 SAY‘姓?名:’+XM

@2,25 SAY‘出生日期:’+DTOC(CS)

@4,2 SAY‘数据库:’+STR(SJK,3)

@4,25 SAY‘管理信息:’+STR(GLXX,3)

ELSE

?‘无此学号’

ACCEPT‘请输入姓名’TO STXM

INDEX ON XM TO STID

FIND &STXM

IF .NOT. EOF()

CLEAR

@2,2 SAY‘姓?名:’+XM

@2,25 SAY‘出生日期:’+DTOC(CS)

@4,2 SAY‘数据库:’+STR(SJK,3)

@4,25 SAY‘管理信息:’+STR(GLXX,3)

ELSE

?‘查无此学生’

ENDIF

ENDIF



WAIT

USE

RELEASE WINDOW WINB

SET TALK ON

RETURN

(三)屏幕设计

1.利用屏幕生成器,设计一个如下图所示的屏幕文件P4.SPR .

屏幕要求:标题——‘欢迎’

文本‘欢迎你参加自学考试’——字体为隶书,字号为22,颜色为红色

进入按钮——功能设定为执行命令:?WAIT WINDOW?‘该功能进入系统’

退出按钮——功能设定为退至FOXPRO主窗口?

「解答」

操作要点如下:

①打开屏幕设计窗口

用命令CREATE SCREEN P4,或系统菜单File / New / Screen,单击New,打开屏幕生成器窗口。

②设计屏幕

单击文本工具?创建文本对象?‘欢迎你参加自学考试’

Object / Font?设置字体,字号

Object / Pen Color?设置颜色

Screen / Layout / Title?设置标题?欢迎

单击命令按钮工具?设置‘进入’按钮

Push button Prompts:?进入

Variable…?JR

Valid…?WAIT WINDOW?‘该功能进入系统’

单击命令按钮工具?设置‘退出’按钮

Push button Prompts:?退出

Variable…?TC

Options:?选Terminate READ On Selection

③保存

File / Save?

保存,生成屏幕信息的数据库文件P4.SCX及屏幕信息的备注文件P4.SCT.

④生成屏幕程序

Program / Generate

在弹出的对话框中,选Options…,可以设置设计者的注释信息,如姓名、单位、地址、邮编等,

它们自动产生在屏幕程序的开头。最后,单击Generate ,生成屏幕程序文件P4.SPR.

⑤运行屏幕程序

DO P4.SPR?显示出题意所要求的屏幕程序文件P4.SPR.

2.利用屏幕生成器,设计一个如下图所示的逐条显示数据库ST1记录的屏幕文件P5.SPR .

屏幕要求:标?题——‘显示记录’

上一条按钮——功能为显示上一条记录

下一条按钮——功能为显示下一条记录

退出按钮——功能为退至FOXPRO主窗口

「解答」

操作要点如下:

①打开屏幕设计窗口

用命令CREATE SCREEN P5 ;或用系统菜单File / New / Screen,单击New,打开屏幕生成器窗口。

②设计屏幕

Screen / Layout / Title?设置标题?显示记录

单击文本工具?创建文本对象?姓名?

单击字段工具?设置字段对象?XM

Input…?ST1.XM

类似方法可设置文本对象:学号、管理信息、数据库;?字段对象XH、GLXX、SJK

单击画矩形工具?将上述对象围绕在矩形框内

单击命令按钮工具?设置上一条按钮

Push button Prompts:?上一条

Variable…?SYT

Valid…?输入下列代码:

IF .NOT. BOF()

SKIP–1

ELSE

GO BOTTOM

ENDIF

SHOW GETS

RETURN?

单击命令按钮工具?设置下一条按钮

Push button Prompts:?下一条

Variable…?XYT

Valid…?输入下列代码:

IF .NOT. EOF()

SKIP?

ELSE

GO TOP

ENDIF

SHOW GETS

RETURN?

(退出按钮的设置?同上机练习题(三) 1. )

③保存

File / Save?

保存,生成屏幕信息的数据库文件P5.SCX及屏幕信息的备注文件P5.SCT.

④生成屏幕程序

Program / Generate / Generate?

生成屏幕程序文件P5.SPR……

⑤运行屏幕程序

DO P5.SPR?

在窗口中按上(或下)一条按钮,可以向上(或下)逐条显示记录。

3.利用屏幕生成器,设计一个如下图所示的按出生日期查询数据库ST1记录的屏幕文件P6.SPR .

屏幕要求:标?题——‘按日期查询’

查询按钮——输入出生日期,查到了在屏幕中显示记录,否则显示白空

(类似地可以设计按姓名查询或按数据库分数查询的屏幕文件)

「解答」

操作要点如下:

①打开屏幕设计窗口

用命令CREATE SCREEN P6,或系统菜单File / New / Screen,单击New,打开屏幕生成器窗口。

②设计屏幕

Screen / Layout / Title?设置标题?按日期查询

单击文本工具?创建文本对象?姓名、学号、数据库、管理信息?

单击字段工具?设置字段对象?XM、XH、SJK、?GLXX

(设置方法同上机练习题(三) 2. )

单击画矩形工具?将上述对象围绕在矩形框内

单击文本工具?创建文本对象?输入出生日期

单击字段工具?在弹出的对话框中,设置一个日期型内存变量MCS

Input…?MCS

Format…?选取Date

(若按姓名查询,应选取Character )

(若按分数查询,应选取Numeric )

单击命令按钮工具?设置查询按钮

Push button Prompts:?查询

Variable…?CXCS

Valid…?输入下列代码

LOCATE FOR CS=MCS

SHOW GETS

RETURN

③保存?File / Save?

保存,生成屏幕信息的数据库文件P6.SCX及屏幕信息的备注文件P6.SCT.

④生成屏幕程序

Program / Generate / Generate?生成屏幕程序文件P6.SPR……

⑤运行屏幕程序?DO P6.SPR

在输入出生日期框中,输入欲查找的日期,单击查询按钮,显示查询结果。

(四)菜单设计

有一个学生信息管理系统,它的菜单选项及对应的模块程序(假设已存在)如下表所示:

菜单栏菜?单?项程序文件名

数据编辑追加记录ZJ.SPR

浏览记录LL.SPR

数据查询学号查询XH.SPR

姓名查询XM.SPR

退出系统返回到FOXPRO

返回到WINDOWS桌面

使用菜单生成器,生成学生信息管理系统的主菜单程序文件P7.MPR .

「解答」

操作要点如下:

①打开菜单设计窗口

用命令CREATE MENU P7 ;或系统菜单File / New / Menu,单击New,?打开菜单生成

器窗口。

②设计主菜单选项

在上图中, Menu Level框处显示Menu Bar,在此状态下设计主菜单选项。

Prompt框中依次输入主菜单选项‘数据编辑’、‘数据查询’和‘退出系统’

Result下拉列表框中依次选择Submenu?

③设计子菜单选项

在上图中,选中‘数据编辑’项,单击Create ,?此时, Menu Level框处显示‘数据编辑’,

在此状态下,设计‘数据编辑’菜单项的子菜单。

Prompt框中依次输入子菜单选项‘追加记录’及‘浏览记录’

Result?下拉列表框中依次选择Command

对‘追加记录’项,输入命令do ZJ.SPR,表示调用‘追加记录’的屏幕文件。

对‘浏览记录’项,输入命令do LL.SPR,表示调用‘浏览记录’的屏幕文件。

单击Menu Level的下拉列表,选择Menu Bar,返回上一层菜单,用同样方法可以设计‘数据

查询‘和’退出系统‘的子菜单选项。

子菜单选项‘返回到FOXPRO’, Result框中选择Procedure,单击Create,在对话框中输入命令:

CLEAR

MODIFY WINDOW SCREEN

SET SYSMENU TO DE**ULT

ACTIVATE WINDOW COMMAND

RETURN

子菜单选项‘返回到WINDOWS桌面’, Result框中选择Command,输入命令:

QUIT

④保存?File / Save

生成菜单信息的数据库文件P7.MNX及菜单信息的备注文件P7.MNT.

⑤生成菜单程序文件?Program / Generate?

在弹出的对话框中,?选择Comment Options…,?可以设置设计者的注释信息,如姓名、

单位、地址、邮编等,它们自动产生在菜单程序的开头。?最后,单击Generate ,生成菜单程序

文件P7.SPR.

⑥显示主菜单窗口?Do?P7.MPR

主菜单显示如下:

(五)数据管理模块程序设计

1.按下列要求编制模块程序文件P8.PRG .

①该模块的功能是在窗口中对数据库ST1统计数据。

②窗口位置为(5,10)到(12,60),窗口名为WIN ,标题为“统计记录”。

③将管理信息GLXX的成绩分为四档:

优秀(GLXX≥85)?良好(70≤GLXX<85)?及格(60≤GLXX<70)?不及格(GLXX<60)

统计各档成绩的人数,并在窗口中显示统计结果。

「解答」

在程序中用命令DIMENSION S(4)来定义一数组,存放统计GLXX四档成绩的人数。

用命令MODIFY COMMAND P8?来建立程序文件P8.PRG .

参考程序如下:

SET TALK OFF

CLEAR

DEFINE WINDOW WIN FROM 5,10 TO 12,60 FONT 'T黑体',11 TITLE '统计记录'

DIMENSION S(4)

STORE 0 TO S

USE ST1

DO WHILE .NOT.EOF()

DO CASE

CASE GLXX=85

S(1)=S(1)+1

CASE GLXX=70 .AND. GLXX<85

S(2)=S(2)+1

CASE GLXX=60 .AND. GLXX<70

S(3)=S(3)+1

CASE GLXX<60

S(4)=S(4)+1

ENDCASE

SKIP

ENDDO

ACTIVATE WINDOW WIN

@2,2 SAY '优秀:'+STR(S(1),3)+'人'

@2,25 SAY '良好:'+STR(S(2),3)+'人'

@4,2 SAY '及格:'+STR(S(3),3)+'人'

@4,25 SAY '不及格:'+STR(S(4),3)+'人'

WAIT WINDOW

USE

RELEASE WINDOW WIN

SET TALK ON

RETURN

2.按下列要求编写程序文件P9.PRG .

①屏幕提示“请输入密码”,输入时密码不显示,密码设为大写“GLXX”。

②若密码正确,执行打开数据库ST1,显示记录命令。

若密码不正确,显示“第几次密码错,请重新输入!”。

③如果密码已连续错三次,第四次输入再错,则退至WINDOWS桌面。

「解答」

首先,定义一个名为MMW的窗口,标题为‘密码窗口’,然后激活它。在输入密码之前,用命令

SET CONSOLE OFF

来屏蔽显示,起到保密效果。?输入密码之后,再恢复屏蔽显示。

密码保存在变量PSW中,函数UPPER(ALLTRIM(PSW))的作用,是将输入的密码,除去前后

空格后转换成大写字符。

输入密码的次数保存在变量N中。

用命令MODIFY COMMAND P9?来建立程序文件P9.PRG .

参考程序如下:

SET TALK OFF

CLEAR

CLEAR ALL

DEFINE WINDOW MMW FROM 10,5 TO 28,75 FONT 'T黑体',11 TITLE '密码窗口'

N=1

DO WHILE .T.

ACTIVATE WINDOW MMW

@2,5 SAY '请输入密码******'

SET CONSOLE OFF

ACCEPT TO PSW

SET CONSOLE ON

IF UPPER(ALLTRIM(PSW))=='GLXX'

CLEAR

USE ST1

LIST

WAIT WIND

USE

EXIT

ELSE

IF N=4

CLEAR

?'密码错误,退出!'

WAIT WIND

QUIT

ELSE



?'第'+STR(N,1)+'次密码错,请重新输入!'

WAIT WIND

N=N+1

ENDIF

ENDIF

ENDDO

RELEASE WINDOW MMW

SET TALK ON

RETURN

3.现已有(假设已存在)通讯信息数据库TX.DBF,其字段有:

XM (姓名,字符型) ,?DH (电话,字符型) ,?DZ (地址,字符型)

按下列要求编写程序文件P10.PRG .

①用格式化输入语句接收一个用户姓名,在TX中进行查找记录。

②若找到,则显示该用户记录,?找不到,则显示“查无此用户”。

③重复上述过程,直到接收的字符为“8888”时,结束程序的运行。

「解答」

现在假设数据库TX.DBF已经存在的前提之下来编写程序,在调试程序时,可以创建数据库,

并模拟输入一些记录来进行调试

程序中使用循环语句DO WHILE来实现连续查找,逻辑变量FL作为循环的条件,其初值为。T. ,

一旦输入字符为‘8888’时,则将变量FL置为。F. ,或者用命令EXIT退出循环,结束程序的运行。

用命令MODIFY COMMAND P10?来建立程序文件P10.PRG ,参考程序如下:

SET TALK OFF

CLEAR

CLEAR ALL

USE TX

FL=.T.

DO WHILE FL

CLEAR

MXM=SPACE(6)

@10,10 SAY '请输入姓名' GET MXM

READ

IF FL=(ALLTRIM(MXM)='8888')

EXIT

ENDIF

LOCATE FOR XM=MXM

IF FOUND()=.T.

DISPLAY

ELSE

? '查无此人'

ENDIF

WAIT

ENDDO

USE

SET TALK ON

RETURN

4.现已有商品信息数据库SP.DBF,其字段有:

SH (商品代号,字符型) ,?SM (商品名称,字符型) ,?GG (规格,字符型)

按下列要求编写程序文件P11.PRG ,?其功能是查找显示出同一商品名称有两种以上规格

的SM.

「解答」

设置变量TJSM为同一商品名称的不同规格的种类数。

先对商品名称字段SM进行索引,将商品名称按不相同的分类集中在一起,?然后再统计每

一类商品名称有多少种规格。

在统计中,先将每类的商品名称SM赋给内存变量MSM,暂时保存,利用命令

COUNT TO TJSM WHILE SM=MSM

统计该类中各种规格数,并赋给变量TJSM.?当TJSM=2时,即题意中所要查找的商品名称。

条件子句WHILE SM=MSM的作用是:从当前记录开始,直到不满足条件的记录为止,对所

有已满足条件的记录进行统计,实质上就是起到统计每一类商品名称的各种规格数的条件。

用命令MODIFY COMMAND P11?来建立程序文件P11.PRG ,参考程序如下:

SET TALK OFF

CLEAR

CLEAR ALL

TJSM=0

USE SP

INDEX ON SM TO SPID

DO WHILE NOT EOF()

MSM=SM

COUNT TO TJSM WHILE SM=MSM

IF TJSM=2

? '两种以上规格的商品名称有: '+ MSM

ENDIF

ENDDO

USE

SET TALK ON

RETURN

5.现已存在两个数据库,学生信息数据库ST.DBF,其字段有:

XH (学号,字符型) ,?XM (姓名,字符型) ,?ZL (专业,字符型)

成绩数据库KCCJ.DBF,其字段有:

XH (学号,字符型) ,?KCM (课程名,字符型) ,?CJ (成绩,数值型)

按下列要求编写程序文件P12.PRG ,其功能是统计每个学生各门课程的平均成绩PCJ,

并在屏幕中按下列格式输出:

学号?姓名?平均成绩

XXXX?XXX?XX.X

「解答」

该题涉及到两个数据库之间的操作,一般情况下,要进行关联操作。其目的是将两个在不同工作

区中打开的库文件联系起来,以便当一个关联库文件的记录指针移动时,与之被关联库文件的记录

指针也随之相应移动。

建立关联的方式可以通过索引关键字。

建立关联的条件是两个数据库需在不同工作区中打开,?且被关联库文件需要按关联字段进行

索引。

关联的命令为

SET?RELATION?TO?关联字段名?INTO?被关联库名

在程序中, 1号工作区中打开关联库文件ST , 2号工作区中打开被关联库文件KCCJ,按关联

字段XH建立关联。

每个学号XH所对应的学生,?可以选读多门课程。?从ST的第一个记录的XH数值开始,

在KCCJ中统计出该XH所对应的各门课程的平均成绩PCJ,并按照要求格式输出。

依次循环,即可统计出每个学生各门课程的平均成绩。

由于该题在多库之间的操作,从当前工作区访问其它工作区打开的库文件中的某个字段时,

要在该字段名前加上前缀,?即:

别名-字段名

或?别名。字段名

打开数据库时,若没有指定别名,则别名与库文件同名。?因此,如果当前2号工作区中打开的

是KCCJ,则XH是库KCCJ中的学号,而ST-XH是另一工作区库ST中的学号。

用命令MODIFY COMMAND P12?来建立程序文件P12.PRG ,参考程序如下:

SET TALK OFF

CLEAR

CLEAR ALL

SELECT B

PCJ=0

USE KCCJ

INDEX ON XH TO KCCJID

SELECT A

USE ST

? '学号'+SPACE(4)+'姓名'+SPACE(4)+'平均成绩'

SET RELATION TO XH INTO KCCJ

SCAN

SELECT KCCJ

AVERAGE CJ TO PCJ WHILE XH=ST-XH

SELECT ST

? XH+SPACE(4)+XM+SPACE(4)+STR(PCJ,3)

ENDSCAN

SET RELATION TO

CLOSE ALL

SET TALK ON

RETURN

6.现已存在两个数据库,学生信息数据库ST.DBF,其字段有:

XH (学号,字符型) ,?XM (姓名,字符型) ,?DZ (地址,字符型)

成绩数据库CJ.DBF,其字段有:

XH (学号,字符型) , SJK (数据库,数值型) , GLXX (管理信息,数值型)

按下列要求编写程序文件P13.PRG ,?其功能是从键盘输入一姓名,?在ST.DBF和CJ.DBF

中查找该学生的成绩,

若找不到,则显示“查无此学生”。

若查找到,则在屏幕中按下列格式显示该学生的成绩:

学号?姓名?数据库?管理信息

XXXX?XXX?XX?XX

「解答」

将库ST作为当前库,学号XH作为主键,输入被查找的学生姓名,保存在变量MXM中。

在库ST中进行查找,当找到时,将用该学生的学号XH再次作为查找对象,在库CJ中,

对外部键XH查找所对应的记录,这样就可以在库CJ中查到了该学生的SJK及GLXX成绩。

用命令MODIFY COMMAND P13?来建立程序文件P13.PRG ,参考程序如下:

SET TALK OFF

CLEAR

CLEAR ALL

SELECT A

USE ST

ACCEPT '请输入姓名' TO MXM

LOCATE FOR XM=ALLTRIM(MXM)

IF FOUND()

SELECT B

USE CJ

LOCATE FOR XH=ST-XH

SELECT A

? '学号'+SPACE(4)+'姓名'+SPACE(4)+'数据库'+SPACE(4)+'管理信息'

? XH+SPACE(4)+XM+SPACE(4)+STR(CJ-SJK,3)+SPACE(4)+STR(CJ-GLXX,3)

ELSE

? '查无此人'

ENDIF

CLOSE ALL

SET TALK ON

RETURN

当然,如果按主键XH将ST与CJ进行关联,只需将上述程序修改一下即可,参考程序如下:

SET TALK OFF

CLEAR

CLEAR ALL

SELECT B

USE CJ

INDEX ON XH TO CJID

SELECT A

USE ST

SET RELATION TO XH INTO CJ

ACCEPT '请输入姓名' TO MXM

LOCATE FOR XM=ALLTRIM(MXM)

IF FOUND()

? '学号'+SPACE(4)+'姓名'+SPACE(4)+'数据库'+SPACE(4)+'管理信息'

? XH+SPACE(4)+XM+SPACE(4)+STR(CJ-SJK,3)+SPACE(4)+STR(CJ-GLXX,3)

ELSE

? '查无此人'

ENDIF

SET RELATION TO

CLOSE ALL

SET TALK ON

RETURN

7.现已存在两个课程数据库KC1.DBF和KC2.DBF?(内容不完全相同) ,它们具有相同的结构,

其字段有:?KCM (课程名,字符型) ,?XS (学时数,数值型) ,?ZL (专业,字符型)

按下列要求编写程序文件P14.PRG,其功能为查找并显示同时出现在库KC1和库KC2中

的课程名KCM .

「解答」

将库KC1作为当前库,把库KC2的全部记录添加到KC1的尾部,再按课程名KCM进行索引,

这样可以按课程名不相同的分类集中在一起。?然后,再统计每一类课程名的数量TJ .

若TJ=2 ,则说明了该类课程名是同时出现在两个数据库中。

用命令MODIFY COMMAND P14?来建立程序文件P14.PRG ,参考程序如下:

SET TALK OFF

CLEAR

CLEAR ALL

USE KC1

APPEND FROM KC2

INDEX ON KCM TO KCMID

DO WHILE NOT EOF()

MKCM=KCM

COUNT TO TJ WHILE KCM=MKCM

IF TJ=2

?‘同时出现在KC1和KC2中的课程名有:’+ MKCM

ENDIF

ENDDO

USE

SET TALK ON

RETURN

8.现已存在两个数据库,职工收入数据库ZGR.DBF,其字段有:

GH (工号,字符型) ,?XM (姓名,字符型) ,?SR (收入,数值型)

纳税记录数据库ZGS.DBF,其字段有:

GH (工号,字符型) ,?SE (税额,数值型) ,?SJSR (实际净收入,数值型)

若征税标准规定如下:

SR≤1000?征税0 %

1000<SR≤2000?征税5 %

2000<SR≤3000?征税10 %

SR3000?征税20 %

按下列要求编写程序文件P15.PRG ,?其功能是根据ZGR.DBF中收入SR及征税标准,

计算每个职工的税额SE和实际净收入SJSR ,然后相应填入ZGS.DBF中的SE和SJSR.

「解答」

在1号工作区中打开ZGR,根据征税标准,先计算出征税税率TAX.

在2号工作区中打开ZGS,?求出税额?SE=收入SR×税率TAX

净收入SJSR=收入SR-税额SE

由于该题在多库之间的操作,从当前工作区访问其它工作区打开的库文件中的某个字段时,要在

该字段名前加上前缀,?即:

别名-字段名

因而

SE=ZGR-SR*TAX

SJSR=ZGR-SR-SE

在计算过程中,若库ZGR中记录在库ZGS中没有,则要添加。?若库ZGS中的记录在库ZGR

中没有,则SE和SJSR均为0.

用命令MODIFY COMMAND P15?来建立程序文件P15.PRG ,参考程序如下:

SET TALK OFF

CLEAR

SELECT B

USE ZGS

REPLACE ALL SE WITH 0

REPLACE ALL SJSR WITH 0

SELECT A

USE ZGR

DO WHILE NOT EOF()

DO CASE

CASE SR3000

TAX=0.2

CASE SR2000 AND SR<=3000

TAX=0.1

CASE SR1000 AND SR<=2000

TAX=0.05

OTHERWISE

TAX=0

ENDCASE

SELECT B

LOCATE FOR GH=ZGR-GH

IF NOT FOUND()

APPEND BLANK

REPLACE GH WITH ZGR-GH

ENDIF

REPLACE SE WITH ZGR-SR*TAX

REPLACE SJSR WITH ZGR-SR-SE

SELECT A

SKIP

ENDDO

SELECT B

LIST

CLOSE ALL

SET TALK ON

RETURN

点击显示
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读

当前热点关注

  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • [相关地区]