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

一、实验目的1. 熟悉实验报告管理系统的功能和使用方法。
2. 掌握实验报告的提交、审批、归档等流程。
3. 提高实验报告的规范性和完整性。
二、实验环境1. 操作系统:Windows 102. 浏览器:Chrome3. 实验报告管理系统:XXX实验报告管理系统(以下简称为“系统”)三、实验内容1. 系统登录首先,打开浏览器,输入系统网址,进入登录界面。
输入用户名和密码,点击登录按钮,即可进入实验报告管理系统。
2. 实验报告上传登录成功后,进入实验报告管理系统主界面。
在主界面上,点击“上传实验报告”按钮,进入上传界面。
(1)选择实验项目:在实验项目下拉菜单中选择相应的实验项目。
(2)选择实验班级:在实验班级下拉菜单中选择相应的班级。
(3)选择实验组别:在实验组别下拉菜单中选择相应的组别。
(4)上传实验报告:点击“选择文件”按钮,选择实验报告文件,然后点击“上传”按钮。
3. 实验报告审批(1)管理员审批:管理员登录系统后,可以在“实验报告审批”模块中查看待审批的实验报告。
管理员可以对实验报告进行审批,审批结果有“同意”和“不同意”两种。
(2)学生查看审批结果:学生登录系统后,可以在“我的实验报告”模块中查看自己的实验报告审批结果。
4. 实验报告归档(1)管理员归档:管理员登录系统后,可以在“实验报告归档”模块中查看所有实验报告。
管理员可以对实验报告进行归档操作。
(2)学生查询归档报告:学生登录系统后,可以在“我的实验报告”模块中查询自己的实验报告归档情况。
5. 实验报告查询(1)管理员查询:管理员登录系统后,可以在“实验报告查询”模块中查询所有实验报告,包括实验项目、实验班级、实验组别、实验报告名称、上传时间、审批结果等信息。
(2)学生查询:学生登录系统后,可以在“我的实验报告”模块中查询自己的实验报告,包括实验项目、实验班级、实验组别、实验报告名称、上传时间、审批结果等信息。
四、实验结果与分析1. 实验报告管理系统实现了实验报告的在线提交、审批、归档和查询等功能,提高了实验报告的管理效率。
文件加密操作实验报告

文件加密操作实验报告文件加密操作实验报告一、引言文件加密是一种常见的数据安全保护手段,通过将文件内容转换为不可读的形式,以防止未经授权的访问和使用。
本实验旨在探究不同的文件加密操作方法,并评估其安全性和效果。
二、实验目的1. 了解常见的文件加密算法和技术;2. 掌握文件加密操作的基本步骤和流程;3. 比较不同加密算法对文件加密效果和性能的影响;4. 分析不同加密算法的优缺点,并提出改进方案。
三、实验方法1. 实验环境:使用计算机及相关软件工具进行实验;2. 实验材料:选择多个不同类型的文件作为实验对象;3. 实验步骤:3.1 选择合适的加密算法:对称加密算法(如DES、AES)、非对称加密算法(如RSA)或混合加密算法;3.2 生成并保存秘钥:根据选定的算法生成相应长度的秘钥,并保存在安全位置;3.3 加密文件:使用选定的算法和秘钥对待加密文件进行处理,生成相应的加密文本或二进制数据;3.4 解密文件:使用相同的算法和秘钥对加密文件进行解密,恢复原始文件;3.5 分析结果:比较加密前后文件的差异,评估加密算法的效果和性能。
四、实验结果1. 对称加密算法:4.1 DES加密:4.1.1 步骤:选择一个8字节的秘钥,使用DES算法对待加密文件进行处理;4.1.2 结果:生成一个与原始文件大小相同的加密文件;4.1.3 分析:DES算法具有较高的安全性和可靠性,但速度较慢; 4.2 AES加密:4.2.1 步骤:选择一个16字节、24字节或32字节的秘钥,使用AES算法对待加密文件进行处理;4.2.2 结果:生成一个与原始文件大小相同的加密文件;4.2.3 分析:AES算法在安全性和速度方面都表现优秀,是目前最常用的对称加密算法之一。
2. 非对称加密算法:4.3 RSA加密:4.3.1 步骤:生成公钥和私钥对,并使用公钥对待加密文件进行处理;4.3.2 结果:生成一个较大且与原始文件大小不同的加密文件;4.3.3 分析:RSA算法具有较高的安全性,但加密和解密速度较慢,适用于对小文件或敏感信息进行加密。
长文档编辑实验报告(3篇)

