POSレジバージョン:v 1

7277 ワード

POSレジバージョン:v 1
 
教学目標
JavaScriptの基本文法に詳しいです.
JavaScriptの基本的な論理文とキーワードを熟知しています.
需要の説明
お店で買い物をするときはレジ(POS)システムを使いますが、このレジはお客様のカートの中の商品(Item)とお店で行われているキャンペーン(Promotion)によって決済と印刷を行います.
 
この店では一部の商品を「三つ買ったら一つサービス」というキャンペーンを行っていることが分かりました.つまり、三つの商品を買ったら一つはプレゼントされます.二つの商品の価格によって決済されます.
 
私たちは、指定されたフォーマットのデータをパラメータとして入力し、ブラウザのコンソールから決済リストのテキストを出力することができるprint Inventtory関数という名前の関数を実装する必要があります.
 
入力フォーマット(例):
 
javascript
 

    'ITEM 000001'
    'ITEM 000001'
    'ITEM 000001'
    'ITEM 000001'
    'ITEM 000001'
    'ITEM 00003-2'
    'ITEM 00005'
    'ITEM 00005'
    'ITEM 00005

その中でも「ITEM 00003-2」にとって、「-」の前のものは標準のバーコードで、「-」の後のものは数量です.私たちは計量が必要なものを買う時、計量機でこのようなバーコードを生成します.(「コードを保存して提出する」ボタンをクリックすると、関数print Inventtoryを呼び出して上記のデータをパラメータとして入力します.)
 
リストの内容(サンプル):
 
*<<お金がなくて店を儲けます>ショッピングリスト****
名称:コカコーラ、数量:3本、単価:3.00(元)、小計:6.00(元)
名称:バドミントン、数量:5個、単価:1.00(元)、小計:4.00(元)
名称:リンゴ、数量:2斤、単価:5.50(元)、小計:11.00(元)
------------
涙を流して商品を送ります
名称:コカコーラ、数量:1本
バドミントン、数:1本
------------
合計:21000(元)
節約:4.00(元)
************************************
作業要求
Main.jsファイルでコードを作成し、テストの合格を確保する.
コードの可読性を保証する前提で、最小のコードライン数で作業を完了してください.注意:すべての句読点は英語の記号です.
ジョブのヒント
商品の対象を含む配列(例): 
 [item 1,item 2,item 3,…,itemen]
各商品の対象の構造は以下の通りです.
 
javascript
 
   {
      barch ode:'ITEM 0000'
      name:'コカコーラ'
      unit:''瓶'
      price:3.00
   }
loadPromotions()方法を使用して、すべてのプロモーション情報を取得することができ、この方法は、結果として、プロモーション情報オブジェクトを含む1つのパケットの配列(例)を返す.
 
javascript
   [
      {
        type:''BUYUTWO咻ONEguFREE'は、
        barch odes:[
          'ITEM 0000'
          'ITEM 000001
        ]
      },
      {
        type:'OTHERUPROM ION'
        barch odes:[
          'ITEM 00003'
          'ITEM 000004
        ]
      }
   ]
consolie.log出力を使用する(一回のみ使用可能)
 
各種の流行ブラウザに付属する開発者ツールの中のコンソール機能を習得し、上手に使用すること.
 
 
 
 
 
