作業系統課程設計報告

2023-01-20 07:18:02 字數 3898 閱讀 4283

題目:樹型目錄檔案系統

學院計算機學院

專業網路工程

年級班別 04級(2)班

學號 3104007225

學生姓名王維銘

指導教師林穗

成績200 7年 1月

樹型目錄檔案系統

一、 設計思想:

本課程設計目的是實現樹型目錄結構檔案系統,本人在實現過程中也利用二叉樹,

其中每個節點都有父指標,子指標和兄弟指標,其中子指標指向該目錄下的第乙個子節點,而該子節點的父指標則指向它的上級目錄。目錄下各子節點用兄弟指標連線起來。

資料夾開啟是則把資料夾名稱及其位址壓入開啟資料夾棧,檔案關閉則把資料夾名稱及其位址從開啟資料夾棧中丟擲。

檔案開啟則把檔案的名稱及其父指標寫到檔案列表同時置檔案開啟標誌為1,檔案關閉則把檔案從開啟列表中刪除,同時置檔案開啟指標為0,檔案讀取和寫入都要檢查檔案是否在檔案開啟列表中,未開啟檔案不能讀寫,唯讀檔案不能寫,只寫檔案不能讀。

資料夾和檔案建立,資料夾和檔案的建立首先檢驗目錄是否為空,為空則把資料夾或檔案連線到該目錄下,不為空則把檢查目錄下是否有同名資料夾或檔案,有則提示建立不成功,沒有則把資料夾或檔案連線到該目錄下的最後乙個子節點,作為它的兄弟節點。

資料夾和檔案的刪除,資料夾下沒有開啟的檔案或檔案沒有開啟才能刪除,否則刪除失敗,刪除資料夾時利用了中序歷遍來刪除子樹。

二、 系統結構說明

系統結構如下圖:

root為根結點,root下有五個使用者,每個使用者有自己的資料夾或檔案,系統初始化時為每個使用者建立乙個file1檔案。資料夾內容只有名稱和開啟標誌。檔案除了名稱和開啟標誌,還有檔案的訪問許可權,檔案型別以及檔案長度。

其中檔案的訪問許可權、檔案型別、檔案長度單獨作為乙個結構體,其它和資料夾結構體相同,也同用乙個結構體。

開啟檔案列表的結構體包括檔名和檔案的父節點位址,開啟資料夾的棧中包括資料夾名稱及其位址

三、 資料結構的說明

//普通檔案的結構體

struct file;

typedef struct file file;

//資料夾或檔案的結構體

struct fcb ;

typedef struct fcb ff;

//root和fcp為全域性變數

ff *root;//根節點

ff *fcp=null;//判斷是否有拷貝檔案

//開啟項的結構體

typedef structopened;

int opfo=0; //記錄資料夾開啟數目,最多20

opened folderopened[20];//記錄檔案開啟資料夾

int opfi=0; //記錄檔案開啟數目,最多20

opened fileopened[20];//記錄開啟檔案

四、 函式清單及部分函式流程圖

//函式宣告

void init();//初始化建立根節點

void initopen();//初始化開啟檔案列表或開啟資料夾檔案列表

ff* creat(ff *parent,char name[20],char kind);//建立檔案或資料夾

void delet(ff *parent,char delname[20],char kind);//刪除檔案資料夾

