文件系统实验报告
文件管理系统实验报告

一、实验目的本次实验旨在通过设计和实现一个简单的文件管理系统,加深对文件管理原理的理解,掌握文件系统的基本操作,包括文件的创建、删除、修改、查询等,并了解文件系统的目录结构和管理机制。
二、实验环境1. 操作系统:Windows 102. 开发工具:Visual Studio 20193. 编程语言:C++4. 实验时间:2023年10月25日三、实验内容1. 文件系统的目录结构设计2. 文件的基本操作实现3. 文件系统的存储管理4. 文件系统的安全机制四、实验步骤1. 目录结构设计根据文件系统的需求,设计以下目录结构:```根目录│├── 文件夹A│ ├── 文件1.txt│ └── 文件2.txt│├── 文件夹B│ └── 文件3.txt│└── 文件夹C```2. 文件的基本操作实现(1)文件创建```cppvoid CreateFile(const std::string& filePath, const std::string& content) {// 检查文件是否存在if (CheckFileExist(filePath)) {std::cout << "文件已存在!" << std::endl;return;}// 创建文件std::ofstream file(filePath);if (file.is_open()) {file << content;file.close();std::cout << "文件创建成功!" << std::endl;} else {std::cout << "文件创建失败!" << std::endl;}}```(2)文件删除```cppvoid DeleteFile(const std::string& filePath) {// 检查文件是否存在if (!CheckFileExist(filePath)) {std::cout << "文件不存在!" << std::endl;return;}// 删除文件if (remove(filePath) == 0) {std::cout << "文件删除成功!" << std::endl;} else {std::cout << "文件删除失败!" << std::endl;}}```(3)文件修改```cppvoid ModifyFile(const std::string& filePath, const std::string& newContent) {// 检查文件是否存在if (!CheckFileExist(filePath)) {std::cout << "文件不存在!" << std::endl; return;}// 修改文件内容std::ofstream file(filePath, std::ios::trunc); if (file.is_open()) {file << newContent;file.close();std::cout << "文件修改成功!" << std::endl; } else {std::cout << "文件修改失败!" << std::endl; }}```(4)文件查询```cppvoid QueryFile(const std::string& filePath) {// 检查文件是否存在if (!CheckFileExist(filePath)) {std::cout << "文件不存在!" << std::endl; return;}// 读取文件内容std::ifstream file(filePath);if (file.is_open()) {std::string content((std::istreambuf_iterator<char>(file)), std::istreambuf_iterator<char>());std::cout << "文件内容:" << content << std::endl;file.close();} else {std::cout << "文件读取失败!" << std::endl;}}```3. 文件系统的存储管理文件系统采用磁盘文件作为存储介质,通过文件操作实现对文件的读写。
文件系统管理实训报告

一、实训背景随着信息技术的飞速发展,文件系统作为存储和管理数据的核心,其性能、稳定性和安全性越来越受到重视。
为了提高我们对文件系统管理的理解和实践能力,我们进行了文件系统管理实训。
本次实训以Linux系统下的文件系统管理为主要内容,通过实际操作,加深对文件系统结构、命令、权限管理等方面的认识。
二、实训目标1. 掌握Linux文件系统的基本结构;2. 熟悉常用的文件系统管理命令;3. 理解文件权限和属性的概念;4. 学会文件系统备份与恢复;5. 提高文件系统的安全性和性能。
三、实训内容(一)文件系统结构Linux文件系统采用树状结构,以根目录“/”为起点,所有文件和目录都从根目录开始分层排列。
常见的文件系统结构包括:1. 根目录(/):包含系统中的所有目录和文件;2. 换行目录(/bin、/sbin、/usr):存放常用的系统命令和系统服务;3. 用户目录(/home):存放用户个人文件和目录;4. 临时目录(/tmp):存放临时文件和程序;5. 系统目录(/etc、/var、/opt):存放系统配置文件、日志文件和可选软件包。
(二)文件系统管理命令1. ls:列出目录内容;2. pwd:显示当前目录的绝对路径;3. cd:切换目录;4. mkdir:创建目录;5. rmdir:删除空目录;6. touch:创建空文件;7. rm:删除文件或目录;8. cp:复制文件或目录;9. mv:移动或重命名文件或目录;10. chmod:修改文件权限;11. chown:更改文件所有者;12. chgrp:更改文件所属组。
(三)文件权限和属性Linux文件权限分为三组:所有者、所属组和其他用户。
每组权限包括读(r)、写(w)和执行(x)三种。
通过chmod命令可以修改文件权限,例如:- chmod 755 filename:设置所有者有读、写、执行权限,所属组和其他用户有读、执行权限;- chmod u+x filename:给所有者添加执行权限;- chmod g-w filename:取消所属组的写权限。
文件服务实验报告(3篇)

第1篇实验名称:文件服务系统设计与实现实验目的:1. 了解文件服务的概念和基本原理。
2. 掌握文件系统的设计方法和实现技巧。
3. 熟悉文件操作的编程实践。
4. 提高团队协作和问题解决能力。
实验时间:2023年X月X日实验地点:实验室实验人员:XXX、XXX、XXX实验环境:1. 操作系统:Windows 102. 编程语言:Java3. 开发工具:Eclipse4. 文件系统:本地文件系统一、实验背景随着信息技术的飞速发展,文件服务在日常生活中扮演着越来越重要的角色。
文件服务是指通过网络将文件存储、管理和共享的服务,它为用户提供了一种方便、高效的数据存储和交换方式。
本实验旨在设计和实现一个简单的文件服务系统,实现对文件的创建、读取、写入和删除等基本操作。
二、实验内容1. 文件服务系统需求分析(1)功能需求- 文件创建:用户可以创建新的文件。
- 文件读取:用户可以读取指定文件的全部内容。
- 文件写入:用户可以写入指定文件的内容。
- 文件删除:用户可以删除指定文件。
(2)性能需求- 系统响应时间:在正常情况下,系统对用户请求的响应时间应小于2秒。
- 系统并发处理能力:系统应能够同时处理多个用户请求。
2. 文件服务系统设计(1)系统架构文件服务系统采用C/S(客户端/服务器)架构,客户端负责用户界面和与用户的交互,服务器负责文件存储和管理。
(2)模块划分- 客户端模块:实现用户界面和与用户的交互。
- 服务器模块:实现文件存储、管理和共享。
- 文件管理模块:负责文件的创建、读取、写入和删除等操作。
3. 文件服务系统实现(1)客户端实现客户端采用Java Swing框架实现,包括以下功能模块:- 登录模块:用户输入用户名和密码进行登录。
- 文件操作模块:实现文件创建、读取、写入和删除等操作。
(2)服务器实现服务器采用Java Socket编程实现,包括以下功能模块:- 连接模块:负责与客户端建立连接。
- 文件管理模块:实现文件创建、读取、写入和删除等操作。
文件系统实验报告

