数据库应用系统开发_第1页
数据库应用系统开发_第2页
数据库应用系统开发_第3页
数据库应用系统开发_第4页
数据库应用系统开发_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

第9章数据库应用系统开发本章将介绍开发数据库应用系统的基本步骤,然后以一个比较简单的学生管理系统为例,较为详细地介绍设计一个VisualFoxPro应用系统的开发过程,通过对数据库系统的开发实践来达到对所学知识的综合应用。9.1数据库应用系统开发步骤一个完整的数据库应用系统的设计开发应该包括两个方面:一是结构设计,即设计数据库框架和数据库结构;二是行为设计,即设计具体的应用程序。为了完成上述的设计目标,需要规范的设计方法和步骤。一般来说,数据库应用系统的开发包括以下几个步骤:需求分析、数据库设计、应用程序设计、软件测试、应用程序发布以及系统的运行和维护。9.1.1需求分析数据库应用系统的开发从系统的需求分析开始,它是整个开发过程的起点和基础。需求分析的目标是明确用户的具体要求,包括应用系统的功能结构、信息要求、处理要求、安全性与完整性的要求等具体的指标,并以需求分析报告的形式表达出来。一般来说,需求分析需要从以下两个方面着手:数据分析和功能分析。数据分析是指通过合适的数据模型来描述系统所要处理的各种对象,建立关于对象的概念模型,再将概念模型转换为关系数据模型。功能分析是指确定系统边界,了解系统功能,确定哪些功能由计算机完成,哪些活动由人工完成。由计算机完成的功能就是系统应该实现的功能。进行需求分析时应该注意以下一些问题:首先,需求分析必须建立在调查研究的基础上,包括访问用户,了解人工系统模型,采集相关资料等。为确保调查的客观性和正确性,系统调查工作应该严格按照自顶向下的系统化观点全面展开,逐层分析和了解。其次,在需求分析阶段就要建立基于用户需求的观念,主动和用户进行沟通,了解他们的需求和偏好,在系统实施的过程中也要及时接受用户的反馈信息,对系统进行适当的修正。9.1.2数据库设计数据库设计的任务主要包括概念结构的设计、逻辑结构的设计和物理结构设计。数据库的概念结构是现实世界与机器世界的中介,它一方面能够充分地反映现实世界,包括实体和实体之间的联系,同时又易于向关系数据模型转换。在概念结构设计阶段,设计人员通过对现实世界的抽象,对实际的人、物、事和概念进行人为处理,抽取人们关心的共同特性,并把这些特性用各种概念精确地加以描述,从而形成一个具体的独立于数据库管理系统的概念模型。数据库的逻辑结构设计是指将概念模型转化为关系数据库模型,根据系统分析的结果来确定该数据库中需要存储哪些信息,以及如何利用字段来合理地表示这些信息,从而定义出数据库中每个表所需的字段和数据类型。并在此基础上对数据进行优化,排除数据冗余,弥补数据漏洞,完善数据结构。最后完成数据库的逻辑结构设计,设计表的结构、字段约束关系、字段间的约束关系、表间的关系及索引等。数据库的物理结构设计是为逻辑数据模型选取一个最适合应用环境的包括存储结构和存储方法的物理结构。由于数据库的物理结构依赖于所选的数据库管理系统,也依赖于计算机硬件环境,设计时主要考虑以下几方面内容:确定数据的存储结构,需要综合考虑存储时间、存储空间利用率和维护代价3方面的因素;设计数据的存取路径,如如何建立索引,建立单索引还是复合索引;确定数据的存储位置,对不同数据的存放进行适当的安排;最后的工作是确定系统配置。9.1.3应用程序设计在实际的应用系统开发中,应用程序设计和数据库设计两方面的需求是相互制约的。具体地说,应用程序设计受到数据库当前结构的约束,而设计数据库时也必须考虑应用程序设计实现的需要。数据库系统的应用程序设计包括以下内容。(1)用户界面设计第9章数据库应用系统开发VisualFoxPro数据库及其应用界面是用户和系统的输入/输出接口,界面设计用于控制数据的输入/输出,它包括欢迎界面、登录表单、数据输入表单、系统菜单等用户界面的设计。(2)功能模块设计完成具体的数据处理工作,一般按照数据的输入、修改、编辑、查询与统计、报表输出等功能模块划分,并通过控件的事件代码来实现。(3)控件属性设计通过对控件属性的设计完成系统的特定功能,包括表单集、表单和表单中各种控件的属性设置,通过属性设置来改变窗体或控件运行时的功能和外观。(4)主程序设计设置应用程序系统运行环境和程序起始点,显示初始的用户界面,控制事件的循环,组织主程序文件。具体的内容将通过后面的案例来说明。(5)调试程序应用程序编写完成之后,要对它进行编译和运行,以发现程序中的语法错误,反复修改,直至程序完善为止。9.1.4软件测试应用程序设计完成之后,应对软件进行测试,以检验系统各个组成部分的正确性,验证软件的运行是否符合系统的设计要求。测试又可以分为模块测试和综合测试。一般来说,模块测试在编码阶段就同时进行了,主要检查模块的功能结构方面的问题。在测试阶段主要进行综合测试,也就是将各模块组件组装起来,按系统设计的要求,逐项进行测试,检验系统是否满足实际的功能要求。9.1.5应用程序发布软件测试完毕后,就可以发布应用程序了,在VisualFoxPro中发布工作主要包括以下几个方面的内容。①备份源程序代码:在制作安装盘之前,应当备份应用系统的所有源程序代码,以备将来使用。②创建发布树目录:发布树目录用于存放整个应用系统所需的全部文件,目录中的文件和子目录将被压缩到磁盘镜像文件中,并通过安装程序安装到用户机器上。创建发布树目录可按如下步骤进行。创建目录,目录名为应用程序安装在用户机器上出现的名称。把发布目录分成适合于应用程序的子目录。把应用程序项目中的文件复制到相应目录中,应用程序(.exe)必须放到该树的根目录下。③创建发布盘:创建发布盘时,通过安装向导压缩发布目录树中的文件,并把这些压缩过的文件复制到磁盘映射目录,每个磁盘放置在一个独立的子目录中。创建了应用程序磁盘映射之后,就把每个磁盘映射目录的内容复制到一张独立的磁盘上。在发布盘生成后,运行“Setup.exe”程序,就可以在用户机器上安装应用程序的所有文件了。9.1.6系统运行和维护在系统正式投入使用后,就进入了系统运行和维护阶段。事实证明,系统运行和维护的工作更加繁多和琐碎,也牵涉到更多的人力和物力。系统运行的主要内容有:日常的例行工作,它包括数据的录入、存储、更新、复制及统计分析、报表生成等数据处理工作;临时性的信息服务,如临时性的信息检索和报表生成;运行情况的记录,如工作量记录、工作效率记录、系统维护情况记录和系统故障记录。系统维护的主要内容有:硬件维护,包括定期的预防性维护和突发性故障维护;软件维护,主要是对程序的维护,它是系统维护中最重要的、工作量最大和耗时最多的一项维护;数据维护,主要是指数据有较大的变化时,安装或转换新的数据库文件,或在数据库容量太大而出现数据溢出时采取重写文件的工作。9.2数据库应用系统开发实例开发一个数据库应用系统,应该首先进行需求分析,绘出系统的功能结构图,根据功能结构进行数据库设计和应用程序设计。下面较为详细地介绍一个比较简单的学生管理系统的开发过程,旨在抛砖引玉,希望有兴趣的读者可以在此基础上,开发出功能更加完善的信息管理系统。9.2.1学生管理系统需求分析为了尽可能完善学生管理系统的各项功能,必须进行系统的功能分析,绘出系统的功能结构图。1.系统功能分析本系统主要用于学生的信息管理,它包括学生的基本信息、成绩信息、课程信息等。系统的主要任务是用计算机对上述信息进行日常管理,如数据录入、维护、查询,报表输出等。这里为了简便起见,省略班级和系别信息,以及学生选课的功能。从学生管理角度考虑,学生管理系统应包括以下几个主要功能。①系统登录动能:要求系统登录时有密码管理功能,用户要输入正确的用户名和密码才能进入系统。②数据录入功能:系统要具有学生成绩信息、学生基本信息等录入功能。③数据维护功能:系统要能够对学生的各种信息进行数据维护,主要是维护学生、课程和成绩等方面的基本信息,包括增加、删除、修改等功能。④数据查询功能:系统要具有学生班级信息、学生基本信息等查询功能。⑤报表打印:实现各种所需报表的预览和打印功能,这里主要包括学生基本信息和成绩信息的打印功能。⑥退出:用来实现退出本管理系统。2.系统功能图由前面的分析我们得到系统功能图如图91所示。学生管理系统包括4个主要功能:数据录入功能,含有学生基本信息的录入和成绩信息的录入;数据维护功能,含有学生基本信息的维护和成绩信息的维护;数据查询功能,含有学生基本信息的查询、成绩信息的查询以及课程信息的查询;数据输出功能,含有学生基本信息的输出和成绩信息的输出。图91学生管理系统功能结构图9.2.2数据库设计数据库设计主要涉及3方面的内容:系统的数据对象分析、数据库的逻辑结构设计和项目文件的建立。1.系统的数据对象分析从系统功能分析可以看出,用户的需求具体体现在学生管理的各种信息的提供、保存、查询和输出上,这就要求系统的数据结构能充分表示学生管理的各种信息。通过系统需求分析,总结出系统的数据对象应包含如下的信息。①用户信息:包含用户名和密码。②学生信息:包含学号、姓名、性别、出生日期、奖学金、籍贯、简历等,其中“学号”字段唯一。③课程信息:包含课程号、课程名、学时数和学分,其中“课程号”字段唯一。④成绩信息:包含学号、课程号和成绩。2.数据库的逻辑结构设计由于系统的概念结构相对简单,因此可以直接开始数据库的逻辑结构设计。采用VisualFoxPro开发,系统中使用的各个数据表的字段设计如表91~表94所示。表91管理员表(pass.dbf)字段字段名类型宽度小数位索引注释1用户名字符型10普通索引2密码字符型10

