文章目录

  • 第一章 项目简介
    • 1.1 项目基本信息
    • 1.2 学习顺序
    • 1.3 后期学习
    • 1.4 技术要求
  • 第二章 使用流程
    • 2.1 登录模块
    • 2.2 储存模块
    • 2.3 读取模块
    • 2.4 身份验证
    • 2.5 文件加密
    • 2.6 文件解密
    • 2.7 坐标函数
    • 2.8 空间扩容
  • 第三章 名词解释
    • 3.1 储存
      • 3.1.1 块文件
      • 3.1.2 坐标
      • 3.1.3 坐标函数
      • 3.1.4 坐标表
      • 3.1.5 坐标数据
      • 3.1.6 储存
    • 3.2 加密解密
      • 3.2.1 加密算法
      • 3.2.2 解密算法
  • 第四章 解释

第一章 项目简介

1.1 项目基本信息


项目名称:文件管理系统
英文名称:File Management System
开发平台:Windows
程序架构:C/S B/S
开发语言:Python C# Java C/C++
程序简介:开发一款模拟文件管理系统,对存入的文件进行二进制混合储存,访问时使用通过索引文件进行定位并重组,并模拟分区进行储存和展示,可以使用CUI或提供GUI支持,并且文件系统设有用户信息,对登录人员进行身份验证


1.2 学习顺序


1.首先制作简单CUI和登录系统,用户信息可以用文本文件保存
2.创建文件混合算法和还原算法
3.制作UI并导入算法
4.制作系统分区,并对文件进行加密(加密算法不可用已有算法)
5.完成项目


1.3 后期学习


1.将CUI替换成GUI
2.使用数据库储存用户信息,使用本地数据库储存文件信息
3.特殊的值写入注册表
4.将程序移植到服务器,并创建WebApi进行管理
5.完成B/S开发,在网页上对文件进行操作


1.4 技术要求


1.学会XML文件以及Json文件的使用
2.学会SQL语言和数据库的使用
3.学会二进制数据的处理以及加密
4.学会Socket的使用
5.掌握C#,Python,C/C++的语法
6.对面向对象的掌握


第二章 使用流程

2.1 登录模块

#mermaid-svg-wZWEu7HTs4B15u77 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-wZWEu7HTs4B15u77 .error-icon{fill:#552222;}#mermaid-svg-wZWEu7HTs4B15u77 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-wZWEu7HTs4B15u77 .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-wZWEu7HTs4B15u77 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-wZWEu7HTs4B15u77 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-wZWEu7HTs4B15u77 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-wZWEu7HTs4B15u77 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-wZWEu7HTs4B15u77 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-wZWEu7HTs4B15u77 .marker.cross{stroke:#333333;}#mermaid-svg-wZWEu7HTs4B15u77 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-wZWEu7HTs4B15u77 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-wZWEu7HTs4B15u77 .cluster-label text{fill:#333;}#mermaid-svg-wZWEu7HTs4B15u77 .cluster-label span{color:#333;}#mermaid-svg-wZWEu7HTs4B15u77 .label text,#mermaid-svg-wZWEu7HTs4B15u77 span{fill:#333;color:#333;}#mermaid-svg-wZWEu7HTs4B15u77 .node rect,#mermaid-svg-wZWEu7HTs4B15u77 .node circle,#mermaid-svg-wZWEu7HTs4B15u77 .node ellipse,#mermaid-svg-wZWEu7HTs4B15u77 .node polygon,#mermaid-svg-wZWEu7HTs4B15u77 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-wZWEu7HTs4B15u77 .node .label{text-align:center;}#mermaid-svg-wZWEu7HTs4B15u77 .node.clickable{cursor:pointer;}#mermaid-svg-wZWEu7HTs4B15u77 .arrowheadPath{fill:#333333;}#mermaid-svg-wZWEu7HTs4B15u77 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-wZWEu7HTs4B15u77 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-wZWEu7HTs4B15u77 .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-wZWEu7HTs4B15u77 .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-wZWEu7HTs4B15u77 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-wZWEu7HTs4B15u77 .cluster text{fill:#333;}#mermaid-svg-wZWEu7HTs4B15u77 .cluster span{color:#333;}#mermaid-svg-wZWEu7HTs4B15u77 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-wZWEu7HTs4B15u77 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

