使用 Eclipse C/C++ Development Toolkit 开发应用程序

使用 Eclipse C/C++ Development Toolkit 开发应用程序

使用 Eclipse C/C++ Development Toolkit 开发应用程序 (转)

来自http://blog.csdn.net/favory/article/details/1890801

提到 “Eclipse”,大多数人都会想到 “Java™ IDE”。与其他 IDE 相比,Eclipse 更多地被提到。使用适当的插件,可以把 Eclipse 与 PHP、Ruby、Groovy、C 和 C++ 结合使用。在本文中,您将开始使用 Eclipse C/C++ Development Toolkit (CDT)。我们将构建一个 C++ 编写的简单应用程序,使用 CDT 和 C++ Standard Template Library (STL) 简化构建过程并且利用 C++ 的一些强大功能。

本文是 “用 Eclipse 平台进行 C/C++ 开发” 的后续文章,适用于需要学习使用 Eclipse CDT 进行 C++ 开发的 C++ 开发人员。本文开发了一个简单的 C++ 应用程序。该应用程序将使用 C++ STL。读者们应当熟悉 STL,并且熟悉基本的面向对象编程原理,例如继承和多态。熟悉 Eclipse 将会有帮助,但不作硬性要求。

开始之前

您需要安装以下软件:

Eclipse

我们将使用 Eclipse 的插件 CDT,因此您当然需要使用 Eclipse。本文将使用 Eclipse V3.2。
Java Runtime Environment

我们要构建 C++ 应用程序,但是我们将使用 Eclipse。Eclipse 本身是 Java 应用程序,因此它需要使用 Java Runtime Environment (JRE)。本文使用 Eclipse V3.2,它要求使用 JRE V1.4 或更高版本。如果还需要使用 Eclipse 进行 Java 开发,则需要使用 Java Development Kit (JDK)。
Eclipse C/C++ Development Toolkit (CDT)

本文是 CDT 的介绍性文章,因此当然需要使用 CDT。要获得在早期版本的 Eclipse 中安装 CDT 的说明,阅读 2003 年发表在 developerWorks 中标题为 “
用 Eclipse 平台进行 C/C++ 开发” 的文章。
Cygwin

如果要使用 Microsoft Windows®,您将会发现 Cygwin 十分有用,Cygwin 在 Windows 中提供了类似 Linux® 的环境。
GNU C/C++ Development Tools

CDT 将使用标准的 GNU C/C++ 工具编译代码、构建项目和调试应用程序。这些工具包括 GNU Compiler Collection (GCC) for C++ (g++)、make 和 GNU Project Debugger (GDB)。如果您是一名使用 Linux 或 Mac OS X 的程序员,则可以将这些工具安装到计算机上。本文包含针对 Windows 设置这些工具的说明。
使用 Eclipse C/C++ Development Toolkit 开发应用程序使用 Eclipse C/C++ Development Toolkit 开发应用程序

Eclipse CDT

Eclipse CDT 是 Eclipse 插件,它将把 Eclipse 转换为功能强大的 C/C++ IDE。它被设计为将 Java 开发人员喜爱的许多 Eclipse 优秀功能提供给 C/C++ 开发人员,例如项目管理、集成调试、类向导、自动构建、语法着色和代码完成。当 Eclipse 被用作 Java IDE 时,它将利用 JDK 并与之集成。同样地,CDT 将利用标准的 C/C++ 工具并与之集成,例如 g++、make 和 GDB。这使得 CDT 在 Linux 中变得非常流行,这些工具都可在 Linux 中使用并用于大多数 C++ 开发。可以在 Windows 上设置 CDT 以使用相同的工具。目前还在努力将 CDT 与 Microsoft 的 C++ 工具结合使用,以使 CDT 对 Windows C++ 开发人员更有吸引力。

使用 Eclipse C/C++ Development Toolkit 开发应用程序使用 Eclipse C/C++ Development Toolkit 开发应用程序

安装 CDT

首先假定您安装了 Eclipse 并可以运行它。如果不能,请访问 Eclipse 的 Web 站点以获得启动和运行说明。让我们来安装 CDT。CDT 是 Eclipse 插件,因此它将使用 Eclipse 的 Software Updates 功能。选择 Help > Software Updates > Find and Install


