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 ...
随机推荐
- linux 截图利器-scrot
一.前言 linux下截图工具有很多,scrot无疑是众多工具中的一个亮点,下面记录下其安装配置过程 二.使用环境 操作系统: centos 6.2 三.依赖 scrot依赖 giblib, gibl ...
- [转]ASP.NET 2.0中GridView无限层复杂表头的实现
本文转自:http://blog.csdn.net/net_lover/article/details/1306211 实现方法就是给单元格填充我们想要的格式代码. C# <%@ Page La ...
- 循环 wxl
#include <cstdio> #include <cstring> #include <string> #include <algorithm> ...
- POJ 1066 Treasure Hunt --几何,线段相交
题意: 正方形的房子,给一些墙,墙在区域内是封闭的,给你人的坐标,每穿过一道墙需要一把钥匙,问走出正方形需要多少把钥匙. 解法: 因为墙是封闭的,所以绕路也不会减少通过的墙的个数,还不如不绕路走直线, ...
- 2014 Super Training #7 B Continuous Login --二分
原题:ZOJ 3768 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3768 一个结论:一个正整数总能用不超过三个前n项相 ...
- Android网络之数据解析----使用Google Gson解析Json数据
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- 转: 使用virtualenv搭建独立的Python环境
转自: http://qicheng0211.blog.51cto.com/3958621/1561685 谢谢作者的辛苦付出 virtualenv可以搭建虚拟且独立的python环境,可以使每个项 ...
- 关于codereview工具与建议
http://www.ibm.com/developerworks/rational/library/11-proven-practices-for-peer-review/
- 原生js实现增加(addclass),删除(removeclass),判断是否存在(hasclass),如果存在删除,如果不存在添加(toggleclass)和获取类名(getbyclass)的方法
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- GridControl控件绑定RepositoryItemImageComboBox 作为下拉框使用
如果,时间长时了,已前做过的东西,都记不得了,所以记录一下. 废话不多说. 1.拖出gridview控件,然后将字段绑定上去 2.将要做下拉框的控件加入RepositoryItemImageCombo ...