操作系統(tǒng)課程設(shè)計--為linux系統(tǒng)設(shè)計一個簡單的二級文件系統(tǒng)_第1頁
操作系統(tǒng)課程設(shè)計--為linux系統(tǒng)設(shè)計一個簡單的二級文件系統(tǒng)_第2頁
操作系統(tǒng)課程設(shè)計--為linux系統(tǒng)設(shè)計一個簡單的二級文件系統(tǒng)_第3頁
操作系統(tǒng)課程設(shè)計--為linux系統(tǒng)設(shè)計一個簡單的二級文件系統(tǒng)_第4頁
操作系統(tǒng)課程設(shè)計--為linux系統(tǒng)設(shè)計一個簡單的二級文件系統(tǒng)_第5頁
已閱讀5頁,還剩11頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、操作系統(tǒng)課程設(shè)計報告題目: 為Linux系統(tǒng)設(shè)計一個簡單的二級文件系統(tǒng) 指導(dǎo)老師: 時間:2021.8.30一 課程設(shè)計的目的課程設(shè)計目的使學(xué)生熟悉文件管理系統(tǒng)的設(shè)計方法;加深對所學(xué)各種文件操作的了解及其操作方法的特點。通過模擬文件系統(tǒng)的實現(xiàn),深入理解操作系統(tǒng)中文件系統(tǒng)的理論知識, 加深對教材中的重要算法的理解。同時通過編程實現(xiàn)這些算法,更好地掌握操作系統(tǒng)的原理及實現(xiàn)方法,提高綜合運用各專業(yè)課知識的能力。二 課程設(shè)計的要求 1.可以實現(xiàn)下列幾條命令:login 用戶登錄dir 列目錄create 創(chuàng)建文件delete 刪除文件open 打開文件close 關(guān)閉文件read 讀文件write 寫

2、文件2列目錄時要列出文件名,物理地址,保護(hù)碼和文件長度3源文件可以進(jìn)行讀寫保護(hù)三 算法設(shè)計本次二級文件系統(tǒng)主要分為五大模塊,分別是用戶登錄模塊、新建目錄模塊、新建文件模塊、刪除文件模塊和讀取文件模塊。用戶登錄成功后才可以進(jìn)行其他模塊的操作。1 用戶登錄模塊 用戶登錄模塊要求用戶輸入用戶,當(dāng)輸入正確后才能進(jìn)行其他模塊操作,否則提示用戶名不存在并詢問用戶是否用此名進(jìn)行注冊。若用戶名未滿,則提示注冊成功,否則提示用現(xiàn)有注冊用戶,進(jìn)行登錄,并返回到登錄界面。用戶登錄模塊流程圖如圖1所示。開始 輸入login命令 否輸入用戶名是否注冊用戶是否存在 是 否 是進(jìn)行其他模塊圖1 用戶登錄模塊流程圖2新建文件

3、模塊新建文件模塊是在用戶出入create指令后進(jìn)行的,進(jìn)入后會要求用戶輸入文件名,并判斷文件名是否存在,若沒有則在要求用戶輸入文件讀寫權(quán)限,否則重新輸入新的文件名。新建文件模塊流程圖如圖2所示。開始 輸入create命令 輸入文件名文件名是否存在 是 否輸入權(quán)限圖2 新建文件流程圖3 刪除文件模塊開始刪除文件模塊是根據(jù)用戶鼠標(biāo)右擊時選擇到的節(jié)點來確定要刪除節(jié)點的名字與路徑,然后判斷該節(jié)點是目錄還是文件。若是文件則直接刪除文件,若是目錄則進(jìn)入該目錄再刪除其全部文件。刪除文件模塊流程圖如圖4所示。 輸如open 文件名 提示無此文件文件名是否存在 否 輸入權(quán)限 是圖4 刪除文件模塊流程圖4讀取文件