图 1. Eclipse Software Updates
Eclipse Software Updates

接下来,您将需要选择 Search 以查找要安装的新功能。


图 2. 搜索新功能
搜索新功能

如果使用的是最新版本的 Eclipse,则应当附带了 Callisto 或 Europa 搜索站点。(编者注:由于本文撰写于 2007 年 4 月,因此 Europa 发行版仍处于计划阶段。但是,人们期望安装 Europa 就像安装 Callisto 一样)。只需选中它并单击 Finish


图 3. Callisto 搜索站点
Callisto 搜索站点

Eclipse 可能会要求您从镜像站点列表中选择 Callisto 搜索站点。任选一个看似与您距离最近的镜像站点。您应当会看到来自 Callisto 搜索站点中的插件列表。您将需要选择 C and C++ Development 并单击 Next


图 4. 可用 Callisto 插件
可用 Callisto 插件

系统将询问您是否接受 CDT 的许可。完成后,您可以单击 Next。您将看到将要下载和安装软件的摘要。只需单击 Finish


图 5. 下载和安装摘要
下载和安装摘要

Eclipse 的 Update Manager 随后将从先前选定的镜像站点中下载 CDT 插件。CDT 总共大约 11 MB,因此这可能需要花费一些时间,这取决于 Internet 连接速度。下载所有软件及插件后,系统将要求您确认是否需要安装新功能。单击 Install All


图 6. 确认安装
确认安装

安装完 CDT 之后,将要求您重新启动 Eclipse。请重新启动。在 Eclipse 重新启动后,CDT 已经准备就绪。

使用 Eclipse C/C++ Development Toolkit 开发应用程序使用 Eclipse C/C++ Development Toolkit 开发应用程序
使用 Eclipse C/C++ Development Toolkit 开发应用程序

Windows 配置

如果是在 Linux 或 Mac OS X 上运行 Eclipse,则已经准备好开始使用 CDT 开发 C++ 应用程序。如果是在 Windows 中,则可能还需几个额外步骤。如前述,CDT 依赖于标准的 GNU C++ 开发工具:g++、make 和 GDB。Linux 或 Mac OS X 中通常附带了这些开发工具。Window 则没有。但是不必担心。这些工具都可以轻松地安装到 Windows 中。最简单的方法可能是安装 Cygwin。Cygwin 在 Windows 中提供了类似 Linux 的环境(请参阅 参考资料)。安装 Cygwin 时,将要求您选择需要安装的软件包。确保转到开发部分并选择 gcc:g++、make 和 GDB。这样也将安装这些开发工具的先决条件。

安装完 Cygwin 之后,您将需要把 g++、make 和 GDB 添加到路径中。完成此操作的最简单方法是将 Cygwin 的 bin 目录添加到路径中,因为那是可以找到 g++、make 和 GDB 的位置。完成后,请重新启动 Eclipse。

使用 Eclipse C/C++ Development Toolkit 开发应用程序使用 Eclipse C/C++ Development Toolkit 开发应用程序

搏彩程序开发讲解(实例)

此时,我们应当已经准备好开始用 CDT 开发应用程序。让我们暂停一下来勾勒所需开发的应用程序。样例应用程序是用于生成彩票号码的简单命令行程序。很多州都有彩票,并且规则各异。我们将允许用户选取需要生成哪个州的彩票号码。这将为我们提供一种优秀的方法来使用 C++ 的多态支持。

使用 Eclipse C/C++ Development Toolkit 开发应用程序使用 Eclipse C/C++ Development Toolkit 开发应用程序
使用 Eclipse C/C++ Development Toolkit 开发应用程序

创建项目

Eclipse 将使用透视图的概念以允许各种插件来自定义其命令和视图。默认情况下,Eclipse 将在 Java 透视图中启动。CDT 附带了自己的透视图,因此我们将需要切换到该透视图。为此,请选择 Window > Open Perspective > Other。您应当会看到可用的透视图列表。选择 C/C++ 透视图并单击 OK


图 7. 选择 C/C++ 透视图
选择 C/C++ 透视图

Eclipse 现在应当类似图 8 所示:


图 8. C/C++ 透视图
C/C++ 透视图