第1篇一、实验目的1. 熟悉长文档的编辑方法和技巧。
2. 提高文档排版和格式设置的能力。
3. 培养严谨的写作态度和团队协作精神。
二、实验环境1. 操作系统:Windows 102. 文字处理软件:Microsoft Word 20163. 实验设备:笔记本电脑三、实验内容本次实验主要涉及以下内容:1. 长文档的基本结构2. 文档排版和格式设置3. 图表插入与编辑4. 字数统计与目录生成5. 文档校对与修改四、实验步骤1. 创建长文档(1)打开Microsoft Word,新建一个空白文档。
(2)设置文档的基本格式,包括页边距、页眉页脚、页码等。
(3)根据实际需求,设置文档的字体、字号、行距等。
2. 文档内容编辑(1)输入文档标题和正文内容。
(2)对正文内容进行分段、标题设置等。
(3)根据需要,插入图表、图片等辅助说明。
3. 文档排版和格式设置(1)调整段落格式,包括对齐方式、缩进、行距等。
(2)设置标题样式,包括字体、字号、颜色等。
(3)插入目录,方便读者快速了解文档结构。
4. 图表插入与编辑(1)根据需要,插入图表、图片等。
(2)调整图表大小、位置等,确保与文档内容相匹配。
(3)编辑图表内容,包括文字、数据等。
5. 字数统计与目录生成(1)使用Word自带的字数统计功能,统计文档的字数。
(2)生成目录,方便读者快速查找所需内容。
6. 文档校对与修改(1)仔细阅读文档,检查是否存在错别字、语法错误等。
(2)根据实际情况,对文档进行修改和润色。
(3)保存文档,以便后续使用。
五、实验结果与分析1. 实验结果通过本次实验,我们成功完成了一个长文档的编辑,包括文档创建、内容编辑、排版设置、图表插入、字数统计、目录生成以及校对修改等环节。
2. 实验分析(1)在文档创建过程中,我们学会了如何设置文档的基本格式,包括页边距、页眉页脚、页码等,为后续的排版和编辑打下了基础。
(2)在文档内容编辑过程中,我们掌握了分段、标题设置、图表插入等技巧,提高了文档的可读性和美观度。
公文传输平台实验报告

甘肃政法学院本科生实验报告(二)姓名:学院:行政学院专业:政治学与行政学班级:政本一班实验课程名称:电子政务与办公自动化实验日期: 2013 年 09 月 26 日指导教师及职称:实验成绩:开课时间:2013~2014 学年第一学期甘肃政法学院实验管理中心印制电子政务实验目录实验名称公文传输平台交互实验否姓名班级政本一班序号一、实验过程(数据)记录一、公文传输平台后台管理操作步骤(一)用户管理1.以系统管理员的角色进入,点击左框中“用户管理”下的“群组管理”,添加群组。
如添加“天水市政府”群组。
2.点击“权限管理”,将会显示各个用户的详细权限信息。
3.点击“添加用户”,添加群组中的用户,输入用户名,为用户分配群组和权限等级,结果如下:4.点击“管理用户”将显示所有用户的记录信息,如上图。
点击“添加”按钮,可以添加用户;点击记录信息后面的“编辑”链接,进入用户信息编辑界面,可以修改用户信息;选中记录信息,点击“删除”按钮,可以删除用户。
(二)添加数字证书1.证书申请:编辑申请用户的姓名、电子邮件、公司、部门,所在的国家、地区、市/县。
2.查看证书申请状态,并挂起申请证书。
3.以CA服务商的角色进入,对申请证书颁发。
(三)电子印章的设计与管理1.设计电子印章2.电子印章管理:将电子印章和数字证书绑定。
(四)档案管理1.档馆信息维护2.添加档案性质3.新增档案密级4.新增档案组成形式5.添加档案收集形式6.添加馆藏地址7.添加档案类别8.新增用户9.在系统管理员角色中,进行角色管理、用户管理、权限设置。
10.以档案管理员李明的身份进入,新增档案、目录,编研课题。
11.进入档案大厅,注册用户。
(五)文件管理1.在后台管理模块下,点击“文件管理”下的“文件类型”添加文件类型,输入类型名和类型简介,如输入“告示”,结果如下:2.发布文件(1)点击“文件管理”下的“发布文件”,如下图:(2)点击“自定义选择”选择文件接收单位,输入文件标题、文件字号、文件内容,选择发文单位、时间、类型。
Windows网络操作系统配置与管理单元六任务4:配置文件屏蔽实验报告(可编辑修改word版)