4、模塊開始讀取文件模塊,要求用戶要在文件打開的前提下,將磁盤中的內(nèi)容讀取到內(nèi)存中。讀取文件流程圖如圖5所示。 Open 文件 輸如read 文件名 文件是否存在 是 提示文件未打開文件是否已打開 否顯示文件內(nèi)容圖5 讀取文件模塊流程圖5 寫入文件模塊 寫入文件模塊,思路與讀取文件模塊將本相同,只是添加了對讀寫權(quán)限的判斷。6 遍歷文件遍歷文件,根據(jù)在用戶登陸時,記錄的值,在二維數(shù)組中,找到用戶的所有文件對象,將相應(yīng)的必須屬性全部打印出來。四 程序源代碼1. 文件對象相關(guān)代碼 package com.file;import java.io.Serializable;public class File

5、Pro implements SerializableString filename;String content;String username;int flag;int protect;public FilePro(String filename,String username,String content,int flag,int protect)this.filename = filename;this.username = username;this.content = content;this.flag = flag;tect = protect;2. 文件讀寫操作

6、 package com.file;import java.io.*;import java.util.*;public class FileCon Object data = new Object7100;ObjectInputStream in = null;ObjectOutputStream out = null;String path = D:file;public FileCon()for(int i = 0;i7;i+)for(int j = 0;j100;j+)dataij = new FilePro(,null,1,0);public Object readData()try

