文件目录管理实验报告

文件目录管理实验报告
文件目录管理实验报告

操作系统课程设计报告采用二级目录实现文件管理

学院:信息工程学院

班级:计科1002班

姓名:杨辉

学号:101304230

指导教师:邹姝稚

时间:2013年1月

成绩:

目录

一设计目的 (3)

二课题任务 (3)

三课题相关知识 (4)

四课题设计 (6)

五设计内容 (8)

六运行与测试 (14)

七设计总结 (17)

一.设计目的:

文件系统是现代OS用来存储和管理信息的机构,具有按名存取的功能,不仅能方便用户对信息的使用,也有效提高了信息的安全性。本课题模拟文件系统的目录结构,并在此基础上实现文件的各种操作方法。

通过课程设计, 深入理解文件目录的作用和功能,掌握文件打开结构,熟悉与文件有关的系统调用,从而更好的掌握文件系统的概念。

(1)掌握文件系统的基本原理、结构和实现方法。

(2)掌握文件系统中文件的建立、打开、读/写、执行、属性等系统调用的使用

(3)学会设计简单的文件系统并实现一组操作

(4)通过实验学习文件系统的系统调用命令,提高文件系统实现功能的理解和掌握。

二.课题任务

为简单起见,假设文件物理结构为连续结构,编程模拟一个简单的文件系统,实现对文件的各种管理和控制功能。

1.文件目录采用二级目录结构,第一级为文件目录MFD,如图1所示;第二级为用户文件目录UFD,如图2所示。

在UFD中,文件保护方式,用0表示文件可读;用1表示文件可读可写,执行,用2表示文件可写。

2.为加速文件存取,为每个用户建立一张用户打开文件表UOF,用以记录该用户当前正在使用的文件。假定最多允许打开4个文件,该表设置问4项,当打开文件个数超过4时,应给出出错信息。为此应该设置一个用户打开文件计数器,以控制文件打开个数,计数器初始化为0.UOF结构图如图3所示。

在图3中,“文件操作方式”时指文件打开后要执行的操作,“状态”是指用户打开文件表的各个表象为空表目或被占用。读写指针用来指出文件的存取位置。出事状态下,读指针=1,写指针=文件长度,文件长度=0。

用户建立或打开一个文件时,将制定文件的说明信息登记在用户打开文件表中,其中为了给创建的文件分配磁盘空间,可引入一个计数器,用它来模拟磁盘使用情况,初始化为10。假定一个磁盘块大小为64个字节。

3.为该文件系统提供6条操作命令:创建、打开、读、写、关闭、删除、复制、粘贴等。要创建文件并向文件中保存信息时,用户程序应用create、write、close等3条命令来实现;当要读文件时,用户文件应使用open、read、close等3条命令来实现。

4.在该模拟系统中,应先建立主文件目录、用户文件目录和用户打开文件表,然后接受合法用户,给出一个菜单,按用户选择执行相应操作。

三.课题相关知识

设计一个简单的二级文件系统

设计内容:

编写程序模拟实现一个简单的文件管理系统,方便用户使用。

设计方法:使用两个结构体,USD、LIST分别存储用户和文件两个层次的数据信息,LIST 链表有两个指针child、next,分别存储下一级文件和其他同级文件而实现树型的多级文件存储和管理。

结构体如下:

typedef struct list LIST;

struct list

{

char listname[10];///文件名长度

int type;

int length;/////文件长度

int protect;/////保护模式,0为只读1为可读写

int flag;//////标志,为0时创建文件夹,为1时创建文件

int mark;///标志文件状态,是否忙碌

char* content;

struct list *parent;

struct list *child;

struct list *next;

};

typedef struct usd USD;

struct usd

{

char username[10];////用户名长度

LIST *list;

struct usd *next;

};

除此以外,还用到一下自定义函数,其功能注释如下:////函数声明/////

void displayusermenu();///用户管理界面菜单

void time();///系统时间

void displayfilemenu();///文件管理界面菜单

void creatuser();///新建用户

void deleteuser();///删除用户

void displayuser();///显示用户

void userhelp();///用户管理帮助

void filehelp();///文件管理帮助

void selectuser();///选择用户

void displaylist();///显示文件或者文件夹

void creatfile(LIST *qq,int flag);///创建文件(夹)

void deletefile(LIST *qq,int flag);///删除文件(夹)

void openfile();///打开文件

void readfile(); ///读取文件

void writefile(); ///写入文件

void closefile();///关闭文件

void next();///下一层文件夹

void back();//上一层文件夹

void copyfile();//复制文件

void pastedfile();///粘贴文件

void quit();///直接退出系统

void dispshow(LIST *qq);///显示用户下文件

四.课题设计

1、系统执行流程图

2、创建文件(夹)

3、删除文件(夹)

五.设计内容:

主要链表:USD *user=NULL,*currentuser=NULL;

LIST *list=NULL,*currentlist=NULL,*copylist=NULL;

创建用户模块:

void creatuser() ///创建用户

