当前位置:文档之家› 二级文件系统

二级文件系统

二级文件系统
二级文件系统

《计算机操作系统》

课程设计

题目:二级文件系统

专业:计算机科学与技术

班级:

姓名:

学号:

指导教师:

时间:2011.6.01---2011.6.10

2011年6 月13日

一、实验内容

为Linux系统设计一个简单的二级文件系统。要求做到以下几点:

1.可以实现下列几条命令:

login用户登录

dir 列目录

create创建文件

delete 删除文件

open 打开文件

close 关闭文件

read 读文件

write 写文件

2.列目录时要列出文件名,物理地址,保护码和文件长度

二、实验目的

通过一个简单多用户文件系统的设计,加深理解文件系统的内部功能及内部实现。

三、开发环境

Windows操作系统

Microsoft Visual C++

四、分析设计

实验原理

通过程序模拟Linux文件系统,用一个二进制文件(FileSystem.disk)来模拟磁盘.设计一个多用户的二级文件系经统、实现一般的创建文件、目录,删除文件、目录,切换目录,打开、关闭文件、读写文件等操作。

文件系统,包含格式化,显示文件(目录),创建文件等几个简单命令的实现,而且能完成超级块的读写,节点的读写等过程. 本文件系统采用两级目录,其中第一级对应于用

户账号,第二级对应于用户账号下的文件。另外,为了简单本文件系统未考虑文件共享、文件系统安全以及管道文件与设备文件等特殊内容。

1.程序执行流程图:

开始

初始化

选择程序

2.数据块的分配和回收

开始

系统是否有空

返回当前空闲块地址;超级块空闲指针

开启新的块组,将其地址信息读入超级

块;返回该块组首地址

结束

超级块中是否有空

创建目录、文件 删

目录、文件

返回上一

进入指定目录

查看目录、文件

查询

格式化

结束

设计FileSystem 类负责管理磁盘空间和磁盘内存I节点,负责对磁盘空间和磁盘

数据进行优化管理。并提代接口言方法供用户或程序调用。

五、 打印的源程序及附上的注释

#include "xd.h" //文件管理 void createFile(char fileName[],int length,char fileKind[]); //创建文件 void fileWrite(char fileName[]); //写文件 void fileCat(char fileName[]); //读文件 void fileRen(char fileName[],char rename[]); //重命名文件 void fileClose(char fileName[]); //关闭已打开的文件 void delFile(char fileName[]); //删除文件 int requestDist(int &startPostion,int maxLength); //磁盘分配查询

void initDisk(); //初始化磁盘 void freeDisk(int startPostion); //磁盘空间释放

//用户管理

void userCreate(); int login();

int userID=-1; //用户登录的ID 号,值为-1时表示没有用户登录

//用户注册 void userCreate() {

char c;

char userName[10]; int i;

if(used

for(i=0;c=getch();i++)

内存 System

用户1磁盘

用户2用户3用户n

if(c==13) break;

else

userName[i]=c;

printf("%c",c);

}

userName[i]='\0';

for(i=0;i

{

if(!strcmp(userTable[i].userName,userName))

{

cout<<"\n";

cout<<"该用户名已存在,创建用户失败\n";

//system("pause");

return;

}

}

strcpy(userTable[used].userName,userName);

cout<<"\n";

cout<<"请输入密码:";

for(i=0;c=getch();i++)

{

if(c==13) break;

else

userTable[used].password[i]=c;

printf("*");

}

userTable[used].password[i]='\0';

cout<<"\n";

cout<<"创建用户成功\n";

used++;

//system("pause");

}

else

{

cout<<"创建用户失败,用户已达到上限\n";

//system("pause");

}

fflush(stdin);

}

//登录

int login()

{

char name[10],psw[10];

int i,times;

cout<<"请输入用户名:";

for(i=0;c=getch();i++)

{

if(c==13) break;

else

name[i]=c;

printf("%c",c);

}

name[i]='\0';

for(i=0;i

{

if(!strcmp(userTable[i].userName,name))

break;

}

if(i==used)

{

cout<<"\n您输入的用户名不存在\n";

//system("pause");

return -1;

}

for(times=0;times<3;times++)

{

memset(psw,'\0',sizeof(psw));

cout<<"\n请输入密码:";

for(i=0;c=getch();i++)

{

if(c==13) break;

else

psw[i]=c;

cout<<"*";

}

printf("\n");

for(i=0;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;

}

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) //磁盘块未被使用,且剩余长度大于要创建文件的长度

{

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 createFile(char fileName[],int length)

{

//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);

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 //已创建过文件,找到最后一个的next 指针

{

p=userTable[userID].user->next;

while(p->next) p=p->next;

p->next=fileNode;

}

printf("创建文件成功\n");

//system("pause");

}

else

{

printf("磁盘空间已满或所创建文件超出磁盘空闲容量,磁盘空间分配失败\n");

//system("pause");

}

}

//释放磁盘

void freeDisk(int startPostion)

{

diskNode *p;

for(p=diskHead;p!=NULL;p=p->next)

{

if(p->start==startPostion) //找到startPostion位置的指针

break;

}

p->useFlag=false;

}

//查看文件

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

{

if(i%50==0) printf("\n"); //一行大于50个字符换行

printf("%c",disk[i]);

}

printf("\n\n----------------------------------------------------------\n");

}

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("文件写入成功\n");

}

else

{

printf("没有找到该文件,请检查输入的文件名是否正确\n");

// system("pause");

}

if(p)

{

p->file->openFlag=false;

printf("%s文件已关闭\n",p->file->fileName);

// 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 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");

}

}

//查看文件详细信息

void fileLength(char fileName[])

{

int startPos,length;

// char kind[3];

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;//获取文件长度

printf("文件长度为%d\n ",length);

//system("pause");

}

else

{

printf("没有找到该文件,请检查输入的文件名是否正确\n");

//system("pause");

}

}

//检查文件是否关闭

void ifClose(char fileName[])

{

bool open;

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)

{

open=p->file->openFlag;

if(open==true)

printf("%s文件未关闭\n",p->file->fileName);

else //open=true

printf("%s文件已关闭\n",p->file->fileName);

//system("pause");

}

else

{

printf("没有找到该文件,请检查输入的文件名是否正确\n");

//system("pause");

}

}

void print()

{ cout<<" create 创建文件\n";

cout<<" length 查看文件长度\n";

cout<<" cat 查看文件内容\n";

cout<<" write 覆盖写入\n";

cout<<" ren 重命名\n";

cout<<" del 删除文件\n";

cout<<" close 关闭文件\n";

cout<<" return 退出用户,返回登录界面\n";

cout<<" exit 退出程序\n";

cout<<" ifclose 检查文件是否关闭\n";

}

