版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 操作系統(tǒng)課程設(shè)計(jì)報(bào)告</p><p> 題目: 為L(zhǎng)inux系統(tǒng)設(shè)計(jì)一個(gè)簡(jiǎn)單的二級(jí)文件系統(tǒng)</p><p><b> 指導(dǎo)老師:</b></p><p> 時(shí)間:2012.8.30</p><p><b> 一 課程設(shè)計(jì)的目的</b></p><p&
2、gt; 課程設(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)用各專業(yè)課知識(shí)的能力。</p><p><b> 二 課程設(shè)計(jì)的要求</b></p><p>
3、1.可以實(shí)現(xiàn)下列幾條命令:</p><p> login 用戶登錄</p><p> dir 列目錄</p><p> create 創(chuàng)建文件</p><p> delete 刪除文件</p><p> open 打開(kāi)文件</p&g
4、t;<p> close 關(guān)閉文件</p><p> read 讀文件</p><p> write 寫(xiě)文件</p><p> 2.列目錄時(shí)要列出文件名,物理地址,保護(hù)碼和文件長(zhǎng)度</p><p> 3.源文件可以進(jìn)行讀寫(xiě)保護(hù)</p><p><
5、b> 三 算法設(shè)計(jì)</b></p><p> 本次二級(jí)文件系統(tǒng)主要分為五大模塊,分別是用戶登錄模塊、新建目錄模塊、新建文件模塊、刪除文件模塊和讀取文件模塊。用戶登錄成功后才可以進(jìn)行其他模塊的操作。</p><p><b> 1 用戶登錄模塊</b></p><p> 用戶登錄模塊要求用戶輸入用戶,當(dāng)輸入正確后才能進(jìn)行其
6、他模塊操作,否則提示用戶名不存在并詢問(wèn)用戶是否用此名進(jìn)行注冊(cè)。若用戶名未滿,則提示注冊(cè)成功,否則提示用現(xiàn)有注冊(cè)用戶,進(jìn)行登錄,并返回到登錄界面。用戶登錄模塊流程圖如圖1所示。</p><p><b> 否</b></p><p><b> 是</b></p><p><b> 否</b><
7、/p><p><b> 是</b></p><p> 圖1 用戶登錄模塊流程圖</p><p><b> 2新建文件模塊</b></p><p> 新建文件模塊是在用戶出入create指令后進(jìn)行的,進(jìn)入后會(huì)要求用戶輸入文件名,并判斷文件名是否存在,若沒(méi)有則在要求用戶輸入文件讀寫(xiě)權(quán)限,否則重新輸入
8、新的文件名。新建文件模塊流程圖如圖2所示。</p><p><b> 是</b></p><p><b> 否</b></p><p> 圖2 新建文件流程圖</p><p><b> 3 刪除文件模塊</b></p><p> 刪除文件模塊是
9、根據(jù)用戶鼠標(biāo)右擊時(shí)選擇到的節(jié)點(diǎn)來(lái)確定要?jiǎng)h除節(jié)點(diǎn)的名字與路徑,然后判斷該節(jié)點(diǎn)是目錄還是文件。若是文件則直接刪除文件,若是目錄則進(jìn)入該目錄再刪除其全部文件。刪除文件模塊流程圖如圖4所示。</p><p><b> 否</b></p><p><b> 是</b></p><p> 圖4 刪除文件模塊流程圖</p&g
10、t;<p><b> 4讀取文件模塊</b></p><p> 讀取文件模塊,要求用戶要在文件打開(kāi)的前提下,將磁盤(pán)中的內(nèi)容讀取到內(nèi)存中。讀取文件流程圖如圖5所示。</p><p> 是 </p><p><b> 否</b></p><p> 圖5 讀取文件模
11、塊流程圖</p><p><b> 5 寫(xiě)入文件模塊</b></p><p> 寫(xiě)入文件模塊,思路與讀取文件模塊將本相同,只是添加了對(duì)讀寫(xiě)權(quán)限的判斷。</p><p><b> 6 遍歷文件</b></p><p> 遍歷文件,根據(jù)在用戶登陸時(shí),記錄的值,在二維數(shù)組中,找到用戶的所有文件對(duì)象
12、,將相應(yīng)的必須屬性全部打印出來(lái)。</p><p><b> 四 程序源代碼</b></p><p> 1. 文件對(duì)象相關(guān)代碼</p><p> package com.file;</p><p> import java.io.Serializable;</p><p> public
13、class FilePro implements Serializable{</p><p> String filename;</p><p> String content;</p><p> String username;</p><p><b> int flag;</b></p><
14、;p> int protect;</p><p> public FilePro(String filename,String username,String content,int flag,int protect){</p><p> this.filename = filename;</p><p> this.username = userna
15、me;</p><p> this.content = content;</p><p> this.flag = flag;</p><p> this.protect = protect;</p><p><b> }</b></p><p><b> }</b>
16、;</p><p><b> 2. 文件讀寫(xiě)操作</b></p><p> package com.file;</p><p> import java.io.*;</p><p> import java.util.*;</p><p> public class FileCon {&
17、lt;/p><p> Object [][] data = new Object[7][100];</p><p> ObjectInputStream in = null;</p><p> ObjectOutputStream out = null;</p><p> String path = "D:\\file"
18、;;</p><p> public FileCon(){</p><p> for(int i = 0;i<7;i++)</p><p> for(int j = 0;j<100;j++){</p><p> data[i][j] = new FilePro("",null,"",
19、1,0);</p><p><b> }</b></p><p><b> }</b></p><p> public Object[][] readData(){</p><p><b> try {</b></p><p> in = ne
20、w ObjectInputStream(new BufferedInputStream(new FileInputStream(path)));</p><p> data = (Object[][]) in.readObject();</p><p> } catch(EOFException e){</p><p> } catch (Exception
21、e) {</p><p><b> }</b></p><p> return data;</p><p><b> }</b></p><p> public void writeData(Object[][] data){</p><p><b> t
22、ry {</b></p><p> out = new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream(path)));</p><p> out.writeObject(data);</p><p> out.flush();</p><p>
23、; } catch (Exception e) {</p><p> e.printStackTrace();</p><p><b> } </b></p><p><b> }</b></p><p><b> }</b></p><p>
24、<b> 3.用戶名操作</b></p><p> public class UserCon {</p><p> List<String> list = new ArrayList<String>();</p><p> ObjectInputStream in = null;</p><p
25、> ObjectOutputStream out = null;</p><p> String path = "D:\\user";</p><p> public List<String> readUser(){</p><p><b> try {</b></p><p&g
26、t; in = new ObjectInputStream(new BufferedInputStream(new FileInputStream(path)));</p><p> list = (List<String>) in.readObject();</p><p> } catch(EOFException e){</p><p>
27、} catch (Exception e) {</p><p><b> }</b></p><p> return list;</p><p><b> }</b></p><p> public void writeUser(List<String> list){</p
28、><p><b> try {</b></p><p> out = new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream(path)));</p><p> out.writeObject(list);</p><p> out.f
29、lush();</p><p> } catch (Exception e) {</p><p> e.printStackTrace();</p><p><b> } </b></p><p><b> }</b></p><p><b> }<
30、/b></p><p><b> 4.主程序</b></p><p> package com.file;</p><p> import java.util.*;</p><p> public class FileSystem {</p><p> Object[][] dat
31、a = new Object[7][100];</p><p> FileCon fc = new FileCon();</p><p> List<String> user = new ArrayList<String>();</p><p> UserCon uc = new UserCon();</p><p&
32、gt; String[] cmd = new String[2];</p><p> int currentuser = 0;</p><p> public FileSystem() {</p><p> data = fc.readData();</p><p> user = uc.readUser();</p>
33、<p><b> }</b></p><p> public static void main(String[] args) {</p><p> FileSystem fs = new FileSystem();</p><p> fs.help();</p><p><b> }<
34、;/b></p><p> public void help() {</p><p> System.out.println("歡迎使用該文件系統(tǒng)");</p><p> System.out.print("create ");</p><p> System.out.println(&q
35、uot;創(chuàng)建文件");</p><p> System.out.print("dir ");</p><p> System.out.println("列目錄文件");</p><p> System.out.println("exit 退出系統(tǒng)");</p>&l
36、t;p> System.out.println("以下命令需加文件名");</p><p> System.out.println("eg:open ***");</p><p> System.out.print("open ");</p><p> System.out.println
37、("打開(kāi)文件");</p><p> System.out.print("close ");</p><p> System.out.println("關(guān)閉文件");</p><p> System.out.print("read ");</p><p&g
38、t; System.out.println("讀文件");</p><p> System.out.print("write ");</p><p> System.out.println("寫(xiě)文件");</p><p> System.out.print("delete ")
39、;</p><p> System.out.println("刪除文件");</p><p> command();</p><p><b> }</b></p><p> public void command() {</p><p> System.out.pri
40、nt("root:>");</p><p> String comd = null;</p><p> Scanner input = input = new Scanner(System.in);</p><p> comd = input.nextLine();</p><p> String[] cmd
41、 = new String[2];</p><p> cmd = comd.split(" ");</p><p> if (cmd[0].equals("login"))</p><p><b> login();</b></p><p> else if (cmd[0]
42、.equals("create"))</p><p><b> create();</b></p><p> else if (cmd[0].equals("dir"))</p><p><b> dir();</b></p><p> else if
43、 (cmd[0].equals("delete"))</p><p> delete(cmd[1]);</p><p> else if (cmd[0].equals("open"))</p><p> open(cmd[1]);</p><p> else if (cmd[0].equals(
44、"close"))</p><p> close(cmd[1]);</p><p> else if (cmd[0].equals("read"))</p><p> read(cmd[1]);</p><p> else if (cmd[0].equals("write")
45、)</p><p> write(cmd[1]);</p><p> else if (cmd[0].equals("exit")){</p><p> System.out.println("退出系統(tǒng)!");</p><p> System.exit(0);}</p><p
46、> else System.out.println("指令錯(cuò)誤??!");</p><p> command();</p><p><b> }</b></p><p> public void login() {</p><p> boolean f = false;</p>
47、;<p> System.out.println("請(qǐng)輸入用戶名:");</p><p> Scanner input = input = new Scanner(System.in);</p><p> String username = input.next();</p><p> for (int i = 0; i &
48、lt; user.size(); i++) {</p><p> if (user.get(i).equals(username)) {</p><p> System.out.println("登陸成功!!");</p><p> currentuser = i;</p><p><b> f = tr
49、ue;</b></p><p><b> break;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> if (!f) {</b></p><p>
50、 System.out.println("該用戶不存在,是否以此用戶名注冊(cè)?y注冊(cè),其他返回");</p><p> String cho = input.next();</p><p> if (cho.equals("y")) {</p><p> if (user.size() == 7)</p>&
51、lt;p> System.out.println("對(duì)不起用戶已滿,請(qǐng)利用其他已注冊(cè)賬戶登錄");</p><p><b> else {</b></p><p> user.add(username);</p><p> uc.writeUser(user);</p><p> Sy
52、stem.out.println("注冊(cè)成功!請(qǐng)重新登錄");</p><p><b> }</b></p><p><b> login();</b></p><p><b> }</b></p><p><b> }</b>
53、</p><p> command();</p><p><b> }</b></p><p><b> // 目錄</b></p><p> public void dir() {</p><p> System.out.println("文件名\t&q
54、uot; + "用戶名\t" + "物理地址\t" + "保護(hù)碼\t" + "文件長(zhǎng)度");</p><p> for (int i = 0; i < 100; i++) {</p><p> FilePro fp1 = (FilePro) data[currentuser][i];</p>
55、;<p> if (!fp1.filename.equals(""))</p><p> System.out.println(fp1.filename + "\t" + fp1.username + "\t"</p><p> + currentuser + i + "\t" + fp1.
56、protect + "\t"</p><p> + fp1.content.length());</p><p><b> }</b></p><p> command();</p><p><b> }</b></p><p><b>
57、 // 創(chuàng)建文件</b></p><p> public void create() {</p><p> Scanner input = input = new Scanner(System.in);</p><p> boolean f = true;</p><p> boolean fl = false;<
58、/p><p> String filename = null;</p><p><b> do{</b></p><p> fl = false;</p><p> System.out.print("請(qǐng)輸入文加名:");</p><p> filename = inpu
59、t.next();</p><p> for (int i = 0; i < 100; i++) {</p><p> FilePro fp1 = (FilePro) data[currentuser][i];</p><p> if (fp1.filename.equals(filename)) {</p><p> Syst
60、em.out.println("文件已存在!!");</p><p> fl = true;</p><p><b> break;</b></p><p><b> }</b></p><p><b> }</b></p><p
61、> }while(fl);</p><p> System.out.print("請(qǐng)輸入權(quán)限:");</p><p> int protect = input.nextInt();</p><p> FilePro fp = new FilePro(filename, user.get(currentuser), "&qu
62、ot;, 1,</p><p><b> protect);</b></p><p> for (int i = 0; i < 100; i++) {</p><p> FilePro fp1 = (FilePro) data[currentuser][i];</p><p> if (fp1.filena
63、me.equals("")) {</p><p> data[currentuser][i] = fp;</p><p> fc.writeData(data);</p><p> System.out.println("創(chuàng)建成功?。?quot;);</p><p> f = false;</p&g
64、t;<p><b> break;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> if (f) {</b></p><p> System.out.println(&q
65、uot;磁盤(pán)已滿");</p><p><b> }</b></p><p> command();</p><p><b> }</b></p><p><b> // 刪除文件</b></p><p> public void d
66、elete(String file) {</p><p> boolean f = true;</p><p> for (int i = 0; i < 100; i++) {</p><p> FilePro fp1 = (FilePro) data[currentuser][i];</p><p> if (fp1.file
67、name.equals(file)) {</p><p> fp1.filename = "";</p><p> fp1.content = null;</p><p> fp1.flag = 1;</p><p> fp1.username = null;</p><p> fc.wr
68、iteData(data);</p><p> System.out.println("刪除成功??!");</p><p> f = false;</p><p><b> break;</b></p><p><b> }</b></p><p>
69、;<b> }</b></p><p><b> if (f) {</b></p><p> System.out.println("無(wú)此文件");</p><p><b> }</b></p><p> command();</p>
70、<p><b> }</b></p><p><b> // 打開(kāi)文件</b></p><p> public void open(String file) {</p><p> boolean f = true;</p><p> for (int i = 0; i <
71、 100; i++) {</p><p> FilePro fp1 = (FilePro) data[currentuser][i];</p><p> if (fp1.filename.equals(file)) {</p><p> if (fp1.flag == 0)</p><p> System.out.println(&q
72、uot;文件已打開(kāi)!");</p><p><b> else {</b></p><p> fp1.flag = 0;</p><p> System.out.println("文件打開(kāi)成功??!");</p><p><b> }</b></p>
73、<p> f = false;</p><p><b> break;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> if (f) {</b></p>&l
74、t;p> System.out.println("無(wú)此文件");</p><p><b> }</b></p><p> command();</p><p><b> }</b></p><p><b> // 關(guān)閉文件</b></p
75、><p> public void close(String file) {</p><p> boolean f = true;</p><p> for (int i = 0; i < 100; i++) {</p><p> FilePro fp1 = (FilePro) data[currentuser][i];</p
76、><p> if (fp1.filename.equals(file)) {</p><p> if (fp1.flag == 1)</p><p> System.out.println("文件未打開(kāi)!");</p><p><b> else {</b></p><p>
77、; fp1.flag = 1;</p><p> System.out.println("文件關(guān)閉成功?。?quot;);</p><p><b> }</b></p><p> f = false;</p><p><b> break;</b></p><
78、p><b> }</b></p><p><b> }</b></p><p><b> if (f) {</b></p><p> System.out.println("無(wú)此文件");</p><p><b> }</b&
79、gt;</p><p> command();</p><p><b> }</b></p><p><b> // 讀文件</b></p><p> public void read(String file) {</p><p> boolean f = true
80、;</p><p> for (int i = 0; i < 100; i++) {</p><p> FilePro fp1 = (FilePro) data[currentuser][i];</p><p> if (fp1.filename.equals(file)) {</p><p> if (fp1.flag ==
81、1)</p><p> System.out.println("文件未打開(kāi)!請(qǐng)先將文件打開(kāi)!");</p><p><b> else {</b></p><p> System.out.println(fp1.content);</p><p><b> }</b>&l
82、t;/p><p> f = false;</p><p><b> break;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> if (f) {</b></
83、p><p> System.out.println("無(wú)此文件");</p><p><b> }</b></p><p> command();</p><p><b> }</b></p><p><b> // 寫(xiě)文件</b&g
84、t;</p><p> public void write(String file) {</p><p> Scanner input = input = new Scanner(System.in);</p><p> boolean f = true;</p><p> for (int i = 0; i < 100; i+
85、+) {</p><p> FilePro fp1 = (FilePro) data[currentuser][i];</p><p> if (fp1.filename.equals(file)) {</p><p> if (fp1.flag == 1)</p><p> System.out.println("文件未打
86、開(kāi)!請(qǐng)先將文件打開(kāi)!");</p><p><b> else {</b></p><p> if (fp1.protect != 0)</p><p> System.out.println("對(duì)不起,您沒(méi)有寫(xiě)入的權(quán)限!");</p><p><b> else {<
87、;/b></p><p> System.out.println("請(qǐng)輸入要寫(xiě)入的內(nèi)容:");</p><p> String ss = input.next();</p><p> fp1.content = fp1.content + ss;</p><p> fc.writeData(data);<
88、;/p><p> System.out.println("寫(xiě)入成功");</p><p><b> }</b></p><p><b> }</b></p><p> f = false;</p><p><b> break;</b
89、></p><p><b> }</b></p><p><b> }</b></p><p><b> if (f) {</b></p><p> System.out.println("無(wú)此文件");</p><p>
90、;<b> }</b></p><p> command();</p><p><b> }</b></p><p><b> }</b></p><p><b> 五 程序運(yùn)行截圖</b></p><p><b&g
91、t; 六 心得體會(huì)</b></p><p> 對(duì)于本次操作系統(tǒng)課程設(shè),由于對(duì)二級(jí)文件的內(nèi)容比較陌生,剛起步階段花了很大時(shí)間去思考,但是仍然還是比較模糊。當(dāng)完成設(shè)計(jì)時(shí),感覺(jué)還是不是太了解,總感覺(jué)得到的和要求的有些差別,不過(guò)對(duì)二級(jí)文件系統(tǒng)也有了進(jìn)一步的了解,并且還對(duì)操作系統(tǒng)應(yīng)用有了更深入的認(rèn)識(shí)??傮w來(lái)說(shuō),這次課程下來(lái),發(fā)現(xiàn)自己的,語(yǔ)言基礎(chǔ)掌握的一點(diǎn)也不好,讓我遇到了許多的問(wèn)題。</p>
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 操作系統(tǒng)課程設(shè)計(jì)linux二級(jí)文件系統(tǒng)設(shè)計(jì)
- 操作系統(tǒng)課程設(shè)計(jì)--簡(jiǎn)單二級(jí)文件系統(tǒng)
- 為linux設(shè)計(jì)一個(gè)簡(jiǎn)單的二級(jí)文件系統(tǒng)
- 操作系統(tǒng)課程設(shè)計(jì)報(bào)告--linux二級(jí)文件系統(tǒng)設(shè)計(jì)
- 《操作系統(tǒng)課程設(shè)計(jì)-模擬一個(gè)簡(jiǎn)單二級(jí)文件管理系統(tǒng)》
- 操作系統(tǒng)課程設(shè)計(jì)二級(jí)文件系統(tǒng)
- 操作系統(tǒng)課程設(shè)計(jì)----二級(jí)文件系統(tǒng)
- 操作系統(tǒng)課程設(shè)計(jì)二級(jí)文件系統(tǒng)
- 操作系統(tǒng)課程設(shè)計(jì)--二級(jí)文件系統(tǒng)設(shè)計(jì)
- 操作系統(tǒng)課程設(shè)計(jì)--二級(jí)文件系統(tǒng)(java)
- 操作系統(tǒng)課程設(shè)計(jì)--簡(jiǎn)單文件系統(tǒng)的實(shí)現(xiàn)
- 操作系統(tǒng)課程設(shè)計(jì)簡(jiǎn)單文件系統(tǒng)的實(shí)現(xiàn)
- 操作系統(tǒng)課程設(shè)計(jì)---文件系統(tǒng)的模擬
- 操作系統(tǒng)課程設(shè)計(jì)--模擬文件系統(tǒng)
- 操作系統(tǒng)課程設(shè)計(jì)--樹(shù)形目錄文件系統(tǒng)
- 操作系統(tǒng)課程設(shè)計(jì)報(bào)告--多級(jí)文件系統(tǒng)
- 操作系統(tǒng)課程設(shè)計(jì)報(bào)告--多級(jí)文件系統(tǒng)
- 操作系統(tǒng)課程設(shè)計(jì)---模擬文件系統(tǒng)
- 操作系統(tǒng)文件系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)課程設(shè)計(jì)
- 操作系統(tǒng)課程設(shè)計(jì)-模擬文件系統(tǒng)
評(píng)論
0/150
提交評(píng)論