OC----简单的购物系统----
今天下午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----简单的购物系统----的更多相关文章
- python简单的购物系统
#coding = utf-8 #2016-11-19#我的工资是存在文件中的,执行后会判断是否存过工资,如果存过无需输入,直接购物,没存过需要输入工资#wages.txt是存工资的文件 import ...
- DAY4:简单购物系统
根据前几天对于循环和列表的学习,做了一个简单的购物系统: 密码模块就是前篇文章已经做过就,直接调用过来就行,简单说一下该购物系统功能 1,展示货物,需要手动添加,haha 2,判断余额是否充足并充值 ...
- 【小型系统】简单的刷票系统(突破IP限制进行投票)
一.前言 相信大家平时肯定会收到朋友发来的链接,打开一看,哦,需要投票.投完票后弹出一个页面(恭喜您,您已经投票成功),再次点击的时候发现,啊哈,您的IP(***.***.***.***)已经投过票了 ...
- Java Web之网上购物系统(注册、登录、浏览商品、添加购物车)
眼看就要期末了,我的专业课也迎来了第二次的期末作业---------<网上购物系统>.虽然老师的意图是在锻炼我们后台的能力,但是想着还是不利用网上的模板,准备自己写,以来别人写的静态页看不 ...
- Linux内核设计第三周——构造一个简单的Linux系统
Linux内核设计第三周 ——构造一个简单的Linux系统 一.知识点总结 计算机三个法宝: 存储程序计算机 函数调用堆栈 中断 操作系统两把宝剑: 中断上下文的切换 进程上下文的切换 linux内核 ...
- 《Linux内核分析》第三周 构建一个简单的Linux系统MenuOS
[刘蔚然 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000] WEEK THREE ...
- 第三节 构造一个简单的Linux系统MenuOS——20135203齐岳
第三节 构造一个简单的Linux系统MenuOS By 20135203齐岳 Linux内核源代码 arch/ 支持不同cpu的源代码 Documentations/ 文档存储 init/ 内核启动相 ...
- Linux内核分析第三周学习总结:构造一个简单的Linux系统MenuOS
韩玉琪 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.Linux内 ...
- 一个简单的CS系统打包过程图文版
一个简单的CS系统打包过程图文版 1. 打包内容 1.1. 此次打包的要求和特点 主工程是一个CS系统: 此CS系统运行的先决条件是要有.Net Framework 3.5: 主工程安装完成 ...
- 案例:我行我素购物系统 v1.1
系统逻辑结构: import java.util.Scanner; public class ShoppingSystem { public static void main(String[] arg ...
随机推荐
- beeline vs hive cli
近期,大数据开发环境升级为cloudera 5.3. 配套的hive版本升级为0.13.1.可以使用心仪已久的分析开窗函数了.但在使用的过程中发现一些问题,仅记于此. 1.在使用hive命令的时候,发 ...
- Linux上Eclipse项目右键菜单没有Maven
在Centos 7上安装了eclipse以后,着实很兴奋.eclipse luna版本自带maven.但是用mvn eclipse:eclipse创建的java工程,在右键菜单居然没有Maven按钮, ...
- 译文 对无障碍网页应用(ARIA)的选择
//本文编辑格式为Markdown,译文同时发布在众成翻译 对无障碍网页应用(ARIA)的选择 让网站对每个人都能访问是一件相当艰难的工作,尤其是在我们使用自定义标记解决方案(custom marku ...
- ASP.NET URL伪静态重写实现方法
ASP.NET URL伪静态重写实现方法 首先说下,ASP.NET URL伪静态只是将~/a_1.html指向到了~/a.aspx?ID=1,但a.aspx还是真实存在的,你不用./a_1.html来 ...
- java 12-2 String和StringBuffer之间的转换
为什么我们要讲解类之间的转换: A -- B的转换 我们把A转换为B,其实是为了使用B的功能. B -- A的转换 我们可能要的结果是A类型,所以还得转回来. String和StringBuffer的 ...
- 关于codereview工具与建议
http://www.ibm.com/developerworks/rational/library/11-proven-practices-for-peer-review/
- Git 详解
1. Git 1.1. Git是何方神圣? Git是用C语言开发的分布版本控制系统.版本控制系统可以保留一个文件集合的历史记录,并能回滚文件集合到另一个状态(历史记录状态).另一个状 态可以是不同的文 ...
- oracle用sqlplus创建新用户,不是plsql developer
1.sqlplus /nolog 2.conn /as sysdba 3.alter user system identified by "123456"; 4.alter use ...
- 神奇的GO语言:空接口(interface)
对于go语言来说,设计最精妙的应该是interface了,直白点说interface是一组method的组合.至于更加详细的描述,本文不做介绍,今天谈谈空接口. 空interface(interfac ...
- [tools] Sublime text 3 神器
同事给了一个Sublime text 3 增强优化版.<---神器 问题:中文文件名乱码:[因为我电脑调整了dpi] 解决: 在sublime text 3中,Preference, Set ...