1228.1——计算器(未使用MVC设计模式)

#import "ViewController.h"
typedef enum{
    kStausNum,
    kStausOperation
}kStaus;

typedef enum{
    kOperationTypeAdd = 1,
    kOperationTypeMinus,
    kOperationTypeMultiply,
    kOperationTypeDevide,
    kOperationTypeEqual,
    kOperationTypeNone
}kOperationType;

@interface ViewController ()
@property (weak, nonatomic) IBOutlet UILabel *result_label;
@property (nonatomic,assign) long long firstParam; //记录第一个参数
@property (nonatomic,assign) kOperationType lastOperation;//保存上一次的操作数
@property (nonatomic,assign) BOOL status;//记录当前的状态

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    //赋初值
    self.firstParam = 0;
    self.lastOperation = kOperationTypeNone;
    self.status = kStausNum;
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
- (IBAction)numButtonDidClicked:(UIButton *)sender {
    //获取点击的按钮上的数字
    int num = [sender.titleLabel.text intValue];
    //判断继续拼接还是单独显示
    long long showNum;
    if (self.status == kStausNum) {
        //获取之前显示的结果
    long long orgNum = [self.result_label.text longLongValue];
    
    //计算最终显示结果
    showNum = orgNum * 10 + num;
    }else{
        showNum = num;
        self.status = kStausNum;
    }
        
    //显示结果
    self.result_label.text = [NSString stringWithFormat:@"%lld",showNum];
    
    }

//操作键+-*÷
- (IBAction)operationButtonDidClicked:(UIButton *)sender {
    if (self.status != kStausOperation) {
        self.status = kStausOperation;
    }
    self.status = kStausOperation;
    //有两种情况
    //1.第一次操作,只需保存只一次操作
    //2.前面有操作需要计算,并保存这一次的操作
    //3.判断是不是第一次操作
    if (self.lastOperation != kOperationTypeNone) {
        //2.前面有操作需要计算,保存这次操作
        [self calculate];
    }else{
        //第一个参数输入完毕 保存
        self.firstParam = [self.result_label.text longLongValue];
    }
    //保存这一次操作
    if (sender.tag == kOperationTypeEqual) {
        self.lastOperation = kOperationTypeNone;
    }else{
        self.lastOperation = (kOperationType)sender.tag;//自定义tag的值
    }
    
}

//计算结果
-(void)calculate{
    int secondParam = [self.result_label.text intValue];
    long long result;
    
    switch (self.lastOperation) {
        case kOperationTypeAdd:
            result = self.firstParam + secondParam;
            break;
        case kOperationTypeMinus:
            result = self.firstParam - secondParam;
            break;
        case kOperationTypeMultiply:
            result = self.firstParam * secondParam;
            break;
        case kOperationTypeDevide:
            result = self.firstParam / secondParam;
            break;
        default:
            break;
    }
    //显示最终结果
    self.result_label.text = [NSString stringWithFormat:@"%lld",result];
    
    //当前的结果就是下一次的第一个参数的值
    self.firstParam = result;
    
    //更改操作符
    self.lastOperation = kOperationTypeNone;
}

- (IBAction)resetButtonDidClicked:(UIButton *)sender {
    self.result_label.text = @"0";
    self.lastOperation = kOperationTypeNone;
    self.status = kStausNum;
}

@end

时间: 2024-08-08 14:09:23

1228.1——计算器(未使用MVC设计模式)的相关文章

Swift之旅:2.完成计算器,初探MVC设计模式

斯坦福大学公开课:iOS8 网易空开课地址链接:斯坦福大学公开课:IOS8开发 github上字幕链接:字幕 百度网盘资源下载链接:百度网盘 1.计算器完成 ①回车键及相关的代码 //定义一个数组,用来当做栈保存数据使用 var openStack = Array<Double>(); //enter用来执行进栈操作 @IBAction func enter() { //设置重新开始输入字符串 userIsInTheMiddleOfTypingANumber = false //将value进

MVC设计模式在唯品会网站中的应用

