第一范文网 - 专业文章范例文档资料分享平台

操作系统实验文件管理C++代码

来源:用户分享 时间:2020-06-28 本文由第一句问候 分享 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

#include #include #include #include #include

using namespace std;

#define BLKSIZE 512 #define BLKNUM 512 #define INODESIZE 32 #define INODENUM 32 #define FILENUM 8

//用户

typedef struct {

// 数据块的大小 // 数据块的块数 // i节点的大小 // i节点的数目 // 打开文件表的数目

char user_name[10]; // 用户名 char password[10]; // 密码 } User;

//i节点 typedef struct { short inum; // 文件i节点号 char file_name[10]; // 文件名 char type; // 文件类型 char user_name[10]; // 文件所有者 short iparent; // 父目录的i节点号 short length; // 文件长度 short address[2]; // 存放文件的地址 } Inode;

//打开文件表 typedef struct {

short inum; // i节点号 char file_name[10]; // 文件名 short mode; // 读写模式(1:read, 2:write, // 3:read and write) } File_table;

// 申明函数 void login(void); void init(void);

int analyse(char *); void save_inode(int); int get_blknum(void); void read_blk(int); void write_blk(int); void release_blk(int); void pathset(); void del(int);

// 用户命令处理函数 void help(void); void cd(void); void dir(void); void mkdir(void); void creat(void); void open(void); void read(void); void write(void); void close(void); void delet(void); void logout(void); void command(void); void quit();

//main.cpp文件

//#include \

//定义全局变量 char choice; int argc; // 用户命令的参数个数 char *argv[5]; // 用户命令的参数 int inum_cur; // 当前目录 char temp[2*BLKSIZE]; // 缓冲区 User user; // 当前的用户 char bitmap[BLKNUM]; // 位图数组

Inode inode_array[INODENUM]; // i节点数组 File_table file_array[FILENUM]; // 打开文件表数组 char image_name[10] = \// 文件系统名称 FILE *fp; // 打开文件指针

//创建映像hd,并将所有用户和文件清除 void format(void) { int i;

Inode inode; printf(\ printf(\ printf(\ scanf(\

getchar(); if((choice == 'y') || (choice == 'Y')) { if((fp=fopen(image_name, \ { printf(\ exit(-1); } for(i = 0; i < BLKSIZE; i++) fputc('0', fp); inode.inum = 0; strcpy(inode.file_name, \ inode.type = 'd'; strcpy(inode.user_name, \ inode.iparent = 0; inode.length = 0; inode.address[0] = -1; inode.address[1] = -1; fwrite(&inode, sizeof(Inode), 1, fp); inode.inum = -1; for(i = 0; i < 31; i++) fwrite(&inode, sizeof(Inode), 1, fp); for(i = 0; i < BLKNUM*BLKSIZE; i++) fputc('\\0', fp); fclose(fp);

// 打开文件user.txt if((fp=fopen(\ {

printf(\ exit(-1); } fclose(fp); printf(\ } return ; }

// 功能: 用户登陆,如果是新用户则创建用户 void login(void) {

char *p; int flag; char user_name[10]; char password[10]; char file_name[10] = \ do { printf(\ gets(user_name); printf(\ p=password; while(*p=getch()) {

if(*p == 0x0d) { *p='\\0'; //将输入的回车键转换成空格 break; }

printf(\ //将输入的密码以\号显示 p++; } flag = 0; if((fp = fopen(file_name, \ {

printf(\ printf(\ format(); login(); }

while(!feof(fp)) { fread(&user, sizeof(User), 1, fp);

// 已经存在的用户, 且密码正确 if(!strcmp(user.user_name, user_name) && !strcmp(user.password, password)) { fclose(fp); printf(\ return ; } // 已经存在的用户, 但密码错误 else if(!strcmp(user.user_name, user_name)) { printf(\

flag = 1; fclose(fp); break; } } if(flag == 0) break; }while(flag); // 创建新用户 if(flag == 0) {

printf(\ scanf(\ gets(temp); if((choice == 'y') || (choice == 'Y')) { strcpy(user.user_name, user_name); strcpy(user.password, password); fwrite(&user, sizeof(User), 1, fp); fclose(fp); return ; } if((choice == 'n') || (choice == 'N')) login(); } }

// 功能: 将所有i节点读入内存 void init(void) { int i; if((fp = fopen(image_name, \ { printf(\ exit(-1); } // 读入位图 for(i = 0; i < BLKNUM; i++) bitmap[i] = fgetc(fp); // 显示位图 // 读入i节点信息 for(i = 0; i < INODENUM; i++) fread(&inode_array[i], sizeof(Inode), 1, fp); // 显示i节点 // 当前目录为根目录 inum_cur = 0;

搜索“diyifanwen.net”或“第一范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,第一范文网,提供最新初中教育操作系统实验文件管理C++代码 全文阅读和word下载服务。

操作系统实验文件管理C++代码 .doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/wenku/1105497.html(转载请注明文章来源)
上一篇:遥感算法
下一篇:民航规章分类
热门推荐
Copyright © 2018-2022 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top