微信小程序--超简单的非二叉树结构计算器

微信小程序--超简单的非二叉树结构计算器


版权声明:本文为CSDN博主「1275012490」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/ACoolnight/article/details/103465829

在这里插入图片描述

wx.js

// An highlighted block
Page({
    data:
    {
      idb: "back",
      idc: "clear",
      ht:   "ht",
      id9: "9",
      id8: "8",
      id7: "7",
      id6: "6",
      id5: "5",
      id4: "4",
      id3: "3",
      id2: "2",
      id1: "1",
      id0: "0",
      idadd: "+",
      idj: "-",
      idx: "×",
      iddiv: "/",
      sum:"",    // 数值
      sun:"",     //点存数
      point:0,    //有无小数点
      control:0,  // 0 无运算符  1运算符
      idd: ".",
      ide: "=",
      screenData: "0",
      screentopData:"0",
      iconType: 'waiting_circle',
      iconColor: 'white',
      arr: [],
      logs:[],
      temps: []
    },

    onLoad: function (options) {
      // 页面初始化 options为页面跳转所带来的参数

      
    },

    onReady: function () {
      // 页面渲染完成
      
    },

    onShow: function () {
      // 页面显示
    },

    onHide: function () {
      // 页面隐藏
    },

    onUnload: function () {
      // 页面关闭
    },



    clickBtn: function (event) {
      const app =  getApp();
      let arr=this.data.arr;
      var id = event.target.id;

    if (id == this.data.idb)
    {  //退格←

      var data = this.data.screenData+""
      if (data == "0") 
      {
        return;
      }

      data = data.substring(0,data.length-2)
      if (data == "" || data == "-") 
      {
        data = 0;
      }
      this.setData({ "screenData": data });
      
    }


      if (id == this.data.idc) //清屏C
      {  
        arr.length = 0;
        this.data.temps.length=0;
        this.setData({ "screenData": "0","screentopData": "0",sum:0,control:0});

      }

      //输入的数字的字符
      if(!isNaN(id))
      {
        if(id == this.data.id0)
        {
          var sums=this.data.sum*10+0;
        }
        else if(id == this.data.id1)
        {
          sums=this.data.sum*10+1;
        }
        else if(id == this.data.id2)
        {
          sums=this.data.sum*10+2;
        }
        else if(id == this.data.id3)
        {
          sums = this.data.sum * 10 + 3;
        }
        else if(id == this.data.id4)
        {
          sums = this.data.sum * 10 + 4;
        }
        else if(id == this.data.id5)
        {
          sums = this.data.sum * 10 + 5;
        }
        else if(id == this.data.id6)
        {
          sums = this.data.sum * 10 + 6;
        }
        else if(id == this.data.id7)
        {
          sums = this.data.sum * 10 + 7;
        }
        else if(id == this.data.id8)
        {
          sums = this.data.sum * 10 + 8;
        }
        else if(id == this.data.id9)
        {
          sums = this.data.sum * 10 + 9;
        }
          this.setData({sum: sums})
        if(this.data.point==1){sums=this.data.screenData+sums+""}
          var str=arr.join("")
          this.setData({screenData:sums,screentopData:str});
          this.data.control=0
      }

      if(id == this.data.idd)
      {
        let sum=this.data.sum
        let sun=sum+"."
        this.setData({ "sun":sum,"sum":0,"point":1,screenData:sun})

      }

      //四则运算
      if(this.data.control==0)
      {
        if(id == this.data.idadd||id == this.data.idj||id == this.data.idx||id == this.data.iddiv)
        {
           
          if(this.data.point==1){
            this.data.sum=this.data.sum+""
            this.data.sum=this.data.sun+this.data.sum/Math.pow(10,this.data.sum.length);
            this.data.point=0;
            this.data.sun=0;
          }
          arr.push(this.data.sum)

          if(id == this.data.iddiv)
          {
            if(arr[arr.length-1]==""){arr.pop(),arr.push("/")}else{arr.push("/")}
          }

          if(id == this.data.idx)
          {
            if(arr[arr.length-1]==""){arr.pop(),arr.push("*")}else{arr.push("*")}
          }

          if(id == this.data.idj)
          {
            if(arr[arr.length-1]==""){arr.pop(),arr.push("-")}else{arr.push("-")}
          }

          if(id == this.data.idadd)
          {
            if(arr[arr.length-1]==""){arr.pop(),arr.push("+")}else{arr.push("+")}
          }
            var str=arr.join("")
            this.setData({ screenData:str })
            this.data.control=1
            this.data.sum=0
        }
      }
      
      if (id == this.data.ide) //  ===
      {
        
          if(arr.length>=1)//C键导致screendata为空
          {
            this.data.temps.length=0;
            arr.push(this.data.sum)
            var str=arr.join("")
            this.setData({ screentopData:str,sum:""})
          }
          else if(arr.length=0)
          {
            this.data.screenData="0"
            this.data.screentopData="0"
          }

          //调用运算函数
          var result=operation(this.data)
          arr.length=0
          arr.push(result)
          this.setData({ screenData:result })
          //存储记录
          app.globalData.logs.push(this.data.screenData + '=' + this.data.screentopData);
          //wx.setStorageSync("calclogs", this.data.logs);
      }
      
      
      function operation(data)
      {
        let i=0,temp=1,sum=0;
        let arr=data.arr
        let temps=data.temps
        //乘除块
        for(i=0;i<arr.length;i++)
        {
          try{
            if(arr[i]=="*"||arr[i]=="/")
            {
              if(arr[i-2]=="-")
              {
                temp=-1;
              }//矫正乘除块的正负

              if(arr[i]=="*")
              {
                temp*=arr[i-1]*arr[i+1]
              }
              if(arr[i]=="/")
              {
                temp*=arr[i-1]/arr[i+1]
              }

              for(;i<arr.length;i=i+2)
              {
                if(arr[i]=="-"||arr[i]=="+"){break;}//遇到加减乘除衔接 停止遍历
                if(arr[i+2]=="*"){temp*=arr[i+3];}
                if(arr[i+2]=="/"){temp/=arr[i+3];}
              }

              temps.push(temp)
              temp=1
            }
          }catch(err){}
        }

        //加减块
        for(i=0;i<arr.length;i++)
        {
          if(arr[i]=="-"||arr[i]=="+")
          {
            
              if(arr[i+2]=="-"||arr[i+2]=="+")
              {

                if(arr[i]=="-")
                {
                  sum+=0-arr[i+1]
                }

                if(arr[i]=="+")
                {
                  sum+=arr[i+1]
                }

              }
              else if(arr[i+2]==""||arr[i+2]==null)//处理数组超界
              {
                if(arr[i]=="-")
                {
                  sum+=0-arr[i+1]
                }

                if(arr[i]=="+")
                {
                  sum+=arr[i+1]
                }

              }
          }
        }

        if (arr[1] == "-"||arr[1] == "+") { sum += arr[0];}//加减是向前推的,唯独下标 0
        //结果

        for (i = 0; i <temps.length; i++)
            {
                sum += temps[i];
            }
            
            return sum
      }
      
    },

    //历史记录按键
    history:function(event) 
    {
      wx.navigateTo({

        url: '../history/history'
  
      })

    }
})