//删除文件

void delFile(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");

else

{

printf("该文件已被进程打开,删除失败\n");//文件被打开

//system("pause");

}

}

else

{

printf("没有找到该文件,请检查输入的文件名是否正确\n");//文件不存在

//system("pause");

}

}

int main()

{

char order[commandAmount][10];

strcpy(order[0],"create");

strcpy(order[1],"cat");

strcpy(order[2],"write");

strcpy(order[3],"ren");

strcpy(order[4],"del");

strcpy(order[5],"close");

strcpy(order[6],"return");

strcpy(order[7],"exit");

strcpy(order[8],"awrite");

strcpy(order[9],"length");

strcpy(order[10],"ifclose");

char

command[50],command_str1[10],command_str2[10],command_str3[5];//,command_str4[3];

int i,j,k;

int length;

initDisk(); //初始化磁盘

for(i=0;i

{

userTable[i].user=(UFD *)malloc(sizeof(UFD));

userTable[i].user->next=NULL;

}

cout<<"----------------------------------------------------------\n";

cout<<"请先进入用户管理\n\n";

cout<<" Creat user 创建新用户请输入1\n";

cout<<" login 用户登录请输入2\n";

cout<<"----------------------------------------------------------\n\n";

while(1)

{

cout<<"Please choose the function key:>";

int choice;

scanf("%d",&choice);

if(choice==1) userCreate();

else if(choice==2)

{

userID=login();

print();

}

else printf("您的输入有误,请重新选择\n");

while (userID!=-1)

{

fflush(stdin);

cout<<"please input 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

{

if(!strcmp(command_str1,order[i]))

{

select=i;

break;

}

}

if(i==commandAmount)

{

cout<<"您输入的命令有误,请重新输入\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]!=' '&&command[i]!='\0';i++,k++)

command_str3[k]=command[i];

command_str3[k]='\0';

j=1;

length=0; //初始化文件长度

for(i=strlen(command_str3)-1;i>=0;i--) //把字符串转换为十进制

{

length+=(command_str3[i]-48)*j;

j*=10;

}

createFile(command_str2,length);break;

case 1:fileCat(command_str2);break;

case 2:

fileWrite(command_str2);break;

case 4:delFile(command_str2);break;

case 5:fileClose(command_str2);break;

case 6: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 7:exit(0);break;

case 8:fileLength(command_str2);break;

}

}

}

return 0;

}

五打印的程序运行时初值和运行结果

1、初值

2、运行过程与结果

六、心得体会

通过这次的操作系统的课程设计,在老师的细心指导和同学的积极讨论下,终于做出了模拟Linux二级文件系统,能够简单得实现目录的创建和删除,文件的建立和删除,文件的读写等这些基本操作,并且着重改编了拷贝、剪切和查询的功能,了解二级目录的有关内容,并且通过编写的模拟Lunix下的操作环境有了更进一步的了解。通过本次试验,我收获颇多,也认识到了号多问题,通过与老师之间的交流,不断地思考问题,本次试验是自己独立完成的,遇到了许多困难,通过与老师和同学交流,学到了好多思考问题的方法。谢谢老师和同学们

二级文件系统

《计算机操作系统》 课程设计 题目:二级文件系统 专业:计算机科学与技术 班级: 姓名: 学号: 指导教师: 时间:2011.6.01---2011.6.10 2011年6 月13日

一、实验内容 为Linux系统设计一个简单的二级文件系统。要求做到以下几点: 1.可以实现下列几条命令: login用户登录 dir 列目录 create创建文件 delete 删除文件 open 打开文件 close 关闭文件 read 读文件 write 写文件 2.列目录时要列出文件名,物理地址,保护码和文件长度 二、实验目的 通过一个简单多用户文件系统的设计,加深理解文件系统的内部功能及内部实现。 三、开发环境 Windows操作系统 Microsoft Visual C++ 四、分析设计 实验原理 通过程序模拟Linux文件系统,用一个二进制文件(FileSystem.disk)来模拟磁盘.设计一个多用户的二级文件系经统、实现一般的创建文件、目录,删除文件、目录,切换目录,打开、关闭文件、读写文件等操作。 文件系统,包含格式化,显示文件(目录),创建文件等几个简单命令的实现,而且能完成超级块的读写,节点的读写等过程. 本文件系统采用两级目录,其中第一级对应于用 户账号,第二级对应于用户账号下的文件。另外,为了简单本文件系统未考虑文件共享、文件系统安全以及管道文件与设备文件等特殊内容。 1.程序执行流程图: 开始 初始化 选择程序

2.数据块的分配和回收 开始 系统是否有空 返回当前空闲块地址;超级块空闲指针 开启新的块组,将其地址信息读入超级 块;返回该块组首地址 结束 超级块中是否有空 创建目录、文件 删 除 目录、文件 返回上一 进入指定目录 查看目录、文件 查询 格式化 结束

文件系统实验报告

嵌入式系统实验报告(二) --嵌入式文件系统的构建 138352019陈霖坤一实验目的 了解嵌入式操作系统中文件系统的类型和作用 了解JFFS2文件系统的优点及其在嵌入式系统中的作用 掌握利用Busybox软件制作嵌入式文件系统的方法 掌握嵌入式linux文件系统的挂载过程 二实验内容与要求 编译BusyBox,以BusyBox为基础,构建一个适合的文件系统; 制作ramdisk文件系统映像,用你的文件系统启动到正常工作状态; 研究NFS作为根文件系统的启动过程。 三Busybox介绍 BusyBox最初是由Bruce Perens在1996年为Debian GNU/Linux安装盘编写的,其原始构想是希望在一张软盘上能放入一个开机系统,以作为急救盘和安装盘。后来它变成了嵌入式Linux设备和系统和Linux发布版安装程序的实质标准,因为每个Linux可执行文件需要数Kb的空间,而集成两百多个程序的BusyBox可以节省大量空间。Busybox集成了包括mini-vi编辑器、/sbin/init、文件操作、目录操作、系统配置等应用程序。 Busybox支持多种体系结构,可以选择静态或动态链接,以满足不同需要。 四linux文件系统 文件系统是对一个存储设备上的数据和元数据进行组织的机制,linux文件系统接口设计为分层的体系结构,从而将用户接口层、文件系统实现层和操作存储设备的驱动程序分隔开。 在文件系统方面,linux可以算得上操作系统中的“瑞士军刀”。Linux支持许多种文件系统,从日志型文件系统到集群文件系统和加密文件系统,而且对于使用标准的和比较奇特的文件系统以及开发文件系统来说,linux是极好的平台,这得益于linux内核中的虚拟文件系统(VFS,也称虚拟文件系统交换器)。 文件结构 Windows的文件结构是多个并列的树状结构,不同的磁盘分区各对应一个树。Linux的文件结构是单个的树,最上层是根目录,其它目录都从根目录生成。不同的linux发行版集

文件系统课程设计报告

设计时间: 2011-1-5至2011-1-7 专业年级:08计科4班: 一.设计目的: 通过操作系统其中一个子系统的设计和实现,掌握Linux文件系统的基本原理、结构和实现方法,掌握Linux文件系统中文件的建立、打开、读/写、执行、属性等系统调用的使用,学会设计简单的文件系统并实现一组操作,以及学习文件系统的系统调用命令,提高对文件系统实现功能的理解和掌握。同时,掌握操作系统设计的方法与技巧,增强系统软件设计的实际工作能力。 二.设计容: 为LINUX 设计一个简单的二级文件系统。本文件系统采用类似DOS系统的文件管理方式,每次调用该文件系统时,首先申请一定的存空间,然后对该存空间进行分配。将申请到的空间划分为目录区,文件区;采用位示图进行空间管理,盘块的分配使用显示(FAT 表)的方式。每次调用该文件系统时自动为其分配空间,并将上次操作的结果从硬盘上调入存;当结束调用时则将操作的结果重新存入硬盘,以便下次调用。(每次使用都会自动搜索文件系统,以此确定是否是第一次使用;若是则格式化生成文件系统,否则读取已存在的文件系统。) 三.设计过程 1、实现功能 该系统具备下列功能: login 用户登录logout 注销 mkdir/md 创建目录rmdir/rd 删除目录 cd/cd .. 修改目录creat 创建文件 open 打开文件dir 显示当前目录和文件 write 读文件 delete 删除文件 close 关闭文件 2、添加功能 (1)制作了一个“操作命令符”列表框,说明接下来如何操作,这样有利于更好地阅读、操作和运行程序,使不懂得程序代码的人也可以运行该程序,更好地理解该程序实现的功能。 (2)在命令解释层函数cmdexp()里加了一些选择和操作功能,增加程序实现的功能,如原来程序只有显示当前目录和文件、创建目录和修改目录的功能,把它拓展到系统所要求的全部功能,并在原有的程序的基础上进行相应的修改,使程序更加完善。 3、设计思路 (1)要将文件存储在磁盘上,必须为之分配相应的存储空间,并对文件存储空间进行管

操作系统课程设计二级文件系统

操作系统课程设计报告 专业:计算机信息处理 学号:09103408 姓名:纪旻材 提交日期:2011-12-28

【设计目的】 1. 课程设计目的是通过一个简单多用户文件系统的设计,加深理解文件系统的内部功能和内部实现。 2. 结合数据结构、程序设计、计算机原理等课程的知识,设计一个二级文件系统,进一步理解操作系统。 3. 通过对实际问题的分析、设计、编程实现,提高学生实际应用、编程的能力 【设计内容】 1、delete 删除文件 2、open 打开文件 3、close 关闭文件 4、write 写文件 【实验环境】 Windows7系统

Visual studio 2010 【相关知识综述】 本文件系统采用两级目录,其中第一级对应于用户账号,第二级对应于用户帐号下的文件。另外,为了简便文件系统未考虑文件共享,文件系统安全以及管道文件与设备文件等特殊内容。 首先应确定文件系统的数据结构:主目录、子目录及活动文件等。主目录和子目录都以文件的形式存放于磁盘,这样便于查找和修改。用户创建的文件,可以编号存储于磁盘上。如:file0,file1,file2…并以编号作为物理地址,在目录中进行登记。 【设计思路】 1 主要数据结构 #define MAXNAME 25 /*the largest length of mfdname,ufdname,filename*/ #define MAXCHILD 50 /*the largest child每个用户名下最多有50个文件*/ #define MAX (MAXCHILD*MAXCHILD) /*the size of fpaddrno*/ typedef struct/*the structure of OSFILE定义主文件*/

计算机二级MS-office操作题及答案

计算机二级MS-office操作题及答案 2017计算机二级MS-office操作题及答案 一、字处理题(共50分) 请在【答题】菜单下选择【进入考生文件夹】命令,并按照题目要求完成下面的操作。 注意:以下的文件必须保存在考生文件夹下。在考生文件夹下打开文档WORD.DOCX。某高校学生会计划举办一场“大学生网络创业 交流会”的活动,拟邀请部分专家和老师给在校学生进行演讲。因此,校学生会外联部需制作一批邀请函,并分别递送给相关的专家 和老师。 请按如下要求,完成邀请函的制作。 (1)调整文档版面,要求页面高度l8厘米、宽度30厘米,页边 距(上、下)为2厘米,页边距(左、右)为3厘米。 (2)将考生文件夹下的图片“背景图片.jp9”设置为邀请函背景。 (3)根据“Word一邀请函参考样式.docx”文件,调整邀请函中 内容文字的字体、字号和颜色。 (4)调整邀请函中内容文字段落对齐方式。 (5)根据页面布局需要,调整邀请函中“大学生网络创业交流会”和“邀请函”两个段落的间距。 (6)在“尊敬的”和“(老师)”文字之间,插入拟邀请的专家和 老师姓名,拟邀请的专家和老师姓名在考生文件夹下的“通讯 录.xlsx”文件中。每页邀请函中只能包含1位专家或老师的姓名, 所有的邀请函页面请另外保存在一个名为“Word一邀请函.docx” 文件中。 (7)邀请函文档制作完成后,请保存“Word.docx”文件。

二、电子表格题(共50分) 请在【答题】菜单下选择【进入考生文件夹】命令,并按照题目要求完成下面的操作。 注意:以下的文件必须都保存在考生文件夹下。中国的人口发展形势非常严峻,为此国家统计局每l0年进行一次全国人口普查,以掌握全国人口的增长速度及规模。按照下列要求完成对第五次、第六次人口普查数据的统计分析: (1)新建一个空白Excel文档,将工作表sheetl更名为“第五次普查数据”,将sheet2更名为“第六次普查数据”,将该文档以“全国人口普查数据分析.xlsx”为文件名进行保存。 (2)浏览网页“第五次全国人口普查公报.htm”,将其中的“2000年第五次全国人口普查主要数据”表格导入到工作表“第五次普查数据”中;浏览网页“第六次全国人口普查公报.htm”,将其中的“2010年第六次全国人El普查主要数据”表格导入到工作表“第六次普查数据”中(要求均从Al单元格开始导入,不得对两个工作表中的数据进行排序)。 (3)对两个工作表中的数据区域套用合适的表格样式,要求至少四周有边框、且偶数行有底纹,并)将所有人口数列的数字格式设为带千分位分隔符的整数。 (4)将两个工作表内容合并,合并后的工作表放置在新工作表“比较数据”中(自A1单元格开始),且保持最左列仍为地区名称、Al单元格中的列标题为“地区”,对合并后的.工作表适当的调整行高列宽、字体字号、边框底纹等,使其便于阅读。以“地区”为关键字对工作表“比较数据”进行升序排列。 (5)在合并后的工作表“比较数据”中的数据区域最右边依次增加“人口增长数”和“比重变化”两列,计算这两列的值,并设置合适的格式。其中:人口增长数=2010年人口数一2000年人口数;比重变化=2010年比重一2000年比重。