文件系统实验报告文件系统实验报告篇一:内核,文件系统实验报告一嵌入式系统实验报告(一) 091180083刘浩通信工程一、实验目的了解嵌入式系统的开发环境,内核的下载和启动过程;了解Linux内核源代码的目录结构及相关内容;了解Linux内核各配置选项的内容和作用;掌握Linux内核的编译过程;理解嵌入式操作系统文件系统的类型和作用;了解jffs2文件系统的优点及其在嵌入式系统中的作用;掌握busybx软件制作嵌入式文件系统的方法;掌握Linux嵌入式文件系统的挂载过程。
二、嵌入式系统开发实验1、mini和tftp(1)串口通信的硬件基础:嵌入式系统一般通过异步串行接口(UART)进行初级引导。
本实验中用到的是RS-232C标准的接口。
(2)软件结构:mini 运行mini,Ctrl+A-进入mini的cnfiguratin界面。
对串行通信接口进行配置,如串行通信口的设置,波特率、数据位等串口参数的设置。
保存好设置后以后可以不用再设置。
(3)btlader引导:给开发板加电,任意按下一个键进入btlader界面。
可以通过命令行方式进行设置,按0进入命令行模式,出现 51bard,可以设置开发板和pc机的ip地址:set myipaddr 192.168.207.113(设置开发板的ip地址),set destipaddr 192.168.207.13(设置pc机的ip地址)。
注意ip地址的设置:使其处于同一网段,并且避免和其他系统的ip发生冲突。
(4)通过btlader的主菜单可以完成很多功能,3——下载内核,4——将内核烧进flash,5——下载文件系统,6——将文件系统烧进flash,7——启动嵌入式操作系统等。
由于btlader需要从服务器上下载内核和文件系统,一般采用tftp服务。
进入/etc/xinetd.d/tftp修改配置,注意一定要关闭防火墙,否则可能导致下载时出问题。
再设置完后要重新启动tftp服务。
文件管理实验报告答案(3篇)

第1篇一、实验目的1. 理解文件管理的概念和作用。
2. 掌握文件系统的基本操作,如创建、删除、复制、移动等。
3. 学会使用文件管理工具,提高文件管理效率。
二、实验环境1. 操作系统:Windows 102. 文件管理工具:Windows资源管理器3. 实验设备:计算机三、实验内容1. 文件系统的基本概念文件系统是操作系统用来组织和管理文件的一种机制。
它主要包括以下内容:(1)文件:数据的基本单位,可以存储信息、程序等。
(2)目录:文件系统的组织单位,用于存放文件和子目录。
(3)路径:文件在文件系统中的位置,由目录名和文件名组成。
2. 文件系统的基本操作(1)创建文件:在指定目录下创建一个新的文件。
操作步骤:1)打开Windows资源管理器;2)找到要创建文件的目录;3)右键单击空白区域,选择“新建”;4)选择文件类型,如文本文档、Word文档等;5)输入文件名,点击“确定”。
(2)删除文件:删除指定的文件。
操作步骤:1)打开Windows资源管理器;2)找到要删除的文件;3)右键单击文件,选择“删除”;4)在弹出的确认对话框中点击“是”。
(3)复制文件:将文件从一个目录复制到另一个目录。
操作步骤:1)打开Windows资源管理器;2)找到要复制的文件;3)右键单击文件,选择“复制”;4)打开目标目录,右键单击空白区域,选择“粘贴”。
(4)移动文件:将文件从一个目录移动到另一个目录。
操作步骤:1)打开Windows资源管理器;2)找到要移动的文件;3)右键单击文件,选择“剪切”;4)打开目标目录,右键单击空白区域,选择“粘贴”。
3. 文件管理工具的使用(1)文件搜索:在文件系统中快速找到所需的文件。
操作步骤:1)打开Windows资源管理器;2)在地址栏输入文件名或部分内容;3)按Enter键或点击搜索按钮。
(2)文件预览:查看文件内容,如图片、文档等。
操作步骤:1)打开Windows资源管理器;2)找到要预览的文件;3)双击文件,系统会自动打开相应的应用程序进行预览。
文件管理系统实验报告

文件管理系统实验报告文件管理系统实验报告一、引言文件管理系统是现代社会中不可或缺的一部分。
随着信息技术的迅猛发展,文件的产生和管理变得越来越重要。
本实验旨在通过设计和实现一个简单的文件管理系统,探索文件管理的原理和方法。
二、实验目的1.了解文件管理系统的基本概念和功能;2.掌握文件的创建、读取、修改和删除等操作;3.熟悉文件的组织和存储结构;4.实践文件管理系统的设计和实现。
三、实验内容1.文件的创建和读取在文件管理系统中,文件的创建和读取是最基本的操作。
通过调用系统函数,我们可以创建一个新文件,并向其中写入数据。
而读取文件则是通过指定文件路径和文件名来获取文件的内容。
2.文件的修改和删除文件的修改和删除是文件管理系统中的常见操作。
通过系统函数,我们可以打开一个已有的文件,并对其进行修改。
而删除文件则是通过指定文件路径和文件名来删除一个文件。
3.文件的组织和存储结构文件管理系统中,文件的组织和存储结构对于文件的管理和访问有着重要的影响。
常见的文件组织结构包括顺序文件、索引文件和哈希文件等。
在本实验中,我们将选择适合的文件组织结构,并实现相应的存储和检索算法。
四、实验步骤1.设计文件管理系统的数据结构在开始实验之前,我们需要先设计文件管理系统的数据结构。
这包括文件控制块(FCB)、目录项(Directory Entry)和文件块(File Block)等。
通过合理的数据结构设计,可以提高文件管理系统的性能和效率。
2.实现文件的创建和读取功能根据文件管理系统的设计,我们可以开始实现文件的创建和读取功能。
通过调用系统函数,我们可以创建一个新的文件,并向其中写入数据。
而读取文件则是通过指定文件路径和文件名来获取文件的内容。
3.实现文件的修改和删除功能文件的修改和删除是文件管理系统中的常见操作。
通过调用系统函数,我们可以打开一个已有的文件,并对其进行修改。
而删除文件则是通过指定文件路径和文件名来删除一个文件。
文件管理实验报告结果(3篇)