可以验证凭据
无法验证凭据
开始
进入登录
输入账号密码
注册账号密码
新建账号和密码
进入系统
是否正确
确认登录
结束
密码错误
是否找回密码
验证找回密码凭据

2.2 储存模块

#mermaid-svg-H42SdBxlIPqVvssU {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-H42SdBxlIPqVvssU .error-icon{fill:#552222;}#mermaid-svg-H42SdBxlIPqVvssU .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-H42SdBxlIPqVvssU .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-H42SdBxlIPqVvssU .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-H42SdBxlIPqVvssU .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-H42SdBxlIPqVvssU .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-H42SdBxlIPqVvssU .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-H42SdBxlIPqVvssU .marker{fill:#333333;stroke:#333333;}#mermaid-svg-H42SdBxlIPqVvssU .marker.cross{stroke:#333333;}#mermaid-svg-H42SdBxlIPqVvssU svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-H42SdBxlIPqVvssU .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-H42SdBxlIPqVvssU .cluster-label text{fill:#333;}#mermaid-svg-H42SdBxlIPqVvssU .cluster-label span{color:#333;}#mermaid-svg-H42SdBxlIPqVvssU .label text,#mermaid-svg-H42SdBxlIPqVvssU span{fill:#333;color:#333;}#mermaid-svg-H42SdBxlIPqVvssU .node rect,#mermaid-svg-H42SdBxlIPqVvssU .node circle,#mermaid-svg-H42SdBxlIPqVvssU .node ellipse,#mermaid-svg-H42SdBxlIPqVvssU .node polygon,#mermaid-svg-H42SdBxlIPqVvssU .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-H42SdBxlIPqVvssU .node .label{text-align:center;}#mermaid-svg-H42SdBxlIPqVvssU .node.clickable{cursor:pointer;}#mermaid-svg-H42SdBxlIPqVvssU .arrowheadPath{fill:#333333;}#mermaid-svg-H42SdBxlIPqVvssU .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-H42SdBxlIPqVvssU .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-H42SdBxlIPqVvssU .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-H42SdBxlIPqVvssU .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-H42SdBxlIPqVvssU .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-H42SdBxlIPqVvssU .cluster text{fill:#333;}#mermaid-svg-H42SdBxlIPqVvssU .cluster span{color:#333;}#mermaid-svg-H42SdBxlIPqVvssU div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-H42SdBxlIPqVvssU :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

开始
选择储存数据
是否还有储存空间
计量文件大小
将文件转换为二进制数组存在内存中
分配函数分配坐标
写入数据
将坐标表写入坐标数据
结束
是否还有达到最大空间
抛出错误:达到最大空间
储存空间扩容
分配函数配置文件修改

2.3 读取模块