二级文件系统演示

湖南工业大学 课程设计 资料袋 学院(系、部)学年第学期课程名称计算机操作系统指导教师职称 学生姓名专业班级学号 题目文件系统演示 成绩起止日期年月日~年月日 目录清单

课程设计任务书 — 学年第 学期 学院(系、部) 专业 班级 课程名称: 计算机操作系统 学生姓名: 设计题目: 文件系统演示 指导教师: 完成期限:自 年 月 日至 年 月 日 共 周 内 容 及 任 务 一、设计内容 设计一个简单的多用户文件系统。即 ①在系统中用一个文件来模拟一个磁盘; ②此系统至少有:Create 、delete 、open 、close 、read 、write 等和部分文件属性的功能。 ③实现这个文件系统。 ④能实际演示这个文件系统。 基本上是进入一个界面(此界面就是该文件系统的界面)后,可以实现设计的操作要求。 二、设计任务 课程设计说明书(纸质+电子版),内容包括:设计内容、系统分析(包括可行性分析、需求分析等)及功能分析;系统设计(要求画出系统整体功能框图、流程图、并给出相应地关键的代码且对所使用的主要数据结构进行说明等。)、设计总结(评价/遇到的问题/体会/建议等)、使用说明等。 三、设计要求 1. 按功能要求开发系统,能正确运行。程序代码书写规范,有充足的注释。 2. 课程设计所使用的编程语言任选,但建议使用C 或C++; 3. 绿色软件:程序运行不需安装,避免写系统和注册表; 进 度 安 排 起止日期 工作内容 完成选题、课题分析、课题设计、编写程序 程序调试、完善代码 优化测试系统、程序答辩 撰写并提交课程设计说明书 (含电子文档)、源程序等。 主 要 参 考 资 料 [1] 胡志刚,谭长庚等. 《计算机操作系统》.中南大学出版社. 2005 [2] 罗宇,邹鹏,邓胜兰.操作系统[M].北京:电子工业出版社,2012. [3] 面向对象程序设计与C++语言.朱战立,宋新爱.电子工业出版社,2010.7 [4] C++面向对象程序设计.谭浩强.清华大学出版社,2006.1 [5] 任爱华,李鹏,刘方毅.操作系统实验指导, 清华大学出版社,2004. [6] 徐虹.操作系统实验指导-基于LINUX 内核, 清华大学出版社, 2004. 指导教师(签字): 年 月 日 系(教研室)主任(签字): 年 月 日

