面向对象程序设计的基本思想

课题:面向对象程序设计的基本思想

(一)教学设计思想与理论依据:

《算法与程序设计》模块的教学强调通过该模块的学习,学生应该体验客观世界的计算机对象化表征和算法思维,掌握几种基本算法;能运用面向对象的方法,设计解决简单问题的算法,并能初步使用一种面向对象的程序设计语言,编制程序实现算法解决该问题。

(二)教学内容分析

教材以广东教育出版社出版的信息技术(选修一)《算法与程序设计》第五章第一节内容为结构框架,本节主要介绍面向对象思想产生的必然性和面向对象思想的机制,以及通过对同一个问题采取面向过程和面向对象两种不同思想解决的区别,让学生感受到面向对象程序设计的优越性。

(三)学生情况分析:

学生已学完教材前四章内容,基本掌握了传统的面向过程结构化程序设计方法,有一定的程序设计基础。

(四)教学策略与模式:

采用讲解、任务驱动、实践和学生自主学习相结合的教学方式

(五)教学资源:

硬件:多媒体电脑教室,投影仪,广播系统

软件:学生机安装vb6.0

(六)教学目标:

知识与技能

1.了解面向对象程序设计的基本思想和面向对象思想的由来,并能够举例说明现实世界与面向对象系统之间的对应关系。

2.了解面向对象程序设计的优越性并初步理解其实现的机制。

过程与方法

经历分析、调试解决同一问题的两种不同实现思想的程序,初步理解面向对象程序设计的优势及面向过程程序设计的缺陷。

情感态度和价值观

(1)关注传统结构化程序设计存在的问题。

(2)产生学习面向对象程序设计技术的愿望。

(3)关注面向对象技术是当前程序设计的重要发展方向。

(七)重点难点

教学重点

(1)传统结构化程序设计存在的问题

(2)面向对象程序设计所具有的优点。

教学难点

(1)面向对象思想的产生。

(2)传统结构化程序设计与面向对象程序设计的基本点比较。

(3)实现面向对象程序设计的基本机制。

教学过程:

引入:

请同学们阅读本节课文最前面的引导文字段,一分钟后请同学发言。通过引导抛出结论:“结构化程序设计存在固有的缺陷:以功能为核心,数据和函数分开,使得后期维护难,安全性差等且不适合解决复杂问题。”

新课讲解:

一.面向对象思想的产生:

1.教师讲解介绍面向对象技术是程序设计发展的必然趋势

2. 讲解面向对象技术的思想

(1)面向对象程序设计(Object Oriented Programming,简称OOP),是基于一种很自然和朴素的思想。计算机软件开发的过程就是人们使用各种计算机语言将现实世界映射到计算机世界的过程。

(2)举例说明现实世界与面向对象系统之间的对应关系:

面向对象程序设计的基本思想

二.面向对象程序设计:

活动一:以下是处理学生成绩的两个程序,学生成绩1.vbp用面向过程的方法设计,学生成绩2.vbp用面向对象的方法编写,试比较它们。

1、 打开

面向对象程序设计的基本思想

学生成绩1.vbp;阅读并运行该程序(见程序一)。

'程序一

Private Sub Form_click()

Dim i As Integer, n As Integer ‘n为学生数

Dim StName As String

Dim sc1 As Integer

Dim sc2 As Integer

Dim sc3 As Integer

Dim total As Single

Dim prompt As String

n = Val(InputBox("输入学生数"))

Print "姓名" & vbTab & "成绩1" & vbTab & "成绩2" & vbTab & "成绩3" & vbTab & "加权总分" & vbTab & "证书类型"

For i = 1 To n

StName = InputBox("输入第" & i & "位同学的姓名")

sc1 = Val(InputBox("输入该同学的软硬件基础成绩"))

sc2 = Val(InputBox("输入该同学的文字处理技巧成绩"))

sc3 = Val(InputBox("输入该同学的网络技术应用成绩"))

total = sc1 * 0.2 + sc2 * 0.5 + sc3 * 0.3

'输出表头

prompt = StName & vbTab & Str(sc1) & vbTab & Str(sc2) & vbTab & Str(sc3) & vbTab & Str(total) & vbTab

If (sc1 >= 85 And sc2 >= 85 And sc3 >= 85) Then

Print prompt & "优秀"

Else

If (total > 70 And sc1 >= 60 And sc2 >= 60 And sc3 >= 60) Then Print prompt & "合格"

Else

Print prompt & "不合格"

End If

End If

Next i

End Sub

马上行动:阅读本程序请问答(1)找出程序中计算总分的语句。

(2)找出程序中判断证书类型的语句。

2、打开学用面向对象方法生成的学生成绩2.vbp。

面向对象程序设计的基本思想

运行该程序后界面如下图所示:

讨论:两个程序的执行过程有什么不同?

3、观察“学生成绩2.vbp”的程序(见程序二)。

'程序二

'定义学生类

Dim stu As New Student

Dim n As Integer ‘n为学生数

'窗体启动

Private Sub Form_Load()

