操作系统课程设计报告_第1页
操作系统课程设计报告_第2页
操作系统课程设计报告_第3页
操作系统课程设计报告_第4页
操作系统课程设计报告_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

操作系统课程设计报告

概述:本课程设计旨在使学生熟悉文件管理系统的设计方法,加深对所学各种文件操作的了解及其操作方法的特点。通过模拟文件系统的实现,深入理解操作系统中文件系统的理论知识,加深对教材中的重要算法的理解。同时通过编程实现这些算法,更好地掌握操作系统的原理及实现方法,提高综合运用各专业课知识的能力。主要任务:本课程设计的主要任务是设计和实现一个简单的文件系统,包括建立文件存储介质的管理机制、建立目录(采用一级目录结构)、文件系统功能(显示目录、创建、删除、打开、关闭、读、写)和文件操作接口(显示目录、创建、删除、打开、关闭、读、写)。系统设计:本系统模拟一个文件管理系统,要完成对文件的基本操作,包括文件、文件夹的打开、新建、删除和读取写入文件,创建更改目录,列出目录内容等信息。系统建立了文件目录树,存储文件系统中的所有文件。对于用户名下的文件,用文件目录树的分支来存储。采用命令行操作界面很直观,也方便用户进行操作,用户只要按照操作界面所显示的命令来操作即可。整体设计框架:系统初始化界面由创建用户存储空间、管理文件、退出系统三个模块组成。用户创建由创建用户存储空间、进入目录、删除用户存储空间、显示所有用户存储空间等模块组成。然后各个模块再由一些小模块组成。其中创建文件、打开关闭文件、读写文件等文件操作模块包括在进入目录模块里面。系统实现:以下是本课程设计的主要内容的实现程序代码:```c#include<stdio.h>#include<string.h>#include<stdlib.h>typedefstructfile{charname[10];structfile*next;}File;typedefstructcontent{charname[10];File*file;intf_num;structcontent*next;}Content;typedefstructuser{charname[10];charpsw[10];Content*con;structuser*next;}User;charcur_user[20];User*user;intuser_num=0;```添加文件:在该函数中,我们首先需要获取文件名,然后检查是否已经存在该文件。如果存在,则输出错误信息;否则,创建一个新的文件并将其添加到文件列表中。voidadd_file(Content*con){charf_name[10];chartail[]=".txt";intexist=0;File*file=con->file->next;printf("请输入文件名:");scanf("%s",f_name);strcat(f_name,tail);while(file!=NULL){if(strcmp(f_name,file->name)==0){exist=1;break;}file=file->next;}if(exist==1){printf("文件已存在!---AddFile\n");return;}FILE*q;q=fopen(f_name,"w");fclose(q);while(file->next!=NULL)file=file->next;File*new_f=(File*)malloc(sizeof(File));strcpy(new_f->name,f_name);new_f->next=NULL;file->next=new_f;con->f_num++;printf("添加文件%s成功!\n",f_name);}读取文件:在该函数中,我们需要获取文件名并检查是否存在该文件。如果不存在,则输出错误信息;否则,打开该文件并读取其内容。voidread_file(Content*con){charname[10];chartail[]=".txt";intfind=0;File*file=con->file->next;printf("请输入需要读取的文件名:");scanf("%s",name);strcat(name,tail);while(file!=NULL){if(strcmp(name,file->name)==0){find=1;break;}file=file->next;}if(find==0){printf("读取错误或文件不存在!---ReadFile\n");return;}printf("文件已打开...\n");FILE*fp=fopen(name,"r");charc;while((c=fgetc(fp))!=EOF)printf("%c",c);fclose(fp);printf("\n文件%s读取成功!\n",name);}写入文件:在该函数中,我们需要获取文件名并检查是否存在该文件。如果不存在,则输出错误信息;否则,打开该文件并允许用户输入内容,直到输入“#”为止。voidwrite_file(Content*con){charname[10];chartail[]=".txt";intfind=0;File*file=con->file->next;printf("请输入需要编辑的文件名:");scanf("%s",name);strcat(name,tail);while(file!=NULL){if(strcmp(name,file->name)==0){find=1;break;}file=file->next;}if(find==0){printf("写入错误或文件不存在!---WriteFile\n");return;}printf("文件被打开...\n");FILE*fp=fopen(name,"a");charc;while((c=getchar())!='#')fputc(c,fp);fclose(fp);printf("文件%s编辑成功!\n",name);}scanf("%s",name);Content*current_con=u->con;while(current_con->next!=NULL){if(strcmp(current_con->name,name)==0){break;}current_con=current_con->next;}File*current_file=current_con->file;while(current_file->next!=NULL){current_file=current_file->next;}current_file->next=temp_f;temp_f->next=NULL;printf("移动成功!\n");}intdisplay_contents(User*u){inti=0;Content*con=u->con->next;while(con!=NULL){i++;printf("存储空间%d:%s\n",i,con->name);con=con->next;}printf("显示存储空间为%d\n",i);returni;}intis_exist_con(Content*c,charname[]){intexist=0;Content*con=c->next;while(con!=NULL){if(strcmp(con->name,name)==0){exist=1;break;}con=con->next;}returnexist;}voidadd_content(User*u){charname[10];intexist=0;Content*con,*current_con;File*file,*current_file;do{exist=0;printf("输入存储空间名称:");scanf("%s",name);if(is_exist_con(u->con,name)){exist=1;printf("此存储空间已存在!\n");}}while(exist==1);printf("新建中...\n");current_con=u->con;while(current_con->next!=NULL){current_con=current_con->next;}current_file=current_con->file;while(current_file->next!=NULL){current_file=current_file->next;}Content*new_con=(Content*)malloc(sizeof(Content));new_con->next=NULL;File*new_file=(File*)malloc(sizeof(File));new_file->next=NULL;new_con->file=new_file;current_file->next=new_file;current_con->next=new_con;}scanf("%d",&choice);switch(choice){case1:display_files(con);break;case2:add_file(con);break;case3:write_file(con);break;case4:read_file(con);break;case5:delete_file(con);break;case6:move_file(u,con);break;}}while(choice!=0);voidlogin(){intchoice;intfind=0;intlogin=0;User*p;Content*con;User*head=user->next;p=(User*)malloc(sizeof(User));con=(Content*)malloc(sizeof(Content));con->next=NULL;p->con=con;head=p;do{printf("1.显示所有存储空间\n");printf("2.新建存储空间\n");printf("3.删除存储空间\n");printf("4.写入存储空间\n");printf("0.退出\n");printf("输入以上选项:");scanf("%d",&choice);switch(choice){case1:display_contents(head);break;case2:add_content(head);break;case3:del_content(head);break;case4:into_content(head);break;}}while(choice!=0);}intmain(){user=(User*)malloc(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论