03Q04C上机答案.docx
- 文档编号:18554886
- 上传时间:2023-08-19
- 格式:DOCX
- 页数:34
- 大小:30.77KB
03Q04C上机答案.docx
《03Q04C上机答案.docx》由会员分享,可在线阅读,更多相关《03Q04C上机答案.docx(34页珍藏版)》请在冰点文库上搜索。
03Q04C上机答案
2003秋VFP01答案
一、项目、数据库和表操作(12分)
1.按如下要求修改SJK中学生(XS)表的结构:
(1)将学号(xh)字段宽度设置为10;1分
(2)设置xh字段的有效性规则:
len(alltrim(xh))=6orlen(alltrim(xh))=8orlen(alltrim(xh))=10
或者:
len(rtrim(xh))=8orlen(rtrim(xh))=101分
(3)设置xh字段的字段注释:
该字段是学生表的主关键字,不允许重复;1分
(4)创建索引:
候选索引1分
索引表达式:
bhxh:
bjbh+xh1分
(5)为jg字段设置默认值:
“江苏”。
1分
2.把TEST项目中的图片文件015.jpg的包含状态设置为“排除”。
1分
3.修改XS表中所有记录的xh字段值2分
UPDATEXSSETXH=LEFT(XH,2)+SUBSTR(BJDH,3,2)+SUBSTR(XH,3)
4.为xs表设置删除触发器:
LEFT(XH,2)>="95"ANDLEFT(XH,2)<="99"
或者:
BETWEEN(LEFT(XH,2),"95","99")1分
5.建立永久关系1分
设置参照完整性:
删除限制1分
二、设计查询(8分)
已知学生(XS)表中含有字符型字段班级编号(bjbh)和日期型字段出生日期(csrq)。
在TEST项目中已存在查询chaxun,按如下要求修改该查询:
基于学生(XS)表以班级为单位,按出生年份统计各班各年份出生的人数,要求输出字段为:
bjbh、出生年份、人数,查询结果首先按班级编号升序排序,一个班级中再按人数多少降序排序,查询结果输出到临时表xsnfrs。
SELECTXs.bjbh,year(csrq)as出生年份,count(*)as人数;3分
FROMsjk!
xs;
GROUPBYXs.bjbh,2;2分
ORDERBYXs.bjbh,3DESC;2分
INTOCURSORxsnfrs1分
三、设计菜单(5分,每小题各1分)
1.创建“学生档案管理”菜单栏,并为其设置访问键“ALT+S”;
2.为“学生档案管理”创建子菜单“学生档案录入”和“学生档案查询”,并用分隔线隔开
3.为“学生档案录入”菜单设置命令,该命令用来调用当前目录下的表单文件XS.SCX
4.为“学生档案查询”菜单设置过程
IF!
USED(‘XS’)
USEXS
ELSE
SELECTXS
ENDIF
BROWSE
5.在“文件”菜单下插入系统菜单项“打印预览”
四、设计表单(10分)
1.Controlbox属性值为.F.
(2)
2.Borderstype属值为.F.
(1)
3.Command1.caption="打开\ (1) 4.表单的Caption属性为“记事本” (1) 5.This.Parent.edit1.value="" (2) This.Parent.edit1.SetFocus 6.IFEmpty(lsfilename) (3) UpdatetextfileSetfilename=lsfilename 五、程序改错(5分) 下列程序的功能是: 实现二进制字符串数据压缩。 压缩算法是: 字符串首字符+该字符个数+分隔符+另一个字符个数+分隔符+…… 例如,二进制字符串为“111100000111111111000111110000”压缩后显示为“14*5*9*3*5*4”。 (字符串首字符为“1”、4个“1”、5个“0”、9个“1”……,分隔符为“*”)。 要求: ①项目中有一个程序文件Pcode,将下列程序输入到其中并进行修改;1分 ②在修改程序时,不允许修改程序的总体框架和算法,不允许增加或减少语句数目。 cString='111100000111111111000111110000' cResult=LEFT(cString,1) nCount=1 FORn=2TOcString&&FORn=2TOLEN(cString)2分 IFSUBSTR(cString,n,1)=SUBSTR(cString,n-1,1) nCount=nCount+1 ELSE cResult=cResult+ALLT(STR(nCount))+'*' nCount=nCount+1&&nCount=12分 ENDIF ENDFOR cResult=cResult+ALLT(STR(nCount)) WAITWINDOWS'压缩后为'+cResult 2003秋VFP02.答案 一、项目、数据库和表操作(12分) 1.按如下要求修改SJK中学生(XS)表的结构: (1)将学号(xh)字段宽度设置为10;1分 (2)设置xh字段的有效性规则: 它的宽度只能是8位或10位;1分 (3)设置xh字段的字段注释: 该字段是学生表的主关键字,不允许重复;1分 (4)增加一个备注型字段,字段名为bz;1分 (5)创建一个唯一索引xing: left(xm,2)1分 (6)设置XS表注释: 学生基本信息。 1分 2.把TEST项目中的图片文件015.jpg的包含状态设置为“排除”。 1分 3.修改XS表中所有记录的xh字段值2分 UPDATEXSSETXH=LEFT(XH,2)+SUBSTR(BJDH,3,2)+SUBSTR(XH,3) 4.为xs表设置删除触发器: LEFT(XH,2)>="95"ANDLEFT(XH,2)<="99" 或者: BETWEEN(LEFT(XH,2),"95","99")1分 5.以BJ表为主表,XS表为子表按bjbh建立永久关系1分 设置BJ表和XS表之间的参照完整性: 删除限制1分 二、设计查询(8分) 已知学生(XS)表中含有字符型字段班级编号(bjbh)和日期型字段出生日期(csrq)。 在TEST项目中已存在查询chaxun,按如下要求修改该查询: 基于学生(XS)表以班级为单位,按出生月份统计各班上半年和下半年出生的人数,要求输出字段为: bjbh、时间、人数。 如果出生月份在1至6月,则时间为“上半年”,如果出生月份在7至12月,则时间为“下半年”,查询结果首先按班级编号升序排序,一个班级中再按时间降序排序,查询结果输出到临时表xsrs。 SELECTXs.bjbh,IIF(MONTH(csrq)<7,"上半年","下半年")AS时间,COUNT(*)AS 人数;3分 FROMsjk! xs; GROUPBYXs.bjbh,2;2分 ORDERBYXs.bjbh,3DESC;2分 INTOCURSORxsrs1分 三、设计菜单(5分) 1.为“数据录入”菜单栏下的“学生信息录入”菜单项创建快捷键CTRL+L1分 2.在“数据录入”菜单栏下增加一个菜单项“教师信息录入”,并用分隔线隔开1分 3.为“教师信息录入”菜单设置命令,APPEND1分 4.为“数据查询”菜单栏设置提示信息: “按条件查询相关表的信息”1分 5.将上述菜单追加在系统菜单的后面1分 四、设计表单(10分) 1.将表格中的各列标头改为如下图所示(2分) 2.将表格的删除标志去掉(1分) 3.表单的Moveable属性为.F. (1) 4.thisform.label1.caption='总成绩' (1) thisform.label1.caption='总人数' (1) 5.ThisForm.text1.Value=czcj (1) (2) Thisform.text1.value=czrs (1) (2) 五、程序改错(5分) 下列程序的功能是将小写金额(假设小于10万且有1位小数)转换为中文大写形式显示。 例如,213.0转换为“贰佰壹拾叁元零角”,3002.8转换为“叁仟零佰零拾贰元捌角”。 要求: ①项目中有一个程序文件Pcode,将下列程序输入到其中并进行修改;1分 ②在修改程序时,不允许修改程序的总体框架和算法,不允许增加或减少语句数目。 nMoney=10040.5 &&赋初值 cMoney=ALLT(STR(nMoney,7,1)) cS1='零壹贰叁肆伍陆柒捌玖' cS2=RIGHT('万仟佰拾元',(LEN(cMoney)-2)*2) cRt=SPACE(0) FORn=1TOLEN(cMoney)-2 ch=SUBSTR(cMoney,n,1) cRt=cRt+IIF(ch="0"ANDRIGHT(cRt,2)="零","",SUBS(cS1,ch*2+1,2)) &&ch应为val(ch)2分 cRt=cRt+IIF(ch="0","",SUBS(cS2,n*2-1,2))&&去掉重复零 ENDIF&&ENDIF应为ENDFOR或NEXT2分 cRt=cRt+IIF(RIGHT(cRt,2)="零",'元','') cRt=cRt+IIF(RIGHT(cMoney,1)='0','',SUBS(cS1,VAL(RIGHT(cMoney,1))*2+1,2)+'角') &&小数部分 WAITWINDOWS'大写金额为: '+cRt 2003秋VFP03.答案 一、项目、数据库和表操作(12分) 1.按如下要求修改SJK中课程(KC)表的结构: (1)设置kcm字段的标题: 课程名称;1分 (2)设置课程代号(kcdh)字段的输入掩码: 991分 (3)设置课时数(kss)字段的显示类为微调控件;1分 (4)创建一个普通索引kx: STR(KSS)+STR(XF)1分 (5)为KC表创建记录级有效性规则: KSS>=XF1分 2.修改KC表中所有记录的课时数(kss)和学分(xf)字段的值2分 3.向KC表中增加一条记录2分 4.设置KC表的删除触发器: NOTKC_DEL_TRI()1分 5.以KC表为主表,CJ表为子表按kcdh建立永久关系1分 设置它们之间的参照完整性: 更新级联。 1分 二、设计查询(8分) 在TEST项目中已存在查询chaxun,且在SJK中包含一个名为XSCJVIEW的视图。 按如下要求修改查询: 基于XSCJVIEW视图和KC表统计各学生所学必修课的门数和总学分,学生所学课程的学分必须当成绩(cj)在60分以上时才能取得。 要求输出字段为: xh、xm、门数、总学分,查询结果按学号升序排序。 SELECTXscjview.xh,Xscjview.xm,COUNT(*)AS门数,;2分 SUM(iif(xscjview.cj>=60,kc.xf,0))as总学分;2分 FROM sjk! xscjviewINNERJOINsjk! kc; ON Xscjview.kcdh=Kc.kcdh;1分 WHEREKc.bxk=.t.;1分 GROUPBYXscjview.xh;1分 ORDERBYXscjview.xh1分 三、设计菜单(5分) 1.为“数据录入”菜单栏下的“教师信息录入”菜单项创建快捷键CTRL+L1分 2.为“数据查询”创建子菜单“学生档案查询”和“学生成绩查询”,并用分隔线隔开1分 3.为“学生档案查询”菜单设置SQL命令: selectxh,xmfromxs1分 4.为“学生成绩查询”菜单栏设置提示信息: “按学号查询学生的成绩”1分 5.将上述菜单插入到在系统菜单的“编辑”菜单项之后1分 四、设计表单(10分) 1.表单的Caption属性为“系统登录” (1) 2.下拉框的Style属性为2 (2) 3.职务文本框的Enabled属性为.F. (1) 4.SELECTnameFROMuserINTOCURScNameTmp (2) 5.SEEKlc_nameORDERnameINUSER (2) This.Parent.Txt_Password.SetFocus() (2) 五、程序改错(5分) 下列程序的功能是计算一个英文句子中包括几个英文单词(假设各单词间以空格或标点符号分隔)。 其基本算法是首先字符串左边加一个空格,然后对字符串中的每个字符依次进行如下的处理: 如果该字符为英文字符,且左边的字符不是英文字符,则英文单词个数加1。 要求: ①项目中有一个程序文件Pcode,将下列程序输入到其中并进行修改;1分 ②在修改程序时,不允许修改程序的总体框架和算法,不允许增加或减少语句数目。 cString='AmodemisadevicethatconnectsyourcomputertotheInternet.' cString=SPACE (1)+cString nCount=0 FORn=1TOLEN(cString) c=SUBSTR(cString,1,n) &&c=SUBSTR(cString,n,1)2分 IFBETWEEN(c,'A','Z')ORBETWEEN(c,'a','z')&&判断是否是一个英文字母 c=SUBSTR(cString,n-1,1)&&取左边的一个字符 IF(BETWEEN(c,'A','Z')ORBETWEEN(c,'a','z'))&&IFNOT……2分 nCount=nCount+1 ENDIF ENDIF ENDFOR WAITWINDOWS'英文单词个数为'+STR(nCount) 2003秋VFP04.答案 一、项目、数据库和表操作(12分) 1.按如下要求修改SJK中课程(KC)表的结构: (1)设置bxk字段的标题: 是否必修课1分 (2)设置课程代号(kcdh)字段的输入掩码: 991分 (3)设置学分(xf)字段的显示类为微调控件;1分 (4)增加一个备注型字段,字段名为“课程简介”;1分 (5)为KC表创建记录级有效性规则: kss>=xf1分 2.已知数据库SJK的存储过程中有一自定义函数: Ltoc(bxk)+str(xf),降序2分 3.修改KC表中所有记录的课时数(kss)和学分(xf)字段的值1分 4.向KC表中增加一条记录1分 5.设置KC表的删除触发器: NOTKC_DEL_TRI()1分 6.以KC表为主表,CJ表为子表按kcdh建立永久关系1分 设置它们之间的参照完整性: 更新级联。 1分 二、设计查询(8分) 在TEST项目中已存在查询chaxun,且在SJK中包含一个名为XSCJVIEW的视图。 按如下要求修改查询: 基于XSCJVIEW视图和KC表统计各学生必修课和非必修课的门数和总学分,学生所学课程的学分必须当成绩(cj)在60分以上时才能取得。 要求输出字段为: xh、xm、课程性质、门数、总学分,其中“课程性质”字段依据KC表中的bxk字段取值为“必修”或“选修”(若bxk字段值为“.T.”,则“课程性质”字段取值为“必修”,否则取值为“选修”)。 查询结果按学号和课程性质升序排序。 SELECTXscjview.xh,Xscjview.xm,IIF(Kc.bxk,"必修","选修")AS 课程性质,;4分 COUNT(*)AS门数,SUM(IIF(Xscjview.cj=>60,Kc.xf,0))AS总学分; FROM sjk! xscjviewINNERJOINsjk! kc;2分 ON Xscjview.kcdh=Kc.kcdh; GROUPBYXscjview.xh,3;1分 ORDERBYXscjview.xh,31分 三、设计菜单(5分,每小题1分) 已知项目TEST中已存在菜单menud,其中已定义了“文件”、“数据录入”、“数据打印”、和“退出”四个菜单栏,按如下要求修改菜单,完成后的运行效果如图4所示。 1.启用“数据录入”菜单栏下的“学生成绩录入”菜单项; 2.为“数据打印”创建子菜单“学生档案打印”和“学生成绩打印”,并用分隔线隔开; 3.为“学生成绩打印”菜单设置命令: REPORTFORMBBPREVIEW 4.为“退出”菜单栏设置访问键ALT+X: 退出\ 5.将“文件”菜单栏删除 四、设计表单(10分) 1.表单的Caption属性为“系统登录” (1) 2.表单的MinButton属性值为.F. (1) 3.口令文本框的PasswordChar值为* (1) 4.“确定”按钮的Default属性为.T. (1) 5.SELECTyear+'年'+Right('0'+ALLT(month),2)+'月'FROMloginINTOCURS cYmtmp (2) 6.SEEKlsnameORDERnameINUSER (2) THISFORM.TXT_TITLE.VALUE=USER.TITLE (2) 五、程序改错(5分) 下列程序的功能用于将十进制数转换成十六进制数表示。 要求: ①项目中有一个程序文件Pcode,将下列程序输入到其中并进行修改;1分 ②在修改程序时,不允许修改程序的总体框架和算法,不允许增加或减少语句数目。 nNumber=437 &&赋初值(十进制数) cResult=SPACE(0) IFnNumber#0 DOWHILEnNumber>0 n=MOD(nNumber,16)&&余数 nNumber=INT(nNumber/16) IFn<10 cResult=STR(n,1)+cResult ELSE cResult=CHR(ASC('A')+n)+cResult&&+n改为+n-102分 ENDIF ENDDO ELSE cResult=0&&cResult=’0’2分 ENDIF WAITWINDOWS'十六进制数表示为'+cResult 2003秋VFP05.答案 一、项目、数据库和表操作(12分) 1.按如下要求修改SJK中工资(GZ)表的结构: (1)为gwjt字段设置标题: 岗位津贴1分 (2)设置工号(gh)字段的输入掩码: X99991分 (3)增加一个逻辑型字段yhdf1分 (4)创建一个普通索引jb_gw: jbgz+gwjt,降序2分 (5)为GZ表设置长表名: 职工工资表1分 2.把A: \B0001.GIF文件添加到TEST项目中位置: 其他文件,设置“排除”1分 3.计算GZ表中所有教师的住房公积(zfgj)1分 4.设置GZ表的记录有效性规则: zfgj=jbgz*0.081分 5.设GZ表的更新权限由一个全局的逻辑变量ispassed控制,当ispassed的值为.T. 时允许更新,设置GZ表的更新触发器: ispassed1分 6.以JS表为主表,GZ表为子表按gh建立“一对一”的永久关系1分 设置JS表和GZ表之间的参照完整性: 更新级联1分 二、设计查询(8分) 在TEST项目中已存在查询chaxun,按如下要求修改查询: 基于两个工资表(GZ和GZC)查询同一个教师在两个表中的基本工资(jbgz)不一致的记录。 要求输出gh、xm字段以及两个表中的jbgz字段,并按两个jbgz差的绝对值的降序排序。 SELECTGzc.gh,Gzc.xm,Gz.jbgz,Gzc.jbgz,ABS(Gz.jbgz-Gzc.jbgz)AS 差额;4分 FROM sjk! gzINNERJOINgzcONGz.gh=Gzc.gh;2分 WHEREGz.jbgz<>gzc.jbgz;1分 ORDERBY5DESC1分 三、设计菜单(5分,每小题1分) 1.在“文件”菜单栏下插入系统菜单条“打印预览” 2.在“数据维护”菜单栏下增加一个菜单项“教师信息维护”,并用分隔线隔开 3.将“数据统计”菜单栏下的“教师工资统计”菜单项废止不可用; 4.为“学生成绩统计”菜单设置SQL命令: SELCETXH,SUM(CJ)FROMCJGROUPBYXH 5.为“退出”菜单栏设置访问键ALT+X: 退出\ 四、设计表单(10分) 1.Borderstyle属值为2 (1) 2.Command4.Caption="退出(\ (1) 3.Grid1.DeleteMark=.F. (1) 4.Exclusive属性.T. (1) 5.createcursuser_cur(noc(6),namec(8),titlec(40),departmentc(40),remarkc(100)) (2) 6.IFUSED(‘user_cur’) (4) USEINuser_cur ENDIF Thisform.release 五、程序改错(5分) 下列程序的功能是: 对于数列1,1,2,3,8,……(从第3项开始,每一数列项的值为前2项之和),求前多少项的和刚好不大于100。 要求: ①项目中有一个程序文件Pcode,将下列程序输入到其中并进行修改;1分 ②在修改程序时,不允许修改程序的总体框架和算法,不允许增加或减少语句数目。 a1=1 a2=1 nSum=a1+a2&&第1、2项之和 nCount=2&&项数,初值为2 DOWHILEnSum<100 x=a1 a1=a2 a2=x+a1 nSum=nSum+a1&&nSum=nSum+a22分 nCount=nCount+1 ENDDO nCount=nCount+1&&nCount=nCount-12分 WAITWINDOWS’前’+STR(nCount)+’项的和刚好不大于100’ 2003秋VFP06.答案 一、项目、数据库和表操作(12分) 1.按如下要求修改SJK中工资(GZ)表的结构: (1)为yfgz字段设置标题: 应发工资1分 (2)设置工号(gh)字段的输入掩码: X99991分 (3)增加一个逻辑型字段,其字段名为yhdf1分 (4)创建一个普通索引jbgwzh,jbgz+gwjt+zhjt,降序2分 (5)为GZ表添加注释: 职工工资表1分 2.把A: \B0001.GIF文件添加到TEST项目中的位置: 自由表,设置为“排除”
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 03 Q04C 上机 答案