labN.Caption = 1 ‘学生序号标签显示1

End Sub

'单击“处理”按钮事件

Private Sub Command1_Click()

Dim StuRec As String

Dim StName As String

Dim sc1 As Integer

Dim sc2 As Integer

Dim sc3 As Integer

StName = TxtName.Text

sc1 = Val(TxtScore1.Text)

sc2 = Val(TxtScore2.Text)

sc3 = Val(TxtScore3.Text)

'将学生的信息赋给对象

Call stu.SetInf(StName, sc1, sc2, sc3)

'输出结果

StuRec = stu.GetName() & vbTab

StuRec = StuRec & stu.GetScore(1) & vbTab & stu.GetScore(2) & vbTab & stu.GetScore(3)

StuRec = StuRec & vbTab & stu.GetTotal() & vbTab & stu.Judge() List1.AddItem StuRec

n = n + 1

labN.Caption = n + 1

'文本框清零

TxtName = ""

TxtScore1 = 0: TxtScore2 = 0: TxtScore3 = 0

TxtName.SetFocus

End Sub

马上行动:阅读本程序问答(1)找出程序中计算总分的语句。

(2)找出程序中判断证书类型的语句。

4、分别在程序一和程序二的计算总分和判断证书类型的语句之间添加语 句“SC1=0”,再次运行两个程序,看结果有什么不同。

小提示:由于中途改变了软硬件基础成绩数据,使得程序一的运行结果受到了影响,而程序二不会受任何影响。

活动二 从VB的类模块中认识类、对象和实体

1、 双击“学生成绩2.vbp”程序的工程资源管理窗口中类模块下的“student”,打开类模块代码窗口,如下图所示

面向对象程序设计的基本思想

2、 阅读其中的程序,如下图所示:

'定义存放学生姓名的变量和存放三门课成绩的数组

Private m_name As String

Private m_score(3) As Integer

'实现获得学生姓名的方法

Public Sub SetInf(name As String, s1 As Integer, s2 As Integer, s3 As Integer) m_name = name

m_score(1) = s1

m_score(2) = s2

m_score(3) = s3

End Sub

'实现输出学生信息的方法

Public Function GetName() As String

GetName = m_name

End Function

面向对象程序设计的基本思想

Public Function GetScore(index As Integer) As Integer

GetScore = m_score(index)

End Function

'实现计算总分的方法

Public Function GetTotal() As Single

GetTotal = m_score(1) * 0.2 + m_score(2) * 0.5 + m_score(3) * 0.3 End Function

'实现判断证书类型的方法

Public Function Judge() As String

If m_score(1) >= 85 And m_score(2) >= 85 And m_score(3) >= 85 Then Judge = "优秀"

ElseIf GetTotal() > 70 And m_score(1) >= 60 And m_score(2) >= 60 And m_score(3) >= 60 Then

Judge = "合格"

Else

Judge = "无"

End If

End Function

马上行动:阅读以上学生类定义程序段后

(1) 写出Student类中定义学生属性的部分

m_name用于表示

m_score(3)用于表示

(2)写出Student类中定义方法的部分。

子过程SetInf的作用是获取学生对象的姓名和三门课成绩;

函数GetScore的作用是输出学生对象的姓名和三门课成绩;

函数GetName的作用是

函数Judge的作用是

如果要计算四门课的成绩,该如何修改程序一和程序二,两者的修改方法有什么不同?

归纳总结:两种程序设计方法的异同

1、运行机制不同

程序一的运行过程完全由程序控制,什么时候输入数据,什么时候计算得出结果,都是由程序员预先设计好的,不能中途予以改变。若某用户在输入完第一个学生成绩的硬件基础成绩,开始输入文字出理技巧成绩时,发觉先前输入的成绩错了,需要修改,这时只能结束程序,重新运行后再次输入,而无法回到上一步修改输入。

程序二则不同,用户可随时根据自己的意愿与应用程序进行交互。

2、安全性不同

前面的活动一,在两个程序中仅仅添加了改变软硬件基础成绩数据这一语句,程序一的运行结果受到了影响,和用户预期的结果相差甚远,而程序二则没有受到任何影响。试想一下,如果在一个由数十人甚至数百人合作开发的大型软件系统中,万一需要修改某一数据,对于使用面向过程方法设计编写的程序来说,其后果是不可预计的。而对于使用面向对象的程序设计方法编写的程序则相对安全得多。

另外,在程序二中不能使用变量赋值语句改变Student类模块中的变量值,如m_name=”冯海”,也就是说不能随意改变某一学生对象的姓名等数据。原因是类里的m_name等变量的定义语句使用了Private限定词,只允许在类里使用这些变量,而对于主程序,必须通过调用类中的方法(操作接口),如SetInf为其赋值。这样安全性更强了。

3、实现具体功能的方法相同

两种方法设计的程序,也有其共同之处,如程序一中有实现“判断证书类型”的程序段,程序二的Student类模块中也有实现“判断证书类型”的功能程序段,两个程序都使用了结构化的方法来设计算法,即都采用了选择结构。也就是说,无论面向过程的程序,还是面向对象的程序,其实现具体功能的代码都采用了结构化程序设计方法来设计。

