用c++写数据库专题训练实验-------数据库应用系统开发
时间: 2023-08-15 07:10:26 浏览: 93
数据库应用系统开发是数据库课程中非常重要的一部分,涉及到数据库的设计、开发和实现。在这个专题训练实验中,我们可以使用C++来实现一个简单的数据库应用系统。
下面是一个简单的C++实现数据库的例子,包括数据库的创建、表的创建、数据的插入、查询等操作:
```c++
#include <iostream>
#include <string>
#include <vector>
using namespace std;
// 定义字段类型
enum FieldType {
INT,
CHAR
};
// 定义字段结构体
struct Field {
string name;
FieldType type;
int size;
};
// 定义表结构体
struct Table {
string name;
vector<Field> fields;
vector<vector<string>> data;
};
// 定义数据库结构体
struct Database {
string name;
vector<Table> tables;
};
// 创建表
void create_table(Database &db, string table_name, vector<Field> fields) {
Table table;
table.name = table_name;
table.fields = fields;
db.tables.push_back(table);
}
// 插入数据
void insert_data(Database &db, string table_name, vector<string> row) {
for (auto &table : db.tables) {
if (table.name == table_name) {
if (row.size() != table.fields.size()) {
cout << "Error: number of fields doesn't match" << endl;
return;
}
table.data.push_back(row);
return;
}
}
cout << "Error: table not found" << endl;
}
// 查询数据
void select_data(Database &db, string table_name, vector<string> fields) {
for (auto &table : db.tables) {
if (table.name == table_name) {
if (fields.empty()) {
// 查询所有字段
for (auto &row : table.data) {
for (auto &field : row) {
cout << field << " ";
}
cout << endl;
}
} else {
// 查询指定字段
vector<int> indices;
for (int i = 0; i < table.fields.size(); i++) {
for (auto &field : fields) {
if (table.fields[i].name == field) {
indices.push_back(i);
break;
}
}
}
for (auto &row : table.data) {
for (auto &index : indices) {
cout << row[index] << " ";
}
cout << endl;
}
}
return;
}
}
cout << "Error: table not found" << endl;
}
int main() {
Database db;
db.name = "test_db";
// 创建表
vector<Field> fields1 = {{"id", INT, 0}, {"name", CHAR, 20}, {"age", INT, 0}};
create_table(db, "students", fields1);
// 插入数据
insert_data(db, "students", {"1", "Alice", "18"});
insert_data(db, "students", {"2", "Bob", "19"});
insert_data(db, "students", {"3", "Charlie", "20"});
// 查询数据
select_data(db, "students", {});
select_data(db, "students", {"name", "age"});
return 0;
}
```
以上仅为一个简单的例子,实际上数据库的设计和实现非常复杂,需要深入学习和掌握。
阅读全文