#mermaid-svg-jmUEktK8L7BbMuSH {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-jmUEktK8L7BbMuSH .error-icon{fill:#552222;}#mermaid-svg-jmUEktK8L7BbMuSH .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-jmUEktK8L7BbMuSH .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-jmUEktK8L7BbMuSH .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-jmUEktK8L7BbMuSH .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-jmUEktK8L7BbMuSH .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-jmUEktK8L7BbMuSH .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-jmUEktK8L7BbMuSH .marker{fill:#333333;stroke:#333333;}#mermaid-svg-jmUEktK8L7BbMuSH .marker.cross{stroke:#333333;}#mermaid-svg-jmUEktK8L7BbMuSH svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-jmUEktK8L7BbMuSH .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-jmUEktK8L7BbMuSH .cluster-label text{fill:#333;}#mermaid-svg-jmUEktK8L7BbMuSH .cluster-label span{color:#333;}#mermaid-svg-jmUEktK8L7BbMuSH .label text,#mermaid-svg-jmUEktK8L7BbMuSH span{fill:#333;color:#333;}#mermaid-svg-jmUEktK8L7BbMuSH .node rect,#mermaid-svg-jmUEktK8L7BbMuSH .node circle,#mermaid-svg-jmUEktK8L7BbMuSH .node ellipse,#mermaid-svg-jmUEktK8L7BbMuSH .node polygon,#mermaid-svg-jmUEktK8L7BbMuSH .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-jmUEktK8L7BbMuSH .node .label{text-align:center;}#mermaid-svg-jmUEktK8L7BbMuSH .node.clickable{cursor:pointer;}#mermaid-svg-jmUEktK8L7BbMuSH .arrowheadPath{fill:#333333;}#mermaid-svg-jmUEktK8L7BbMuSH .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-jmUEktK8L7BbMuSH .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-jmUEktK8L7BbMuSH .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-jmUEktK8L7BbMuSH .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-jmUEktK8L7BbMuSH .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-jmUEktK8L7BbMuSH .cluster text{fill:#333;}#mermaid-svg-jmUEktK8L7BbMuSH .cluster span{color:#333;}#mermaid-svg-jmUEktK8L7BbMuSH div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-jmUEktK8L7BbMuSH :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

开始
在UI中选择文件
在坐标数据中查找坐标
是否存在
读取块数据
载出函数
结束
抛出错误:文件丢失或不存在

2.4 身份验证

#mermaid-svg-n1CkLH5aqkrM3fMg {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-n1CkLH5aqkrM3fMg .error-icon{fill:#552222;}#mermaid-svg-n1CkLH5aqkrM3fMg .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-n1CkLH5aqkrM3fMg .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-n1CkLH5aqkrM3fMg .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-n1CkLH5aqkrM3fMg .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-n1CkLH5aqkrM3fMg .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-n1CkLH5aqkrM3fMg .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-n1CkLH5aqkrM3fMg .marker{fill:#333333;stroke:#333333;}#mermaid-svg-n1CkLH5aqkrM3fMg .marker.cross{stroke:#333333;}#mermaid-svg-n1CkLH5aqkrM3fMg svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-n1CkLH5aqkrM3fMg .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-n1CkLH5aqkrM3fMg .cluster-label text{fill:#333;}#mermaid-svg-n1CkLH5aqkrM3fMg .cluster-label span{color:#333;}#mermaid-svg-n1CkLH5aqkrM3fMg .label text,#mermaid-svg-n1CkLH5aqkrM3fMg span{fill:#333;color:#333;}#mermaid-svg-n1CkLH5aqkrM3fMg .node rect,#mermaid-svg-n1CkLH5aqkrM3fMg .node circle,#mermaid-svg-n1CkLH5aqkrM3fMg .node ellipse,#mermaid-svg-n1CkLH5aqkrM3fMg .node polygon,#mermaid-svg-n1CkLH5aqkrM3fMg .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-n1CkLH5aqkrM3fMg .node .label{text-align:center;}#mermaid-svg-n1CkLH5aqkrM3fMg .node.clickable{cursor:pointer;}#mermaid-svg-n1CkLH5aqkrM3fMg .arrowheadPath{fill:#333333;}#mermaid-svg-n1CkLH5aqkrM3fMg .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-n1CkLH5aqkrM3fMg .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-n1CkLH5aqkrM3fMg .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-n1CkLH5aqkrM3fMg .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-n1CkLH5aqkrM3fMg .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-n1CkLH5aqkrM3fMg .cluster text{fill:#333;}#mermaid-svg-n1CkLH5aqkrM3fMg .cluster span{color:#333;}#mermaid-svg-n1CkLH5aqkrM3fMg div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-n1CkLH5aqkrM3fMg :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

开始
开始文件/身份验证
获取登录用户权限等级
数据库读取选择文件权限
是否达到文件等级
抛出错误:身份错误
结束
身份验证成功