{

int i;

char s;

USD *p,*q=user;

system("cls");

p=get(USD);

for(i=1;q!=NULL;i++)q=q->next; // i指示当前用户个数

q=user;

printf("\n创建一个新用户\n");

printf("\n请输入第%d个用户名: ",i);

scanf("%s",p->username); //输入新用户的名字

LIST *l=list;

l=get(LIST);

strcpy(l->listname,p->username);

l->next=NULL;

l->type=1;

l->parent=NULL;

l->child=NULL;

p->list=l;

p->next=NULL;

if(user==NULL)

{

user=p; //若user为空,则把P复给user

}

else //若user不为空,则以有旧用户存在

{

while(q->next!=NULL){ //寻找最后一个用户

if(strcmp(p->username,q->username)==0){ //比较,看系统是否已经存在该用户

printf("\n\tthe user has exit ! try again !\n\n"); ///提示出错信息

getchar();getchar();system("cls");

displayusermenu();

}

q=q->next;

}

if(strcmp(p->username,q->username)==0){///检查提示重名并提示信息printf("\n该用户已经存在!无法创建该用户!\n\n");

getchar();getchar();system("cls");

displayusermenu();

}

q->next=p; //继续寻找下一个字符

}

printf("\n是否要再创建一个用户?(Y/N):"); //输入下一个用户

scanf("%s",&s);

switch(s){

case 'y':creatuser();break;

case 'Y':creatuser();break;

case 'n':displayusermenu();break;

case 'N':displayusermenu();break;

default :displayusermenu();break;

}

}

删除用户模块:

void deleteuser() //删除用户

{

char n[10];

USD *p=user,*pre=NULL;

displayuser();

if(!p){printf("\n系统无用户可删除!\n"); //P为空,报错,必须先创建一个用户

getchar();getchar();system("cls");

displayusermenu();}

printf("\n\n请输入要删除的用户名:");

scanf("%s",n);

while(p!=NULL)

{

if(strcmp(p->username,n)==0) //寻找所要删除的用户

{

if(p==user)

{

user=user->next; //若是第一个用户,则释放P }

else

{

pre->next=p->next;

}

free(p);

printf("\n\n\n^^已经成功删除用户[%s]!!!^^",n);

break;

}

else

{

pre=p;

p=p->next;

}

}

if(p==NULL) //找不到用户

{

printf("\n\n找不到该用户!请确认该用户是否存在!\n");

}

getchar();getchar();system("cls"); displayusermenu();

}

文件(夹)创建模块:

void creatfile(LIST *qq,int flag) //创建文件(夹)

{

LIST *temp;

LIST *p=qq->child;

LIST *q;

temp=get(LIST);

loop:

q=qq->child;

if(flag==0)

{

printf("\n创建一个新文件\n");

printf("\n请输入新建文件名: "); //输入文件名

}

else

{

printf("\n创建一个新文件夹\n");

printf("\n请输入新建文件夹名: "); //输入文件名

}

scanf("%s",temp->listname);

while(q!=NULL)

{

if(strcmp(temp->listname,q->listname)==0)

{

printf("\n相同路径下有重名文件!请重新输入!");

goto loop;

}

q=q->next;

}

temp->content=NULL;

printf("\n文件属性: 0]、只读Read\t\t1]、读和写Read&Write\t\t2]只写Write"); //设置保护模式

printf("\n\n请根据提示选择保护模式(0/1/2)?: ");

scanf("%d",&temp->protect);

while(temp->protect!=0&&temp->protect!=1&&temp->protect!=2)

{ printf("\n\n你的选择有误!请重新输入(0/1)?: ");

scanf("%d",&temp->protect);

}

if(flag==0)

{

printf("\n请输入该文件的长度: "); //设置文件长度,供写入文件时会用到

scanf("%d",&temp->length);

temp->type=0; //0为文件

temp->flag=0;

}

else

{

temp->length=0;

temp->type=1;

temp->flag=1;

}

temp->mark=0; //文件默认为关闭状态,以后需要时再打开temp->child=NULL;

temp->next=NULL;

temp->parent=currentlist;

if(p==NULL)

{qq->child=temp;}

else

{

while(p->next!=NULL)

{p=p->next;}

p->next=temp;

}

getchar();

displayfilemenu();

}

文件复制粘贴模块:

void copyfile() //复制文件

{

char n[10];

LIST *p=currentlist->child;

printf("\n[复制一个文件]\n");

printf("\n请输入要复制的文件名: ");

scanf("%s",n);

while(p!=NULL)

{

if((strcmp(p->listname,n)==0)&&(p->type==0))

{

copylist=p;

printf("\n\n复制文件%s成功!!!\n",n);

break;

}

p=p->next;

}

if(p==NULL)

{

printf("\n\n找不到该文件!!!\n");

}

getchar();

getch();

displayfilemenu();//返回文件管理界面

}

void pastedfile()///粘贴文件

{

LIST *temp,*q;

LIST *p=currentlist->child;

while(p!=NULL)

{

if(strcmp(p->listname,copylist->listname)==0)

{

printf("\n\n无法粘贴该文件!该文件夹下有同名文件(夹)!!!\n");

break;

}

q=p;

p=p->next;

}

temp=get(LIST);

temp=copylist;

if(p==NULL&&p!=currentlist->child)

{

q->next=temp;

}

else

{

currentlist->child=temp;

}

temp->parent=currentlist;

temp->child=NULL;

temp->next=NULL;

printf("\n\n粘贴文件%s成功!!!\n",copylist->listname);//提示

getchar();//回车执行下一步///控制屏幕停留

getchar();

displayfilemenu();//返回文件管理界面

}

六.运行与测试

图1 系统主界面

通过此界面可以选择不同用户进入,从而进入管理文件

图2 用户选择界面

图3 文件管理主界面

图4 帮助与支持界面

总结了本系统所有的功能,对文件所有的操作管理说明

图5 用户个人文件清单

总结了个人用户下所有文件和文件夹,以及它们的主要基本信息

图6 给文件写入内容界面

图7 读出文件内容

图8 文件打开数目过多提示界面

当文件打开过多,本系统如果超过4个文件已经打开,系统提示关闭一些文件才能打开其他文件

七、设计总结:

在设计的过程中,我查询了不少相关资料,不断地发现问题、提出问题、解决问题。用C做程序开发语言,让我重新认识了C的基础,在新语言不断出现并发展迅速的今天,重新体会到C的基础性、重要性,以及面对过程,面对函数式的编程方式。

在对自己所编写的源程序段的纠错的过程中,使我更好的理解了操作系统中文件系统的理论知识,同时在编程时用到了模块化的设计思想,这种编程方法可以使我们的编程更简单,可以使我们的查错与纠错变得更加方便。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,这毕竟独立做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体……通过这次课程设计之后,一定把以前所学过的知识重新温故。

总的来说通过这次的设计学习使我学到了很多在平时的学习中学不到的很多东西,对操作系统有了更深一层的了解,同时也提高了C语言的能力,由于时间以及个人知识的问题,因此有很多的地方还需要改进。在以后的学习中还要更加努力。

windows进程管理实验报告

实验报告 课程名称:操作系统 实验项目:windows进程管理 姓名: 专业:计算机科学与技术 班级: 学号:

计算机科学与技术学院 计算机系 2019 年 4 月 23 日

实验项目名称: windows进程管理 一、实验目的 1. 学习windows系统提供的线程创建、线程撤销、线程同步等系统调用; 2. 利用C++实现线程创建、线程撤销、线程同步程序; 3. 完成思考、设计与练习。 二、实验用设备仪器及材料 1. Windows 7或10, VS2010及以上版本。 三、实验内容 1 线程创建与撤销 写一个windows控制台程序(需要MFC),创建子线程,显示Hello, This is a Thread. 然后撤销该线程。 相关系统调用: 线程创建: CreateThread() 线程撤销: ExitThread() 线程终止: ExitThread(0) 线程挂起: Sleep() 关闭句柄: CloseHandle() 参考代码: ; } 运行结果如图所示。 完成以下设计题目: 1. 向线程对应的函数传递参数,如字符串“hello world!”,在线程中显示。 2. 如何创建3个线程A, B, C,并建立先后序执行关系A→B→C。

