操作系统课程设计报告树型目录文件系统


    

    操作系统课程设计报告


    题目树型目录文件系统


    学 院 计算机学院
    专 业 网络工程
    年级班 班
    学 号
    学生姓名
    指导教师
    成 绩


    200 7年 1月






    树型目录文件系统
    设计思想:
    课程设计目实现树型目录结构文件系统实现程中利二叉树
    中节点父指针子指针兄弟指针中子指针指该目录第子节点该子节点父指针指级目录目录子节点兄弟指针连接起
    文件夹开文件夹名称址压入开文件夹栈文件关闭文件夹名称址开文件夹栈中抛出
    文件开文件名称父指针写文件列表时置文件开标志1文件关闭文件开列表中删时置文件开指针0文件读取写入检查文件否文件开列表中未开文件读写读文件写写文件读
    文件夹文件创建文件夹文件创建首先检验目录否空空文件夹文件连接该目录空检查目录否名文件夹文件提示创建成功没文件夹文件连接该目录子节点作兄弟节点
    文件夹文件删文件夹没开文件文件没开删否删失败删文件夹时利中序历遍删子树

    二 系统结构说明
    系统结构图:

    root根结点root五户户文件夹文件系统初始化时户创建file1文件文件夹容名称开标志文件名称开标志文件访问权限文件类型文件长度中文件访问权限文件类型文件长度单独作结构体文件夹结构体相结构体
    开文件列表结构体包括文件名文件父节点址开文件夹栈中包括文件夹名称址


    三 数结构说明
    普通文件结构体
    struct file{
    char type 文件类型0文文件 1执行文件 2记录型文件
    char right 文件权限0-读 1-写 2-读写
    int f_length 文件长度
    }
    typedef struct file File

    文件夹文件结构体
    struct FCB {
    char kind kind'1'文件夹 kind'2'文件
    char name[20] 文件夹文件名称
    bool open
    File if_file
    struct FCB *parent
    struct FCB *brother
    struct FCB *child
    }
    typedef struct FCB Ff

    rootfcp全局变量
    Ff *root根节点
    Ff *fcpnull判断否拷贝文件

    开项结构体
    typedef struct{
    char name[20]名称
    Ff *node 指针开文件夹记录文件夹址文件记录文件父节点
    }opened
    int OPFO0 记录文件夹开数目20
    opened folderopened[20]记录文件开文件夹

    int OPFI0 记录文件开数目20
    opened fileopened[20]记录开文件

    四 函数清单部分函数流程图
    函数声明
    void init()初始化创建根节点
    void initopen()初始化开文件列表开文件夹文件列表
    Ff* creat(Ff *parentchar name[20]char kind)创建文件文件夹
    void delet(Ff *parentchar delname[20]char kind)删文件文件夹
    void delSub(Ff *delp) 删子树(配合删文件夹)
    void openfolder(Ff *parent char name[20])开文件夹
    void openfile(Ff *parent char name[20])开文件
    void closefo() 关闭文件夹
    void closefile(char name[20]) 关闭文件
    void read(Ff*parentchar name[20]) 读文件
    void write(char name[20]) 写文件
    void show() 显示初始界面
    void initfile() 初始化户户创建file1文件
    int ishaveopen(Ff *bedel) 判断文件夹否开文件文件夹
    void filecpy(Ff *parentchar name[20])文件复制函数
    void pastefile(Ff *parent) 文件粘贴

    函数流程图:

    函数开始执行时先初始化初始化包括创建root根目录创建user0~user4五户户创建file1文件
    初始化完毕显示选择户退出系统两操作列出户选择1进入选择户界面选择户列出户目录容时显示操作界面选择操作执行相应操作执行完毕回选择操作界面

    创建文件夹文件函数流程图(creat()):

    创建文件文件夹首先通函数选择操作传递参数kind=1创建文件夹kind=2创建文件文件文件夹名称户输入文件文件夹父节点folderopened[OPFO1]node传递
    果前目录名文件名文件夹创建文件创建文件夹成功
    前目录空目录创建文件文件夹前目录首子节点Parent指针指前目录前目录child指针指文件文件夹
    前目录空文件文件夹连接前目录子节点面作兄弟节点
    删文件文件夹函数delet()流程图:
    样删文件文件夹类型参数户选择操作时传递Kind1删文件夹kind=2删文件名称户输入
    文件开列表文件夹中开文件文件文件夹删目录没该文件文件夹删失败删失败时返回相应信息
    果目录该文件文件夹文件没开文件夹中没开文件删该释放该节点该子树返回删成功信息
    流程图:
    文件开函数流程图openfile():
    文件开开前目录文件首先查找文件否开文件列表中返回文件已开文件列表中信息查前目录没该文件开时文件名父节点址写文件队列中置文件开标志1返回开成功信息
    文件开返回层目录目录文件会开文件列表中删非文件目录执行关闭文件操作关闭文件文件开文件列表中删
    流程图:


    文件删函数说明流程图:
    文件删前目录文件进行操作文件开队列中关闭失败返回提示信息开列表中关闭文件置文件开标志0
    流程图:



    文件夹开关闭函数说明:
    文件夹开开前目录文件夹开文件夹名称节点址写文件夹堆栈中(果开目录写开文件夹堆栈)时列出文件夹目录容关闭文件夹(返回级目录)前目录开文件夹堆栈中抛出时开级目录
    开文件夹关闭文件夹函数源程序:
    开文件夹:
    void openfolder(Ff *parent char name[20])
    {
    Ff *select*beopen
    if(parent>child) 目录空
    {
    printf(没文件)
    return
    }


    beopenparent>child

    while(beopen) 寻找开文件夹
    {
    if(beopen>kind'1')
    {
    if(strcmp(beopen>namename)0) 文件夹找
    {
    break
    }
    }
    if(beopen>brother)
    {
    printf(文件夹存\n)
    return
    }
    beopenbeopen>brother
    }
    while end
    if(beopen>child)
    {
    printf(该文件夹空\n)
    if(OPFO>2)
    {
    if(folderopened[OPFO2]nodeparent)
    {
    if(strcmp(folderopened[OPFO1]namename)0)
    return
    }
    }
    folderopened[OPFO]nodebeopen
    strcpy(folderopened[OPFO]namebeopen>name)
    OPFO++
    return
    }
    if(beopen>child)
    {
    selectbeopen>child
    while(select) 列出文件夹容
    {
    for(int i0i<3&&selecti++)
    {
    printf(sselect>name)
    if(select>kind'1')
    {
    printf((文件夹)\t)
    }
    if(select>kind'2')
    {
    if(select>if_filetype'0')
    {
    printf((文文件 dk)\tselect>if_filef_length)
    }
    if(select>if_filetype'1')
    {
    printf((执行文件 dk)\tselect>if_filef_length)
    }
    if(select>if_filetype'2')
    {
    printf((记录型文件 dk)\tselect>if_filef_length)
    }
    }
    selectselect>brother
    }
    printf(\n)
    }
    if(OPFO>2)
    {
    if(folderopened[OPFO2]nodeparent) 开文件夹堆栈中已写堆栈
    {
    if(strcmp(folderopened[OPFO1]namename)0)
    return
    }
    }
    folderopened[OPFO]nodebeopen 开文件夹堆栈写堆栈
    strcpy(folderopened[OPFO]namebeopen>name)
    OPFO++
    return
    }

    }


    关闭文件夹源程序:
    文件夹关闭
    void closefo()
    {
    if(OPFO2) 返回根结点执行返回操作
    {
    printf(里根节点\n)
    show()
    OPFO
    return
    }
    OPFO
    openfolder(folderopened[OPFO2]nodefolderopened[OPFO1]name)
    folderopened[OPFO]nodenull
    }

    删子树函数(void delSub())判断文件夹否文件开函数(int ishaveopen())

    两函数辅助删文件夹函数删子树函数序历遍树方法 删子树递函数Ishaveopen()函数利先序历遍树方法判断文件夹否开文件递函数开文件返回1否返回0
    删子树函数源程序:
    删子树
    void delSub(Ff *delp)
    {
    if(delp>brother) delSub(delp>brother)历遍brother子树
    if(delp>child) delSub(delp>child)历遍child子树
    free(delp)释放节点
    }

    判断文件夹否开文件函数源程序:
    辅助del函数中删文件夹
    int ishaveopen(Ff *bedel)
    {
    if(bedel>opentrue)
    {
    return 1
    }

    if(bedel>brother)
    ishaveopen(bedel>brother)
    if(bedel>child)
    ishaveopen(bedel>child)
    else
    return 0
    }

    文件复制粘贴函数说明:
    文件复制前目录查找复制文件查找返回信息拷贝失败
    查找创建新节点复制文件信息写道新节点相应项里
    文件粘贴首先判断fcp否空空表明没复制文件执行粘贴操作
    空查找前目录否名文件询问户否覆盖已存文件
    复制代覆盖文件释放覆盖文件资源否退出没复制文件名文件文件连目录子节点
    粘贴文件源程序:
    粘贴文件
    void pastefile(Ff *parent)
    {
    Ff *select*cover
    char opt
    if(fcp)
    {
    printf(没拷贝文件请先拷贝文件\n)
    return
    }
    if(parent>child) 目录空目录
    {
    fcp>childparent
    parent>childfcp
    fcpnull
    printf(粘贴成功\n)
    return
    }
    selectparent>child
    if(select>kind'2')覆盖文件目录第子节点
    {
    if(strcmp(select>namefcp>name)0)
    {
    printf(该目录已文件否覆盖(yn))
    getchar()
    scanf(c&opt)
    if(opt'Y'||opt'y')
    {
    fcp>brotherselect>brother
    fcp>childselect>child
    fcp>parentselect>parent
    parent>childfcp
    select>brothernull
    select>childnull
    select>parentnull
    free(select)
    printf(覆盖成功\n)
    fcpnull
    return
    }
    else
    return
    }
    }

    while(select>brother)查找目录否名文件
    {
    if(select>brother>kind'2')
    {
    if(strcmp(select>brother>namefcp>name)0)
    {
    printf(该目录已文件否覆盖(yn))
    getchar()
    scanf(c&opt)
    if(opt'Y'||opt'y')覆盖名文件
    {
    coverselect>brother
    fcp>brothercover>brother
    fcp>childcover>child
    fcp>parentcover>parent
    select>brotherfcp
    free(cover)
    printf(覆盖成功\n)
    fcpnull
    return
    }
    else
    return
    }

    }
    selectselect>brother
    }
    select>brotherfcp目录没名文件
    fcpnull
    return
    }


    五程序运行效果:
    初始界面:

    选择1进入界面:

    选择户进入界面:

    户1文件file1

    建立文件成功失败图示:

    建立名文件时创建出错名文件创建成功


    删文件成功失败图示:
    1 删文件file1file1没开删成功:



    目录剩file2

    2 删ff文件目录没文件删失败:



    3 文件file2开删删失败:

    创建文件夹成功失败图示:
    创建文件夹new目录中没new文件夹创建成功:


    创建文件夹new目录中文件夹new创建失败:


    删文件夹成功失败图示:
    首先建立文件夹folderfolder里创建文件new开文件new
    时提示删失败:

    关闭文件new删成功:



    时户少文件夹folder

    文件拷贝粘贴:
    首先new文件夹创建hello文件拷贝hello文件

    拷贝成功:


    回层目录useer1文件粘贴目录粘贴成功:

    时user1文件hello

    写读文件成功失败图示:
    读文件file2file2没开读失败:



    开文件file2然读取读取成功:


    写文件写file2file2已开写成功:

    关文件file2写文件file2成功:


    显示路径

    进入文件夹:
    进入文件夹new更清楚路径进入文件夹news命令显示前路径:


    返回操作返回user1目录更清楚路径返回s命令显示前路径:


    六 说明书(程序运行时已明显提示提示操作)
    七 体会心:
    次课程设计选择树型结构文件系统设计题目刚刚开始时知道设计知道概结构认真阅读课关知识知道样设计结构体方便文件操作知道样设计写程序时遇障碍特指针改接指出错处理时深感编程力足次修改终设计该设计
    通该课程设计更解课知识巩固课知识时编程力定提高
    文档香网(httpswwwxiangdangnet)户传

    《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
    该内容是文档的文本内容,更好的格式请下载文档

    下载文档到电脑,查找使用更方便

    文档的实际排版效果,会与网站的显示效果略有不同!!

    需要 2 香币 [ 分享文档获得香币 ]

    下载文档

    相关文档

    linux操作系统目录结构及主要内容

    Linux操作系统目录结构及主要内容   “/”根目录部分有以下子目录:     /usr(unix software resource) 目录包含所有的命令、程序库、文档和其它文件。...

    5年前   
    1336    0

    驱动程序实验报告操作系统课程设计报告

    操作系统课程设计报告班级: 计科 姓名: 学号: 老师: 时间:2012年X月X日一、设计目的操作...

    1年前   
    297    0

    操作系统课程设计银行家算法报告

    《操作系统--银行家算法》课程设计报告姓 名: 学 号: 班 级:计科班 ...

    3年前   
    618    0

    《操作系统 银行家算法》课程设计报告

    《操作系统--银行家算法》课程设计报告姓 名: 学 号: 班 级: 计科班 ...

    3年前   
    809    0

    合工大页面置换算法操作系统课程设计报告

    计算机与信息学院《操作系统综合设计》报告设计题目:页面置换算法学生姓名:学 号:专业班级:计算机科学与技术班2015 年 X月一、设计题目 3二、开发环境与工具 3三、设计原理 31....

    3年前   
    556    0

    哲学家进餐问题操作系统课程设计报告

    XX学院 《操作系统》课程设计报告题 目: 哲学家进餐问题 班 级: 学 号: ...

    2年前   
    774    0

    银行家算法《操作系统》课程设计报告

    《操作系统》课程设计报告课题: 银行家算法 专业计算机科学与技术学生姓名班级计算机学号指导教师信息工程...

    3年前   
    696    0

    操作系统实验(进程调度+存储管理+磁盘调度++银行家算法+文件系统设计)

    操作系统实验(进程调度+存储管理+磁盘调度++银行家算法+文件系统设计)实验三 进程调度一、 实验目的多道程序设计中,经常是若干个进程同时处于就绪状态,必须依照某种策略来决定那个进程优先占有处...

    3年前   
    642    0

    进程调度算法的实现计算机操作系统课程设计

    题目2 进程调度算法的实现2.1 题目的主要研究内容及预期达到的目标(1)设计进程控制块; (2)设计多个进程队列; (3)设计多个进程(≥20); (4)动态生成时间片、执行时间和优先级,...

    3年前   
    582    0

    操作系统课程设计银行家算法的模拟实现

    操作系统课程设计报告专业计算机科学与技术学生姓名班级学号指导教师完成日期信息工程学院题目: 银行家算法的模拟实现 一、设计目的本课程设计是学习完“操作系统原理”课程后进...

    3年前   
    683    0

    操作系统课程设计磁盘调度算法

    操作系统课程设计磁盘调度算法目 录1 课程设计目的及要求……………………………………………………12 相关知识…………………………………………………………………13 ...

    3年前   
    547    0

    操作系统课程设计磁盘调度算法

    《计算操作系统》课程设计报告 姓名: ...

    3年前   
    461    0

    操作系统课程设计动态分区分配存储管理

    操作系统课程设计设计题目 动态分区分配存储管理学生姓名号学 号指导教师专业班级计算机班 第一章 课程设计概述1.1 设计任务:动态分区分配存储管理1.2 设计要求建立描述内存...

    2年前   
    421    0

    可研报告(目录)

     目 录 第一章 总 论……………………………………………1 一、项目提要 ………………………………………1 二、编制依据 ………………………………………2 三、综合评价...

    9年前   
    17117    0

    操作系统实习报告样本

    操作系统实习报告样本  1 操作系统实习报告内容(1)    基本信息:完成人姓名、学号、报告日期(2)    实习内容(3)    实习目的(4)    实习题目(5)    设计思路和流程...

    9年前   
    571    0

    操作系统实践报告

    学 号: 实践课设计报告课程名称计算机操作系统题 目模拟设计存储管理的分配与回收学 院计算机科学与技术学院专 业计算机科学与技术班 级姓 名指导教师年月日模拟...

    1年前   
    456    0

    数据结构课程设计报告最小生成树Kruskal算法

    计算机科学与技术系课程设计报告 2014-2015学年第二学期课程数据结构课程设计名称Kruskal算法求最小生成树学生姓名 学号 专业班级 软件工程指导教师 2014年X月题目:设计...

    1年前   
    205    0

    哈夫曼树应用数据结构课程设计报告

    数据结构课程设计报告设计题目:哈夫曼树应用 专 业 : 软件工程 班 级 : 软件 学 生 : ...

    2年前   
    468    0

    用多线程同步方法解决生产者消费者问题操作系统课程设计

    题 目用多线程同步方法解决生产者-消费者问题(Producer-Consumer Problem)学 院计算机科学与技术学院专 业软件工程班 级姓 名 ...

    3年前   
    486    0

    操作系统课程设计编程序模拟银行家算法

    课程设计报告书 课程名称: 操作系统原理 题 目: 编程序模拟银行家算法 系 名: 信息工程系 专业班级: ...

    3年前   
    724    0

    文档贡献者

    文***享

    贡献于2020-12-29

    下载需要 2 香币 [香币充值 ]
    亲,您也可以通过 分享原创文档 来获得香币奖励!
    下载文档

    该用户的其他文档