操作系统课程设计文件系统管理)

操作系统课程设计Array文件系统管理 学院计算机学院 专业计算机科学与技术 班级 姓名 学号 2013年1月8日 广东工业大学计算机学院制 文件系统管理 一、实验目的 模拟文件系统的实现的基本功能,了解文件系统的基本结构和文件系统的管理方法看,加深了解文件系统的内部功能的实现。通过高级语言编写和实现一个简单的文件系统,模拟文件管理的工作过程,从而对各种文件操作系统命令的实质内容和执行过程有比较深入的了解。 二、实验内容和要求 编程模拟一个简单的文件系统,实现文件系统的管理和控制功能。在用户程序中通过使用文件系统提供的create,open,read,write,close,delete等文件命令,对文件进行操作。 以下报告主要包括: 1.可行性分析 2.需求分析 3.概要设计

4.详细设计 5.测试 6.总结 三、可行性分析 1、技术可行性 对于图形编程还不了解,但是经过本学期的三次实验的练习,可以设计好命令操作界面。利用大二期间学习的数据结构可以模拟出此课程设计的要求。 2、经济可行性 课程设计作为本课程的练习及进一步加深理解。与经济无关,可以不考虑。(零花费,零收益) 3.法律可行性 自己编写的程序,仅为练习,不作其他用途,与外界没什么联系,可行。 四、需求分析 编写程序实现文件系统,主要有以下几点要求: 1、实现无穷级目录管理及文件管理基本操作 2、实现共享“别名” 3、加快了文件检索 五、概要设计 为了克服单级目录所存在的缺点,可以为每一位用户建立一个单独的用户文件目录UFD(User File Directory)。这些文件目录可以具有相似的结构,它由用户所有文件的文件控制块组成。此外,在系统中再建立一个主文件目录MFD (Master File Directory);在主文件目录中,每个用户目录文件都占有一个目

计算机操作系统课程设计_简单的二级文件系统

《操作系统》课程设计 题目:设计一个简单二级文件系统 专业:计算机科学与技术 年级:文计091-1 姓名:韩启鸣 学号:200990514103 指导教师:任满杰 时间:2011-2012第二学期 2012年9月1日

一、设计内容 1、可以实现下列几条命令。 Format 格式化 Dir 列文件目录 Create 创建文件 Delete 删除文件 Deldir 删除目录 Open 打开文件 Close 关闭文件 Search 查询文件 Copy 拷贝文件 Cut 剪切文件 二、开发环境 Windows操作系统 Microsoft Visual C++ 三、分析设计 (一)实验原理 通过程序模拟Linux文件系统,用一个二进制文件(FileSystem.disk)来模拟磁盘.设计一个多用户的二级文件系经统、实现一般的创建文件、目录,删除文件、目录,切换目录,打开、关闭文件、读写文件等操作。 文件系统,包含格式化,显示文件(目录),创建文件等几个简单命令的实现,而且能完成超级块的读写,节点的读写等过程. 本文件系统采用两级目录,其中第一级对应 于用户账号,第二级对应于用户账号下的文件。另外,为了简单本文件系统未考虑文件共享、文件系统安全以及管道文件与设备文件等特殊内容。