Eclipse 将把代码组织成项目,因此我们需要创建一个新项目。请选择 File > New > Managed Make C++ Project


图 9. 新建 C++ 项目
新建 C++ 项目

您可能已经注意到该项目有几个不同选项。我们需要一个 C++ 项目。选择了 “Managed Make”,因为那将允许 Eclipse 为我们创建 make 文件。您可以选择 “Standard Make” 风格并编写您自己的 make 文件。我们现在应当已经在 New Project 向导中,在其中把项目命名为 Lottery 并单击 Finish

此操作将创建一个空项目,您应当会在 C/C++ Projects 窗口中看到该项目。在项目上右键单击并选择 New > Source Folder。此操作将打开 “New Source Folder” 向导,在其中把文件夹命名为 src 并单击 Finish

使用 Eclipse C/C++ Development Toolkit 开发应用程序使用 Eclipse C/C++ Development Toolkit 开发应用程序
使用 Eclipse C/C++ Development Toolkit 开发应用程序

基本的彩票

我们已经准备好开始创建一些代码。首先创建应用程序的可执行文件。右键单击刚创建的源文件夹并且选择 New > Source File,如图 10 所示:

现在让我们创建一个空的 main 方法。这只是一个占位符;我们将在创建项目的其余部分之后将更多内容添加到此方法中。

int main()
{
     return 0;
}

保存项目,然后 Eclipse 将为您自动创建该方法。您应当会在控制台中看到表明已成功编译该方法的一些输出。

我们已经准备好创建第一个类。右键单击刚创建的源文件夹并且选择 New > Class


图 10. 新建类
新建类

此操作应当会打开 New Class 向导。我们将给类提供一个名称空间 lotto,并且将把类称为 Lottery


图 11. Lottery 类
Lottery 类

Eclipse 现在将为您的类创建存根。CDT 可以为您提供很多有益的帮助。它将在头文件中生成相应的编译器指令。通过生成独立的接口(Lottery.h)和实现(Lottery.cpp)文件,有助于采用最佳实践,它还通过将类的析构函数声明为虚函数实现另一项最佳实践。我们可以向这些类输入清单 1 和清单 2 中所示的这些类的源代码。


清单 1. Lottery.h

                
#ifndef LOTTERY_H_
#define LOTTERY_H_
#include <string>
#include <sstream>
#include <cstdlib>
#include <time.h>
using namespace std;
namespace lotto
{

class Lottery
{
     protected:
          int ticketSize, maxNum;
          int* generateNumbers();
public:
     Lottery(int,int);
     virtual ~Lottery();
     virtual string printTicket();
};

}

#endif /*LOTTERY_H_*/

清单 2 显示了 Lottery 类的实现文件。


清单 2. Lottery.cpp

                
#include "Lottery.h"

namespace lotto
{

Lottery::Lottery(int size, int num)
{
     this->ticketSize = size;
     this->maxNum = num;
}

Lottery::~Lottery()
{
}

int* Lottery::generateNumbers()
{
     int* allNums = new int[this->maxNum +1];
     for (int i=0; i <= this->maxNum ; i++)
     {
          allNums[i] = 0;
     }
     int* nums = new int[this->ticketSize];
     for (int i=0; i < this->ticketSize; i++)
     {
          int val = 1 + rand() % (this->maxNum);
          if (allNums[val])
          {
               i--;
          }
          else 
          {
               nums[i] = val;
               allNums[val] =1;
          }
     }
     return nums;
}

string Lottery::printTicket()
{
     ostringstream str;
     int* nums = this->generateNumbers();
     for (int i=0;i< this->ticketSize; i++)
     {
          str << *nums << ' ';
          nums++;
     }
     return str.str();
}

}

这段代码有什么功能?我们的 Lottery 类有两个属性。ticketSize 属性是彩票号码的数目。maxNum 是最大的彩票号码。稍后,我们将使用佛罗里达州彩票作为示例。其中,您将从 1 到 53 之间选择六个数字,因此 ticketSize 将是 6 并且 maxNum 将是 53。

generateNumbers 方法将根据彩票上的号码生成一个数字数组。它将使用 STL 函数 rand() 随机生成数字。allNums 数组用于跟踪到目前为止已经生成的数字,这样我们可以确保不会在彩票上获得重复数字。最后,printTicket() 将创建彩票的一个字符串表示。

