操作系统试验模拟文件管理系统

操作系统试验模拟文件管理系统
操作系统试验模拟文件管理系统

一、实验目的和要求(必填)

实验目的:通过在VC平台下编程,设计和调试一个简单的文件系统,通过模拟文件操作命令的执行,来模拟文件系统对文件及目录的管理。

实验要求:两名学生成组结对完成实验,仿真出文件系统中对文件和目录的操作。

二、实验容(必填)

文件管理:实现一个简单的文件系统

三、实验原理或实验方法(必填)

原理:通过结构体来描述文件和目录,利用链表知识实现目录树结构,通过对链表的操作实现整个文件系统中目录和文件的相关操作。

方法:学生两人结对进行实验,分别实现对文件和目录的操作。

对文件的操作包括:创建文件create、读文件read、写文件write、删除文件delete。

对目录的操作包括:创建目录mkdir、切换目录cd、展示目录容dir、删除目录rm。四、主要仪器设备或实验条件

Windows操作系统,VC开发环境

五、实验步骤(含实验数据记录处理)或操作设计过程记录

#include "stdio.h"

#include "iostream.h"

#include "string.h"

#define FILENAME_LENGTH 10 //文件名称长度

#define COMMAND_LENGTH 10 //命令行长度

#define PATH_LENGTH 30 //参数长度

struct filenode

{

char filename[FILENAME_LENGTH];

int isdir;

char content[255];

filenode *parent;

filenode *child;

filenode *prev;

filenode *next;

};

filenode *initnode(char filename[],int isdir);

void createroot();

int run();

int findpath(char *topath);

void help();

int mkdir();

int create();

int read();

int write();

int del();

int rm();

int cd();

int dir();

filenode *root,*recent,*temp,*ttemp,*temp_child;

char

path[PATH_LENGTH],command[COMMAND_LENGTH],temppath[PATH_LENGTH ],recentpath[PATH_LENGTH];

//创建文件或目录的存储节点

filenode* initnode(char filename[],int isdir)

{

filenode *node=new filenode;

strcpy(node->filename,filename);

node->isdir=isdir;

node->parent=NULL;

node->child=NULL;

node->prev=NULL;

node->next=NULL;

return node;

}

//初始化文件系统根结点

void createroot ()

{

recent=root=initnode("/",1);

root->parent=NULL;

root->child=NULL;

root->prev=root->next=NULL;

strcpy(path,"/");

}

void help()

{

cout<

cout<<"create: 建立文件。"<

cout<<"cd: 切换目录。"<

cout<<"dir: 显示目录。"<

cout<<"logout: 退出登录。"<

}

int dir()