第1篇一、实验目的本次实验旨在通过实际操作,验证文件管理的有效性和可行性,并对文件管理系统的性能进行评估。
通过实验,了解文件管理的相关原理和方法,提高文件管理的实践能力。
二、实验环境1. 操作系统:Windows 102. 文件管理系统:Windows文件管理器3. 实验数据:实验过程中产生的文件和数据三、实验内容1. 文件创建与删除2. 文件夹创建与删除3. 文件与文件夹的复制、移动、重命名4. 文件属性的设置与修改5. 文件搜索与查找6. 文件权限管理7. 文件压缩与解压四、实验步骤1. 文件创建与删除(1)在Windows文件管理器中,新建一个名为“实验文件.txt”的文本文件。
(2)在“实验文件.txt”上右击,选择“删除”,确认删除。
2. 文件夹创建与删除(1)在Windows文件管理器中,新建一个名为“实验文件夹”的文件夹。
(2)在“实验文件夹”上右击,选择“删除”,确认删除。
3. 文件与文件夹的复制、移动、重命名(1)将“实验文件.txt”复制到“实验文件夹”中。
(2)将“实验文件.txt”移动到桌面。
(3)将“实验文件.txt”重命名为“实验文件修改.txt”。
4. 文件属性的设置与修改(1)在“实验文件修改.txt”上右击,选择“属性”,设置文件属性为“只读”。
(2)修改“实验文件修改.txt”的属性为“隐藏”。
5. 文件搜索与查找(1)在Windows文件管理器中,输入“实验文件”进行搜索。
(2)使用“查找”功能,查找“实验文件修改.txt”。
6. 文件权限管理(1)在“实验文件夹”上右击,选择“属性”,点击“安全”标签。
(2)添加用户权限,设置权限为“完全控制”。
7. 文件压缩与解压(1)将“实验文件夹”压缩为“实验文件夹.zip”。
(2)解压“实验文件夹.zip”到指定位置。
五、实验结果与分析1. 文件创建与删除:实验成功创建和删除了文件,验证了文件管理的可行性。
2. 文件夹创建与删除:实验成功创建和删除了文件夹,验证了文件管理的可行性。
文件的应用实验报告(3篇)

第1篇一、实验目的1. 熟悉文件的基本操作,包括创建、打开、保存、关闭等。
2. 掌握文件的编辑、格式设置、排版等基本技能。
3. 学习使用文件进行数据管理和信息整理。
4. 提高实际操作能力,为以后的工作和学习打下基础。
二、实验环境1. 操作系统:Windows 102. 文字处理软件:Microsoft Word 20163. 硬件设备:电脑、显示器、鼠标、键盘等三、实验内容1. 文件的基本操作2. 文本的编辑和格式设置3. 文档的排版和打印4. 文件夹的管理四、实验步骤1. 文件的基本操作(1)创建新文件:打开Microsoft Word,点击“空白文档”或选择合适的模板创建新文件。
(2)打开文件:点击“文件”菜单,选择“打开”,在弹出的对话框中选择要打开的文件。
(3)保存文件:点击“文件”菜单,选择“保存”,在弹出的对话框中设置文件名、保存路径和文件格式,然后点击“保存”。
(4)关闭文件:点击“文件”菜单,选择“关闭”,或者直接点击窗口右上角的关闭按钮。
2. 文本的编辑和格式设置(1)输入文本:将光标定位在文档中,使用键盘输入文本内容。
(2)选择文本:将鼠标指针移动到文本的开始位置,按住鼠标左键拖动至文本的结束位置,即可选中文本。
(3)设置字体:选中文本,点击“开始”选项卡中的“字体”下拉菜单,选择合适的字体、字号、颜色等。
(4)设置段落格式:选中文本,点击“开始”选项卡中的“段落”下拉菜单,设置段落间距、缩进、对齐方式等。
3. 文档的排版和打印(1)插入表格:点击“插入”选项卡中的“表格”,在弹出的对话框中设置表格的行列数,然后点击“确定”。
(2)插入图片:点击“插入”选项卡中的“图片”,在弹出的对话框中选择要插入的图片,然后点击“插入”。
(3)设置页眉和页脚:点击“插入”选项卡中的“页眉和页脚”,在弹出的对话框中设置页眉和页脚的内容、格式等。
(4)打印文档:点击“文件”菜单,选择“打印”,在弹出的对话框中设置打印范围、打印份数、打印设置等,然后点击“打印”。
公文收发系统实验报告(3篇)

第1篇一、实验目的1. 熟悉公文收发系统的基本功能和使用方法。
2. 培养操作公文收发系统的实际能力。
3. 了解公文收发系统在办公自动化中的应用价值。
二、实验环境1. 操作系统:Windows 102. 浏览器:Google Chrome3. 公文收发系统:XX公司公文收发系统三、实验内容1. 登录公文收发系统2. 发送公文3. 收取公文4. 查阅公文5. 公文归档6. 系统设置四、实验步骤1. 登录公文收发系统(1)打开浏览器,输入公文收发系统的登录地址;(2)输入用户名和密码,点击“登录”按钮。
2. 发送公文(1)进入公文收发系统后,点击“发文管理”菜单;(2)选择“新建发文”,填写发文标题、发文单位、发文对象、发文内容等信息;(3)上传附件,点击“保存”按钮,完成发文。
3. 收取公文(1)进入公文收发系统后,点击“收文管理”菜单;(2)查看待办公文,阅读公文内容;(3)处理公文,包括标记已读、转办、办结等操作。
4. 查阅公文(1)进入公文收发系统后,点击“公文查询”菜单;(2)根据需要输入查询条件,如发文单位、发文时间等;(3)点击“查询”按钮,查看符合条件的公文列表;(4)点击公文标题,查看公文详情。
5. 公文归档(1)进入公文收发系统后,点击“公文归档”菜单;(2)选择需要归档的公文,点击“归档”按钮;(3)确认归档信息,完成公文归档。
6. 系统设置(1)进入公文收发系统后,点击“系统设置”菜单;(2)根据需要修改用户信息、密码、部门信息等;(3)设置公文收发规则,如收文提醒、发文审批流程等。
五、实验结果与分析1. 实验结果通过本次实验,我们掌握了公文收发系统的基本操作,能够熟练地发送、收取、查阅和归档公文,提高了办公效率。
2. 实验分析(1)公文收发系统具有以下优点:a. 提高公文处理效率;b. 确保公文安全传输;c. 方便查阅和归档;d. 便于领导监督和管理。
(2)公文收发系统在实际应用中存在以下问题:a. 部分用户对系统操作不熟悉,影响办公效率;b. 系统安全性有待提高;c. 部分公文处理流程过于繁琐。
操作系统实验-文件系统扩展实验报告