1.程序执行流程图: 开始 初始化 选择程序 创建目录、文件删除 目录、 文件 返 回 上 一 进入 指定 目录 查看目 录、文 件 查询 格式化 结束

2.数据块的分配和回收 (二)程序结构 设计FileSystem 类负责管理磁盘空间和磁盘内存I节点,负责对磁盘空间和磁盘数据进行优化管理。并提代接口言方法供用户或程序调用。 内存 System 用户1磁盘 用户2用户3用户n 开始 系统是否有空块? 返回当前空闲块地址;超级块空闲指针加1 开启新的块组,将其地址信息读入超级块; 返回该块组首地址 结束 超级块中是否有空块?

Linux文件系统实验报告

黄冈师学院 提高型实验报告 实验课题文件系统的设计与实现(实验类型:□综合性 设计性□应用性) 实验课程操作系统原理 实验时间2015-2016 第二学期 学生何正发 专业班级软件工程1401 学号07

成绩: 一、实验目的和要求 1、熟悉操作系统设计的过程,巩固操作系统的基本知识,加深对操作原理、功能及各种不同的存储管理方法理解与应用; 2、学会运用各种语言、软件开发新软件的基本方法; 3、增强实际应用能力和动手操作能力。 二、实验条件 Win7 /Windows 8.1/Linux等操作系统,装有java、C、C++、C#等语言工具的环境。 三、实验原理分析 可以选择最佳适应算法,按照从小到大的次序组成空闲区自由链,当用户作业或进程申请一个空闲区时,存储管理 程序从表头开始查找,当找到第一个満足要求的空闲区时,停止查找。如果该空闲区大于请求表中的请求长 度,将减去请求长度后的剩余空闲区部分留在可用表中。回收时,从作链中删去要回收的作业块,同时在空 闲链中插入该作业大小的空闲区,并按顺序排列 四、实验方案或步骤 1、应用环境、需求分析 本模拟系统主要针对文件的管理和操作名主要有:创建用户、文件、文件夹,读文件,写文件,执行文件,关闭文件,删除用户、文件夹、文件的功能。 创建用户、文件、文件夹:在对系统发出操作命令之前必须先登录用户,然而登录之前必须创建该用户。在创建完后,可通过登录用户来创建文件和文件夹。在创建文件时可设置文件的属性和输入文件的容。 读文件:读取任何已创建的只读或读写文件的容;如果所要读的文件不是可读文件时,系统会显示该文件不可读;如果所读文件不存在,系统会显示文件不存在。 写文件用户可写或重写读写文件中的容,并保存文件中的重写容,以供下次读取;当所要写的文件不是可写的文件时,系统会显示该文件不可写;当所要写的文件并不存在时,系统会显示该文件不存在。

文件管理系统课程设计

课程名称:操作系统 实验题目:文件管理系统 1、课程设计选题 (3) 1.1主要设计内容 3 1.2主要设计思路 3 2、课程设计需求分析 3 3、概要设计 (4) 3.1整体设计框架 4 3.2各模块的基本功能 4 4、系统实现 5 4.1原理 6 4.2各模块算法思想 6 4.3流程图描述 9 4.4代码描述 10 5、系统测试 11

5.1系统主界面 11 5.2子系统功能测试 11 6、总结 19 7、参考文献样式 19 1、课程设计选题 1.1主要设计内容 本课程设计主要是用C语言编写,设计的是一个模拟的多用户多级目录的文 件管理系统。通过具体的文件存储空间的管理、文件的物理结构、目录结构和文 件操作的实现,加深对文件系统内部功能和实现过程的理解。 1.2主要设计思路 首先系统要完成初始化的任务,建立起整个系统,等待用户注册,注册成功后,用户登录模块,对用户的用户名进行验证,如果用户登录成功,则系统进入 等待用户输入的状态,用户选择相应指令后,系统按照即定方式处理用户请求, 用户退出后,系统转入登录模块,等待下一位用户的登录。 2、课程设计需求分析 本系统为多用户多级目录的文件管理系统,用户可以根据所注册的用户名登 陆来对文件或是文件进行操作。多用户功能可以满足不同用户不同的需求,同时 也起到了很好的保密作用。 文件系统为用户提供了按名存取的功能,以使得用户能透明地存储访问文

件。为了实现按名存取,文件需要对文件存储设备进行合理的组织,分配;对存储在文件存储设备上的文件进行保护,保密和提供共享的手段。另外,文件系统还要提供检索文件或文件中记录的手段,文件系统就是完成上述功能的一组软件和数据结构的集合。 模拟一个文件管理系统,要完成对文件的基本操作,文件的基本操作有文件、文件夹的打开、新建、删除和读取写入文件,创建更改目录,列出目录内容等信息。系统建立了文件目录树,存储文件系统中的所有文件。对于用户名下的文件,用文件目录树的分枝来存贮。 采用命令行操作界面很直观,也方便用户进行操作,用户只要按照操作界面所显示的命令来操作就行了。 因为存在着同一个目录下不能有同名文件的问题。所以在进行文件的基本操作时要考虑到在已经有的文件中是否有同名文件,有的话则输出提示信息。 3、概要设计 3.1整体设计框架 系统初始化界面是由用户注册,用户登录,退出系统三个模块组成。用户登录模块再由创建用户,进入目录,删除用户,显示所有用户,显示位示图,修改用户资料几大模块组成。然后各个模块再由一些小模块组成。其中创建文件,打开关闭文件,读写文件等文件操作模块包括在进入目录模块里面。 3.2各模块的基本功能 3.21系统初始化 系统的初始化包括初始化了磁盘的空间即位示图、一个管理员用户 3.22用户注册模块 用户可以在这里注册,用户名和密码的最大长度都为10个字节,如果用户名不重复的话,则注册成功,用户的权限默认为一般用户。

FAT文件系统操作系统课程设计实验报告

操作系统课程设计之三 设计任务:模拟OS文件系统 在任一OS(Window或者Dos;也可以是在Linux下,但要求能将结果演示给老 师看)下,建立一个大文件,把它假象成一张盘,在其中实现一个简单的模拟OS 字 ,第 ⑤、每个目录实际能放下文件或子目录30项。 ⑸、文件系统空间分配: ①、第0个盘块(1k)存放磁盘信息(可以设定为格式说明“FAT32”、盘块大小,盘块数等 内容) ②、第1个盘块起,至125盘块,共125个盘块(125k)存放FAT内容 ③、第126、127(2个)盘块,存放位示图

