ImageVerifierCode 换一换
格式:DOC , 页数:35 ,大小:363.50KB ,
资源ID:152866      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/152866.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(操作系统实验三--文件管理.doc)为本站会员(b****1)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

操作系统实验三--文件管理.doc

1、 . .计算机操作系统课程实验报告题目文件管理 学 院:计算机学院专 业:计算机科学与技术姓名班级学号2016年 12月22日实验三 文件管理1.实验目的:编写一个简单的二级文件系统实现程序,加深对文件系统的内部功能和内部实现的理解。要求模拟采用二级目录结构的磁盘文件系统的文件操作能实现相应的命令,用输入命令来模拟用户程序中调用的文件操作。2.实验内容:最基本的文件操作 (1)创建文件 在创建一个新文件时,系统首先要为新文件分配必要的外存空间,并在文件系统的目录中,为之建立一个目录项。目录项中应该记录新文件的文件名及其在外存的地址等属性。 (2)删除文件 当已不再需要某文件时,可将它从文件系统

2、中删除。在删除时,系统应该先从目录中找到要删除的文件的目录项,使之成为空项,然后回收该文件所占用的存储空间。 (3)读文件 在读一个文件时,须在相应的系统调用中给出文件名和应该读入的内存目标地址。此时,系统同样要查找目录,找到制定的目录项,从中得到被读文件在外存中的位置。在目录项中,还有一个指针用于对文件的读/写。 (4)写文件 在写一个文件时,须在相应的系统调用中给出该文件名及该文件在内存中的(源)地址。为此,也同样须先查找目录,找到指定文件的目录项,在利用目录中的写指针进行写操作。 (5)截断文件 如果一个文件的内容已经陈旧而需要全部更新文件的内容时,一种方法是将此文件删除,再重新创建一个

3、新文件。但如果文件名及其属性均无改变时,则可采取另一种所谓的截断文件的方法,此即将原有文件的长度设置为0,或说放弃原有的文件内容。 (6)设置文件的读/写位置 前述的文件读/写操作,都只提供了对文件顺序存取的手段,即每次都是从文件的始端读或写。设置文件读/写位置的操作,用于设置文件读/写指针的位置,以便每次读/写文件时,不是从其始端而是从所设置的位置开始操作。也正因如此,才能改顺序存取为随机存取。3.设计实现:1)流程图2)详细设计源代码#include #include #include #include #include #define MaxUser 100 /定义最多有100个用户#d

4、efine MaxDisk 512*1024 /定义磁盘空间大小#define commandAmount /对文件操作的指令数/存储空间管理有关结构体和变量char diskMaxDisk;/ 模拟512K的磁盘存储空间typedef struct distTable /磁盘块结构体int maxlength;int start;int useFlag;distTable *next;diskNode;diskNode *diskHead;typedef struct fileTable /文件快结构体char fileName10;int start; /文件在磁盘存储空间的起始地址int

5、 length; /文件内容长度int maxlength;/文件的最大长度char fileKind3;/文件的属性-读写方式struct tm *timeinfo;bool openFlag;/判断是否有进程打开了文件;int used = 0;/ 定义 MFD 目录中用已有的用户数/两级目录结构体typedef struct user_file_directory /用户文件目录文件 UFDfileTable *file;user_file_directory *next;UFD;typedef struct master_file_directory /主目录文件char userNa

6、me10;char password10;UFD *user;MFD;MFD userTableMaxUser;int userID = -1; /用户登录的 ID 号,值为-1 时表示没有用户登录/文件管理void fileCreate(); /创建文件void fileDelet(); /删除文件void fileWrite(); /写文件void fileRead();/读文件void fileRename(); /重命名文件void fileFind(); /查询文件void fileDir();/ 显示某一用户所有文件void fileClose(); /关闭已打开的文件void f

7、ileChange();/修改文件的读写方式int requestDist(int &stratPostion, int maxlength);/磁盘分配查询void initDisk();/初始化磁盘void freeDisk(int startPostion);/磁盘空间释放void diskShow();/显示磁盘使用情况void initFile();/用户管理void userCreate();int login();void userDelet();void userFind();/用户登陆主界面void webUser();/用户内部界面 void webFile();int m

8、ain()initDisk();initFile();webUser();return 0;void webUser()int i;while (1)printf(*n);printf(1.创建用户 2.登陆用户 n);printf(3.删除用户 4.查看用户n);printf(0.退出系统 n);printf(*n);printf(请输入操作号n);scanf(%d, &i);switch (i)case 0:exit(0); break;case 1:userCreate(); break;case 2:userID = login();if (userID != -1)webFile()

9、;break;case 3:userDelet(); break;case 4:userFind(); break;default:printf(您输入的命令有误,请重新选择n);system(pause);system(cls);break;void userCreate()char c;char userName10;int i;if (usedMaxUser)printf(请输入用户名:);for (i = 0; c = _getch(); i+)if (c = 13) break;elseuserNamei = c;printf(%c, c);userNamei = 0;for (i

10、= 0; iused; i+)if (!strcmp(userTablei.userName, userName)printf(n);printf(该用户名已存在,创建用户失败n);system(pause);system(cls);return;strcpy(userTableused.userName, userName);printf(n);printf(请输入密码:);for (i = 0; c = _getch(); i+)if (c = 13) break;elseuserTableused.passwordi = c;printf(*);userTableuserID.passw

11、ordi = 0;printf(n);printf(创建用户成功n);used+;system(pause);system(cls);elseprintf(创建用户失败,用户已达到上限n);system(pause);system(cls);fflush(stdin);int login()char name10, psw10;char c;int i, times;printf(请输入用户名:);for (i = 0; c = _getch(); i+)if (c = 13) break;elsenamei = c;printf(%c, c);namei = 0;for (i = 0; i

12、used; i+)if (!strcmp(userTablei.userName, name)break;if (i = used)printf(n 您输入的用户名不存在n);system(pause);system(cls);return -1;for (times = 0; times3; times+)memset(psw, 0, sizeof(psw);printf(n 请输入密码:);for (i = 0; c = _getch(); i+)if (c = 13) break;elsepswi = c;printf(*);printf(n);for (i = 0; iused; i+)if (!strcmp(psw, userTablei.password)printf(用户登录成功n);system(pause);system(cls);

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1