实验报告要求1.实验名称:文件系统扩展实验2.实验要求:对【程序5_9】进行扩展,要求参数为目录名,且其下至少有三层目录,分别用深度遍历及广度遍历两种方法对此目录进行遍历,输出此目录下所有文件的大小及修改时间。
3.实验目的:(在实验过程中应用的操作系统理论知识)1.熟悉和应用深度优先和广度优先遍历算法2.熟练掌握linux 系统下关于文件系统的API3.掌握有关数据结构和指针的应用4.掌握使用gdb 调试的方法5.掌握实际运用中堆栈的内存分配4.实验内容:(为完成实验,如何进行程序设计)DFS:整体思路: 从所给的目录进入,按照reddir打开指针的顺序开始逐个遍历,遇到文件就按照规定格式输出信息。
遇到目录就对该目录进行DFS,之后返回上一级继续遍历。
当当前目录没有文件时返回流程图:重点部分: 重点是DFS 对退出循环和回溯时间点的把握。
这里退出循环的时间点是当前目录没有可读文件或者目录。
回溯时间点是当读到的文件为目录时,进入下一层DFS BFS:整体思路:利用队列,参考二叉树的层次遍历。
先将根目录入队,循环出队列。
进入目录后,当读取到文件时,输出信息;当读取到目录时,将目录入队,继续读取下一个文件;当当前目录的文件遍历完成时,退出此目录循环,从队列中弹出一个目录,再进入循环。
当队列为空时,退出。
流程图:重点部分: 1. 队列的建立,队列使用链表连接,存放字符串数据,要注意内存的分配和释放2.入队出队的时机;先将根目录入队,退出循环的条件为队列为空。
入队的条件为当前文件为目录。
出队的条件为一个目录遍历完毕。
5.程序:(较之已有程序有修改的、新增的程序段加下划线)#include<unistd.h>#include<stdio.h>#include<stdlib.h>#include<errno.h>#include<sys/types.h>#include<sys/stat.h>#include<dirent.h>#include<time.h>#include<string.h>#include<ctype.h>/*辅助函数输出文件的大小和最后修改时间*/static int get_file_size_time(const char *filename){struct stat statbuf;if(stat(filename,&statbuf)==-1) //取filename 的状态{printf("Get stat on %s Error:%s\n",filename,strerror(errno));return(-1);}if(S_ISDIR(statbuf.st_mode))return(1); //判断是否是目录文件if(S_ISREG(statbuf.st_mode)) //判断是否是普通文件printf("\t size:%ld bytes\t modifiedate: %s\n",statbuf.st_size,ctime(&statbuf.st _mtime)); //输出文件的大小和最后修改时间return(0);}/******************************** BFS 利用队列********************************************/// 在strcpy 指针前要先申请空间struct node {char* data;struct node* next;// struct node* pre;} *head,*tail,*tmp; // 头节点,尾节点,临时节点count++; }6.运行结果:(进行反白处理后截图)DFS:BFS7.实验总结:编程、调试过程中遇到的问题及解决办法。
Lniux文件系统实验报告

实验五文件系统
一、实验目的
1.掌握Linux系统下fdisk命令的用法。
2.掌握Linux系统下文件系统的创建、挂载与卸载。
3.掌握Linux系统下利用RAID技术实现磁盘冗余阵列的方法。
二、实验内容
1.磁盘分区管理
2.动态磁盘管理
三、实验指导
1.服务器现需要新建一块20GB的硬盘,需要对新增的硬盘进行分区管理、分区方案为/user目录所在分区10GB,/backup目录所在分区5GB,/home目录所在分区5GB。
步骤一,添加新硬盘
点击“编辑虚拟机设置”按钮,如下图
选择添加硬盘,如下图
下一步选择“SCSI(S)推荐”,如下图
下一步创建“新虚拟磁盘”,设置磁盘空间大小为“20GB”,如下图所示
单击完成,即完成了新硬盘的添加,如下图所示
通过fdisk -l命令查看新硬盘是否添加成功
步骤二,利用fdisk命令对/dev/sdb/进行分区
步骤三,格式化新建分区,在各分区上建立ext3类型的文件的系统,建立时要求检查磁盘坏块并显示详细信息。
步骤四,将/dev/sdb1挂载到/user目录,/dev/sdb2挂载到
/backup目录,/dev/sdb3挂载到/home目录
2、某公司的Linux服务器新增两块硬盘,硬盘大小为40GB。
为了实现数据保护功能,现需利用2块硬盘创建RAID1卷。
要求创建的RAID设备名为/dev/md110,并利用mkfs命令创建ext3文件系统。
最后将文件系统挂载到系统上。
四、实验总结
通过本次实验,我学习到fdisk 的一些命令和在Linux 系统下利用RAID 技术实现磁盘冗余阵列的方法。
2023年最新的操作系统文件管理实验报告三篇

2023年最新的操作系统文件管理实验报告三篇操作系统文件管理实验报告一篇一、实训主要内容Word排版,表格制作与编辑。
Powerpoint的制作,初步认识计算机办公应用OFFICE。
二、实训过程第一天:初步熟悉计算机的性能和认识Word;第二天:练习Word题;第三天:认识Powerpoint并对昨天的Word练习予以测试;Excel实训作业第四天:将Word表格与Powerpoint的制作熟悉巩固;第五天:老师再次对我们Word与Powerpoint测验以及教我们一些有用的技能与方法,初步认识计算机办公应用。
OFFICE。
三、实训心得体会很快的,一个假期又过来了,面对本学期最后一次的校园生活实训,想着刚刚过去的最后一个周,紧张沉默之后更多的是感慨,印在脑海里的每一个足迹都是那么的深,真的说不出是什么感觉,伴着时间,就像是在和自己的影子赛跑,不可能从真实的两面去看清它,只是经意不经意的感受着有种东西在过去,也许更适合的只有那句话:时不待我,怎可驻足一周,短短的一周,我学到了很多不知道的东西,实在是感受颇深。
当今企业竞争范围的伴随社会市场经济的发展以及信息化程度的不断提高而日益扩大,这样就要求企业在各个方面加强管理,要求企业有更高的信息化集成来实现对企业的整体资源进行集成管理。
现代企业都意识到,企业之间的竞争是综合实力的竞争,要求企业有更强的资金实力,具备强有力的管理能力和更快的市场响应速度。
因此,引入计算机系统的意义是非常重大的。
在社会主义市场经济高速发展的今天,如果计算机的各项管理运做仍然停滞在以纸、笔为主要工具的阶段,就会因为信息量的快速增长而无法迅速、准确的运用计算机完成各项工作,这样,必将成为企业各方面发展的一个瓶颈。
而在当代这个以信息时代为主题的社会里,计算机技术高速发展,将信息技术应用于对现代企业的管理日益普及。
计算机技术不但可以提高信息的处理速度和提高信息处理的准确性,更重要的是,可以进一步的解放劳动力,将他们分配到更需要人力资源的岗位上去,从而加快社会工作的现代化、综合化的发展步伐。
管理文件的实验报告