2.5 文件加密

#mermaid-svg-ehEE5GZIdDIJuIOM {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-ehEE5GZIdDIJuIOM .error-icon{fill:#552222;}#mermaid-svg-ehEE5GZIdDIJuIOM .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-ehEE5GZIdDIJuIOM .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-ehEE5GZIdDIJuIOM .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-ehEE5GZIdDIJuIOM .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-ehEE5GZIdDIJuIOM .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-ehEE5GZIdDIJuIOM .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-ehEE5GZIdDIJuIOM .marker{fill:#333333;stroke:#333333;}#mermaid-svg-ehEE5GZIdDIJuIOM .marker.cross{stroke:#333333;}#mermaid-svg-ehEE5GZIdDIJuIOM svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-ehEE5GZIdDIJuIOM .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-ehEE5GZIdDIJuIOM .cluster-label text{fill:#333;}#mermaid-svg-ehEE5GZIdDIJuIOM .cluster-label span{color:#333;}#mermaid-svg-ehEE5GZIdDIJuIOM .label text,#mermaid-svg-ehEE5GZIdDIJuIOM span{fill:#333;color:#333;}#mermaid-svg-ehEE5GZIdDIJuIOM .node rect,#mermaid-svg-ehEE5GZIdDIJuIOM .node circle,#mermaid-svg-ehEE5GZIdDIJuIOM .node ellipse,#mermaid-svg-ehEE5GZIdDIJuIOM .node polygon,#mermaid-svg-ehEE5GZIdDIJuIOM .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-ehEE5GZIdDIJuIOM .node .label{text-align:center;}#mermaid-svg-ehEE5GZIdDIJuIOM .node.clickable{cursor:pointer;}#mermaid-svg-ehEE5GZIdDIJuIOM .arrowheadPath{fill:#333333;}#mermaid-svg-ehEE5GZIdDIJuIOM .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-ehEE5GZIdDIJuIOM .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-ehEE5GZIdDIJuIOM .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-ehEE5GZIdDIJuIOM .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-ehEE5GZIdDIJuIOM .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-ehEE5GZIdDIJuIOM .cluster text{fill:#333;}#mermaid-svg-ehEE5GZIdDIJuIOM .cluster span{color:#333;}#mermaid-svg-ehEE5GZIdDIJuIOM div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-ehEE5GZIdDIJuIOM :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

开始
输入文件
转换为二进制数据
传入加密算法
将密文写入数据
记录坐标函数
结束

2.6 文件解密

#mermaid-svg-PvEeRq1s4vZTH9KA {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-PvEeRq1s4vZTH9KA .error-icon{fill:#552222;}#mermaid-svg-PvEeRq1s4vZTH9KA .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-PvEeRq1s4vZTH9KA .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-PvEeRq1s4vZTH9KA .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-PvEeRq1s4vZTH9KA .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-PvEeRq1s4vZTH9KA .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-PvEeRq1s4vZTH9KA .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-PvEeRq1s4vZTH9KA .marker{fill:#333333;stroke:#333333;}#mermaid-svg-PvEeRq1s4vZTH9KA .marker.cross{stroke:#333333;}#mermaid-svg-PvEeRq1s4vZTH9KA svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-PvEeRq1s4vZTH9KA .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-PvEeRq1s4vZTH9KA .cluster-label text{fill:#333;}#mermaid-svg-PvEeRq1s4vZTH9KA .cluster-label span{color:#333;}#mermaid-svg-PvEeRq1s4vZTH9KA .label text,#mermaid-svg-PvEeRq1s4vZTH9KA span{fill:#333;color:#333;}#mermaid-svg-PvEeRq1s4vZTH9KA .node rect,#mermaid-svg-PvEeRq1s4vZTH9KA .node circle,#mermaid-svg-PvEeRq1s4vZTH9KA .node ellipse,#mermaid-svg-PvEeRq1s4vZTH9KA .node polygon,#mermaid-svg-PvEeRq1s4vZTH9KA .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-PvEeRq1s4vZTH9KA .node .label{text-align:center;}#mermaid-svg-PvEeRq1s4vZTH9KA .node.clickable{cursor:pointer;}#mermaid-svg-PvEeRq1s4vZTH9KA .arrowheadPath{fill:#333333;}#mermaid-svg-PvEeRq1s4vZTH9KA .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-PvEeRq1s4vZTH9KA .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-PvEeRq1s4vZTH9KA .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-PvEeRq1s4vZTH9KA .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-PvEeRq1s4vZTH9KA .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-PvEeRq1s4vZTH9KA .cluster text{fill:#333;}#mermaid-svg-PvEeRq1s4vZTH9KA .cluster span{color:#333;}#mermaid-svg-PvEeRq1s4vZTH9KA div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-PvEeRq1s4vZTH9KA :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