表92学生基本信息表(学生表.dbf)字段字段名类型宽度小数位索引注释1学号字符型12主索引2姓名字符型83性别字符型2男,女4出生日期日期型85奖学金数值型46籍贯字符型167简历备注型4表93课程信息表(课程表.dbf)字段字段名类型宽度小数位索引注释1课程号字符型8主索引数字2课程名字符型203学时数数值型34学分数值型4表94成绩信息表(成绩.dbf)字段字段名类型宽度小数位索引注释1学号字符型12普通索引数字2课程号字符型4普通索引数字3成绩数值型53.项目文件的建立为了便于管理该系统中的各种文件,需要建立一个学生信息管理的项目文件,另外再建立一个“D:\学生管理”文件夹来存储该项目生成的所有文件,今后系统的详细设计也均在该项目下进行操作。9.2.3应用程序设计图92“登录”表单本节介绍各表功能模块的详细设计。1.系统登录表单本系统一般供管理人员使用。系统涉及学生信息、成绩信息和课程信息等,这些信息不能受到随意的修改,因此,系统设置登录表单,要求用户输入正确的用户名和密码。为了方便使用,系统自动将管理员表中已有的用户名添加到列表框Combo1中,由用户选择。(1)登录表单的设计“登录”表单如图92所示,共有7个控件对象,其中包括3个标签控件、1个组合框控件(利用生成器将“pass.dbf”中的“用户名”字段设为组合框的数据源)、1个文本框控件和2个命令按钮控件。表单及控件的属性如表95所示。表95“登录”表单中各控件及其属性值控件名称属性属性值Form1Caption登录Height250Width375ShowWindow1在顶层表单中Label1Caption学生管理系统ForeColor0,0,255(蓝色)FontName楷体_GB2312FontSize20Label2BackStyle0透明Caption用户名FontName宋体FontSize16Label3Caption密码其他同Label2Command1Caption确定Command2Caption取消Combo1RowSourceType6字段Text1全部属性默认值(2)事件代码的编写①“确定”按钮的Click事件代码:SETDEFAULTTOD:\学生管理OPENDATABASE学生数据USELOCATEFORALLTRIM(密码)=ALLTRIM(THISFORM.TEXT1.VALUE);AND用户名=THISFORM.COMBO1.VALUE&&查找用户名和密码均符合的记录IFNOTEOF()THISFORM.RELEASEDOFORMMAINFORM.SCXELSE?MESSAGEBOX(″密码错误,请重新输入!″,0+48+0+0,″确定″)THISFORM.REFRESHENDIF②“取消”按钮的Click事件代码:QUIT2.学生信息输入表单“学生信息输入”表单界面如图93所示,具体设计和操作步骤如下。图93“学生信息输入”表单(1)创建表单界面①打开表单设计器,生成一空白表单。②打开数据环境设计器,将“学生表”添加到其中。③将“学生表”中的全部字段分别拖放到表单上,并调整其位置和大小。④在表单上添加1个标签控件和5个命令按钮控件,并调整其位置和大小。(2)设置对象属性该表单所用的部分对象及其属性值如表96所示。表96“学生信息输入”表单中各控件及其属性值控件名称属性属性值Form1AutoCenter.T.Caption学生信息输入Label1Caption学生信息输入ForeColor0,0,255(蓝色)FontName楷体_GB2312FontSize20Command1Caption上一个Command2Caption下一个Command3Caption添加Command4Caption放弃Command5Caption返回(3)事件代码的编写5个命令按钮的Click事件代码分别如下。①“上一个”命令按钮的Click事件代码:SKIP-1IFBOF()MESSAGEBOX(″已是第一条记录″,48,″信息窗口″)THISFORM.COMMAND1.ENABLED=.F.SKIPELSETHISFORM.COMMAND1.ENABLED=.T.ENDIFTHISFORM.COMMAND1.ENABLED=.T.THISFORM.REFRESH②“下一个”命令按钮的Click事件代码:SKIPIFEOF()MESSAGEBOX(″已是最后一条记录″,48,″信息窗口″)THISFORM.COMMAND2.ENABLED=.F.SKIP-1ELSETHISFORM.COMMAND2.ENABLED=.T.ENDIFTHISFORM.COMMAND2.ENABLED=.T.THISFORM.REFRESH③“添加”命令按钮的Click事件代码:APPENDBLANKGOBOTTTHISFORM.REFRESH④“放弃”命令按钮的Click事件代码:BX=MESSAGEBOX(″放弃添加?″,4+32+0+0,″确认!″)IFBX=6GOBOTTDELETEPACKTHISFORM.REFRESHENDIF⑤“返回”命令按钮的Click事件代码:THISFORM.RELEASE3.成绩输入表单“成绩输入”表单界面如图94所示,具体设计和操作步骤如下。

