370 likes | 524 Views
功能. 说明. Platform SDK. Platform SDK 是 Windows 和 Internet Explorer 版本支持的应用程序编程接口 (API) 的完整参考资料来源。可以使用 Platform SDK 头文件和库来生成使用任何已发布的功能的应用程序。. .NET Framework SDK. 开发人员可用包括 DLL 、工具和示例的丰富资源来生成高效的、强大的和可缩放的基于 Web 的应用程序和服务,这些应用程序和服务利用了新 .NET Framework 技术。. 第 1 章 Visual C++.net 简介.
E N D
功能 说明 Platform SDK Platform SDK是Windows和Internet Explorer 版本支持的应用程序编程接口(API)的完整参考资料来源。可以使用Platform SDK头文件和库来生成使用任何已发布的功能的应用程序。 .NET Framework SDK 开发人员可用包括DLL、工具和示例的丰富资源来生成高效的、强大的和可缩放的基于Web的应用程序和服务,这些应用程序和服务利用了新.NET Framework技术。 第1章 Visual C++.net简介 1.3 Visual C++.NET 2003开发环境 12.软件开发工具包 民政学院软件学院 蒋国清
第1章 Visual C++.net简介 1.3 Visual C++.NET 2003开发环境 1.3.3 解决方案和项目 在使用Visual C++.NET编写应用程序时,经常使用解决方案和项目两个名称概念。 解决方案:类似于Visual C++ 6.0的工作空间(WorkSpace)概念。解决方案包含项目及其下属项,也可包含与项目无关的文件:共享解决方案项和其他文件。解决方案使开发者可以将组织设计、开发和部署应用程序或组件所需的所有项目和文件集中到一起。 项目:是Visual C++.NET编译执行的基本单元。通过编译可生成一个EXE文件,或DLL文件,或OCX文件等。开发项目时,解决方案下的项目只有一个可以作为当前可编译项目。 民政学院软件学院 蒋国清
第1章 Visual C++.net简介 1.3 Visual C++.NET 2003开发环境 1.3.4 托管C++ 1.什么是托管C++ 托管C++是指C++的托管扩展。C++托管扩展是一组C++语言扩展,它是在C++基础上建立起来的,用于帮助visual C++程序员开发.NET框架应用程序。 托管(Managed)是.NET的一个专门的概念,它是融于公共语言运行库(CLR)中的一种新的编程理念。公共语言运行库是.NET框架应用程序的执行引擎,它提供了许多服务,其中包括:代码管理(装入和执行)、类型安全性验证、元数据(高级类型信息)访问、为管理对象管理内存、管理代码,COM对象和预生成的DLLs(非管理代码和数据)的交互操作性、对开发人员服务的支持等等。使用托管C++,可以让CLR来管理代码,并开发具有最新特性如垃圾自动收集、程序间相互访问等的.NET框架应用程序。 民政学院软件学院 蒋国清
第1章 Visual C++.net简介 1.3 Visual C++.NET 2003开发环境 1.3.4 托管C++ 托管扩展是Visual C++开发系统的新关键字和属性。它们允许开发人员决定哪些类或函数编译为管理或非管理代码。这些部分然后就可以平滑地与其他部分或外部库交互。托管扩展也用于在C++源代码中表示.NET类型和概念。这就允许开发人员容易地编写.NET应用程序,而无需编写额外代码。 托管扩展有助于提高开发人员使用Visual C++编写.NET应用程序的效率,并且允许用户将代码从非托管C++中移植到.NET平台上,可以从.NET Framework应用程序中使用已有的非托管C++组件,可以从非托管C++中使用.NET Framework组件,以及在同一应用程序中混合非管理C++代码和‘NET代码。 C++托管扩展为.NET框架的开发人员提供无可比拟的灵活性。传统的非托管C++和托管C++代码可以在同一个应用程序中自由地混合使用。用托管扩展编写的新应用程序能兼有这两个领域的优点。 民政学院软件学院 蒋国清
第1章 Visual C++.net简介 1.3 Visual C++.NET 2003开发环境 使用托管扩展可以轻松地将现有组件包装为.NET框架组件,在与.NET框架集成的同时保留现有代码中的有用价值。 由托管概念所引发的C++应用程序包括托管代码、托管数据和托管类三个组成部分。 (1)托管代码:.NET环境提供了许多核心的运行库(runtime)服务,比如异常处理和安全策略。为了能使用这些服务,必须要给运行环境提供一些信息代码(元数据),这种代码就是托管代码。所有的C#、Visual Basic.NET、JScript.NET默认时都是托管的,但Visual C++默认时不是托管的,必须在编译器中使用命令行选项(/CLR)才能产生托管代码。 民政学院软件学院 蒋国清
第1章 Visual C++.net简介 1.3 Visual C++.NET 2003开发环境 (2)托管数据:与托管代码密切相关的是托管数据。托管数据是由公共语言运行的垃圾回收器进行分配和释放的数据。默认情况下,C#、Visual Basic和JScript.NET数据是托管数据。不过,通过使用特殊的关键字,C#据可以被标记为非托管数据。Visual C++数据在默认情况下是非托管数据,即使在使用/CLR开关时也不是托管的。 (3)托管类:尽管Visual C++数据在默认情况下是非托管数据,但是在使用C++的托管扩展时,可以使用“gc”关键字将类标记为托管类。就像该名称所显示的那样,它表示类实例的内存由垃圾回收器管理。另外,一个托管类也完全可以成为.NET框架的成员,由此可以带来的好处是,它可以与其他语言编写的类正确地进行相互操作,如托管的C++类可以从Visual Basic类继承等。但同时也有一些限制,如托管类只能从一个基类继承等。需要说明的是,在托管C++应用程序中既可使用托管类也可以使用非托管类。这里的非托管类不是指标准C++类,而是使用托管C++语言中的nogc关键字的类。 民政学院软件学院 蒋国清
第1章 Visual C++.net简介 1.3 Visual C++.NET 2003开发环境 2.托管C++与标准C++的主要区别 尽管托管C++是从标准C++建立而来的,但它与标准C++有着本质上的区别,这主要体现在以下几个方面: (1)广泛采用命名空间(namespace) 命名空间是类型的一种逻辑命名方案,.NET使用该命名方案用于将类型按相关功能的逻辑类别进行分组,利用命名空间可以使开发人员更容易在代码中浏览和引用类型。当然,也可将命名空间理解成是一个“类库名”。 (2)基本数据类型的变化 我们知道,标准C++语言的数据类型是非常丰富的。而托管C++的数据类型更加丰富,不仅包含了标准C++中的数据类型,而且新增了int64(64位整型)、Decimal(96位十进制数)、String*(字符串类型)和Object*(对象类型)等类型。 民政学院软件学院 蒋国清
第1章 Visual C++.net简介 1.3 Visual C++.NET 2003开发环境 (3)新增三个托管C++类型:gc Class、value class和gc interface 一个gc类或结构意味着该类或结构的生命周期是由.NET开发平台自动管理及垃圾自动收集,用户不必自己去调用delete来删除。 value类是用来使用具有短生命朗的小型数据项,它不同于gc类。 (4)简化属性操作 在gc类中可以使用.NET的属性,这个属性简化了属性函数的调用操作,这与标准C++中的属性不一样。 民政学院软件学院 蒋国清
第1章 Visual C++.net简介 1.3 Visual C++.NET 2003开发环境 (5)托管C++的委派 在C/C++中,一个函数的地址就是内存地址。这个地址不会带有任何其他附加信息,如函数的参数个数、参数类型、函数的返回值类型以及这个函数的调用规范等。总之,C/C++的回调函数不具备类型安全性。而.NET框架在回调函数的基础增加了提供类型安全的机制,称为委派。 总之,使用托管C++是C++程序员编写.NET框架应用程序最好的一种选择,在充分理解.NET框架的基础上,托管扩展使得C++开发人员可以有针对地使用.NET框架提供的各种服务,避免使用其他语言如C#、VB.NET所带来的额外开销。ATL Server类提供函数的基础结构用以生成快速动态Web站点和XML Web Services。使用C++属性可以尽可能地减少重复冗长的源代码以简化开发。Visual C++.NET 2003的新特性使其能满足应用程序开发的发展。 民政学院软件学院 蒋国清
第1章 Visual C++.net简介 1.3 Visual C++.NET 2003开发环境 1.3.5 Visual C++.NET窗口 1.窗口组成 Visual C++.NET 2003开发环境是平面化的界面,它除了具有和Windows窗口一样的标题栏、菜单栏、工具栏和状态栏外,最主要的是还有不一样的窗口区,如图1-15所示。窗口区是由工具箱、Web浏览区、方案导航区、输出窗口区、属性窗口区以及其他窗口等组成。 民政学院软件学院 蒋国清
第1章 Visual C++.net简介 1.3 Visual C++.NET 2003开发环境 增强的工具箱 工具箱在默认情况下处于Visual C++.NET窗口Web浏览区的左方,如图1-16所示。 民政学院软件学院 蒋国清
第1章 Visual C++.net简介 1.3 Visual C++.NET 2003开发环境 使用过Visual Studio 6.0的用户可以很容易地了解Visual C++.NET的工具箱。其增强的工具箱窗口展示了在Visual C++.NET的工程中用到的各种工具,包括Web表单、窗体表单控件、ActiveX控件、Web服务、HTML元素、对象和文本文件等。该窗体中的可用项目可根据用户正在使用的设计器或编辑器而改变。 除了提供对Web表单、窗体表单和数据开发的新的组件之外,现在代码片段也能在代码窗体中被突出显示,并且能被拖到工具箱上备用。 民政学院软件学院 蒋国清
第1章 Visual C++.net简介 1.3 Visual C++.NET 2003开发环境 Web浏览窗口是一个多功能的文档窗口,各种程序代码的源文件、资源内容、文档、Web页面等都可以通过该窗口显示出来。默认时,该浏览窗口显示的是开始页面。 方案导航区 方案导航区是由解决方案资源管理器窗口、类视图窗口及资源视图窗口等组成的,用来显示方案中的一些信息,包括类、工程文件、方案项目以及资源等。 (1)解决方案资源管理器窗口 打开方式: l单击“视图”菜单下的“解决方案资源管理器”选项; l按快捷键Ctrl+Shift+L。如果这个窗口已经打开,此快捷键可以把此窗口切换到最顶层。 民政学院软件学院 蒋国清
第1章 Visual C++.net简介 1.3 Visual C++.NET 2003开发环境 解决方案资源管理器窗口如图所示。 解决方案资源管理器是用户与工程之间的一个双向的接口。它提供打开的工程的项目的实时信息,同时允许用户管理这些项目。例如,用户可以监控源控文件的当前状态,从一个工程向另一个工程拖放项目,展示解决方案、工程和文件的属性。 民政学院软件学院 蒋国清
第1章 Visual C++.net简介 1.3 Visual C++.NET 2003开发环境 (2)类视图窗口 打开方式: l单击“视图”菜单下的“类视图”选项; l按快捷键Ctrl+Shift+C。如果这个窗口已经打开,此快捷键可以把此窗口切换到最顶层。 类视图窗口如图所示。 这里的类视图与Visual C++ 6.0的类视图窗口基本一样,也包含了当前工程中的所有的类以及这些类中的变量、函数,但是Visual C++.NET新增加了宏和常量,同时在各个类中新增了其基类的信息和消息信息,这些使得控制工程更加有利。 民政学院软件学院 蒋国清
第1章 Visual C++.net简介 1.3 Visual C++.NET 2003开发环境 (3)资源视图窗口 打开方式: l单击“视图”菜单下的“资源视图”选项; l按快捷键Ctrl+Shift+E。如果这个窗口已经打开,此快捷键可以把此窗口切换到最顶层。 资源视图窗口如图所示。 民政学院软件学院 蒋国清
第1章 Visual C++.net简介 1.3 Visual C++.NET 2003开发环境 (4)服务器资源管理器窗口 打开方式: l单击“视图”菜单下的“服务器资源管理器”选项; l按快捷键Ctrl+Shift+S。如果这个窗口已经打开,此快捷键可以把此窗口切换到最顶层。 服务器资源管理器窗口如图所示。 民政学院软件学院 蒋国清
第1章 Visual C++.net简介 1.3 Visual C++.NET 2003开发环境 服务器资源管理器是Visual C++.NET中新展出的一种服务器端开发控制平台,它可以帮助开发人员操作自己拥有访问权限的任何机器上的资源。使用服务器资源管理器,开发人员可以建立到服务器的连接并浏览服务器上的各种资源,包括消息队列、性能评估、服务、进程、事件记录和数据库对象等。 此外,服务器资源管理器还可以帮助开发人员在编程时从他们的Visual C++.NET应用程序中直接引用服务器组件和资源。 最后,服务器资源管理器可以让开发人员直接访问特定服务器上可获取的全部Web服务。使用服务器资源管理器,开发人员可以查看Web服务的方法和布局的相关信息,并可将这些信息最终应用到自己的应用程序中去。 输出窗口区 输出窗口区是由任务列表(Task List)窗口、命令(Command)窗口、输出(Output)窗口及查找 (Find)窗口等组成的,用来显示任务、编连信息、查找内容等。 民政学院软件学院 蒋国清
第1章 Visual C++.net简介 1.3 Visual C++.NET 2003开发环境 (1)任务列表窗口 打开方式: l单击“视图”菜单下的“其他窗口”子菜单下的“任务列表”选项; l按快捷键Ctrl+Shift+K。如果这个窗口已经打开,此快捷键可以把此窗口切换到最顶层。 在应用程序的开发任务当中,开发人员除了编写代码、创建组件之外,他们还需要标记他们所写的代码(例如为代码添加注释),这样有利于他们以后对应用程序的维护和修改。 为此,Visual C++.NET为开发人员提供了一个任务列表窗口,如图所示。 使用任务列表窗口,开发人员可以为自己编写的应用程序代码添加任意的注释和标记。此外,从任务列表窗口中,开发人员还可以获取应用程序项目的编译/链接过程中的错误和警告信息。 民政学院软件学院 蒋国清
第1章 Visual C++.net简介 1.3 Visual C++.NET 2003开发环境 属性窗口区 属性窗口区是由属性(Properties)窗口、动态帮助(Dynamic help)窗口及收藏(Favorites)窗口等组成的,用来显示各种对象的属性、动态的帮助项目以及用户收藏的页面地址。 (1)属性窗口 打开方式: l单击“视图”菜单下的“属性窗口”选项; l按快捷键F4。如果这个窗口已经打开,此快捷键可以把此窗口切换到最顶层。 属性窗口如图所示。 民政学院软件学院 蒋国清
第1章 Visual C++.net简介 1.3 Visual C++.NET 2003开发环境 (2)动态帮助 动态帮助是Visual C++.NET为开发人员提供的一项十分有用的功能,其窗口如图所示。 动态帮助窗口为开发人员试图完成的开发任务提供了一次性单击即可获取的快速帮助。不管开发人员处于开发的什么阶段,正在Visual C++.NET中使用什么编辑器和设计工具,通过跟踪分析开发人员所作出的选择内容、光标的位置、IDE中拥有输入焦点的项目,动态帮助系统就可以自动对MSDN中提供的帮助主题进行适当地过滤,并将相关的帮助信息呈现给开发人员。 民政学院软件学院 蒋国清
第1章 Visual C++.net简介 1.4 第一个Visual C++.NET的应用程序 本节将介绍如何在Visual C++.NET 2003下编写最简单的程序,并选择控制台应用程序作为第一个例子。程序员在开发过程中,总免不了要对代码进行调试,因此本节也将介绍调试的基本知识。 现在我们开始编写全书的第一个程序,跟我们以前需要先完成所有的代码书写的程序设计方法不同,首先,可以利用Visual C++.NET的可视化编程工具AppWizard生成框架,然后根据目标程序的要求,看那些地方需要修改,再往里添写代码。AppWizard将可以帮助我们生成大量代码,这种编程方式也许会让人很有成就感。 在本实例中,将利用MFC应用程序向导创建一个单文档应用程序,在单文档的窗口中将显示一行字:“Hello World”。用户将学会如何用MFC应用程序向导创建一个基本应用程序所需的步骤,同时也学习如何在单文档的视图中显示文字。 民政学院软件学院 蒋国清
第1章 Visual C++.net简介 1.4 第一个Visual C++.NET的应用程序 1.使用MFC应用程序向导生成应用程序框架 操作步骤: (1)启动Visual Studio.NET 2003,进入带有起始页的界面。 (2)在Visual Studio.NET 2003的开发环境中,单击“起始页”中的“项目”选项卡中的“新建项目”按钮,或者选择“文件”菜单下的“新建”子菜单中的“新建项目”选项,弹出“新建项目”对话框,新建一个Visual C++项目,选用MFC应用程序模板,项目名称为“HelloWorld”。单击“确定”按钮,进入MFC应用程序向导界面。 民政学院软件学院 蒋国清
第1章 Visual C++.net简介 1.4 第一个Visual C++.NET的应用程序 说明:Visual C++.NET提供了各种应用程序的模板,通过使用这些模板来创建应用程序,将会大大简化界面编程的工作,使程序员能够将精力放在提高程序的功能上,而无需花费过多的时间来组织界面。 通过应用程序的模板来创建应用程序是Visual C++.NET的一大特色,常用的应用程序模板有:MFC应用程序模板、Win32项目模板和托管C++应用程序模板等。 (3)在MFC应用程序向导中的“应用程序类型”选项中,应用程序类型选择“单文档”,其余选项采用默认设置,如下图所示。 民政学院软件学院 蒋国清
第1章 Visual C++.net简介 1.4 第一个Visual C++.NET的应用程序 说明:MFC应用程序向导可以创建以下三种类型的应用程序结构。 单文档界面(SDI)一次只允许打开一个文档。 多文档界面(MDI)允许同时打开多个文档。例如,Microsoft Word和Excel就是典型的MDI应用程序。 基于对话框的应用程序不支持文档/视图结构,而是仅仅显示一个简单的对话框。这对小的应用程序是很方便的,但如果要用到菜单、工具栏和打印等功能,那么就应该创建基于文档的应用程序。 (4)接下来单击“复合文档支持”选项,打开的选项对话框询问是否需要复合文档的支持。在本例中,在“复合文档支持”选项组中选中“无”单选按钮,如图所示。 民政学院软件学院 蒋国清
第1章 Visual C++.net简介 1.4 第一个Visual C++.NET的应用程序 (5)单击“文档模板字符串”选项,弹出如图1-30所示选项面板,在“文件扩展名”文本框中输入一个文件扩展名,如本例中输入的“hwd”,其余选项保持默认设置。 民政学院软件学院 蒋国清
第1章 Visual C++.net简介 1.4 第一个Visual C++.NET的应用程序 (6)单击“数据库支持”选项,弹出如图所示选项面板。可以设置是否需要数据库支持。由于本例是一个非常简单的显示字符的MFC程序,所以不用选择数据库支持,故选中“无”单选按钮即可。 民政学院软件学院 蒋国清
第1章 Visual C++.net简介 1.4 第一个Visual C++.NET的应用程序 (7)单击“用户界面功能”选项,可以选择应用程序的界面特征,这里采用默认设置,如图所示。 民政学院软件学院 蒋国清
第1章 Visual C++.net简介 1.4 第一个Visual C++.NET的应用程序 (8)单击“高级功能”选项,弹出如图所示选项面板。在该选项面板中可设置项目的一些高级特点。本例中保持默认设置即可。 民政学院软件学院 蒋国清
第1章 Visual C++.net简介 1.4 第一个Visual C++.NET的应用程序 (9)单击最后一个选项“生成的类”,弹出如图所示选项面板。在该选项面板中,用户可以设置将要创建的类的属性。本例中,保持默认设置即可。 说明:如果要更改类名和文件名,可以从列表框中选择类,这时类名、基类名、头文件和实现文件都将显示在列表框下面的编辑框中,用户可以根据需要进行修改。 (10)全部设置完成后,我们再单击“概述”选项,从中可以看到对创建项目所设置的信息。如果设置有误,可以到与设置相应的选项面板中重新设置。如果设置无误,可单击“完成”按钮,则系统自动创建一个名为“HelloWorld”的新项目,并为应用程序生成必要的框架文件。 民政学院软件学院 蒋国清
第1章 Visual C++.net简介 1.4 第一个Visual C++.NET的应用程序 2.在文件中添加代码并运行程序 到目前为止,我们没有写一行代码,可是已经生成了许多行的代码和文件。在解决方案资源管理器窗口中,我们可以看到许多源文件和头文件。如图1-36所示。主要的源文件和头文件含义如下。 民政学院软件学院 蒋国清
第1章 Visual C++.net简介 1.4 第一个Visual C++.NET的应用程序 首先是两个头文件:“resource.h”文件和“stdafx.h”文件。“resource.h”文件主要是关于资源文件的一些定义,“stdafx.h”文件和对应的“stdafx.cpp”文件主要包含了一些预编译信息。在“解决方案资源管理器”中双击“stdafx.h”文件,可以看到,它上面包含了两条#include命令。其中一条为“#include<iostream>”,它的作用将会在后面进行解释。 接着来看看三个源文件。“stdafx.cpp”文件在前面已经介绍了。“AssemblyInfo.cpp”文件主要包含用于修改程序集元数据的自定义属性,这里可以暂且不管它。最重要的一个文件是“HelloWorld.cpp”文件,它是新建项目HelloWorld的主项目文件。双击“源文件”文件夹下的“HelloWorld.cpp”项,将在代码编辑器中看到该文件的内容,如下所示: 民政学院软件学院 蒋国清
第1章 Visual C++.net简介 1.4 第一个Visual C++.NET的应用程序 #include “stdafx.h” #using <mscorlib.dll> using namespace System; int_tmain() { //TODO:请用您自己的代码替换下面的示例代码 Console::WriteLine(s“Hello World”); return 0; } 该程序即是整个项目的主程序,整个项目从该程序开始执行。下面逐条解释这个程序: #include“stdafx.h”:预处理命令,它指示在编译时将文件“stdafx.h”的内容复制到该文件中。 民政学院软件学院 蒋国清
第1章 Visual C++.net简介 1.4 第一个Visual C++.NET的应用程序 #using <mscorlib.dll>:导人MSIL(Microsoft Intermediate Language,微软中间语言)文件mscorlib.d11,以便处理这个DLL文件中所定义的托管数据和托管结构,所有用到托管类型的文件都要有这个语句。 这里也可简单的把该语句理解为一个托管程序中的必备语句。 using namespace System:该语句使用户可以使用System命名空间定义的类和数据类型,在本例中,就是指后面的Console类。这里的System是Microsoft.NET系统提供的类库,这在前面已经有了介绍。 当然,也可以不写该语句,但是每次使用Console类时都要改为System::Conso1e形式。 可以想象,当大量使用System命名空间的类时,使用一条using语句比在每个类前加前缀要方便得多。 民政学院软件学院 蒋国清
第1章 Visual C++.net简介 1.4 第一个Visual C++.NET的应用程序 Int_tmain():这是程序的人口点,所有的程序都从这里开始执行,它相当于普通C/C++程序的main()函数。程序从该函数的第一行开始执行,执行完最后一行后程序结束。 Console::WriteLine(s“Hello World”):该语句用于向屏幕输出字符串“Hello World”,这里用到了Conso1e类。Conso1e是在命名空间System下的一个类,它表示通常打交道的控制台,这里调用其静态方法WriteLine(),用于向控制台输出一个字符串并换行,还有一个常用的输出函数是Write(),它与WriteLine()的区别是输出完后并不换行。Conso1e类还有两个用于输入的常用函数:Read()与ReadLine()。它们的含义可类比前面的两个输出函数。 Return 0:用于结束程序返回0值。 建立了“HelloWorld”新项目后,通过浏览项目,就可发现向导已经添加了一个最简单的程序所需的所有代码,可以完全不加修改而直接编译运行,从而实现在屏幕上显示“Hello World”字符串的功能了。下面介绍如何编译运行该程序。 民政学院软件学院 蒋国清
第1章 Visual C++.net简介 1.4 第一个Visual C++.NET的应用程序 (1)首先,选择“生成”菜单下的“编译”菜单项,系统将会编译“HelloWorld.cpp”文件。 (2)接着选择“生成”菜单下的“生成解决方案”或“生成HelloWorld”菜单项,系统将会完成链接并生成该项目的可执行文件。 当然,如果觉得一个个地编译源文件没有必要的话,也可一开始就选择“生成”菜单下的“生成解决方案”菜单项,系统将会同时完成编译和链接,生成该项目的可执行文件。 在编译运行程序时,屏幕下方的“输出”窗口将会显示许多的信息,包括编译的状态,是否有错误,编译链接的结果等,有必要留意该窗口以获得更多的信息。如当编译链接顺利完成,生成了可执行文件后,“输出”窗口将会如图所示。 民政学院软件学院 蒋国清
第1章 Visual C++.net简介 1.4 第一个Visual C++.NET的应用程序 (3)选择“调试”菜单下的“开始执行(不调试)”菜单项,即可执行程序。在本程序中,执行界面将如图所示。 民政学院软件学院 蒋国清