wxml

// An highlighted block
<view class="content">

  <view class="layout-top">

    <view class="screen" >
      {{screentopData}}
    </view>
    <view class="screen">
     {{screenData}}
    </view>
    
  </view>
  
  <view class="layout-bottom">

    <view class="btnGroup">

      <view class="item orange" bindtap="clickBtn" id="{{idc}}">С</view>

      <view class="item orange" bindtap="clickBtn" id="{{idb}}"></view>

      <view class="item orange iconBtn" bindtap="history" id="{{ht}}">

          <icon type="{{iconType}}" color="{{iconColor}}" class="icon" size="25"/>

      </view>

      <view class="item orange" bindtap="clickBtn" id="{{idadd}}">+</view>

    </view>

    <view class="btnGroup">

      <view class="item blue" bindtap="clickBtn" id="{{id7}}">7</view>

      <view class="item blue" bindtap="clickBtn" id="{{id8}}">8</view>

      <view class="item blue" bindtap="clickBtn" id="{{id9}}">9</view>

      <view class="item orange" bindtap="clickBtn" id="{{idj}}">-</view>

    </view>

    <view class="btnGroup">

      <view class="item blue" bindtap="clickBtn" id="{{id4}}">4</view>

      <view class="item blue" bindtap="clickBtn" id="{{id5}}">5</view>

      <view class="item blue" bindtap="clickBtn" id="{{id6}}">6</view>

      <view class="item orange" bindtap="clickBtn" id="{{idx}}">x</view>

    </view>

    <view class="btnGroup">

      <view class="item blue" bindtap="clickBtn" id="{{id1}}">1</view>

      <view class="item blue" bindtap="clickBtn" id="{{id2}}">2</view>

      <view class="item blue" bindtap="clickBtn" id="{{id3}}">3</view>

      <view class="item orange" bindtap="clickBtn" id="{{iddiv}}">/</view>

    </view>

    <view class="btnGroup">

      <view class="item blue zero" bindtap="clickBtn" id="{{id0}}">0</view>

      <view class="item blue" bindtap="clickBtn" id="{{idd}}" style="width:25%">.</view>

      <view class="item orange" bindtap="clickBtn" id="{{ide}}" style="width:50%"></view>

    </view>

  </view>

</view>


wxss

// An highlighted block
.content { 
    display: flex;
    flex-direction: column;
    align-items: center;
    background-color: #ccc;
    font-family: "Microsoft YaHei";
    overflow-x: hidden;
}

.layout-top{
    width: 100%;
    margin-bottom: 10rpx;
}

.layout-bottom{
    width: 100%;
}

.screen {
    text-align: right;
    width: 100%;
    line-height: 100rpx;
    padding: 10rpx 10rpx;
    font-weight: bold;
    font-size: 100rpx;
    box-sizing: border-box;
    border-top: 1px solid #fff;
}

.btnGroup {
    display: flex;
    flex-direction: row;
    flex: 1;
    width: 100%;
    height: 170rpx;
    background-color: #fff;
}

.item {
    border-radius: 15rpx;
    width:25%;
    display: flex;
    align-items: center;
    flex-direction: column;
    justify-content: center;
    margin-top: 1px;
    margin-right: 1px;
}

.item:active {
    background-color: #ff0000;
}

.zero{
    width: 25%;
}

.orange {
    color: #fef4e9;
    background: black;
    font-weight: bold;
    
}

.blue {
    color:#d9eef7;
    background-color: #0095cd;
}

.iconBtn{
    display: flex;
}

.icon{
   display: flex;
   align-items: center;
   width:100%;
   justify-content: center;
}

记录页,退出程序后记录会消失

App.js
在这里插入图片描述
history.js
在这里插入图片描述

history wxml
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值