今天下午OC上机考试,虽然考试的时候没写完, 但是课下写完了.

main.m

#import <Foundation/Foundation.h>
#import "Shops.h"
#import "Person.h"
int main(int argc, const char * argv[]) {
@autoreleasepool { Shops *shop = [Shops shopsWithPen: cup: rubber:]; // 初始化商店
[shop disPlayAllGoods];
Person *per = [Person personWithShop:shop];
[per pay:]; // 用户付款 }
return ;
}

Shops.h

#import <Foundation/Foundation.h>

@interface Shops : NSObject

@property (nonatomic, assign)NSInteger pen;
@property (nonatomic, assign)NSInteger cup;
@property (nonatomic, assign)NSInteger rubber;
@property (nonatomic, assign)NSInteger code;
@property (nonatomic, assign)NSInteger number;
@property (nonatomic, assign)NSInteger count; - (instancetype)initWithPen:(NSInteger)pen
cup:(NSInteger)cup
rubber:(NSInteger)rubber;
+ (instancetype)shopsWithPen:(NSInteger)pen
cup:(NSInteger)cup
rubber:(NSInteger)rubber; - (void)disPlayAllGoods;
- (void)inputCode;
- (void)showAllBuyGoods;
- (void)deleteGoods;
- (void)buyCode:(NSInteger)code;
- (void)isGoOn:(NSInteger)number;
@end

Shops.m

//
// Shops.m
// 26- 马峰
//
// Created by dllo on 16/3/2.
// Copyright © 2016年 dllo. All rights reserved.
// #import "Shops.h" @implementation Shops
/** 自定义初始化 */
- (instancetype)initWithPen:(NSInteger)pen cup:(NSInteger)cup rubber:(NSInteger)rubber{
self = [super init];
if (self) {
_cup = cup;
_rubber = rubber;
_pen = pen;
}
return self;
}
/** 便利构造器 */
+ (instancetype)shopsWithPen:(NSInteger)pen cup:(NSInteger)cup rubber:(NSInteger)rubber{
Shops *shop = [[Shops alloc]initWithPen:pen cup:cup rubber:rubber];
return shop;
} /** 展示所有的商品 */
- (void)disPlayAllGoods{ NSLog(@"欢迎来到1+1自助超市, 我们这里有以下商品:\n1.笔\n2.水杯\n3.橡皮\n4.退出\n请输入对应的编号选择购买.");
[self inputCode];
}
/** 输入购买商品的编号 */
- (void)inputCode{
scanf("%ld", &_code);
/** 判断是否输入有误 */
if (_code > || _code < ) {
_count++;
if (_count == ) {
NSLog(@"错误三次,程序退出");
}else{
NSLog(@"输入错误,请重新输入:");
[self inputCode];
}
}
[self buyCode:_code];
}
/** 显示已经购买的商品 */
- (void)showAllBuyGoods{
NSLog(@"你选择了%ld只笔, %ld个水杯, %ld个橡皮擦, 一共%ld元.还需要其他的吗. 需要请输入1, 不需要输入2",_pen, _cup, _rubber, _rubber * + _pen * + _cup * );
scanf("%ld", &_number );
/** 判断是否输入有误 */
if (_number > || _number < ) {
_count++;
if (_count == ) {
NSLog(@"错误三次,程序退出");
}else{
NSLog(@"输入错误,请重新输入:");
[self showAllBuyGoods];
}
}
[self isGoOn:_number]; }
/** 删除货物 */
- (void)deleteGoods{ NSLog(@"请选择要删除的货物\n1.笔\n2.水杯\n3.橡皮擦");
scanf("%ld", &_number);
/** 判断是否输入有误 */
if (_number > || _number < ) {
_count++;
if (_count == ) {
NSLog(@"错误三次,程序退出");
}else{
NSLog(@"输入错误,请重新输入:");
[self deleteGoods];
}
}
/** 判断是哪一种货物 */
switch (_number) {
case :
NSLog(@"请输入数量:");
scanf("%ld", &_number);
_pen -= _number;
[self showAllBuyGoods];
break;
case :
NSLog(@"请输入数量:");
scanf("%ld", &_number);
_cup -= _number;
[self showAllBuyGoods]; break;
case :
NSLog(@"请输入数量:");
scanf("%ld", &_number);
_rubber -= _number;
[self showAllBuyGoods];
break;
default: break;
} } /** 根据用户输入判断是否买完 */
- (void)isGoOn:(NSInteger)number{
switch (number) {
case :
[self disPlayAllGoods];
break;
case :
NSLog(@"请付款");
default:
break;
}
}
/** 根据用户输入判断用户要买哪一种商品 */
- (void)buyCode:(NSInteger)code{
switch (code) {
case :
NSLog(@"请输入数量:");
scanf("%ld", &_number);
_pen += _number;
[self showAllBuyGoods];
break;
case :
NSLog(@"请输入数量:");
scanf("%ld", &_number);
_cup += _number;
[self showAllBuyGoods];
break;
case :
NSLog(@"请输入数量:");
scanf("%ld", &_number);
_rubber += _number;
[self showAllBuyGoods];
break;
case :
NSLog(@"程序已经退出!");
break;
default: break;
}
}
@end

Person.h

#import <Foundation/Foundation.h>
#import "Shops.h" @interface Person : NSObject @property (nonatomic, retain)Shops *shop; - (instancetype)initWithShop:(Shops *)shop; + (instancetype)personWithShop:(Shops *)shop; - (void)pay:(NSInteger)money; @end

Person.m

//
// Person.m
// 26- 马峰
//
// Created by dllo on 16/3/2.
// Copyright © 2016年 dllo. All rights reserved.
// #import "Person.h" @implementation Person
/** 自 定 义 初 始 化 */
- (instancetype)initWithShop:(Shops *)shop{
self = [super init];
if (self) {
_shop = shop;
}
return self;
}
/** 便 利 构 造 器 */
+ (instancetype)personWithShop:(Shops *)shop{
Person *per = [[Person alloc]initWithShop:shop];
return per;
} /** 付 款 函 数 */
- (void)pay:(NSInteger)money{ if ((_shop.cup * + _shop.rubber * + _shop.pen * ) > money) {
NSLog(@"你买的东西超过了100块钱!!");
[_shop deleteGoods];
[self pay:money]; }
else{
NSLog(@"付款成功!谢谢惠顾!!");
} } @end

OC----简单的购物系统----的更多相关文章

  1. python简单的购物系统

    #coding = utf-8 #2016-11-19#我的工资是存在文件中的,执行后会判断是否存过工资,如果存过无需输入,直接购物,没存过需要输入工资#wages.txt是存工资的文件 import ...

  2. DAY4:简单购物系统

    根据前几天对于循环和列表的学习,做了一个简单的购物系统: 密码模块就是前篇文章已经做过就,直接调用过来就行,简单说一下该购物系统功能 1,展示货物,需要手动添加,haha 2,判断余额是否充足并充值 ...

  3. 【小型系统】简单的刷票系统(突破IP限制进行投票)

    一.前言 相信大家平时肯定会收到朋友发来的链接,打开一看,哦,需要投票.投完票后弹出一个页面(恭喜您,您已经投票成功),再次点击的时候发现,啊哈,您的IP(***.***.***.***)已经投过票了 ...

  4. Java Web之网上购物系统(注册、登录、浏览商品、添加购物车)

    眼看就要期末了,我的专业课也迎来了第二次的期末作业---------<网上购物系统>.虽然老师的意图是在锻炼我们后台的能力,但是想着还是不利用网上的模板,准备自己写,以来别人写的静态页看不 ...

  5. Linux内核设计第三周——构造一个简单的Linux系统

    Linux内核设计第三周 ——构造一个简单的Linux系统 一.知识点总结 计算机三个法宝: 存储程序计算机 函数调用堆栈 中断 操作系统两把宝剑: 中断上下文的切换 进程上下文的切换 linux内核 ...

  6. 《Linux内核分析》第三周 构建一个简单的Linux系统MenuOS

    [刘蔚然 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000] WEEK THREE ...

  7. 第三节 构造一个简单的Linux系统MenuOS——20135203齐岳

    第三节 构造一个简单的Linux系统MenuOS By 20135203齐岳 Linux内核源代码 arch/ 支持不同cpu的源代码 Documentations/ 文档存储 init/ 内核启动相 ...

  8. Linux内核分析第三周学习总结:构造一个简单的Linux系统MenuOS

    韩玉琪 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.Linux内 ...

  9. 一个简单的CS系统打包过程图文版

    一个简单的CS系统打包过程图文版 1.     打包内容 1.1.  此次打包的要求和特点 主工程是一个CS系统: 此CS系统运行的先决条件是要有.Net Framework 3.5: 主工程安装完成 ...

  10. 案例:我行我素购物系统 v1.1

    系统逻辑结构: import java.util.Scanner; public class ShoppingSystem { public static void main(String[] arg ...

随机推荐

  1. openfire+asmack搭建的安卓即时通讯(四) 15.4.10

    之前的教程不知道你们成功了没,,,没成功可以问我啊=-= 第四篇博文是要实现发送消息的功能. 首先在我们登陆后的活动的layout里添加这样的两个控件,一个EditText和一个Button用于发送数 ...

  2. 机器学习:logistic回归

    逻辑回归是一个形式是Y=1/(1+E(-X))的函数,它的特点是: 1, 当X>0,随着X增大,Y很快的接近1: 2,当x<0,随着X的减小,Y很快的接近0: 3,当X=0时,Y=1/2. ...

  3. Golang 实现简单的滚动读取文本更新

    这个小程序要实现的效果,简单地说,就是将目标文件的内容读取输出到终端,并且目标文件并不是静态的,而是随时会添加新的内容.我们的目标就是一旦目标文件添加了新的内容,就把它读取出来并且显示到终端上. 实现 ...

  4. Java语法基础(一)----关键字、标识符、常量、变量

    一.关键字: 关键字:被Java语言赋予特定含义的单词.组成关键字的字母全部小写.注:goto和const作为保留字存在,目前并不使用.main并不是关键字. 二.标识符: 标识符:就是给类,接口,方 ...

  5. DoTween NGUI bug

    多次动画导致UISprite丢失 DOTween动画进行时与UISprite有冲突,DOTween多次重复同一个动画时,UISprite会莫名的丢失 UISprite动画代码 CUIManager.I ...

  6. javascript单元测试工具

    单元测试关注的是验证一个模块或一段代码的执行效果是否和设计或预期一样.有些开发人员认为,编写测试用例浪费时间而宁愿去编写新的模块.然而,在处理大型应用程序时,单元测试实际上会节省时间:它能帮助您跟踪问 ...

  7. C#基础系列:实现自己的ORM(反射以及Attribute在ORM中的应用)

    反射以及Attribute在ORM中的应用 一. 反射什么是反射?简单点吧,反射就是在运行时动态获取对象信息的方法,比如运行时知道对象有哪些属性,方法,委托等等等等.反射有什么用呢?反射不但让你在运行 ...

  8. js运动框架 step by step

    开启setInterval定时器之前,请先清除之前的定时器 window.onload = function() { var btn = document.getElementById('btn'); ...

  9. php基础29:打开目录

    <?php //1.打开一个目录 $dir = opendir("E:\AppServ\www\php"); //读取目录,使用一个循环来读出 while (!!$file= ...

  10. Jquery easyui tree的使用

    这个ui用的一切都是json数据.树也是如此! 后台需要返回与格式匹配的json数据才能正确加载树. 页面定义一个ui: <ul id="messageInfoAddTree" ...