资源简介
主要用于课程设计完成文件系统模拟,内含详细可运行代码
代码片段和文件信息
#include
#include
#include
#include
using namespace std;
char msg[] =“/“;//声明字符串,后面调用,防止char*内存错误
struct TreeNode {//树节点
struct TreeNode *parent;//父指针
struct TreeNode *FirstChild;//第一个儿子指针
struct TreeNode *xiongdi;//兄弟指针
bool flag_file;//true表示文件,false表示目录
char fileName[100];//文件名
int depth;//深度
int size;//子文件数目
};
typedef struct TreeNode *Position;//为了使用方便
typedef struct TreeNode *Tree;
typedef struct TreeNode *ptr;
class CatalogTree;
void cd_Position(CatalogTree *a Position x);//根据位置寻找路径
void deletePtr(CatalogTree *a ptr t);//根据位置删除
class CatalogTree {
public:
TreeNode *root;
ptr currentPosition;
public:
CatalogTree();//构造函数
~CatalogTree() {//析构函数
deletePtr(this root);
};
void mkdir(char *name Position t);//创建目录
void mkfile(char *name Position t);//创建文件
void ListDir();//列出当前目录下的文件
void Delete(char *str);//删除文件或目录
void cd();//打印当前路径
void cdStr(char *str);//跳到指定路径
void cdPre();//跳到父路径
void save(char *filename);//将目录结构保存至文件
void load(char *filename);//将目录结构从文件载入
void ListDirToFile(Position D int Depth FILE *file);//从文件打印出目录结构
void size(char *dirName);//打印当前目录下的文件个数
};
CatalogTree::CatalogTree()
{ //构造方法
ptr m_root = (struct TreeNode*)malloc(sizeof(struct TreeNode));
m_root->FirstChild = NULL;
memset(m_root->fileName 0 sizeof(m_root->fileName));
m_root->fileName[0] = ‘/‘;
m_root->flag_file = false;
m_root->parent = NULL;
m_root->xiongdi = NULL;
m_root->size = 0;
root = m_root;
currentPosition = root;
};
void CatalogTree::size(char *dirName) {//打印出当前路径下某目录的文件数
Position t;
bool flag = false;
for (t = currentPosition->FirstChild; t != NULL; t = t->xiongdi) {
if (strcmp(t->fileName dirName) == 0) {
flag = true;
break;
}
}
if (strcmp(dirName “/“) == 0) flag = true;
if (flag == false) {
printf(“ 没有该目录或文件\n“);
return;
}
if (strcmp(dirName “/“) == 0)//打印根目录的文件数
printf(“size of %s : %d\n“ dirName root->size);
else
printf(“size of %s : %d\n“ dirName t->size);
}
void CatalogTree::ListDirToFile(Position D int Depth FILE *file)//从文件打印出目录结构
{
ptr temp;
if (D!=NULL) {
for (int i = 0; i < Depth; i++) {
fprintf(file “\t“);
}
if (D->flag_file == true) {
//printf(“%s .f\n“ D->fileName);
fprintf(file “%s .f\n“ D->fileName);
}
else {
//printf(“%s .d\n“ D->fileName);
fprintf(file “%s .d\n“ D->fileName);
}
if (D->flag_file == false)
for (temp = D->FirstChild; temp != NULL; temp = temp->xiongdi)
ListDirToFile(temp Depth + 1 file);
}
}
void CatalogTree::save(char *filename) {//将目录结构保存至文件
FILE* file = fopen(filename “w“);
if (file == NULL) {
printf(“ 文件打开失败\n“);
return;
}
ListDirToFile(this->root 0 file);//将目录结构存入文件
fclose(file);
//printf(“ 保存文件成功\n“);
}
void ListFileToTree(CatalogTree *T Position D char preDir[] int preDepth FI
相关资源
- 宠物管理系统课程设计(源码+数据库
- c语言课程设计:客房登记系统源码
- 8位竞赛抢答器的课程设计报告.docx
- VC++MFC课程设计的学生成绩管理系统
- C++实现21点游戏
- c++课程设计学生管理系统浙工大源码
- 课程设计: MFC 学生信息管理系统
- dsp课程设计——语音加密.zip
- 广东工业大学数据结构课程设计航空
- 数据结构课程设计扑克牌排序
- c++课程设计宾馆客房管理系统
- c语言课程设计-职工信息管理系统-单
- 飞机票订购系统C语言课程设计报告全
- c++ 课程设计_中国象棋
- 编译原理课程设计-C语言子集编译器
- 操作系统课程设计(银行家算法)附
- 用c写的航空订票系统 航班信息改变
- 信息论课程设计——LZW编码
- 人员管理系统 c语言源码 课程设计专
- MFC课程设计学生管理系统
- vc++课程设计 让计算机来猜测用户“暗
- 职工工作量统计系统.rar
- 扫雷游戏.cpp C++ 课程设计
- C语言数据结构课程设计之统计C程序单
- 职工信息管理系统C 链表
- C++课程设计 扑克牌游戏内含2程序
- 学生成绩管理系统 (C语言版)课程设
- 软件工程课程设计--自动排课排课系统
- 数据结构课程设计 停车场管理系统
- 操作系统课程设计(生产者-消费者存
评论
共有 条评论