实验内容2 线程同步 完成父线程和子线程的同步。父线程创建子线程后进入阻塞状态,子线程运行完毕后再唤醒。 相关系统调用: 等待对象 WaitForSingleObject(), WaitForMultipleObjects(); 信号量对象 CreateSemaphore(), OpenSemaphore(), ReleaseSemaphore(); HANDLE WINAPI CreateSemaphore( _In_opt_ LPSECURITY_ATTRIBUTES lpSemaphoreAttributes _In_ LONG lInitialCount, _In_ LONG lMaximumCount, _In_opt_ LPCTSTR lpName ); 第一个参数:安全属性,如果为NULL则是默认安全属性 第二个参数:信号量的初始值,要>=0且<=第三个参数 第三个参数:信号量的最大值 第四个参数:信号量的名称 返回值:指向信号量的句柄,如果创建的信号量和已有的信号量重名,那么返回已经存在的信号量句柄参考代码: n"); rc=ReleaseSemaphore(hHandle1,1,NULL); err=GetLastError(); printf("Release Semaphore err=%d\n",err); if(rc==0) printf("Semaphore Release Fail.\n"); else printf("Semaphore Release Success. rc=%d\n",rc); } 编译运行,结果如图所示。

C++图书管理系统实验报告

面向对象程序设计(C++语言)课程设计 设计说明书 图书管理系统的设计与实现 起止日期:年月日至年月日 学生姓名 班级 学号 成绩 指导教师(签字) 计算机与通信学院 年月日 图书管理系统

一.需求分析 图书馆是目前生活中除了网络外的另一个获取知识的重要场所。利用图书管理系统对图书记录进行统一管理,包括新增图书记录,更改图书记录,删除图书记录等功能,实现图书管理工作的系统化,规范化和自动化,为图书管理提供便利。同时是学习完《面向对象程序设计》课程后进行的一次全面的综合练习。有助于加深对面向对象程序设计中基础理论和基本知识的理解,培养了实践能力,促进理论与实践的结合。 二.设计要求: 1.图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时 间、价格等。试设计一图书信息管理系统,使之能提供以下功能: 2.系统以菜单方式工作 3.图书信息录入功能(图书信息用文件保存)--输入 4.图书信息浏览功能--输出 5.查询和排序功能:(至少一种查询方式)--算法 6.按书名查询 7.按作者名查询 8.图书信息的删除与修改(可选项) 三.概要设计 1、类的设计 ①、Book类的设计(内部函数流程图):