{

int i=0,j=0;

temp=new filenode;

temp=recent;

if(temp==root)

{cout<<"

"<<"."<

if(temp!=root)

{cout<<"

"<<".."<

if(temp->child==NULL)

{

cout<<"Total: "<<" directors " <

return 1;

}

temp=temp->child;

while(temp)

{

if(temp->isdir)

{cout<<"

"<filename<

else

{cout<<" "<filename<next;

}

cout<<"Total: "<<" directors " <

<

return 0;

}

int read()

{

char filename[FILENAME_LENGTH];

cin>>filename;

if(recent->child==NULL)

{

cout<<"文件不存在!"<

return 1;

}

if(strcmp(recent->child->filename,filename)==0) {

cout<child->content<

return 0;

}

else

{

temp=recent->child;

while(temp->next)

{

if(strcmp(temp->next->filename,filename)==0) {

cout<next->content<

return 0;

}

}

cout<<"文件不存在!"<

return 1;

}

}

int write()

{

char filename[FILENAME_LENGTH];

cin>>filename;

if(recent->child==NULL)

{

cout<<"文件不存在!"<

return 1;

}

if(strcmp(recent->child->filename,filename)==0) {

cin>>recent->child->content;

cout<<"文件写入成功!"<

return 0;

}

else

{

temp=recent->child;

while(temp->next)

{

if(strcmp(temp->next->filename,filename)==0) {

cin>>temp->next->content;

cout<<"文件写入成功!"<

return 0;

}

}

cout<<"文件不存在!"<

return 1;

}

}

int del()

{

char filename[FILENAME_LENGTH];

cin>>filename;

temp=new filenode;

if(recent->child)

{

temp=recent->child;

while(temp->next && (strcmp(temp->filename,filename)!=0 || temp->isdir!=0))

temp=temp->next;

if(strcmp(temp->filename,filename)!=0 || temp->isdir!=0)

{

cout<<"不存在该文件!"<

return 0;

}

}

else

{

cout<<"不存在该文件!"<

return 0;

}

if(temp->parent==NULL)

temp->prev->next=temp->next;

if(temp->next)

temp->next->prev=temp->prev;

temp->prev=temp->next=NULL;

}

else

{

if(temp->next)

temp->next->parent=temp->parent;

temp->parent->child=temp->next;

}

delete temp;

cout<<"文件已删除!"<

return 0;

}

int rm()

{

char filename[FILENAME_LENGTH];

cin>>filename;

temp=new filenode;

if(recent->child)

{

temp=recent->child;

while(temp->next && (strcmp(temp->filename,filename)!=0 || temp->isdir!=1))

temp=temp->next;

if(strcmp(temp->filename,filename)!=0 || temp->isdir!=1)

cout<<"不存在该目录!"<

return 0;

}

}

else

{

cout<<"不存在该目录!"<

return 0;

}

if(temp->parent==NULL)

{

temp->prev->next=temp->next;

if(temp->next)

temp->next->prev=temp->prev;

temp->prev=temp->next=NULL; }

else

{

if(temp->next)

temp->next->parent=temp->parent;

temp->parent->child=temp->next; }

delete temp;

cout<<"目录已删除!"<

return 0;

}

int cd()

{ char topath[PATH_LENGTH];

cin>>topath;

if(strcmp(topath,".")==0)

return 0;

if(strcmp(topath,"..")==0)

{

int i;

while(recent->prev)

recent=recent->prev; //向前回溯,找到第一次创建的目录

if(recent->parent)

{

recent=recent->parent;

}

i=strlen(path);

// printf("%d %s\n",i,path);

while(path[i]!='/' && i>0)

i--; //找到最右边的/

if(i!=0)

{ path[i]='\0';

//printf("%s",path); //path中不止有一个/

}

else

path[i+1]='\0';

}

else

{

findpath(topath);

}

return 0;

}

int findpath(char *topath)

{

unsigned int i=0;

int sign=1;

if(strcmp(topath,"/")==0) //如果命令是cd / {

recent=root;

strcpy(path,"/");

return 0;

}

temp=recent;

strcpy(temppath,path);

if(topath[0]=='/') //cd命令以cd /开始

{

recent=root->child;

i++;

strcpy(path,"/");

// printf("\n%s",path);

}

else

{

if(recent!=NULL && recent!=root)

{

strcat(path,"/");

// printf("\n%s\n",path);

}

if(recent && recent->child)

{

if(recent->isdir)

recent=recent->child;

else

{

printf("路径错误!\n");

return 1;

}

}

}

while(i<=strlen(topath) && recent)

{

int j=0;

if(topath[i]=='/' && recent->child)

{

i++;

if(recent->isdir)

recent=recent->child;

else

{printf("路径错误\n");

return 1;

}

strcat(path,"/");

}

while(topath[i]!='/' && i<=strlen(topath))

{

recentpath[j]=topath[i];

i++;j++;

}

recentpath[j]='\0';

while((strcmp(recent->filename,recentpath)!=0 || (recent->isdir!=1)) && recent->next!=NULL)

{

recent=recent->next;

}

if(strcmp(recent->filename,recentpath)==0)

{

if(recent->isdir==0)

{strcpy(path,temppath);

recent=temp;

printf("是文件不是目录。\n");

return 1;

}

strcat(path,recent->filename);

}

if(strcmp(recent->filename,recentpath)!=0 || recent==NULL) {

strcpy(path,temppath);

recent=temp;

printf("输入路径错误\n");

return 1;

}

}

return 0;

}

int mkdir()

{

temp=initnode(" ",1);

cin>>temp->filename;

if(recent->child==NULL)

{

temp->parent=recent;

temp->child=NULL;

recent->child=temp;

temp->prev=temp->next=NULL;

printf("目录建立成功!\n");

}

else

{

ttemp=recent->child;

if(strcmp(ttemp->filename,temp->filename)==0&&ttemp->isdir==1) {

{

printf("目录已存在!\n");

return 1;

}

}

while(ttemp->next)

{

ttemp=ttemp->next;

if(strcmp(ttemp->filename,temp->filename)==0&&ttemp->isdir==1) {

printf("目录已存在!\n");

return 1;

}

}

ttemp->next=temp;

temp->parent=NULL;

temp->child=NULL;

temp->prev=ttemp;

temp->next=NULL;

printf("目录建立成功!\n");

}

return 0;

}

int create()

{

temp=initnode(" ",0);

cin>>temp->filename;

if(recent->child==NULL)

{

temp->parent=recent;

temp->child=NULL;

recent->child=temp;

temp->prev=temp->next=NULL;

cout<<"文件创建成功!"<

}

else

{

ttemp=recent->child;

if(strcmp(ttemp->filename,temp->filename)==0&&ttemp->isdir==0) {

printf("文件已存在!\n");

return 1;

}

while(ttemp->next)

{

ttemp=ttemp->next;

if(strcmp(ttemp->filename,temp->filename)==0&&ttemp->isdir==0) {

printf("文件已存在!\n");

return 1;

}

}

ttemp->next=temp;

temp->parent=NULL;

temp->child=NULL;

temp->prev=ttemp;

temp->next=NULL;

cout<<"文件建立成功!"<

}

return 0;

}

int run()

{

cout<<"filesystem:"<";

cin>>command;

if(strcmp(command,"mkdir")==0)

mkdir();

else if(strcmp(command,"dir")==0)

dir();

else if(strcmp(command,"cd")==0)

cd();

else if(strcmp(command,"create")==0) create();

else if(strcmp(command,"read")==0)

read();

else if(strcmp(command,"rm")==0)

else if(strcmp(command,"write")==0)

write();

else if(strcmp(command,"delete")==0)

del();

else if(strcmp(command,"help")==0)

help();

else if(strcmp(command,"logout")==0)

return 0;

else

cout<<"请参考help提供的命令列表!"<

return 1;

}

void main()

{

cout<<"***************************************************************"<

cout<<"********************操作系统课程设计项目*********************"<

cout<<"* 简单文件系统模拟*"<

cout<<"* 键入help可以获取帮助*"<

cout<<"***************************************************************"<

cout<<"***************************************************************"<

createroot();

while(1)

{

if(!run())

} }

操作系统模拟文件管理

操作系统课程设计报告 模拟文件管理 目) 院系:计算机科学技术学院计算机科学与技术系班级:计07--2 班 姓名:刘德庆 学号:12 指导教师:鲁静轩 2009 年6 月15 日

操作系统课程设计任务书 一、设计题目:模拟文件管理 二、设计目的 《操作系统原理》课程设计是软件工程专业实践性环节之一,是学习完《操作系统原理》课程后进行的一次较全面的综合练习。其目的在于加深对操作系统的理论、方法和基础知识的理解,掌握操作系统结构、实现机理和各种典型算法,系统地了解操作系统的设计和实现思路,培养学生的系统设计能力,并了解操作系统的发展动向和趋势。 三、设计要求 (1)选择课程设计题目中的一个课题,合作完成。 (2)良好的沟通和合作能力 (3)充分运用前序课所学的软件工程、程序设计等相关知识 (4)充分运用调试和排错技术 (5)简单测试驱动模块和桩模块的编写 (6)查阅相关资料,自学具体课题中涉及到的新知识。 (7)课题完成后必须按要求提交课程设计报告,格式规范,内容详实 四、设计内容及步骤 1.根据设计题目的要求,充分地分析和理解问题,明确问题要求做什么。 2.根据实现的功能,划分出合理的模块,明确模块间的关系。 3.编程实现所设计的模块。 4.程序调试与测试。采用自底向上,分模块进行,即先调试低层函数。能够熟练掌握调试工具的各种功能,设计测试数据确定疑点,通过修改程序来证实它或绕过它。调试正确后,认真整理源程序及其注释,形成格式和风格良好的源程序清单和结果; 5.结果分析。程序运行结果包括正确的输入及其输出结果和含有错误的输入及其输出结果。