f
unction printInventory(inputs) {  
    var item;
    var list='***<     >    ***';
    var sum=0;
    var item_list=[];
    var cart_list=[];
    var barcode_list=[];                            
    var allItems = loadAllItems();
    var item_barcode; 
    var Promotion='      :';
    var save=0;
    for(var i=0;i<inputs.length;i++){
    item_barcode=inputs[i];
       if(inputs[i].length == 10){
          barcode_list.push(item_barcode); 
        }
      else{
        
         item_barcode=inputs[i].substr(0,10); 
         barcode_list.push(item_barcode); 
         barcode_list.push(item_barcode); 
        }
    }
      
    for(var j=0;j<barcode_list.length;j++)
    {
        for(var k=0;k<allItems.length;k++){
             item=allItems[k];
            if(allItems[k].barcode==barcode_list[j]){
               cart_list.push(item);
            }
        }  
    }

    for(var l=0;l<cart_list.length;l++){
        item=cart_list[l];
        if(item_list.length===0){
           item.count=1;
           item_list.push(item); 
        }
        else{
            for(var n=0;n<item_list.length;n++){
                if(cart_list[l]==item_list[n]){
                item.count++;
                }
                else if(n==item_list.length-1){
                  item_list.push(item);
                   item.count=0;
                }
            }
        }
    }
    for(var m=0;m<item_list.length;m++)
    {
      
        if(item_list[m].count>=3)
        {
            Promotion+='
'+' :'+item_list[m].name+','+' :'+parseInt(item_list[m].count/3)+item_list[m].unit; save+=parseInt(item_list[m].count/3)*item_list[m].price; } list=list+'
'+' :'+item_list[m].name+','+' :'+item_list[m].count+item_list[m].unit+','+' :'+item_list[m].price.toFixed(2)+'( )'+','+' :'+(item_list[m].count-parseInt(item_list[m].count/3))*item_list[m].price+'.00( )'; sum+=(item_list[m].count-parseInt(item_list[m].count/3))*item_list[m].price; } list=list+'
'+'----------------------'+'
'+Promotion+'
'+'----------------------'+'
'+' :'+sum.toFixed(2)+'( )'+'
'+' :'+save.toFixed(2)+'( )'+'
'+'**********************'; console.log(list);
 
 
  
     
    
)
POSレジv 1この問題は運用されました.      1 forループは配列を巡回します.
                              2オブジェクトのキーに対応する値.
                              3スプライス文字列;
                              4 if else文
                              5配列の追加用push;
                              6 substrは文字列を切り取ります.
                              7パーセントが求めている商は整数です.
                              8 toFixed()Number四捨五入を小数点以下の数字として指定します.
substr()メソッドは、startの下付きから指定された数の文字を文字列から抽出することができます.
構文
stingObject.substr(start,length)
パラメータの説明
startが必要です.抽出するサブストリングの開始の下には、値が必要です.負の数であれば、文字列の末尾から計算される位置を指定します.つまり、-1は文字列の最後の文字、-2を指します.
        最後から二番目の文字は、これを類推します.
lengthを選択します.サブストリングの文字数.必ず数値でなければなりません.このパラメータを省略すると、ストリップObjectの開始位置から最後の文字列に戻ります.
        戻り値
新しい文字列には、stingObjectのstartからlengthまでの文字が含まれています.lengthが指定されていない場合は、startからstingObjectまでの最後の文字が返されます.
 
   1:
ar str="Hello world!"
console.log(str.substr(3))

  :
lo world!
 
   2 :
var str="Hello world!"
console.log(str.substr(3,7))
  :
lo worl
 
 
 
parseitの方法
 
  :
console.log(parseInt(10/3));
  :
3
 
 
 
JavaScript toFixed()方法
 
定義と用法
tofixed()メソッドは、Numberを四捨五入して小数点以下の数字を指定できます.
構文
Number Object.toFixed(num)
パラメータの説明
numが必要です.指定された小数点以下の桁数は、0から20までの値です.一部の実現は、より大きな数値範囲をサポートすることができます.このパラメータを省略すると、0で代替されます.
        戻り値
NumberObjectの文字列を返します.指数カウント法は使用しません.小数点以下は一定のnumビット数があります.必要であれば、その数字は切り捨てられます.指定された長さに達するために0で足すこともできます.numがle+21より大きい場合、この方法はNumberObject.toString()だけを呼び出して、指数カウント法で表される文字列を返します.
投げ出す
numが小さすぎたり、大きすぎたりすると、異常RangeErrを投げます.0~20の間の値はこの異常を誘発しません.より広い範囲またはより小さい範囲の値をサポートするものがあります.
この方法を呼び出したオブジェクトがNumberではない場合、TypeErrを投げます.
実例
この例では、数値を小数点以下の1桁に切り捨てます.
 
var num = new Number(13.37);
console.log (num.toFixed(1));
console.log (num.toFixed(2));
  :
13.37
13.4