• 大小: 769KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-29
  • 语言: C/C++
  • 标签:

资源简介

生成一个磁盘文件:A,A为虚拟磁盘,程序对A进行操作,完成了类似cmd的一下基本功能,可以进行磁盘整理。

资源截图

代码片段和文件信息

#include 
#include 
#include 
#include 
#include 
#include 
#include 

#define FILENAME_LEN 21 //文件名长度
#define INPUT_LEN 81 //输入长度
#define COMMAND_LEN 11 //指令长度
#define ONE_PIECE_SIZE 512 //一块的大小
#define SIZE 101 //块数
#define CHILDNUMBER 30

//结点结构
int ifEmpty[101]; //0表示该块未被占用,1表示已被目录或文件占用,2表示被文件内容占用
typedef struct FileNode {
int isdir; //目录文件识别标志
char filename[FILENAME_LEN];//文件名/目录名
short ChildLocation[CHILDNUMBER]; //文件内容的磁盘地址 如果是文件 则偶数表示起始块 奇数表示长度
short adr; //文件的地址
short parent; //父目录的位置
}*PFileNode;

void Init();//初始化文件树
int ParseCommand();//接受输入的命令并把其分解成操作名和路径文件名
void ExecuteCommand();//执行命令
void OpenOld();


int cdComd(); //处理cd命令
int editComd(); //处理edit命令
int delComd(); //处理del命令
int rdComd(); //处理rd命令
int dirComd(); //处理dir命令
int mdComd(); //处理md命令
int helpComd(); //处理help命令
int renComd(); //处理ren命令  文件或目录重命名
int xcopyComd();
int moveComd();
int EmptyPiece();
int moreComd();
int copyComd(); //从外界拷贝txt文件到模拟系统中
void defragComd(); //磁盘碎片整理
int filedefragComd();

int FindPath(char *ph);//寻找参数ph所指向的路径
int FindFilename(char Para2[]);//从参数Para2中找到要建立或删除的文件、目录名,并把指针指向其父亲结点


FileNode* CreateFileNode(char filename[]int isdir); //创建结点
FileNode* GetFileNode(int pos); //从A中获取结点
FileNode* GetNextFileNode(PFileNode cp); //根据路径获取下一个节点


void clone(FileNode FN);
int GetInput(char* bufferunsigned int buffer_len);//获取输入
int CheckCommand();//命令检查
int GetDir(int beginchar* pathchar* curDir);//获取路径
void Trim(char* str);

fstream DiscWriteRead;

FileNode newFile; //当前节点
FileNode currentFile; //新节点
FileNode nextFile; //下一个节点

char path[INPUT_LEN-COMMAND_LEN];//记录当前走过的路径
char curpath[INPUT_LEN-COMMAND_LEN]Para1[COMMAND_LEN]Para2[INPUT_LEN-COMMAND_LEN] Para3[FILENAME_LEN];
char filename[FILENAME_LEN];
int delNumber;


//主函数
int main()
{
cout<<“请选择操作:“< cout<<“1.从已有文件中生成模拟文件系统。“< cout<<“2.重新生成模拟文件系统。“< int op;
cin>>op;
strcpy(path“/“);
switch(op){
case 1:
OpenOld();
break;
case 2:
Init();//初始化文件树
break;
}

while(true){
if(ParseCommand())//分解命令
ExecuteCommand();//执行命令
}
return 0;
}

void OpenOld(){
Write.open(“A“ios::out);
Read.open(“A“ios::in);
Read.seekg(0);
Read.read((char*)ifEmptySIZE);
}

//执行命令子函数
void ExecuteCommand(){
int sign;
            //根据参数Para1调用相应的功能处理模块
if(strcmp(Para1“cd“)==0) 
sign=cdComd(); //cd命令
else if(strcmp(Para1“edit“)==0) 
sign=editComd(); //edit命令
else if(strcmp(Para1“del“)==0) 
sign=delComd(); //del命令
else if(strcmp(Para1“dir“)==0) 
sign=dirComd(); //dir命令
else if(strcmp(Para1“md“)==0) 
sign=mdComd(); //md命令
else if(strcmp(Para1“rd“)==0) 
sign=rdComd(); //rd命令
else if(strcmp(Para1“exit“)==0)
exit(0); //exit命令
else if(strcmp(Para1“help“)==0)
sign = helpComd();
else if(strcmp(Para1“ren

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      51713  2010-06-05 13:20  课程设计\FileSystem\A

     文件        877  2010-06-03 23:10  课程设计\FileSystem\a.txt

     文件      51713  2010-09-25 22:05  课程设计\FileSystem\Debug\A

     文件     221262  2010-06-05 13:14  课程设计\FileSystem\Debug\filsSystem.exe

     文件     538788  2010-06-05 13:14  课程设计\FileSystem\Debug\filsSystem.ilk

     文件      70998  2010-06-05 13:14  课程设计\FileSystem\Debug\filsSystem.obj

     文件     310760  2010-06-05 00:43  课程设计\FileSystem\Debug\filsSystem.pch

     文件     599040  2010-06-05 13:14  课程设计\FileSystem\Debug\filsSystem.pdb

     文件      50176  2010-06-05 13:18  课程设计\FileSystem\Debug\vc60.idb

     文件      61440  2010-06-05 13:14  课程设计\FileSystem\Debug\vc60.pdb

     文件      25983  2010-06-05 13:14  课程设计\FileSystem\filsSystem.cpp

     文件       3449  2010-05-31 15:59  课程设计\FileSystem\filsSystem.dsp

     文件        545  2010-05-31 16:47  课程设计\FileSystem\filsSystem.dsw

     文件      50176  2010-09-03 10:00  课程设计\FileSystem\filsSystem.ncb

     文件      49664  2010-09-03 10:00  课程设计\FileSystem\filsSystem.opt

     文件       1520  2010-06-05 13:14  课程设计\FileSystem\filsSystem.plg

     文件     571392  2010-06-05 13:51  课程设计\实习报告书.doc

    .......     62464  2010-05-07 06:21  课程设计\操作系统实习任务书(2010).doc

     文件      77824  2010-06-04 23:21  课程设计\操作系统流程图\分解指令.vsd

     文件      51200  2010-06-04 09:59  课程设计\操作系统流程图\整体流程图.vsd

     文件      24064  2010-06-04 23:22  课程设计\操作系统流程图\流程图.vsd

    .......     30720  2010-05-04 00:26  课程设计\课程设计时间安排.doc

     目录          0  2010-09-25 22:00  课程设计\FileSystem\Debug

     目录          0  2010-09-03 10:00  课程设计\FileSystem

     目录          0  2010-06-05 23:49  课程设计\操作系统流程图

     目录          0  2010-09-25 21:44  课程设计

----------- ---------  ---------- -----  ----

              2905768                    26


评论

共有 条评论