实验 文件管理二
文件管理实验报告
文件管理实验报告一、实验目的文件管理是操作系统的重要组成部分,本次实验的目的在于深入理解文件管理的基本概念和原理,掌握文件的存储、组织、检索和访问等操作,熟悉常见的文件系统结构和功能,提高对文件管理系统的实际操作能力和问题解决能力。
二、实验环境1、操作系统:Windows 102、开发工具:Microsoft Visual Studio 2019三、实验内容1、文件的创建、删除和重命名使用 C++或 Python 编程语言,通过系统调用或相关库函数实现文件的创建、删除和重命名操作。
观察文件在操作系统中的实际表现,如文件的出现和消失,文件名的更改等。
2、文件的读写操作实现对文本文件和二进制文件的读写操作,包括读取文件的全部内容、按行读取文件、向文件写入数据等。
分析不同读写模式(如只读、只写、读写等)对文件操作的影响。
3、文件属性的获取和修改获取文件的基本属性,如文件大小、创建时间、修改时间、访问权限等。
尝试修改文件的部分属性,如只读属性、隐藏属性等,观察修改后的效果。
4、文件目录的操作创建、删除和遍历目录。
实现文件在不同目录之间的移动和复制操作。
四、实验步骤1、文件的创建、删除和重命名以下是使用 Python 实现文件创建、删除和重命名的示例代码:```pythonimport os创建文件file_path ="exampletxt"with open(file_path, 'w') as f:fwrite("This is a test file")删除文件osremove(file_path)重命名文件new_file_path ="renamed_exampletxt"osrename(file_path, new_file_path)```运行代码后,可以在指定的目录中观察到文件的创建、删除和重命名操作的结果。
2、文件的读写操作读取文本文件的示例代码:```pythonfile_path ="text_filetxt"with open(file_path, 'r') as f:content = fread()print(content)```按行读取文本文件的示例代码:```pythonfile_path ="text_filetxt"with open(file_path, 'r') as f:for line in f:print(linestrip())```写入数据到文件的示例代码:```pythonfile_path ="outputtxt"with open(file_path, 'w') as f:fwrite("New data written to file")```分别运行上述代码,观察文件的读写结果。
模拟一个简单二级文件管理系统
模拟一个简单二级文件管理系统设计目的:通过具体的文件存储空间的管理、文件的物理结构、目录结构和文件操作的实现,加深对文件系统内部功能和实现过程的理解。
设计内容:模拟一个简单二级文件管理系统一、实验内容描述1 实验目标本实验的目的是通过一个简单多用户文件系统的设计,加深理解文件系统的内部功能及内部实现.2 实验要求为DOS系统设计一个简单的二级文件系统.要求做到以下几点:①可以实现下列命令:login 用户登录dir 列文件目录create 创建文件delete 删除文件open 打开文件close 关闭文件read 读文件write 写文件②列目录时要列出文件名、物理地址、保护码和文件长度.③源文件可以进行读写保护.二、程序主要内容1设计思路程序中要求每个用户在登陆后才可对其拥有的文件进行操作,用户对于其他用户的文件无操作权.文件操作包括浏览、创建、删除、打开、关闭、阅读、写入、修改模式.其他操作包括新建用户、帮助、用户登入、用户登出、退出系统.在程序文件夹下有个名为“file”的系统根目录,此目录下包括:一个名为“mfd”的文件,记录所有注册过的帐号及密码;用户文件,以用户名作为文件名,内容为其拥有的文件名及属性;一个名为“keiji”的文件夹.“keiji”文件夹中包括:“file.p”指针文件,记录所有已用的物理地址;一些以物理地址为名的文件,内容为文件内容.2 数据结构file结构体系统文件数据结构:fpaddrint,文件的物理地址、flengthint,文件长度、fmodeint,文件模式0.只读;1.可写;2.可读写;3.保护、fname[]char,文件名;filemode结构体文件状态数据结构:isopenint,文件当前状态,0.关闭;1.打开、modeint,文件模式0.只读;1.可写;2.可读写;3.初始化;user结构体用户信息数据结构:uname[]char,用户名、upassword[]char,用户密码;userfile结构体用户文件数据结构:uname[]char,用户名、ufile[]file,用户拥有的文件数组.代码:#include <stdio.h>#include <stdlib.h>#include <conio.h>#include <time.h>#include <string.h>#define MaxUser 100 //定义最大MDF主目录文件#define MaxDisk 512*1024 //模拟最大磁盘空间#define commandAmount 12 //对文件操作的指令数//存储空间管理有关结构体和变量char disk[MaxDisk]; //模拟512K的磁盘存储空间typedef struct distTable //磁盘块结构体{int maxlength;int start;int useFlag;distTable *next;}diskNode;diskNode *diskHead;struct fileTable //文件块结构体{char fileName[10];int strat; //文件在磁盘存储空间的起始地址int length; //文件内容长度int maxlength; //文件的最大长度char fileKind[3]; //文件的属性——读写方式struct tm *timeinfo;bool openFlag; //判断是否有进程打开了该文件//fileTable *next;};//两级目录结构体typedef struct user_file_directory //用户文件目录文件UFD {//char fileName[10];fileTable *file;user_file_directory *next;}UFD;//UFD *headFile;typedef struct master_file_directory //主文件目录MFD{char userName[10];char password[10];UFD *user;}MFD;MFD userTable[MaxUser];int used=0; //定义MFD目录中用已有的用户数//文件管理void fileCreate(char fileName[],int length,char fileKind[]); //创建文件void fileWrite(char fileName[]); //写文件void fileCat(char fileName[]); //读文件void fileRen(char fileName[],char rename[]); //重命名文件void fileFine(char fileName[]); //查询文件void fileDir(char UserName[]); //显示某一用户的所有文件void fileClose(char fileName[]); //关闭已打开的文件void fileDel(char fileName[]); //删除文件void chmod(char fileName[],char kind[]); //修改文件的读写方式int requestDist(int &startPostion,int maxLength); //磁盘分配查询void initDisk(); //初始化磁盘void freeDisk(int startPostion); //磁盘空间释放void diskShow(); //显示磁盘使用情况//用户管理void userCreate();int login();int userID=-1; //用户登录的ID号,值为-1时表示没有用户登录int main(){char order[commandAmount][10];strcpy(order[0],"create");strcpy(order[1],"rm");strcpy(order[2],"cat");strcpy(order[3],"write");strcpy(order[4],"fine");strcpy(order[5],"chmod");strcpy(order[6],"ren");strcpy(order[7],"dir");strcpy(order[8],"close");strcpy(order[9],"return");strcpy(order[10],"exit");strcpy(order[11],"df");charcommand[50],command_str1[10],command_str2[10],command_str3[5],command_str4[3];int i,k,j;int length;initDisk(); //初始化磁盘for(i=0;i<MaxUser;i++) //初始化用户UFD目录文件的头指针{userTable[i].user=(UFD *)malloc(sizeof(UFD));userTable[i].user->next=NULL;}while(1){printf("********************************************\n");printf(" 1、Creat user\n");printf(" 2、login\n");printf("********************************************\n");printf("Please chooce the function key:>");int choice;scanf("%d",&choice);if(choice==1) userCreate();else if(choice==2) userID=login();else printf("您的输入有误,请重新选择\n");while(userID!=-1){fflush(stdin);printf("———————————————————————————————————————\n");printf(" create-创建格式:create a1 1000 rw,将创建名为a1,长度为1000字节可读可写的文件\n");printf(" rm-删除格式:rm a1,将删除名为a1的文件\n");printf(" cat-查看文件内容格式:cat a1,显示a1的内容\n");printf(" write-写入格式:write a1\n");printf(" fine-查询格式:fine a1 ,将显示文件a1的属性\n");printf(" chmod-修改格式:chmod a1 r,将文件a1的权限改为只读方式\n");printf(" ren-重命名格式:ren a1 b1 ,将a1改名为b1\n");printf(" dir-显示文件格式:dir aaa,将显示aaa用户的所有文件\n");printf(" df-显示磁盘空间使用情况格式:df\n");printf(" close-关闭文件格式:close a1,将关闭文件a1\n");printf(" return-退出用户,返回登录界面\n");printf(" exit-退出程序\n");printf("————————————————————————————————————————\n");printf("please imput your command:>");gets(command);int select;for(i=0;command[i]!=' '&&command[i]!='\0';i++) //command_str1字符串存储命令的操作类型command_str1[i]=command[i];k=i;command_str1[k]='\0';for(i=0;i<commandAmount;i++){if(!strcmp(command_str1,order[i])){select=i;break;}}if(i==commandAmount){printf("您输入的命令有误,请重新输入\n");continue;}for(i=k+1,k=0;command[i]!=' '&&command[i]!='\0';i++,k++) //commmand_str2字符串存储文件名或用户名command_str2[k]=command[i];command_str2[k]='\0';k=i;switch(select){case 0:for(i=k+1,k=0;command[i]!=' ';i++,k++)command_str3[k]=command[i];command_str3[k]='\0';k=i;j=1;length=0; //初始化文件长度for(i=strlen(command_str3)-1;i>=0;i--) //把字符串转换为十进制{length+=(command_str3[i]-48)*j;j*=10;}for(i=k+1,k=0;command[i]!=' '&&command[i]!='\0';i++,k++)command_str4[k]=command[i];command_str4[k]='\0';fileCreate(command_str2,length,command_str4);break;case 1:fileDel(command_str2);break;case 2:fileCat(command_str2);break;case 3:fileWrite(command_str2);break;case 4:fileFine(command_str2);break;case 5:for(i=k+1,k=0;command[i]!=' '&&command[i]!='\0';i++,k++)command_str3[k]=command[i];command_str3[k]='\0';chmod(command_str2,command_str3);break;case 6:for(i=k+1,k=0;command[i]!='\0';i++,k++)command_str3[k]=command[i];command_str3[k]='\0';fileRen(command_str2,command_str3);break;case 7:fileDir(command_str2);break;case 8:fileClose(command_str2);break;case 9:UFD *p;for(p=userTable[userID].user->next;p!=NULL;p=p->next) //退出用户之前关闭所有打的文件if(p->file->openFlag)p->file->openFlag=false;system("cls");userID=-1;break;case 10:exit(0);break;case 11:diskShow();break;}}}return 0;}void userCreate(){char c;char userName[10];int i;if(used<MaxUser){printf("请输入用户名:");for(i=0;c=getch();i++){if(c==13) break;elseuserName[i]=c;printf("%c",c);}userName[i]='\0';for(i=0;i<used;i++){if(!strcmp(userTable[i].userName,userName)){printf("\n");printf("该用户名已存在,创建用户失败\n");system("pause");return;}}strcpy(userTable[used].userName,userName);printf("\n");printf("请输入密码:");for(i=0;c=getch();i++){if(c==13) break;elseuserTable[used].password[i]=c;printf("*");}userTable[userID].password[i]='\0';printf("\n");printf("创建用户成功\n");used++;system("pause");}else{printf("创建用户失败,用户已达到上限\n");system("pause");}fflush(stdin);}int login(){char name[10],psw[10];char c;int i,times;printf("请输入用户名:");for(i=0;c=getch();i++){if(c==13) break;elsename[i]=c;printf("%c",c);}name[i]='\0';for(i=0;i<used;i++){if(!strcmp(userTable[i].userName,name))break;}if(i==used){printf("\n您输入的用户名不存在\n");system("pause");return -1;}for(times=0;times<3;times++){memset(psw,'\0',sizeof(psw));printf("\n请输入密码:");for(i=0;c=getch();i++){if(c==13) break;elsepsw[i]=c;printf("*");}printf("\n");for(i=0;i<used;i++){if(!strcmp(psw,userTable[i].password)){printf("用户登录成功\n");system("pause");break;}}if(i==used){printf("您输入的密码错误,您还有%d次输入机会\n",2-times);if(times==2) exit(0);}else break;}fflush(stdin);return i;}void initDisk(){diskHead=(diskNode *)malloc(sizeof(diskNode));diskHead->maxlength=MaxDisk;diskHead->useFlag=0;diskHead->start=0;diskHead->next=NULL;}int requestDist(int &startPostion,int maxLength){int flag=0; //标记是否分配成功diskNode *p,*q,*temp;p=diskHead;while(p){if(p->useFlag==0&&p->maxlength>maxLength){startPostion=p->start;q=(diskNode *)malloc(sizeof(diskNode));q->start=p->start;q->maxlength=maxLength;q->useFlag=1;q->next=NULL;diskHead->start=p->start+maxLength;diskHead->maxlength=p->maxlength-maxLength;flag=1;temp=p;if(diskHead->next==NULL) diskHead->next=q;else{while(temp->next) temp=temp->next;temp->next=q;}break;}p=p->next;}return flag;}void fileCreate(char fileName[],int length,char fileKind[]){//int i,j;time_t rawtime;int startPos;UFD *fileNode,*p;for(p=userTable[userID].user->next;p!=NULL;p=p->next){if(!strcmp(p->file->fileName,fileName)){printf("文件重名,创建文件失败\n");system("pause");return;}}if(requestDist(startPos,length)){fileNode=(UFD *)malloc(sizeof(UFD));fileNode->file=(fileTable *)malloc(sizeof(fileTable)); //这一步必不可少,因为fileNode里面的指针也需要申请地址,否则fileNode->file指向会出错strcpy(fileNode->file->fileName,fileName);strcpy(fileNode->file->fileKind,fileKind);fileNode->file->maxlength=length;fileNode->file->strat=startPos;fileNode->file->openFlag=false;time(&rawtime);fileNode->file->timeinfo=localtime(&rawtime);fileNode->next=NULL;if(userTable[userID].user->next==NULL)userTable[userID].user->next=fileNode;else{p=userTable[userID].user->next;while(p->next) p=p->next;p->next=fileNode;}printf("创建文件成功\n");system("pause");}{printf("磁盘空间已满或所创建文件超出磁盘空闲容量,磁盘空间分配失败\n");system("pause");}}void freeDisk(int startPostion){diskNode *p;for(p=diskHead;p!=NULL;p=p->next){if(p->start==startPostion)break;}p->useFlag=false;}void fileDel(char fileName[]){UFD *p,*q,*temp;q=userTable[userID].user;p=q->next;while(p){if(!strcmp(p->file->fileName,fileName)) break;else{p=p->next;q=q->next;}}if(p){if(p->file->openFlag!=true) //先判断是否有进程打开该文件{temp=p;q->next=p->next;freeDisk(temp->file->strat); //磁盘空间回收free(temp);printf("文件删除成功\n");system("pause");}elseprintf("该文件已被进程打开,删除失败\n");system("pause");}}else{printf("没有找到该文件,请检查输入的文件名是否正确\n");system("pause");}}void fileCat(char fileName[]){int startPos,length;int k=0;UFD *p,*q;q=userTable[userID].user;for(p=q->next;p!=NULL;p=p->next){if(!strcmp(p->file->fileName,fileName))break;}if(p){startPos=p->file->strat;length=p->file->length;p->file->openFlag=true; //文件打开标记printf("*****************************************************\n");for(int i=startPos;k<length;i++,k++){if(i%50==0) printf("\n"); //一行大于50个字符换行printf("%c",disk[i]);}printf("\n\n*****************************************************\n");printf("%s已被read进程打开,请用close命令将其关闭\n",p->file->fileName);system("pause");}else{printf("没有找到该文件,请检查输入的文件名是否正确\n");system("pause");}}void fileWrite(char fileName[]){UFD *p,*q;q=userTable[userID].user;int i,k,startPos;for(p=q->next;p!=NULL;p=p->next){if(!strcmp(p->file->fileName,fileName))break;}if(p){if(!strcmp(p->file->fileKind,"r")) //判断文件类型{printf("该文件是只读文件,写入失败\n");system("pause");return;}char str[500];printf("please input content:\n");gets(str);startPos=p->file->strat;p->file->openFlag=true; //文件打开标记p->file->length=strlen(str);if(p->file->length>p->file->maxlength){printf("写入字符串长度大于该文件的总长度,写入失败\n");system("pause");return;}for(i=startPos,k=0;k<(int)strlen(str);i++,k++)disk[i]=str[k];printf("文件写入成功,请用close命令将该文件关闭\n");system("pause");}else{printf("没有找到该文件,请检查输入的文件名是否正确\n");system("pause");}}void fileFine(char fileName[])UFD *p,*q;q=userTable[userID].user;for(p=q->next;p!=NULL;p=p->next){if(!strcmp(p->file->fileName,fileName))break;}if(p){printf("********************************************\n");printf("文件名:%s\n",p->file->fileName);printf("文件长度:%d\n",p->file->maxlength);printf("文件在存储空间的起始地址:%d\n",p->file->strat);printf("文件类型:%s\n",p->file->fileKind);printf("创建时间:%s\n",asctime(p->file->timeinfo));printf("********************************************\n");system("pause");}else{printf("没有找到该文件,请检查输入的文件名是否正确\n");system("pause");}}void chmod(char fileName[],char kind[]){UFD *p,*q;q=userTable[userID].user;for(p=q->next;p!=NULL;p=p->next){if(!strcmp(p->file->fileName,fileName))break;}if(p){strcpy(p->file->fileKind,kind);printf("修改文件类型成功\n");system("pause");}else{printf("没有找到该文件,请检查输入的文件名是否正确\n");system("pause");}}void fileRen(char fileName[],char name[]){UFD *p,*q;q=userTable[userID].user;for(p=q->next;p!=NULL;p=p->next){if(!strcmp(p->file->fileName,fileName))break;}if(p){while(q->next){if(!strcmp(q->next->file->fileName,name)){printf("您输入的文件名已存在,重命名失败\n");system("pause");return;}q=q->next;}strcpy(p->file->fileName,name);printf("重命名成功\n");system("pause");}else{printf("没有找到该文件,请检查输入的文件名是否正确\n");system("pause");}}void fileDir(char userName[]){UFD *p;int i,k;for(i=0;i<MaxUser;i++){if(!strcmp(userTable[i].userName,userName)){k=i;break;}}if(i==MaxUser){printf("没有找到该用户,请检查输入用户名是否正确\n");system("pause");return;}else{p=userTable[k].user->next;printf("************************************************************************* *******\n");printf("文件名文件长度文件在磁盘的起始地址文件类型创建时间\n");for(;p!=NULL;p=p->next)printf("%s %d %d %s %s",p->file->fileName, p->file->maxlength,p->file->strat,p->file->fileKind,asctime(p->file->timeinfo));printf("************************************************************************* *******\n");system("pause");}}void diskShow(){diskNode *p;int i=0,unusedDisk=0;printf("************************************************************************* **\n");printf(" 盘块号起始地址容量(bit) 是否已被使用\n");for(p=diskHead;p!=NULL;p=p->next,i++){if(p->useFlag==false) unusedDisk+=p->maxlength;printf(" %d %d %d %d \n",i,p->start,p->maxlength,p->useFlag);}printf("************************************************************************* **\n");printf("磁盘空间总容量:512*1024bit 已使用:%dbit 末使用:%dbit\n\n",MaxDisk-unusedDisk,unusedDisk);system("pause");}void fileClose(char fileName[]){UFD *p,*q;q=userTable[userID].user;for(p=q->next;p!=NULL;p=p->next){if(!strcmp(p->file->fileName,fileName))break;}if(p){p->file->openFlag=false;printf("%s文件已关闭\n",p->file->fileName);system("pause");}else{printf("没有找到该文件,请检查输入的文件名是否正确\n");system("pause");}}运行结果视图:。
实验室文件管理制度标准版(通用15篇)
实验室文件管理制度标准版(通用15篇)实验室文件管理制度标准版篇1试验室管理制度1、试验室是进行试验检测分析、保存试验仪器用具和出具试验资料的重要场所。
应保持严肃安静,非本试验人员未经许可,不得入内。
2、试验室内应保持清洁、整齐,按指定位置安放试验器具。
3、正确使用仪器,经常维护,不用时要及时切断电源。
4、对所委托试验项目要填写委托单,并按委托内容填写派工单交相关组室进行试验检测。
5、为保证试验结论准确,数据真实。
试验人员必须排除各种干挠,做到实事求是。
6、试验原始记录应做到详细、整洁,并用钢笔填写及签名。
7、试验检测报告须经主任签字,加盖公章后方可有效。
8、试验委托单、派工单、原始记录和试验报告一并归档保存。
9、仪器与设备应明确责任人,注意维护保养。
10、为满足用户的要求,既有明确分工,同时又相互配合,使其准确及时。
检验工作管理制度1.检验人员必须经过专业技术培训,通过本公司考核持证上岗。
2.工作时应不少于2人(持证上岗),整个过程应独立完成。
3.检验人员应严格按照各检验项目的国家标准和本公司制定的仪器操作规程和检验实施细则进行,做好完整记录,不得弄虚作假。
4.检测室内的设备、安全、卫生等应由检测室内部专人管理。
5.非本公司人员不经允许不得擅自进入检测室。
6.当仪器设备处于工作状态时,检验人员不得离开,检验人员离开检测室时,照明电及门窗等要关好。
7.在检测室内不得做与检验工作无关的事。
仪器设备管理制度1.购置仪器设备,均由检测室负责人提出书面申请,由技术负责人申核,报经理批准,由供应部统一办理。
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. 文件夹创建与删除:实验成功创建和删除了文件夹,验证了文件管理的可行性。
实验二 文件及文件夹管理(网络191第5组)(1)
指导教师意见
签名:年 月 日
ቤተ መጻሕፍቲ ባይዱ图2-1复制
图2-2粘贴
图2-3重命名
3.在考生文件夹下SORRY文件夹中新建一个文件夹WINBJ。
图3-1新建文件夹
图3-2重命名
4.将考生文件夹下WORD2文件夹中的文件A-EXCEL.MAP删除。
图4 删除
5.将考生文件夹下STORY文件夹中的文件夹ENGLISH重命名为CHUN。
图5 重命名
方法二:打开开始找到控制面板,然后在控制面板中找到文件夹选项,单击查看选项,在查看选项中的高级设置里找到隐藏文件或文件夹。
实验总结
写明实验中遇到的问题,解决的方法,学到的知识。不少于150字。
一:遇到的问题:操作的不流畅,小组意见交流的欠缺。
二:解决的方法:多练习,带动小组积极参与进来,有问题提出来大家一起探讨解决,小组探讨不出来的通过询问老师解决,也可以通过上网查询方法。
2019年11月8日
实验目的
1.掌握文件夹、文件的概念以及文件的各种操作方法。
2.理解文件夹、文件的概念并掌握文件文件夹搜索、新建、更名、删除、恢复等等资源管理器的操作。
实验内容
1.将考生文件夹下COFF\JIN文件夹中的文件MONEY.TXT设置成隐藏和只读属性。
图1-1设置成隐藏和只读属性
2.将考生文件夹下DOSION文件夹中的文件HDLS.SEL复制到同一文件夹中,文件命名为AEUT.SEL。
图6 完成效果
思考题
1.如果想恢复刚才删除的文件,应当如何处理?
一:双击打开电脑桌面上的“回收站”程序。
大学信息技术基础——实验2 Windows文件管理
实验2W i n d o w s文件管理1 文件的查看2 文件的复制、删除3 设置开始菜单4 建立桌面快捷方式打开资源管理器,执行如下操作:1.⑴在D盘上建立文件夹,名称为自己的姓名,在下面建立子文件夹“图片”和“文档”⑵用写字板编辑文件,内容为李白的《静夜思》,以文件名《静夜思》保存在文档文件夹中⑶在图片文件夹中新建位图图像《我的图画》,打开此文件进行编辑2.打开WINNT(98系统下windows)文件夹,以详细资料的方式察看文件夹和文件的属性,按名称、类型、大小、日期四种不同的顺序排列图标,观察其排列结果3.选定WINNT文件夹下所有的BMP类型图片文件,将其复制到d盘自己所建的图片文件夹下,以缩略图的方式察看文件4.选定《静夜思》和《我的图画》,将其删除,将文件《静夜思》从回收站恢复,将文件《我的图画》从回收站彻底清除。
5.将文件《静夜思》移动到C盘的根目录下,将其改名为《李白的诗》6.查找C盘上所有创建日期在2004/1/1至2004/10/20之间的扩展名为txt的文件,将查询到的所有文件复制到D盘自己所建的文件夹下。
7.察看《李白的诗》的属性,将其设为只读和隐藏属性。
设置工具菜单下的文件夹选项,将其设为显示所有文件,观察《李白的诗》的图标;设置工具菜单下的文件夹选项,将其设为不显示隐藏的文件和文件夹,观察《李白的诗》的图标。
8.察看D盘的属性,了解其已用磁盘空间和所剩磁盘空间,对其作磁盘清理和磁盘整理。
9.对软盘进行快速格式化。
1.打开资源管理器,执行如下操作:⑴在D盘上建立文件夹,名称为自己的姓名⑵用写字板编辑文件,内容为李白的《静夜思》,以文件名《静夜思》保存在刚建立的文件夹中⑶在刚建立的文件夹中新建位图图像《我的图画》,打开此文件进行编辑㈠在开始菜单上按右键,在快捷菜单中选择资源管理器;或选择开始——程序——附件——windows资源管理器,打开资源管理器。
㈡在资源管理器窗口左边的文件夹窗口选择D盘,选择文件——新建——文件夹在右边文件列表窗口出现新建文件夹的图标,在文本高亮处输入自己的姓名,按回车即可确认输入。
2023年最新的操作系统文件管理实验报告三篇
2023年最新的操作系统文件管理实验报告三篇操作系统文件管理实验报告一篇一、实训主要内容Word排版,表格制作与编辑。
Powerpoint的制作,初步认识计算机办公应用OFFICE。
二、实训过程第一天:初步熟悉计算机的性能和认识Word;第二天:练习Word题;第三天:认识Powerpoint并对昨天的Word练习予以测试;Excel实训作业第四天:将Word表格与Powerpoint的制作熟悉巩固;第五天:老师再次对我们Word与Powerpoint测验以及教我们一些有用的技能与方法,初步认识计算机办公应用。
OFFICE。
三、实训心得体会很快的,一个假期又过来了,面对本学期最后一次的校园生活实训,想着刚刚过去的最后一个周,紧张沉默之后更多的是感慨,印在脑海里的每一个足迹都是那么的深,真的说不出是什么感觉,伴着时间,就像是在和自己的影子赛跑,不可能从真实的两面去看清它,只是经意不经意的感受着有种东西在过去,也许更适合的只有那句话:时不待我,怎可驻足一周,短短的一周,我学到了很多不知道的东西,实在是感受颇深。
当今企业竞争范围的伴随社会市场经济的发展以及信息化程度的不断提高而日益扩大,这样就要求企业在各个方面加强管理,要求企业有更高的信息化集成来实现对企业的整体资源进行集成管理。
现代企业都意识到,企业之间的竞争是综合实力的竞争,要求企业有更强的资金实力,具备强有力的管理能力和更快的市场响应速度。
因此,引入计算机系统的意义是非常重大的。
在社会主义市场经济高速发展的今天,如果计算机的各项管理运做仍然停滞在以纸、笔为主要工具的阶段,就会因为信息量的快速增长而无法迅速、准确的运用计算机完成各项工作,这样,必将成为企业各方面发展的一个瓶颈。
而在当代这个以信息时代为主题的社会里,计算机技术高速发展,将信息技术应用于对现代企业的管理日益普及。
计算机技术不但可以提高信息的处理速度和提高信息处理的准确性,更重要的是,可以进一步的解放劳动力,将他们分配到更需要人力资源的岗位上去,从而加快社会工作的现代化、综合化的发展步伐。
文件管理实验报告
{char name[3]; /*文件或目录名*/
char type[2]; /*文件类型名*/
char attribute; /*属性*/ // 0表示文件,1表示目录.
char address; /*文件或目录的起始盘块号*/
char length; /*文件长度,以盘块为单位*/
q=p;
if (q->l ->name[0] ==[0]&&q->l ->name[1] ==[1]&&q->l ->name[2] ==[2])//判断文件名与当前目录中的相同名
{return q->l->address ;//若找到则返回此文件的磁块号}
else printf(" <FILE>\n");
q=q->l;//指针指向下一结点
while(q->r!=0)
{printf("%s",q->r->name);
if (q->r->attribute ==1) printf(" <DIR>\n");//判断是文件还是目录
else printf(" <FILE>\n");
二.实验原理
文件通常存放在外存(如磁盘、磁带)上,可以作为一个独立单位存放和实施相应的操作(如打开、关闭、读、写等)。为了加快对文件的检索,往往将文件控制块集中在一起进行管理。这种文件控制块的有序集合称为文件目录。文件控制块就是其中的目录项。图6-1示例一种目录的组织形式。
三.实验内容
模拟一个文件系统,包括目录文件,普通文件,并实现对它们的一些基本操作。假定每个目录文件最多只能占用一个块;一个目录项包括文件名(下一级目录名),文件类型,文件长度,指向文件内容(下一级目录)的指针内容。普通文件可以只用目录项(FCB)代表。
文件管理实验实验报告
一、实验目的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. 文件和文件夹的搜索与查找:实验中,我们通过文件管理器搜索功能,快速找到所需的文件和文件夹。
文件或文件夹管理实验报告
实验二:文件和文件夹的管理
一、实验目的:
通过本实验,掌握文件和文件夹的组织和管理。
二、实验任务:
文件/文件夹的建立、复制、移动、删除、重命名;更改文件或文件夹的属性。
三、实验过程
1.练习一
1)重命名练习:把文件README.txt改名为HELP.txt。
2)复制练习:把文件INDEX.idx复制到文件夹UCDOS下。
3)新建文件夹练习:在文件夹EXAM下建一个新文件夹BACKUP。
4)删除练习:删除文件BOOK.txt和文件COUNT.txt。
5)移动练习:把文件SORT.dbf移动到文件夹FOX1下。
6)更改文件属性:将文件PCDOS.txt的属性设为只读。
2.练习二
1)文件夹复制练习:将文件夹TSING复制到文件夹NETWORK下。
2)删除文件夹练习:删除文件夹CHINANET。
3)删除文件练习:删除文件。
4)文件重命名练习:将文件CSTNET.zky改名为ARPANET.zky。
5)新建文件练习:在文件夹CERNET下建一个名为NORMAL的文本文件,内容包含A~Z共26个大写英文字母。
6)文件属性练习:将文件CSTNET.zky的属性设置为隐藏。
四、实验小结。
文件管理实验报告
实验项目名称文件管理实验目的及要求一、实验目的:1、加深对文件,文件系统的理解;2、加深对目录,目录结构的理解;3、模拟有关文件操作的常用命令。
二、实验要求:1、编写程序完成实验内容;2、画出程序流程图;3、撰写实验报告。
实验内容1、为DOS系统设计一个简单的二级文件系统。
2、实现下列命令(至少两个)。
DELETE 删除文件CLOSE 关闭文件READ 读文件(显示出读的文件的内容)WRITE 写文件(对原文件改写或添加内容,并显示修改后的文件内容)实验原理一、文件文件是指由创建者所定义的、具有文件名的一组相关元素的集合,可分为有结构文件和无结构文件两种。
在有结构的文件中,文件由若干个相关记录组成;而无结构文件则被看成是一个字符流。
文件在文件系统中是一个最大的数据单位,它描述了一个对象集。
一个文件必须要有一个文件名,它通常是由一串ASCII码或(和)汉字构成的。
用户利用文件名来访问文件。
二、文件系统文件系统分为三个层次,其最底层是对象及其属性;中间层是对对象进行操纵和管理的软件集合;最高层是文件系统提供给用户的接口。
其模型如图5.1所示:图5.1文件系统模型1)对象及其属性文件管理系统管理的对象有:①文件。
它作为文件管理的直接对象。
②目录。
为了方便用户对文件的存取和检索,在文件系统中必须配置目录,每个目录项中,必须含有文件名及该文件所在的物理地址(或指针)。
对目录的组织和管理是方便用户和提高对文件存取速度的关键。
③磁盘(磁带)存储空间。
文件和目录必定占用存储空间,对这部分空间的有效管理,不仅能提高外存的利用率,而且能提高对文件的存取速度。
2)对对象操纵和管理的软件集合这是文件管理系统的核心部分。
文件系统的功能大多是在这一层实现的,其中包括: 对文件存储空间的管理、对文件目录的管理、用于将文件的逻辑地址转换为物理地址的机制、对文件读和写的管理,以及对文件的共享与保护等功能。
3)文件系统的接口为方便用户使用文件系统,文件系统通常向用户提供两种类型的接口:(1) 命令接口。
操作系统 实验报告 文件管理
昆明理工大学信息工程与自动化学院学生实验报告( 201 —201 学年第二学期)一、实验目的用C或C++语言编写和调试一个简单的文件系统,模拟文件管理的基本功能。
从而对各种文件操作命令的实质内容和执行过程有比较深入的了解。
二、实验原理及基本技术路线图(方框原理图)用C模拟实现文件系统的管理;要求设计一个多级目录结构的文件系统,能正确描述文件控制块,采用合理的外存分配方式,能实现基本的目录及文件的操作,包括创建、删除、重命名、复制、移动等功能,并对文件有一定的存取权限控制。
功能设计 :Help 显示命令帮助dir 显示当前目录下的文件和文件夹exit 退出系统create [文件名] 创建文本文件cdir [目录名] 创建文件夹read [文件名] 读取一个文件最多可同时读取五个close[文件名] 关闭一个文件edit [文件名] 编辑一个文件cd [目录名] 进子目录或者上级目录attr [文件名] 显示该文件的属性del [文件名] 删除文件rename [文件名] 重命名编辑功能流程图删除文件流程图创建文件流程图核心算法:bool Format(void); //格式化bool install(void); //装载虚拟硬盘的数据void login(void); /用户登陆void showMenu(void);//显示功能菜单bool onAction(void);//用户选择功能并执行void createFile(string str);//创建文件bool read(string str);//读取文件void editFile(string str);//编辑文件void Delete(string str);//删除一个文件数据结构:/*---------常变量------*/const unsigned int BLOCK_SIZE=512; //块长const unsigned int DATA_BLOCK_NUM=512; //数据块数量const unsigned int DINODE_START=4*BLOCK_SIZE; //inode起始位置const unsigned int DINODE_SIZE=512; //inode大小const unsigned int DINODE_NUM=32; //inode数量const unsigned int DATASTART=(2+DINODE_NUM)*BLOCK_SIZE; //数据区的开始地址const unsigned int ACCOUNT_NUM=10; //用户数量/*inode结构体*/struct inode{unsigned short di_tag; /*inode标识*/unsigned short di_number; /*关联文件数,当为0时表示删除文件,如一个目录至少包含两个文件:"."和".."*/unsigned short di_mode; /*存取模式:0为目录,1为文件*/unsigned short di_userID; /*当前inode所属用户 0为根目录ID,一次下去是管理员目录、用户目录*/unsigned short di_access; /*访问权限 0为不允许普通用户访问(公共目录),1为允许普通用户访问*/unsigned short di_size; /*文件大小,目录没有大小,值为0*/unsigned short di_ctime; /* 创建时间 */unsigned short di_mtime; /* 最后一次修改时间*/unsigned short di_block[DATA_BLOCK_NUM]; /* 数据块块地址编号 */ };/**超级块***/struct super_block{unsigned short s_inodes_count; /* 文件系统中inode的总数 */unsigned short s_blocks_count; /* 数据块总数 */unsigned short s_r_blocks_count; /* 保留块总数 */unsigned short s_free_blocks_count; // 空闲块总数unsigned short s_free_inodes_count; /* 空闲的inode总数 */unsigned short s_log_block_size; /* block 的大小 */ };/**账户信息**/struct user{unsigned short user_id; //用户IDunsigned short user_access; //权限string username; //用户名string password; //密码};/**文件/目录结构**/struct directory{string name; /*目录名*/unsigned short d_ino; /*目录号*/};三、所用仪器、材料(设备名称、型号、规格等)。
实验三 文件管理 (2)
实验三文件管理
专业:计算机科学与技术班级: 1班学号: 122 姓名:
实验地点:工A207 实验时间: 2012-11-23 指导教师:
一、实验目的
通过调试并运行一个简单的文件系统来模拟文件操作命令的执行、模拟文件管理,使学生对主要文件操作命令的实质和执行过程有比较深入的了解,掌握它们的基本实施方法。
二、实验环境
具备Windows或MS-DOS操作系统、带有Turbo Pascal 集成环境的PC机。
三、实验内容
一.阅读实验程序
文件管理模拟程序代码见【实验例程】。
二.编译实验例程
用Turbo Pascal 编译实验例程。
三.运行程序并对照实验源程序阅读理解实验中输入、输出的意义。
四、实验记录
1.实验目录
2.create
3.open
4.close
5.delete
6.driectory
User
main
五、思考题
1、该文件模拟系统目录结构的特点?
答:模拟二级目录结构的特点
2、该文件模拟系统支持几个用户?
答:最多5个用户
3、主文件目录、用户文件目录、活动文件目录的目录项有哪些?
答:主文件目录: user_name,file_number
用户文件目录:filename,protection code ,length
活动文件目录:
4、设置数据域pcode的目的是什么?请说明如何发挥它的作用?
答:用于访问控制。
5、描述文件管理主控程序的算法(流程图或N-S图)。
答:
六、实验小结
答:学习了模拟文件管理系统的二级系统结构,文件的建立查看等。
操作系统文件管理实验报告
操作系统实验报告实验名称:文件管理专业班级:网络工程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;/// <summary>/// 文件/// </summary>public class FileObject {public string filename;public int size=20;public int read=0;public int write = 0;public string author;}/// <summary>/// 文件系统用户/// </summary>public class FileUser {public string username;public List<FileObject> ufd = new List<FileObject>();public int filecount=0;}步骤详述:1、主目录及用户目录机构显示:2、当前操作用户登录:3、文件管理系统菜单:4、create命令:5、open命令:6、close命令:7、delete命令:8、read命令9、write命令10、exit命令四、实验总结通过这次的课程设计使我认识到要将操作系统这门计算机专业的课学好不仅仅是要把书上的基本知识学好而且还要不断进行实践,将所学的跟实践操作结合起来才能更好地巩固所学,才能提高自己实践能力.通过这次的设计使我认识到只停留在表面理解问题是很难使问题得到很好的解决的,实践能力与理论知识同样重要。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验六:文件系统一、目的要求1、用高级语言编写与调试一个简单的文件系统,模拟文件管理的工作过程。
从而对各种文件操作命令的实质内容与执行过程有比较深入的了解。
2、要求设计一个n个用户的文件系统,每次用户可保存m个文件,用户在一次运行中只能打开一个文件,对文件必须设置保护措施,且至少有Create、delete、open、close、read、write等命令。
二、例题:①设计一个10个用户的文件系统,每次用户可保存10个文件,一次运行用户可以打开5个文件。
②程序采用二级文件目录(即设置主目录[MFD])与用户文件目录(UED)。
另外,为打开文件设置了运行文件目录(AFD)。
③为了便于实现,对文件的读写作了简化,在执行读写命令时,只需改读写指针,并不进行实际的读写操作。
④算法与框图:a、因系统小,文件目录的检索使用了简单的线性搜索。
b、文件保护简单使用了三位保护码:允许读写执行、对应位为1,对应位为0,则表示不允许读写、执行。
c、程序中使用的主要设计结构如下:Ⅰ、主文件目录与用户文件目录( MFD、UFD)Ⅱ、打开文件目录( AFD)(即运行文件目录)三、调度算法的流程图四、文件管理源程序#include<stdio、h>#include<string、h>#include<malloc、h>#include<stdlib、h> typedef struct ufd{ char [10];/*文件名*/char procode[8];/*属性*/int length;/*文件长度*/struct ufd *nextfile;/*指向下一个文件*/}UFD;typedef struct mfd{ char username[10];/*用户名*/struct ufd *link;/*指向该用户的第一个文件*/}MFD;typedef struct protected_flag{ char code[4];}PRO;typedef struct afd/*运行文件目录*/{ char [10];/*打开文件名*/char procode[4];int rwpointer;/*读写指针*/}AFD;PRO flag[3]={"100",/*只读*/"110",/*读写*/"001"/*可执行*/};UFD *rw_pointer;/*读写指针*/AFD *afd=NULL;MFD [10];int num;/*当前用户个数*/void displayallfile(){ int i;UFD *p;for(i=0;i<num;i++){printf("用户:%s 目录如下!\n",[i]、username);p=[i]、link;while(p){ printf("\t文件名: %s\t||",p->);printf("文件属性: %s\t||",p->procode);printf("文件长度: %d\n\n",p->length);p=p->nextfile;}}}void input() /*建立用户文件系统*/{ int i,j;int length;char [10];char procode[4];UFD *p1,*p2,*first;for(i=0;i<10;i++)[i]、link=NULL;printf("用户号码:\n");scanf("%d",&num);for(i=0;i<num;i++)/*输入各用户名称*/{printf("输入第%d个用户名:\n",i+1);scanf("%s",[i]、username);}for(i=0;i<num;i++)/*输入某用户的文件数据*/{j=1;printf(" 第%d个用户的文件如下\n",i+1);printf("文件%d:\n",j);printf("长度:");scanf("%d",&length);if(!length)continue;printf("文件名:");scanf("%s",);printf("文件属性(100只读,110读写,001可执行)");scanf("%s",procode);first=(UFD*)malloc(sizeof(UFD));first->next;strcpy(first->);strcpy(first->procode,procode);first->length=length;p1=p2=first;j++;while(1){printf("文件%d:\n",j);printf("长度:");scanf("%d",&length);if(!length)break;printf("文件名:");scanf("%s",);printf("属性(100只读,110读写,001可执行):");scanf("%s",procode);p2=(UFD*)malloc(sizeof(UFD));p2->next;strcpy(p2->);strcpy(p2->procode,procode);p2->length=length;j++;p1->next;p1=p1->nextfile; }[i]、link=first; }displayallfile();}int findusername(char * username)/*返回用户名下标,当I=NUM时,用户不存在*/ { int i;i=0;while(i<num){if(!strcmp([i]、username ,username))break;i++;}return i;}UFD * find(char * *){UFD *k;k=;while(k&&strcmp(>))k=k->nextfile;return k;}void display *link){ UFD *p;p=link;if(!p){ printf("\n此目录没有该文件!");return;}printf("\n用户文件如下:\n");while(p){ printf("%s\t||",p->);printf("%s\t||",p->procode);printf("%d\n\n",p->length);p=p->nextfile;}}void createfile(){ char username[10];char [10];int i;UFD *p1,*p2,*newfile;if(num>=10)/*用户文件目录已满,创建文件失败*/{printf("用户文件目录已满\n创建文件失败!\n");return;}printf("输入用户名:\n");scanf("%s",username);i=findusername(username);/*返回用户名下标*/if(i==num)/*如果该用户不存在,且用户个数不小于10,先创建用户再建立用户文件*/{printf("用户不存在,请建立用户!\n");strcpy([num]、username ,username);/*创建用户目录*/num++;{newfile =(UFD *)malloc(sizeof(UFD));newfile->next;[num-1]、link=newfile;printf("文件名:");scanf("%s",[num-1]、link->);printf("\n属性:");scanf("%s",[num-1]、link->procode);printf("\n长度:");scanf("%d",&([num-1]、link->length));printf("\n文件已创建!\n");}}else/*为已存在的用户建立文件*/{p1=p2=[i]、link ;printf("输入文件名:");scanf("%s",);while(p2){ if (!strcmp(p2->)){ printf("文件名已存在,请输入新文件名!\n");scanf("%s",); }p1=p2;p2=p2->nextfile;}newfile=(UFD *)malloc(sizeof(UFD));newfile->next;strcpy(newfile->);printf("\n属性:");scanf("%s",newfile->procode);printf("\n长度:");scanf("%d",&(newfile->length));p1->nextprintf("\n文件已创建!\n");}displayallfile();}void displayuser()/*显示用户目录*/{int i;if(num<=0)return;printf("\n用户目录如下! ");for(i=0;i<num;i++);printf("\n%s",[i]、username);}void deletefile() /*删除文件*/{ int i;char username[10];char [10];UFD *p1,*p2;printf("\n输入用户名:\n");scanf("%s",username);i=findusername(username);//返回用户名下标if(i>=num){printf("用户不存在!\n删除失败!");return ;}else{ printf("\n输入文件名:");scanf("%s",);p1=p2=[i]、link;while(p2&&strcmp(p2->)){p1=p2;p2=p2->nextfile;}if(!p2)printf("\n文件不存在!\n删除失败!\n");else{ if(p1==p2)[i]、link=p1->nextfile;elsep1->next>nextfile;delete(p2);printf("文件已删除!\n");}}displayallfile();}AFD * openfile(){ char username[10];char [10];int i;UFD *p=NULL;AFD *k=NULL;/*为打开的文件设置了运行文件目录*/ printf("输入用户名:\n");scanf("%s",username);i=findusername(username);/*返回用户名下标*/if(i>=num){printf("\n用户不存在!\n不能打开文件!\n");return NULL;}else/*用户存在*/{printf("\n输入文件名:");scanf("%s",);p=find([i]、link);if(!p)/*用户文件不存在*/{printf("\n文件不存在!\n");return NULL;}else{afd=(AFD *)malloc(sizeof(AFD));strcpy(afd->>);strcpy(afd->procode,p->procode);afd->rwpointer=0;printf("\n文件已打开!\n");rw_pointer=p;/*为了读文件保留指针*/printf("\t文件目录AFD:\n"); /*打开运行文件目录AFD*/ printf("\t文件名: %s\n",afd->);printf("\t属性: %s\n",afd->procode);printf("\t读写指针: %d\n",afd->rwpointer); }}return afd; }void closefile(){ if(!afd){ printf("\n没有文件打开!\n");return; }delete(afd);afd=NULL;printf("\n文件已关闭!\n");}void readfile()//{ AFD *p;p=openfile();if(!p)return;if(strcmp(p->procode,"100")&&strcmp(p->procode,"110")) printf("\n 文件不可读!\n",p->);/*操作*/else{ printf("已读取文件!\n");printf("\t文件名:%s\n",p->);printf("\t属性:%s\n",p->procode);printf("\t读写指针:%d\n",rand()%rw_pointer->length); } closefile();/*关闭文件*/}void writefile(){ AFD *p;/*运行文件目录*/UFD *k;p=openfile();k=rw_pointer;if(!p)return;if(strcmp(p->procode,"110")){printf("\n 该文件不能写!\n",p->);return; }else{ p->rwpointer=rand()%k->length;k->length=p->rwpointer ;/*修改读书指针写回文件*/}printf("\n已完成写操作!\n");printf("\t文件名: %s\n",k->);printf("\t属性: %s\n",k->procode);printf("\t长度: %d\n",k->length);closefile();}void executefile(){ AFD *p;p=openfile();if(!p){printf("\n文件不存在!\n");return;}if(strcmp(p->procode,"001")){printf("\n该文件不能执行!\n");printf("\n文件属性为不可执行文件!\n");return;}else{closefile();printf("\n文件执行完毕!"); }}void menu(){ printf("------------------------------------------------------------------------------\n");printf(" <文件管理> \n");printf("------------------------------------------------------------------------------\n");printf(" MENU :\n");printf("\t\tmenu----------显示菜单\n");printf("\t\topen----------打开文件\n");printf("\t\tclose---------关闭文件\n");printf("\t\tcreate--------创建文件\n");printf("\t\tread----------读文件\n");printf("\t\twrite---------写文件\n");printf("\t\texecute-------执行文件\n");printf("\t\tdelete--------删除文件\n");printf("\t\tdisplay--------显示文件列表\n");printf("\t\texit--------退出\n");printf("\t注意:输入时当文件长度为0时表示该用户的文件输入结束!\n"); printf("------------------------------------------------------------------------------\n");}void ()/*文件基本操作*/{ char str[10];int sort;while(1){printf("输入命令:\n");printf(">>");scanf("%s",str);if(!strcmp(str,"create"))sort=1;elseif(!strcmp(str,"delete"))sort=2;elseif(!strcmp(str,"read"))sort=3;elseif(!strcmp(str,"write"))sort=4;elseif(!strcmp(str,"execute"))sort=5;elseif(!strcmp(str,"open"))sort=6;elseif(!strcmp(str,"close"))sort=7;elseif(!strcmp(str,"menu"))sort=8;elseif(!strcmp(str,"display"))sort=9;elseif(!strcmp(str,"exit"))sort=10;elsesort=0;switch(sort){ case 1:createfile();break;case 2:deletefile();break;case 3:readfile();break;case 4:writefile();break;case 5:executefile();break;case 6:openfile();break;case 7:closefile();break;case 8:menu();break;case 9: displayallfile();break;case 10: return;default:break; }}}void main(){ menu();input();();}。