Android计算器设计实验报告

一、实验目的:

       熟悉Android稍微复杂的逻辑编程,应用网格布局设计一个简单Android计算器界面并能实现加减和清零等功能。

二、实验设备:

       1.PC机

       2.Windows操作系统

       3.Android Studio

三、实验原理简述:

       TableLayout是一种可以制作表格的布局,它和GridLayout的区别是GridLayout只能制定每一列宽度一样的表格布局,而TableLayout能够制定各列宽度不一样的表格布局。

3.1  TableLayout的主要属性

       android:collapseColumns=”0,1” 隐藏第0列和第1列

       android:stretchColumns=”0,1” 第0列和第1列可以向行方向扩展

       android:stretchColumns=”*” 所有列可以向行方向扩展

       android:shrinkColumns=”0,1” 第0列和第1列可以向列方向扩展

3.2  TableRow子控件的主要属性:

       android:layout_column=”1” 该控件显示在第1列

       android:layout_span=”2” 该控件占据2列

注意:TableLayout里面的子控件可以为TableRow或者其他View,但是其子控件的android:layout_width属性被系统固定为match_parent,TableLayout里面所有行中某一列的宽度的最大值是这一列的宽度。

四、实验数据记录及数据处理:

       在Android Studio新建一个工程,在Palette中选择TableLayout、TableRow、textView和button添加到Component Tree中,并修改主从关系及其id、text和textSIZE。如下图所示:

 

        编写程序,核心代码如下(部分功能省略):

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
    private TextView txtView;
    private Button btn_n0;
    private Button btn_n1;
    private Button btn_n2;
    private Button btn_n3;
    private Button btn_n4;
    private Button btn_n5;
    private Button btn_n6;
    private Button btn_n7;
    private Button btn_n8;
    private Button btn_n9;
    private Button btn_add;
    private Button btn_sub;
    private Button btn_div;
    private Button btn_mix;
    private Button btn_res;
    private Button btn_c;
    private Button btn_del;
    private Button btn_p;
    private Button btn_pct;
    private Button btn_dot;

    int opflag;
    double kk,kk_add,kk_sub;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        txtView=findViewById(R.id.textView);
        btn_n0=findViewById(R.id.button_n0);
        btn_n1=findViewById(R.id.button_n1);
        btn_n2=findViewById(R.id.button_n2);
        btn_n3=findViewById(R.id.button_n3);
        btn_n4=findViewById(R.id.button_n4);
        btn_n5=findViewById(R.id.button_n5);
        btn_n6=findViewById(R.id.button_n6);
        btn_n7=findViewById(R.id.button_n7);
        btn_n8=findViewById(R.id.button_n8);
        btn_n9=findViewById(R.id.button_n9);
        btn_add=findViewById(R.id.button_add);
        btn_sub=findViewById(R.id.button_sub);
        btn_div=findViewById(R.id.button_div);
        btn_mix=findViewById(R.id.button_mix);
        btn_res=findViewById(R.id.button_res);
        btn_c=findViewById(R.id.button_c);
        btn_del=findViewById(R.id.button_del);
        btn_p=findViewById(R.id.button_p);
        btn_pct=findViewById(R.id.button_pct);
        btn_dot=findViewById(R.id.button_dot);

        btn_n0.setOnClickListener(clickListener);
        btn_n1.setOnClickListener(clickListener);
        btn_n2.setOnClickListener(clickListener);
        btn_n3.setOnClickListener(clickListener);
        btn_n4.setOnClickListener(clickListener);
        btn_n5.setOnClickListener(clickListener);
        btn_n6.setOnClickListener(clickListener);
        btn_n7.setOnClickListener(clickListener);
        btn_n8.setOnClickListener(clickListener);
        btn_n9.setOnClickListener(clickListener);
        btn_add.setOnClickListener(clickListener);
        btn_sub.setOnClickListener(clickListener);
        btn_div.setOnClickListener(clickListener);
        btn_mix.setOnClickListener(clickListener);
        btn_res.setOnClickListener(clickListener);
        btn_dot.setOnClickListener(clickListener);
        btn_pct.setOnClickListener(clickListener);
        btn_p.setOnClickListener(clickListener);
        btn_c.setOnClickListener(clickListener);
        btn_del.setOnClickListener(clickListener);

        kk=0;
        opflag=0;
    }
    public View.OnClickListener clickListener = new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            switch (v.getId()) {
                case R.id.button_n0:
                    kk=kk*10+0;
                    break;
                case R.id.button_n1:
                    kk=kk*10+1;
                    break;
                case R.id.button_n2:
                    kk=kk*10+2;
                    break;
                case R.id.button_n3:
                    kk=kk*10+3;
                    break;
                case R.id.button_n4:
                    kk=kk*10+4;
                    break;
                case R.id.button_n5:
                    kk=kk*10+5;
                    break;
                case R.id.button_n6:
                    kk=kk*10+6;
                    break;
                case R.id.button_n7:
                    kk=kk*10+7;
                    break;
                case R.id.button_n8:
                    kk=kk*10+8;
                    break;
                case R.id.button_n9:
                    kk=kk*10+9;
                    break;
                case R.id.button_c:
                    kk=0;
                    break;
                case R.id.button_add:
                    kk_add=kk;
                    kk_sub=0;
                    kk=0;
                    opflag=1;
                    break;
                case R.id.button_sub:
                    kk_add=0;
                    kk_sub=kk;
                    kk=0;
                    opflag=-1;
                    break;
                case R.id.button_res:
                    kk=(kk+kk_add-kk_sub)*opflag;
                    break;
                default:
                    break;
            }
            txtView.setText(String.valueOf(kk));
        }
    };
}

五、实验结果分析:

       下图为Android计算器设计图及APP模拟编译图,可实现基本功能:

体会:此次实验我熟悉了Android稍微复杂的逻辑编程,一步步做实验的过程也感受到了理论课上无法感受到的东西。开发过程中遇到的不会的问题在网上也有对应的解决办法,最终将计算器设计出来及成功运行也感受到了Android开发的强大魅力。 

(如有侵权,请联系删除!文章中若有错误欢迎在评论区指出!)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东_YXD

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值