图94“成绩输入”表单(1)创建表单界面①打开表单设计器,生成一空白表单。②打开数据环境设计器,将“成绩表”添加到其中。③将“成绩表”中的全部字段分别拖放到表单上,并调整其位置和大小。④在表单上添加1个标签控件和5个命令按钮控件,并调整其位置和大小。(2)设置对象属性该表单所用的部分对象及其属性值如表97所示。表97“成绩输入”表单中各控件及其属性值控件名称属性属性值Form1AutoCenter.T.Caption成绩输入Label1Caption成绩信息输入ForeColor0,0,255(蓝色)FontName楷体_GB2312FontSize20Command1Caption上一个Command2Caption下一个Command3Caption添加Command4Caption放弃Command5Caption返回(3)事件代码的编写5个命令按钮的Click事件代码分别如下。①“上一个”命令按钮的Click事件代码:SKIP-1IFBOF()MESSAGEBOX(″已是第一条记录″,48,″信息窗口″)THISFORM.COMMAND1.ENABLED=.F.SKIPELSETHISFORM.COMMAND1.ENABLED=.T.ENDIFTHISFORM.COMMAND1.ENABLED=.T.THISFORM.REFRESH②“下一个”命令按钮的Click事件代码:SKIPIFEOF()MESSAGEBOX(″已是最后一条记录″,48,″信息窗口″)THISFORM.COMMAND2.ENABLED=.F.SKIP-1ELSETHISFORM.COMMAND2.ENABLED=.T.ENDIFTHISFORM.COMMAND2.ENABLED=.T.THISFORM.REFRESH③“添加”命令按钮的Click事件代码:APPENDBLANKGOBOTTTHISFORM.REFRESH④“放弃”命令按钮的Click事件代码:CX=MESSAGEBOX(″放弃添加?″,4+32+0+0,″确认!″)IFCX=6GOBOTTDELETEPACKTHISFORM.REFRESHENDIF⑤“返回”命令按钮的Click事件代码:THISFORM.RELEASE4.学生信息维护表单“学生信息维护”表单主要用来对“学生表”中的数据进行修改和删除。当表单启动后系统自动将所有学生的学号添加到列表框Combo1中,由用户选择,当选择其中一个学号时,表单上相应地显示出该同学的具体信息。“学生信息维护”表单界面如图95所示,具体设计和操作步骤如下。图95“学生信息维护”表单

