资源简介
生成一个磁盘文件: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
- 上一篇:gps-gsm的仿真程序 c语言
- 下一篇:libstdc++.so.6.0.17
评论
共有 条评论