②、BDatabase类的设计: ③、主函数流程图:

4多态的实现 class People { public: virtual void card(){cout<<"card people"<

进程管理实验报告

实验2过程管理实验报告学生号姓名班级电气工程系过程、过程控制块等基本原理过程的含义:过程是程序运行过程中对数据集的处理,以及由独立单元对系统资源的分配和调度。在不同的数据集上运行程序,甚至在同一数据集上运行多个程序,是一个不同的过程。(2)程序状态:一般来说,一个程序必须有三种基本状态:就绪、执行和阻塞。然而,在许多系统中,过程的状态变化可以更好地描述,并且增加了两种状态:新状态和终端状态。1)就绪状态,当一个进程被分配了除处理器(CPU)以外的所有必要资源时,只要获得了处理器,进程就可以立即执行。此时,进程状态称为就绪状态。在系统中,多个进程可以同时处于就绪状态。通常,这些就绪进程被安排在一个或多个队列中,这些队列称为就绪队列。2)一旦处于就绪状态的进程得到处理器,它就可以运行了。进程的状态称为执行状态。在单处理器系统中,只有一个进程在执行。在多处理器系统中,可能有多个进程在执行中。3)阻塞状态由于某些事件(如请求输入和输出、额外空间等),执行进程被挂起。这称为阻塞状态,也称为等待状态。通常,处于阻塞状态的进程被调度为-?这个队列称为阻塞队列。4)新状态当一个新进程刚刚建立并且还没有放入就绪队列中时,它被称为新状态。5)终止状态是

什么时候-?进程已正常或异常终止,操作系统已将其从系统队列中删除,但尚未取消。这就是所谓的终结状态。(3)过程控制块是过程实体的重要组成部分,是操作系统中最重要的记录数据。控制块PCB记录操作系统描述过程和控制过程操作所需的所有信息。通过PCB,一个不能独立运行的程序可以成为一个可以独立运行的基本单元,并且可以同时执行一个进程。换句话说,在进程的整个生命周期中,操作系统通过进程PCB管理和控制并发进程。过程控制块是系统用于过程控制的数据结构。系统根据进程的PCB来检测进程是否存在。因此,进程控制块是进程存在的唯一标志。当系统创建一个进程时,它需要为它创建一个PCB;当进程结束时,系统回收其PCB,进程结束。过程控制块的内容过程控制块主要包括以下四个方面的信息。过程标识信息过程标识用于对过程进行标识,通常有外部标识和内部标识。外部标识符由流程的创建者命名。通常是一串字母和数字。当用户访问进程时使用。外部标识符很容易记住。内部标识符是为了方便系统而设置的。操作系统为每个进程分配一个唯一的整数作为内部标识符。通常是进程的序列号。描述性信息(process scheduling message)描述性信息是与流程调度相关的一些有关流程状态的信息,包括以下几个方面。流程状态:表

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

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

图书管理系统uml实验报告.doc

面向对象分析与设计大作业 学院:计算机科学与工程学院 班级:计算机软件 3 学生姓名:陈俊伟 学号:2174 指导老师:苏锦钿 提交日期:

华南理工大学 面向对象分析与设计大作业课程实验报告 实验题目 :_____ 图书管理系统 uml 图__________________________ 姓名 :___ 陈俊伟 ________学号:_ 2174_____ 班级 : ___09 软件 3 班________ 组别 : ________ 合作者 : __________________ 指导教师 : ______ 苏锦钿 __________ 实验概述 【实验目的及要求】 一.目的 1.掌握面向对象技术的基本原理和各种相关概念; Rational Rose 2003 、 IBM 2. 熟练掌握 UML的基本知识和9 种常见的 UML图形 , 并能够利 用 Software Architecture、或trufun UML工具进行建模; 3.根据问题进行学习,拓广、深化; 4.独立完成一个应用程序的分析、设计和建模,为以后软件项目的开发打下实践基础。 【实验原理】 UML建模,就是用模型元素来组建整个系统的模型,模型元素包括系统中的类、类和类 之间的关联、类的实例相互配合实现系统的动态行为等。UML提供了多种图形可视化描 述模型元素,同一个模型元素可能会出现在多个图中对应多个图形元素,人们可以从多 个视图来考察模型。UML建模主要分为结构建模、动态建模和模型管理建模 3 个方面,第 1 个方面是从系统的内部结构和静态角度来描述系统的,在静态视图、用例视图、实施视 图和配置视图中适用,采用了类图、用例图、组件图和配置图等图形。例如类图用于描述系 统中各类的内部结构(类的属性和操作)及相互间的关联、聚合和依赖等关系, 包图用于描述系统的分层结构等;第 2 个方面是从系统中对象的动态行为和组成对象间的相互 作用、消息传递来描述系统的,在状态机视图、活动视图和交互视图中适用,采 用了状态机图、活动图、顺序图和合作图等图形,例如状态机图用于一个系统或对象从 产生到结束或从构造到清除所处的一系列不同的状态;第 3 个方面描述如何将模型自身组织到高层 单元,在模型管理视图中适用,采用的图形是类图。建模的工作集中在前两 方面,而且并非所有图形元素都适用或需要采用

