资源简介
开发工具:word,vc win32api
设计和实现一个简单的文件系统,要求包括目录、普通文件和文件的存储
文件系统的目录结构采用类似Linux的树状结构;
要求模拟的操作包括:
目录的添加、删除、重命名;
目录的显示(列表)
文件的添加、删除、重命名
文件和目录的拷贝
用户进入时显示可用命令列表;用户输入help时显示所有命令的帮助文档; 输入某个命令+?时显示该条命令的使用说明
用户输入exit时退出该系统
实验实现基于windows平台;
实验开发语言可以选用C/c++
代码片段和文件信息
#include
#include
#include
#include
#include
using namespace std;
typedef struct FCB
{
string FileName; //文件名
string FileType; //文件类型
vector * subdirectory; //下一级目录地址
vector * updirectory; //上一级目录地址
string parent; //父文件夹名
SYSTEMTIME creating_time; //创建时间
// SYSTEMTIME last_modified_time; //最近访问时间
string status; //文件状态
string details;//文件内容
}FCB;
FCB fileCopy;//全局变量,用于保存复制或剪切的文件或文件夹
//登录
void Login()
{
string namepassword;
cout <<“\n\n\n“;
cout <<“\t\t 操作系统大型试验-模拟文件系统“< cout <<“\t\t 作者:XXX“< system(“pause“);
system(“cls“);
}
//显示时间
void show_time(SYSTEMTIME& sys)
{
cout << sys.wYear << “/“ << sys.wMonth << “/“ << sys.wDay << “ “ << sys.wHour << “:“ << sys.wMinute << “:“ << sys.wSecond;
}
//显示当前目录中的所有文件和文件夹
void dir(vector& a)
{
int length = a.size();
int i = 0;
for(i=1;i {
if(a[i].FileType != ““)
{
cout << “文件“< cout << “.“ << a[i].FileType< cout << “ 创建时间: “;
show_time(a[i].creating_time);
cout < /// show_time(a[i].last_modified_time);
cout < cout << a[i].status << endl< }
else
{
cout << “文件夹“+a[i].FileName< cout << “ 创建时间: “;
show_time(a[i].creating_time);
cout << endl<<“ 最近访问时间: “;
// show_time(a[i].last_modified_time);
cout << endl<<“ 状态: “;
cout << a[i].status << endl< }
}
if(i==1) cout<<“当前目录下没有内容!“< }
//显示帮助信息
void help()
{
cout << “dir “ << “显示当前目录中的所有文件和文件夹“ << endl;
cout << “help “ << “显示帮助信息“ << endl;
cout << “命令+? “ << “显示该命令的说明文档,如:dir?“ << endl;
cout << “create xxx “ << “在当前目录中创建文件xxx.yyy或文件夹xxx“ << endl;
cout << “delete xxx “ << “在当前目录中删除文件xxx.yyy或文件夹xxx“ << endl;
cout << “open xxx “ << “打开当前目录中的文件xxx.yyy或文件夹xxx“ << endl;
cout << “close xxx “ << “关闭当前目录中的文件xxx.yyy或文件夹xxx“ << endl;
cout << “cd .. “ << “返回到上一级目录“ << endl;
cout << “cd xxx “ << “转到当前目录的xxx子目录“ << endl;
cout << “cd root “ << “转到根目录root“ << endl;
cout << “rename xxx yyy “ << “重命名“ << endl;
cout << “copy xxx “ << “复制“ << endl;
cout << “cut xxx “ << “剪切“ << endl;
cout << “paste “ << “粘贴“ << endl;
cout << “attrib xxx “ << “显示xxx文件或文件夹的属性“ << endl;
cout << “exit “ << “退出“ << endl< }
//判断是否是帮助请求命令
bool is_require(string& str)
{
return (str[str.length()-1] == ‘?‘);
}
//显示命令的说明
void command_explan(string& command)
{
if(command==“dir?“) cout << “\“dir\“命令用于显示当前目录中的所有文件和文件夹“ << endl< else if(command==“help?“) cout << “\“help\“命令用于显示帮助信息“ << endl< else if(command==“create?“) cout << “\“create\“命令用于在当前目录中创建文件或文件夹,如:create hello.txtcreate hello注意:创建文件必须有扩展名,无扩展名则认为是文件夹文件和文件不能同名,文件夹和文件夹不能同名,文件和文件夹可以同名“ << endl< else if(command==“delete?“) cout << “\“delete\“命令用于在当前目录中删除文件或文件夹,如:
- 上一篇:C++实现字符串求交集、并集、差集
- 下一篇:第三方串口类
评论
共有 条评论