7、 in = new ObjectInputStream(new BufferedInputStream(new FileInputStream(path);data = (Object) in.readObject(); catch(EOFException e) catch (Exception e) return data;public void writeData(Object data)try out = new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream(path);out.writeObject(

8、data);out.flush(); catch (Exception e) e.printStackTrace(); 3.用戶名操作public class UserCon List list = new ArrayList();ObjectInputStream in = null;ObjectOutputStream out = null;String path = D:user;public List readUser()try in = new ObjectInputStream(new BufferedInputStream(new FileInputStream(path);li

9、st = (List) in.readObject(); catch(EOFException e) catch (Exception e) return list;public void writeUser(List list)try out = new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream(path);out.writeObject(list);out.flush(); catch (Exception e) e.printStackTrace(); 4.主程序package com.file;im

10、port java.util.*;public class FileSystem Object data = new Object7100;FileCon fc = new FileCon();List user = new ArrayList();UserCon uc = new UserCon();String cmd = new String2;int currentuser = 0;public FileSystem() data = fc.readData();user = uc.readUser();public static void main(String args) File

11、System fs = new FileSystem();fs.help();public void help() System.out.println(歡迎使用該文件系統(tǒng));System.out.print(create );System.out.println(創(chuàng)建文件);System.out.print(dir );System.out.println(列目錄文件);System.out.println(exit 退出系統(tǒng));System.out.println(以下命令需加文件名);System.out.println(eg:open *);System.out.print(open

12、);System.out.println(打開文件);System.out.print(close );System.out.println(關(guān)閉文件);System.out.print(read );System.out.println(讀文件);System.out.print(write );System.out.println(寫文件);System.out.print(delete );System.out.println(刪除文件);command();public void command() System.out.print(root:);String comd = null;

13、Scanner input = input = new Scanner(System.in);comd = input.nextLine();String cmd = new String2;cmd = comd.split( );if (cmd0.equals(login)login();else if (cmd0.equals(create)create();else if (cmd0.equals(dir)dir();else if (cmd0.equals(delete)delete(cmd1);else if (cmd0.equals(open)open(cmd1);else if

14、(cmd0.equals(close)close(cmd1);else if (cmd0.equals(read)read(cmd1);else if (cmd0.equals(write)write(cmd1);else if (cmd0.equals(exit)System.out.println(退出系統(tǒng)!); System.exit(0);else System.out.println(指令錯誤!);command();public void login() boolean f = false;System.out.println(請輸入用戶名:);Scanner input = in

15、put = new Scanner(System.in);String username = input.next();for (int i = 0; i user.size(); i+) if (user.get(i).equals(username) System.out.println(登陸成功!);currentuser = i;f = true;break;if (!f) System.out.println(該用戶不存在,是否以此用戶名注冊?y注冊,其他返回);String cho = input.next();if (cho.equals(y) if (user.size() =

16、 7)System.out.println(對不起用戶已滿,請利用其他已注冊賬戶登錄);else user.add(username);uc.writeUser(user);System.out.println(注冊成功!請重新登錄);login();command();/ 目錄public void dir() System.out.println(文件名t + 用戶名t + 物理地址t + 保護(hù)碼t + 文件長度);for (int i = 0; i 100; i+) FilePro fp1 = (FilePro) datacurrentuseri;if (!fp1.filename.eq

17、uals()System.out.println(fp1.filename + t + fp1.username + t+ currentuser + i + t + tect + t+ fp1.content.length();command();/ 創(chuàng)建文件public void create() Scanner input = input = new Scanner(System.in);boolean f = true;boolean fl = false;String filename = null;dofl = false; System.out.print(請輸入文

18、加名:); filename = input.next();for (int i = 0; i 100; i+) FilePro fp1 = (FilePro) datacurrentuseri;if (fp1.filename.equals(filename) System.out.println(文件已存在!);fl = true;break;while(fl);System.out.print(請輸入權(quán)限:);int protect = input.nextInt();FilePro fp = new FilePro(filename, user.get(currentuser), ,

19、1,protect);for (int i = 0; i 100; i+) FilePro fp1 = (FilePro) datacurrentuseri;if (fp1.filename.equals() datacurrentuseri = fp;fc.writeData(data);System.out.println(創(chuàng)建成功!);f = false;break;if (f) System.out.println(磁盤已滿);command();/ 刪除文件public void delete(String file) boolean f = true;for (int i = 0;

20、 i 100; i+) FilePro fp1 = (FilePro) datacurrentuseri;if (fp1.filename.equals(file) fp1.filename = ;fp1.content = null;fp1.flag = 1;fp1.username = null;fc.writeData(data);System.out.println(刪除成功!);f = false;break;if (f) System.out.println(無此文件);command();/ 打開文件public void open(String file) boolean f

21、= true;for (int i = 0; i 100; i+) FilePro fp1 = (FilePro) datacurrentuseri;if (fp1.filename.equals(file) if (fp1.flag = 0)System.out.println(文件已打開!);else fp1.flag = 0;System.out.println(文件打開成功!);f = false;break;if (f) System.out.println(無此文件);command();/ 關(guān)閉文件public void close(String file) boolean f

22、= true;for (int i = 0; i 100; i+) FilePro fp1 = (FilePro) datacurrentuseri;if (fp1.filename.equals(file) if (fp1.flag = 1)System.out.println(文件未打開!);else fp1.flag = 1;System.out.println(文件關(guān)閉成功!);f = false;break;if (f) System.out.println(無此文件);command();/ 讀文件public void read(String file) boolean f =

23、true;for (int i = 0; i 100; i+) FilePro fp1 = (FilePro) datacurrentuseri;if (fp1.filename.equals(file) if (fp1.flag = 1)System.out.println(文件未打開!請先將文件打開!);else System.out.println(fp1.content);f = false;break;if (f) System.out.println(無此文件);command();/ 寫文件public void write(String file) Scanner input

24、= input = new Scanner(System.in);boolean f = true;for (int i = 0; i 100; i+) FilePro fp1 = (FilePro) datacurrentuseri;if (fp1.filename.equals(file) if (fp1.flag = 1)System.out.println(文件未打開!請先將文件打開!);else if (tect != 0)System.out.println(對不起,您沒有寫入的權(quán)限!);else System.out.println(請輸入要寫入的內(nèi)容:);Stri

25、ng ss = input.next();fp1.content = fp1.content + ss;fc.writeData(data);System.out.println(寫入成功);f = false;break;if (f) System.out.println(無此文件);command();五 程序運行截圖六 心得體會 對于本次操作系統(tǒng)課程設(shè),由于對二級文件的內(nèi)容比較陌生,剛起步階段花了很大時間去思考,但是仍然還是比較模糊。當(dāng)完成設(shè)計時,感覺還是不是太了解,總感覺得到的和要求的有些差別,不過對二級文件系統(tǒng)也有了進(jìn)一步的了解,并且還對操作系統(tǒng)應(yīng)用有了更深入的認(rèn)識??傮w來說,這次課程下來,發(fā)現(xiàn)自己的,語言基礎(chǔ)掌握的一點也不好,讓我遇到了許多的問題。 公司印章管理制度一、目的 公司印章是公司對內(nèi)對外行使權(quán)力的標(biāo)志,也是公司名稱的法律體現(xiàn), 因此,必須對印章進(jìn)行規(guī)范化

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論