6.编写课程设计报告; 设计报告要求:A4纸,详细设计部分主要叙述本人的工作内容 五、课程设计工作计划 设计在学期的第15、16周进行,时间安排如下: 序号内容时间(天) 1 预习、讲课 1 2 设计 3 3 编码、测试 5 4 验收 1 合计10 。 六、成绩评定办法 成绩分为优(A)、良(B)、中(C)、及格(D)、不及格(E)五个等级。其中设计表现占30%,验收40%,设计报告占30%。 1.设计表现:教师可依据学生使用实验环境的能力、观察和分析实验现象的能力、实验结果和数据的正确性以及学生的课堂纪律、实验态度、保持实验室卫生等方面的表现进行综合考核。 2.验收:要求学生演示设计的程序,讲解设计思路、方法、解决的主要问题,教师根据具体情况向每个学生提问2至3个问题。 3.设计报告:学生设计后应按时完成设计报告。要求:内容充实、写作规范、项目填写正确完整、书面整洁等。

管理信息系统实验报告

一、对实习目的认识 ERP模拟实习(实验)是在学生学习《生产运作管理》等相关课程的基础上,为使学生加深对理论教学的理解,配合教学内容所开设的实验教学环节。通过对与企业主要业务有关的各子系统的认知与操作,使学生了解ERP系统的基本构成与操作方法,能够增强学生计算机的应用能力,培养学生分析问题与解决问题的能力,有利于对理论教学内容的消化与吸收,并为今后从事实际工作打下一定的基础。 本实习是以广州五羊-本田公司某个月份的实际主要业务为基础,通过模拟实习,使学生在参与营销、技术、采购、设备、生产、品质、仓库、财务、人事等各个环节的实际操作过程中,熟悉各职能部门是怎样独立运作,部门之间是怎样相互协调关系。把企业作为整体系统适应外部环境变化的条件,应该如何有效地进行现代企业管理的运作。为便于实习,对每一个功能模块操作,提出较为具体的要求: 通过基础数据模块的实习,理解基础数据在企业管理中的作用。 通过营销管理模块的实习,掌握销售合同的签定,按客户订单组织生产的一般流程,掌握客户管理的基本内容与要求,了解售后服务的主要业务,明确营销管理在企业管理中的重要地位。 通过生产管理模块的实习,掌握生产计划的制定方法,以及按生产计划组织生产过程的一般流程,了解物料清单和物料需求计划的基本内容。 通过采购管理模块的实习,掌握物料采购的一般流程;理解物料供应的基本要求。 通过仓库管理模块的实习,掌握库存管理的一般流程,了解库存控制的方法。 通过品质管理模块的实习,理解品质管理的体系包括品质的控制、品质保证、品质工程三个重要组成部分的基本要求;掌握物料、产品质检的一般流程;了解质检技术标准。 通过财务管理模块的实习,掌握应收款和应付款业务处理流程;掌握成本核算的内容及要求;掌握财务成果核算的要点,了解资金筹备和运用的价值分析。 学生通过以上模块的实习,能够了解现代企业管理的一般流程,并能整合所学的管理理论知识,掌握现代企业管理的实用工具与方法,成为企业所需要的实用管理人才。 二、对《企业管理教学模拟实习软件》的整体设计思想的认识 现代企业管理教学模拟实习多媒体教学系统分为“实习目的、企业背景简介、企业流程介绍、模拟实习”四个部分;在模拟实习部分中包括十三个功能模块,每个模块都配有详细的操作说明以及相应的理论知识同时提供了完整的在线帮助、数据导入、数据流程图和教学案例等;完全模拟一个大型企业整体运作过程,学生可自行设计数据进行教学与实习,使教学与实习更贴近于实际。 我们通过对企业管理教学系统的操作学习,学生能够充分体验到企业在以销定产经营模式中,销售定单的变动将引起生产计划、物料分解、采购计划、库存管理、质量管理及相应的财务、设备、人事等各个环节的变化,反映出整个系统

操作系统文件管理实验报告

操作系统实验报告实验名称:文件管理 专业班级:网络工程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; ///

/// 文件 /// public class FileObject { public string filename; public int size=20; public int read=0; public int write = 0; public string author; } /// /// 文件系统用户 /// public class FileUser { public string username;

管理信息系统实验报告

实验一认识计算机硬件和网络结构 一、实验题目 认识计算机硬件和网络结构。 二、实验课时 2课时。 三、实验目的 认识计算机的主要构成部件、功能、型号、在计算机机箱内的位置、网络结构等。 四、实验内容和要求 1、利用多媒体演示计算机的主要组成部件:机箱、主板、CPU、内存条、硬盘、软驱、光驱、插槽、BUS总线、串行接口、并行接口、USB接口等; 2、打开机箱,实物展示并讲解个部件的功能及其连接; 3、机箱、主板、CPU、CPU风扇、内存条、显卡、网卡等分别如下所示。 机箱主板

内存条显卡网卡无线网卡 CPU CPU风扇硬盘 机箱背面并行接口串行接口USB接口 4、观察每个部件在机箱的位置,并掌握每个部件的功能和基本知识。 5、观察实验室网络结构图。 6、结合某网吧的例子更好地理解网络结构。 Parallel port Serial port USB port Keyboard and mouse ports