三.课外拓展

初步总结面向对象程序设计与面向过程程序设计的异同。

 

第二篇:实用小型信息系统的开发—在面向对象程序设计思想指导下用vfp开发图书管理系统

实用小型信息系统的开发——在面向对象程序设计思想指导下用vfp开发图书管理系统

实用小型信息系统的开发

目录

内容提要:

引言:

一、课题研究的现实背景

1.1课题背景

1.2 数据处理技术的发展

1.3 国内外办公信息发展概况

二、管理信息系统

2.1管理信息系统的简介

2.2管理信息系统的开发

三、面向对象程序设计及特点

3.1 面向对象程序的产生

3.2面向对象程序设计中的对象

3.3从类看面向对象程序设计方法的特点

3.4 面向对象程序设计方法的基本思想

四、VFP系统介绍

4.1 简介

4.2 VFP的主界面

4.3 VFP中的数据库和表

五、图书管理系统的实现

5.1系统总体结构

5.2 系统的数据组成结构

5.3 录入模块

5.4 查询模块

5.5 借还模块

5.6 报表

5.7 程序的执行

5.8 不足之处

结束语

[参考文献]

[附录]

1

实用小型信息系统的开发——在面向对象程序设计思想指导下用vfp开发图书管理系统

内容提要:

随着信息技术的发展,人们对于运用计算机来辅助,协调和管理自身工作的需要正在逐步提高。而面向对象的程序设计在当今应用程序的开发过程中具有重要的地位,它的最大的优点就是能够提高程序开发的质量和开发速度。

管理类信息系统是日常最为广泛的计算机应用,已延伸到社会的各个领域。针对现在学校应用计算机的一些情况,及本人在计算机学习使用中碰到的具体问题的,结合基础数据库应用知识以及信息系统的相关内容,本文主要介绍利用vfp开发windows应用程序中的一些基本知识,及本系统各部分的实现情况。

关键词: 面向对象编程 数据访问接口 ADO编程对象模型

Abstract:

Following the development of the information technology , the necessity of using the computers to accessory , adjust and manage the work is needed more an more . While the object-oriented programming plays an imporfant role in the development of today’s application . The advantage is that it can improve the qualify and promote the speed of process programming . The information system of management is most widely used computer application in daily life , it has reached to every aspect of our society . Basing on the situation in using computers in schools and the problems met in my study on using the computers , I combine the relative information system , to intw the basic knowledge in using VFP to programmer windows’ application and how to make every part of the system affect in this passage .

Key words:

object-oriented programming

data visiting interface

ADO programming object-oriented

2

实用小型信息系统的开发——在面向对象程序设计思想指导下用vfp开发图书管理系统

引言:

人类20世纪最重大的科技成果之一是数字计算机的发明。当前,它推动着几乎一切科学技术的发展和完善。已成为任何社会和技术领域都需要的甚至是不可缺少的智能型工具。其作用和所产生的效果早已超出人们的预想。在计算机的三大应用领域(科学计算、数据处理和过程控制)中数据处理约占70%左右的比重。各种应用软件根据实际的工作环境,特定的工作流程,通过对各种数据的处理得出人们想要的各种信息。

本文使用VFP系统进行了一个简单图书管理系统的开发,同时利用同本系统,指明在应用次序的总体设计阶段和模块设计阶段,可分别应用不同的程序设计方法,达到结构程序设计与OOP在系统开发中的结合。

一、 课题研究的现实背景

1.1课题背景

近来,国内外兴起了一股办公自动化的热潮,希望能借助相关的计算机技术实现对企业办公过程的自动化管理。目前,办公自动化正朝着多功能,复合化和系统化的方向发展,如何有效的实现作业流程的自动化已经提到日程上来。这样对信息流的有效组织和管理便日益成为衡量一个办公自动化系统优劣的重要标志。

随着教育的普及,学校也在不断的提高教学质量和学校管理质量,而整理统计大量又繁杂的数据需要用到信息管理系统,本文中的图书管理系统就是其中的一种。现代的社会中,办公自动化进入社会的每一个角落已经势不可挡,图书管理系统作为办公自动化的一个小小体现,将为学校教学管理工作中处理大量又繁杂的数据提供方便,提高学校工作的效率,同时也为办公自动化的普及奠定了基础。

1.2 数据处理技术的发展

人们需要处理数据,从数据中抽象出信息。那么,数据就不仅仅是物理符号序列,它还包含了对事物特性的反映。事物不是孤立的而是与另一些事物相关联有某种联系的。因此,反映事物特性的数据间也是有联系的。各种数据及它们的 3

实用小型信息系统的开发——在面向对象程序设计思想指导下用vfp开发图书管理系统

