c++ 写一个查询系统 ,不用数据库,从txt中读取数据,求大神指点啊 ...

要在 C++ 中实现一个简单的查询系统,通过从 .txt 文件中读取数据而不使用数据库,你可以遵循以下步骤。这个系统可以读取一个包含数据的文本文件,并提供基本的查询功能,比如查找、过滤等。

步骤概述

  1. 准备数据文件:创建一个包含数据的文本文件。
  2. 读取数据:从文本文件中读取数据。
  3. 存储数据:将读取的数据存储在适当的数据结构中。
  4. 实现查询功能:实现根据特定条件查询数据的功能。
  5. 展示结果:输出查询结果给用户。

示例实现

以下是一个简单的 C++ 查询系统的实现示例:

1. 创建数据文件

假设有一个数据文件 data.txt,文件内容如下:

sql
John,25,New York Alice,30,Los Angeles Bob,22,Chicago

每行包含一个人的姓名、年龄和城市信息。

2. 实现 C++ 查询系统

cpp
#include <iostream> #include <fstream> #include <sstream> #include <vector> #include <string> #include <algorithm> // 数据结构来存储每条记录 struct Person { std::string name; int age; std::string city; }; // 从文件读取数据 std::vector<Person> loadData(const std::string& filename) { std::vector<Person> data; std::ifstream file(filename); std::string line; if (!file.is_open()) { std::cerr << "Failed to open file: " << filename << std::endl; return data; } while (std::getline(file, line)) { std::istringstream stream(line); std::string name, city; int age; std::getline(stream, name, ','); stream >> age; stream.ignore(); // Ignore the comma std::getline(stream, city); data.push_back(Person{name, age, city}); } file.close(); return data; } // 查询数据 void queryByCity(const std::vector<Person>& data, const std::string& city) { for (const auto& person : data) { if (person.city == city) { std::cout << "Name: " << person.name << ", Age: " << person.age << ", City: " << person.city << std::endl; } } } void queryByAge(const std::vector<Person>& data, int minAge) { for (const auto& person : data) { if (person.age >= minAge) { std::cout << "Name: " << person.name << ", Age: " << person.age << ", City: " << person.city << std::endl; } } } // 主程序 int main() { std::string filename = "data.txt"; std::vector<Person> data = loadData(filename); if (data.empty()) { std::cout << "No data loaded." << std::endl; return 1; } std::cout << "Query by city (New York):" << std::endl; queryByCity(data, "New York"); std::cout << "Query by minimum age (25):" << std::endl; queryByAge(data, 25); return 0; }

代码解释

  1. 数据结构Person 结构体用于存储每条记录,包括姓名、年龄和城市。
  2. 读取数据
    • 使用 std::ifstream 打开文件。
    • 使用 std::getline 读取每一行,然后通过 std::istringstream 解析每行的字段。
    • 将解析后的数据存储到 std::vector<Person> 中。
  3. 查询功能
    • queryByCity:根据城市查询数据并输出。
    • queryByAge:根据年龄查询数据并输出。
  4. 主程序
    • 加载数据文件。
    • 执行查询并输出结果。

关键点

  • 文件操作:使用 std::ifstream 读取文件。
  • 数据解析:使用 std::istringstream 解析每行数据。
  • 数据存储:使用 std::vector 存储数据。
  • 查询功能:实现简单的条件查询。

扩展功能

  1. 更复杂的查询:可以实现更复杂的查询功能,如根据多个条件查询。
  2. 用户输入:可以通过 std::cin 读取用户输入的查询条件。
  3. 数据更新:实现对数据的添加、删除和更新功能。

通过上述实现,你可以建立一个基础的查询系统,并根据需要进行扩展和优化。