操作系统课程设计报告封面.docx_第1页
操作系统课程设计报告封面.docx_第2页
操作系统课程设计报告封面.docx_第3页
操作系统课程设计报告封面.docx_第4页
操作系统课程设计报告封面.docx_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

操作系统课程设计 操作系统课程设计报告题 目:简易文件操作系统 专 业:软件工程 院 系:信息管理学院 年 级: 学 号: 姓 名: 指导教师: 职 称 : 湖北经济学院教务处 制目录一、设计目的 -(3)二、设计内容 -(3) (1)概述 -(3) (2)设计的基本概念和原理 -(3)三、总体设计 -(4)四、详细设计 -(5) (1)给出提示信息,进行操作选择-(5) (2)列出要求的子目录及文件 -(6) (3)新建文件夹 -(7) (4)新建并写入文件 -(9) (5)删除文件 -(11) (6)删除空文件夹 -(13) (7)读取文件 -(14) (8)改变文件可写属性 -(15) (9)退出操作 -(16)五、完整代码 -(17)六、使用说明 -(23)七、心得体会 -(23)八、参考文献 -(24)一、设计目的操作系统课程主要讲述的内容是多道操作系统的原理与技术,与其它计算机原理、编译原理、汇编语言、计算机网络、程序设计等专业课程关系十分密切。本课程设计是学习完“操作系统原理”课程后进行的一次全面的综合训练,通过课程设计,更好地掌握操作系统的原理及实现方法,加深对操作系统基础理论和重要算法的理解,加强学生的动手能力。二、设计内容(1)概述设计一个简单的文件系统,要求实现:(1)支持多级目录结构;(2)实现的命令包括建立目录、列目录、删除空目录、建立文件、删除文件、显示文件内容、打开文件、读文件、写文件、关闭文件、改变文件属性。 (2)设计的基本概念和原理文件系统是操作系统中负责管理和存取文件信息的软件机构,它包括负责文件操作和管理的程序模块、所需的数据结构(如目录表、文件控制块、存储分配表)以及访问文件的一组操作。文件系统的功能以提供一组服务的方式来呈现,使用户能执行所需要的操作。这些操作包括显示文件子目录及文件、读文件、写入文件、删除文件、删除空目录和改变文件的属性等。每个文件以一个文件路径和文件名称进行表示,在需要访问该文件的时,只需要知道该文件的路径以及文件的全名即可。在不同的操作系统环境下,文件路径的表示形式是不一样的,例如在Windows操作系统中一般的表示形式为C:windowssystem,而Unix上的表示形式为/user/my。所以如果需要让C#程序能够在不同的操作系统下运行,书写文件路径时还需要比较注意。三、总体设计如今,电脑越来越普及,人们将越来越多的文件存储在电脑里。如果没有定期地对系统文件进行分类、删除,系统文件会越来越多,导致内存不足,查找麻烦。文件管理系统为了方便管理文件而设计,通过本系统可以快速地实现文件的建立、打开、关闭、读写、删除等功能。本课程设计均用C#代码编写而成。充分利用了C#的IO操作,主要是对FileInfo类和DirectoryInfo类的多次调用。FileInfo类定义了一些与平台无关的方法来操作文件,可以通过调用FileInfo类中的方法,实现创建、删除和移动文件等功能,而用DirectoryInfo类则完成对目录的创建、删除、移动、复制等功能。用了Directory. CreateDirectory()方法来创建目录、Directory.delete()删除目录,用File.Create()来新建文件,用File.delete()删除文件。对于列出目录和文件,用FileSystemInfo类来存储目录和文件信息,再分别用DirectoryInfo.getDerectory()和FileInfo.getFile()来获取当前目录下的所有子目录和文件。对于读文件和写文件操作,调用的是ReadAllText和WriteAllText方法。对于改变属性这项操作,调用了fileInfo.canRead()操作判断文件是否可读,利用fileInfo.canWrite()操作判断文件是否可以进行写入,并利用fileInfo.setWritable(false)将可写入属性改成只读。另外也实现了对文件和目录的复制、粘贴、剪切、重命名等常用功能。功能结构图如图1.0所示简易文件系统查看目录创建目录创建文件写文件读文件删除文件删除空目录改变属性关闭操作图1.0四、详细设计 本课程充分利用C#窗体程序的便利性,通过用Directory类和File类的分别操作,来实现目录和文件的查看、创建、删除、复制、粘贴等功能。具体操作如下: 首先建立C#窗体程序,在窗体中拖入TextBox控件,用于显示操作的路径,在双击此TextBox控件是列出当前目录下的所有子目录和子文件,在ListView控件中用于显示目录和文件。窗体设计如下: 实现列目录和文件的代码如下:private void Path_DoubleClick(object sender, EventArgs e)listView1.Items.Clear(); string path = Path.Text; path += ; FileSystemInfo info = new DirectoryInfo(path); try if (!info.Exists) return; DirectoryInfo dir = info as DirectoryInfo; /不是目录 if (dir = null) return; DirectoryInfo dirs = dir.GetDirectories(); for (int i = 0; i dirs.Length; i+) ListViewItem myItem = new ListViewItem(); myItem = listView1.Items.Add(dirsi.Name); myItem.SubItems.Add(文件夹); FileSystemInfo files = dir.GetFileSystemInfos(); for (int i = 0; i files.Length; i+) FileInfo file = filesi as FileInfo; if (file != null) ListViewItem myItem = new ListViewItem(); myItem = listView1.Items.Add(file.Name); myItem.SubItems.Add(文本文件); catch (IOException e1) Console.WriteLine(e1.Message); 运行截图如下:新建目录和文件:通过在ListView控件中单击击鼠标右键选择新建下的文件夹和文本文件来窗口文件夹和文本文件。实现代码如下: 创建文本文件:private void button1_Click(object sender, EventArgs e) string s = ; string t = textBox1.Text; s = s + form1.Path.Text + + textBox1.Text; if (!File.Exists(s) File.Create(s); this.Close(); ListViewItem myItem = new ListViewItem(); myItem = form1.listView1.Items.Add(t); myItem.SubItems.Add(文本文件); 创建文件夹: private void button1_Click(object sender, EventArgs e) string s = ; string t = textBox1.Text; s = s + from1.Path.Text + + textBox1.Text; if (!Directory.Exists(s) Directory.CreateDirectory(s); this.Close(); ListViewItem myItem = new ListViewItem(); myItem = from1.listView1.Items.Add(t); myItem.SubItems.Add(文件夹); 运行截图: 删除: 选中某一路经下的文件夹或者文本文件,单击删除功能,即可删除选中的文件夹或者目录。代码如下:private void 删除ToolStripMenuItem_Click(object sender, EventArgs e) ListViewItem lvi = (ListViewItem)listView1.SelectedItems0; if (lvi.SubItems1.Text = 文件夹) DialogResult result; string message = 你确定删除文件夹: + lvi.SubItems0.Text; MessageBoxButtons buttons = MessageBoxButtons.OKCancel; / Displays the MessageBox. result = MessageBox.Show(this, message, 删除文件夹, buttons, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2); if (result = DialogResult.OK) DirectoryInfo di = new DirectoryInfo(Path.Text + + lvi.SubItems0.Text); di.Delete(true); ShowFile(); if (lvi.SubItems1.Text = 文本文件) DialogResult result; string message = 你确定删除文本文件: + lvi.SubItems0.Text; MessageBoxButtons buttons = MessageBoxButtons.OKCancel; / Displays the MessageBox. result = MessageBox.Show(this, message, 删除文本文件, buttons, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2); if (result = DialogResult.OK) / this.Close(); FileInfo di = new FileInfo(Path.Text + + lvi.SubItems0.Text); di.Delete(); ShowFile(); 运行截图:复制:选中文件夹或者文本文件,点击复制功能,即可复制文件夹或者文本文件。代码如下:private void 复制ToolStripMenuItem_Click(object sender, EventArgs e) ListViewItem lvi = (ListViewItem)listView1.SelectedItems0; sourcePath = Path.Text; Name = lvi.SubItems0.Text; if (lvi.SubItems1.Text = 文件夹) Differe = 文件夹; if (lvi.SubItems1.Text = 文本文件) Differe = 文本文件; 粘贴:在某一目录下,单击粘贴按钮,就可实现复制时的粘贴功能。代码如下:private void 粘贴ToolStripMenuItem_Click(object sender, EventArgs e) targetPath = Path.Text + + Name; sourcePath = sourcePath + + Name; if (Differe = 文件夹) if (!new DirectoryInfo(targetPath).Exists) CopyDirectory(sourcePath, targetPath); ListViewItem myItem = new ListViewItem(); myItem = listView1.Items.Add(Name); myItem.SubItems.Add(文件夹); if (Bool) DirectoryInfo di = new DirectoryInfo(sourcePath); di.Delete(true); sourcePath = ; Bool = false; else MessageBox.Show(文件夹已存在!); if (Differe = 文本文件) if (!new FileInfo(targetPath).Exists) File.Copy(sourcePath, targetPath); ListViewItem myItem = new ListViewItem(); myItem = listView1.Items.Add(Name); myItem.SubItems.Add(文本文件); if (Bool) FileInfo di = new FileInfo(sourcePath); di.Delete(); Bool = false; else MessageBox.Show(文件已存在!); 剪切:通过剪切按钮,把当前的目录的文件复制,完成粘贴之后,并删除此目录。代码如下:private void 剪切ToolStripMenuItem_Click(object sender, EventArgs e) ListViewItem lvi = (ListViewItem)listView1.SelectedItems0; sourcePath = Path.Text; Name = lvi.SubItems0.Text; Bool = true; if (lvi.SubItems1.Text = 文件夹) Differe = 文件夹; if (lvi.SubItems1.Text = 文本文件) Differe = 文本文件; 重命名:选中某一目录下的文件夹或者文本文件,修改它的名字。代码如下:private void button1_Click(object sender, EventArgs e) string s = ; s = s+form1.Path.Text; string t = textBox1.Text; ListViewItem lvi = (ListViewItem)form1.listView1.SelectedItems0; if(lvi.SubItems1.Text = 文件夹) Directory.Move(s + +lvi.SubItems0.Text,s+textBox1.Text); if(lvi.SubItems1.Text = 文本文件) File.Move(s + + lvi.SubItems0.Text,s + + textBox1.Text); this.Close(); form1.ShowFile(); int i = 0; foreach (ListViewItem item in form1.listView1.Items) MessageBox.Show(t); i+; if (t = item.SubItems0.ToString() form1.listView1.Itemsi-1.Checked = true; break; 五、完整代码using System.IO;using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;namespace ViewFileSys public partial class Form1 : Form public Form1() InitializeComponent(); private bool Bool = false; private string Name = ; private string Differe = ; private string sourcePath = ; private string targetPath = ; private void 编辑ToolStripMenuItem_Click(object sender, EventArgs e) public void ShowFile() listView1.Items.Clear(); string path = Path.Text; path += ; FileSystemInfo info = new DirectoryInfo(path); try if (!info.Exists) return; DirectoryInfo dir = info as DirectoryInfo; /不是目录 if (dir = null) return; DirectoryInfo dirs = dir.GetDirectories(); for (int i = 0; i dirs.Length; i+) ListViewItem myItem = new ListViewItem(); myItem = listView1.Items.Add(dirsi.Name); myItem.SubItems.Add(文件夹); FileSystemInfo files = dir.GetFileSystemInfos(); for (int i = 0; i files.Length; i+) FileInfo file = filesi as FileInfo; if (file != null) ListViewItem myItem = new ListViewItem(); myItem = listView1.Items.Add(file.Name); myItem.SubItems.Add(文本文件); catch (IOException e1) Console.WriteLine(e1.Message); private void Path_DoubleClick(object sender, EventArgs e) ShowFile(); private void listView1_SelectedIndexChanged(object sender, EventArgs e) private void listView1_DoubleClick(object sender, EventArgs e) ListViewItem lvi = (ListViewItem)listView1.SelectedItems0; if (lvi.SubItems1.Text = 文件夹) Path.Text += + lvi.SubItems0.Text; ShowFile(); if (lvi.SubItems1.Text = 文本文件) Form2 form2 = new Form2(); form2.textBox1.Text = File.ReadAllText(Path.Text + + lvi.SubItems0.Text).ToString(); form2.Owner = this; form2.ShowDialog(); private void 文件夹ToolStripMenuItem_Click(object sender, EventArgs e) Form3 from3 = new Form3(); from3.Owner = this; from3.ShowDialog(); private void 文本文件ToolStripMenuItem_Click(object sender, EventArgs e) Form4 form4 = new Form4(); form4.Owner = this; form4.ShowDialog(); private void Path_DoubleClick_1(object sender, EventArgs e) ShowFile(); private void 刷新ToolStripMenuItem_Click(object sender, EventArgs e) ShowFile(); private void 删除ToolStripMenuItem_Click(object sender, EventArgs e) ListViewItem lvi = (ListViewItem)listView1.SelectedItems0; if (lvi.SubItems1.Text = 文件夹) DialogResult result; string message = 你确定删除文件夹: + lvi.SubItems0.Text; MessageBoxButtons buttons = MessageBoxButtons.OKCancel; / Displays the MessageBox. result = MessageBox.Show(this, message, 删除文件夹, buttons, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2); if (result = DialogResult.OK) DirectoryInfo di = new DirectoryInfo(Path.Text + + lvi.SubItems0.Text); di.Delete(true); ShowFile(); if (lvi.SubItems1.Text = 文本文件) DialogResult result; string message = 你确定删除文本文件: + lvi.SubItems0.Text; MessageBoxButtons buttons = MessageBoxButtons.OKCancel; / Displays the MessageBox. result = MessageBox.Show(this, message, 删除文本文件, buttons, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2); if (result = DialogResult.OK) / this.Close(); FileInfo di = new FileInfo(Path.Text + + lvi.SubItems0.Text); di.Delete(); ShowFile(); private void 复制ToolStripMenuItem_Click(object sender, EventArgs e) ListViewItem lvi = (ListViewItem)listView1.SelectedItems0; sourcePath = Path.Text; Name = lvi.SubItems0.Text; if (lvi.SubItems1.Text = 文件夹) Differe = 文件夹; if (lvi.SubItems1.Text = 文本文件) Differe = 文本文件; private void 粘贴ToolStripMenuItem_Click(object sender, EventArgs e) targetPath = Path.Text + + Name; sourcePath = sourcePath + + Name; if (Differe = 文件夹) if (!new DirectoryInfo(targetPath).Exists) CopyDirectory(sourcePath, targetPath); ListViewItem myItem = new ListViewItem(); myItem = listView1.Items.Add(Name); myItem.SubItems.Add(文件夹); if (Bool) DirectoryInfo di = new DirectoryInfo(sourcePath); di.Delete(true); sourcePath = ; Bool = fa

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论