集合就构成了数据库。目前,数据库技术已从第一代网状层次数据库,第二代的关系数据库,发展到了今天以面向对象模型为特征的第三代数据库系统。引入第三代数据库系统的是更多更复杂的多媒体数据。为了能够使应用程序操纵、存储、引用及处理这些多媒体数据,使数据库存储的信息为人们所充分利用就产生了用对象的概念抽象事物,然后在程序中针对对象编程的方法。这种方法就是面向对象的程序设计方法。目前这种方法是一种较流行的程序设计方法。而本文就是讨论将面向对象的程序设计方法应用与办公自动化的一个实例,在接下来的章节中,我们将对办公自动化进行阐述。

1.3 国内外办公信息发展概况

从国内外发展情况来看,美日等国家的办公自动化技术发展较早,办公自动化的水平也较高,而我国起步晚,在技术开发和应用方面与先进的国家还有不少的差距,但是在中国,办公自动化技术也是在日新月异的发展着的,有许多的城市已经在用办公自动化系统来管理各自的单位和企业。其中,信息管理型的办公自动化系统是当今发展的主流。但是,目前国内基于信息管理的办公自动化系统中仍然存在着不足之处。

二、管理信息系统

2.1管理信息系统的简介[1,4]

管理信息系统就是我们常说的MIS(Management Information System),在强调管理、强调信息的现代社会中它变得越来越普及。MIS是一门新的学科,它跨越了若干个领域,比如管理科学、系统科学、运筹学、统计学及计算机科学。在这些学科的基础上,形成信息收集和加工的方法,从而形成一个纵横交织的系统。

19xx年,管理信息系统的创始人,明尼苏达大学的管理学教授Gordon

B.Davis给了管理信息系统一个较完整的定义,即“管理信息系统是一个利用计算机软硬件资源以及数据库的人-机系统。它能提供信息支持企业或组织运行、管理和决策功能。”这个定义全面地说明了管理信息系统的目标、功能和组成。

管理信息系统起初应用于最基础的工作,如打印报表、计算工资、人事管理等,进而发展到企业财务管理、库存管理等单项业务管理,这属于电子数据处理(EDP,Electronic Data Processing)系统。当建立了企业数据库,有了计算机网络从而达到数据共享后,从系统观点出发,实施全局规划和设计信息系统时,就达到管理信息系统的阶段。

4

实用小型信息系统的开发——在面向对象程序设计思想指导下用vfp开发图书管理系统

MIS开发技术在20世纪90年代有了新的发展。

1、

2、

3、

4、

信息综合集成 Internet/Intranet 先进的软件开发工具 多媒体技术

2.2管理信息系统的开发

管理信息系统的开发方式主要有独立开发方式、委托开发方式、合作开发方式、购买现成软件方式等4种。这4种开发方式各有优点和不足,需要根据使用单位的技术力量、资金情况、外部环境等各种因素进行综合考虑和选择,也可综合使用各种开发方式。

管理信息系统的开发是一个复杂的系统工程,它涉及到计算机处理技术、系统理论、组织结构、管理功能、管理知识等各方面的问题。开发方法主要有:结构化生命周期开发方法、原型化、面向对象的开发方法等。

1、结构化生命周期开发方法:它是目前较为流行的MIS开发方法。其基本思想是用系统的思想和系统工程的方法,按用户至上的原则,结构化、模块化地自上而下对生命周期进行分析与设计。

2、原型化:它的应用使人们对需求有了渐进的认识,从而使系统开发更有针对性。其基本思想是系统开发人员凭借自己对用户需求的理解,通过强有力的软件环境支持,构造出一个实在的系统原型,然后与用户协商,反复修改原型直到用户满意。

3、面向对象开发方法:面向对象(OO,Object Oriented)的系统开发方法,是近年来受到关注的一种系统开发方法。其基本思想是将客观世界抽象地看成是若干相互联系的对象,然后根据对象和方法的特性研制出一套软件工具,使之能够影射为计算机软件系统结构模型和进程,从而实现信息系统的开发。

管理信息系统的开发过程一般包括系统开发准备、系统调查、系统分析、系统设计、系统实现、系统转换、系统运行与维护、系统评价等步骤。根据开发系统的大小、复杂、投入、方式、方法等因素的不同,用户需要根据实际情况进行取舍和计划。

三、 面向对象程序设计及特点[2]

3.1 面向对象程序的产生

随着计算机技术的不断发展,其软硬件之间的差距越来越大,造成了计算机发展的不均衡,当系统较为复杂时,常规的软件工具、技术和概念已不足以应付,从而使软件开发陷人了困境,即所谓的“软件危机”。尽管软、硬件发展的这种 5

实用小型信息系统的开发——在面向对象程序设计思想指导下用vfp开发图书管理系统

差距自计算机出现以来始终存在,但进入90年代后这种差距更加明显,在这一背景下,面向对象程序设计技术逐步兴起,随着它的不断完善,逐步进入实用阶段而受到广大软件开发者的青睐,吸引了众多的人士去研究、使用它,使之在软件工程、人工智能等领域得到了十分广泛的应用。人们把面向对象的程序设计语言看作是计算机软件产业的一次革命。

3.2面向对象程序设计中的对象