(1)创建表单界面①打开表单设计器,生成一空白表单。②打开数据环境设计器,将“学生表”添加到其中。③将“学生表”中的全部字段分别拖放到表单上,并调整其位置和大小,同时将所有文本框的ReadOnly属性设置为“.T.”。④在表单上添加2个标签控件、5个命令按钮控件和1个组合框控件(利用生成器将“学生表.dbf”中的“学号”字段设为组合框的数据源),并调整其位置和大小。(2)设置对象属性该表单所用的部分对象及其属性值如表98所示。表98“学生信息维护”表单中各控件及其属性值控件名称属性属性值Form1AutoCenter.T.Caption学生信息维护Label1Caption学生信息维护ForeColor0,0,255(蓝色)FontName楷体_GB2312FontSize20Label2Caption请选择学号Command1Caption上一个Command2Caption下一个Command3Caption修改Command4Caption删除Command5Caption返回Combo1RowSourceType6字段RowSource学生表.学号

(3)事件代码的编写5个命令按钮和1个组合框的Click事件代码分别如下。①“上一个”命令按钮的Click事件代码:SKIP-1IFBOF()MESSAGEBOX(″已是第一条记录″,48,″信息窗口″)THISFORM.COMMAND1.ENABLED=.F.SKIPELSETHISFORM.COMMAND1.ENABLED=.T.ENDIFTHISFORM.COMMAND1.ENABLED=.T.THISFORM.REFRESHTHISFORM.COMBO1.VALUE=学号②“下一个”命令按钮的Click事件代码:SKIPIFEOF()MESSAGEBOX(″已是最后一条记录″,48,″信息窗口″)THISFORM.COMMAND2.ENABLED=.F.SKIP-1ELSETHISFORM.COMMAND2.ENABLED=.T.ENDIFTHISFORM.COMMAND2.ENABLED=.T.THISFORM.REFRESHTHISFORM.COMBO1.VALUE=学号③“修改”命令按钮的Click事件代码:THISFORM.TXT学号.READONLY=.F.THISFORM.TXT姓名.READONLY=.F.THISFORM.TXT籍贯.READONLY=.F.THISFORM.TXT出生日期.READONLY=.F.THISFORM.TXT奖学金.READONLY=.F.THISFORM.TXT性别.READONLY=.F.THISFORM.EDT简历.READONLY=.F.THISFORM.REFRESH&&当单击“修改”按钮后,所有文本框变为可读写状态④“删除”命令按钮的Click事件代码:DX=MESSAGEBOX(″确实要删除?″,4+32+0+0,″确认!″)IFDX=6DELETEPACKENDIFTHISFORM.REFRESH⑤“返回”命令按钮的Click事件代码:THISFORM.RELEASE⑥Combo1的Click事件代码:LOCATEFOR学号=THISFORM.COMBO1.VALUEIFEOF()?MESSAGEBOX(″查无此人,请重新选择!″,0+48+0+0,″确定″)ENDIFTHISFORM.REFRESH5.成绩信息维护表单“成绩信息维护”表单主要用来对“成绩表”中的数据进行修改和删除。当表单启动后系统自动将所有学生的学号添加到列表框Combo1中,同时将课程号添加到列表框Combo2中,由用户选择。当选择其中一个学号和一个课程号时,表单上相应地显示出该同学该门课程的成绩。“成绩信息维护”表单界面如图96所示,具体设计和操作步骤如下。图96“成绩信息维护”表单(1)创建表单界面①打开表单设计器,生成一空白表单。②打开数据环境设计器,将“成绩表”添加到其中。③将“成绩表”中的全部字段分别拖放到表单上,并调整其位置和大小,同时将所有文本框的ReadOnly属性设置为“.T.”。④在表单上添加3个标签控件、5个命令按钮控件和2个组合框控件(利用生成器分别将“学生表.dbf”中的“学号”字段设为Combo1的数据源,将“课程表.dbf”中的“课程号”字段设为Combo2的数据源),并调整其位置和大小。(2)设置对象属性该表单所用的部分对象及其属性值如表99所示。

