一、概述
课程设计目的、意义:
课程设计目的使学生熟悉文件管理系统的设计方法;加深对所学各种文件操作的了解及其操作方法的特点。通过模拟文件系统的实现,深入理解操作系统中文件系统的理论知识, 加深对教材中的重要算法的理解。同时通过编程实现这些算法,更好地掌握操作系统的原理及实现方法,提高综合运用各专业课知识的能力。
主要任务:
模拟文件系统设计是设计和实现一个简单的文件系统。内容包括:
1.建立文件存储介质的管理机制 2.建立目录(采用一级目录结构)
3.文件系统功能(显示目录、创建、删除、打开、关闭、读、写)
4.文件操作接口(显示目录、创建、删除、打开、关闭、读、写)
二、系统设计
课程设计的系统设计:
本系统模拟一个文件管理系统,要完成对文件的基本操作,文件的基本操作有文件、文件夹的打开、新建、删除和读取写入文件,创建更改目录,列出目录内容等信息。系统建立了文件目录树,存储文件系统中的所有文件。对于用户名下的文件,用文件目录树的分枝来存贮。采用命令行操作界面很直观,也方便用户进行操作,用户只要按照操作界面所显示的命令
来操作就行了。 整体设计框架:
系统初始化界面是由创建用户存储空间,管理文件,退出系统三个模块组成。用户创建由创建用户存储空间,进入目录,删除用户存储空间,显示所有用户存储空间,等模块组成。然后各个模块再由一些小模块组成。其中创建文件,打开关闭文件,读写文件等文件操作模块包括在进入目录模块里面。
三、系统实现
课程设计主要内容的实现程序代码: #include
typedef struct content{ char name[10]; File *file; int f_num;
struct content *next; }Content;
typedef struct user{
char name[10]; char psw[10]; Content *con; struct user *next; }User;
char cur_user[20]; User *user; int user_num=0;
void write(char name[]){ FILE *p; char ch;
p=fopen(name,\ ch=getchar(); while(1){ fputc(ch,p); ch=getchar(); if(ch=='#') break; }
fclose(p); }
void read(char name[]){ FILE *p; int i=0;
p=fopen(name,\ while(!feof(p)){ i++;
printf(\ }
if(i==0) printf(\文件是空的!\\n\ fclose(p); }
int display_files(Content *con){ int i=0; File *file; file=con->file; file=file->next; while(file!=NULL){ i++;
printf(\文件 %d: %s\\n\ file=file->next; }
printf(\文件总数:%d\\n\ return i; }
int is_exist_file(File *f,char name[]){ int exist=0;
File *file=f->next; while(file!=NULL){
if(strcmp(file->name,name)==0){ exist=1; break; }
file=file->next; }
return exist; }
void add_file(Content *con){ int exist; char f_name[10]; char tail[]=\ FILE *q;
File *file=con->file; File *new_f; if(con->f_num==10){
printf(\已存在10个文件!\\n\ return; } do{ exist=0;