面向对象程序设计方法是一种智能化的程序设计方法。它允许抽象化,模块化的分层结构。这种设计方法与编程技术不同于标准的过程化程序设计。程序设计人员不再是单纯地从代码的第一行一直编到最后一行,而是考虑如何创建对象,利用对象来简化程序设计提高代码的可复用性。对象可以是应用程序的自包含组件。一方面具有私有的功能,供自己使用。另一方面又提供公用的功能,供其他用户使用。用户是通过对象的属性、事件、和方法程序来处理对象的。

所谓属性可以看作一个对象的性质,也就是说属性是描述对象某一性质的数据。例如一部电话机,它有一定的大小和颜色。当把它放在办公室中,它又有了一定的位置。这些大小、颜色、位置等都是用来描述这部电话机的,可以看作是电话这一对象的属性。每一个对象都可以对一个被称为“事件”的动作进行识别和响应。事件是一种预先定义好的特定的动作,被用户或系统激活。在多数情况下,事件是通过用户的交互作用而产生的。就好像当一个用户拿起电话的听筒时就激发了一个事件。同样,当用户拨打电话时也激发了若干事件。方法程序是与对象相关联的过程。是对象能够执行的一个操作。方法程序是预先编制好的可以通用的过程,在对对象编程时可以直接调用这些过程。事件也可以具有与之相关的方法程序。

3.3从类看面向对象程序设计方法的特点

所有对象的属性、事件、方法程序都是在定义类时指定的。每一对象都是类的一个实例。类则是定义了对象外观和行为的模板。用饼干和饼干模子之间的关 6

实用小型信息系统的开发——在面向对象程序设计思想指导下用vfp开发图书管理系统

系来做个比喻,饼干模子就好像是类,它确定了饼干的特征,如大小和形状。饼干就好像是对象,它由模板创建。对象一旦被建立就可以改变它的属性,通过一些动作来触发事件,在事件中调用方法程序。类有封装、子类、继承的特征。这些特征对提高代码的可重用性和易维护性很有帮助。类隐藏了不必要的复杂性。就好像当您在办公室内安装了一部电话后,您并不需要知道电话内部的呼叫原理。您只需要知道拿起听筒拨打您所需的号码就可以与您所找的人通话了。在这里建立通话的复杂性被隐藏了起来。这些都是面向对象程序设计的封装性的体现。通过对对象的封装抽象出对象的特性,使得用户可以忽略对象内部的细节集中精力于对象的特性。类的下面可以创建子类。一个子类可以拥有其父类的全部功能,在此基础上,可以定制其它您所需要的功能。定义子类是减少代码的一条途径。可以先找到与自己所需对象最相似的类,然后对其定制形成子类。当对一个类进行改动时,改动将会反映到其子类中。这种类与子类的关系是面向对象程序设计方法中继承性的体现。多态性是指对不同对象设置相似属性和方法的能力。在一些相关的类中包含有许多同名的方法程序和属性,但其中的内容可以不同。可以利用这种相似性。只要使用一个单独的变量或过程就可以管理一组有这种方法程序或属性的对象,这种相似性简化了编程工作。总的看起来面向对象的程序设计的特点有:封装性、继承性和多态性。这些特性使得用面向对象的程序设计的方法更为简洁,可以对更多的对象进行操纵。这适应了目前数据多样性的要求。这才使得这种程序设计方法有如此强大的生命力。

3.4 面向对象程序设计方法的基本思想

(1) 认为世界由各种对象组成,任何事物都是对象,是某个对象类的实例;复杂的对象可以由比较简单的对象以某种方式组成。按照这个观点,整个世界也可以从一些最原始的对象开始,经过层层组合而成。因此,可以说整个世界就是一个最复杂的对象。(2) 把所有对象都划分成各种对象类,每个对象类都定义了一组方法,所谓方法实际上是允许施加于该类对象上的各种操作。对象和传统的数据有本质区别,不是被动地等待对它执行某种操作;相反,它是进行处理的主体,必须发送消息请求对象执行它的某个操作,处理它的私有数据,而不能从外 7

实用小型信息系统的开发——在面向对象程序设计思想指导下用vfp开发图书管理系统

界直接对它的私有数据进行操作。(3) 对象之间除了互相传递消息的联系之外再没有其它联系。一切局部对象的信息和实现方法,都被封装于相应的对象类的定义之中。在外界是不可见的、是封装的。(4) 对象类将按照类、子类与父类的关系构成一个层次结构的系统。在这种层次结构中,上层对象类所具有的性质可以被下层对象类继承,除非在下层对象类中又对相应的属性作了重新描述,这时将以新属性为准,也就是说,低层的属性将屏蔽高层的同名属性,这种特性称为对象类之间的属性继承关系,它有助于避免信息冗余,也是实现软件重用的重要机制。

四、VFP系统介绍

4.1 简介