7、独立完成上述内容,并提交书面实验报告。 五、实验体会 通过本次实验,我了解了计算机的各种硬件和网络结构。知道了各种硬件的形状、功能、特征等。还知道了网络结构的流程、大体构造。这使我对计算机有了初步的认识,为以后更进一步的学习打下了坚实的基础。也为我以后的学习和生活提供了方便。 1、cpu——中央处理器,是一台计算机的运算核心和控制核心。 2、硬盘——是电脑的主要存储媒介之一。 3、主板——又叫主机板、系统板或母板,安装在机箱内,是微机最基本也是最重要的部件之一。 4、机箱——作为电脑配件的一部分,它起的主要作用是放置和固定各电脑配件,起到一个承托和保护作 用。 5、内存条——是连接CPU和其他设备的通道,起到缓冲和数据交换作用。

操作系统文件管理系统模拟实验

文件管理系统模拟 1.实验目的 通过一个简单多用户文件系统的设计,加深理解文件系统的内部功能及内部实现 2.实验内容 为Linux系统设计一个简单的二级文件系统。要求做到以下几点: (1)可以实现下列几条命令(至少4条) login 用户登录 dir 列文件目录 create 创建文件 delete 删除文件 open 打开文件 close 关闭文件 read 读文件 write 写文件 (2)列目录时要列出文件名、物理地址、保护码和文件长度; (3)源文件可以进行读写保护。 3.实验提示 (1)首先应确定文件系统的数据结构:主目录、子目录及活动文件等。主目录和子目录都以文件的形式存放于磁盘,这样便于查找和修改。 (2)用户创建的文件,可以编号存储于磁盘上。入file0,file1,file2…并以编号作为物理地址,在目录中进行登记。 4.源代码 #include #include #include #define MEM_D_SIZE 1024*1024 //总磁盘空间为1M #define DISKSIZE 1024 //磁盘块的大小1K #define DISK_NUM 1024 //磁盘块数目1K #define FATSIZE DISK_NUM*sizeof(struct fatitem) //FAT 表大小

#define ROOT_DISK_NO FATSIZE/DISKSIZE+1 //根目录起始盘块号 #define ROOT_DISK_SIZE sizeof(struct direct) //根目录大小#define DIR_MAXSIZE 1024 //路径最大长度为1KB #define MSD 5 //最大子目录数5 #define MOFN 5 //最大文件深度为5 #define MAX_WRITE 1024*128 //最大写入文字长度128KB struct fatitem /* size 8*/ { int item; /*存放文件下一个磁盘的指针*/ char em_disk; /*磁盘块是否空闲标志位0 空闲*/ }; struct direct { /*-----文件控制快信息-----*/ struct FCB { char name[9]; /*文件/目录名8位*/ char property; /*属性1位目录0位普通文件*/ int size; /*文件/目录字节数、盘块数)*/ int firstdisk; /*文件/目录起始盘块号*/ int next; /*子目录起始盘块号*/ int sign; /*1是根目录0不是根目录*/ }directitem[MSD+2]; }; struct opentable { struct openttableitem { char name[9]; /*文件名*/ int firstdisk; /*起始盘块号*/ int size; /*文件的大小*/ }openitem[MOFN]; int cur_size; /*当前打文件的数目*/ }; struct fatitem *fat; /*FAT表*/ struct direct *root; /*根目录*/ struct direct *cur_dir; /*当前目录*/ struct opentable u_opentable; /*文件打开表*/ int fd=-1; /*文件打开表的

管理信息系统模拟试卷2-4套

管理信息系统试卷(2) 一、填空题:(每空1分,共15分) 1.系统的一般模型包括输入、、和三部分。 2.组织管理技术进步的重要标志就是要建立起高效的。 3.数据流图综合地反映出信息在系统中的流动、__ 和情况。 4.系统维护的类型有正确性维护、适应性维护、、。 5.详细调查主要包括:组织结构调查、和。 6.程序设计说明书是以一个作为单位,用以定义处理过程的书面文件。 7.系统设计的任务是:在系统分析提出的的基础上,科学合理地进行 的设计。 8.程序设计说明书由____ _____编写,交给___ ____使用。 9.校验位校验的目的是检查输入的____ ________是否有错。 二、选择题(每小题2分,共30分) 1.以下不属于输出设计任务的是()。 A、确定输出内容 B、选择输出方式 C、输出格式设计 D、输出目的设计 2.系统常用的转换方式中没有()。 A、直接转换 B、并行转换 C、间接转换 D、分阶段转换 3.日常事务处理信息适用于()。 A、中层管理 B、高层管理 C、基层管理 D、目标管理 4.数据的关系模型是由若干()组成的集合。 A、关系框架 B、网络框架 C、层次框架 D、其他框架 5.系统设计的主要任务不包括()。 A、代码设计 B、输入输出设计 C、程序设计 D、系统分析 6.系统设计报告的主要作用是作为()的依据 A、系统总体规划 B、系统分析 C、系统实施 D、系统评价 7.下列应用中,哪个属于业务处理系统() A、决策支持系统 B、生产过程控制系统 C、财务处理系统 D、专家系统 8.将2001年5月1日记作20010501,这种编码类型属于() A、多位码 B、助记码 C、顺序码 D、区间码 9.DSS解决的是() A、结构化问题 B、结构化问题和半结构问题 C、半结构化问题和非结构化问题 D、半结构化问题 10.联机实时处理系统适用于() A、需要人工进行干预 B、对信息的时间性要求不高 C、需要脱机转换数据 D、要求及时响应

操作系统文件管理_答案

