資源簡介
這次課設是一個文件系統模擬程序模擬文件管理的工作過程,對于多用戶,設計了最多有10個用戶的文件系統,為了實現文件系統的管理,設置了創建用戶,刪除用戶,創建文件,刪除文件,創建文件夾,刪除文件夾,讀文件,寫文件,執行文件,打開文件,關閉文件,顯示目錄等操作。對于多級目錄,設置了主目錄MFD,用戶文件目錄UFD,用戶文件夾目錄UDD,為打開文件設置了運行目錄AFD。
代碼片段和文件信息
#include
#include
#include
#include
#include
#define?NULL?0
int?num;??????//當前用戶個數
int?choice;
int?ex;
typedef?struct?ufd?{
char?filename[10];?????//文件名
char?procode[8];?????//文件屬性
char?filecon[100];?????//文件內容
int?length;??????????//文件長度
struct?ufd?*nextfile;//指向下一個文件
}UFD;???//用戶文件目錄
UFD?*rwpointer;//*讀寫指針
typedef?struct?udd{
?char?foldername[10];????//文件夾名?
?struct?ufd?*clink;??????//指向該文件夾的第一個文件
struct?udd?*cnext;??????//指向該文件夾的第一個文件夾??
struct?udd?*link;????????//指向同級文件夾?
}UDD;
typedef?struct?mfd?{
char?username[10];??//用戶名
struct?ufd?*link;?????//指向該用戶的第一個文件
struct?udd?*clink;???//指向該用戶的第一個文件夾
}MFD;???//主文件目錄
MFD?filesystem[10];//定義了最大的文件目錄
typedef?struct?protect?{
char?code[4];
}PRO;
typedef?struct?afd?{??????//運行文件目錄
char?filename[10];???//打開文件名
char?procode[4];????//文件屬性
char?filecon[100];
int?rwpointer;??????//讀寫指針
}AFD;???????????????//運行文件目錄
AFD?*afd?=?NULL;
PRO?flag[3]?=?{
“1“//***只讀
“2“//***讀寫
“3“//**可執行
};
void?show()?//顯示所有文件文件夾函數
{
int?i?j;
UFD?*p;
UDD?*q;
printf(“\t\t顯示目錄\n“);
printf(“\t------------------------------------------------\n“);
for?(i?=?0;?i? {
j?=?0;
printf(“\n用戶?%s目錄如下:?\t\n“?filesystem[i].username);
p?=?filesystem[i].link;????//指向用戶文件的第一個文件?
q?=?filesystem[i].clink;
while?(p)
{
printf(“\t?文件名:%s\t||“?p->filename);
printf(“文件屬性:%s\t||?“?p->procode);
p?=?p->nextfile;
}
while?(q)
{
printf(“\t文件夾名:%s\n“?q->foldername);
q?=?q->link;
}
}
}
int?findusername(char?*?username)?//找到用戶名字
{??????????//返回用戶名下標當k=num時,用戶不存在
int?k;
k?=?0;
while?(k? if?(!strcmp(filesystem[k].username?username))
break;
k++;
}
return?k;
}
UFD*?findfilename(char?*?filename?UFD?*filepointer)???????//返回指向特定文件
{
UFD?*k;
k?=?filepointer;
while?(k&&strcmp(filename?k->filename))
k?=?k->nextfile;
return?k;
}
UDD*?findfilename(char?*foldername?UDD?*folderpointer)??//返回指向特定文件名的指針
{
UDD?*k;
k?=?folderpointer;
while?(k&&strcmp(foldername?k->foldername))
k?=?k->link;
return?k;
}
void?createuser()?????//建立用戶
{
int?i;
char?username[10];
printf(“\t----------------------------------------?-?\n“);
printf(“\t\t建立用戶\n“);
printf(“\t----------------------------------------?-?\n“);
if?(num?>=?10)//用戶文件目錄已滿,創建文件失敗
{
printf(“\n用戶文件目錄的已滿\n創建文件失敗!\n“);
return;
}
printf(“輸入用戶名:\n“);
scanf_s(“%s“?&username9);
for?(i?=?0;?i? {
if?(strcpy_s(filesystem[num].username?username))
{
printf(“用戶已經存在,請輸入新用戶名!\n“);
scanf_s(“%s“?&username9);
}
}
strcpy_s(filesystem[num].username?username);//創建用戶目錄
num++;
printf(“\n文件已創建!\n“);
}
void?createfile()??//createfile()創建新的文件
{
char?username[10];??//用戶名
char?filename[10];??//文件名
int?i?j;
char?cx;
UFD?*p1?*p2?*newfile;??//用戶文件目錄指針
pri
- 上一篇:六子棋游戲即二打一棋C++源程序
- 下一篇:華南農業大學c語言oj答案
評論
共有 條評論