本教程涵盖了从环境搭建到基础语法的学习,再到流程控制和面向对象编程的详细讲解。教程还包括了一个简易图书管理系统的实战项目,帮助读者通过实践加深理解。
C++编程环境搭建与配置安装C++编译器(如MinGW、GCC)
C++编译器是编写、编译和运行C++代码所必需的工具。这里推荐使用MinGW(Minimalist GNU for Windows)或GCC(GNU Compiler Collection)。
安装MinGW
- 访问MinGW官网下载MinGW安装程序。
- 打开安装向导,选择适当的组件进行安装,建议安装“mingw32-base”和“mingw32-gcc-g++”。
- 安装完成后,设置环境变量。右键点击“计算机”或“此电脑”,选择“属性”,点击“高级系统设置”,在“高级”标签页中点击“环境变量”。
- 在“系统变量”部分,新建两个变量:MINGW_HOME和PATH。- MINGW_HOME的值为MinGW的安装路径。
- PATH的值为- %MINGW_HOME%\bin。
 
安装GCC
若使用Linux或macOS系统,GCC默认已安装。
若使用Windows,可以通过MinGW安装GCC,步骤如下:
- 使用MinGW安装程序安装GCC。
- 设置环境变量,步骤同上。
配置集成开发环境(IDE)(如Code::Blocks、Visual Studio)
使用Code::Blocks
- 访问Code::Blocks官网下载安装程序。
- 安装Code::Blocks。
- 打开Code::Blocks,选择“设置” -> “编译器” -> “编译器设置”。
- 选择“添加” -> “添加全局设置”。
- 在“编译器路径”中选择MinGW或GCC的安装路径。
- 在“编译” -> “工具链”中选择“MinGW GCC”。
- 在“链接器” -> “通用设置”中选择“MinGW GCC”。
使用Visual Studio
- 访问Visual Studio官网下载并安装Visual Studio。
- 安装完成后,打开Visual Studio。
- 安装C++开发工具,从“获取工具和功能” -> “工作负载” -> “使用C++进行游戏开发”。
- 在“工具和设置” -> “工具”中选择“C++编译器”和“C++调试器”。
编写第一个C++程序
下面是一个简单的 "Hello, World!" 程序。
#include <iostream>
int main() {
    std::cout << "Hello, World!" << std::endl;
    return 0;
}- 打开你的IDE,新建一个C++项目或工程。
- 将以上代码粘贴到编辑器中。
- 保存文件,文件名例如为hello.cpp。
- 编译并运行程序,查看输出结果。
数据类型与变量声明
基本数据类型
C++中的基本数据类型包括整型(int)、浮点型(float和double)、字符型(char)和布尔型(bool)。
例如:
int myInt = 10; // 整型
float myFloat = 3.14f; // 浮点型
double myDouble = 3.14; // 双精度浮点型
char myChar = 'A'; // 字符
bool myBool = true; // 布尔型变量声明
变量声明格式为类型 变量名 = 初始化值;。
例如:
int age = 25; // 声明一个整型变量age并初始化为25
float height = 1.75; // 声明一个浮点型变量height并初始化为1.75常量与符号常量
使用const关键字
const关键字用于声明常量,常量的值在声明后不能更改。
例如:
const int MAX_COUNT = 100; // 声明一个常量MAX_COUNT并初始化为100
const float PI = 3.14159; // 声明一个常量PI并初始化为3.14159使用#define宏
#define宏可以定义符号常量,但不建议使用这种方式,因为const关键字提供了更好的类型检查。
例如:
#define PI 3.14159
#define MAX_COUNT 100数组和字符串操作
数组
数组用于存储固定数量的数据元素,所有元素类型相同。
例如:
int numbers[5] = {1, 2, 3, 4, 5}; // 定义一个整型数组numbers
char characters[6] = {'a', 'b', 'c', 'd', 'e'}; // 定义一个字符数组characters字符串
字符串通常使用char数组或string类表示。
例如:
#include <iostream>
#include <string>
int main() {
    char str1[10] = "Hello"; // 字符串常量
    std::string str2 = "World"; // 使用string类
    std::cout << str1 << std::endl;
    std::cout << str2 << std::endl;
    return 0;
}简单输入输出操作
输入操作
使用std::cin进行输入。
例如:
#include <iostream>
int main() {
    int num;
    std::cout << "请输入一个整数: ";
    std::cin >> num;
    std::cout << "您输入的整数是: " << num << std::endl;
    return 0;
}输出操作
使用std::cout进行输出。
例如:
#include <iostream>
int main() {
    int num = 10;
    std::cout << "这个整数是: " << num << std::endl;
    return 0;
}条件语句(if-else, switch)
if语句
if语句用于根据条件执行代码块。
例如:
#include <iostream>
int main() {
    int age = 20;
    if (age >= 18) {
        std::cout << "成年人" << std::endl;
    } else {
        std::cout << "未成年人" << std::endl;
    }
    return 0;
}switch语句
switch语句用于在多个选项中选择一个执行代码块。
例如:
#include <iostream>
int main() {
    int num = 2;
    switch (num) {
        case 1:
            std::cout << "数字是1" << std::endl;
            break;
        case 2:
            std::cout << "数字是2" << std::endl;
            break;
        default:
            std::cout << "数字不是1或2" << std::endl;
            break;
    }
    return 0;
}循环语句(for, while, do-while)
for循环
for循环用于执行一系列语句,直到满足条件为止。
例如:
#include <iostream>
int main() {
    for (int i = 0; i < 5; i++) {
        std::cout << "循环次数: " << i << std::endl;
    }
    return 0;
}while循环
while循环用于在满足条件时执行代码块。
例如:
#include <iostream>
int main() {
    int i = 0;
    while (i < 5) {
        std::cout << "循环次数: " << i << std::endl;
        i++;
    }
    return 0;
}do-while循环
do-while循环在循环体执行结束后再检查条件。
例如:
#include <iostream>
int main() {
    int i = 0;
    do {
        std::cout << "循环次数: " << i << std::endl;
        i++;
    } while (i < 5);
    return 0;
}跳转语句(break, continue)
break语句
break语句用于提前退出循环。
例如:
#include <iostream>
int main() {
    for (int i = 0; i < 10; i++) {
        if (i == 5) {
            break;
        }
        std::cout << "循环次数: " << i << std::endl;
    }
    return 0;
}continue语句
continue语句用于跳过当前循环的剩余部分,开始下一次循环。
例如:
#include <iostream>
int main() {
    for (int i = 0; i < 10; i++) {
        if (i % 2 == 0) {
            continue;
        }
        std::cout << "循环次数: " << i << std::endl;
    }
    return 0;
}函数的定义与调用
函数定义
函数定义包括返回类型、函数名、参数列表、函数体。
例如:
#include <iostream>
int add(int a, int b) {
    return a + b;
}
int main() {
    int result = add(3, 4);
    std::cout << "结果是: " << result << std::endl;
    return 0;
}函数调用
调用函数时,传递实际参数。
例如:
int result = add(3, 4); // 调用add函数局部变量与全局变量
局部变量
局部变量在函数内部定义,仅在该函数内可见。
例如:
#include <iostream>
int main() {
    int localVar = 10; // 局部变量
    std::cout << "局部变量值: " << localVar << std::endl;
    return 0;
}全局变量
全局变量在整个程序中可见。
例如:
#include <iostream>
int globalVar = 20; // 全局变量
int main() {
    std::cout << "全局变量值: " << globalVar << std::endl;
    return 0;
}函数重载
函数重载允许使用相同函数名但不同参数列表的多个函数。
例如:
#include <iostream>
int add(int a, int b) {
    return a + b;
}
float add(float a, float b) {
    return a + b;
}
int main() {
    int intResult = add(3, 4);
    float floatResult = add(3.5f, 4.5f);
    std::cout << "整数结果: " << intResult << std::endl;
    std::cout << "浮点数结果: " << floatResult << std::endl;
    return 0;
}类与对象的概念
定义类
类是一个模板,用于定义对象的结构和行为。
例如:
#include <iostream>
class Person {
public:
    std::string name;
    int age;
    void display() {
        std::cout << "姓名: " << name << ", 年龄: " << age << std::endl;
    }
};
int main() {
    Person person1;
    person1.name = "张三";
    person1.age = 20;
    person1.display();
    return 0;
}创建对象
使用类模板创建对象。
例如:
Person person1;
person1.name = "张三";
person1.age = 20;
person1.display();成员变量与成员函数
成员变量
成员变量是类中的数据成员,定义了对象的属性。
例如:
class Person {
public:
    std::string name;
    int age;
};成员函数
成员函数是类中的方法,定义了对象的行为。
例如:
class Person {
public:
    void display() {
        std::cout << "姓名: " << name << ", 年龄: " << age << std::endl;
    }
};构造函数与析构函数
构造函数
构造函数用于初始化对象。
例如:
#include <iostream>
class Person {
public:
    std::string name;
    int age;
    Person(std::string n, int a) : name(n), age(a) {} // 构造函数
    void display() {
        std::cout << "姓名: " << name << ", 年龄: " << age << std::endl;
    }
};
int main() {
    Person person1("李四", 25);
    person1.display();
    return 0;
}析构函数
析构函数用于释放对象的资源。
例如:
#include <iostream>
class Person {
public:
    std::string name;
    int age;
    Person(std::string n, int a) : name(n), age(a) {}
    ~Person() {
        std::cout << "释放资源" << std::endl;
    }
    void display() {
        std::cout << "姓名: " << name << ", 年龄: " << age << std::endl;
    }
};
int main() {
    Person person1("王五", 30);
    person1.display();
    return 0;
}封装与继承
封装
封装将数据和方法绑定在一起,隐藏实现细节。
例如:
#include <iostream>
class Person {
private:
    std::string name;
    int age;
public:
    Person(std::string n, int a) : name(n), age(a) {}
    void display() {
        std::cout << "姓名: " << name << ", 年龄: " << age << std::endl;
    }
};
int main() {
    Person person1("赵六", 35);
    person1.display();
    return 0;
}继承
继承允许一个类继承另一个类的成员。
例如:
#include <iostream>
class Person {
public:
    std::string name;
    int age;
    Person(std::string n, int a) : name(n), age(a) {}
    void display() {
        std::cout << "姓名: " << name << ", 年龄: " << age << std::endl;
    }
};
class Student : public Person {
public:
    int studentId;
    Student(std::string n, int a, int id) : Person(n, a), studentId(id) {}
    void display() {
        std::cout << "姓名: " << name << ", 年龄: " << age << ", 学生ID: " << studentId << std::endl;
    }
};
int main() {
    Student student1("钱七", 23, 1001);
    student1.display();
    return 0;
}需求分析与设计
需求分析
图书管理系统需要实现以下功能:
- 添加书籍
- 删除书籍
- 查找书籍
- 显示所有书籍
设计思路
设计一个简单的书籍类Book,包含书籍的属性(如ISBN、标题、作者、出版社)和方法(如添加书籍、删除书籍、查找书籍、显示书籍)。
实现代码
#include <iostream>
#include <string>
#include <vector>
using namespace std;
class Book {
private:
    string isbn;
    string title;
    string author;
    string publisher;
public:
    Book(string isbn, string title, string author, string publisher) {
        this->isbn = isbn;
        this->title = title;
        this->author = author;
        this->publisher = publisher;
    }
    void display() {
        cout << "ISBN: " << isbn << ", 标题: " << title << ", 作者: " << author << ", 出版社: " << publisher << endl;
    }
};#include <iostream>
#include <string>
#include <vector>
#include "Book.h" // 引入Book类的头文件
using namespace std;
class BookManager {
private:
    vector<Book> books;
public:
    void addBook(string isbn, string title, string author, string publisher) {
        Book newBook(isbn, title, author, publisher);
        books.push_back(newBook);
        cout << "书籍添加成功!" << endl;
    }
    void removeBook(string isbn) {
        for (auto it = books.begin(); it != books.end(); ++it) {
            if (it->isbn == isbn) {
                books.erase(it);
                cout << "书籍删除成功!" << endl;
                return;
            }
        }
        cout << "未找到该书籍!" << endl;
    }
    void findBooksByAuthor(string author) {
        for (const auto& book : books) {
            if (book.author == author) {
                book.display();
            }
        }
    }
    void displayAllBooks() {
        for (const auto& book : books) {
            book.display();
        }
    }
};
int main() {
    int choice;
    string isbn, title, author, publisher;
    BookManager manager;
    do {
        cout << "1. 添加书籍" << endl;
        cout << "2. 删除书籍" << endl;
        cout << "3. 查找书籍" << endl;
        cout << "4. 显示所有书籍" << endl;
        cout << "0. 退出" << endl;
        cout << "请选择操作: ";
        cin >> choice;
        switch (choice) {
            case 1:
                cout << "输入ISBN: ";
                cin >> isbn;
                cout << "输入标题: ";
                cin >> title;
                cout << "输入作者: ";
                cin >> author;
                cout << "输入出版社: ";
                cin >> publisher;
                manager.addBook(isbn, title, author, publisher);
                break;
            case 2:
                cout << "输入要删除的ISBN: ";
                cin >> isbn;
                manager.removeBook(isbn);
                break;
            case 3:
                cout << "输入作者: ";
                cin >> author;
                manager.findBooksByAuthor(author);
                break;
            case 4:
                manager.displayAllBooks();
                break;
            case 0:
                cout << "退出程序" << endl;
                break;
            default:
                cout << "输入错误,请输入正确的选项" << endl;
        }
    } while (choice != 0);
    return 0;
}最终测试与运行
测试代码
在main函数中,用户可以选择不同的选项,执行相应的操作。
例如:
int main() {
    int choice;
    string isbn, title, author, publisher;
    BookManager manager;
    do {
        cout << "1. 添加书籍" << endl;
        cout << "2. 删除书籍" << endl;
        cout << "3. 查找书籍" << endl;
        cout << "4. 显示所有书籍" << endl;
        cout << "0. 退出" << endl;
        cout << "请选择操作: ";
        cin >> choice;
        switch (choice) {
            case 1:
                cout << "输入ISBN: ";
                cin >> isbn;
                cout << "输入标题: ";
                cin >> title;
                cout << "输入作者: ";
                cin >> author;
                cout << "输入出版社: ";
                cin >> publisher;
                manager.addBook(isbn, title, author, publisher);
                break;
            case 2:
                cout << "输入要删除的ISBN: ";
                cin >> isbn;
                manager.removeBook(isbn);
                break;
            case 3:
                cout << "输入作者: ";
                cin >> author;
                manager.findBooksByAuthor(author);
                break;
            case 4:
                manager.displayAllBooks();
                break;
            case 0:
                cout << "退出程序" << endl;
                break;
            default:
                cout << "输入错误,请输入正确的选项" << endl;
        }
    } while (choice != 0);
    return 0;
}调试和运行
- 在IDE中编译并运行程序。
- 根据提示选择操作,测试不同的功能。
- 确认每个功能按预期工作,无错误提示。
通过以上步骤,你已经掌握了C++编程的基本知识,并成功实现了一个简易的图书管理系统。继续学习和实践,将进一步提高你的编程技能。
 
		 随时随地看视频
随时随地看视频 
				 
				 
				 
				 
				