第六部分文件管理 1、文件系统的主要目的就是( )。 A、实现对文件的按名存取 B、实现虚拟存储 C、提供外存的读写速度 D、用于存储系统文件 2、文件系统就是指( )。 A、文件的集合 B、文件的目录集合 C、实现文件管理的一组软件 D、文件、管理文件的软件及数据结构的总体 3、文件管理实际上就是管理( )。 A、主存空间 B、辅助存储空间 C、逻辑地址空间 D、物理地址空间 4、下列文件的物理结构中,不利于文件长度动态增长的文件物理结构就是( )。 A、顺序文件 B、链接文件 C、索引文件 D、系统文件 5、下列描述不就是文件系统功能的就是( )。 A、建立文件目录 B、提供一组文件操作 C、实现对磁盘的驱动调度 D、实现从逻辑文件到物理文件间的转换 6、文件系统在创建一个文件时,为它建立一个( )。 A、文件目录 B、目录文件 C、逻辑结构 D、逻辑空间 7、索引式(随机)文件组织的一个主要优点就是( )。 A、不需要链接指针 B、能实现物理块的动态分配 C、回收实现比较简单 D、用户存取方便 8、面向用户的文件组织机构属于( )。 A、虚拟结构 B、实际结构 C、逻辑结构 D、物理结构 9、按文件用途来分,编译程序就是( )。 A、用户文件 B、档案文件 C、系统文件 D、库文件 10、将信息加工形成具有保留价值的文件就是( )。 A、库文件 B、档案文件 C、系统文件 D、临时文件 11、文件目录的主要作用就是( )。 A、按名存取 B、提高速度 C、节省空间 D、提高外存利用率 12、如果文件系统中有两个文件重名,不应采用( )。 A、一级目录结构 B、树型目录结构 C、二级目录结构 D、A与C 13、文件系统采用树型目录结构后,对于不同用户的文件,其文件名( )。 A、应该相同 B、应该不同 C、可以不同,也可以相同 D、受系统约束 14、文件系统采用二级文件目录可以( )。 A、缩短访问存储器的时间 B、实现文件共享 C、节省内存空间 D、解决不同用户间的文件命名冲突

模拟一个简单二级文件管理系统

模拟一个简单二级文件管理系统 设计目的:通过具体的文件存储空间的管理、文件的物理结构、目录结构和文件操作的实现,加深对文件系统内部功能和实现过程的理解。 设计内容:模拟一个简单二级文件管理系统 一、实验内容描述 1 实验目标 本实验的目的是通过一个简单多用户文件系统的设计,加深理解文件系统的内部功能及内部实现. 2 实验要求 为DOS系统设计一个简单的二级文件系统.要求做到以下几点: ①可以实现下列命令: login 用户登录 dir 列文件目录 create 创建文件 delete 删除文件 open 打开文件 close 关闭文件 read 读文件 write 写文件 ②列目录时要列出文件名、物理地址、保护码和文件长度. ③源文件可以进行读写保护. 二、程序主要内容 1设计思路 程序中要求每个用户在登陆后才可对其拥有的文件进行操作,用户对于其他用户的文件无操作权.文件操作包括浏览、创建、删除、打开、关闭、阅读、写入、修改模式.其他操作包括新建用户、帮助、用户登入、用户登出、退出系统. 在程序文件夹下有个名为“file”的系统根目录,此目录下包括:一个名为“mfd”的文件,记录所有注册过的帐号及密码;用户文件,以用户名作为文件名,内容为其拥有的文件名及属性;一个名为“keiji”的文件夹.“keiji”文件夹中包括:“”指针文件,记录所有已用的物理地址;一些以物理地址为名的文件,内容为文件内容. 2 数据结构 file结构体系统文件数据结构: fpaddrint,文件的物理地址、flengthint,文件长度、fmodeint,文件模式 0.只读;1.可写;2.可读写;3.保护、 fname[]char,文件名; filemode结构体文件状态数据结构: isopenint,文件当前状态,0.关闭;1.打开、modeint,文件模式 0.只读;1.可写;2.可

停车场管理系统实验报告汇总

华北水利水电学院数据结构实验报告 2011~2012学年第二学期2011级计算机专业 班级:**** 学号:***** 姓名:**** - 实验二栈和队列及其应用 一、实验目的: 1.掌握栈的特点(先进后出FILO)及基本操作,如入栈、出栈等,栈的顺序存储结构和链式存储结构,以便在实际问题背景下灵活应用。 2.掌握队列的特点(先进先出FIFO)及基本操作,如入队、出队等,队列顺序存储结构、链式存储结构和循环队列的实现,以便在实际问题背景下灵活运用。 二、实验内容: 1.链栈的建立、入栈、出栈操作。 2.环形队列的建立、入队、出队操作。 3.停车场管理。设停车场内只有一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端),若车场内已停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后开入的车辆必须先退出车场为它让路,待该辆车开出大门外,其它车辆再按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。试为停车场编制按上述要求进行管理的模拟程序。 实现提示:以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码及到达或离去的时刻,对每一组输入数据进行操作后的输出数据为:若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若是车离去;则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费)。栈以顺序结构实现,队列以链表(带头结点)实现。 需另设一个栈,临时停放为给要离去的汽车让路而从停车场退出来的汽车,也用顺序存储结构实现。输入数据按到达或离去的时刻有序。栈中每个元素表示一辆汽车,包含两个数据项:汽车的牌照号码和进入停车场的时刻。 设n=2,输入数据为:(‘A’,1,5),(‘A’,2,10),(‘D’,1,15),(‘A’,3,20),(‘A’,4,25),(‘A’,5,30),(‘D’,2,35),(‘D’,4,40),(‘E’,0,0)。每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码及到达或离去的时刻,其中,‘A’表示到达;‘D’表示离去,‘E’表示输入结束。 三、实验要求: 1.C/ C++完成算法设计和程序设计并上机调试通过。 2.撰写实验报告,提供实验结果和数据。 3.写出算法设计小结和心得。 四、程序源代码: 1.#include #include typedef struct stnode { int data; stnode *next;

管理信息系统模拟题及答案(模拟三)