④、从第128盘块至10000盘块,皆为数据(区)盘块,其逻辑编号从0开始,至 9872号数据盘块,即第0数据盘块为128号盘块,第1数据盘块为129号盘块,… ⑤、第0数据盘块(即128号盘块),存放根目录(同样只用一个盘块作根目录), 由于第0、1目录项为“.”(本目录), “..”(父目录),因此根目录下同样只能存放30个文件或目录,并且从第2个目录项开始。 ⑥、文件或子目录数据,放在第1数据盘块及以后的数据盘块中,由用户按需要使 用。 内容 ⑺、删除文件 #DelFile 文件名.扩展名,在文件所在的目录项中,将第一个字节变为0xE5,并同时修改FAT内容和位示图内容;如果文件不存在,给出出错信息 ⑻、文件拷贝 #CopyFile 老文件,新文件,为新文件创建一个目录项,并将老文件内容复制到新文件中,并同时修改FAT内容和位示图内容 ⑼、显示位示图内容

#ShowBitMP,将位示图内容(已有信息部分),显示在屏幕上(按十六进制)⑽、显示FAT内容 #ShowFAT,将FAT内容(已有信息部分),显示在屏幕上(按十六进制) 4、程序的总体流程为: ⑴、输出提示符#,等待接受命令,分析键入的命令; ⑵、对合法的命令,执行相应的处理程序,否则输出错误信息,继续等待新命令 关于对FAT表和MAP表的用法 1.当要用到数据块是,查询MAP表(因为只做比较查询即可),查询到的未用位置 置1,然后在FAT表上进行相应记录,在本程序做出的规定是,当文件夹FAT 表做-1,若是文件则按照FAT做对应的顺序记录,最后一块同样是-1结束,2.回收的时候,是按照FAT表的首项,做顺序置0,然后MAP也在相应位置置0

操作系统课程设计Linux二级文件系统设计

操作系统课程设计Linux二级文件系 统设计

操作系统课程设计报告专业:软件工程

学号: 姓名:马 提交日期: /1/10 【设计目的】 1、经过一个简单多用户文件系统的设计,加深理解文件系统的内 部功能和内部实现 2、结合数据结构、程序设计、计算机原理等课程的知识,设计一 个二级文件系统,进一步理解操作系统 3、经过对实际问题的分析、设计、编程实现,提高学生实际应用、编程的能力 【设计内容】 为Linux系统设计一个简单的二级文件系统。要求做到以下几点: 1.能够实现下列几条命令: login 用户登录

dir 列目录 create 创立文件 delete 删除文件 open 打开文件 close 关闭文件 read 读文件 write 写文件 cd 进出目录 2.列目录时要列出文件名,物理地址,保护码和文件长度 3.源文件能够进行读写保护 【实验环境】 C++ DevCpp 【设计思路】 本文件系统采用两级目录,其中第一级对应于用户账号,第二级对应于用户帐号下的文件。另外,为了简便文件系统未考虑文件共享,文件系统安全以及管道文件与设备文件等特殊内容。

首先应确定文件系统的数据结构:主目录、子目录及活动文件等。主目录和子目录都以文件的形式存放于磁盘,这样便于查找和修改。用户创立的文件,能够编号存储于磁盘上。如:file0,file1,file2…并以编号作为物理地址,在目录中进行登记。 结构体: typedef struct /*the structure of OSFILE*/ { int fpaddr; /*file physical address*/ int flength; /*file length*/ int fmode; /*file mode:0-Read Only;1-Write Only;2-Read and Write; 3-Protect;*/ char fname[MAXNAME]; /*file name*/ } OSFILE; //存放重要信息 typedef struct /*the structure of OSUFD*/ { char ufdname[MAXNAME]; /*ufd name*/

操作系统课程设计-模拟文件系统

目录 第1章需求分析 (1) 第2章概要设计 (1) 2.1 系统的主要功能 (1) 2.2系统模块功能结构 (1) 2.3运行环境要求 (2) 2.4数据结构设计 (2) 第3章详细设计 (3) 3.1模块设计 (3) 3.2算法流程图 (3) 第4章系统源代码 (4) 第5章系统测试及调试 (4) 5.1运行结果及分析 (4) 5.2系统测试结论 (5) 第6章总结与体会 (6) 第7章参考文献 (6) 附录 (7)

第1章需求分析 通过模拟文件系统的实现,深入理解操作系统中文件系统的理论知识, 加深对教材中的重要算法的理解。同时通过编程实现这些算法,更好地掌握操作系统的原理及实现方法,提高综合运用各专业课知识的能力;掌握操作系统结构、实现机理和各种典型算法,系统地了解操作系统的设计和实现思路,并了解操作系统的发展动向和趋势。 模拟二级文件管理系统的课程设计目的是通过研究Linux的文件系统结构,模拟设计一个简单的二级文件系统,第一级为主目录文件,第二级为用户文件。 第2章概要设计 2.1 系统的主要功能 1) 系统运行时根据输入的用户数目创建主目录 2) 能够实现下列命令: L ogin 用户登录 Create 建立文件 Read 读取文件 Write 写入文件 D elete 删除文件 Mkdir 建立目录 Cd 切换目录 Logout 退出登录 2.2系统模块功能结构

2.3运行环境要求 操作系统windows xp ,开发工具vc++6.0 2.4数据结构设计 用户结构:账号与密码结构 typedef struct users { char name[8]; char pwd[10]; }users; 本系统有8个默认的用户名,前面是用户名,后面为密码,用户登陆时只要输入正确便可进入系统,否则提示失败要求重新输入。 users usrarray[8] = { "usr1","usr1", "usr2","usr2", "usr3","usr3", "usr4","usr4", "usr5","usr5", "usr6","usr6", "usr7","usr7", "usr8","usr8", }; (3)数据结构说明 a)文件结构链表 struct fnode { char filename[FILENAME_LENGTH]; int isdir; int isopen; char content[255]; fnode *parent; fnode *child; fnode *prev; fnode *next; }; b)函数介绍 fnode *initfile(char filename[],int isdir);//初始化文件或目录 void createroot();//建立系统根目录 int run();系统运行 int findpara(char *topara);对参数进行处理 bool chklogin(char *users, char *pwd);检查账号与口令 void help();命令列表 int mkdir();建立目录 int create();建立文件

二级目录文件