进程管理实验报告

进程的控制 1 .实验目的 通过进程的创建、撤消和运行加深对进程概念和进程并发执行的理解,明确进程与程序之间的区别。 【答:进程概念和程序概念最大的不同之处在于: (1)进程是动态的,而程序是静态的。 (2)进程有一定的生命期,而程序是指令的集合,本身无“运动”的含义。没有建立进程的程序不能作为1个独立单位得到操作系统的认可。 (3)1个程序可以对应多个进程,但1个进程只能对应1个程序。进程和程序的关系犹如演出和剧本的关系。 (4)进程和程序的组成不同。从静态角度看,进程由程序、数据和进程控制块(PCB)三部分组成。而程序是一组有序的指令集合。】2 .实验内容 (1) 了解系统调用fork()、execvp()和wait()的功能和实现过程。 (2) 编写一段程序,使用系统调用fork()来创建两个子进程,并由父进程重复显示字符串“parent:”和自己的标识数,而子进程则重复显示字符串“child:”和自己的标识数。 (3) 编写一段程序,使用系统调用fork()来创建一个子进程。子进程通过系统调用execvp()更换自己的执行代码,新的代码显示“new

program.”。而父进程则调用wait()等待子进程结束,并在子进程结束后显示子进程的标识符,然后正常结束。 3 .实验步骤 (1)gedit创建进程1.c (2)使用gcc 1.c -o 1编译并./1运行程序1.c #include #include #include #include void mian(){ int id; if(fork()==0) {printf(“child id is %d\n”,getpid()); } else if(fork()==0) {printf(“child2 id %d\n”,getpid()); } else {id=wait(); printf(“parent id is %d\n”,getpid()); }

图书馆管理系统实验报告

华北科技学院计算机系综合性实验 实验报告 课程名称数据库系统 实验学期2009至2010学年第2学期学生所在系部计算机系 年级专业班级网络B081 学生姓名王明仁学号200807024102 任课教师郭红 实验成绩 计算机系制

《图书馆管理系统》课程综合性实验报告 开课实验室:基础62010年6月19日实验题目 一、实验目的 利用一种DBMS作为设计平台,理解并应用课程中关于数据库设计的相关理论,能按照数据库设计步骤完成完整的数据库设计,包括需求分析、概念设计、逻辑设计、物理设计和实施。同时能够正确应用各个阶段的典型工具进行表示。 二、设备与环境 (1)硬件设备:PC机一台 (2)软件环境:安装Windows操作系统,安装数据库管理系统SQL Server2000等。 三、实验内容 完整实践应用数据库设计的工程过程:需求分析\概念设计\逻辑设计\物理设计和实施: (1)需求分析:选定一个应用(如图书管理系统),对所设计的数据库系统进行调研分析,其结果应该准确表达出选定 应用的功能需求; (2)概念分析:使用E-R图作为描述工具.必要时描述出局部和全局的E-R图; (3)逻辑设计:将上述绘制的E-R图转化为相应的关系模式,并根据范式理论进行优化分析。要求的关系模式不少于 3个,并根据实际应用的需要设计必要的视图; (4)物理设计:根据设计的结构,说明系统已经有的索引,并根据需要设计必要的索引; (5)实施:以SQL SERVER为平台创建出完整的数据库.在数据库中要表现出的知识点包括 ①登录控制(标准登录和混合登录) ②数据完整性:参照完整性、实体完整性、自定义完整性(包括触发器) ③安全性设计:设置用户,并相应设计用户的权限或角色(用户设计至少3个,有不同的权限) ④使用触发器、游标或存储过程完成相关操作,至少使用1种技术。 (6)以上内容,请详细描述,并有必要抓图. 四、实验结果及分析 根据我设计的图书馆数据库管理系统,我作了如下分析: 图书馆提供图书借阅业务,读者借阅需先办理借书卡(用条码识别身份),并交纳一定的押金。不同的书有着不同的借阅期限,比如期刊和某些新书最多只能借阅七天,而另一些书则可以借阅半个月或最长三个月不等。逾期不还,或丢失、损坏书籍则予以罚款。在交纳罚款前,借书卡被冻结。不同类别的读者不着不同的借阅数量限制,比如有的一次可以借阅7本,有的只能借阅5本等。对逾期不还的,系统给出报警,并打印催还通知单。读者可以事先从网上查询拟借书刊是否存在,并可查询书刊存放地点。 我设计的图书管理系统,功能包括: 一.图书管理系统: 1.图书查询 2.新书登记 3.图书下架 二.读者信息管理: 1.办卡 2.信息 3.挂失 4.注销 5.冻结 三.借阅管理系统: 1.借书(还书)

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