一、实验目的1. 理解文件系统的基本概念和原理。
2. 掌握文件系统的基本操作,如创建、删除、复制、移动等。
3. 学习文件系统的安全性和权限管理。
4. 提高文件管理的效率,确保文件的安全性和可靠性。
二、实验环境1. 操作系统:Windows 102. 文件系统:NTFS3. 实验软件:Microsoft Windows Explorer三、实验内容1. 文件系统的基本概念和原理2. 文件系统的基本操作3. 文件系统的安全性和权限管理4. 文件系统的备份与恢复四、实验步骤1. 文件系统的基本概念和原理(1)打开Windows Explorer,观察文件系统的结构,了解文件和文件夹的层次关系。
(2)分析文件系统的目录结构,了解目录、文件和路径的概念。
(3)学习文件系统的存储方式,了解文件系统的存储单元和数据组织。
2. 文件系统的基本操作(1)创建文件夹:在Windows Explorer中,右键单击目标位置,选择“新建”->“文件夹”,输入文件夹名称,按Enter键。
(2)删除文件:选中要删除的文件,右键单击,选择“删除”,确认删除。
(3)复制文件:选中要复制的文件,右键单击,选择“复制”,在目标位置右键单击,选择“粘贴”。
(4)移动文件:选中要移动的文件,右键单击,选择“剪切”,在目标位置右键单击,选择“粘贴”。
3. 文件系统的安全性和权限管理(1)设置文件夹权限:选中要设置权限的文件夹,右键单击,选择“属性”,在“安全”选项卡中,添加用户或组,设置权限。
(2)设置文件属性:选中要设置属性的文件,右键单击,选择“属性”,在“常规”选项卡中,设置只读、隐藏等属性。
4. 文件系统的备份与恢复(1)创建备份:在Windows Explorer中,右键单击要备份的文件夹,选择“发送到”->“压缩(zipped)文件夹”,将备份文件保存在指定位置。
(2)恢复备份:将备份文件解压,将解压后的文件夹内容复制到原位置。
文件管理实验实验报告

一、实验目的1. 理解文件管理的基本概念和原理。
2. 掌握文件系统的组织结构和文件操作的基本方法。
3. 培养实际操作能力,提高文件管理的效率。
二、实验环境1. 操作系统:Windows 102. 文件管理工具:Windows自带的文件管理器三、实验内容1. 文件系统的基本概念和原理2. 文件系统的组织结构3. 文件操作的基本方法4. 文件夹的创建、删除、重命名等操作5. 文件和文件夹的搜索与查找6. 文件属性的查看和修改7. 文件和文件夹的复制、移动、粘贴等操作8. 文件和文件夹的压缩与解压缩9. 文件和文件夹的权限设置四、实验步骤1. 打开文件管理器,查看当前文件夹的结构。
2. 创建一个新的文件夹,命名为“实验文件夹”。
3. 在“实验文件夹”中创建一个文本文件,命名为“实验.txt”。
4. 打开“实验.txt”,输入以下内容:实验报告:文件管理实验5. 保存并关闭“实验.txt”。
6. 将“实验.txt”复制到“实验文件夹”中。
7. 将“实验.txt”移动到桌面。
8. 重命名“实验.txt”为“实验1.txt”。
9. 删除“实验1.txt”。
10. 搜索“实验文件夹”中的文件。
11. 查看文件属性。
12. 修改文件属性。
13. 压缩“实验文件夹”。
14. 解压缩“实验文件夹”。
15. 设置文件和文件夹的权限。
五、实验结果与分析1. 文件系统的基本概念和原理:通过实验,我们了解到文件系统是计算机中用于存储和管理文件的数据结构,包括文件、文件夹、磁盘等。
文件系统负责对文件进行组织、存储、检索、更新等操作。
2. 文件系统的组织结构:实验中,我们通过文件管理器查看当前文件夹的结构,了解到文件系统采用树状结构组织文件和文件夹。
3. 文件操作的基本方法:实验中,我们学习了文件和文件夹的创建、删除、重命名、复制、移动、粘贴等操作方法。
4. 文件和文件夹的搜索与查找:实验中,我们通过文件管理器搜索功能,快速找到所需的文件和文件夹。
文件系统安全实验(共五则范文)

文件系统安全实验(共五则范文)第一篇:文件系统安全实验拷贝/etc/passwd到/student(acl)setfacl getfacl要求该文件拥有者是root,拥有组是studentgroupadd studentchown root:student /student/passwd其它人没有执行权限kevin能读写该文件setfacl-m u:kevin:wr passwdtodd 只能读setfacl-m u:todd:r passwd创建/student/test目录,要求Mkdir /student/teststudent组的用户对此目录有完全权限setfacl-m g:student:rwx /student/testkevin对此目录有r-x权限setfacl-m u:kevin:rx /student/test在此目录中创建的文件,只有本人和root可以删除(sticky)o+t chgrp student /student/test chmod o+t /student/test/4在此目录中创建的文件,拥有组一定是student(SGID)g+s chmod g+s /student/test/第二篇:实验6 系统安全管理(推荐)实验6 系统安全管理一、实验目的与要求ν理解SQL Server中的安全管理机制。
ν理解账户、用户、服务器角色和数据库角色的含义。
ν熟练掌握Windows NT登录账户和SQL Server登录账户的建立与删除。
ν熟练掌握添加与删除服务器角色成员。
ν熟练掌握添加和删除一个登录账户为某个数据库的用户。
ν熟练掌握添加和删除数据库角色。
ν熟练掌握添加和删除数据库角色成员。
ν熟练掌握用户、角色的授权、收回权限和拒绝权限。
二、实验内容和步骤1、创建SQL Server登录账户用企业管理器和查询分析器两种方式在SQL Server中添加一个账户名为“自己名字”,密码为“123456”,默认数据库为“你新建的数据库名字”的SQL Server登录账户。
操作系统实验文件系统报告

操作系统实验文件系统报告简介本文档是操作系统实验报告的文件系统部分。
在这个实验中,我们将通过实现一个简单的文件系统来了解文件系统的基本原理和实现方式。
本文档将介绍文件系统的设计和实现,以及在实验中遇到的问题和解决方案。
设计和实现文件系统结构我们的文件系统采用了简单的单级目录结构。
每个文件都有一个唯一的文件名和文件扩展名,以及相应的文件内容。
文件系统中的所有文件都存储在一个文件中,我们通过偏移量来访问每个文件。
文件系统接口我们实现了以下文件系统接口来对文件系统进行操作:•create_file(filename, extension): 创建一个新文件。
•delete_file(filename, extension): 删除一个文件。
•open_file(filename, extension): 打开一个文件。
•close_file(file): 关闭一个文件。
•read_file(file, offset, length): 从文件中读取数据。
•write_file(file, data): 向文件中写入数据。
•seek_file(file, offset): 设置文件指针的位置。
通过这些接口,我们可以对文件进行创建、删除、读取和写入操作,以及设置文件指针的位置。
文件系统实现我们的文件系统是在操作系统内核中进行实现的。
在内存中维护了一个文件控制块(FCB)表,用于记录文件的元数据信息,比如文件名、扩展名、大小和位置等。
文件内容存储在一个独立的数据块中。
为了实现文件的持久化,我们将文件系统的存储映射到了一个文件中。
在系统启动时,我们会将这个文件读取到内存中,并建立起文件控制块表和数据块的映射关系。
文件的创建、删除和读写操作都是通过操作文件控制块表和数据块来完成的。
具体实现涉及到文件的分配和释放,以及文件指针的管理等问题。
遇到的问题和解决方案在实验中,我们遇到了一些问题,主要集中在文件的读写和文件指针的管理方面。
操作系统实验四文件系统实验

