操作系统文件管理实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
操作系统实验报告实验名称:文件管理
专业班级:网络工程1301
学号:
姓名:
2015 年6 月16 日
实验一文件管理
一、实验目的
文件管理是操作系统的一个非常重要的组成部分。学生应独立用高级语言编写和调试一个简单的文件系统,模拟文件管理的工作过程。从而对各种文件操作命令的实质内容和执行过程有比较深入的了解,掌握它们的实施方法,加深理解课堂上讲授过的知识。
二、预备知识
1.VS2010的使用
2.C#的学习
3.文件主目录与子目录的理解
三、实验内容与步骤
用高级语言编写和调试一个简单的文件系统,模拟文件管理的工作过程。要求设计一个10 个用户的文件系统,每次用户可保存10 个文件,一次运行用户可以打开5 个文件。系统能够检查打入命令的正确性,出错时能显示出错原因。对文件必须设置保护措施,例如只能执行,允许读等。在每次打开文件时,根据本次打开的要求,在此设置保护级别,即有二级保护。文件的操作至少有Create、delete、open、close、read、write 等命令。
所编写的程序应采用二级文件目录,即设置主文件目录和用户文件目录。前者应包含文件主及它们的目录区指针;后者应给出每个文件占有的文件目录,即文件名,保护码,文件长度以及它们存放的位置等。另外为打开文件设置运行文件目录(AFD),在文件打开时应填入打开文件号,本次打开保护码和读写指针等。
程序流程图:
逻辑设计:
使用线性数组表表示MFD,泛型数组表示UFD,每个元素包括用户ID、保存的文件数、再使用线性表表示文件信息,每个元素包括文件名,文件属性(保护码),文件的状态等信息。
物理设计:
//主目录
private FileUser[] mfd;
//当前用户
private FileUser currentuser;
///
/// 文件
///
public class FileObject {
public string filename;
public int size=20;
public int read=0;
public int write = 0;
public string author;
}
///
/// 文件系统用户
///
public class FileUser {
public string username;
public List
public int filecount=0;
}
步骤详述:
1、主目录及用户目录机构显示:
2、当前操作用户登录:
3、文件管理系统菜单:
4、create命令:
5、open命令:
6、close命令:
7、delete命令:
8、read命令
9、write命令
10、exit命令
四、实验总结
通过这次的课程设计使我认识到要将操作系统这门计算机专业的课学好不仅仅是要把书上的基本知识学好而且还要不断进行实践,将所学的跟实践操作结合起来才能更好地巩固所学,才能提高自己实践能力.通过这次的设计使我认识到只停留在表面理解问题是很难使问题得到很好的解决的,实践能力与理论知识同样重要。可以说此课程设计的理论难度并不大,但是若要深入发掘其中的东西,并且实际去编程实现,就遇到了相当大的难度。因为与之涉及的很多方面并没有学过,需要自己去自学和实践检验。
五、程序清单
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace filemanagesystem
{
class Program
{
static void Main(string[] args)
{
//初始化用户自模拟文件系统
ExplorerInUser explorer = new ExplorerInUser();
}
}
///
/// 文件管理系统for用户自模拟
///
public class ExplorerInUser
{
//命令列表
private string[] command = { "create", "open", "close", "delete", "read", "write","exit" };
//主目录
private FileUser[] mfd;
//当前用户
private FileUser currentuser;
///
/// 构造函数
///
public ExplorerInUser()
{
INI();
}
///
/// 初始化系统
///
private void INI()
{
if (currentuser == null)
{
//主目录实现
IniUserList();
}
//系那是菜单
InilizeMenu();
bool isinput = false;
//输入正确的命令
while (!isinput)
{
string input = Console.ReadLine();
isinput=CommandGroup(input);
}
}
#region 主目录
///
/// 获取用户个数
///
///
private int GetUserCount()
{
string input = Console.ReadLine();