资源简介
包含qt完整的工程目录以及原始的一份控制台源码。代码有问题可以评论。
1、实验目的
通过一个简单多用户文件系统的设计,加深理解文件系统的内部功能及内部实现。
2、实验内容
为linux系统设计一个简单的二级文件系统。要求做到以下几点:
(1)可以实现下列几条命令(至少4条);
login 用户登陆
dir 列文件目录
create 创建文件
delete 删除文件
open 打开文件
close 关闭文件
read 读文件
write 写文件
(2)列目录时要列出文件名、物理地址、保护码和文件长度;
(3)源文件可以进行读写保护。
3、实验提示
(1)首先应确定文件系统的数据结构:主目录、子目录及活动文件等。主目录和子目录都以文件的形式存放于磁盘,这样便于查找和修改。
(2)用户创建的文件,可以编号存储于磁盘上。如file0,file1,file2...并以编号作为物理地址,在目录中进行登记。
代码片段和文件信息
#include
#include
#include
#include
#include
#include
#include
#include
#define MaxUser 1028 //用户最多数目
#define commandAmount 12 //对文件操作的指令数
//用户管理
int userID = -1; //用户登录的ID号,值为-1时表示没有用户登录
char Name[15]; //正在登录用户名
char firstName[5]; //正在被操作的文件
long used = 0; //全局变量,用户数
long used1 = 0; //全局变量,用户创建文件数
char q2[20] = “file/node/“;
typedef struct master_file_directory
{
char userName[15];
char password[15];
} MFD;
MFD userTable[MaxUser];
typedef struct node {
char fileName[15];
char number[5];
//UFD *user;
} MFD1;
MFD1 fileTable[1024];
void userCreate(); //创建用户
int login(); //用户登录
int createDirectory(const char*filename);//创建目录
void fileAttribute(char*fileName);//文件属性
void readDir1();//读用户
void create(char*name); //创建文件
void deletefile(const char*filename);//删除文件
int openfile(char*name);//打开文件
void writefile(char name[] char*buf);//写文件
void readfile(char name[]);//查看文件内容
void closefile(int fd);
void userCreate();//创建用户
int login();//用户登录
void createfile(char name[] char kind[]);//创建文件
void reFileName(char*old char*new);//文件重命名
void chmodfile(char name[] char kind[]);//修改文件权限
int main() {
char order[commandAmount][10];
strcpy(order[0] “create“);
strcpy(order[1] “delete“);
strcpy(order[2] “read“);
strcpy(order[3] “write“);
strcpy(order[4] “arr“);
strcpy(order[5] “chmod“);
strcpy(order[6] “ren“);
strcpy(order[7] “dir“);
strcpy(order[8] “return“);
strcpy(order[9] “exit“);
strcpy(order[10] “diru“);
strcpy(order[11] “delu“);
char command[1028] command_str1[10] command_str2[10] command_str3[1028];
int i k j;
int length;
createDirectory(“file“);
createDirectory(“file/node“);
create(“file/user.txt“);
long used;
struct stat d;
stat(“file/user.txt“ &d);
d.st_size;
used = (d.st_size) / 30l;
FILE *fp;
if ((fp = fopen(“file/user.txt“ “r“)) == NULL)
{
printf(“cannot open this file\n“);
exit(0);
}
fread(userTable sizeof(struct master_file_directory) used fp);
fclose(fp);
if(used==0)
{
strcpy(userTable[0].userName“root“);
strcpy(userTable[0].password“root“);
char q[20] = “file/“;
char q2[20] = “file/node/“;
strcat(q userTable[0].userName);
strcat(q2 userTable[0].userName);
createDirectory(q);
create(q2);
used++;
FILE *fp;
if ((fp = fopen(“file/user.txt“ “w“)) == NULL)
{
printf(“cannot open this file\n“);
exit(0);
}
fwrite(userTable sizeof(struct master_file_directory) used fp);
fclose(fp);
}
int g = 0;
while (g == 0) {
printf(“********************************************\n“);
printf(“ 1、login\n“);
printf(“ 2、register\n“);
printf(“ 3、exit\n“);
printf(“********************************************\n“);
printf(“Please chooce the function key:>“);
int choice;
scanf(“%d“ &choice);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-08-16 11:00 linux系统下的二级文件系统\
文件 17437 2012-02-19 20:01 linux系统下的二级文件系统\file.c
文件 162 2018-08-16 11:00 linux系统下的二级文件系统\~$作系统》课程实验报告.doc
文件 1775104 2012-03-15 20:32 linux系统下的二级文件系统\《操作系统》课程实验报告.doc
文件 11771 2018-08-14 09:32 大作业--文件系统设计.docx
目录 0 2018-08-21 06:58 源码\
目录 0 2018-08-20 08:03 源码\filesystem\
文件 1356 2018-08-20 08:00 源码\filesystem\createfile.cpp
文件 468 2018-08-20 08:00 源码\filesystem\createfile.h
文件 2536 2018-08-20 06:24 源码\filesystem\createfile.ui
文件 1274 2018-08-20 07:48 源码\filesystem\filesystem.pro
文件 24087 2018-08-20 08:03 源码\filesystem\filesystem.pro.user
文件 2375 2018-08-20 07:41 源码\filesystem\logindialog.cpp
文件 445 2018-08-20 08:00 源码\filesystem\logindialog.h
文件 2831 2018-08-16 19:17 源码\filesystem\logindialog.ui
文件 609 2018-08-20 08:00 源码\filesystem\main.cpp
文件 5837 2018-08-20 08:00 源码\filesystem\Mainfun.cpp
文件 1418 2018-08-20 08:00 源码\filesystem\Mainfun.h
文件 6524 2018-08-20 08:00 源码\filesystem\mainwindow.cpp
文件 800 2018-08-20 07:27 源码\filesystem\mainwindow.h
文件 2867 2018-08-20 07:17 源码\filesystem\mainwindow.ui
文件 608 2018-08-20 07:48 源码\filesystem\manangerdialog.ui
文件 859 2018-08-20 07:02 源码\filesystem\readdialog.cpp
文件 405 2018-08-20 06:50 源码\filesystem\readdialog.h
文件 768 2018-08-20 07:10 源码\filesystem\readdialog.ui
文件 493 2018-08-20 08:00 源码\filesystem\writedialog.cpp
文件 390 2018-08-20 05:38 源码\filesystem\writedialog.h
文件 853 2018-08-20 05:11 源码\filesystem\writedialog.ui
- 上一篇:北航软件学院复试专业基础
- 下一篇:RF天线设计
相关资源
- QT生成DLL库文件的方法和使用方法详解
- QT+opencv+OCR 身份证号码,银行卡号识别
- Qt实现的简单的中国象棋程序
- Qt时钟Demo,在原来基础上添加了秒针
- 基于Qt和opencv的身份证号码识别系统
- 基于FFmpeg4.0.2的AAC编码器
- Qt写的Windows下屏幕录制程序源码
- QT旅游攻略软件程序源代码
- mp4_play.zip
- ffmpeg+qt的简单播放器
- 基于51单片机的超声波测距技术实现含
- MyPeppa_Release_V1.0.rar
- 安卓期末项目--记账本app.zip
- 从零开始学习音视频编程技术十二 录
- VS开发进阶源码---烟花特效的生日祝福
- Qt 日历可显示阴历生宵和时钟基于Q
- 东北大学软件学院编译方法两次实验
- 计算机网络打作业实现QQ.zip
- 整理最全资料:并行计算大作业:矩
- 基于qt实现的简易象棋游戏
- 基于ARM9的远程视频监控系统
- 分析模型案例(高级面向对象方法与
- 基于QT的音乐播放器源代码及详细教程
- 有关Qt的二十篇中文论文
- 使用Qt编写的视频监控系统支持Qt4-Q
- 用QT读取Excel文件并将数据在界面上动
- QT使用Cypress FX3 USB库代码
- Qt 多线程连接数据库——数据库
- MQTTv3.1中文版
- mt7628 mqtt功能 放到packet下面就可以使
评论
共有 条评论