W i n do w s网络操作系统配置与管理实验报告专业班级成绩评定学号姓名(合作者号) 教师签名单元六任务4:配置文件屏蔽第周星期第节一、实验目的与要求1.掌握文件屏蔽模板的配置2.掌握文件屏蔽的配置3.掌握文件屏蔽例外的配置二、实验方案与步骤任务 4:配置文件屏蔽1.工作情景你是时讯公司网络管理员,禁止将某些类型的文件存放到公司的文件服务器上,需要对t e s t文件夹进行文件屏蔽,当向该文件夹存入可执行文件.b a t时,将被禁止写入,并发出告警信息。
2.步骤(1)创建文件屏蔽1)在 SH-SVR2 上,“文件服务器资源管理器”控制台中,展开“文件屏蔽管理”节点。
2)选择并右键单击“文件屏蔽”节点,然后单击“创建文件屏蔽”。
3)在“创建文件屏蔽”对话框中,单击“浏览”并定位到 C:\test\test2 文件夹下,然后单击“确定”。
4)选择“定义自定义文件屏蔽属性”,单击“自定义属性”。
5)在“文件屏蔽属性”对话框中,选择“被动屏蔽”,然后从列表中选择“可执行文件”。
6)单击“事件日志”选项卡,选择“将警告发送至事件日志”检查框,然后单击“确定”。
7)在“创建文件屏蔽”对话框中,单击“创建”。
8)将显示“将自定义属性另存为模板”对话框。
输入“Monitor Executables”,然后单击“确定”。
(2)测试文件屏蔽1)打开“Windows资源管理器”,定位到 C:\test\test2 文件夹下。
2)右键单击 test.bat 文件,然后单击“复制”。
3)浏览至 C:\test\test2 文件夹,在 Windows 资源管理器右方空白处右键单击,然后选择“粘贴”。
4)检查事件查看器。
为了进入事件查看器,单击“开始”“,管理工具”,选择“事件查看器”。
展开“Windows 日志”,然后单击“应用程序”。
注意事件 ID为8215 的事件。
5)关闭“事件查看器”,然后关闭“Windows资源管理器”。
文件隐藏的实验报告

