用C++编写一程序,模拟一个简单的文件管理系统。树型结构,目录下可以是目录,也可以是文件。 在此文件管理系统,可实现的操作有: 改变目录(可以回到根目录):格式:cd <目录名> 显示目录:格式:dir<目录名> 创建目录:格式:md <目录名> 删除目录:格式:rd<目录名> 新建文件:格式:edit<文件名> 删除文件:格式:del<文件名> 退出文件系统:exit
时间: 2023-12-02 08:06:02 浏览: 104
以下是一个简单的文件管理系统的实现,使用了C++的面向对象编程思想,采用树型结构存储目录与文件信息:
```
#include <iostream>
#include <string>
#include <vector>
using namespace std;
class Node {
public:
string name;
bool isFile;
vector<Node*> children;
Node(string n, bool f) {
name = n;
isFile = f;
}
};
class FileSystem {
private:
Node* root;
Node* current;
public:
FileSystem() {
root = new Node("", false);
current = root;
}
void run() {
cout << "Simple File System\n";
string command;
while (true) {
cout << ">>";
cin >> command;
if (command == "cd") {
string name;
cin >> name;
changeDirectory(name);
}
else if (command == "dir") {
string name;
cin >> name;
displayDirectory(name);
}
else if (command == "md") {
string name;
cin >> name;
createDirectory(name);
}
else if (command == "rd") {
string name;
cin >> name;
deleteDirectory(name);
}
else if (command == "edit") {
string name;
cin >> name;
createFile(name);
}
else if (command == "del") {
string name;
cin >> name;
deleteFile(name);
}
else if (command == "exit") {
exit(0);
}
else {
cout << "Invalid command.\n";
}
}
}
void changeDirectory(string name) {
if (name == "") {
current = root;
return;
}
for (Node* child : current->children) {
if (child->name == name && !child->isFile) {
current = child;
return;
}
}
cout << "Directory not found.\n";
}
void displayDirectory(string name) {
if (name == "") {
name = current->name;
}
for (Node* child : current->children) {
if (child->name == name) {
if (!child->isFile) {
cout << "Directory: " << child->name << "\n";
for (Node* subchild : child->children) {
if (subchild->isFile) {
cout << "File: " << subchild->name << "\n";
}
else {
cout << "Directory: " << subchild->name << "\n";
}
}
}
else {
cout << "File: " << child->name << "\n";
}
return;
}
}
cout << "Directory not found.\n";
}
void createDirectory(string name) {
for (Node* child : current->children) {
if (child->name == name && !child->isFile) {
cout << "Directory already exists.\n";
return;
}
}
Node* newDirectory = new Node(name, false);
current->children.push_back(newDirectory);
}
void deleteDirectory(string name) {
for (int i = 0; i < current->children.size(); i++) {
Node* child = current->children[i];
if (child->name == name && !child->isFile) {
current->children.erase(current->children.begin() + i);
delete child;
return;
}
}
cout << "Directory not found.\n";
}
void createFile(string name) {
for (Node* child : current->children) {
if (child->name == name && child->isFile) {
cout << "File already exists.\n";
return;
}
}
Node* newFile = new Node(name, true);
current->children.push_back(newFile);
}
void deleteFile(string name) {
for (int i = 0; i < current->children.size(); i++) {
Node* child = current->children[i];
if (child->name == name && child->isFile) {
current->children.erase(current->children.begin() + i);
delete child;
return;
}
}
cout << "File not found.\n";
}
};
int main() {
FileSystem fs;
fs.run();
return 0;
}
```
该程序实现了用户可以进入不同目录、创建、显示和删除目录与文件等基本功能,用户可以通过输入不同的命令来操作文件系统。