void delsub(ff *delp刪除子樹(配合刪除資料夾使用)

void openfolder(ff *parent, char name[20]);//開啟資料夾

void openfile(ff *parent, char name[20]);//開啟檔案

void closefo關閉資料夾

void closefile(char name[20關閉檔案

void read(ff*parent,char name[20讀檔案

void write(char name[20寫檔案

void show顯示初始介面

void initfile初始化每個使用者,為每個使用者建立乙個file1檔案

int ish**eopen(ff *bedel判斷資料夾下是否有開啟的檔案或資料夾

void filecpy(ff *parent,char name[20]);//檔案複製函式

void pastefile(ff *parent檔案貼上

主函式流程圖:

主函式開始執行時,先初始化。初始化包括建立root根目錄,建立user0~user4五個使用者,為每個使用者建立乙個file1的檔案。

初始化完畢後,顯示選擇使用者和退出系統兩個操作,列出使用者。選擇1則進入選擇使用者介面,選擇使用者後則列出使用者目錄下的內容。同時顯示操作介面。

選擇操作後,執行相應的操作。執行完畢回到選擇操作介面。

建立資料夾或檔案函式流程圖(creat()):

建立檔案或資料夾首先通過主函式選擇操作來傳遞引數,kind=1建立資料夾,kind=2建立檔案。檔案或資料夾名稱是由使用者輸入。檔案或資料夾的父節點由folderopened[opfo-1].

node來傳遞。

如果當前目錄下由同名檔案或同名資料夾則建立檔案或建立資料夾不成功。

當前目錄是空目錄則建立的檔案或資料夾是當前目錄的首個子節點。parent指標指向當前目錄,當前目錄的child指標指向檔案或資料夾。

當前目錄不為空,則把檔案或資料夾連線到當前目錄下最後的子節點後面,作為最後的兄弟節點。

刪除檔案或資料夾函式delet()的流程圖:

同樣刪除檔案或資料夾的型別引數由使用者選擇操作時傳遞。kind=1刪除資料夾,kind=2刪除檔案。名稱也由使用者輸入。

檔案在開啟列表或資料夾中有開啟的檔案,檔案或資料夾不能刪除,目錄下沒有該檔案或資料夾刪除失敗,刪除失敗時返回相應的資訊。

如果目錄下有該檔案或資料夾,而且檔案沒開啟,或資料夾中沒有開啟的檔案,則刪除該釋放該節點或該子樹。返回刪除成功資訊。

流程圖如下:

檔案開啟函式及其流程圖openfile():

檔案開啟,只能但開當前目錄下的檔案,首先查詢檔案是否在開啟檔案列表中,在則返回檔案已經在開啟檔案列表中的資訊,不是,則檢視當前目錄有沒有該檔案,有則開啟,同時把檔名及其父節點位址寫到檔案佇列中,置檔案開啟標誌為1。返回開啟成功資訊。

檔案被開啟後,返回上層目錄或到別的目錄下,檔案不會從開啟檔案列表中刪除。除非在檔案所在的目錄下執行關閉檔案操作關閉此檔案檔案才從開啟檔案列表中刪除。

其流程圖如下:

檔案刪除函式說明及其流程圖:

檔案刪除,只能對當前的目錄下的檔案進行操作。檔案不在開啟佇列中,關閉失敗,返回提示資訊。在開啟列表中則關閉檔案,置檔案開啟標誌為0。

流程圖如下:

資料夾開啟和關閉函式說明:

資料夾開啟,只能開啟當前目錄下的資料夾開啟後,資料夾名稱及其節點位址寫到資料夾堆疊中(如果開啟的是同乙個目錄,不用寫開啟資料夾堆疊),同時列出資料夾目錄下的內容。關閉資料夾(返回上級目錄)則把當前目錄從開啟資料夾堆疊中丟擲,同時開啟上級目錄。

以下是開啟資料夾和關閉資料夾函式源程式:

開啟資料夾:

void openfolder(ff *parent, char name[20])

beopen=parent->child;

while(beopen尋找要開啟的資料夾

if(!beopen->brother)

beopen=beopen->brother;

}//while end

if(!beopen->child)

folderopened[opfo].node=beopen;

strcpy(folderopened[opfo].name,beopen->name);

opfo++;

return;

}if(beopen->child)

{select=beopen->child;

while(select) //列出資料夾下的內容

{for(int i=0;i<3&&select;i++)

作業系統課程設計報告

上海電力學院 計算機作業系統原理 課程設計報告 題目名稱 編寫程式模擬虛擬儲存器管理 姓名 杜志豪 學號 20121798 班級 2012053班 同組姓名 孫嘉軼 課程設計時間 2014.6.30 2014.7.4 評語成績 一 設計內容及要求4 1.1 設計題目4 1 2 使用演算法分析4 1 ...

作業系統課程設計報告

作業系統 課程設計報告 姓名吳昊學號 20091811042 系別資訊管理與工程系 專業電腦科學與技術班級 09級 課程設計題目模擬檔案管理系統 指導教師崔新會 小組成員吳昊 丁強強 辛夢娟 王放 周洋 2012 年 6 月 11 日 目錄 內容摘要 2 第一章引言 2 第二章需求分析 4 第三章系...

作業系統課程設計報告

課程設計說明書 設計名稱 作業系統課程設計 題目 檔案訪問介面設計 學生姓名 陳小浪 專業 電腦科學與技術 班級 12級1班 學號 2012314118 指導教師 任朝暉 日期 2014 年 9 月 15 日 課程設計任務書 電腦科學與技術專業年級班 一 設計題目 檔案訪問介面設計 二 主要內容 利...