2010 自考《管理信息系统》模拟试题 (5) (考试时间 150 分钟) 第一部分选择题 一、单项选择题 (本大题共 20 小题,每小题 1分,共 20 分)在每小题列出的四个选项中只有一个选项是符合题目要求的,请将正确选项前的字母填在题后的括号内。 1. 在管理信息中,执行层信息的特性包括( ) A. 大部分来源于企业内部 B. 使用频率较低 C. 保密要求较高 D. 使用时间较长 2. 下列属于系统主要特征的是 ( ) A. 目的性 B. 相关性 C. 边界性 D. 以上均正确 3. 管理信息系统阶段为 20世纪 ( ) A. 50 年代中期至 60 年代中期 B. 60 年代中期至 70 年代初期 C. 70年代初期至90年代 D. 90 年代至今 4. 最传统和古老的组织结构形式是 ( ) A. 事业部制 B. 职能式 C. 直线式 D. 矩阵制 5. 下列属于逻辑运算的是 ( ) B. 减 A. 加 C. 乘 D. 比较 6. 关于 DBMS 的功能下列说法错误的是 ( ) A. 合理组织大量数据以避免冗余 B. 支持多用户对数据的共享 C. 保证数据的安全 D. 保证用户对数据存取的合法性 7. 802.3规范是 IEEE802 标准体系之一,它规定用无源的___________ 来作为总线来传送数 据帧。 ( ) A. 双绞线 B. 电缆 C. 光纤 D. 微波 8?下列IP地址正确的是() A. 19.2.1.300 B. 192. 22.a.15

C. 202.112.0.x D. 202. 112. 111. 190 9. 关于关系数据模型说法错误的是( ) A. 建立在逻辑概念的基础上 B. 存取路径对用户透明 C. 数据独立性好 D. 查询效率较低 行为一个( ) 10. Access数据表以行和列的格式组织存储数据,在表中,每 A. 字段 B. 属性 C. 记录 D. 单元 11. Access视图中,用于查看报表的页面数据输出形态的是 A. “视计”视图 B. “打印预览”视图 C. 版面预览”视图 D. “定义”视图 12. 生命周期法中,系统设计阶段的主要工作内容是( ) A. 系统的逻辑设计 B. 系统的物理设计 C. 编写程序 D. 系统调试 13. ERP 是指 ( ) A. 物料需求计划 B .制造资源计划 C. 企业资源计划 D. 供应链管理 14. 下列不属于数据流程图的基本元素的是( ) A. 数据结构 B. 数据存储 C. 数据流 D. 外部实体 15. 在系统设计中,物理模块是逻辑模块的( ) A. 抽象 B. 综合 C. 具体化 D. 集合 16. 数据模型的规范化可提高数据的( ) A. 一致性 B. 完整性

ERP系统模拟实验报告

一、实验目的 通过本次实验使学生学会理论联系实际,让同学们了解企业的运营流程,了解各个角色在企业中的工作责任,学会根据市场预测去规划企业未来的发展,制定自己的运营策略。 二、实验地点 三、实验时间 2014年6月23日—2014年7月4日 四、实习组成员 CEO及助理 财务总监及助理 营销总监及助理 生产总监及助理 采购总监及助理 间谍 五、我的职责 我在我们企业中担任的是采购总监这个角色,负责根据生产产能和市场需求情况决定什么时候下原材料订单,要下多少订单,保证生产顺利进行的同时也不能积压原材料库存。 六、实验步骤 第一天,老师给我们介绍了一下沙盘模拟的操作规则,企业的初始状况、股东期望以及企业的财务状况,然后给我们进行了分组,每组大概12人,我们是U4组。 我们组的发展一直都采取的是主动进攻的策略,不管是在新产品研发还是市场开拓上,第一年为了成为P1产品的市场老大投放了9个广告,虽然广告费用并不是最多但由于另一个企业决策失误最终成功取得了P1产品的市场老大的地位,同时我们开始开拓区域、国内、亚洲三个市场,考虑到国际市场的产品利润空间并不是很大并且市场需求也不是很多就主动放弃了国际市场的开拓,并开始研发P2产品。为了保证足够的产能,我们在第二个季度开始筹建两条全自动生产线。由于投入较多,资金周转不开,所以我们在这一年贷了一桶短贷,虽然第二年有沉

重的还贷负担,但也正是这一桶短贷使我们在第一第二年的现金流始终没有中断,使企业能够持续经营下去。筹集资金在整个六年运作中至为重要。 第二年,我们P2产品研发成功,区域市场开拓完成,并在投放广告、选取订单时又取得了P2产品的本地市场老大,我们开始考虑要不要再研发P3产品,我们企业首次出现了意见不一的情况,由于近几年P3市场价格并不是很大,需求也不是很大,又需要很大的投资,并且已经有其他的企业开始在研发P3产品了,所以最终由CEO拍板决定只做P2,以产能优势取胜,虽然我们又贷了贷款,但这一年我们已经开始盈利了。 第三年,国内市场开拓完成,两条全自动生产线也开始投入生产,由于我们的主打产品已经转移到了P2,并且国内市场的P2价格与需求都良好,所以我们投入了较多的广告费来取得P2产品的国内市场老大以求获得足够的订单。第二季度,我们开始租赁小厂房,筹建三条全自动生产线,扩大产能。这一年,我们两条手工线和一条半自动线用于生产P1产品,另一条手工线和两条全自动生产线都用于生产我们的主打产品P2,虽然我们一直在贷款还款,但企业的发展态势良好,正一步步走上正轨。 第四年,由于资金问题,小产房的三条全自动生产线在第三年第四个季度暂停了一个季度筹建,所以到第四年的第二季度才可以投入生产,但这并没有影响到我们的生产进度。在这一年,我们又继续投入广告成为了P2产品的亚洲市场的老大,保证了我们企业能够获得足够的订单。 由于另一个企业U6小组的发展迅猛,让我们意识到我们企业之后发展的后劲不足,但要研发P3产品,获得利润的周期又太长,所以我们只能依靠获取更多的订单生产足够的P2产品来维持企业的发展。 第五年,最后一条全自动生产线也开始投入生产,此时生产产量已经达到最大化,但由于市场需求不足,导致最后剩余4个产品,所以在第六年我们企业选择了与其他的企业U3小组进行合作,互相帮助拿到自己所需要的订单,这是一个思维的突破。最终我们企业成功拿到了第一的好成绩。 最后,老师给了我们一个下午的时间进行每个组的总结报告,由每个组的代表依次进行上台发言,总结自己企业的具体操作步骤,以及财务状况。 七、实验感悟 在这为期两个周的ERP沙盘模拟实验里,我在游戏的氛围中学到了很多课本上没有的知识,体验了一个制造型企业管理的完整流程,包括物流、资金流和信