保存文件时,Eclipse 将自动构建项目。同时,如果保存项目,那么它应当被编译并且您应当会在控制台中看到编译消息,如清单 3 所示:


清单 3. 控制台中的编译器输出

                
**** Build of configuration Debug for project Lottery ****

make -k all 
Building file: ../src/Main.cpp
Invoking: GCC C++ Compiler
g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/Main.d" -MT"src/Main.d" 
-o"src/Main.o" "../src/Main.cpp"
Finished building: ../src/Main.cpp
 
Building target: Lottery
Invoking: MacOS X C++ Linker
g++  -o "Lottery"  ./src/Lottery.o ./src/Main.o   
Finished building target: Lottery
 
Build complete for project Lottery
使用 Eclipse C/C++ Development Toolkit 开发应用程序使用 Eclipse C/C++ Development Toolkit 开发应用程序
使用 Eclipse C/C++ Development Toolkit 开发应用程序

使用 Eclipse C/C++ Development Toolkit 开发应用程序 回页首

MegaLottery

您可能已经注意到我们在头文件中声明 printTicket() 方法时把它声明成了一个虚方法。这将允许我们生成 Lottery 的子类并覆盖此方法。我们需要这样做的原因是某些州有 “mega” 号码的彩票。这是一个单独生成的号码,它是除了生成的其他号码以外任何彩票必须匹配的号码。让我们为这些州创建一个 Lottery 的子类 MegaLottery 类。

像以前所做的那样,再次右键单击源文件夹并且选择 New > Class。这次在 New Class 向导中,我们将在同一个名称空间中声明新类,但是把它称为 MegaLottery


图 12. MegaLottery
MegaLottery 类

要生成 Lottery 的子类,请选择 Base Classes 部分旁边的 Add 按钮。此操作将打开 Choose Base Class 对话框。您可以开始键入类名,并且 Eclipse 将快速缩小基本候选类的列表。您需要选择 Lottery 并单击 OK


图 13. 选择基类
选择基类

我们可以输入 MegaLottery 的代码,如清单 4 和清单 5 所示:


清单 4. MegaLottery.h

                
#ifndef MEGALOTTERY_H_
#define MEGALOTTERY_H_

#include "Lottery.h"

using std::string;

namespace lotto
{

class MegaLottery : public lotto::Lottery
{
     protected:
          int maxMegaNum;
public:
     MegaLottery(int,int,int);
     virtual ~MegaLottery();
     string printTicket();
};

}

#endif /*MEGALOTTERY_H_*/

清单 5 显示了 MegaLottery 类的实现文件。


清单 5. MegaLottery.cpp

                
#include "MegaLottery.h"

using namespace std;

namespace lotto
{

MegaLottery::MegaLottery(int ticketSize, int maxNum, int maxMegaNum) : 
    Lottery(ticketSize,maxNum)
{
     this->maxMegaNum = maxMegaNum;
}

MegaLottery::~MegaLottery()
{
}

string MegaLottery::printTicket()
{
     ostringstream tick;
     tick << Lottery::printTicket() << " Mega: ";
     int mega = 1 + rand() % this->maxMegaNum;
     tick << mega;
     return tick.str();
}

}

LotteryMegaLottery 之间的主要差别是 MegaLottery 有一个附加属性 maxMegaNum。这是 mega 号码可以获得的最大值。它将覆盖 printTicket() 方法。它将使用基类来生成彩票的第一部分,然后将生成 mega 号码并将其附加到彩票的字符串表示后面。

只是需要一种创建各种彩票的方法。我们将使用 Factory Pattern 类来完成此操作。我们将通过添加 LotteryFactory 类来完成此操作。我们需要所有 Lotteries 都来自同一个工厂,因此我们将使 LotteryFactory 保持独立。其代码如清单 6 和清单 7 所示:


清单 6. #ifndef LOTTERYFACTORY_H_

                
#define LOTTERYFACTORY_H_

#include "Lottery.h"

namespace lotto
{

class LotteryFactory
{
    
public:
    enum State { California, Florida };
    static LotteryFactory* getInstance();
    Lottery* getLottery(State);
private:    
    LotteryFactory();
};

}

