VFP2007春上机试题.doc_第1页
VFP2007春上机试题.doc_第2页
VFP2007春上机试题.doc_第3页
VFP2007春上机试题.doc_第4页
VFP2007春上机试题.doc_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

VFP2007春上机试题上机部分一、项目、数据库和表操作(12分)练习1打开软盘根目录下的项目文件test,在该项目文件中已有一数据库sjk及若干表。1.按如下要求修改sjk中的ts表: (1)为ts表设置编辑说明:图书信息表。(2)添加一字符型字段,字段名为ztc,字段宽度为40,并将标题设置为“主题词”。(3)设置flh字段有关属性,使该字段中输入的字母均为大写字母。(4)设置cs字段的有效性规则和有效性说明信息,要求:其值必须大于0。2为表设置更新触发器,要求:分类号(flh)字段的值为非空格字符串时不可更新。3修改项目test的项目信息:省份为“江苏”。4xs表和jy表中已分别存在以xh、dzh字段为索引表达式的主索引xsxh和普通索引dzh。以xs表为主表、jy表为子表,基于xh与dzh字段建立永久关系,并根据以下要求设置参照完整性规则:在xs表中更新记录(xh字段的值)时,若jy表中有相应的记录,则同步对jy表进行修改(dzh字段的值)。练习2打开软盘根目录下的项目文件test,在该项目文件中已有一数据库sjk及若干表。1.按如下要求修改sjk中的ts表: (1)添加一个数据类型、字段宽度与cs字段相同的字段,字段名为jccs;并设置其标题为“借出册数”。(2)设置jccs字段的有关属性,使得将该字段从表单中的数据环境中拖放到表单上时,生成的相应控件为微调框控件。(3)创建一个普通索引abcd,要求以分类号(flh)的长度进行排序(flh字段值的首尾空格字符不计)。2在项目中,将gz表设置为“包含”状态。3修改项目test的项目信息:省份为“江苏”。4xim表和js表中已分别存在以xdh字段为索引表达式的主索引xdh和普通索引xdh。以xim表为主表、js表为子表,基于xdh字段建立永久关系,并根据以下要求设置参照完整性规则:当在xim表中删除记录时,若js表中有相应的记录(xdh字段的值),则禁止删除xim表中的记录。练习3打开软盘根目录下的项目文件test,在该项目文件中已有一数据库sjk及若干表。1. 按如下要求修改sjk中的jy表:()为jy表设置编辑说明:图书借阅表。()修改罚款(fk)字段的宽度,要求该字段能存储3位整数、1位小数。() 设置lx字段的标题属性,使该字段的字段名在浏览窗口中显示为“读者类型”。()设置lx字段的有关属性,使该字段中输入的字母均为大写字母。()创建一个普通索引abcd,要求以读者类型(lx)字段进行排序,相同时以读者号(dzh)字段排序。2用COPY TO命令,将jy表中dzh字段值的前二位为“01”而且hsrq字段不为空的记录复制到(存储在软盘根目录中)。(提示:条件中可使用Empty()函数)3修改项目文件test的项目信息:邮政编码为“210093”。4kc表和cj表中已分别存在以kcdh字段为索引表达式的主索引kcdh和普通索引cjkcdh。以kc表为主表、cj表为子表,基于kcdh字段建立永久关系,并根据以下要求设置参照完整性规则:当在kc表中删除记录时,若cj表中有相应的记录(kcdh字段的值),则同时删除cj表中相应记录。练习4打开软盘根目录下的项目文件test,在该项目文件中已有一数据库sjk及若干表。1.按如下要求修改sjk中的jy表: (1)设置表的触发器:当分类号(flh)字段值为空字符串时才能删除记录。(2)设置hsrq字段的有效性规则和有效性说明:要求其值不超过当前系统日期。(3)将hsrq字段的标题设置为“还书日期”。(4)创建一个普通索引abcd,要求以借阅日期(jyrq)字段进行排序,相同时以分类号(flh)字段排序。2计算jy表中读者类型(lx)为“J”的记录的罚款(fk)字段的值,算法是:如果还书日期(hsrq)减去借阅日期(jyrq)大于60天,则超过60天部分按0.10元/天计算。3修改项目test的项目信息:城市为“南京市”。4zy表和xs表中已分别存在以zydh字段为索引表达式的主索引zydh和普通索引xszydh。以zy表为主表、xs表为子表,基于zydh字段建立永久关系,并根据以下要求设置参照完整性规则:在zy表中修改和删除记录(zydh字段的值)时,则同时修改和删除xs表中相应记录。练习5打开软盘根目录下的项目文件test,在该项目文件中已有一数据库sjk及若干表。1. 按如下要求修改sjk中的gz表:() 将ylbx字段的标题设置为“医疗保险”。()设置gh字段有关属性,使得gh字段的首字符为大写英文字母、后四个字符只能为数字字符。()设置gh字段有关属性,使得将该字段从表单中的数据环境中拖放到表单上时,生成的相应控件为下列组合框控件。()设置表的记录级规则,要求ylbx小于或等于jbgz的8。()创建一个普通索引abcd,要求以gh字段进行排序,相同时以jbgz字段排序。2计算gz表中ylbx字段的值:ylbxjbgz8%。3利用项目管理器操作:将数据库表zy表改为自由表,并将其添加到项目中。4gz表和js表中已分别存在以gh字段为索引表达式的主索引gzgh1和主索引jsgh。以gz表为主表、js表为子表,基于gh字段建立永久关系,并根据以下要求设置参照完整性规则:当在gz表中删除记录时,若js表中有相应的记录(gh字段的值),则禁止删除gz表中相应记录。练习6打开软盘根目录下的项目文件test,在该项目文件中已有一数据库sjk及若干表。1.按如下要求修改sjk中的xs表: (1)添加一个逻辑型字段,字段名为dty,并为其设置标题属性:“党团员”。(2)添加一个字符型字段,字段名为rxny、宽度为6,并设置默认值:系统日期的年份和月份。例如,若当前系统日期为2006年7月27日,则rxny字段值为“200607”(3)为xs表添加注释:学生基本信息表。(4)创建一个普通索引abcd,要求以rxny字段进行排序,相同时以cxrq字段排序。2计算gz表中zfgj字段的值:zfgjjbgz12%。3利用项目管理器操作:将xim表改为ximb表,并为其设置编辑说明“系名表”。4zy表和xs表中已分别存在以zydh字段为索引表达式的主索引zydh和普通索引xszydh。以zy表为主表、xs表为子表,基于zydh字段建立永久关系,并根据以下要求设置参照完整性规则:当在zy表中修改和删除记录时,若xs表中有相应的记录(zydh字段的值),则禁止对zy表进行修改(zydh字段)和删除。练习7打开软盘根目录下的项目文件test,在该项目文件中已有一数据库sjk及若干表。1.按如下要求修改sjk中的工资(gz)表: (1)添加一个备注型字段,字段名为sdssm,并为其设置标题“所得税说明”。(2)设置表的记录级有效性规则,要求sfgz不大于yfgz(对已有数据不作验证)。(3)创建一个普通索引abcd,要求以grsds字段进行排序,相同时以gh字段排序。2计算gz表中zfgj字段的值:jbgz小于1000时为100,否则为jbgz10%后“圆整”(四舍五入)到百位。例如,123.5圆整为100、151.2圆整后为200、251.61圆整后为300等等(提示:用ROUND()函数)。3将自由表gzb中职称(zc)为“教授”的记录复制到软盘根目录下的gzb1表中,然后将gzb1表添加为项目中的自由表并设置为“包含”。4xs表和cj表中已分别存在以xh字段为索引表达式的主索引xsxh和普通索引cjxh。以xs表为主表、cj表为子表,基于xh字段建立永久关系,并根据以下要求设置参照完整性规则:在xs表中修改记录时,若cj表中有相关的记录,则同步对cj表进行修改;在xs表中删除记录时,若cj表中有相关的记录,则禁止对xs表进行删除。练习8打开软盘根目录下的项目文件test,在该项目文件中已有一数据库sjk及若干表。1.按如下要求修改sjk中的课程(kc)表的结构:()将学分(xf)字段的标题设置为“学分”。()设置学分(xf)字段的有效性(验证)规则:大于或等于2,且小于或等于10。()设置kc表的记录级有效性规则:kss大于或等于xf。()对课程代号(kcdh)字段设置输入掩码:只接受4个数字字符。()创建一个普通索引abcd,要求先按xf字段进行排序,xf相同时再按kcdh字段排序。(6)为kc表添加编辑说明为“课程信息表”。(7)为kc表设置删除触发器:不允许删除。2sjk中kc表已存在主索引kcdh(索引表达式为kcdh),cj表已存在普通索引cjkcdh(索引表达式为kcdh)。以kc表为主表、cj表为子表,基于kcdh字段建立永久关系,并设置kc表和cj表之间的参照完整性规则:在cj表中输入记录时,若kcdh在kc表中不存在,则不允许插入。二、设计查询(8分)在TEST项目中已经存在查询chaxun练习1已知在sjk数据库的学生(xs)表中含有学号(xh)、姓名(xm)、性别(xb)等字段;成绩(cj)表中含有学号(xh)、课程代号(kcdh)、成绩(cj)等字段。按如下要求修改查询:基于xs表和cj表查询课程代号为0109的各门课程男女的人数、最高分和平均分,要求输出kcdh、xb、人数、最高分和平均分,且查询结果输出至屏幕(即VFP主窗口)。练习2已知在sjk数据库的系名(xim)表中含有系代号(xdh)、系名(ximing)等字段;学生(xs)表中含有学号(xh)、姓名(xm)、性别(xb)等字段。按如下要求修改查询:基于xim表和xs表查询各系的男女生人数,要求输出字段为xdh、ximing、男生人数和女生人数,查询结果按女生人数降序排序,且男女生人数均为0的系也输出。练习3已知在sjk数据库的教师(js)表中含有工号(gh)、姓名(xm)、系代号(xdh)等字段;工资(gz)表中含有工号(gh)、工资(jbgz)等字段。按如下要求修改查询:基于js表和gz表查询职称代号为“02”的各系教师人数、最高工资和平均工资,要求输出字段xdh、人数、最高工资和平均工资,结果按平均工资降序排序,且查询结果输出至表temp。练习4已知在sjk数据库的图书(ts)表中含有图书分类号(flh)、入库日期(rkrq)、价格(jg)和册数(cs)等字段。按如下要求修改查询:基于图书(ts)表查询2000年(含2000年)以来各年入库的图书情况。要求输出字段为:年份、图书种类、平均价格、总册数、总金额(金额为价格乘以册数),查询结果按年份降序排序,且查询结果输出至文本文件XYZ。(注:不同的分类号代表不同的图书种类。)练习5已知在sjk数据库的图书(ts)表中含有图书分类号(flh)、书名(sm)等字段;借阅(jy)表中含有图书分类号(flh)、读者类型(lx)、读者(dzh)、借阅日期(jyrq)和还书日期(hsrq)等字段。按如下要求修改查询:基于ts表和jy表查询教师(lx为“J”)借书超过60天、学生(lx为“X”)借书超过45天的图书情况。要求输出字段为:flh、sm、lx、dzh、借阅天数,查询结果按读者类型排序,相同时再按借阅天数降序排序。 练习6已知在sjk数据库的教师(js)表中含有工号(gh)、姓名(xm)、email地址(email)等字段。按如下要求修改查询:基于js表查询各邮件服务器上注册的信箱个数。要求输出字段为:邮件服务器(指email地址中“”字符后面的部分)和注册人数,查询结果不含无email地址人员的统计,且查询结果中注册人数最多的前三条记录输出至临时表tmp。练习7已知在sjk数据库的学生(xs)表中含有学号(xh)、姓名(xm)、性别(xb)等字段。按如下要求修改查询:基于xs表查询姓名中包含的汉字字数不同的男女生人数。要求输出字段为:姓名字节数(显示为2或3或4,假设汉字均为GBK字符)、xb、人数,查询结果按字数降序排序,相同时按性别排序,且查询结果直接输出至屏幕(即VFP主窗口)。提示:利用STRTRAN(xx,SPACE(1),SPACE(0)函数可删除字符串xx中的所有空格字符。练习8已知sjk数据库的学生(XS)表中包含学号(xh)、姓名(xm)、性别(xb)、班级编号(bjbh)等字段;成绩(CJ)表中包含有学号(xh)、课程代号(kcdh)、成绩(cj)等字段。按如下要求修改查询:基于XS表和CJ表查询所有获奖学金的同学名单及奖学金的等级。要求输出的字段为xh、xm、选课门数、奖学金等级(字段的内容为“A”或“B”),输出的结果按奖学金等级排序,相同时再按学号升序排序。注:奖学金等级分为A和B两个等级,A等奖学金的条件是各课程的平均分不低于85,B等奖学金是各课程的平均分不低于75,并且要求获A等、B等奖学金获得者应各课程均无不及格记录(小于60)、选课门数不少于2。三、设计菜单(5分)练习1项目TEST中已存在菜单menu,利用菜单设计器按如下要求修改菜单:1.如图所示,增加“教师管理”菜单栏及其子菜单“教师档案”和“任课情况”(包含访问键和快捷键的设置);2.为“教师管理”菜单中的“任课情况”菜单项设置SQL命令,功能为根据js表和rk表查询任课教师名单;(注:该SQL命令为“SELECT DISTINCT js.* FROM ON”形式)3.在“系统管理”菜单栏的子菜单中增加VFP系统菜单项“退出”。练习2项目TEST中已存在菜单menu,利用菜单设计器按如下要求修改菜单:1.如图所示,增加“教师管理”菜单栏及其子菜单(包含访问键和快捷键的设置);2.为“导出”菜单设置过程,功能为:首先打开js表,然后将js表数据复制为Excel文件js.xls并保存在C:中,最后再将js表关闭;3.在“导出”菜单设置说明信息:“导出为Excel文件,并保存在C:中。”(即选择该菜单时,在系统的状态栏中显示该信息)。练习3项目TEST中已存在菜单menu,利用菜单设计器按如下要求修改菜单:1.如图所示增加“学生管理”菜单栏及其子菜单(包含分组线、访问键和快捷键的设置);2.将“帮助”菜单项设置为:若当前目录中不存在help.htm文件,则该菜单栏不可用(即跳过);(注:使用FILE()函数)3.为“打印”菜单项设置命令:预览报表文件rcj。练习4项目TEST中已存在菜单menu,利用菜单设计器按如下要求修改菜单:1.如图所示,为“帮助”菜单栏增加子菜单(包含分组线、访问键和快捷键的设置);2.为“版权信息”菜单项设置命令,要求利用MES-SAGEBOX()函数显示信息“2006年第一版”;3.在“系统管理”菜单栏的子菜单中增加VFP系统菜单项“退出”。练习5项目TEST中已存在菜单menu,利用菜单设计器按如下要求修改菜单:1.如图所示,增加“数据打印”菜单栏及其子菜单(包含分组线、访问键和快捷键的设置);2.为“帮助”菜单栏设置命令:利用MESSAGEBOX()函数显示信息“请与XXX联系!”;3.对菜单进行设置,使得该菜单运行时追加在VFP系统菜单之后。练习6项目TEST中已存在菜单menu,利用菜单设计器按如下要求修改菜单:1.如图所示,增加“课程管理”菜单栏及其子菜单(包含分组线和访问键设置);2.为“开课课程”菜单项设置说明信息:“本学期开课的课程”(即选择该菜单时,在系统的状态栏中显示该信息);3.为“开课课程”菜单项设置SQL命令:根据rk表和kc表查询开课课程的课程代号(kcdh)和课程名称(kcm),且不显示重复记录。练习7项目TEST中已存在菜单menu,利用菜单设计器按如下要求修改菜单:1.如图所示,增加“图书管理”菜单栏及其子菜单(包含分组线、访问键和快捷键的设置);2.将“打印”菜单项设置为不可用(即跳过);3.为“根据类型”菜单项设置SQL命令:基于ts表查询计算机类图书,要求显示分类号(flh)、书名(sm)和册数(cs)。(注:计算机类图书的分类号以“TP”开头。)练习8项目TEST中已存在菜单menu,利用菜单设计器按如下要求修改菜单:1.如图所示,为“帮助”菜单栏增加菜单项及其子菜单(包含分组线、访问键和快捷键的设置);2.将“系统管理”菜单设置为不可用(即跳过);3.为“电话联系”菜单项设置命令,利用MESSAGEBOX()函数显示信息“联系电话。四、设计表单(10分)练习1项目管理器中已经存在表单Formi,该表单用来显示学生(xs)表的基本信息。按下列要求修改表单: 1.编辑框中数据为只读,但能获得焦点;2.设置编辑框的ControlSource属性,使它能显示学生的简历(jl)字段的内容;3.将组合框设置为下拉列表框; 4.已知学生(xs)表已经按xh字段建立了主索引,索引名为xsxh,在数据环境中设置xs的默认排序方式为按xh排序;5.编制表格Grid1的AfterRowColChange事件代码,使编辑框能立即显示Grid1中指定行的学生的简历;6.在组合框的InterActiveChange事件代码中编写一条语句,使得当改变字体时表单上所有对象的字体跟着改变。完成上述修改以后运行表单,屏幕显示如图所示:练习2项目管理器中已经存在表单Formj,该表单用来形成一个指定的日期区间。根据下列要求修改表单: 1.将第一个日期的初值设置为当前年份的1月1号;2.将第二个日期的初值设置为当前日期;3.在两个日期的中间添加一个标签,标题为“至”; 4.设置“确定”按钮的Default属性,使它在表单运行时,能在任何时刻通过按回车键触发“确定”按钮的Click事件代码;5.完善“确定”按钮的Click事件代码,当单击该按钮时,形成一个合法的日期区间,即日期下限和日期上限都是合法的日期,且日期下限小于或等于日期上限。如果日期区间非法,则在系统提示窗口给出提示“不合法”,同时将焦点定位在第一个日期的年份上重新输入,否则在系统提示窗口提示“合法的日期的区间”完成上述修改以后运行表单,屏幕显示如图所示:练习3项目管理器中已经存在表单Formk,该表单用来形成一个指定的查找条件。根据下列要求修改表单,完成以后运行表单,屏幕显示如图所示。1.将表单为运行时自动居中,且边框为固定对话框;2.已知组合框Cbo1的RowSource属性为学生(xs)表,设置RowSourceType属性,使组合框显示的内容是xs表的字段名列表;3.修改组合框Cbo3的有关属性,使它同时具有文本框和列表框的功能; 4.设置“确定”按钮的Default属性,使它在表单运行时,能通过按回车键触发“确定”按钮的Click事件代码;5.已知组合框Cbo3的RowSourceType属性为“3-SQL语句”。完善组合框Cbo1的InterActiveChange事件代码,使得当从组合框Cbo1中选择一个查询关键字时,组合框Cbo3中显示与该查询关键字对应的字段值。如查询关键字选择为xh(学号),则Cbo3中显示xs表中所有的xh字段的值,如果选择xm(姓名),则Cbo3中显示所有的xm字段的值(注:在原代码的后面增加一行代码)。6. 完善“确定”按钮的Click事件代码,当单击按钮时,能按选定的条件对xs表进行查询(提示:完善原代码中的LOCATE命令)。练习4项目管理器中已经存在表单Forml,该表单用来形成一个指定的过滤条件。根据下列要求修改表单:1.将表单设置为模式表单;2.设置表单的标题为“过滤条件”,图标为A盘根目录下的net.ico;3.已知学生(xs)表已添加在数据环境中,根据组合框Cbo1的RowSourceType属性,设置它的RowSource属性,使组合框显示的内容是xs表的结构; 4.为“确定”按钮设置访问键“O”;5.完善组合框Cbo1的InterActiveChange事件代码,使得当从组合框Cbo1中选择一个过滤关键字时,组合框Cbo3中显示与该关键字对应的字段值,要求Cbo3列表框中无相同的项(已知组合框Cbo3的RowSourceType属性为“3-SQL语句”)。如过滤关键字选择为xh(学号),则Cbo3中显示xs表中所有的xh字段的值,如果选择xh(学号),则Cbo3中显示所有的xh字段的值,如果选择xb(性别),则Cbo3中显示的值为“男”或“女”两个值(提示:在原代码的空行处增加一行代码)。6.完善“确定”按钮的Click事件代码,当单击按钮时,能按选定的条件对xs表进行过滤(提示:在原代码的空行处增加一行代码,实现按指定过滤条件功能)。完成上述修改以后运行表单,屏幕显示如图所示。练习5项目管理器中已经存在表单Formm,该表单用来查看指定表的内容。根据下列要求修改表单: 1.表单的边框为单线边框;2.将Page3删除,Page1的标题改为“查看参数设置”、背景色设置为默认颜色、Page2上表格中的数据只读且能获得焦点;3.完善Page2的Activate事件代码,使它能根据Page1上的参数设置来查看相关表的内容。即如果Page1上设置查看表为学生(xs)表,则Page2显示xs表的所有内容;如果Page1上设置查看表为成绩(cj)表,查看方式为“总分”,则Page2上显示cj表中每一个学生的xh和总分;如果Page1上设置查看表为cj表,查看方式为“平均分”,则Page2上显示cj表中每一个学生的xh和平均分;如果Page1上设置查看表为cj表,查看方式为“明细成绩”,则Page2上显示cj表中所有记录。(注:在原代码的3个空行处分别添加1行代码;Page2上的表格Grid1的RecordSourceType属性已设置为“4-SQL说明”;cj表含有学号(xh)、课程代号(kcdh)、成绩(cj)字段)。完成上述修改以后运行表单,屏幕显示如图所示。练习6项目管理器中已经存在表单Formn,该表单用来查看指定表的内容。根据下列要求修改表单: 1.将表单的标题设置为“信息查询”,并将其设置为固定对话框、运行时自动居中;2. Page1设置为表单运行时默认激活页,Page1上的组合框Cbo1设置为下拉列表框;3.已知Cbo1的RowSourceType属性为“1-值”,设置Cbo1的RowSource属性,使它能从学生(xs)表和成绩(cj)表中选择一个表。完善Page2的Activate事件代码,使它具有下列功能:(1)若Page1上没有设置查看表,即Cbo1的值为空,则将第一页设置为激活页;(2)Page2的标题随Page1上的查看表的选择发生变化,即如果Page1上设置查看表为学生(xs)表,则Page2的标题为“学生表内容”;如果Page1上设置查看表为cj表,则Page2的标题为“成绩表内容”。(提示:Page2上的表格Grid1的RecordSourceType属性已设置为“4-SQL说明”。在原代码的第一个空行处增加一个条件;在第二和第三个空行处分别增加一行命令来改变Page2的标题;在原代码的最后增加一行,来设置Page2上表格Grid1的RecordSource属性)。完成上述修改以后运行表单,屏幕显示如图所示。练习7项目管理器中已经存在表单Formo,该表单用来录入教师的工资信息。根据下列要求修改表单,完成以后运行表单,屏幕显示如图所示。1.表单不能最大化;2.表格中实发工资列为只读,表格的表格线为RGB(192,192,192);3.命令按钮组无边框,并为命令按钮组的“新增”和“退出”按钮分别设置访问键“A”和“C”; 4.为表格中的基本工资、岗位工资、扣除列中的文本框对象分别编写LostFocus事件代码,要求利用REPLACE命令计算实发工资: 实发工资(sfgz)=基本工资(jbgz)+岗位工资(gwjt)扣除(kc);5.为命令按钮组增加一个“删除”按钮,热键为“D”,并为它编制Click事件代码,当单击该按钮时,给表中的当前记录打上删除标志。练习8项目管理器中已经存在表单Formp,该表单用来录入教师的工资信息。根据下列要求修改表单: 1.表单不能最大化和最小化;2.表格显示删除标志,实发工资列的背景色为RGB(192,192,192)且数据只读;3.已知A盘根目录下存在一教师工作表(jsgzb.dbf)。为表单增加一个新方法CALC,并为其编制方法代码,其功能是利用REPLACE命令计算实发工资:实发工资(sfgz)=基本工资(jbgz)+岗位工资(gwjt)扣除(kc);4.为表格中的基本工资、岗位工资、扣除列中的文本框对象分别编写LostFocus事件代码,要求当这三列中的数据有改变时,调用表单的CALC方法,使实发工资列的数据作相应的改变。完成上述修改以后运行表单,屏幕显示如图所示。五、程序改错(5分)练习1:按如下规则定义32进制数:用“0,1,2,9,A,B,C,U,V”32个符号表示031这32个十进制数,其运算规则是“逢32进1”。例如:32进制数“A8T”对应的十进制数的运算过程为:(A8T)32A*322+8*321+T*320=10*1024+256+29*1=(10525)10下面程序的功能是将一个32进制数的数字字符串转换为十进制数形式。要求:将下列程序输入到项目中的程序文件PCODE中,并对其中的2条错误语句进行修改;在修改程序时,不允许修改程序的总体框架和算法,不允许增加或减少语句数目。Num32=A8TNum10=0FOR i= LEN(Num32)-1 TO 0 STEP-1 c=SUBSTR(Num32, LEN(Num32)-i,1) IF ISDIGIT(c) & ISDIGIT()函数用于判断字符串首字符是否为数字 d=VAL(c) ELSE IF BETWEEN(UPPER(c),A,V)d=VAL(UPPER(c)-55ELSE=MESSAGEBOX(“非法的32进制数!”,16) RETURNENDIF ENDIF Num10=Num10+d*32*iENDFOR=MESSAGEBOX(32进制数:+Num32+的十进制是:+STR(Num10),64)练习2:下列程序可用来验证一个身份证号的出生日期部分是否有效,验证的条件是:(1)宽度只能是15位(第一代身份证)或18位(第二代身份证);(2)如果是15位,则从第7位开始的6位子串必须是一个合法的日期;(3)如果是18位,则从第7位开始的8位子串必须是一个合法的日期;程序中的过程CheckCID用来对输入的身份证(参数pCID)按上述条件进行验证,如果满足上述条件,则显示“合法!”。否则显示相应的错误信息。程序中所调用的函数DateValid()已包含在sjk数据库的存储过程中,功能是检查一个6位或8位紧缩日期字符串是否为有效的日期字符串。例如,DateValid(“19841012”)返回.T.,DateValid(“19841035”)返回.F.。要求:将下列程序输入到项目中的程序文件PCODE中,并对其中的2条错误语句进行修改;在修改程序时,不允许修改程序的总体框架和算法,不允许增加或减少语句数目。OPEN DATABASE sjkDO CheckCIDPROCEDURE CheckCID PARAMETERS pCID iLength=LEN(pCID) IF iLength=15 AND iLength=18 strBirthday=SUBS(pCID,7,IIF(iLength=15,6,8) IF DateValid(strBirthday)strMsg=合法!ELSEstrMsg =出生日期部分无效!ENDIF ELSE strMsg=长度不合要求! ENDIF WAIT WINDOWS strMsgENDPROC练习3:我国18位公民身份证号码是特征组合码,由前17位数字本体码和最后1位校验码组成。本体码排列顺序从左至右依次为:6位数字地址码,8位数字出生日期码,3位数字顺序码。校验码是根据17位本体码计算得到的,在sjk数据库的存储过程中已包含计算校验码的CidVerifyCode()函数。下列程序的功能是对给定的一个身份证号,计算校验码并与最后一位比较,然后显示该身份证号是否合法的提示信息。要求:将下列程序输入到项目中的程序文件PCODE中,并对其中的2条错误语句进行修改;在修改程序时,不允许修改程序的总体框架和算法,不允许增加或减少语句数目。OPEN DATABASE sjksfzhF LEN(sfzh)=”18” BaseCode=LEFT(sfzh,17) VerifyCode=SUBSTR(sfzh,1,18) IF CidVerifyCode(BaseCode)=VerifyCodestrMsg=sfzh+合法!ELSEstrMsg =sfzh+非法!ENDIFWAIT WINDOW strMsgELSE MESSAGEBOX(“长度不合法!”)ENDIF练习4:我国18位公民身份证号码是特征组合码,由前17位数字本体码和最后1位校验码组成。本体码排列顺序从左至右依次为:6位数字地址码,8位数字出生日期码,3位数字顺序码。校验码是根据17位本体码计算得到的,在sjk数据库的存储过程中已包含计算校验码的CidVerifyCode()函数。下列程序的功能是对给定的一个身份证号,计算校验码并与最后一位比较,显示是否合法的提示信息。要求:将下列程序输入到项目中的程序文件PCODE中,并对其中的2条错误语句进行修改;在修改程序时,不允许修改程序的总体框架和算法,不允许增加或减少语句数目。OPEN DATABASE sjkLOCAL CID,StrBTM,CharJYM,strMsgCID&身份证号IF LEN(CID)18 MESSAGEBOX(身份证长度不合法!) RETURN ENDIF StrBTM= RIGHT (CID,17) CharJYM=RIGHT(CID,1)IF CidVerifyCode(StrBTM)= CharJYMstrMsg=CID+合法!ELSEstrMsg =CID+非法!ENDIFWAIT WINDOW strMsg练习5:下面程序的功能是统计一段英文字符串中所出现的每个字母(不统计空格和标点符号,大小写字母视为相同)及其在字符串中的出现位置,并将统计结果放在临时表tj中。例如,对于字符串”I love Visual FoxPro!”,统计结果如右图所示。要求:将下列程序输入到项目中的程序文件PCODE中,并对其中的2条错误语句进行修改;在修改程序时,不允许修改程序的总体框架和算法,不允许增加或减少语句数目。cStr=”I love Visual FoxPro!”CREATE CURSOR tj(Alpha c(1),pos c(30)FOR i=1 TO LEN(cStr) ch=UPPER(SUBS(cStr,i,1) LOCATE FOR tj.Alpha=ch WHILE FOUND() UPDATE tj SET pos=pos-,-ALLT(STR(i) WHERE Alpha=ch ELSE INSERT INTO tj VALUES(ch,i) ENDIFENDFORBROWSEUSE练习6:在sjk数据库的存储过程中已包含一个Bin4ToHex()函数,其功能是将4位或4位以下的二进制字符串转换为1位十六进制字符。例如Bin4ToHex(“1011”)返回值为“B”,Bin4ToHex(“10”)返回值为“2”。下列程序的功能是将一个任意长度的二进制数字字符串转换为十六进制数形式。方法是将二进制数从低位

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论