管理系统模拟实验报告

管理系统模拟 实验报告 姓名:xxxxxxx 系别:计算机系 班级:xx级信息x 班 学号:

实验一EXCEL数据分析应用 1、本次实验的目的和要求 熟悉EXCEL软件环境,掌握该软件的基本操作命令(菜单)和使用该软件进行输入数据分析的基本方法。为保证实验效果,学生要提前熟悉所给实验练习程序,上机调试运行。 2、实验内原理 使用EXCEL软件进行输入数据的分析。 3、实验内容 某溶液浓度正比对应于色谱仪器中的峰面积,现欲建立不同浓度下对应峰面积的标准曲线以供测试未知样品的实际浓度。已知8组对应数据,建立标准曲线,并且对此曲线进行评价,给出残差等分析数据。 浓度锋面积 0 0 1.24 2915 2.3 2.37 47025.3 5.12 86862.3 8.12 142450.6 12.19 200602.25 17.97 284688.1 24.99 396688.3 这是一个很典型的线性拟合问题,手工计算就是采用最小二乘法求出拟合直线的待定参数,同时可以得出R的值,也就是相关系数的大小。在Excel中,可以采用先绘图再添加趋势线的方法完成前两步的要求。 选择成对的数据列,将它们使用“X、Y散点图”制成散点图。 由图中可知,拟合的直线是y=15620x+6606.1,R2的值为0.9994。 因为R2 >0.99,所以这是一个线性特征非常明显的实验模型,即说明拟合直线能够以大于99.99%地解释、涵盖了实测数据,具有很好的一般性,可以作为标准工作曲线用于其他未知浓度溶液的测量。 为了进一步使用更多的指标来描述这一个模型,我们使用数据分析中的“回归”工

具来详细分析这组数据。 “回归”工具为我们提供了三张图,分别是残差图、线性拟合图和正态概率图。重点来看残差图和线性拟合图。 在线性拟合图中可以看到,不但有根据要求生成的数据点,而且还有经过拟和处理的预测数据点,拟合直线的参数会在数据表格中详细显示。本实例旨在提供更多信息以起到抛砖引玉的作用,由于涉及到过多的专业术语,请各位读者根据实际,在具体使用中另行参考各项参数,此不再对更多细节作进一步解释。 更多的信息在生成的表格中,详细的参数项目完全可以满足回归分析的各项要求。下图提供的是拟合直线的得回归分析中方差、标准差等各项信息。

计算机操作系统实验-文件管理

哈尔滨工业大学计算机科学与技术学院 实验报告 课程名称:操作系统 课程类型:必修 实验项目名称:文件管理 实验题目:设计一个多用户的文件系统 班级:实验学院一班 学号:6040310110 姓名:张元竞 设计成绩报告成绩指导老师

一、实验目的 随着社会信息量的极大增长,要求计算机处理的信息与日俱增,涉及到社会生活的各个方面。因此,文件管理是操作系统的一个非常重要的组成部分。学生应独立用高级语言编写和调试一个简单的文件系统,模拟文件管理的工作过程。从而对各种文件操作命令的实质内容和执行过程有比较深入的了解,掌握它们的实施方法,加深理解课堂上讲授过的知识。 二、实验要求及实验环境 用高级语言编写和调试一个简单的文件系统,模拟文件管理的工作过程。要求设计一个10个用户的文件系统,每次用户可保存10个文件,一次运行用户可以打开5个文件。系统能够检查打入命令的正确性,出错时能显示出错原因。对文件必须设置保护措施,例如只能执行,允许读等。在每次打开文件时,根据本次打开的要求,在此设置保护级别,即有二级保护。文件的操作至少有Create、delete、open、close、read、write等命令。 所编写的程序应采用二级文件目录,即设置主文件目录和用户文件目录。前者应包含文件主及它们的目录区指针;后者应给出每个文件占有的文件目录,即文件名,保护码,文件长度以及它们存放的位置等。另外为打开文件设置运行文件目录(AFD),在文件打开时应填入打开文件号,本次打开保护码和读写指针等。 三、设计思想(本程序中的用到的所有数据类型的定义,主程序的流程图及各程序模块之间的调用关系)

操作系统实验报告 实验一 进程管理

实验一进程管理 一、目的 进程调度是处理机管理的核心内容。本实验要求编写和调试一个简单的进程调度程序。通过本实验加深理解有关进程控制块、进程队列的概念,并体会和了解进程调度算法的具体实施办法。 二、实验内容及要求 1、设计进程控制块PCB的结构(PCB结构通常包括以下信息:进程名(进程ID)、进程优先数、轮转时间片、进程所占用的CPU时间、进程的状态、当前队列指针等。可根据实验的不同,PCB结构的内容可以作适当的增删)。为了便于处理,程序中的某进程运行时间以时间片为单位计算。各进程的轮转时间数以及进程需运行的时间片数的初始值均由用户给定。 2、系统资源(r1…r w),共有w类,每类数目为r1…r w。随机产生n进程P i(id,s(j,k),t),0<=i<=n,0<=j<=m,0<=k<=dt为总运行时间,在运行过程中,会随机申请新的资源。 3、每个进程可有三个状态(即就绪状态W、运行状态R、等待或阻塞状态B),并假设初始状态为就绪状态。建立进程就绪队列。 4、编制进程调度算法:时间片轮转调度算法 本程序用该算法对n个进程进行调度,进程每执行一次,CPU时间片数加1,进程还需要的时间片数减1。在调度算法中,采用固定时间片(即:每执行一次进程,该进程的执行时间片数为已执行了1个单位),这时,CPU时间片数加1,进程还需要的时间片数减1,并排列到就绪队列的尾上。 三、实验环境 操作系统环境:Windows系统。 编程语言:C#。 四、实验思路和设计 1、程序流程图