青岛理工大学 操作系统课程设计报告 院(系):计算机工程学院 专业:计算机科学与技术班级:_计算122 学生姓名:马鹏__学号: 201207059 欧阳涛__201207060 题目:___模拟二级文件管理系统__ 起迄日期:_ 2015.07.13-2015.07.24___ 设计地点:现代教育中心B303、B305 指导教师:熊晓芸 2014—2015年度第 2 学期 完成日期: 2015 年 7 月 24 日

一、课程设计目的 通过研究Linux的文件系统结构,模拟设计一个简单的二级文件系统,第一级为主目录文件,第二级为用户文件。 进行操作系统课程设计主要是在学习操作系统课程的基础上,在完成操作系统各部分实验的基础上,对操作系统的整体进行一个模拟,通过实践加深对各个部分的管理功能的认识,还能进一步分析各个部分之间的联系,最后达到对完整系统的理解。同时,可以提高运用操作系统知识解决实际问题的能力;锻炼实际的编程能力、创新能力及团队组织、协作开发软件的能力;还能提高调查研究、查阅技术文献、资料以及编写软件设计文档的能力。 二、课程设计内容及小组成员分工 1.设计内容:通过研究Linux的文件系统结构,模拟设计一个简单的二级文件 系统 1)能够实现下列命令: ●Login 用户登录 ●Dir列文件目录 ●Create 创建文件 ●Delete 删除文件 ●Open 打开文件 ●Close 关闭文件 ●Read 读文件 ●Write 写文件 ●Bit 显示外部存储空间的位示图(按16*16的形式显示) 2)系统能检查键入命令的正确性,出错时应能显示出错原因 3)列目录时要列出文件目录、文件名和文件长度,以及系统总容量,占 用容量、空闲容量(容量以字节为单位) 4)不允许对打开的文件执行重复打开操作或执行删除操作 5)外部存储空间的大小为256个Block,每个Block的大小为512字节, 盘块号从1开始编号 6)文件系统对外部存储空间采用连续分配的方式 控制块的大小为32字节,其中文件名字占8个字节,参照MS-DOS设计文件控制块的数据结构;FAT由文件名、起始盘块号,长度、最后一块字 节数四部分组成,占12个字节,磁盘的目录最大能存放256个目录项。目 录固定放在外部存储器的1-6号盘块(12*256/512=6)。 2.员工分工: 学号:201207059 做总体设计以及函数接口

文件系统实验报告

实验二文件系统实验报告

一.实验简介 本实验要求在假设的I/O 系统之上开发一个简单的文件系统,这样做既能让实验者对文件系统有整体了解,又避免了涉及过多细节。用户通过create, open, read 等命令与文件系统交互。文件系统把磁盘视为顺序编号的逻辑块序列,逻辑块的编号为0 至L-1。I/O 系统利用内存中的数组模拟磁盘。 实际物理磁盘的结构是多维的:有柱面、磁道、扇区等概念。I/O 系统的任务是隐藏磁盘的结构细节,把磁盘以逻辑块的面目呈现给文件系统。逻辑块顺序编号,编号取值范围为0 至L .. 1,其中L 表示磁盘的存储块总数。实验中,我们可以利用字符数组ldisk[L][B] 构建磁盘模型,其中 B 表示每个存储块的长度。I/O 系统从文件系统接收命令,根据命令指定的逻辑块号把磁盘块的内容读入命令指定的内存区域,或者把命令指定的内存区域内容写入磁盘块。 我设计的文件系统拥有三个用户。 二.具体说明 1.文件系统的组织:磁盘的前k 个块是保留区,其中包含如下信息:位图和文件描述符。位图用来描述磁盘块的分配情况。位图中的每一位对应一个逻辑块。创建或者删除文件,以及文件的长度发生变化时,文件系统都需要进行位图操作。前k 个块的剩余部分包含一组文件描述符。每个文件描述符包含如下信息: ?文件长度,单位字节 ?文件分配到的磁盘块号数组。该数组的长度是一个系统参数。在实验中我们可以把它设置为一个比较小的数,例如3。 2.目录:我们的文件系统中仅设置一个目录,该目录包含文件系统中的所有文件。除了不需要显示地创建和删除之外,目录在很多方面和普通文件相像。目录对应0 号文件描述符。初始状态下,目录中没有文件,所有,目录对应的描述符中记录的长度应为0,而且也没有分配磁盘块。每创建一个文件,目录文件的长度便增加一分。目录文件的内容由一系列的目录项组成,其中每个目录项由如下内容组成: ?文件名 ?文件描述符序号 3.对文件的操作: 文件系统需提供如下函数;create, destroy, open, read, write。 ?create(filename): 根据指定的文件名创建新文件。 ?destroy(filename): 删除指定文件。 ?open(filename): 打开文件。该函数返回的索引号可用于后续的read, write, lseek, 或close 操作。 ?close(index): 关闭制定文件。 ?read(index, mem_area, count): 从指定文件顺序读入count 个字节mem_area 指定的内存位

计算机二级PowerPoint练习题目

(1)将演示文稿的第一页幻灯片调整为“标题幻灯片”版式。 (2)为演示文稿应用一个美观的主题样式,并利用背景样式对颜色进行修改。 (3)在演示文稿的第2页,创建如下文本框格式。 a.插入横排文本框; b.输入“计算机系统按性能和价格分类”; c.字体类型:华文隶书;字体大小:32; d.形状填充和形状轮廓:“橙色”;(标准色) e.形状效果:棱台/冷色斜面。 (3)在演示文稿的第3页,创建如下文本框格式。 a.插入垂直文本框; b.输入“大型计算机”; c.形状填充:“浅蓝”; d.形状轮廓:“浅绿”; e.形状效果:发光:“橄榄色11pt发光强调文字颜色3”; 棱台/松散嵌入;三维旋转:等轴右上 (4)在演示文稿的第4页插入一个6行5列的表格,列标题分别为“图书名称”、“出版社”、“作者”、“定价”、“数量”。

(5)在演示文稿的第5页,为图片创建自定义路径动画。(注意:左上到右下) (6)演示文稿中幻灯片的切换使用不同的效果。 (7)在演示文稿的第6页,创建如下图表。 (8)在演示文稿的第7页,使用SmartArt图形创建一个组织结构图。 a.层次结构/组织结构图。 b.在下方添加形状、样式:优雅。

(9)在演示文稿的第8页,背景设置;(图案填充、纹理填充、图片填充)

(10)为演示文稿添加背景音乐(全程播放)。 (11)在演示文稿的第9页,插入图片,并设置图片样式:圆形对角,白色。 (12)在演示文稿的第10页,添加艺术字。 注意: 插入艺术字:填充-橙色;强调文字颜色颜色6; 文本效果/转换/弯曲/波形1 (13)在演示文稿的第11页,设置相应的超链接。