#endif /*LOTTERYFACTORY_H_*/

清单 7 显示了 LotteryFactory 类的实现文件。


清单 7. LotteryFactory.cpp

                
#include "LotteryFactory.h"
#include "MegaLottery.h"

namespace lotto
{

LotteryFactory::LotteryFactory()
{
    srand(time(NULL));
}

Lottery* LotteryFactory::getLottery(State s)
{
    if (s == LotteryFactory::California)
    {
        Lottery* lotto = new MegaLottery(5,47,27);
        return lotto;
    }
    else 
    {
        Lottery* lotto = new Lottery(6,53);
        return lotto;
    }
}

LotteryFactory* LotteryFactory::getInstance()
{
    static LotteryFactory instance;
    return &instance;
}

}

LotteryFactory 有彩票的各种枚举类型。我们在示例中仅采用了 Florida 和 California,但是添加所需数目的类型应当不难。LotteryFactory 的构造函数将构造我们的彩票类所使用的 rand() 函数。我们只需实现可执行文件的 main 方法。


清单 8. Main.cpp

                
#include <iostream>
#include "LotteryFactory.h"

using namespace lotto;
int main()
{
    LotteryFactory* factory = LotteryFactory::getInstance();
    cout << "What lottery do you want to play?" << endl;
    cout << "(1) California, (2) Florida" << endl;
    int cmd;
    scanf("%d", &cmd);
    Lottery* lotto = 0;
    switch (cmd)
    {
        case 1 :
        lotto = factory->getLottery(LotteryFactory::California);
        break;
        
        case 2 :
        lotto = factory->getLottery(LotteryFactory::Florida);
        break;
        
        default :
        cout << "Sorry didn't understand that" << endl;
    }
    cout << "Ticket: " << lotto->printTicket() << endl;
    delete lotto;
    return 0;
}
使用 Eclipse C/C++ Development Toolkit 开发应用程序使用 Eclipse C/C++ Development Toolkit 开发应用程序

运行程序

我们已经准备好运行程序。选择 Run > Run


图 14. 选择基类
选择基类

选择 C/C++ Local Application 并单击 New 按钮。


图 15. 新建 C/C++ 运行配置文件
新建 C/C++ 运行配置文件

此操作将打开 Lottery 项目的创建运行配置文件界面。您需要通过单击 Search Project 按钮来选择它的可执行文件。


图 16. 搜索项目查找可执行文件
搜索项目查找可执行文件

您可以选择 Eclipse 为您创建的二进制文件并单击 OK


图 17. 搜索项目查找可执行文件
搜索项目查找可执行文件

只需单击 Run,并且程序应当已经在控制台中运行。下面的代码将显示一些样例输出。

What lottery do you want to play?
(1) California, (2) Florida
2
Ticket: 12 28 24 15 35 22
使用 Eclipse C/C++ Development Toolkit 开发应用程序使用 Eclipse C/C++ Development Toolkit 开发应用程序

调试程序

程序应当运行正常,但是让我们看一下如何调试应用程序。首先,在代码中创建一个断点。选取一行并在它的旁边点击鼠标右键,然后选择 Toggle Breakpoint


图 18. 创建断点
创建断点

我们需要创建调试配置,就像创建运行配置一样。选择 Run > Debug


图 19. 创建调试配置
创建调试配置

此操作应当会打开调试配置。这是基于运行配置的,并且应当不需要更改任何内容。只需单击 Debug


图 20. 调试配置
调试配置

调试程序启动后,它将提示您切换到 Debugger 透视图。请按照提示操作。注意,在配置中,我们将设定调试程序在 main 方法启动时自动断开。因而,调试程序应当立即断开并且您应当会看到类似图 21 所示的屏幕。


图 21. 调试程序
调试程序

使用 Eclipse C/C++ Development Toolkit 开发应用程序使用 Eclipse C/C++ Development Toolkit 开发应用程序

结束语

我们已经构建并调试了彩票应用程序。您可以向其中轻松地添加更多彩票模式。这其中的一些模式可以包括附加子类。CDT 使您可以比以往更轻松地创建这些类和类层次结构,以及更轻松地运行和调试应用程序进行测试。

