//
// main.m
// Bus-公交 /*
公交一卡通充值系统。有两种功能选择。第一种投入硬币或者纸币
选择购票,另外一种一卡通充值,充值面额是20,50。100
*/
#import <Foundation/Foundation.h>
#import "Card.h"
#import "ChargeMachine.h"
#import "Money.h" int main(int argc, const char * argv[])
{ ChargeMachine * machine = [[ChargeMachine alloc]init]; //[machine sellTicket]; //[ChargeMachine recharge:KindOfMoney100];//这里赋值的时候赋值成为100,导致程序出错
//[ChargeMachine recharge:KindOfMoney20];
[ChargeMachine recharge:KindOfMoney50];
[ChargeMachine recharge:KindOfMoneyCoinMoney2];
//[machine recharge:KindOfMoneyCoinMoney2];
NSLog(@"%@",machine); return 0;
}
#import <Foundation/Foundation.h>
#import "Money.h" @interface Card : NSObject
{
/*公交卡卡编号*/
NSString * _numberOfCard; /**公交卡存放金额*/
int MoneyOfCard; } @property NSString * numberOfCard;
@property int MoneyOfCard;
@end
#import "Card.h"

@implementation Card
@synthesize numberOfCard = _numberOfCard ;
@synthesize MoneyOfCard = _MoneyOfCard; @end
#import <Foundation/Foundation.h>
#import "Money.h"
@interface ChargeMachine : NSObject
{
/**用来记录销售总量*/
int countOfMoney; KindOfMoney _money; } @property int countOfMoney;
/**打印票据*/
-(void)sellTicket; /**充值*/
+(int)recharge:(KindOfMoney)kindOfMoney; -(int)recordcounOfMony; @end
#import "ChargeMachine.h"

@implementation ChargeMachine
@synthesize countOfMoney = _countOfMoney;
/**打印票据*/ -(void)sellTicket
{
NSLog(@"卖出一张车票");
} /**充值*/
-(void)recharge
{
NSLog(@"充值成功");
} -(int)recordcounOfMony
{
_countOfMoney += _money;
return _countOfMoney;
} +(int)recharge:(KindOfMoney)kindOfMoney
{
ChargeMachine * machine = [[ChargeMachine alloc]init];
int moneyKind = 0;
//int countOfMoney = 0;
switch (kindOfMoney) {
case KindOfMoney20:
moneyKind = 20;
//countOfMoney += money;
NSLog(@"您充值的金额是20元");
break;
case KindOfMoney50:
moneyKind = 50;
NSLog(@"您充值的金额是50元");
//countOfMoney += money;
break;
case KindOfMoney100:
moneyKind = 100;
NSLog(@"您充值的金额是100元");
//countOfMoney += money;
break;
case KindOfMoneyCoinMoney2:
moneyKind = 2;
NSLog(@"您投的是硬币");
[machine sellTicket];
break;
case KindOfMoneyPaperMoney2:
moneyKind = 2;
NSLog(@"您投的是纸币");
[machine sellTicket];
break;
default:
break;
}
return moneyKind;
} -(NSString *)description
{
//经过多次调用如何保存一个变量的值? //ChargeMachine * machine = [[ChargeMachine alloc]init];
//int moneyKind = [ChargeMachine recharge:_money];
//int countOf_Money = [ChargeMachine recharge:_money];
return [NSString stringWithFormat:@"%d",_money];
}
@end
#import <Foundation/Foundation.h>
enum KindOfMoney
{
/**用来存储充值面额为20的变量*/
KindOfMoney20, /**用来存储充值面额为50的变量*/
KindOfMoney50, /**用来存储充值面额为100的变量*/
KindOfMoney100, KindOfMoneyCoinMoney2, KindOfMoneyPaperMoney2
}; typedef enum KindOfMoney KindOfMoney; @interface Money : NSObject
{
KindOfMoney _kindOfMoney;
}
-(Money*)initWithKindOfMoney:(KindOfMoney)kindOfMoney;
typedef enum KindOfMoney KindOfMoney;
@end
#import "Money.h"

@implementation Money
{ }
-(Money*)initWithKindOfMoney:(KindOfMoney)kindOfMoney
{
self = [super init];
if (self!=nil) {
_kindOfMoney = kindOfMoney;
}
return self;
}
@end

