39 C++ 进阶到上手实战教程

39 C++ 进阶到上手实战教程

在本节中,我们将学习如何将 C++ 语言的核心功能应用于实际项目中。我们将以一个简单的项目为例,逐步实现其核心功能。

项目背景

我们将创建一个简单的图书管理系统,该系统可以实现图书的添加、删除和查询功能。此项目主要展示如何使用 对象标准模板库 (STL)

小节一:定义图书类

我们首先需要定义一个 Book 类,以表示图书的基本信息。

实现 Book

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <string>

class Book {
private:
std::string title;
std::string author;
int year;

public:
// 构造函数
Book(const std::string& title, const std::string& author, int year)
: title(title), author(author), year(year) {}

// 获取书名
std::string getTitle() const {
return title;
}

// 获取作者
std::string getAuthor() const {
return author;
}

// 获取出版年份
int getYear() const {
return year;
}

// 显示图书信息
void display() const {
std::cout << "书名: " << title
<< ", 作者: " << author
<< ", 出版年份: " << year << std::endl;
}
};

注释

  • Book 类中,titleauthoryear 是该图书的属性。
  • 我们提供了相应的构造函数和方法来访问这些属性。

小节二:创建图书库

接下来,我们需要一个可以存储多个书籍的 Library 类。

实现 Library

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <vector>
#include <algorithm>

class Library {
private:
std::vector<Book> books;

public:
// 添加图书
void addBook(const Book& book) {
books.push_back(book);
}

// 删除图书
void removeBook(const std::string& title) {
books.erase(std::remove_if(books.begin(), books.end(),
[title](const Book& book) {
return book.getTitle() == title;
}), books.end());
}

// 查询图书
void searchBook(const std::string& title) const {
for (const auto& book : books) {
if (book.getTitle() == title) {
book.display();
return;
}
}
std::cout << "未找到书名为 \"" << title << "\" 的图书。" << std::endl;
}

// 显示所有图书
void displayAllBooks() const {
for (const auto& book : books) {
book.display();
}
}
};

注释

  • Library 类使用 std::vector 来存储 Book 对象。
  • 提供了 addBookremoveBooksearchBook 方法,以便进行图书的管理。

小节三:主程序逻辑

现在,我们将实现主程序入口,来使用上述 Library 类。

实现主函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>

int main() {
Library library;

// 添加图书
library.addBook(Book("C++ Primer", "Stanley B. Lippman", 2005));
library.addBook(Book("Effective C++", "Scott Meyers", 2005));
library.addBook(Book("The C++ Programming Language", "Bjarne Stroustrup", 2013));

// 显示所有图书
std::cout << "已添加的图书:" << std::endl;
library.displayAllBooks();

// 查询图书
std::cout << "\n查询图书:" << std::endl;
library.searchBook("C++ Primer");

// 删除图书
std::cout << "\n删除图书:" << std::endl;
library.removeBook("Effective C++");
library.displayAllBooks();

return 0;
}

注释

  • 在主函数中,我们首先创建一个 Library 对象并添加几本书。
  • 然后,我们显示所有图书,查询特定书籍,删除一本书并再显示剩余的书籍。

结尾总结

通过上述步骤,我们实现了一个简单的图书管理系统的核心功能。关键环节如 的设计、STL 容器的使用和 Lambda 表达式的运用等,都是这个项目的重要组成部分。希望这个案例能够帮助你在 C++ 开发中更进一步。在实际项目中,你还可以扩展更多功能,比如文件存储、用户交互等,更加丰富你的项目实现。

39 C++ 进阶到上手实战教程

https://zglg.work/cplusplus-one/39/

作者

AI教程网

发布于

2024-08-08

更新于

2024-08-10

许可协议