开始
坐标函数查找数据
组合数据成二进制文件
传入解密算法
将明文写入文件
结束

2.7 坐标函数

#mermaid-svg-g3jVrIKTUspnhKhE {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-g3jVrIKTUspnhKhE .error-icon{fill:#552222;}#mermaid-svg-g3jVrIKTUspnhKhE .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-g3jVrIKTUspnhKhE .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-g3jVrIKTUspnhKhE .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-g3jVrIKTUspnhKhE .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-g3jVrIKTUspnhKhE .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-g3jVrIKTUspnhKhE .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-g3jVrIKTUspnhKhE .marker{fill:#333333;stroke:#333333;}#mermaid-svg-g3jVrIKTUspnhKhE .marker.cross{stroke:#333333;}#mermaid-svg-g3jVrIKTUspnhKhE svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-g3jVrIKTUspnhKhE .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-g3jVrIKTUspnhKhE .cluster-label text{fill:#333;}#mermaid-svg-g3jVrIKTUspnhKhE .cluster-label span{color:#333;}#mermaid-svg-g3jVrIKTUspnhKhE .label text,#mermaid-svg-g3jVrIKTUspnhKhE span{fill:#333;color:#333;}#mermaid-svg-g3jVrIKTUspnhKhE .node rect,#mermaid-svg-g3jVrIKTUspnhKhE .node circle,#mermaid-svg-g3jVrIKTUspnhKhE .node ellipse,#mermaid-svg-g3jVrIKTUspnhKhE .node polygon,#mermaid-svg-g3jVrIKTUspnhKhE .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-g3jVrIKTUspnhKhE .node .label{text-align:center;}#mermaid-svg-g3jVrIKTUspnhKhE .node.clickable{cursor:pointer;}#mermaid-svg-g3jVrIKTUspnhKhE .arrowheadPath{fill:#333333;}#mermaid-svg-g3jVrIKTUspnhKhE .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-g3jVrIKTUspnhKhE .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-g3jVrIKTUspnhKhE .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-g3jVrIKTUspnhKhE .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-g3jVrIKTUspnhKhE .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-g3jVrIKTUspnhKhE .cluster text{fill:#333;}#mermaid-svg-g3jVrIKTUspnhKhE .cluster span{color:#333;}#mermaid-svg-g3jVrIKTUspnhKhE div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-g3jVrIKTUspnhKhE :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

达到最大上限
开始
传入参数集
获取文件大小
读取配置文件中的块文件大小
生成n个随机值
是否已使用
重新生成m个随机值
传出可用坐标
结束
抛出错误:内存不足
拓展内存
更新坐标表规格

2.8 空间扩容

