操作系統(tǒng)課程設(shè)計(jì)--為L(zhǎng)inux系統(tǒng)設(shè)計(jì)一個(gè)簡(jiǎn)單的二級(jí)文件系統(tǒng)_第1頁(yè)
操作系統(tǒng)課程設(shè)計(jì)--為L(zhǎng)inux系統(tǒng)設(shè)計(jì)一個(gè)簡(jiǎn)單的二級(jí)文件系統(tǒng)_第2頁(yè)
操作系統(tǒng)課程設(shè)計(jì)--為L(zhǎng)inux系統(tǒng)設(shè)計(jì)一個(gè)簡(jiǎn)單的二級(jí)文件系統(tǒng)_第3頁(yè)
操作系統(tǒng)課程設(shè)計(jì)--為L(zhǎng)inux系統(tǒng)設(shè)計(jì)一個(gè)簡(jiǎn)單的二級(jí)文件系統(tǒng)_第4頁(yè)
操作系統(tǒng)課程設(shè)計(jì)--為L(zhǎng)inux系統(tǒng)設(shè)計(jì)一個(gè)簡(jiǎn)單的二級(jí)文件系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩8頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

4、模塊開(kāi)始讀取文件模塊,要求用戶(hù)要在文件打開(kāi)的前提下,將磁盤(pán)中的內(nèi)容讀取到內(nèi)存中。讀取文件流程圖如圖5所示。 Open 文件 輸如read 文件名 文件是否存在 是 提示文件未打開(kāi)文件是否已打開(kāi) 否顯示文件內(nèi)容圖5 讀取文件模塊流程圖5 寫(xiě)入文件模塊 寫(xiě)入文件模塊,思路與讀取文件模塊將本相同,只是添加了對(duì)讀寫(xiě)權(quán)限的判斷。6 遍歷文件遍歷文件,根據(jù)在用戶(hù)登陸時(shí),記錄的值,在二維數(shù)組中,找到用戶(hù)的所有文件對(duì)象,將相應(yīng)的必須屬性全部打印出來(lái)。四 程序源代碼1. 文件對(duì)象相關(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. 文件讀寫(xiě)操作

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;i<7;i+)for(int j = 0;j<100;j+)dataij = new FilePro("",null,&

7、quot;",1,0);public Object readData()try 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

8、(new FileOutputStream(path);out.writeObject(data);out.flush(); catch (Exception e) e.printStackTrace(); 3.用戶(hù)名操作public class UserCon List<String> list = new ArrayList<String>();ObjectInputStream in = null;ObjectOutputStream out = null;String path = "D:user"public List<String&

9、gt; readUser()try in = new ObjectInputStream(new BufferedInputStream(new FileInputStream(path);list = (List<String>) in.readObject(); catch(EOFException e) catch (Exception e) return list;public void writeUser(List<String> list)try out = new ObjectOutputStream(new BufferedOutputStream(ne

10、w FileOutputStream(path);out.writeObject(list);out.flush(); catch (Exception e) e.printStackTrace(); 4.主程序package com.file;import java.util.*;public class FileSystem Object data = new Object7100;FileCon fc = new FileCon();List<String> user = new ArrayList<String>();UserCon uc = new UserC

11、on();String cmd = new String2;int currentuser = 0;public FileSystem() data = fc.readData();user = uc.readUser();public static void main(String args) FileSystem fs = new FileSystem();fs.help();public void help() System.out.println("歡迎使用該文件系統(tǒng)");System.out.print("create ");System.ou

12、t.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 ");System.out.println("打開(kāi)文件");

13、System.out.print("close ");System.out.println("關(guān)閉文件");System.out.print("read ");System.out.println("讀文件");System.out.print("write ");System.out.println("寫(xiě)文件");System.out.print("delete ");System.out.println("刪除文件");comman

14、d();public void command() System.out.print("root:>");String comd = null;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")creat

15、e();else if (cmd0.equals("dir")dir();else if (cmd0.equals("delete")delete(cmd1);else if (cmd0.equals("open")open(cmd1);else if (cmd0.equals("close")close(cmd1);else if (cmd0.equals("read")read(cmd1);else if (cmd0.equals("write")write(cmd1);

16、else if (cmd0.equals("exit")System.out.println("退出系統(tǒng)!"); System.exit(0);else System.out.println("指令錯(cuò)誤!");command();public void login() boolean f = false;System.out.println("請(qǐng)輸入用戶(hù)名:");Scanner input = input = new Scanner(System.in);String username = input.next()

17、;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("該用戶(hù)不存在,是否以此用戶(hù)名注冊(cè)?y注冊(cè),其他返回");String cho = input.next();if (cho.equals("y") if (user.size() = 7)System.out.prin

18、tln("對(duì)不起用戶(hù)已滿(mǎn),請(qǐng)利用其他已注冊(cè)賬戶(hù)登錄");else user.add(username);uc.writeUser(user);System.out.println("注冊(cè)成功!請(qǐng)重新登錄");login();command();/ 目錄public void dir() System.out.println("文件名t" + "用戶(hù)名t" + "物理地址t" + "保護(hù)碼t" + "文件長(zhǎng)度");for (int i = 0; i <

19、 100; i+) FilePro fp1 = (FilePro) datacurrentuseri;if (!fp1.filename.equals("")System.out.println(fp1.filename + "t" + fp1.username + "t"+ currentuser + i + "t" + tect + "t"+ fp1.content.length();command();/ 創(chuàng)建文件public void create() Scanner in

20、put = input = new Scanner(System.in);boolean f = true;boolean fl = false;String filename = null;dofl = false; System.out.print("請(qǐng)輸入文加名:"); filename = input.next();for (int i = 0; i < 100; i+) FilePro fp1 = (FilePro) datacurrentuseri;if (fp1.filename.equals(filename) System.out.println(&

21、quot;文件已存在!");fl = true;break;while(fl);System.out.print("請(qǐng)輸入權(quán)限:");int protect = input.nextInt();FilePro fp = new FilePro(filename, user.get(currentuser), "", 1,protect);for (int i = 0; i < 100; i+) FilePro fp1 = (FilePro) datacurrentuseri;if (fp1.filename.equals("&q

22、uot;) datacurrentuseri = fp;fc.writeData(data);System.out.println("創(chuàng)建成功!");f = false;break;if (f) System.out.println("磁盤(pán)已滿(mǎn)");command();/ 刪除文件public void delete(String file) boolean f = true;for (int i = 0; i < 100; i+) FilePro fp1 = (FilePro) datacurrentuseri;if (fp1.filename.

23、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("無(wú)此文件");command();/ 打開(kāi)文件public void open(String file) boolean f = true;for (int i = 0; i < 100;

24、i+) FilePro fp1 = (FilePro) datacurrentuseri;if (fp1.filename.equals(file) if (fp1.flag = 0)System.out.println("文件已打開(kāi)!");else fp1.flag = 0;System.out.println("文件打開(kāi)成功!");f = false;break;if (f) System.out.println("無(wú)此文件");command();/ 關(guān)閉文件public void close(String file) bool

25、ean 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("文件未打開(kāi)!");else fp1.flag = 1;System.out.println("文件關(guān)閉成功!");f = false;break;if (f) System.out.println("無(wú)此文件");command();/ 讀文件public void read(String file) 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("文件未打開(kāi)!請(qǐng)先將文件打開(kāi)!")

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論