实验一进程管理 一、目的 进程调度是处理机管理的核心内容。本实验要求编写和调试一个简单的进程调度程序。通过本实验加深理解有关进程控制块、进程队列的概念,并体会和了解进程调度算法的具体实施办法。 二、实验内容及要求 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)); jincheng.rtime = 0;

C--大作业图书管理系统实验报告

附件1: 《面向对象程序设计》 大作业 题学专班姓目 院 业 级 名 学生成绩管理系统 文法学院 教育学 教育学1201 杨欣 指导教师鄢红国 2013 年12 月20 日学号:0121213640126

目录 一二三四五六七八十设计目的 (1) 大作业的内容 (2) 大作业的要求与数据 (3) 大作业应完成的工作 (4) 总体设计(包含几大功能模块) (5) 详细设计(各功能模块的具体实现算法——流程图) (6) 调试分析(包含各模块的测试用例,及测试结果) (7) 总结 (8) 参考资料 (9)

一二 大作业的目的 《面向对象程序设计》是一门实践性很强的课程,通过大作业不仅可以全方位检验学生知识掌握程度和综合能力,而且还可以进一步加深、巩固所学课程的基本理论知识,理论联系实际,进一步培养自己综合分析问题和解决问题的能力。更好地掌握运用C++语言独立地编写、调试应用程序和进行其它相关设计的技能。 大作业的内容 对图书信息(包括编号、书名、总入库数量、当前库存量、已借出本数等) 进行管理,包括图书信息的输入、输出、查询、删除、排序、统计、退出.将图书的信息进行记录,信息内容包含:(1)图书的编号(2)图书的书名(3)图书的库存量。假设,现收集到了一个图书馆的所有图书信息,要求用C语言编写一个简单的图书管理系统,可进行录入、查询、修改和浏览等功能。学习相关开发工具和应用软件,熟悉系统建设过程。 三大作业的要求与数据 1、用C语言实现系统; 2、对图书信息(包括编号、书名、总入库数量、当前库存量、已借出本数)进行管理,包括图书信息的输入、输出、查询、删除、排序、统计、退出. 3、图书信息包括:其内容较多,为了简化讨论,要求设计的管理系统能够 完成以下功能: (1)每一条记录包括一本图书的编号、书名、库存量 (2)图书信息录入功能:(图书信息用文件保存,可以一次完成若干条记录 的输入。) (3)图书信息显示浏览功能:完成全部图书记录的显示。 (4)查询功能:完成按书名查找图书记录,并显示。 (5)图书信息的删除:按编号进行图书某图书的库存量. (6)借书登记系统:可以输入读者编号和所借书号来借书。 (7)还书管理系统:可以输入读者编号和所借书号来还书。 (8)、应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应 尽可能清晰美观!

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

实验一进程管理 1.实验目的: (1)加深对进程概念的理解,明确进程和程序的区别; (2)进一步认识并发执行的实质; (3)分析进程争用资源的现象,学习解决进程互斥的方法; (4)了解Linux系统中进程通信的基本原理。 2.实验预备内容 (1)阅读Linux的sched.h源码文件,加深对进程管理概念的理解; (2)阅读Linux的fork()源码文件,分析进程的创建过程。 3.实验内容 (1)进程的创建: 编写一段程序,使用系统调用fork() 创建两个子进程。当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示字符“a”,子进程分别显示字符“b”和“c”。试观察记录屏幕上的显示结果,并分析原因。 源代码如下: #include #include #include #include #include int main(int argc,char* argv[]) { pid_t pid1,pid2; pid1 = fork(); if(pid1<0){ fprintf(stderr,"childprocess1 failed"); exit(-1); } else if(pid1 == 0){ printf("b\n"); } 1/11

else{ pid2 = fork(); if(pid2<0){ fprintf(stderr,"childprocess1 failed"); exit(-1); } else if(pid2 == 0){ printf("c\n"); } else{ printf("a\n"); sleep(2); exit(0); } } return 0; } 结果如下: 分析原因: pid=fork(); 操作系统创建一个新的进程(子进程),并且在进程表中相应为它建立一个新的表项。新进程和原有进程的可执行程序是同一个程序;上下文和数据,绝大部分就是原进程(父进程)的拷贝,但它们是两个相互独立的进程!因此,这三个进程哪个先执行,哪个后执行,完全取决于操作系统的调度,没有固定的顺序。 (2)进程的控制 修改已经编写的程序,将每个进程输出一个字符改为每个进程输出一句话,再观察程序执行时屏幕上出现的现象,并分析原因。 将父进程的输出改为father process completed 2/11

操作系统文件管理_答案

第六部分文件管理 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、解决不同用户间的文件命名冲突

图书馆管理信息系统实验报告完整版

图书馆管理信息系统实 验报告 HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】