#mermaid-svg-Tjh3bi4O1EJgJVI4 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-Tjh3bi4O1EJgJVI4 .error-icon{fill:#552222;}#mermaid-svg-Tjh3bi4O1EJgJVI4 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-Tjh3bi4O1EJgJVI4 .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-Tjh3bi4O1EJgJVI4 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-Tjh3bi4O1EJgJVI4 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-Tjh3bi4O1EJgJVI4 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-Tjh3bi4O1EJgJVI4 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-Tjh3bi4O1EJgJVI4 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-Tjh3bi4O1EJgJVI4 .marker.cross{stroke:#333333;}#mermaid-svg-Tjh3bi4O1EJgJVI4 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-Tjh3bi4O1EJgJVI4 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-Tjh3bi4O1EJgJVI4 .cluster-label text{fill:#333;}#mermaid-svg-Tjh3bi4O1EJgJVI4 .cluster-label span{color:#333;}#mermaid-svg-Tjh3bi4O1EJgJVI4 .label text,#mermaid-svg-Tjh3bi4O1EJgJVI4 span{fill:#333;color:#333;}#mermaid-svg-Tjh3bi4O1EJgJVI4 .node rect,#mermaid-svg-Tjh3bi4O1EJgJVI4 .node circle,#mermaid-svg-Tjh3bi4O1EJgJVI4 .node ellipse,#mermaid-svg-Tjh3bi4O1EJgJVI4 .node polygon,#mermaid-svg-Tjh3bi4O1EJgJVI4 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-Tjh3bi4O1EJgJVI4 .node .label{text-align:center;}#mermaid-svg-Tjh3bi4O1EJgJVI4 .node.clickable{cursor:pointer;}#mermaid-svg-Tjh3bi4O1EJgJVI4 .arrowheadPath{fill:#333333;}#mermaid-svg-Tjh3bi4O1EJgJVI4 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-Tjh3bi4O1EJgJVI4 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-Tjh3bi4O1EJgJVI4 .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-Tjh3bi4O1EJgJVI4 .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-Tjh3bi4O1EJgJVI4 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-Tjh3bi4O1EJgJVI4 .cluster text{fill:#333;}#mermaid-svg-Tjh3bi4O1EJgJVI4 .cluster span{color:#333;}#mermaid-svg-Tjh3bi4O1EJgJVI4 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-Tjh3bi4O1EJgJVI4 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

开始
判断是否有二倍的物理内存空间供扩容
抛出错误:内存不足
结束
判断储存是否达到了最大扩容量
向储存中写入n字节0数据
更新坐标函数配置
创建新的储存
配置新的储存
将新的储存设置传入坐标函数

第三章 名词解释

3.1 储存

3.1.1 块文件

用于储存文件的最小单元(初始化为16byte)

3.1.2 坐标

存在于坐标表上用于记录块文件在储存中的偏移

3.1.3 坐标函数

传入文件后对文件进行拆分后形成块文件后传出的坐标表

3.1.4 坐标表

每个文件都会被拆分成n个块文件,然后每个块文件对应一个坐标,整个文件形成的坐标叫做坐标表

3.1.5 坐标数据

储存了所有文件的坐标表的集合

3.1.6 储存

n个二进制文件,没有被储存的地方用00000000代替,用于存放块文件

3.2 加密解密

3.2.1 加密算法

对块文件进行加密的算法

3.2.2 解密算法

对块文件进行解密的算法

第四章 解释

本项目于为学习项目,作者将使用C#进行开发,后可能会移植到Python中,后续教程正在编写