在刚刚过去的4.19唯品会活动中,我相信有很多人和我一样都参与了这个活动.当今社会,网上购物已经成了人们生活中不可缺少的一部分,今天让我们一起来看下MVC设计模式在唯品会网站中的应用. 我们平时在唯品会网站购物的时候,点击商品页面的加入购物车图标,然后商品就直接加入到购物车列表中,不管用户是否登录.然后我们换了一台设备,发现该网站我们之前在另一台设备上加入购物车的商品不存在.由此可以推断出:购物车列表的内容不是存放在数据库,而是在cookie中.所以购物车功能实现是在客户端实现的.购物车的功能有

浅谈javaweb三大框架和MVC设计模式

一.MVC设计模式 1.MVC的概念 首先我们需要知道MVC模式并不是javaweb项目中独有的,MVC是一种软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图(View)和控制器(Controller),即为MVC.它是一种软件设计的典范,最早为Trygve Reenskaug提出,为施乐帕罗奥多研究中心(Xerox PARC)的Smalltalk语言发明的一种软件设计模式. 2.MVC的详解 虽然MVC并不是Java当中独有的,但是现在几乎所有的B/S的架构都

javaweb三大框架和MVC设计模式

javaweb三大框架和MVC设计模式 转载,原文请见https://blog.csdn.net/sunpeng19960715/article/details/50890705 一.MVC设计模式 1.MVC的概念 首先我们需要知道MVC模式并不是javaweb项目中独有的,MVC是一种软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图(View)和控制器(Controller),即为MVC.它是一种软件设计的典范,最早为Trygve Reenskaug提出,为

python mvc设计模式(一)

一.代码组织(目录结构) 二.mvc概述 MVC设计模式即MVC框架. MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑和数据显式分离的方法组织代码,将业务逻辑被聚集到一个部件里面,在界面和用户围绕数据的交互能被改进和个性化定制的同时而不需要重新编写业务逻辑.MVC被独特的发展起来用于映射传统的输入.处理和输出功能在一个逻辑的图形化用户界面的结构中. 三.代码 1.数据 #cod

Java Web开发中MVC设计模式简介

一.有关Java Web与MVC设计模式 学习过基本Java Web开发的人都已经了解了如何编写基本的Servlet,如何编写jsp及如何更新浏览器中显示的内容.但是我们之前自己编写的应用一般存在无条理性,对于一个小型的网站这样的编写没有任何问题,但是一但我们需要编写大型的web工程的话,我们现有的编写模式会造成web应用的可扩展性较差,而且一但出现问题不能准确的定位出问题出在哪里. Java是一门应用设计模式比较广泛的语言.目前主流提出的23种设计模式均可在Java语言编写的程序中所应用.目前

转---MVC设计模式详解

MVC(Model View Controller)模型(model)-视图(view)-控制器(controller):MVC本来是存在于Desktop程序中的,M是指数据模型,V是指用户界面,C则是控制器.使用MVC是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式.比如一批统计数据你可以分别用柱状图.饼图来表示.C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新,从例子可以看出MVC就是Observer设计模式的一个特例.MVC如何工作MVC是一个设计模式,它强制性

【原创翻译】认识MVC设计模式:web应用开放的基础(基础篇)

原文地址:http://www.larryullman.com/2009/10/08/understanding-mvc/ 翻译:shadowmydx 转帖请注明 最近,我计划写一个系列关于自己在过去几个月使用的Yii框架(shadowmydx:基于PHP5的一个web开发 框架,详情自行google)的文章.但在一切开始以前,我认为首先还是需要先介绍一下MVC设计模式: 模型-视图-控制器.MVC模式(30年前就有鸟)已经成为了框架以及许多各式各样的应用的首选.MVC模 式主要着眼于分离应用的

MVC设计模式在网站中的应用

MVC设计模式在网站中的应用 以淘宝的购物车为例 一.结合六个基本质量属性 可修改性 采用MVC设计模式的时候,可以将视图.模型.控制器分析,将用户动作.数据表示.应用数据分离开来,如果用户需要以不同的视图来展示,只需要修改视图中的代码即可,对于模型和控制器的代码,则不需要做改动,即可满足要求,使得对代码的修改非常方便. 易用性 用户可以直接在商品展示界面中将商品添加进购物车,直接点开购物车就可以看到已经添加的商品:删除某一件商品时,也可以直接在商品的后面点击删除,确认之后,即可删除. 安全性