管理信息系统实验报告 系部名称:国际学院 专业名称:会计 班级:0911 姓名: 第一章图书馆管理信息系统的系统规划 图书馆管理项目开发背景及开发目的 传统的图书馆管理工作主要是由于书籍管理、借阅管理、图书管理查询。该工作主要由学校图书管理人员来完成。近年来,随着招生规模的持续壮大,图书馆的容量也不断增加,有关图书的各种信息量也成倍的增加。面对庞大的信息量,传统的人工式的管理导致工作繁重,人力物力过多的浪费,图书馆的管理成本高,然而工作效率却不高,工作质量也难以得到可靠的保证,从而影响了整个图书馆的运作及管理。 时代的进步,计算机越来越广泛的运用,原先主要由手工操作的图书管理,正在慢慢的由计算机代替,并且日益完善。图书管理系统就是为了解决和减轻繁琐的手工管理,使图书馆可以上升到一个完善的电子化,信息化管理。在全球信息化的今天,是同计算机进行生产和管理已经成为一种趋势。计算机可以为我们选择最优的方案来达到我们的要求。在图书馆这一环境中,使用计算机管理可以最大程度减少操作难度,减轻工作人员的劳动负担。实现“以人为本,科学管理,创建新型现代化学校图书馆”的目标 图书馆管理可行性分析 图书馆是图书馆管理系统是利用计算机技术使书籍管理、借阅管理、图书管理查询等有机的结合在一起方便图书管理人员进行统一高效率的管理。对于系统的结构特性设计,应遵循提高系统实用性和操作简便灵活性的设计的原则。在业务流程上遵循了手工管理时的操作流程,使学生很快掌握操作程序等。 经济性可行性研究

进程管理_实验报告一流程图

实验一 课程名称:操作系统 课程类型:必修 实验项目名称:进程管理 实验题目:短作业优先算法、动态可剥夺优先数算法和基本循环轮转算法。 一、实验目的 进程是操作系统最重要的概念之一,进程调度又是操作系统核心的主要内容。本实验要求学生独立的用高级语言编写和调试一个简单的模拟进程调度的程序。通过本实验,加深学生理解有关进程控制块、进程队列的概念,并体会和了解短作业优先、优先数和时间片轮转调度算法的具体实施办法。 二、实验要求及实验环境 (1)设计一个有n 个进程的进程调度程序(具体个数可由键盘输入)。每一个进程用一个进程控制块PCB 来代表。PCB 中应包含下列信息:进程名、进程优先数、进程的状态、进程需要运行的时间及利用CPU运行的时间等。进程的个数、各进程的优先数、轮转时间片数以及进程运行需要地时间可由

键盘输入。 (2)调度程序应包含2~3 种不同的调度算法,运行时可任选一种。 (3)每个进程处于运行Run、就绪ready 和完成Finish 三种状态之一,假定初始状态都为就绪状态ready。(也可没有Finish状态,可以在设计程序时实现处以Finish状态的进程删掉)。 (4)系统能显示各进程状态和参数的变化情况。(5)动态可剥夺优先数算法是:在创建进程时给定一个初始的优先数,当进程获得一次cpu后其优先数就减少1,如果就绪队列中有优先级更高的将剥夺运行中的进程。 三、设计思想 (本程序中的用到的所有数据类型的定义,主程序的流程图及各程序模块之间的调用关系) 1.程序流程图 (见下图) 2.逻辑设计 使用链表表示就绪队列,每个元素包括进程名、进程优先数、进程的状态、进程需要运行的时间及利用CPU运行的时间等信息。 该结构需支持以下操作:取头节点,在表尾插入节

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

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

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

图书管理系统实验报告

上海电力学院 信息网络技术课程设计报告 题目: 图书馆借阅系统 姓名:白志强 学号:20111946 院系:电子与信息工程学院 专业年级:电子信息工程2011级

2014 年12月 5 日

●摘要 在大学生活中,图书馆是我们常去的一个地方,因而图书馆的管理无疑是我们需要关注的一个问题。 现在很多学校图书馆的借阅工作部分还是手工管理,工作效率很低并且不能及时了解图书的种类和学生们比较需求的图书等,不能更好的适应当前学生的借阅要求。计算机信息化管理有着存储量大,速度快等许多优点,提供给我们的处理信息及时快捷,因此利用计算机提供给我们的信息使学生们的借阅过程形成一整套动态的管理,能够极大提高图书馆理的效率,这也是学校的科学化,正规化管理。 图书借阅管理系统是一种信息管理系统,本系统采用数据库系统和VB平台,以https://www.360docs.net/doc/7a7888015.html, 为编程语言开发一个适合学校图书管理所需要的数据库管理软件。其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立数据一致性和完整性强、数据安全性好的数据库。而对于后者则要求应用程序功能完备,易使用等特点。 ●实验目的 本课程设计的目的是综合应用https://www.360docs.net/doc/7a7888015.html,软件以及SQL数据库设计实现图书借阅系统。 ●设计环境 软件:VS2008,SQL Server2008 ●设计内容 基本要求:通过编程软件使系统可以进行管理员模块和用户使用模块。 管理员模块:添加图书,查询图书,查询用户,添加用户。 使用者模块:借阅图书,归还图书。 ●设计流程图 图书管理系统 用户界面管理者界面

设计步骤 建立数据库,新建表如图所示 打开表如图

