1. 程式人生 > >130242014045 林承暉 第3次實驗

130242014045 林承暉 第3次實驗

alpha 單獨 i+1 == 行集 行數 () tostring 類型

一、實驗目的

1.理解不同體系結構風格的具體內涵。

2.學習體系結構風格的具體實踐。

二、實驗環境

硬件: win10系統

軟件:Js

三、實驗內容

“上下文關鍵字”KWIC(Key Word in Context,文本中的關鍵字)檢索系統接受有序的行集合:每一行是單詞的有序集合;每一個單詞又是字母的有序集合。通過重復地刪除航中第一個單詞,並把它插入行尾,每一行可以被“循環地移動”。KWIC檢索系統以字母表的順序輸出一個所有行循環移動的列表。

嘗試用不同的策略實現這個系統。選擇2-3種體系結構風格來實現。

四、實驗步驟:

一、主程序/子程序風格

1、體系結構圖:

  技術分享圖片

2、簡述體系結構各部件的主要功能,實現思想。

上述的主程序/子程序的方法,將問題分解為輸入(Input)、移動(Shifter)、按字母表排序(Alphabetizer)、輸出(Output)。

Input : 主函數調用該方法,讀取數據,輸出到控制臺。

Shifter : 主函數調用該方法,實現移位。

Alphabetizer : 主函數調用該方法,對行數據進行按字母順序排序

Output : 主函數調用該方法,輸出到控制臺

3、寫出主要的代碼:

//輸入

var arr=[];

function Input(){

var data = fs.readFileSync(‘./wwwroot/input.txt‘);

console.log("-------input-------")

data = data.toString();

console.log(data);

var middle=‘‘;

for(var i=0;i<data.length;i++){

middle += data[i]

if(data[i]==‘ ‘){

arr.push(middle);

middle=‘‘;

}

if(data[i+1]==‘\r‘){

arr.push(middle);

middle=‘‘;

}

if(data[i]==‘\n‘){

arr.push(middle);

middle=‘‘;

}

if(data[i+1] == undefined){

arr.push(middle);

middle=‘‘;

}

}

}

//移動

var complate=[];

function Shifter(){

console.log(‘--------‘)

var middle = ‘‘;

var shifter = [];

var index=[];

for(var i = 0; i<arr.length;i++){

middle += arr[i];

if(arr[i] == ‘\r\n‘){

index.push(i);

}

}

//將每一行的單詞轉為單獨的數組

var list=[];

for(var i=0;i<index.length+1;i++){

var middle=‘‘;

var doc=[];

if(index[i-1]){

for(var j=index[i-1]+1;j<index[i];j++){

doc.push(arr[j]);

}

}

else if(index[i-1] == undefined){

for(var j=0;j<index[i];j++){

doc.push(arr[j]);

}

}

if(i == index.length){

for(var j=index[index.length-1]+1;j<arr.length;j++){

doc.push(arr[j]);

}

}

list.push(doc);

}

// console.log(list);

//對每個數組進行移動

for(var i=0;i<list.length;i++){

var length = list[i].length;

for(var j=0;j<length;j++){

list[i].push(list[i][0]);

list[i].shift();

var middle = ‘‘;

for(var k=0;k<length;k++){

middle += list[i][k] + ‘ ‘;

}

complate.push(middle);

}

}

console.log("-------Shifter-------")

console.log(complate);

}

//排序

var last=[];

function Alphabetizer(){

//對數組進行排序

last = complate.sort();

}

//輸出

function Output(){

var middle = ‘‘;

console.log("-------Output-------");

for(var i=0;i<last.length;i++){

console.log(last[i])

}

}

//main

Input();

Shifter()

Alphabetizer();

Output()

app.listen(3000,function(){

console.log(‘服務器開啟..‘);

})

4、顯示結果:

技術分享圖片

二、管道-過濾器風格

1、體系結構圖:

技術分享圖片

2、簡述體系結構各部件的主要功能,實現思想。

過濾器:輸入(Input)、移動(Shifter)、按字母表排序(Alphabetizer)、輸出(Output)

3、寫出主要的代碼:

//輸入
function Input(){
fs.readFile(‘./wwwroot/input.txt‘,function(err,data){
console.log("-------input-------")
var data = data.toString();
//輸出讀取的內容
console.log(data);
var middle=‘‘;
//將String類型數據轉成數組
for(var i=0;i<data.length;i++){
middle += data[i]
if(data[i]==‘ ‘){
arr.push(middle);
middle=‘‘;
}
if(data[i+1]==‘\r‘){
arr.push(middle);
middle=‘‘;
}
if(data[i]==‘\n‘){
arr.push(middle);
middle=‘‘;
}
if(data[i+1] == undefined){
arr.push(middle);
middle=‘‘;
}
}
Shifter(arr)
});
}
//移動
function Shifter(arr){
var middle = ‘‘;
var shifter = [];
var index=[];

for(var i = 0; i<arr.length;i++){
middle += arr[i];
if(arr[i] == ‘\r\n‘){
index.push(i);
}
}
//將每一行的單詞轉為單獨的數組
var list=[];
for(var i=0;i<index.length+1;i++){
var middle=‘‘;
var doc=[];
if(index[i-1]){
for(var j=index[i-1]+1;j<index[i];j++){
doc.push(arr[j]);
}
}
else if(index[i-1] == undefined){
for(var j=0;j<index[i];j++){
doc.push(arr[j]);
}
}

if(i == index.length){
for(var j=index[index.length-1]+1;j<arr.length;j++){
doc.push(arr[j]);
}
}
list.push(doc);
}
//對每個數組進行移動
var complate=[];
for(var i=0;i<list.length;i++){
var length = list[i].length;
for(var j=0;j<length;j++){
list[i].push(list[i][0]);
list[i].shift();
var middle = ‘‘;
for(var k=0;k<length;k++){
middle += list[i][k] + ‘ ‘;
}
complate.push(middle);
}
}
console.log("-------Shifter-------")
console.log(complate);
Alphabetizer(complate);
}
//排序
function Alphabetizer(complate){
//對數組進行排序
var last = complate.sort();
Output(last);
}

//輸出
function Output(last){
var middle = ‘‘;
console.log("-------Output-------");
for(var i=0;i<last.length;i++){
console.log(last[i])
}
}

Input();

4、顯示結果:

技術分享圖片

130242014045 林承暉 第3次實驗