表99“成绩信息维护”表单中各控件及其属性值控件名称属性属性值Form1AutoCenter.T.Caption成绩信息维护Label1Caption成绩信息维护ForeColor0,0,255(蓝色)FontName楷体_GB2312FontSize20Label2Caption请选择学号Label3Caption请选择课程号Command1Caption上一个Command2Caption下一个Command3Caption修改Command4Caption删除Command5Caption返回Combo1RowSourceType6­字段RowSource学生表.学号Combo2RowSourceType6­字段RowSource课程表.课程号(3)事件代码的编写5个命令按钮和2个组合框的Click事件代码分别如下。①“上一个”命令按钮的Click事件代码:SKIP-1IFBOF()MESSAGEBOX(″已是第一条记录″,48,″信息窗口″)THISFORM.COMMAND1.ENABLED=.F.SKIPELSETHISFORM.COMMAND1.ENABLED=.T.ENDIFTHISFORM.COMMAND1.ENABLED=.T.THISFORM.REFRESHTHISFORM.COMBO1.VALUE=学号THISFORM.COMBO2.VALUE=课程号②“下一个”命令按钮的Click事件代码:SKIPIFEOF()MESSAGEBOX(″已是最后一条记录″,48,″信息窗口″)THISFORM.COMMAND2.ENABLED=.F.SKIP-1ELSETHISFORM.COMMAND2.ENABLED=.T.ENDIFTHISFORM.COMMAND2.ENABLED=.T.THISFORM.REFRESHTHISFORM.COMBO1.VALUE=学号THISFORM.COMBO2.VALUE=课程号③“修改”命令按钮的Click事件代码:THISFORM.TXT学号.READONLY=.F.THISFORM.TXT课程号.READONLY=.F.THISFORM.TXT成绩.READONLY=.F.THISFORM.REFRESH&&当单击“修改”按钮后,所有文本框变为可读写状态④“删除”命令按钮的Click事件代码:EX=MESSAGEBOX(″确实要删除?″,4+32+0+0,″确认!″)IFEX=6DELETEPACKENDIFTHISFORM.REFRESH⑤“返回”命令按钮的Click事件代码:THISFORM.RELEASE⑥Combo1的Click事件代码:THISFORM.REFRESH⑦Combo2的Click事件代码:LOCATEFOR学号=THISFORM.COMBO1.VALUEAND课程号=THISFORM.COMBO2.VALUEIFEOF()?MESSAGEBOX(″此人该课程记录尚无,请重选!″,0+48+0+0,″确定″)ENDIFTHISFORM.REFRESH6.查询表单这里为了更好地利用表单空间,可以使用前面学到的页框控件,将一个表单分为学生信息查询、课程查询和成绩查询3页来分别进行设计。查询表单界面如图97所示,具体设计和操作步骤如下。图97“查询”表单(1)创建表单界面①打开表单设计器,生成一空白表单。②打开数据环境设计器,将“学生表”“成绩表”和“课程表”依次添加到其中,以“学生表”为父表,“成绩表”为子表,以“学号”字段为关键字建立一对多的关系。③在表单上添加1个标签控件,其Caption属性值为“查询”;添加1个命令按钮控件,其Caption属性值为“退出”,Click事件代码为“THISFORM.RELEASE”;再添加1个页框控件,将其PageCount属性设为“3”,并调整其位置和大小(2)设置学生信息查询页面①在“学生信息查询”页面(即page1)上添加1个标签控件,其Caption属性值为“请选学号”,再添加1个组合框控件(利用生成器将“学生表.dbf”中的“学号”字段设为Combo1的数据源),并调整其位置和大小,如图98所示。图98“学生信息查询”页面②在数据环境设计器中将“学生表”整体拖放到表单上,右击“学生表”,在弹出的快捷菜单中选择“编辑”命令,调整表格的列宽。③“学生信息查询”页面的事件代码的编写。Combo1的Click事件代码:THISFORM.PAGEFRAME1.PAGE1.GRID1.RECORDSOURCETYPE=4&&表格数据来源为&&SQL语句THISFORM.PAGEFRAME1.PAGE1.GRID1.RECORDSOURCE=″SELECT学号,姓名,性别,出生日期,;奖学金,籍贯,简历;FROM学生表;WHERE学号=THISFORM.PAGEFRAME1.PAGE1.COMBO1.VALUEINTOCURSORRESULT″THISFORM.REFRESH(3)设置课程查询页面①在“课程查询”页面(即page2)上添加1个标签控件,其Caption属性值为“请选课程号”,再添加1个组合框控件(利用生成器将“课程表.dbf”中的“课程号”字段设为Combo1的数据源),并调整其位置和大小,如图99所示。图99“课程查询”页面②在数据环境设计器中将“课程表”整体拖放到表单上,右击“课程表”,从弹出的快捷菜单中选择“编辑”命令,调整表格的列宽。③“课程查询”页面的事件代码的编写。Combo1的Click事件代码:THISFORM.PAGEFRAME1.PAGE2.GRID1.RECORDSOURCETYPE=4THISFORM.PAGEFRAME1.PAGE2.GRID1.RECORDSOURCE=″SELECT课程号,课程名,学时数,学分;FROM课程表;WHERE课程号=THISFORM.PAGEFRAME1.PAGE2.COMBO1.VALUEINTOCURSORRESULT″THISFORM.REFRESH(4)设置成绩查询页面①在“成绩查询”页面(即page3)上添加1个标签控件,其Caption属性值为“请选学号”,再添加1个组合框控件(利用生成器将“学生表.dbf”中的“学号”字段设为Combo1的数据源),并调整其位置和大小,如图910所示。图910“成绩查询”页面②在数据环境设计器中将“学生表”中的“姓名”和“学号”字段分别拖放到表单上,再将“成绩表”整体拖放到表单上。右击“成绩表”,从弹出的快捷菜单中选择“编辑”命令,调整表格的列宽。③“成绩查询”页面的事件代码的编写。Combo1的Click事件代码:LOCATEFOR学号=THISFORM.PAGEFRAME1.PAGE3.COMBO1.VALUEIFEOF()?MESSAGEBOX(″查无此人,请重新选择!″,0+48+0+0,″确定″)ENDIFTHISFORM.REFRESH7.报表设计用户经常需要按照指定的格式输出信息,这是建立报表时必不可少的。VisualFoxPro提供报表设计器和报表向导进行报表设计。下面以“学生信息表”报表的设计为例介绍报表设计的大致过程。(1)报表的设计步骤“学生信息表”报表的设计过程如图911所示。“学生信息表”利用了VisualFoxPro的“快速报表”功能,使报表的生成更加方便快捷。图911快速报表①在“项目管理器”中切换到“文档”选项卡,选择“报表”选项,单击“新建”按钮,新建报表。在菜单栏中选择“报表”→“快速报表”命令,弹出“打开”对话框,选择“学生表”并将其添加到报表中。②在“快速报表”窗口中按步骤设置布局。如果在新建的报表中只添加基表包含的部分字段,则应单击“快速报表”对话框中的“字段”按钮来打开“字段选择器”。选择所需的字段,将它添加到“选定字段”列表框中,在选取字段之后,单击“确定”按钮,所选字段显示在“页标头”区。③在“页标头”区将字段名拖动到需要的位置,然后再加入一个标签用于显示标题“学生通讯录”。④“细节”区一般包含来自表中的一行或多行记录。利用报表控件中的线条控件可加入线条画表格线,使报表更为美观。⑤“页注脚”区可用来指定报表页面底部的一些信息,如页码、节等。在“页注脚”区添日期函数DATE()和页码_PAGE,最终生成报表文件“学生报表.frx”,报表如图912所示。图912学生报表预览(2)报表的调用程序为了在主菜单中快速地调用报表,还需要建立过程文件“学生过程.prg”,并在该过程文件中调用“学生报表.frx”。“学生过程.prg”文件的程序语句为:*PROCEDURE学生报表REPORTFORMD:\学生管理\学生报表PREVIEWRETU9.2.4系统主菜单设计图913主菜单系统要具有良好的界面,必须进行菜单的设计,本节介绍系统主菜单的设计。1.系统主菜单的功能在通过登录界面进入本系统后,界面首先打开的是菜单系统。通过对各项菜单的选择,可分别进入系统中的不同模块。学生管理系统的主菜单如图913所示。2.系统主菜单的设计步骤创建菜单是通过菜单设计器来完成的,设计的具体操作步骤如下。①在项目管理器中切换到“其他”选项卡,选择“菜单”选项,单击“新建”按钮,在弹出的“新建菜单”对话框中单击“菜单”按钮,进入菜单设计器,在菜单设计器中分别输入菜单的各项信息。②具体的各项菜单如表910所示。表910学生信息主菜单设计菜单名称结果选项学生信息输入(数据录入菜单)命令DOFORMD:\学生管理\学生信息输入.scx成绩信息输入(数据录入菜单)命令DOFORMD:\学生管理\成绩输入.scx学生信息维护(数据维护菜单)命令DOFORMD:\学生管理\学生信息维护.scx成绩维护(数据维护菜单)命令DOFORMD:\学生管理\成绩维护.scx数据查询菜单命令DOFORMD:\学生管理\查询.scx学生信息输出(数据输出菜单)命令DOFORMD:\学生管理\学生过程.prg成绩输出(数据输出菜单)命令DOFORMD:\学生管理\成绩过程.prg退出命令QUIT③将菜单设置在顶层表单中,方法是:选择“显示”→“常规选项”命令,在弹出的“常规选项”对话框中选择“顶层表单”复选框,单击“确定”按钮。④生成菜单程序。在菜单设计器中填好菜单结构后,选择“菜单”→“生成”命令,在弹出的“生成菜单”对话框中输入要生成的菜单程序名,单击“产生”按钮即可。这样,VisualFoxPro会自动根据菜单文件(.mnx)生成菜单程序(.mpr),如果修改过菜单结构的话,需重新生成菜单程序。3.主表单的设计主表单是用户登录后首先进入的表单,在该表单中要调用系统主菜单。学生管理系统的主菜单设置在这个主表单中。主表单的属性设置如表911所示。表911主表单的属性设置控件名称属性属性值Form1Caption学生管理系统(表单标题)ShowWindow2作为顶层表单WindowState2最大化Closable.F.Init事件DOD:\学生管理\学生信息.mprWITHTHIS,.T.(在主表单中嵌入系统主菜单)9.2.5主程序设计前面设计了各种程序组件,包括数据库、表、表单、菜单和报表等,最后还要设计一个主程序,作为整个系统的入口。一般来说,建立一个简单的主程序应该考虑以下几方面的内容。①初始化环境,设置应用程序所需的环境,可从当前系统环境中截取命令,然后进行修改;初始化变量;建立数据文件的默认路径;打开所需要的数据库和表文件等。②调用一个菜单或表单来建立初始的用户界面。③执行READEVENTS命令来建立事件循环。④从一个菜单或命令按钮中执行CLEAREVENTS命令。⑤应用程序退出时,恢复环境。在学生管理系统中主程序文件“主文件.prg”的程序语句如下:SETTALKOFFCLEARALLSETDEFAULTTOD:\学生管理&&设置当前目录DOFORM登录.scxREADEVENTS&&启动事件循环QUIT&&退出整个系统9.2.6连编与运行应用程序数据库及其组件建立完毕后,需要通过项目管理器将他们组合起来进行联合调试和编译,这个过程称为应用程序的连编。1.用项目管理器组织应用程序VisualFoxPro提供项目管理器组织应用程序的相关组件,通过创建或打开项目文件将已经开发好的各个程序组件添加到该项目中,或者直接在项目管理器中创建应用程序的各个组件,然后加入项目信息。后者的具体操作方法是:右击项目管理器空白处,在弹出的快捷菜单中选择“项目信息”命令,弹出“项目信息”对话框,输入相关的信息,包括开发者的信息,如作者、单位、地址等信息;项目的主目录;通过复选框选择在应用程序文件中是否包含调试信息;是否对应用程序加密;通过附加图标复选框指定是否为生成的文件选择自己的图标。2.设置文件的“包含”与“排除”文件的“包含”与“排除”相对。将一个项目编译成一个应用程序时,所有项目包含的文件将组合为一个单一的应用程序文件。在项目连编之后,那些在项目中标记为“包含”的文件将变为只读文件。对于用户经常修改的文件,在连编之前必须将它们设置为“排除”。这些文件虽然是该应用程序的一部分,但是并没有被编译,因此用户可以对它们进行及时的更新。一般的VisualFoxPro默认数据库和表文件可以修改,默认为“排除”,而表单、报表、查询、菜单和程序文件应该设置为“包含”。具体的操作方法是:在项目管理器中右击需要设置的文件,从弹出的快捷菜单中选择“排除”命令,根据要求选择即可。3.设置主文件主文件是整个应用程序的入口,也称为主控程序,它可以是一个程序、菜单或者表单文件。主文件的任务是设置应用程序的起点、初始化环境、显示初始的用户界面和控制事件的循环。一般来说,如果该文件是添加到项目中的第一个程序文件,则系统自动将它设置为主文件,否则,就应该人为地把该文件设置为主文件。具体的操作方法是:在项目管理器中右击需要设置的文件,从弹出的快捷菜单中选择“设置主文件”命令,即可完成设置。4.连编应用程序在上述设置完成之后,可以通过项目管理器把应用程序编译并连接成一个可执行的程序文件,这就是应用程序的连编。连编生成的可执行文件可以是.app文件,也可以是.exe文件,所不同的

温馨提示

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

评论

0/150

提交评论