Visual FoxPro (简称VFP) 是Microsoft公司第一个带有Window95标志的应用软件。它起源于xBase编程语言系列,该系列中包括有dBASEⅡ和Ⅲ、clipper\FoxBase以及FoxPro。VFP是目前微机上最优秀的数据库管理系统软件,正如其名称中冠之的"Visual"一样,它采用了可视化的、面向对象的程序设计方法,大大简化了应用系统的开发过程,并提高了系统的模块性和紧凑性。VFP5.0的版本中提供了大量的系统开发工具和向导工具(Wizard),使以往费时费力的开发工作变得轻松自如。这些可视化的设计工具免除了开发者编写大量程序代码的工作,甚至在不需要学习VFP的有关命令或函数的情况下,也能设计出功能强大的应用系统。闻名不如见面,让我们赶快进入到VFP6.0中,看看它的庐山真面目。

4.2 VFP的主界面[3]

当启动VFP6.0程序后,我们将直接进入进入VFP的系统主界面,可以看到如下的画面:

实用小型信息系统的开发在面向对象程序设计思想指导下用vfp开发图书管理系统

8

实用小型信息系统的开发——在面向对象程序设计思想指导下用vfp开发图书管理系统

命令窗口是桌面上的一个重要部件,在该窗口中,可以直接输入VFP命令,以立即执行,尽管大多数VFP的命令从菜单中可以访问,简单地输入一个命令还是很有用的。在VFP6.0的菜单系统中,菜单栏里的菜单选项不是一成不变的。在不同的使用环境中,菜单选项是不一致的。而且,在打开后菜单里的选项也可能不一样,这种情况称为上下文敏感。如打开一个数据表时,系统就会在主菜单上自动添加"表"菜单,供用户对此数据表进行追加记录、编辑数据等操作选用;打开一个报表时,主菜单上就会自动添上报表项,可以通过"报表"菜单的选项进行修改该报表的内容等工作。

工具栏是Microsoft公司流行软件的共同特色,对于经常使用的功能,通过工具栏调用比通过菜单调用要方便快捷得多。默认情况下,VFP的"常用"工具栏随系统启动时一起打开,显示在菜单栏下面。除了常用工具栏外,VFP还提供有其它10个工具栏,分别是:

实用小型信息系统的开发在面向对象程序设计思想指导下用vfp开发图书管理系统

这些工具栏缺省情况下是随着某一种类型的文件打开后自动打开的。还有一个"项目管理器"窗口,这可是系统的"控制中心"。在使用VFP管理数据库或开发一个数据库应用系统时,即使一个规模不大的应用系统,也会有几十个多种类型的文件。如通常的PRG命令文件、DBF表文件、CDX索引文件以及菜单、表单、报表、位图等文件,如果没有一个有效的管理工具,将会对开发工作以及以后的系统维护带来很大困难。项目管理器是VFP中该了各种数据和对象的主要组织工具,一个项目是文件、数据、文档和对象的集合,项目文件以扩展名PJX 及PJT保存,使用项目管理器具有以下优点:

1. 项目管理器提供了简便的、可视的方法来组织和处理表、数据库、表单、报表、查询和其它一切文件,在项目管理器中用户不必使用VFP命令,通过单击鼠标就能实现数据库、表、表单等许多文件的创建、修改、删除等操作,快捷方便;

2. 双击应用程序组件(表单、菜单、程序等)就可以运行或进行修改。选取菜单"工具/选项?",在"选项"对话框的"项目"选项卡中有一个"项目双击操作"选项按纽组,用来设定双击鼠标视是运行还是修改所选定的文件;

3. 通过项目管理器,直接将应用系统的大部分文件编译成一个扩展名位APP的应用文件,便于最终用户的管理,应用系统中所有在运行时不需改变的文件都可以包含在一个应用文件中;

4. 对于专业版本的用户,通过项目管理器将应用系统编译成扩展名为EXE的可执行文件,使得应用系统能够脱离VFP环境运行。

9

实用小型信息系统的开发——在面向对象程序设计思想指导下用vfp开发图书管理系统

4.3 VFP中的数据库和表

数据库管理系统中,数据与程序是分开存放的,设计程序的目的是为了将数据加工处理成符合用户要求的有用信息。VFP的数据存储在表(Table,后缀为DBF)中,但是还有另外的一层名为数据库的外套(后缀为DBC)。DBC中包含有关于表、索引、关系、触发器等的信息。我们来看看数据表中的字段类型:

实用小型信息系统的开发在面向对象程序设计思想指导下用vfp开发图书管理系统

实用小型信息系统的开发在面向对象程序设计思想指导下用vfp开发图书管理系统

五、 图书管理系统的实现

5.1系统总体结构

1、系统分为三个主要模块,分别为录入模块(进行书目的增加和删除)、查询模块(进行书籍的检索)、借还模块(对书籍的借还进行操作)。结构图如下:

10

实用小型信息系统的开发——在面向对象程序设计思想指导下用vfp开发图书管理系统

三个模块可以通过菜单项来进行选择,各自尽可能用简洁的界面来表示,以保证不熟悉的操作人员进行应用。

2、另外提供两个报表输出的接口,输出书目情况报表及借阅情况报表。