操作系统课程设计文件系统

操作系统课程设计文件系统#include stdio.h #include memory.h #include string #include iostream using namespace std; struct FCB { char fname[16];//文件名 int type;//1代表普通文件2代表目录文件0表示空文件 int size;//文件大小 int fatherBlockNum;//当前的父目录盘块号 int currentBlockNum;//当前的盘块 void initialize() { strcpy(fname,"[message]"); type=0; size=0; fatherBlockNum=currentBlockNum=0; }

}; const char*FilePath="C:\myfiles"; const int BlockSize=512;//盘块大小(可配置) const int OPEN_MAX=5;//能打开最多的文件数 const int BlockCount=BlockSize/sizeof(int);//盘块数 const int DiskSize=BlockSize*BlockCount;//磁盘大小 const int BlockFcbCount=BlockSize/sizeof(FCB);//目录文件的最多FCB数 //const int IOBUF_SIZE=512; //char IOBuffer[IOBUF_SIZE]; int OpenFileCount=0; struct OPENLIST//用户文件打开表 { int files;//当前打开文件数 FCB f[OPEN_MAX];//FCB拷贝 OPENLIST() { files=0; for(int i=0;i OPEN_MAX;i++){ f[i].fatherBlockNum=-1;//为分配打开

操作系统课程设计Linux二级文件系统设计

操作系统课程设计报告 专业:软件工程 学号: 姓名:马 提交日期:2017/1/10

【设计目的】 1、通过一个简单多用户文件系统的设计,加深理解文件系统的内部功能和内部实现 2、结合数据结构、程序设计、计算机原理等课程的知识,设计一个二级文件系统,进一步 理解操作系统 3、通过对实际问题的分析、设计、编程实现,提高学生实际应用、编程的能力 【设计内容】 为Linux系统设计一个简单的二级文件系统。要求做到以下几点: 1.可以实现下列几条命令: login 用户登录 dir 列目录 create 创建文件 delete 删除文件 open 打开文件 close 关闭文件 read 读文件 write 写文件 cd 进出目录 2.列目录时要列出文件名,物理地址,保护码和文件长度 3.源文件可以进行读写保护 【实验环境】 C++ DevCpp 【设计思路】 本文件系统采用两级目录,其中第一级对应于用户账号,第二级对应于用户帐号下的文件。另外,为了简便文件系统未考虑文件共享,文件系统安全以及管道文件与设备文件等特殊内容。 首先应确定文件系统的数据结构:主目录、子目录及活动文件等。主目录和子目录都以文件的形式存放于磁盘,这样便于查找和修改。用户创建的文件,可以编号存储于磁盘上。如:file0,file1,file2…并以编号作为物理地址,在目录中进行登记。 结构体: typedef struct /*the structure of OSFILE*/ { int fpaddr; /*file physical address*/ int flength; /*file length*/ int fmode; /*file mode:0-Read Only;1-Write Only;2-Read and Write; 3-Protect;*/ char fname[MAXNAME]; /*file name*/ } OSFILE; //存放重要信息 typedef struct /*the structure of OSUFD*/ { char ufdname[MAXNAME]; /*ufd name*/ OSFILE ufdfile[MAXCHILD]; /*ufd own file*/ }OSUFD; //用户下面的文件

实验四 文件系统实验报告

实验四文件系统实验 一 . 目的要求 1、用高级语言编写和调试一个简单的文件系统,模拟文件管理的工作过程。从而对各种文件操作命令的实质内容和执行过程有比较深入的了解。 2、要求设计一个 n个用户的文件系统,每次用户可保存m个文件,用户在一次运行中只能打开一个文件,对文件必须设置保护措施,且至少有Create、delete、open、close、read、write等命令。 二 . 例题: 1、设计一个10个用户的文件系统,每次用户可保存10个文件,一次运行用户可以打开5个文件。 2、程序采用二级文件目录(即设置主目录[MFD])和用户文件目录(UED)。另外,为打开文件设置了运行文件目录(AFD)。 3、为了便于实现,对文件的读写作了简化,在执行读写命令时,只需改读写指针,并不进行实际的读写操作。 4、算法与框图: ①因系统小,文件目录的检索使用了简单的线性搜索。 ②文件保护简单使用了三位保护码:允许读写执行、对应位为 1,对应位为0,则表示不允许读写、执行。 ③程序中使用的主要设计结构如下: 主文件目录和用户文件目录( MFD、UFD) 打开文件目录( AFD)(即运行文件目录)

文件系统算法的流程图如下: 三 . 实验题: 1、增加 2~3个文件操作命令,并加以实现。(如移动读写指针,改变文件属性,更换文件名,改变文件保护级别)。 #include #include #include #include #define MAXSIZE 100 #define ADDSIZE 50 #define PT elem+l-> length #define N 4 typedef struct term{/*班级和学期的结构体*/ char class1[10]; char term1[10]; }term; typedef struct student{/*学生成绩信息的结构体*/ term st;/*班级和学期结构体放于此结构体中*/ char num[10]; char name[12]; float course[4]; float total; float average; int bit; }lnode,*stu; typedef struct{ lnode *elem;/*指向上个结构体的指针*/ int size;/*最大能放lnode结构体成员的个数*/ int length;/*当前长度*/ }sqack,*sq; sqack *l; void init(void)/*动态分配存储空间*/ { l-> elem=(stu)malloc(MAXSIZE*sizeof(lnode)); l-> length =0; l-> size=MAXSIZE; } void input(void)/*输入学生的信息*/ { lnode *newbase,*p; char cla[10],ter[10],ch; int n,i; if(l-> length> =l-> size){ newbase=(stu)realloc(l-> elem,(l-> size +ADDSIZE)*sizeof(lnode));/*追加存储空间*/ l-> elem =newbase; l-> size +=ADDSIZE; } p=l-> elem; do { printf( "输入班级和学期(学期用这种格式,如2005年上学期2005 1,2005年下学期2005 2;先输入班级,回车后再输入学期)\n "); gets(cla); gets(ter); printf( "要输入多少个名单?"); scanf( "%d ",&n); printf( "输入学生的成绩\n学号\t姓名\t科目1\t科目2\t科目3\t科目4\n "); for(i=0;i num ,p-> name,p-> course[0],p-> course[1],p-> course[2],p-> course[3]); strcpy(p-> st.class1,cla); strcpy(p-> st.term1,ter); ++l-> length ; } printf( "要继续吗?(y/n) ");

相关主题
文本预览
相关文档 最新文档