ios开发之公交卡系统的设计与实现的更多相关文章

  1. 基于web公交查询系统----数据库设计

    要求:公交查询系统,管理员可以新增线路,修改车辆参数,发车时间表,删除车次,站名等. 用户可以按线路查询,按站点查询相关信息,也可查询两站点之间的换乘信息等. 数据库应包含管理员表,车站表,线路表,车 ...

  2. Unity3D手游开发日记(2) - 技能系统架构设计

    我想把技能做的比较牛逼,所以项目一开始我就在思考,是否需要一个灵活自由的技能系统架构设计,传统的技能设计,做法都是填excel表,技能需要什么,都填表里,很死板,比如有的技能只需要1个特效,有的要10 ...

  3. iOS开发 编辑框被系统弹出的软键盘遮挡问题

    我们在开发注冊界面的时候,最后几个注冊条件经常easy被系统弹出的键盘遮挡,例如以下图: 能够看见,邮箱条件被遮挡掉了,怎么解决呢?我是通过UITextField的代理加计算偏移量: - (void) ...

  4. iOS开发-OC语言 (二)类的设计

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 24.0px Helvetica } p.p2 { margin: 0.0px 0.0px 0.0px 0. ...

  5. ios开发获取SIM卡信息

    .加入一个Framework(CoreTelephony.framework). .引入头文件 #import<CoreTelephony/CoreTelephonyDefines.h> ...

  6. iOS开发:一个瀑布流的设计与实现(已实现缓存池功能,该功能使得瀑布流cell可以循环利用)

    一个瀑布流的实现有三种方式: 继承自UIScrollView,仿写UITableView的dataSource和delegate,创造一个缓存池用来实现循环利用cell 写多个UITableview( ...

  7. 文顶顶iOS开发博客链接整理及部分项目源代码下载

    文顶顶iOS开发博客链接整理及部分项目源代码下载   网上的iOS开发的教程很多,但是像cnblogs博主文顶顶的博客这样内容图文并茂,代码齐全,示例经典,原理也有阐述,覆盖面宽广,自成系统的系列教程 ...

  8. iOS开发之单例设计模式(完整正确版本)

    单例的意思从字面上就可以略知一二,所谓单例就是确保在程序运行过程中只创建一个对象实例.可以用于需要被多次广泛或者说多次使用的资源中,比如我们常见的网络请求类.工具类以及其它管理类等.比如我iOS开发中 ...

  9. iOS开发之浅谈MVVM的架构设计与团队协作

    今天写这篇博客是想达到抛砖引玉的作用,想与大家交流一下思想,相互学习,博文中有不足之处还望大家批评指正.本篇博客的内容沿袭以往博客的风格,也是以干货为主,偶尔扯扯咸蛋(哈哈~不好好工作又开始发表博客啦 ...

随机推荐

  1. .NET的堆和栈03,引用类型对象拷贝以及内存分配

    在" .NET的堆和栈01,基本概念.值类型内存分配"中,了解了"堆"和"栈"的基本概念,以及值类型的内存分配.我们知道:当执行一个方法的时 ...

  2. Extjs CheckboxSelectionModel 置为无效 选择触发事件

    var smQd = new Ext.grid.CheckboxSelectionModel({ renderer:function(value, metaData, record, rowIndex ...

  3. wrap ConcurrentDictionary in BlockingCollection

    ConcurrentDictionary<int, BlockingCollection<string>> mailBoxes = new ConcurrentDictiona ...

  4. bochs和硬盘管理

    bochs和硬盘管理 实验一 目的:熟悉实验环境,认识Bochs虚拟机 内容: 1.下载并安装Bochs 2.3.7,官方网站 http://bochs.sourceforge.net/ 2.下载DO ...

  5. Java 8 的新特性和改进总览

    这篇文章是对Java 8中即将到来的改进做一个面向开发者的综合性的总结,JDK的这一特性将会在2013年9月份发布. 在写这篇文章的时候,Java 8的开发工作仍然在紧张有序的进行中,语言特新和API ...

  6. jaxb使用

    一.前言 JAXB——Java Architecture for XML Binding,是一项可以根据XML Schema产生Java类的技术.JAXB提供将XML实例文档反向生成Java对象树的方 ...

  7. android 利用 aapt 解析 apk 得到应用名称 包名 版本号 权限等信息

    在上传各大市场时发现 apk 上传后能自动解析出应用名称.包名.版本号.使用权限等信息,所以就研究了一下 1 直接解压 apk 解析  AndroidManifest.xml 是不行的,因为 apk ...

  8. DELPHI中千万别直接使用CreateThread ,建议使用BeginThread(在C++中无大问题,可是到了DELPHI中情况就不一样了)

    以前在写个别程序的时候老是喜欢使用纯API编程. 在C++中无大问题,可是到了DELPHI中情况就不一样了. 当你用 DELPHI写的多线程程序莫名其妙的内存错误,特别是字符串(string)操作;  ...

  9. zoj 2860 四边形优化dp

    Breaking Strings Time Limit: 2 Seconds        Memory Limit: 65536 KB A certain string-processing lan ...

  10. Retrofit 从入门到了解【总结】

    源码:https://github.com/baiqiantao/RetrofitDemo.git 参考:http://www.jianshu.com/p/308f3c54abdd Retrofit入 ...