您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 10操作系统课程设计报告
装订线内请勿答题0学号专业班级学生姓名0-1-文华学院2017~2018学年度第2学期《操作系统课程设计》考查试卷(A卷)课程性质:(必修)使用范围:(本科)考查时间:2018年3月2日考查方式:(开卷)考试类型论文大作业调研报告其它总分课程设计阅卷老师签名试题:要求:独立完成,3000-8000字(不含附件)。第-2-页共35页目录一、课程设计任务及要求.........................31.1设计任务.................................31.2设计要求.................................3二、算法及数据结构.............................32.1主要数据结构.............................32.2用户管理模块.............................52.2.1初始化用户函数.......................52.2.2系统用户的输出函数...................62.2.3用户的查找函数.......................62.3创建文件函数.............................62.4删除文件函数.............................82.5打开文件函数.............................93.6读文件函数..............................113.7写文件函数..............................113.8关闭文件函数............................123.9显示文件函数............................133.9.1显示用户文件........................133.9.2显示已打开的文件....................13三、程序设计与实现.............................184.1程序流程图.............................184.2程序说明...............................184.3实验结果...............................19四、参考文献...................................21六、收获、体会和建议...........................22七、附录源程序清单.............................23装订线内请勿答题0学号专业班级学生姓名0-3-一、课程设计任务及要求1.1设计任务设计、实现一个模拟的文件系统1.2设计要求建立文件存储介质的管理机制建立目录(采用一级目录结构)文件系统功能(显示目录、创建、删除、打开、关闭、读、写)文件操作接口(显示目录、创建、删除、打开、关闭、读、写)独立完成课程设计内容文本的课程设计报告,内容包括调试记录和程序清单(附注释)。二、算法及数据结构2.1主要数据结构/**定义文件数据结构*/typedefstructfile{charfile_name[20];boolfile_protect[3];boolopen_file_protect[3];//仅在文件打开时有效intread,write;//定义为读写指针intfile_length;structfile*next;}File;/**用户与文件的映射*/typedefstructx_map{charuserName[20];第-4-页共35页File*file;structx_map*next;}Map;/**定义主文件目录*/typedefstructmfd{Map*head,*tail;}MFD;/**打开文件目录*/typedefstructafd{File*head,*tail;intmax_open;intcurrent_open;}AFD;主文件目录(MFD)和用户文件目录(UFD)装订线内请勿答题0学号专业班级学生姓名0-5-打开文件目录(AFD)2.2用户管理模块2.2.1初始化用户函数voidinitUser(MFD*mfd){//初始化两个不同用户for(inti=1;i=2;i++){Map*m;m=(Map*)malloc(sizeof(Map));if(m==NULL){exit(0);}coutPleaseinputinitusername:;cinm-userName;m-file=NULL;m-next=NULL;if(mfd-head==NULL){mfd-head=mfd-tail=m;}else{第-6-页共35页mfd-tail-next=m;mfd-tail=m;}}}初始化两个不同用户,把输入用户的用户名下的目录指针、文件指针初始化2.2.2系统用户的输出函数voiddisplayUser(MFD*mfd){Map*m=NULL;m=mfd-head;coutuser:;while(m){coutm-userName;m=m-next;}coutendl;}通过用户与文件关联映射的指针来输出已存在的用户数据2.2.3用户的查找函数Map*queryUser(charuserName[],MFD*mfd){Map*m=NULL;m=mfd-head;while(m){if(strcmp(userName,m-userName)==0)装订线内请勿答题0学号专业班级学生姓名0-7-{returnm;}m=m-next;}returnNULL;}进行用户的查找,找到则返回用户映射指针2.3创建文件函数boolcreateFile(Map*user,charfile_name[],boolfile_protect[3],intfile_length){File*file;file=(File*)malloc(sizeof(File));if(file==NULL){returnfalse;}//进行文件的初始化strcpy(file-file_name,file_name);file-file_protect[0]=file_protect[0];file-file_protect[1]=file_protect[1];file-file_protect[2]=file_protect[2];file-file_length=file_length;file-read=file-write=0;file-next=NULL;if(user-file==NULL){第-8-页共35页user-file=file;}else{File*op,*preOp=NULL;op=user-file;//查找是否存在同名文件while(op){if(strcmp(op-file_name,file-file_name)==0){coutThefilenamefile-file_nameisalreadyexit!endl;returnfalse;}preOp=op;op=op-next;}preOp-next=file;}}输入文件名,文件权限及文件长度,将文件的名称、读写权限、长度等进行初始化,然后查找是否存在同名文件,存在同名文件时则输出该文件已存在并报错2.4删除文件函数booldeleteFile(Map*user,charfile_name[],AFD*afd){File*file=NULL,*prefile=NULL,*temp;file=afd-head;//在打开文件中查找装订线内请勿答题0学号专业班级学生姓名0-9-while(file){if(strcmp(file_name,file-file_name)==0){cout\file_name\isopen,pleasecloseitbefore!\n;returnfalse;}file=file-next;}file=user-file;//在文件中进行查找while(file){if(strcmp(file_name,file-file_name)==0){if(file==user-file){temp=file;user-file=file-next;}else{temp=file;prefile-next=file-next;}deletetemp;returntrue;}第-10-页共35页prefile=file;file=file-next;}if(prefile-next==NULL){coutuseruser-userNamehasnotthefile\file_name\endl;}returnfalse;}输入要删除的文件名,先看该文件是否打开,在打开文件链表中查找,若是打开文件则输出提示该文件已打开请先关闭文件,若不是则在用户文件中查找,找到则进行删除操作,没有则输出提示该用户没有此文件并报错2.5打开文件函数boolopenFile(Map*user,charfile_name[],AFD*afd,boolopen_file_protect[]){File*file=NULL;file=user-file;while(file){if(strcmp(file-file_name,file_name)==0){break;}file=file-next;}if(file)装订线内请勿答题0学号专业班级学生姓名0-11-{File*xfile;xfile=(File*)malloc(sizeof(File));if(xfile==NULL){returnfalse;}*xfile=*file;//根据文件的权限进行打开权限的赋值if(xfile-file_protect[0]=open_file_protect[0]){xfile-open_file_protect[0]=open_file_protect[0];}else{coutnoreadpriority!endl;returnfalse;}if(xfile-file_protect[1]=open_file_protect[1]){xfile-open_file_protect[1]=open_file_protect[1];}else{coutnowritepriority!endl;returnfalse;}if(xfile-file_protect[2]=open_file_protect[2]){第-12-页共35页xfile-open_file_protect[2]=open_file_protect[2];}else{coutnoexcutepriority!endl;returnfalse;}xfile-next=NULL;if(afd-head==NULL){afd-head=afd-tail=xfile;afd-current_open+=1;}elseif(afd-current_openafd-max_open){afd-tail-next=xfile;afd-tail=xfile;afd-current_open+=1;}else{coutTheopenfileistoomany!endl;returnfalse;}}else{coutthefile_nameisnotexit!endl;returnfalse;装订线内请勿答题0学号专业班级学生姓名0-13-}}输入要打开的文件名及文件权限,根据文件名在文件链表中查找,若没有
本文标题:10操作系统课程设计报告
链接地址:https://www.777doc.com/doc-3711764 .html