项目策划 文件管理系统相关推荐

  1. 项目总结:文件管理系统

    本篇文章主要是对文件管理系统的项目梳理及总结: 系统语言本地化 因为系统要求双语,在设计的时候用到了一个窗体参数: 设置了这两个参数后,可以在解决方案里看到两个资源文件,一个是设计语言的,一个是本地化 ...

  2. 儿童B2C网站项目策划书

    儿童B2C网站项目策划书 根据当前B2C市场背景及网站需求,建立儿童B2C网站,充分利用互联网络24*7及12时区效应,实现时尚礼品速递服务. 项目实施进度周期短.投入低.市场需求大.效益明显.具&q ...

  3. 软件项目策划与管理知识点汇总

    categories: [计算机通识,软件项目策划与管理] thumbnail: /images/fe/rjxmchhgl.jpg toc: true 软件项目策划与管知识点汇总 第一章:序言 关于软 ...

  4. 奢侈品网站项目策划方案——请诸位同仁点评。

    奢侈品网站项目策划方案 一.     市场分析 中国奢侈品消费市场的快速增长,极大地刺激着全球奢侈品公司的扩张欲望, 世界公认的顶级奢侈品品牌中已有超过八成进驻中国市场.据<2010胡润财富报告 ...

  5. 论:CMMI项目策划方法(PP)

    项目策划方法 一.建立项目策划方针和过程 1. 建立方针:在我们的组织过程方针中,对项目策划方针进行了描述. 2. 建立过程:根据组织过程规程,参考裁剪指南,结合项目特性,裁剪得出项目过程定义.其中对 ...

  6. C小项目 —— 学生信息管理系统

    C小项目 -- 学生信息管理系统 实现功能: 1. 录入学生信息 2. 显示所有学生信息 3. 按学号查询学生信息 4. 按姓名查询学生信息(支持模糊查询) 5. 按年龄查询学生信息 6. 修改学生信 ...

  7. 毕业设计-课程设计-Spring+SpringMVC+Mybatis项目—企业权限管理系统(1)

    JavaEE:Spring+SpringMVC+Mybatis项目-企业权限管理系统 首先给出项目演示地址:http://www.youngxy.top:8080/SSM/ 项目架构图: 一:功能需求 ...

  8. SSM毕设项目超市会员卡管理系统dq469(java+VUE+Mybatis+Maven+Mysql)

    SSM毕设项目超市会员卡管理系统dq469(java+VUE+Mybatis+Maven+Mysql) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilder ...

  9. ssm毕设项目农贸市场摊位管理系统c22ux(java+VUE+Mybatis+Maven+Mysql+sprnig)

    ssm毕设项目农贸市场摊位管理系统c22ux(java+VUE+Mybatis+Maven+Mysql+sprnig) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + ...

最新文章

  1. 计算机c语言循环作业,C语言计算机作业编程.doc
  2. The 4 Most Important Skills for a Software Developer
  3. 微信jssdk,实现多图上传的一点心得
  4. OpenCv 如何对图像的像素进行操作
  5. ubuntu16.04下安装emacs
  6. 无法解析具体reference那个同名文件
  7. R语言读取Excel的神器——openxlsx
  8. 关于流行的几点思考——《引爆点》读书笔记
  9. 计算机禁止安装游戏,win7系统禁用自动安装游戏应用的详细教程
  10. 考研高等数学张宇30讲笔记——第一讲 高等数学预备知识
  11. matlab 教案,matlab第七讲教案.doc
  12. AT91SAM9260开发板
  13. Canvas Scaler 的3种模式
  14. Java API在HDFS上实现文件的上传、下载到本地、创建文件夹、删除文件和重命名文件
  15. python中如何判断一个字符串是否可以转换为数字
  16. 《Sony Vegas Pro 12标准教程》——1.3 Vegas Pro安装与设置
  17. 词法分析、语法分析、语义分析
  18. 500G 史上最全的JAVA全套视频教程网盘
  19. linux 音频播放的系统层问题
  20. ssm+vue学生网络作业管理系统java maven

热门文章

  1. 【机器学习】如何成为当下合格的算法工程师
  2. android 错误中英互译,安卓手机Recovery模式刷机情况下的中英文对照翻译
  3. Windows运行单个.bat文件或运行多个.bat文件
  4. 请编写一个函数,接收两颗星星赤经和赤纬的角度作为参数,计算并返回这两颗星星所对弧的角度。
  5. Python语法解析器PLY( lex and yacc in Python)
  6. Nginx文件代理配置
  7. Tensorflow和Keras基础使用教程
  8. iOS开发中的好工具
  9. 前端实现在线预览、编辑Office文档(vue版)
  10. 抓包微信下线的操作思路