您的位置:自考365 > 复习指导 > 笔记串讲 > 工学 > 365网友提供计算机信息管理试题

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

2005-06-11 00:00   【 】【我要纠错
    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 %
  
  SR>3000?征税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 SR>3000
  
  TAX=0.2
  
  CASE SR>2000 AND SR<=3000
  
  TAX=0.1
  
  CASE SR>1000 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
  

本文转载链接:365网友提供计算机信息管理试题

分享到:
  • 站内搜索
  • 课程搜索
  • 试题搜索

热门搜索:教材 报名 查分 免考 考试计划