参考资料

学习

获得产品和技术

  • 了解关于 MinGW 的信息,它是 Cygwin 附带的适用于 Windows 的 GNU C/C++ 工具。
  • 下载 Cygwin,这是针对 Windows 的类似 Linux 的环境。它包含两个部分:用作提供重要 Linux API 功能的 Linux API 仿真层的 DLL 和提供类似 Linux 风格的工具集。
  • Eclipse C/C++ Development Toolkit (CDT) 下载信息包含关于 CDT 可用版本的最新信息。
  • 在 IBM alphaWorks 中查阅最新的 Eclipse 技术下载
  • 下载 IBM 产品评估版,并开始使用 DB2®、Lotus®、Rational®、Tivoli® 和 WebSphere® 的应用程序开发工具和中间件产品。
  • 使用 IBM 试用软件 改进您的下一个开发项目,这些软件可以通过下载或从 DVD 中获得。

讨论

  • Doug Schaefer 是 CDT 的首席开发人员。查阅 Doug on the Eclipse CDT 以获得关于 CDT 的最新新闻。
  • Eclipse Platform 新闻组 应当是讨论关于 Eclipse 的问题的第一站(选择此链接将启动默认的 Usenet 新闻阅读器应用程序并打开 eclipse.platform)。
  • Eclipse 新闻组 中有很多参考资料适用于对使用和扩展 Eclipse 感兴趣的人员。
  • 参与 developerWorks blogs 并加入 developerWorks 社区。 

转载于:https://www.cnblogs.com/flylong0204/p/3376228.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/109989.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • lunix针对用户的常用操作命令

    lunix针对用户的常用操作命令(1)使用who查看目前有哪些用户登录了服务器,见下图[root@vm18~]#whorootpts/02015-03-2710:23(192.168.9.188)从上文可以看出用户root使用ip地址为192.168.9.188登录到linux系统上 (2)看看root都在什么时间登录过系统 [root@vm18~]#lastrootrootpts/0192.168.9.1…

  • unity串口 连接多个串口崩溃_hdmi视频矩阵切换器串口连接说明景阳华泰科技

    unity串口 连接多个串口崩溃_hdmi视频矩阵切换器串口连接说明景阳华泰科技需要做拼接盒与矩阵联动拼接上大屏,在大屏软件上控制矩阵切换器,那么必须要连接上矩阵的232串口;下面是串口连接的具体步骤:方法一:以大屏拼接盒为中心做环通连接(推荐)1、电脑主机引串口连到大屏拼接盒232输入端,(由于大屏拼接盒232是用网口来定义的,所以电脑端要用USB转网口或者232转网口来连接大屏);2、各大屏拼接盒RS232环通连接;3、大屏环通后的RS232…

    2022年10月21日
  • 布隆过滤器Bloom Filter简介

    布隆过滤器Bloom Filter简介

  • XMind 快捷键完整命令

    XMind 快捷键完整命令xmind快捷键XMind快捷键完整命令快捷键(Windows)快捷键(Mac)描述++展开当前分支–收缩当前分支**展开所有分支//收缩所有分支Alt±Alt±显示系统菜单Alt+/Alt±内容辅助Alt+?Alt±上下文信息Alt+向上箭头Alt+向上箭头向前移动主题Alt+向下箭头Alt+向下箭头向后移动主题Alt+向左箭头Alt+向左箭头向左移动主题Alt+向右箭头A

  • mysql 2059,1396,1130错误处理 Navicat远程连接数据库方式。

    mysql 2059,1396,1130错误处理 Navicat远程连接数据库方式。

  • 《数据库系统》期末复习知识点总结(全)

    《数据库系统》期末复习知识点总结(全)目录1.数据库系统基础1.1数据库系统概述基本概念数据独立性1.2概念模型1.3数据库系统的结构2.关系数据库2.1关系数据结构及形式化定义1.数据库系统基础1.1数据库系统概述1.1.1基本概念数据:描述事物的符号记录数据库:数据库是长期储存在计算机内、有组织的、可共享的大量数据的集合DBMS:数据库管理系统数据库系统:数据库系统是由数据库、数据库管理系统(及其应用开发工具)、应用程序和数据库管理员(DataBaseAd…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号