2、主要程序代码 //PCB结构体 struct pcb { public int id; //进程ID public int ra; //所需资源A的数量 public int rb; //所需资源B的数量 public int rc; //所需资源C的数量 public int ntime; //所需的时间片个数 public int rtime; //已经运行的时间片个数 public char state; //进程状态,W(等待)、R(运行)、B(阻塞) //public int next; } ArrayList hready = new ArrayList(); ArrayList hblock = new ArrayList(); Random random = new Random(); //ArrayList p = new ArrayList(); int m, n, r, a,a1, b,b1, c,c1, h = 0, i = 1, time1Inteval;//m为要模拟的进程个数,n为初始化进程个数 //r为可随机产生的进程数(r=m-n) //a,b,c分别为A,B,C三类资源的总量 //i为进城计数,i=1…n //h为运行的时间片次数,time1Inteval为时间片大小(毫秒) //对进程进行初始化,建立就绪数组、阻塞数组。 public void input()//对进程进行初始化,建立就绪队列、阻塞队列 { m = int.Parse(textBox4.Text); n = int.Parse(textBox5.Text); a = int.Parse(textBox6.Text); b = int.Parse(textBox7.Text); c = int.Parse(textBox8.Text); a1 = a; b1 = b; c1 = c; r = m - n; time1Inteval = int.Parse(textBox9.Text); timer1.Interval = time1Inteval; for (i = 1; i <= n; i++) { pcb jincheng = new pcb(); jincheng.id = i; jincheng.ra = (random.Next(a) + 1); jincheng.rb = (random.Next(b) + 1); jincheng.rc = (random.Next(c) + 1); jincheng.ntime = (random.Next(1, 5));

用友ERP生产管理系统实验报告

用友ERP生产管理系统实验报告 本课程共分14单,以用友ERP-U8.72为实验平台,以一个企业的生产经营业务贯穿始终,分别介绍了ERP生产管理系统中物料清单、主生产计划、产能管理、需求规划、生产订单、车间管理、工程变更、设备管理的生产制造模块,以及与生产管理活动有关的销售管理、采购管理、委外管理、库存管理、应收款管理及应付款管理等模块的相关功能。 用友ERP生产管理系统是ERP-U8企业管理软件的重要组成部分,是企业信息化管理核心的和有效的方法和工具。它面向离散型和半离散型的制造企业资源管理的需求,遵循以客户为中心的经营战略,以销售订单及市场预测需求为导向,以计划为主轴,覆盖了面向订单采购、订单生产、订单装配和库存生产四种制造业生产类型,并广泛应用于机械、电子、食品、制药等行业。 本实验报告要针对的实验项目有客户订货、排程业务、产能管理、采购业务、委外业务、生产业务、车间管理、销售发货业务、应收款和应付款系统的制单业务、期末处理、物料清单维护、工程变更管理和设备管理。 实验一客户订货 一、实验目的 1.理解销售报价的作用,掌握销售报价的操作。 2.理解销售订货管理的主要功能,掌握相关的基本操作。 二、实验内容 1.输入销售报价单。 2.审核销售报价单。 3.输入销售预订单。 4.输入销售订单。 5.审核销售订单。 6.修改已审核销售订单。 三、实验步骤 1.输入报价单。 2.审核报价单。 3.根据报价单生成销售订单。 4.审核销售订单。 5.修改已审核销售订单。 6.手工输入新的销售订单。 7.审核手工输入的销售订单。

四、实验成果 实验二排程业务 一、实验目的 理解主生产计划和物料需求计划的作用,掌握产销排程和物料需求计划的操作。 二、实验内容 1.MPS累计提前天数推算和库存异常状况查询。 2.MPS计划参数维护。 3.MPS计划生成。 4.MPS计划作业的供需资料查询。 5.MRP累计提前天数推算和库存异常状况查询。 6.MRP计划参数维护。 7.MRP计划生成。 8.MRP供需资料查询。 三、实验步骤 1.MPS累计提前天数推算和库存异常状况查询。 2.MPS计划参数维护。 3.MPS计划生成。

管理信息系统 模拟试卷四及答案

一、名词解释 ( 本大题共 4 小题,每小题 4 分,共 16 分 ) 1. 管理信息系统( MIS ) 2. 数据库( DB ) 3. 数据字典 4. 模块凝聚 二、单项选择题 ( 本大题共 15 小题,每小题 1 分,共 15 分 ) 1. 下述关于管理信息的描述中不正确的是 ( ) A. 管理信息是主要的资源和决策基础 B. 管理信息的流动是生产经营活动中的主体流动 C. 管理信息是实施管理控制的依据 D. 管理信息是系统内外联系的纽带 2. 下列结构中,不属于结构化程序的控制结构的是 ( ) A. 顺序结构 B. 层次结构 C. 选择结构 D. 循环结构 3. 管理信息系统开发任务的核心工作是 ( ) A. 确定企业的目标 B. 开发适合现代企业管理要求的应用软件系统 C. 优化企业业务流程 D. 明确企业的业务内容及规模 4. 系统分析阶段的主要活动有:需求分析、系统逻辑模型的建立和 ( ) A. 现行系统详细调查 B. 现行系统调整 C. 现有系统重组 D. 现行系统改造 5. 在数据流程图中,用箭线表示 ( ) A. 控制流 B. 数据流 C. 数据来源 D. 数据去向 6. 在数据处理中,基本的、不可分割的逻辑单位是 ( ) A. 数据项 B. 记录 C. 文件 D. 数据库 7. 系统详细设计的内容包括:计算机处理过程设计、用户界面设计和 ( ) A. 程序设计 B. 代码设计 C. 数据库设计 D. 计算机系统配置方案设计 8. 程序设计时,提供给程序员的是系统设计有关文档和 ( ) A. 程序设计任务书 B.N — S 图 C. 程序流程图 D. 决策表 9. 在系统开发过程中保证应用软件质量的关键是 ( ) A. 系统调试 B. 系统测试 C. 结构设计 D. 功能设计 10. 通常唯一识别一个记录的一个或若干个数据项称为() A. 主键 B. 副键 C. 鉴别键 D. 索引项

操作系统 实验报告 文件管理

昆明理工大学信息工程与自动化学院学生实验报告 (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,一次下去是管理员目

相关文档
最新文档