5.2 系统的数据组成结构

数据库共使用“图书分类”和“图书馆”两个数据库。“图书分类”数据库存储书籍管理有关分类内容,作为下拉列表框的数据源,供操作人直接选取,保证书籍录入过程中的正确性。“图书馆”数据库下包含“借阅”、“书目”两个表,分别用于存储图书馆中书籍的基本情况和借出情况,表的结构如下:

实用小型信息系统的开发在面向对象程序设计思想指导下用vfp开发图书管理系统

实用小型信息系统的开发在面向对象程序设计思想指导下用vfp开发图书管理系统

5.3 录入模块

1、所完成工作的判断:由于这个模块需要同时完成录入和删除工作,我们为这个模块设置了一个“选项组”,其中有两个按钮。选项组控件的基类名是 11

实用小型信息系统的开发——在面向对象程序设计思想指导下用vfp开发图书管理系统

OptionGroup。选项组是由两个或多个选项按钮组成,用户一次只能选择其中的一个选项按钮。其中,选项按钮是一个控件类,类名为OptionButton;而选项组是一个容器类,类名为OptionButtonGroup[4,6]。在选项组的CLICK事件中添加了如下代码:

if thisform.optiongroup1.value=2

thisform.caption="图书删除"

thisform.txt财产号.value=""

thisform.combo1.visible=.f.

thisform.combo2.visible=.f.

thisform.txt分类号.visible=.t.

messagebox("现在进行删除操作!",32,"注意!")

thisform.refresh

else

thisform.caption="图书录入"

thisform.txt财产号.value=""

thisform.combo1.visible=.t.

thisform.combo2.visible=.t.

thisform.txt分类号.visible=.f.

messagebox("现在进行录入操作!",32,"注意!")

thisform.refresh

endif

2、对数据处理的操作:这个模块所进行的数据工作主要为表中记录的添加和删除,其中需要对操作员输入的数据进行比较和修改[3,5]以使数据符合表中字段的要求,而添加或删除记录的过程中有可能出现错误的操作,这就需要我们使用到messagebox函数[6,9]给出提示信息,它们的源代码如下:

do case

12

实用小型信息系统的开发——在面向对象程序设计思想指导下用vfp开发图书管理系统 &&录入操作

case thisform.optiongroup1.value=1

sele 书目

use dat\书目 index dat\书目

k=alltrim(upper(str(thisform.txt财产号.value))) do while (6-len(k))>0

k="0"-k

enddo

if !(alltrim(thisform.txt书名.value)=="")

append blank

replace 财产号 with k

&&都是添加新记录中的内容

thisform.txt书名.setfocus //将光标放到该处 thisform.refresh

else

messagebox("信息不全,请重输!",32,"提示信息!") thisform.txt财产号.value=""

&&文本框置空

thisform.refresh //刷新表单

endif

&&删除操作

case thisform.optiongroup1.value=2

sele 书目

SET EXCLUSIVE ON

13

实用小型信息系统的开发——在面向对象程序设计思想指导下用vfp开发图书管理系统

use dat\书目 index dat\书目

goto top

locate for 财产号=alltri(thisform.txt财产号.value)

if found()

dele for 财产号= alltrim(thisform.txt财产号.value)

pack

&&将文本框置空

thisform.refresh

else

messagebox("资料不对,请重输!",32,"提示信息!")

thisform.txt书名.setfocus

thisform.refresh

endif

endcase

5.4 查询模块[7,8,9]

