#href-box{
text-align: center;
font-size: 40px;
margin:0 atuo;
background: bisque;
}
#btn-box {
display: flex;
border-radius: 99%;
background: burlywood;
}
.menu h1 {
text-align: center;
background: greenyellow;
}
.menu div {
font-size: 24px;
text-align: center;
background: blueviolet;
}
#btn {
width: 100px;
height: 100px;
font-size: 24px;
background: yellowgreen;
display: block;
margin: 0 auto;
background: blue;
border-radius: 50%;
}
#showtext {
display: block;
margin: 0 auto;
font-size: 15px;
background: pink;
border: 1px solid
}
#showarray {
width: 100px;
height: 100px;
font-size: 24px;
background: yellowgreen;
display: block;
margin: 0 auto;
background: red;
border-radius: 50%;
}
#shuaxin{
width: 1500px;
height: 100px;
font-size: 24px;
background: yellowgreen;
display: block;
margin: 0 auto;
}
#showbackmap {
width: 100px;
height: 100px;
font-size: 24px;
background: yellowgreen;
display: block;
margin: 0 auto;
background: gray;
border-radius: 50%;
}
#text {
display: block;
margin: 0 auto;
font-size: 30px;
background: pink;
border: 1px solid
}
#fattext {
display: block;
margin: 0 auto;
font-size: 30px;
background: gray;
}
#showstruct {
width: 100px;
height: 100px;
font-size: 24px;
background: yellowgreen;
display: block;
margin: 0 auto;
background: red;
border-radius: 50%;
}
window.onload = function () {
//位示图定义
/*var tArray = new Array(); / / 先声明一维
for (var k = 0; k < i; k++) { //一维长度为i,i为变量,可以根据实际情况改变
tArray[k] = new Array(); //声明二维,每一个一维数组里面的一个元素都是一个数组;
for (var j = 0; j < p; j++) { //一维数组里面每个元素数组可以包含的数量p,p也是一个变量;
tArray[k][j] = ""; //这里将变量初始化,我这边统一初始化为空,后面在用所需的值覆盖里面的值
}
}*/
var shuaxin=document.getElementById("shuaxin");
shuaxin.οnclick=function(){
location.reload();
}
var creatfile = 0;
var backmap = new Array();
var bitmap1 = new Array();
for (var i = 0; i < 64; i++) {
backmap[i] = " ";
}
for (var i = 0; i < 64; i++) {
bitmap1[i] = " ";
}
var useblock = new Array();
for (i = 0; i < 64; i++) {
useblock[i] = " ";
}
var arr = new Array();
var wi = 8, p = 8;
for (var k = 0; k < wi; k++) {
arr[k] = new Array();
for (var j = 0; j < p; j++) {
arr[k][j] = "";
}
}
function getrandom() {
for (i = 0; i < 8; i++) {
for (j = 0; j < 8; j++) {
var num = Math.random();
if (num > 0.5) {
arr[i][j] = 1;
}
else {
arr[i][j] = 0;
}
}
}
console.log(arr);
}
var showstruct = document.getElementById("showstruct");
showstruct.onclick = function () {
var text = document.getElementById("showtext");
var kin = 0;
for (var i = 0; i < 10; i++) {
if (docmessage.doc_name[i] !== "") {
kin = kin + 1;
}
console.log(docmessage.doc_name[i]);
}
console.log(kin);
if (kin === 0) {
alert("当前的文件目录为空");
} else {
text.value="1.文件名2.文件层级3.文件大小4.文件父类5.文件创建顺序6.文件占据块数量"+"\n";
for (i = 0; i < 10; i++) {
text.value = text.value + " " + docmessage.doc_name[i] + " " + docmessage.doc_state[i] + " " + docmessage.doc_memory[i] + " " + docmessage.doc_parents[i] + " " + docmessage.doc_creatfile[i] + " " + docmessage.doc_creatblock[i]+"\n"
}
}
}
var showarray = document.getElementById("showarray");
showarray.onclick = function () {
var text = document.getElementById("showtext");
for (i = 0; i < 8; i++) {
for (j = 0; j < 8; j++) {
text.value = text.value + " " + arr[i][j]
}
text.value = text.value + "\n";
}
console.log(arr);
}
var showbackmap = document.getElementById("showbackmap");
showbackmap.onclick = function () {//
var text = document.getElementById("showtext");
for (var i = 0; i < 64; i++) {
text.value = text.value + " " + backmap[i] + "";
}
var kin = 0;
for (var i = 0; i < 64; i++) {
if (backmap[i] != " ") {
kin = kin + 1;
}
}
if (kin === 0) {
alert("当前的backmap还未生成");
}
console.log(backmap);
}
getrandom();
function setarr() {
var text = document.getElementById("text");
text.value = arr[0] + "\n" + arr[1] + "\n" + arr[2] + "\n" + arr[3] + "\n" + arr[4] + "\n" + arr[5] + "\n" + arr[6] + "\n" + arr[7];
}
setarr();
function getbitmap() {
var wnum = 0
for (var i = 0; i < 8; i++) {
for (var j = 0; j < 8; j++) {
wnum = wnum + 1;
if (arr[i][j] == 0) {
bitmap1[i * 8 + j] = 0;
}
else {
bitmap1[i * 8 + j] = 1;
}
}
}
}
getbitmap();
function setfat() {
var fat = document.getElementById("fattext");
for (i = 0; i < 64; i++) {
fat.value = fat.value + "第" + i + "个位置的内存占用情况为" + bitmap1[i] + "\n";
//console.log(bitmap1[i]);
}
// console.log(fat.value);
}
var fat = document.getElementById("fattext");
//fat.value="第"+i+"个位置的内存占用情况为+"+bitmap1[i]+"\n";
setfat();
console.log(bitmap1);
//自定义构造函数
function nowdocmessage(state, parents, number, name) {
this.name = name;
this.state = state;
this.parents = parents;
this.number = number;
this.memory = "";
this.creatfile = 0;
}
var docmessage = {
doc_name: Array(),
doc_state: Array(),
doc_parents: Array(),
doc_number: Array(),
doc_memory: Array(),
doc_creatfile: Array(),
doc_creatblock: Array(),
}
for (i = 0; i < 10; i++) {
docmessage.doc_name[i] = "";
docmessage.doc_memory[i] = "";
docmessage.doc_number[i] = "";
docmessage.doc_parents[i] = "";
docmessage.doc_state[i] = "";
docmessage.doc_creatfile[i] = "";
docmessage.doc_creatblock[i] = "";
}
var nowdoc = new nowdocmessage(0, -1, 0, "outside");
// nowdoc.memory = prompt("请输入您想要的文件大小");
//console.log("创建的文件大小为" + nowdoc.memory);
function isexist(state, name) {
// console.log(state,name);
for (i = 0; i < 100; i++) {
//console.log(docmessage.doc_state[i],docmessage.doc_name[i]);
if (docmessage.doc_state[i] == state && docmessage.doc_name[i] == name) {
return false;
}
}
}
console.log("nowdoc.state" + nowdoc.state);
var btn = document.getElementById("btn");
// for (p = 0; p <= 2; p++) {
//btn.onclick = fun(nowdoc);
// }
k = 0;
console.log(nowdoc);
btn.onclick = function fun(events) {
console.log("传进来的参数为" + nowdoc);
var keyword = prompt("请输入您想要进行的操作");
console.log(keyword);
if (keyword == "md") {//创建文件夹
var docname = prompt("请输入您想要的文件夹");
console.log("当前的state为" + nowdoc.state);
console.log("当前的number为" + nowdoc.number);
if (isexist(nowdoc.state, docname) == false) {
alert("this document is exist");
}
else {
alert("this document is not exist");
console.log("当前的state" + nowdoc.state);
console.log("当前的parents " + nowdoc.parents);
docmessage.doc_parents[k] = nowdoc.parents;
docmessage.doc_name[k] = docname;
docmessage.doc_memory[k] = "";
docmessage.doc_state[k] = nowdoc.state;
docmessage.doc_number[k] = nowdoc.number;
console.log(docmessage);
k = k + 1;
alert("该文件夹创建成功");
nowdoc.number++;
}
}
if (keyword == "rd") {//删除文件夹
var rdname = prompt("请输入当前目录下您想要删除的文件夹名字");
for (var i = 0; i < 10; i++) {
console.log("想要删除文件夹名字" + rdname);
console.log("doc父亲名字" + docmessage.doc_name[docmessage.doc_parents[i]]);
if (rdname = docmessage.doc_name[i]) {
console.log(docmessage.doc_parents[i]);
if (docmessage.doc_name[docmessage.doc_parents[i]] == rdname && docmessage.doc_memory != " ") {
alert("该文件夹下有内容不能删除");
}
else {
docmessage.doc_name = " ";
docmessage.doc_memory = " ";
docmessage.doc_number = " ";
docmessage.doc_parents = " ";
docmessage.doc_state = " ";
}
}
}
}
if (keyword == "del") {
console.log("del");
var delname = prompt("请输入您想要删除的文件");
console.log("delname" + delname);
console.log(docmessage);
for (var i = 0; i < 10; i++) {
console.log("docmessage.doc.name memory" + docmessage.doc_name[i], +docmessage.doc_memory[i]);
if (delname == docmessage.doc_name[i] && docmessage.doc_memory[i] == 0) {
alert("该目录是文件夹");
}
if (delname == docmessage.doc_name[i] && docmessage.doc_memory[i] != 0) {
alert("进行删除操作");
var nodenumber = i;
var returnblock = docmessage.doc_creatblock[i] - 1;
var returnnumber = docmessage.doc_creatfile[i];
console.log(returnblock, returnnumber);
var sum = 0;
for (var i = 0; i < 10; i++) {
if (docmessage.doc_creatfile[i] < returnnumber) {
console.log(docmessage.doc_creatfile[i]);
sum = sum + docmessage.doc_creatfile[i] * docmessage.doc_creatblock[i];
}
}
console.log("sum" + sum);
for (var i = sum; i < sum + returnblock + 1; i++) {
var end = sum + returnblock;
console.log(backmap[i]);
console.log("返回数组的值为" + backmap);
var hang = parseInt(backmap[i] / 8);
var lie = backmap[i] - 8 * hang;
console.log(hang);
arr[hang][lie] = 0;
bitmap1[backmap[i]] = 0;
backmap[i] = " ";
setfat();
}
console.log(arr);
setarr();
console.log("nodenumber" + nodenumber);
docmessage.doc_creatblock[nodenumber] = " ";
docmessage.doc_creatfile[nodenumber] = " ";
docmessage.doc_memory[nodenumber] = " ";
docmessage.doc_name[nodenumber] = " ";
docmessage.doc_number[nodenumber] = " ";
docmessage.doc_parents[nodenumber] = " ";
docmessage.doc_state[nodenumber] = " ";
console.log("i的值为" + i);
console.log(docmessage);
}
}
alert("该文件删除完毕");
console.log("返回数组的值为" + backmap);
}
if (keyword == "mk") {//创建文件
creatfile = creatfile + 1;
var filename = prompt("请输入您想要创建的文件的名字");
var filememory = prompt("请输入您想要创建文件的大小");
docmessage.doc_parents[k] = nowdoc.state;
docmessage.doc_name[k] = filename;
docmessage.doc_memory[k] = filememory;
docmessage.doc_state[k] = nowdoc.state;
docmessage.doc_number[k] = nowdoc.number;//有两行赋值在下面
docmessage.doc_creatfile[k] = creatfile;
var n = filememory / 512;
var a = Math.round(n);
docmessage.doc_creatblock[k] = a;
console.log("需要的块数" + a);
for (var i = 0; i < 8; i++) {
for (var j = 0; j < 8; j++) {
if (arr[i][j] == 0 && a != 0) {
arr[i][j] = "1";
a = a - 1;
useblock[i * 8 + j] = "1";
}
}
}
console.log(useblock);
console.log(arr);
setarr();
var fattext = document.getElementById("fattext");
/* for (var i = 0; i < 8; i++) {
for (var j = 0; j < 8; j++) {
if (useblock[i][j] == 1) {
console.log(i,j);
var number = i * 8 + j;
c
}
}
}*/
for (var i = 0; i < 64; i++) {
if (useblock[i] == 1) {
console.log("useblock0" + useblock[0]);
console.log("i的值" + i);
fattext.value = fattext.value + "\n" + i;
for (var j = 0; j < 64; j++) {
if (backmap[j] === " ") {
console.log(backmap[0]);
backmap[j] = i;///空默认等于零
break;
}
}
}
}
console.log(backmap)
fattext.value = fattext.value + "\n" + "该文件内存占用完毕" + "\n";
for (var i = 0; i < 64; i++) {
useblock[i] = " ";
}
console.log("creatfile" + docmessage.doc_creatfile[k]);
console.log("creatblock" + docmessage.doc_creatblock[k]);
console.log(docmessage);
console.log(backmap);
k = k + 1;
}
if (keyword == "cd") //切换
{
var choosename = prompt("请输入您想要选择的文件夹");
console.log("测试数据");
for (var i = 0; i < 10; i++) {
console.log(choosename + " " + docmessage.doc_name[i]);
console.log(docmessage.doc_state[i] + " " + nowdoc.state);
if (docmessage.doc_name[i] == choosename && docmessage.doc_state[i] == nowdoc.state) {
nowdoc.state = docmessage.doc_state[i] + 1;
nowdoc.parents = i;
nowdoc.name = docmessage.doc_name[i];
nowdoc.number = docmessage.doc_number[i]
}
}
}
if (keyword == "cd..") {
alert("已返回上一级文件夹 ");
for (var i = 0; i < 10; i++) {
if (nowdoc.parents == i) {
nowdoc.parents = docmessage.doc_parents[i];
nowdoc.name = docmessage.doc_name[i];
nowdoc.number = docmessage.doc_number[i];
nowdoc.state = docmessage.doc_state[i];
}
}
console.log(docmessage);
}
if (keyword == "showdir") {//显示全部文件夹
console.log("文件名 文件阶段 文件大小")
console.log(docmessage.doc_name);
var text=document.getElementById("showtext");
text.value="文件名 文件阶段 文件大小\n";
for (var i = 0; i < 10; i++) {
if (docmessage.doc_name[i] != " ") {
console.log(docmessage.doc_name[i] + " " + docmessage.doc_state[i] + " " + docmessage.doc_memory[i]);
text.value=text.value+" "+docmessage.doc_name[i] + " " + docmessage.doc_state[i] + " " + docmessage.doc_memory[i]+"\n";
}
}
}
if (keyword == "dir") {//显示当前路径的文件
console.log("文件名 文件阶段 文件大小")
var text=document.getElementById("showtext");
text.value="文件名 文件阶段 文件大小\n";
for (var i = 0; i < 10; i++) {
if (nowdoc.state == docmessage.doc_state[i]) {
console.log(docmessage.doc_name[i] + " " + docmessage.doc_state[i] + " " + docmessage.doc_memory[i]);
text.value=text.value+" "+docmessage.doc_name[i] + " " + docmessage.doc_state[i] + " " + docmessage.doc_memory[i]+"\n";
}
}
}
if (keyword = "show")//显示当前节点
{
console.log("当前节点名字" + nowdoc.name);
console.log("当前节点阶段" + nowdoc.state);
console.log("当前节点数字" + nowdoc.number);
console.log("当前节点父亲" + nowdoc.parents);
}
console.log("btn按钮执行完毕");
}
}