資源簡介
包含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天線設計
評論
共有 條評論