图书管理系统实验报告资料

齐鲁工业大学认知实习报告 院系名称理学院 学生姓名曹哲川 专业班级信计13-2 指导教师王林 二○一六年十二月九日

认知实习情况一览表

C语言见习报告 前言 随着随着信息化迅猛发展,在各应用领域,如应用软件、数字计算、嵌入式设备开发、游戏软件开发、系统软件和图形处理以及对性能要求严格的领域等等,都已广泛运用到C语言,C语言被称为广泛的语言之一,在一些对性能有严格要求的地方也需采用C语言进行编程。所以从整个IT行业的运行情况来看,C语言工程师重要地位明显。 同时C语言又是一门基础语言,其职位发展方向不仅仅局限于C 语言程序员,同时还可往网络工程师、嵌入式工程师、数据库工程师等方向发展,而这几大方向已出现了严重的人才匮乏的现象。C语言开发工程师人才的紧缺促使该职位更极具发展潜力。不仅IT专业企业需要C语言开发工程师,众多非IT企业也表示对开发工程师有很大的需求,IT行业目前在国内为朝阳产业,C语言工程师便是这朝阳产业中具发展潜力的岗位之一。 因此,需要安排此次见习式训练,是为我们将来能够顺利步入社会做的准备,作为学生我们更应该抓住这次机会,学习该行业方面的知识,扩充自己的知识储备,提高自己在社会中的竞争力。

1.实习目的 随着计算机技术的不断应用和提高,计算机已经深入到社会生活的各个角落。而中小型租、借书机构仍采用手工管理图书的方法,不仅效率低、易出错、手续繁琐,而且耗费大量的人力。为了满足其管理人员对图书馆书籍,读者资料,借还书等进行高效的管理,在工作人员具备一定的计算机操作能力的前提下,此图书管理系统软件力求提高其管理效率。 本文档的编写是为了完善图书管理系统软件的开发途径和应用方法。以求在最短的时间高效的开发图书管理系统。 2.软件需求 2.1 管理员登陆 管理员以正确的用户名和密码登录后可以进行图书的维护、读者的维护等操作。 2.2 用户管理 2.2.1 添加读者 将新的读者信息添加到读者信息表。 录入信息:读者编号,读者姓名,读者年龄,读者单位,联系电话,已借书籍信息等。 2.2.2 读者信息修改 读者信息出现错误的地方,进行修改。 2.2.3删除读者 根据读者编号,将过期的读者从读者信息中删除。 2.2.4 检索读者信息 根据读者编号或姓名,检索读者的基本信息。 2.3 图书管理 2.3.3新图书入库 工作人员录入图书名称,图书价格,图书作者,出版社,图书状态(在架或已借)、图书数量等信息。 2.3.2图书信息修改 当图书信息录入发生错误或图书信息发生变化时,更改图书的基本信息。 2.3.3删除图书 将损坏、废旧的图书从图书信息中删除。 2.3.4 检索图书 根据图书编号、名称或作者检索图书的基本信息。 2.4 借书管理 根据读者编号和书籍编号,进行借阅登记。 2.5 还书管理 根据读者编号和书籍编号进行还书操作,如果图书超期、或者图书损坏则进

进程管理实验报告

进程管理实验报告 1 .实验目的 通过进程的创建、撤消和运行加深对进程概念和进程并发执行的理解,明确进程与程序之间的区别。 【答:进程概念和程序概念最大的不同之处在于: (1)进程是动态的,而程序是静态的。 (2)进程有一定的生命期,而程序是指令的集合,本身无“运动”的含义。没有建立进程的程序不能作为1个独立单位得到操作系统的认可。 (3)1个程序可以对应多个进程,但1个进程只能对应1个程序。进程和程序的关系犹如演出和剧本的关系。 (4)进程和程序的组成不同。从静态角度看,进程由程序、数据和进程控制块(PCB)三部分组成。而程序是一组有序的指令集合。】2 .实验内容 (1) 了解系统调用fork()、execvp()和wait()的功能和实现过程。 (2) 编写一段程序,使用系统调用fork()来创建两个子进程,并由父进程重复显示字符串“parent:”和自己的标识数,而子进程则重复显示字符串“child:”和自己的标识数。 (3) 编写一段程序,使用系统调用fork()来创建一个子进程。子进程通过系统调用execvp()更换自己的执行代码,新的代码显示“new program.”。而父进程则调用wait()等待子进程结束,并在子进程结束后显示子进程的标识符,然后正常结束。

(3)运行并查看结果 child’s pid=2894 child’s pid=2994 parent’s pid=2849 child’s pid=2897 child’s pid=2897 parent’s pid=2849 child’s pid=2894 child’s pid=2994 parent’s pid=2849 (4)gedit创建进程2.c 使用gcc 2.c -o 2编译并./2运行程序2.c#include #include #include #include #include(6)运行并查看结果 new program ! -rw-r–r--. 1 root root 2456 Apr 14 2019 /etc/passwd child peocess PID:29035 4 .思考 (1) 系统调用fork()是如何创建进程的?

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

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

相关文档
最新文档