1、使用语言SQL介绍:SQL是操作数据库的标准语言(事实上,关于SQL语言有一个专门的ANSI标准〕。SQL的主要功能之一是实现数据库查询。SQL查询的句法非常简单。当你执行一个SQL查询时,通过使用包括逻辑运算符的查询条件,你可以得到一个记录列表。此时查询结果是来自一个或多个表。而SQL查询使用的语句为SELECT语句,它的定义如下:

SELECT [ALL | DISTINCT] [TOP nExpr [PERCENT]]

[Alias.] Select_Item [AS Column_Name]

[, [Alias.] Select_Item [AS Column_Name] ...]

FROM [FORCE]

[DatabaseName!]Table [[AS] Local_Alias]

[[INNER | LEFT [OUTER] | RIGHT [OUTER] | FULL [OUTER] JOIN

DatabaseName!]Table [[AS] Local_Alias]

[ON JoinCondition …]

14

实用小型信息系统的开发——在面向对象程序设计思想指导下用vfp开发图书管理系统

2、模块具体实现:这个模块中,我们允许根据三种不同分类来进行查询,其中使用了DO CASE语句配合SELECT语句来实现该功能,它的具体代码是这样的:

do case

case thisform.optiongroup1.option1.value=1

select * from dat\书目 where 书名 = upper(alltrim(thisform.text1.text))

case thisform.optiongroup1.option2.value=1

select * from dat\书目 where 财产号 = upper(alltrim(thisform.text1.text))

case thisform.optiongroup1.option3.value=1

select * from dat\书目 where 分类号 = upper(alltrim(thisform.text1.text))

endcase

5.5 借还模块[9,10,11]

该模块使用了页框,页框是一个容器对象,在页框上又可以包含多个页,页上又可以包含控制。使用页框能有效地扩展表单的空间。下表是页框和页的一些常用属性:

实用小型信息系统的开发在面向对象程序设计思想指导下用vfp开发图书管理系统

书籍的借出与归还业务,其中在“借书”页中可以自动计算出当天借书日期和还书日期,实现该功能的语句在“财产号”文本框的“lostfocus”事件中,如下:

thisform.pageframe1.page1.txt借书日期.value=date()

thisform.pageframe1.page1.txt还书日期.value=date()+30

其他的操作功能实现重要是偏重于判断书籍是否已经借出或者是否已经超出还书日期,这些功能都需要使用到“书目”表中的“入库”字段和“借阅”表,调用这两个表的程序如下:

sele 书目 //选择数据环境中的“书目”表

if!((alltrim(thisform.pageframe1.page1.txt姓名.value))=="".or.(alltrim(thisform.pageframe1.page1.txt财产号.value))=="")

replace 入库 with .f.

select 借阅 //确定书籍允许借出后进入“借阅”进行操作

15

实用小型信息系统的开发——在面向对象程序设计思想指导下用vfp开发图书管理系统

use dat\借阅 index dat\借阅

appen blank

5.6 报表[3, 5,6,11]

除了屏幕输出外,打印报表是用户获取信息的另一条重要途径。VFP向用户提供了设计报表的可视化工具——报表设计器。在报表设计器中,你可以直接从项目管理器,或者数据环境中将需要输出的表或字段拖放到报表中,可以添加线条、矩形、圆角矩形、图象等控件,通过鼠标的拖拽就能改变控件的位置和大小。它提供了用多种多样的方式显示表的内容,而且不需要进行任何的编程,可以用极少量的工作就能使你的项目取得显著的进展。在三个功能模块以外,我们利用“报表设计器”为操作员准备了两个报表,用于输出我们数据表中的内容,方便操作员在实际工作中的应用。这两个报表的名字分别为“借阅报表”和“书目报表”,其中的“书目报表”的界面如下图:

实用小型信息系统的开发在面向对象程序设计思想指导下用vfp开发图书管理系统

5.7 程序的执行[5,11]

1、启动:

我们的程序需要通过菜单来调用功能模块,而菜单的使用又需要主程序的配合,在我们的主程序中,我们添加了如下的程序,用于实现菜单的调用。

clear

modi wind screen titl "图书管理系统"

do system\系统菜单.mpr

do form other\声明

read events

quit

2、注意:

当VFP制作的系统被连编为EXE文件是,因为应用程序中包含了VFP加载程序,因此,拥护无需拥有VFP系统,但需要提供Vfp6r.dll、Vfp6rchs.dll、Vfp6renu.dll三个文件,这些文件必须放置在与可执行文件相同的目录中,或者 16

实用小型信息系统的开发——在面向对象程序设计思想指导下用vfp开发图书管理系统

在MS-DOS搜索路径中。

5.8 不足之处

这个图书管理系统,是我在利用学习所得开发的一个小型实用信息系统,希望能用这个系统将我所学总结体现出来。但是,由于本身的能力所限,这个系统难免存在着不足之处,请各位老师指教。我将不断学习并以提高自己的设计水平为今后的方向。

结束语:

一个系统的开发生命周期包括系统分析、设计、开发、调试。设计和分析阶段是开发中一个重点,着重于创建一个数据库框架、设计和确定系统需求并将这些需求同所使用的开发工具功能相匹配,在开发过程中,我深刻的感受到这部分的重要性,这部分的工作将影响到后面所做的工作。系统开发阶段主要是根据系统设计要求创建一个可工作的应用程序。

在这一系统的开发过程中得到了,多位同学,教师的热情指点和帮助,对设计提出了大量的宝贵意见,特在此表示感谢!

[参考文献]

1 《Visual FoxPro 6.0程序设计教程电子教案》 未知 引用于网站“天

一书楼”

2 《面向对象程序设计技术概述》 葛继科 (重庆西南农业大学) 应用于

3 《VFP6.0标准教程》 未知 引用于网站“天一书楼”

4 《VFP6.0使用指南》 康博创作室编著 人民邮电出版社出版

5 《VFP数据库系统开发实例导航(第二版)》 邵洋 谷宇 何旭洪编著 人

民邮电出版社

6 《VFP及其应用系统开发》 史济民 汤观全编著 清化大学出版社

7 《VFP6.0教室》 电脑报网络学校

8 《Delphi5数据库编程》 新智工作室 编著

9 MSDN Library Visual Studio 6.0 版

10 《程序员大本营系列——数据库专刊》 万方数据电子出版社

11 《VFP6.0数据库设计》 康耀红等主编 北京大学出版社

[附录]

17

实用小型信息系统的开发——在面向对象程序设计思想指导下用vfp开发图书管理系统

18

相关推荐