c++ 写一个查询系统 ,不用数据库,从txt中读取数据,求大神指点啊 ...
要在 C++ 中实现一个简单的查询系统,通过从 .txt
文件中读取数据而不使用数据库,你可以遵循以下步骤。这个系统可以读取一个包含数据的文本文件,并提供基本的查询功能,比如查找、过滤等。
步骤概述
- 准备数据文件:创建一个包含数据的文本文件。
- 读取数据:从文本文件中读取数据。
- 存储数据:将读取的数据存储在适当的数据结构中。
- 实现查询功能:实现根据特定条件查询数据的功能。
- 展示结果:输出查询结果给用户。
示例实现
以下是一个简单的 C++ 查询系统的实现示例:
1. 创建数据文件
假设有一个数据文件 data.txt
,文件内容如下:
sqlJohn,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;
}
代码解释
- 数据结构:
Person
结构体用于存储每条记录,包括姓名、年龄和城市。 - 读取数据:
- 使用
std::ifstream
打开文件。 - 使用
std::getline
读取每一行,然后通过std::istringstream
解析每行的字段。 - 将解析后的数据存储到
std::vector<Person>
中。
- 使用
- 查询功能:
queryByCity
:根据城市查询数据并输出。queryByAge
:根据年龄查询数据并输出。
- 主程序:
- 加载数据文件。
- 执行查询并输出结果。
关键点
- 文件操作:使用
std::ifstream
读取文件。 - 数据解析:使用
std::istringstream
解析每行数据。 - 数据存储:使用
std::vector
存储数据。 - 查询功能:实现简单的条件查询。
扩展功能
- 更复杂的查询:可以实现更复杂的查询功能,如根据多个条件查询。
- 用户输入:可以通过
std::cin
读取用户输入的查询条件。 - 数据更新:实现对数据的添加、删除和更新功能。
通过上述实现,你可以建立一个基础的查询系统,并根据需要进行扩展和优化。