ios开发之公交卡系统的设计与实现

//
//  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

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-23 15:48:43

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

基于java最短路径算法公交查询系统的设计与实现

基于J2EE的公交查询系统的设计与实现 1引言 1.1 选题背景 20多年来,我国经济得到了持续.快速.稳定.健康地发展.经济的快速增长,带动了汽车工业的蓬勃发展,并使交通状况显著改善.据统计,中国公路通车总里程已达130余万公里,其中高速公路约1.5万公里.居民收入普遍提高,到2000年年底,人均GDP已超过800美元,沿海地区已达2000-3000美元.按国际发展惯例,当人均GDP超出1000美元,汽车消费市场就将进入快速增长期.我国城市人口约有2亿,略低于美国人口.东部沿海地区大部分居民已

iOS开发项目篇—41cell的frame设计

iOS开发项目篇—41cell的frame设计 一.简单说明 1.分层设计 在进行设计的时候,建议先分析整个cell的结构,确定了cell由哪些模块构成之后,再进一步确定每个模块中包含的子控件. 在这个微博的cell中,把这个cell分成两个大的模块.分解结构如下: 1.微博完整内容模块View (1)原创微博view 1)头像imageView 2)自己的昵称label 3)发布的时间label 4)微博来源label 5)微博的正文 (2)转发微博 1)原作者的昵称label 2)转发的微博

【学生设计】城市公交查询系统的设计与实现

随着Internet的快速发展,互联网已成为人们快速获取.发布和传递信息的重要渠道,显然它已成为社会生活的一部分.但我国的城市公交信息查询却还处于比较落后的水平上,广大的市民获取路线信息方式也比较少,最常用的方式只局限在询问和交通地图上.而城市公交查询系统就是使人们能够在因特网上方便.简单的查询出各条路线,了解自己所经过的每个站点等信息,以便能更好的制定自己的行动计划而设计的.它主要实现的模块是公交信息的查询模块,其中包括的功能有:线路查询.站点查询.站站查询.车站查询:而系统管理模块主要实现的

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

我想把技能做的比较牛逼,所以项目一开始我就在思考,是否需要一个灵活自由的技能系统架构设计,传统的技能设计,做法都是填excel表,技能需要什么,都填表里,很死板,比如有的技能只需要1个特效,有的要10个,那么表格也得预留10个特效的字段.在代码里面也是写死一些东西,要增加和修改,就得改核心代码,如果我要把核心部分做成库封装起来,就很麻烦了. 能不能做成数据驱动的方式呢? 改技能文件就行了,即使要增加功能,也只需要扩展外部代码,而不用改核心代码, 我是这么来抽象一个技能的,技能由一堆触发器组成,比

公交查询系统的设计与实现

总体需求 公交线路查询 换乘算法 - 需求分析 一.选定基本框架 由于本系统是多用户.多视图.基于网页呈现的,因此,对数据对象的传输很频繁. 由于课程为JSP课程.故选定JSP+Servlet(MVC)作为后端框架,并以jQuery为前端框架. ORM未使用,自行建立DAO. 二.确定基本功能 基于需求,可归纳出以下功能: 管理员管理功能 普通用户服务 线路管理 站台管理 查询功能 换乘功能 - 设计与实现 一.实现基本功能的思路 权限管理,基于Db+Session. DAO方面,自己实现. 业

[iOS开发]使用Swift检测系统版本信息

iOS系统版本获取 获取当前运行系统的版本号: let version = UIDevice.currentDevice().systemVersion // 获取版本号如: 7.1.2 比较版本号 最主要的是与iOS 8版本进行比较: // 与iOS 8.0.0进行比较 // 注意这里返回结果是 NSComparisonResult let flag = version.compare("8.0.0", options: NSStringCompareOptions.NumericS

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

我们在开发注冊界面的时候,最后几个注冊条件经常easy被系统弹出的键盘遮挡,例如以下图: 能够看见,邮箱条件被遮挡掉了,怎么解决呢?我是通过UITextField的代理加计算偏移量: - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. self.emailTextField.delegate = self; } - (

iOS开发类似于呱呱卡效果,手指划过的区域形成画笔。适用于取出部分图片(截图),如截取出图片中带文字的区域部分。

HKBrushShots Demo下载地址: 类似于呱呱卡效果,手指划过的路线可以刮出痕迹. ??功能: 用于取出部分图片(截图),如截取出图片中带文字的区域部分. ??效果: 截取出图片中的“你就是我的全世界”文字区域的图片: 截取出图片中那只呆萌的小犀牛??: 更多截图效果: ??使用: 1 - 首先将工程中的“HKScreenShot”文件夹拷贝至项目中. 2 - 在需要使用的类中引入头文件: #import "HKCropView.h" #import "HKLine

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

一个瀑布流的实现有三种方式: 继承自UIScrollView,仿写UITableView的dataSource和delegate,创造一个缓存池用来实现循环利用cell 写多个UITableview(UITableView的cell宽度是与UITableView宽度一样的,那么每行可以摆设多个宽度相等的UITableView,从而实现瀑布流),不过这种方法是最差的,因为不能有效的做到循环利用cell 可以自定义UICollectionViewCell的布局,从而实现瀑布流,UICollectio