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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p>  操作系統(tǒng)課程設計報告</p><p>  題目: 為Linux系統(tǒng)設計一個簡單的二級文件系統(tǒng)</p><p><b>  指導老師:</b></p><p>  時間:2012.8.30</p><p><b>  一 課程設計的目的</b></p><p&

2、gt;  課程設計目的使學生熟悉文件管理系統(tǒng)的設計方法;加深對所學各種文件操作的了解及其操作方法的特點。通過模擬文件系統(tǒng)的實現(xiàn),深入理解操作系統(tǒng)中文件系統(tǒng)的理論知識, 加深對教材中的重要算法的理解。同時通過編程實現(xiàn)這些算法,更好地掌握操作系統(tǒng)的原理及實現(xiàn)方法,提高綜合運用各專業(yè)課知識的能力。</p><p><b>  二 課程設計的要求</b></p><p>  

3、1.可以實現(xiàn)下列幾條命令:</p><p>  login 用戶登錄</p><p>  dir 列目錄</p><p>  create 創(chuàng)建文件</p><p>  delete 刪除文件</p><p>  open 打開文件</p&g

4、t;<p>  close 關閉文件</p><p>  read 讀文件</p><p>  write 寫文件</p><p>  2.列目錄時要列出文件名,物理地址,保護碼和文件長度</p><p>  3.源文件可以進行讀寫保護</p><p><

5、b>  三 算法設計</b></p><p>  本次二級文件系統(tǒng)主要分為五大模塊,分別是用戶登錄模塊、新建目錄模塊、新建文件模塊、刪除文件模塊和讀取文件模塊。用戶登錄成功后才可以進行其他模塊的操作。</p><p><b>  1 用戶登錄模塊</b></p><p>  用戶登錄模塊要求用戶輸入用戶,當輸入正確后才能進行其

6、他模塊操作,否則提示用戶名不存在并詢問用戶是否用此名進行注冊。若用戶名未滿,則提示注冊成功,否則提示用現(xià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指令后進行的,進入后會要求用戶輸入文件名,并判斷文件名是否存在,若沒有則在要求用戶輸入文件讀寫權限,否則重新輸入

8、新的文件名。新建文件模塊流程圖如圖2所示。</p><p><b>  是</b></p><p><b>  否</b></p><p>  圖2 新建文件流程圖</p><p><b>  3 刪除文件模塊</b></p><p>  刪除文件模塊是

9、根據(jù)用戶鼠標右擊時選擇到的節(jié)點來確定要刪除節(jié)點的名字與路徑,然后判斷該節(jié)點是目錄還是文件。若是文件則直接刪除文件,若是目錄則進入該目錄再刪除其全部文件。刪除文件模塊流程圖如圖4所示。</p><p><b>  否</b></p><p><b>  是</b></p><p>  圖4 刪除文件模塊流程圖</p&g

10、t;<p><b>  4讀取文件模塊</b></p><p>  讀取文件模塊,要求用戶要在文件打開的前提下,將磁盤中的內容讀取到內存中。讀取文件流程圖如圖5所示。</p><p>  是 </p><p><b>  否</b></p><p>  圖5 讀取文件模

11、塊流程圖</p><p><b>  5 寫入文件模塊</b></p><p>  寫入文件模塊,思路與讀取文件模塊將本相同,只是添加了對讀寫權限的判斷。</p><p><b>  6 遍歷文件</b></p><p>  遍歷文件,根據(jù)在用戶登陸時,記錄的值,在二維數(shù)組中,找到用戶的所有文件對象

12、,將相應的必須屬性全部打印出來。</p><p><b>  四 程序源代碼</b></p><p>  1. 文件對象相關代碼</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. 文件讀寫操作</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、("打開文件");</p><p>  System.out.print("close ");</p><p>  System.out.println("關閉文件");</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("寫文件");</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("指令錯誤??!");</p><p>  command();</p><p><b>  }</b></p><p>  public void login() {</p><p>  boolean f = false;</p>

47、;<p>  System.out.println("請輸入用戶名:");</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("該用戶不存在,是否以此用戶名注冊?y注冊,其他返回");</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("對不起用戶已滿,請利用其他已注冊賬戶登錄");</p><p><b>  else {</b></p><p>  user.add(username);</p><p>  uc.writeUser(user);</p><p>  Sy

52、stem.out.println("注冊成功!請重新登錄");</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" + "保護碼\t" + "文件長度");</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("請輸入文加名:");</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("請輸入權限:");</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><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("無此文件");</p><p><b>  }</b></p><p>  command();</p>

70、<p><b>  }</b></p><p><b>  // 打開文件</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;文件已打開!");</p><p><b>  else {</b></p><p>  fp1.flag = 0;</p><p>  System.out.println("文件打開成功??!");</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("無此文件");</p><p><b>  }</b></p><p>  command();</p><p><b>  }</b></p><p><b>  // 關閉文件</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("文件未打開!");</p><p><b>  else {</b></p><p>

77、;  fp1.flag = 1;</p><p>  System.out.println("文件關閉成功??!");</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("無此文件");</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("文件未打開!請先將文件打開!");</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("無此文件");</p><p><b>  }</b></p><p>  command();</p><p><b>  }</b></p><p><b>  // 寫文件</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、開!請先將文件打開!");</p><p><b>  else {</b></p><p>  if (fp1.protect != 0)</p><p>  System.out.println("對不起,您沒有寫入的權限!");</p><p><b>  else {<

87、;/b></p><p>  System.out.println("請輸入要寫入的內容:");</p><p>  String ss = input.next();</p><p>  fp1.content = fp1.content + ss;</p><p>  fc.writeData(data);<

88、;/p><p>  System.out.println("寫入成功");</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("無此文件");</p><p>

90、;<b>  }</b></p><p>  command();</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  五 程序運行截圖</b></p><p><b&g

91、t;  六 心得體會</b></p><p>  對于本次操作系統(tǒng)課程設,由于對二級文件的內容比較陌生,剛起步階段花了很大時間去思考,但是仍然還是比較模糊。當完成設計時,感覺還是不是太了解,總感覺得到的和要求的有些差別,不過對二級文件系統(tǒng)也有了進一步的了解,并且還對操作系統(tǒng)應用有了更深入的認識??傮w來說,這次課程下來,發(fā)現(xiàn)自己的,語言基礎掌握的一點也不好,讓我遇到了許多的問題。</p>

溫馨提示

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

評論

0/150

提交評論