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
ios开发之公交卡系统的设计与实现的更多相关文章
- 基于web公交查询系统----数据库设计
要求:公交查询系统,管理员可以新增线路,修改车辆参数,发车时间表,删除车次,站名等. 用户可以按线路查询,按站点查询相关信息,也可查询两站点之间的换乘信息等. 数据库应包含管理员表,车站表,线路表,车 ...
- Unity3D手游开发日记(2) - 技能系统架构设计
我想把技能做的比较牛逼,所以项目一开始我就在思考,是否需要一个灵活自由的技能系统架构设计,传统的技能设计,做法都是填excel表,技能需要什么,都填表里,很死板,比如有的技能只需要1个特效,有的要10 ...
- iOS开发 编辑框被系统弹出的软键盘遮挡问题
我们在开发注冊界面的时候,最后几个注冊条件经常easy被系统弹出的键盘遮挡,例如以下图: 能够看见,邮箱条件被遮挡掉了,怎么解决呢?我是通过UITextField的代理加计算偏移量: - (void) ...
- 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. ...
- ios开发获取SIM卡信息
.加入一个Framework(CoreTelephony.framework). .引入头文件 #import<CoreTelephony/CoreTelephonyDefines.h> ...
- iOS开发:一个瀑布流的设计与实现(已实现缓存池功能,该功能使得瀑布流cell可以循环利用)
一个瀑布流的实现有三种方式: 继承自UIScrollView,仿写UITableView的dataSource和delegate,创造一个缓存池用来实现循环利用cell 写多个UITableview( ...
- 文顶顶iOS开发博客链接整理及部分项目源代码下载
文顶顶iOS开发博客链接整理及部分项目源代码下载 网上的iOS开发的教程很多,但是像cnblogs博主文顶顶的博客这样内容图文并茂,代码齐全,示例经典,原理也有阐述,覆盖面宽广,自成系统的系列教程 ...
- iOS开发之单例设计模式(完整正确版本)
单例的意思从字面上就可以略知一二,所谓单例就是确保在程序运行过程中只创建一个对象实例.可以用于需要被多次广泛或者说多次使用的资源中,比如我们常见的网络请求类.工具类以及其它管理类等.比如我iOS开发中 ...
- iOS开发之浅谈MVVM的架构设计与团队协作
今天写这篇博客是想达到抛砖引玉的作用,想与大家交流一下思想,相互学习,博文中有不足之处还望大家批评指正.本篇博客的内容沿袭以往博客的风格,也是以干货为主,偶尔扯扯咸蛋(哈哈~不好好工作又开始发表博客啦 ...
随机推荐
- mysql学习心得转
http://www.cnblogs.com/lyhabc/p/3691555.html
- postgresql的ALTER经常使用操作
postgresql版本号:psql (9.3.4) 1.添加一列ALTER TABLE table_name ADD column_name datatype; 2.删除一列 ALTER TABLE ...
- C# string byte[] Base64 常用互相转换
参考: http://www.cnblogs.com/zxx193/p/3605238.html?utm_source=tuicool http://www.cnblogs.com/freeliver ...
- MEF(Managed Extensibility Framework)使用全部扩展组件
MEF(Managed Extensibility Framework),所在命名空间是System.ComponentModel.Composition.dll.简单来说,MEF是将符合约定(一般是 ...
- matlab进行地图仪的绘制
% 绘制地球仪,并标出我们的位置 cla reset; load topo; [x,y,z] = sphere();%45是画出来的球面的经纬分面数 s = surface(x,y,z,'FaceCo ...
- .net上开发winform
c++用WinForm做界面的实现 因为笔者是以前是做C#的,对Winform情有独钟,最近想转C++,想把以前的一些Delphi转成c++,MFC我不熟而且用起来相当烦效果又丑,GTK图形库用起来太 ...
- CVS环境搭建
1.下载cvsnt(可以从附件中下载) 2.安装cvsnt 直接双击运行cvsnt安装文件,安装过程中可以选择以经典.自定义和完全三种方式安装,在自定义方式中可以选择安装路径.安装完成后,在控 ...
- CRF 及CRF++ 安装与解释
CRF简介 Conditional Random Field:条件随机场,一种机器学习技术(模型) CRF由John Lafferty最早用于NLP技术领域,其在NLP技术领域中主要用于文本标注,并有 ...
- Makefile 选项 CFLAGS 、LDFLAGS 、LIBS
CFLAGS 表示用于C编译器的选项 CXXFLAGS 表示用于C++编译器的选项 这两个变量实际上涵盖了编译和汇编的两个步骤 CFLAGS:指定头文件(.h)的路径,如:CFLAGS=-I/usr/ ...
- 【BZOJ】【2752】【HAOI2012】高速公路(Road)
数学期望/线段树 然而又是一道road= =上一道是2750…… 下次不要一看期望题就弃疗么…… 期望题≠不可做题……!! 其实在这题中,期望就是(所有情况下 权值之和)/(总方案数) 因为是等概率抽 ...