一、实验目的1. 了解文件隐藏的基本原理和方法;2. 掌握使用工具软件进行文件隐藏的操作步骤;3. 提高计算机安全意识,防范潜在的风险。
二、实验环境1. 操作系统:Windows 10;2. 文件隐藏工具:WinRAR、Hider 2;3. 实验数据:待隐藏文件(例如:图片、文档等)。
三、实验原理文件隐藏是指将文件或文件夹在计算机中隐藏起来,使其不显示在文件资源管理器中。
常见的文件隐藏方法有:1. 使用系统属性隐藏:通过修改文件或文件夹的属性,将其设置为隐藏;2. 使用第三方软件隐藏:利用WinRAR等压缩软件将文件压缩后,设置密码保护,实现隐藏;3. 使用系统命令隐藏:利用Windows命令行工具(如:attrib、dir等)进行文件隐藏。
四、实验步骤1. 使用系统属性隐藏文件(1)选中待隐藏文件,右键点击选择“属性”;(2)勾选“隐藏”复选框;(3)点击“确定”保存设置。
2. 使用WinRAR隐藏文件(1)打开WinRAR软件,点击“新建”按钮创建一个新的压缩包;(2)将待隐藏文件拖拽到压缩包内;(3)点击“工具”菜单,选择“设置密码”;(4)设置压缩包密码,并确认;(5)点击“确定”保存压缩包。
3. 使用Hider 2隐藏文件(1)打开Hider 2软件,点击“添加文件”按钮;(2)选择待隐藏文件,点击“打开”;(3)在“隐藏方式”下拉菜单中选择“隐藏文件”;(4)点击“隐藏”按钮,确认隐藏操作。
五、实验结果与分析1. 使用系统属性隐藏文件:在文件资源管理器中无法直接看到被隐藏的文件,但可以通过修改文件属性或使用特定软件查看隐藏文件。
2. 使用WinRAR隐藏文件:在文件资源管理器中无法直接看到压缩包,但可以通过输入密码解压后查看隐藏文件。
3. 使用Hider 2隐藏文件:在文件资源管理器中无法直接看到被隐藏的文件,但可以通过Hider 2软件查看隐藏文件。
六、实验总结1. 文件隐藏是一种有效的数据保护方法,可以防止他人误删或查看敏感信息;2. 了解多种文件隐藏方法,有助于提高计算机安全意识,防范潜在的风险;3. 在进行文件隐藏操作时,应注意保护密码,防止他人破解。
linux常用命令实验实验报告 -回复
linux常用命令实验实验报告-回复Linux常用命令实验实验报告一、引言在计算机领域,掌握常用命令是非常重要的。
对于使用Linux操作系统的用户来说,熟悉常用命令更是必备的技能之一。
本篇实验报告将以"Linux常用命令"为主题,介绍并实验一些常用的Linux命令,包括文件与目录管理、权限管理、网络管理、进程管理等方面的命令。
通过本次实验,希望进一步巩固和提升大家对Linux操作系统的理解和实践能力。
二、实验一:文件与目录管理1. 文件列表命令:ls首先,我们来介绍一下`ls`命令,该命令用于列出当前目录下的所有文件和文件夹。
通过在终端中输入`ls`命令,可以查看当前目录下的文件列表。
2. 创建目录命令:mkdir接下来,我们将尝试使用`mkdir`命令创建一个新的目录。
可以输入`mkdir directory_name`来创建一个名为"directory_name"的目录。
3. 切换目录命令:cd使用`cd`命令可以切换当前工作目录。
例如,要进入某个目录,可以使用`cd directory_name`命令。
要返回上一级目录,可以使用`cd ..`。
4. 复制文件命令:cp`cp`命令用于复制文件和目录。
要复制一个文件,可以使用`cp source_file destination_file`命令。
例如,`cp file1.txt file2.txt`将会复制"file1.txt"并将其命名为"file2.txt"。
5. 删除文件命令:rm要删除一个文件,可以使用`rm file_name`命令。
例如,要删除"file.txt"文件,可以输入`rm file.txt`。
6. 查找文件命令:find使用`find`命令可以在文件系统中查找文件。
例如,`find / -namefile_name`将会在根目录下找到名为"file_name"的文件。
(完整版)Windows网络操作系统配置与管理单元五任务1:网络共享文件夹的访问管理实验报告
(3)配置NTFS访问权限
删除表1中所列举文件夹的所有继承的权限,只对相应的文件夹设置权限,不要让子文件夹继承权限。
表1
文件夹
组
NTFS权限
C:\Public
Authenticated Users
遍历文件夹/运行文件
列出文件夹/读取数据
读取权限
Administrators
3)按照“共享文件夹向导”中的步骤在C:盘新建共享文件夹SVR_share1.
(2)在SH-SVR1计算机中通过Windows资源管理器创建共享文件夹
1)选择SH-SVR1计算机,双击“我的电脑”,进入“Windows资源管理器”
2)在“Windows资源管理器”中在C:盘创建文件夹SVR_share2。.
1)选择SH-SVR1计算机,在“Windows资源管理器”中在C:盘创建文件夹SVR_share3
2)在“开始”菜单,点击“运行”,在对话框中输入“cmd”。
3)在命令提示符符下,输入“net shareSVR_share3=c:\SVR_share3
(4)在SH-SVR1计算机中通过Windows资源管理器创建隐藏共享文件夹
(2)测试共享文件夹的“读取”权限
1)选择SH-Cli1计算机,以“DL Accounting Managers Read”组成员AccountingManager用户登录。
2)连接到共享文件夹:\\SH-SVR1\HR Reports。
3)试图在“HR Reports”文件夹中创建一个文本文件。是否能够创建?为什么?
(3)测试共享文件夹的“完全控制”权限
1)选择SH-Cli1计算机,以“DL HR Personnel Full Control”组成员HRUser用户登录。
公文收发系统实验报告(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. 部分公文处理流程过于繁琐。
操作系统原理实验报告
操作系统原理实验报告一、实验目的操作系统是计算机系统中最为关键的软件之一,它负责管理和控制计算机的硬件和软件资源,为用户和应用程序提供一个方便、高效、稳定的运行环境。
本次实验的目的在于通过实际操作和观察,深入理解操作系统的核心原理和关键机制,包括进程管理、内存管理、文件系统管理、设备管理等方面,提高对操作系统的认识和应用能力。
二、实验环境本次实验使用的操作系统为 Windows 10 专业版,开发工具为Visual Studio 2019,编程语言为 C++。
三、实验内容及步骤(一)进程管理实验1、进程创建与终止编写程序,使用系统调用创建一个新的进程,并在新进程中执行特定的任务,如打印一段文本。
观察新进程的创建过程和资源分配情况。
编写程序,实现父进程等待子进程终止,并获取子进程的退出状态。
2、进程调度编写程序,模拟多个进程的并发执行,设置不同的优先级和时间片。
观察进程的调度顺序和执行时间,分析调度算法的效果。
(二)内存管理实验1、内存分配与释放编写程序,使用动态内存分配函数(如 malloc、new 等)申请一定大小的内存空间,并进行读写操作。
观察内存的分配和释放过程,检查是否存在内存泄漏。
2、内存分页与分段了解操作系统的内存分页和分段机制。
编写程序,模拟内存分页和分段的过程,展示地址转换和页面置换算法的效果。
(三)文件系统管理实验1、文件创建与读写编写程序,创建一个新文件,并向文件中写入一定的数据。
读取文件中的数据,并进行验证。
2、文件目录操作编写程序,实现对文件目录的创建、删除、遍历等操作。
观察文件目录的结构和变化。
(四)设备管理实验1、设备驱动程序了解设备驱动程序的基本概念和工作原理。
编写一个简单的设备驱动程序,实现对特定设备的控制和数据传输。
2、设备中断处理模拟设备中断的产生和处理过程。
编写中断处理程序,处理设备中断事件。
四、实验结果与分析(一)进程管理实验结果与分析1、进程创建与终止成功创建了新进程,并在新进程中打印出指定的文本。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
昆明理工大学信息工程与自动化学院学生实验报告(2012 —2013 学年第二学期)课程名称:操作系统开课实验室:年月日一、实验目的用C或C++语言编写和调试一个简单的文件系统,模拟文件管理的基本功能。
从而对各种文件操作命令的实质内容和执行过程有比较深入的了解。
二、实验原理及基本技术路线图(方框原理图)用C模拟实现文件系统的管理;要求设计一个多级目录结构的文件系统,能正确描述文件控制块,采用合理的外存分配方式,能实现基本的目录及文件的操作,包括创建、删除、重命名、复制、移动等功能,并对文件有一定的存取权限控制。
文件通常存放在外存(如磁盘、磁带)上,可以作为一个独立单位存放和实施相应的操作(如打开、关闭、读、写等)。
为了加快对文件的检索,往往将文件控制块集中在一起进行管理。
这种文件控制块的有序集合称为文件目录。
文件控制块就是其中的目录项。
下图示例一种目录的组织形式。
模拟一个文件系统,包括目录文件,普通文件,并实现对它们的一些基本操作。
假定每个目录文件最多只能占用一个块;一个目录项包括文件名(下一级目录名),文件类型,文件长度,指向文件内容(下一级目录)的指针内容。
普通文件可以只用目录项(FCB)代表。
三、所用仪器、材料(设备名称、型号、规格等)。
计算机一台四、实验方法、步骤//利用交互式命令实现树型目录结构和文件管理,同时利用位示图表示外存的分配情况,新建文件时分配必要的空间,模拟文件分配表记录文件在外存上的存储方式。
了解系统对文件的操作。
//在文件中保存目录内容,创建文件或子目录可以用命令行命令:MD、CD、RD、MK(创建文件)、DEL(删除文件)和DIR#include<iostream>#include<stdlib.h>#include<time.h>#include <locale.h>using namespace std;#define beginsize 5#define LENGTH 3typedef struct{i nt data[LENGTH];}Indireone;typedef struct{I ndireone * first[LENGTH];}Indiretwo;typedef struct{I ndiretwo * second[LENGTH]; }Indirethree;typedef struct Node{i nt begin[beginsize];I ndireone * one;I ndiretwo * two;I ndirethree * three;}Mixtab;typedef struct NODE{c har name[50];i nt type;//是文件还是目录i nt size;//如果是文件给出大小s truct NODE *next;//兄弟结点s truct NODE * sub;//子节点s truct NODE * father;//父亲节点M ixtab * table;}FCB;//文件控制块FCB * root;FCB * present;FCB * finding;char stringname[300];int Bitmap[16][16];//位示图int leftbit=0;void Initall(){i nt i,j;s rand( time(NULL) );f or(i=0;i<16;i++){//初始化位示图for(j=0;j<16;j++){Bitmap[i][j]=rand()%2;}}r oot=(FCB *)malloc(sizeof(FCB)); s trcpy(root->name,"\\");r oot->type=0;r oot->size=0;r oot->next=NULL;r oot->father=root;r oot->sub=NULL;f or(i=0;i<16;i++){for(j=0;j<16;j++){if(Bitmap[i][j]==0){leftbit++;}}}}//判断分配外存时候是不是足够int Judgeenough(int n){i f(leftbit>=n)return 1;e lse return 0;}//添加时候用void Addpoint(FCB * f){F CB * temp;i f(present->sub==NULL){present->sub=f;}e lse{temp=present->sub;while(temp->next!=NULL){temp=temp->next;}temp->next=f;f->next=NULL;}}//删除时候用void Delpoint(FCB *f){F CB * temp=present->sub;i f(temp==f){present->sub=temp->next;delete(f);}e lse{while(temp->next!=f){temp=temp->next;}temp->next=f->next;delete(f);}}//查找是不是已经存在int Isexist(char ary[],int x){F CB * temp;i f(present->sub==NULL){return 0;}e lse{temp=present->sub;while(temp!=NULL){if((!strcmp(temp->name,ary))&&(temp->type==x)){finding=temp;return 1;}temp=temp->next;}return 0;}}void Mdlist(){c har listname[50];c in>>listname;F CB * temp;i f(Isexist(listname,0)){cout<<"子目录或文件"<<listname<<"已存在。
"<<endl; }e lse{temp=(FCB *)malloc(sizeof (FCB));temp->father=present;strcpy(temp->name,listname);temp->next=NULL;temp->sub=NULL;temp->type=0;temp->size=0;Addpoint(temp);}}//创建文件void Mkfile(){//处理二级时候有错误c har listname[50];i nt length,i,j,k,leg=0;F CB * temp;i f(getchar()=='\n'){length=0;}e lse{cin>>length;}i f(Isexist(listname,1)){cout<<"子目录或文件"<<listname<<"已存在。
"<<endl; }e lse if(Judgeenough(length)==0){cout<<"外存不够。
"<<endl;}e lse{temp=(FCB *)malloc(sizeof (FCB));temp->father=present;strcpy(temp->name,listname);temp->next=NULL;temp->sub=NULL;temp->type=1;temp->size=length;Addpoint(temp);if(length!=0){leftbit=leftbit-length;Mixtab * m=(Mixtab *)malloc(sizeof (Mixtab));for (k=0;k<beginsize;k++){m->begin[k]=-1;}m->one=NULL;m->two=NULL;m->three=NULL;if(length<=beginsize){//直接地址够用时候for(k=0;k<length;k++){//for(i=0;i<16;i++){for(j=0;j<16;j++){if(Bitmap[i][j]==0){m->begin[k]=i*16+j;Bitmap[i][j]=1;leg=1;break;}}if(leg==1){leg=0;break;}}}}//if(length<=beginsize)else if(length<=(beginsize+LENGTH)){//用一级索引的时候for(k=0;k<beginsize;k++){//直接的存储上for(i=0;i<16;i++){for(j=0;j<16;j++){if(Bitmap[i][j]==0){m->begin[k]=i*16+j;Bitmap[i][j]=1;leg=1;break;}}if(leg==1)leg=0;break;}}}leg=0;Indireone * tempone=(Indireone *)malloc(sizeof (Indireone)); for (k=0;k<LENGTH;k++){tempone->data[k]=-1;}for(k=0;k<(length-beginsize);k++){//一级索引分配for(i=0;i<16;i++){for(j=0;j<16;j++){if(Bitmap[i][j]==0){tempone->data[k]=i*16+j;Bitmap[i][j]=1;leg=1;break;}}if(leg==1)leg=0;break;}}}m->one=tempone;}//else if(length<=(beginsize+LENGTH))else if(length<=(beginsize+LENGTH+LENGTH*LENGTH)) {//当用二级索引时候for(k=0;k<beginsize;k++){//直接的存储上for(i=0;i<16;i++){for(j=0;j<16;j++){if(Bitmap[i][j]==0){m->begin[k]=i*16+j;Bitmap[i][j]=1;leg=1;break;}}if(leg==1){leg=0;break;}}}leg=0;Indireone * tempone=(Indireone *)malloc(sizeof (Indireone)); for(k=0;k<LENGTH;k++){//一级索引分配for(i=0;i<16;i++){for(j=0;j<16;j++){if(Bitmap[i][j]==0){tempone->data[k]=i*16+j;Bitmap[i][j]=1;leg=1;break;}}if(leg==1){leg=0;break;}}}m->one=tempone;leg=0;Indiretwo * temptwo=(Indiretwo *)malloc(sizeof (Indiretwo)); int twostep=(length-beginsize-LENGTH)/LENGTH;for(k=0;k<LENGTH;k++){temptwo->first[k]=NULL;}if(twostep==0){ //当只有一层时候Indireone * tone=(Indireone *)malloc(sizeof (Indireone));for (k=0;k<LENGTH;k++){tone->data[k]=-1;}for(k=0;k<(length-beginsize-LENGTH);k++){for(i=0;i<16;i++){for(j=0;j<16;j++){if(Bitmap[i][j]==0){tone->data[k]=i*16+j;Bitmap[i][j]=1;leg=1;break;}}if(leg==1){leg=0;break;}}}temptwo->first[twostep]=tone;}else{//当有多层时候leg=0;for(int n=0;n<twostep;n++){//对整层分配Indireone * tone=(Indireone *)malloc(sizeof (Indireone));for(k=0;k<LENGTH;k++){for(i=0;i<16;i++){for(j=0;j<16;j++){if(Bitmap[i][j]==0){tone->data[k]=i*16+j;Bitmap[i][j]=1;leg=1;break;}}if(leg==1){leg=0;break;}}temptwo->first[n]=tone;}}leg=0;//分配散的Indireone * teone=(Indireone *)malloc(sizeof (Indireone));for (k=0;k<LENGTH;k++){teone->data[k]=-1;}for(k=0;k<(length-beginsize-LENGTH-twostep*LENGTH);k++) {for(i=0;i<16;i++){for(j=0;j<16;j++){if(Bitmap[i][j]==0){teone->data[k]=i*16+j;Bitmap[i][j]=1;leg=1;break;}}if(leg==1){leg=0;break;}}}temptwo->first[twostep]=teone;}m->two=temptwo;}//else if(length<=(beginsize+LENGTH+LENGTH*LENGTH))temp->table=m;}//if(length!=0)else{temp->table=NULL;}}}//void Showtime(){s etlocale(LC_TIME,"");time_t TIME;struct tm *TM;char ch1[81];time(&TIME);TM=gmtime(&TIME);strftime(ch1,80,"%x",TM);cout<<ch1;}//查找* ?int Searchar(char ch,char array[]) {f or(int i=0;i<strlen(array);i++){if(ch==array[i]){return i;}}r eturn -1;}//*时候查找a在b中是不是存在int Searchstring(char a[],char b[]) {i nt j,i,t;i f(strlen(a)>strlen(b))return -1;e lse{for(i=0;i<=(strlen(b)-strlen(a));i++){t=i;for(j=0;j<strlen(a);j++){if(b[t]!=a[j])break;else t++;}if(j==(strlen(a)))return i;}}r eturn -1;}//void Dir1(FCB * f,int listnum,int filenum,int allsize) {F CB * temp,* temp2;i f(f->sub!=NULL){temp=f->sub;Showtime();if(temp->type==0){cout<<"\t<DIR>\t\t"<<temp->name<<endl;listnum++;}else{cout<<"\t\t "<<temp->size<<"\t"<<temp->name<<endl;filenum++;allsize+=temp->size;}if(temp->next!=NULL){temp2=temp->next;while(temp2!=NULL){Showtime();if(temp2->type==0){cout<<"\t<DIR>\t\t"<<temp2->name<<endl;listnum++;}else{cout<<"\t\t "<<temp2->size<<"\t"<<temp2->name<<endl;filenum++;allsize+=temp2->size;}temp2=temp2->next;}}}e lse{cout<<"\t\t "<<f->size<<"\t"<<f->name<<endl;filenum++;allsize+=f->size;}c out<<"\t "<<filenum<<"个文件\t "<<allsize<<endl;c out<<"\t "<<listnum<<"个目录\t "<<leftbit<<"可用"<<endl; }//void Dirall(){i nt listnum=2;i nt filenum=0;i nt allsize=0;i nt i;c har filename[50];S howtime();c out<<"\t<DIR>"<<"\t\t."<<endl;S howtime();c out<<"\t<DIR>"<<"\t\t.."<<endl;i f(getchar()=='\n'){Dir1(present,listnum,filenum,allsize);}e lse{cin>>filename;if ((!strcmp(filename,"."))||(!strcmp(filename,"*"))){Dir1(present,listnum,filenum,allsize);}else if (!strcmp(filename,"..")){Dir1(present->father,listnum,filenum,allsize);}else{if(Isexist(filename,0)||Isexist(filename,1)){//处理单个// Dir1(finding,listnum,filenum,allsize);if(finding->type==0){cout<<"\t<DIR>\t\t"<<finding->name<<endl;listnum++;}else{cout<<"\t\t "<<finding->size<<"\t"<<finding->name<<endl;filenum++;allsize+=finding->size;}}////处理* ?的情况else if(Searchar('*',filename)!=-1){//当有*时候char tempfilename2[50];char tempfilename1[50];int place=Searchar('*',filename);if ((place>0)&&(place<(strlen(filename)-1))){//当*在中间时候for (i=0;i<=place-1;i++){//============================================tempfilename1[i]=filename[i];}for (i=place+1;i<strlen(filename);i++)//============================={tempfilename2[i-place-1]=filename[i];}}if(place==0){//当*在最开始时候for (i=place+1;i<strlen(filename);i++)//============================={tempfilename2[i-place-1]=filename[i];}}else if (place==(strlen(filename)-1)){//当*在最后时候for (i=0;i<=place-1;i++){//============================================tempfilename1[i]=filename[i];}}FCB * temp=present->sub;while(temp!=NULL){if (place==0){//if(Searchstring(tempfilename2,temp->name)!=-1){//找到时候if(temp->type==0){cout<<"\t<DIR>\t\t"<<temp->name<<endl;listnum++;}else{cout<<"\t\t "<<temp->size<<"\t"<<temp->name<<endl;filenum++;allsize+=temp->size;}}}else if(place==(strlen(filename)-1)){//if(Searchstring(tempfilename1,temp->name)!=-1){//if(temp->type==0){cout<<"\t<DIR>\t\t"<<temp->name<<endl;listnum++;}else{cout<<"\t\t "<<temp->size<<"\t"<<temp->name<<endl;filenum++;allsize+=temp->size;}}}else{int t1=Searchstring(tempfilename1,temp->name);int t2=Searchstring(tempfilename2,temp->name);if((Searchstring(tempfilename2,temp->name)!=-1)&&(Searchstring(tempfilename1,temp->name)!=-1)&&(t2>t1)){//if(temp->type==0){cout<<"\t<DIR>\t\t"<<temp->name<<endl;listnum++;}else{cout<<"\t\t "<<temp->size<<"\t"<<temp->name<<endl;filenum++;allsize+=temp->size;}}}temp=temp->next;}}else if(Searchar('?',filename)!=-1){//当有?时候int place=Searchar('?',filename);}cout<<"\t "<<filenum<<"个文件\t "<<allsize<<endl;cout<<"\t "<<listnum<<"个目录\t "<<leftbit<<"可用"<<endl;}}}//删除子目录void Delelist(){c har listname[50];c in>>listname;i f(Isexist(listname,0)==0){cout<<"系统找不到指定的文件。