char fileName[20]; char File[50]; struct ufd * next; }*fp,*tp,*p,*begin;
typedef struct ufd UFD ; void show(struct UFD *f) {
begin=f; if(begin->next==NULL) printf("该用户名下尚无文件!\n"); else {
while(strcmp(p->fileName,filename)!=0&&p!=NULL)
p=p->next;
if(p==NULL)
printf("文件不存在!\n");
else
{
printf("%s: %s\n",p->fileName,p->File);
}
goto label;
}
else if(i==4)
#include <stdio.h> #include <stdlib.h> #include <string.h> #define getpch(type) (type*)malloc(sizeof(type)) int userNum=0;
struct mdf {
char userName[20]; struct UFD* p; } mdf[20];
西北农林科技大学信息工程学院实习报告
实验四 文件系统实验 一 .目的要求
1、用高级语言编写和调试一个简单的文件系统,模拟文件管理的工作过程。从 而对各种文件操作命令的实质内容和执行过程有比较深入的了解。 2、要求设计一个 n 个用户的文件系统,每次用户可保存 m 个文件,用户在一次 运行中只能打开一个文件,对文件必须设置保护措施,且至少有 Create、delete、 open、close、read、write 等命令。
文件系统实验报告

文件系统实验报告实验四文件系统实验一.目的要求1、用高级语言编写和调试一个简单的文件系统,模拟文件管理的工作过程。
从而对各种文件操作命令的实质内容和执行过程有比较深入的了解。
2、要求设计一个n个用户的文件系统,每次用户可保存m 个文件,用户在一次运行中只能打开一个文件,对文件必须设置保护措施,且至少有Create、delete、open、close、read、write等命令。
二.例题:1、设计一个10个用户的文件系统,每次用户可保存10个文件,一次运行用户可以打开5个文件。
2、程序采用二级文件目录和用户文件目录。
另外,为打开文件设置了运行文件目录。
3、为了便于实现,对文件的读写作了简化,在执行读写命令时,只需改读写指针,并不进行实际的读写操作。
4、算法与框图:①因系统小,文件目录的检索使用了简单的线性搜索。
②文件保护简单使用了三位保护码:允许读写执行、对应位为1,对应位为0,则表示不允许读写、执行。
③程序中使用的主要设计结构如下:主文件目录和用户文件目录打开文件目录文件系统算法的流程图如下:三. 实验题:1、增加2~3个文件操作命令,并加以实现。
#include#include#include#include#define MAXSIZE 100#define ADDSIZE 50#define PT elem+l-> length#define N 4typedef struct term{/*班级和学期的结构体*/char class1[10];char term1[10];}term;typedef struct student{/*学生成绩信息的结构体*/ term st;/*班级和学期结构体放于此结构体中*/ char num[10];char name[12];float course[4];float total;float average;int bit;}lnode,*stu;typedef struct{lnode *elem;/*指向上个结构体的指针*/int size;/*最大能放lnode结构体成员的个数*/ int length;/*当前长度*/}sqack,*sq;sqack *l;void init/*动态分配存储空间*/{l-> elem=malloc);l-> length =0;l-> size=MAXSIZE;}void input/*输入学生的信息*/{lnode *newbase,*p;char cla[10],ter[10],ch;int n,i;if{newbase=realloc*sizeof);/*追加存储空间*/ l-> elem =newbase;l-> size +=ADDSIZE;}p=l-> elem;do{printf;gets;gets;printf;scanf;printf;for{scanf;strcpy;strcpy;++l-> length ;}printf “);ch=getchar;}while;}void change/*修改学生的信息*/{lnode *p;lnode e;int flag=1,i;char s1[10],num1[10];printf:\n “);gets;gets;p=l-> elem ;while && flag==1)/*查找要修改的学生的信息*/ {if==0&&strcmp==0)flag=0;/*找到了*/p++;}p--;if printf;printf;forprintf;printf;printf;scanf;forscanf;*p=e;}void same /*把学期和班级相同的学生信息放在结构体数组tt 中*/ {int i=0;lnode *p,*q;q=t;p=l-> elem ;while{if==0&&strcmp==0){*q=*p;q++;i++;}p++;*k=i;}void sort/*按学生成绩从高到低排序函数*/ {int i;lnode *q,temp;for{q-> total =0;forq-> total =q-> total +q-> course [i];q-> average =q-> total /N;}forforif-> total){temp=*q;*q=*;*=temp;}}void print/*输出学生的成绩*/lnode *p;p=q;for{printf;forprintf;printf;printf;}}void stat/*统计学生的成绩*/ {lnode tt[50];char ter[10],clas[10];int i,k;printf:\n “);forter[i]=getchar;forclas[i]=getchar;same;/*把学期和班级相同的学生信息放在结构体数组tt中*/ sort;/*按学生成绩从高到低排序函数*/print;/*输出学生的成绩*/}void search1/*按学号查*/{lnode *p;char ter1[10];int i,flag=1;p=l-> elem;printf;gets;for{if==0){flag=0;printf;printf;forprintf;printf;printf;}}if printf;}void search2/*按姓名查*/ {lnode *p;char ter1[10];int i,flag=1;p=l-> elem;printf;gets;for{if==0){flag=0;printf;printf;forprintf;printf;}}if printf ;}void search/*查找学生的成绩*/ {char ch;do{printf;ch=getchar;switch{case ‘1 ‘:search1;break;case ‘2 ‘:search2;break;default:}printf “);ch=getchar;} while;}void fail/*查找不及格及学生名单*/ {int i;lnode *p;for{forif{printf;forprintf;printf;printf;}}}void output/*按班级输出学生的成绩单*/{lnode tt[50];int k;char clas[10],ter1[10];printf; gets;gets;same;/*把学期和班级相同的学生信息放在结构体数组tt中*/ print;/*输出学生的成绩*/}试验四文件系统一、实验目的1、用高级语言编写和调试一个简单的文件系统,模拟文件管理的工作过程。
操作系统文件系统性能与安全实验报告

操作系统文件系统性能与安全实验报告1. 概述文件系统是操作系统中的重要组成部分,它负责管理文件的存储、组织和访问。
本次实验旨在研究操作系统文件系统的性能和安全性,并通过实验数据和分析得出结论。
2. 实验设计与环境为了评估文件系统的性能和安全性,我们选择了常用的三种文件系统进行实验:FAT32、NTFS和ext4。
实验环境搭建在一台具有充足资源的计算机上,操作系统为Windows 10和Linux。
3. 性能实验3.1 文件读取性能测试通过在不同文件系统上读取不同大小的文件,并记录读取时间,以评估文件系统在读取大文件和小文件时的性能差异。
3.2 文件写入性能测试同样地,在不同文件系统上写入不同大小的文件,并记录写入时间,以评估文件系统在写入大文件和小文件时的性能差异。
3.3 目录操作性能测试通过在不同文件系统上进行目录的创建、删除、重命名等操作,并记录所花费的时间,以评估文件系统在目录操作上的性能差异。
4. 安全性实验4.1 文件权限测试我们通过在不同文件系统上设置不同的文件权限,并测试用户对文件的读取、写入和执行权限,以评估文件系统对文件安全性的保护程度。
4.2 数据恢复测试在实验中,我们模拟文件系统崩溃等意外情况,测试文件系统的数据恢复能力,以评估文件系统对数据的安全性和可靠性。
4.3 密码保护测试通过在不同文件系统上设置文件加密功能,并测试文件系统的密码保护机制,以评估文件系统对数据隐私和安全的保护程度。
5. 实验结果与分析根据我们的实验数据和分析,我们得出以下结论:5.1 性能方面:- 在大文件读写性能方面,NTFS和ext4相对较好,而FAT32性能相对较差。
- 在小文件读写性能方面,ext4表现出色,NTFS次之,而FAT32仍然性能较差。
- 目录操作性能方面,ext4表现最佳,NTFS次之,而FAT32仍然相对较差。
5.2 安全性方面:- 在文件权限控制方面,NTFS和ext4提供了更加精细的权限设置,相对而言更安全可靠。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二文件系统实验报告一.实验简介本实验要求在假设的I/O 系统之上开发一个简单的文件系统,这样做既能让实验者对文件系统有整体了解,又避免了涉及过多细节。
用户通过create, open, read 等命令与文件系统交互。
文件系统把磁盘视为顺序编号的逻辑块序列,逻辑块的编号为0 至L-1。
I/O 系统利用内存中的数组模拟磁盘。
实际物理磁盘的结构是多维的:有柱面、磁道、扇区等概念。
I/O 系统的任务是隐藏磁盘的结构细节,把磁盘以逻辑块的面目呈现给文件系统。
逻辑块顺序编号,编号取值范围为0 至L .. 1,其中L 表示磁盘的存储块总数。
实验中,我们可以利用字符数组ldisk[L][B] 构建磁盘模型,其中 B 表示每个存储块的长度。
I/O 系统从文件系统接收命令,根据命令指定的逻辑块号把磁盘块的内容读入命令指定的内存区域,或者把命令指定的内存区域内容写入磁盘块。
我设计的文件系统拥有三个用户。
二.具体说明1.文件系统的组织:磁盘的前k 个块是保留区,其中包含如下信息:位图和文件描述符。
位图用来描述磁盘块的分配情况。
位图中的每一位对应一个逻辑块。
创建或者删除文件,以及文件的长度发生变化时,文件系统都需要进行位图操作。
前k 个块的剩余部分包含一组文件描述符。
每个文件描述符包含如下信息:•文件长度,单位字节•文件分配到的磁盘块号数组。
该数组的长度是一个系统参数。
在实验中我们可以把它设置为一个比较小的数,例如3。
2.目录:我们的文件系统中仅设置一个目录,该目录包含文件系统中的所有文件。
除了不需要显示地创建和删除之外,目录在很多方面和普通文件相像。
目录对应0 号文件描述符。
初始状态下,目录中没有文件,所有,目录对应的描述符中记录的长度应为0,而且也没有分配磁盘块。
每创建一个文件,目录文件的长度便增加一分。
目录文件的内容由一系列的目录项组成,其中每个目录项由如下内容组成:•文件名•文件描述符序号3.对文件的操作:文件系统需提供如下函数;create, destroy, open, read, write。
•create(filename): 根据指定的文件名创建新文件。
•destroy(filename): 删除指定文件。
•open(filename): 打开文件。
该函数返回的索引号可用于后续的read, write, lseek, 或close 操作。
•close(index): 关闭制定文件。
•read(index, mem_area, count): 从指定文件顺序读入count 个字节mem_area 指定的内存位置。
读操作从文件的读写指针指示的位置开始。
•write(index, mem_area, count): 把mem_area 指定的内存位置开始的count 个字节顺序写入指定文件。
写操作从文件的读写指针指示的位置开始。
•lseek(index, pos): 把文件的读写指针移动到pos 指定的位置。
pos是一个整数,表示从文件开始位置的偏移量。
文件打开时,读写指针自动设置为0。
每次读写操作之后,它指向最后被访问的字节的下一个位置。
lseek 能够在不进行读写操作的情况下改变读写指针能位置。
•directory: 列表显示所有文件及其长度。
三.实验过程创建文件create:此时显示文件中的文件:文件的删除delete:打开文件(open):文件的写操作(write):读文件(read):关闭文件(close):退出系统(exit):四.实验代码#include <stdio.h>#include <malloc.h>#include <stdlib.h>#include <string.h>#define NULL 0typedef struct mdf{//MDF结构体char username[20];//用户名char filename[20];//文件名struct mdf *next;}MDF;typedef struct ufd{//UFD结构体char filename[20];//文件名int protect;//文件保护码unsigned int length;//文件长度struct ufd *next;}UFD;typedef struct afd{//AFD结构体char filename[20];//文件名int protect;//文件保护码unsigned int point;//文件读写指针struct afd *next;}AFD;MDF *pmdf;//全局链表头指针UFD *pufd;AFD *pafd;char UserUFD[20];//已经登陆成功的用户名void initMDF()//初始化MDF表{FILE *fp;pmdf= (MDF*)malloc(sizeof(MDF));MDF *p = pmdf;if((fp = fopen("MDF", "r+")) == NULL){//打开MDF文件puts("the MDF cannot open!\n");exit(1);}while (!feof(fp)){//把MDF文件中的内容装入链表p->next = (MDF*)malloc(sizeof(MDF));p = p->next;fscanf(fp, "%s", p->username);fscanf(fp, "%s", p->filename);}p->next = NULL;fclose(fp);}void printUFD()//打印MDF表{UFD *p = pufd->next;puts("文件名\t\t保护码\t\t文件长度\n");while (p){printf("%s", p->filename);printf("\t\t%d" , p->protect);printf("\t\t%d\n", p->length);p=p->next;}}void initUFD(char *name)//初始化UFD表{FILE *fp;pufd= (UFD*)malloc(sizeof(UFD));UFD *p = pufd;if((fp = fopen(name, "r+")) == NULL){puts("the UFD cannot open!\n");exit(1);}while (!feof(fp)){//建立UFD链表p->next = (UFD*)malloc(sizeof(UFD));p = p->next;fscanf(fp, "%s", p->filename);fscanf(fp, "%d", &p->protect);fscanf(fp, "%d", &p->length);fgetc(fp);}p->next = NULL;fclose(fp);}int checkuser()//检测登陆的用户名{char username[20];while(1){puts("请输入用户名: \n");scanf("%s", username);MDF *p = pmdf;while(p){if(strcmp(username, p->username) == 0){strcpy(UserUFD, p->filename);initUFD(p->filename);printUFD();return 1;}p= p->next;}puts("同户名不存在\n");}}void initAFD()//初始化AFD{pafd = (AFD*)malloc(sizeof(AFD));pafd->next = NULL;}bool create()//创建文件命令{char filename[20];UFD *p = pufd->next;AFD *pa = pafd;puts("请输入要创建的文件名: \n");scanf("%s", filename);while (p){if(strcmp(filename, p->filename) == 0){puts("此文件已经存在了!\n");return 0;}if(!p->next)break;p= p->next;}p->next = (UFD*)malloc(sizeof(UFD));p=p->next;strcpy(p->filename, filename);p->protect = 2;p->length = 0;p->next = NULL;while(pa->next){//创建文件后加入到AFD pa=pa->next;}pa->next = (AFD*)malloc(sizeof(AFD));pa = pa->next;strcpy(pa->filename ,filename);pa->protect = 2;pa->point = 0;pa->next = NULL;}bool _delete()//删除文件命令{char filename[20];puts("请输入要删除的文件名: \n");scanf("%s", filename);UFD *p = pufd;UFD *temp;while (p->next){if(strcmp(filename, p->next->filename) == 0){temp = p->next;p->next = p->next->next;free(temp);printf("文件%s删除成功!\n", filename);return 1;}p= p->next;}puts("要删除的文件不存在!\n");return 0;}bool open()//打开文件命令{char filename[20];unsigned int protect;puts("请输入要打开的文件名: \n");scanf("%s", filename);puts("请输入要打开的文件保护类型: \n");scanf("%d", &protect);UFD *p = pufd->next;AFD *pa = pafd->next;while (pa){if(strcmp(filename, pa->filename) == 0){printf("文件%s已经打开!\n",filename);return 1;}if(!pa->next)break;pa = pa->next;}if(!pa)pa=pafd;while (p){if(strcmp(filename, p->filename) == 0){pa->next = (AFD*)malloc(sizeof(AFD));pa = pa->next;strcpy(pa->filename , p->filename);pa->protect = protect;if(protect == 1)pa->point = 0;elsepa->point = p->length;pa->next=NULL;printf("文件%s已经打开!\n",filename);return 1;}p= p->next;}puts("要打开的文件不存在!\n");return 0;}void close()//关闭文件命令{char filename[20];UFD *pu = pufd->next;puts("请输入要关闭的文件名: \n");scanf("%s", filename);AFD *p = pafd;AFD *temp;while (p&&p->next){if(strcmp(filename, p->next->filename) == 0){temp = p->next;p->next = p->next->next;if(temp->protect == 2){while(pu){if(strcmp(temp->filename, pu->filename) == 0){pu->length =temp->point;break;}pu = pu->next;}}free(temp);printf("文件%s关闭成功!\n", filename);return ;}p= p->next;}puts("要关闭的文件没有被打开!\n");}int read()//读文件命令{char filename[20];unsigned int length;AFD *p = pafd->next;puts("请输入要读的文件名: \n");scanf("%s", filename);puts("请输入要读的长度\n");scanf("%d", &length);while (p){if(strcmp(filename, p->filename) == 0){p->point += length;printf("文件%s读取成功!\n", filename);return 1;}p= p->next;}puts("读取失败文件没有打开过!\n");return 0;}int write()//写文件命令{char filename[20];unsigned int length;AFD *p = pafd->next;puts("请输入要写的文件名: \n");scanf("%s", filename);while (p){if(strcmp(filename, p->filename) == 0){if(p->protect != 2){printf("文件%s不可写!\n", filename);return 0;}puts("请输入要写的长度\n");scanf("%d", &length);p->point += length;printf("文件%s写入成功!\n", filename);return 1;}p= p->next;}puts("写入失败文件没有打开过!\n");return 0;}void destroy()//释放内存{MDF *pm = pmdf;while(pm){pmdf = pmdf->next;free(pm);pm = pmdf;}AFD *pa = pafd;while(pa){pafd = pafd->next;free(pa);pa = pafd;}UFD *pu = pufd;while(pu){pufd = pufd ->next;free(pu);pu = pufd;}}void saveUFD()//保存UFD文件{FILE *fp;UFD *p = pufd->next;if((fp = fopen(UserUFD, "w")) == NULL){puts("the UFD cannot open!\n");exit(1);}while (p){fprintf(fp, "%s", "\n");fprintf(fp, "%s%s", p->filename,"\t\t");fprintf(fp, "%d%s", p->protect,"\t\t");fprintf(fp, "%d", p->length);p=p->next;}fclose(fp);}void exit()//推出系统{AFD *pa = pafd->next;UFD *pu = pufd->next;while(pa){if(pa->protect == 2){while(pu){if(strcmp(pa->filename, pu->filename) == 0){pu->length = pa->point;break;}pu = pu->next;}}pa =pa->next;}saveUFD();printUFD();destroy();}{while(1){char command[20];char name[][8] = {"create", "delete", "open", "close","read", "write","exit"};puts("请输入命令: \n");scanf("%s", command);if(strcmp(command, name[0] ) == 0)create();else if(strcmp(command, name[1] ) == 0)_delete();else if(strcmp(command, name[2] ) == 0)open();else if(strcmp(command, name[3] ) == 0)close();else if(strcmp(command, name[4] ) == 0)read();else if(strcmp(command, name[5] ) == 0)write();else if(strcmp(command, name[6] ) == 0){exit();return;}elseputs("无效命令,请重新输入:\n");}}void print(){puts("文件系统\n");puts("***使用说明***:\n");puts("本文件系统共有三个用户分别是user1 user2 user3\n\系统命令有create, delete, open, close,read, write,exit\\nexit----------------------------------------退出系统");}int main(){print();initMDF();checkuser();initAFD();return 0; }。