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的架构设计与团队协作
今天写这篇博客是想达到抛砖引玉的作用,想与大家交流一下思想,相互学习,博文中有不足之处还望大家批评指正.本篇博客的内容沿袭以往博客的风格,也是以干货为主,偶尔扯扯咸蛋(哈哈~不好好工作又开始发表博客啦 ...
随机推荐
- MFC中添加ToolTip提示框
PART 1 MFC 对话框中的 Buttton添加提示 例如我们想在一个对话框中的一个button控件添加tooltip,实现的方法如下: 1. 在该对话框的类中添加一个CToolTipCtrl类型 ...
- 正则表达式校验15/18位生份证-JAVA版
public static boolean isIDNumber(String iDNumber) { if (iDNumber == null || "".equals(iDNu ...
- [翻译] EnterTheMatrix
Enter The Matrix https://github.com/mpospese/EnterTheMatrix The sample application to accompany my c ...
- 《趣学Python编程》
<趣学Python编程> 基本信息 作者: (美)Jason Briggs 译者: 尹哲 出版社:人民邮电出版社 ISBN:9787115335951 上架时间:2014-2-21 出版日 ...
- Lua简明教程
这几天系统地学习了一下Lua这个脚本语言,Lua脚本是一个很轻量级的脚本,也是号称性能最高的脚本,用在很多需要性能的地方,比如:游戏脚本,nginx,wireshark的脚本,当你把他的源码下下来编译 ...
- 【BZOJ】【1876】【SDOI2009】SuperGCD
高精度+GCD 唔……高精gcd其实可以这么算: \[ GCD(a,b)= \begin{cases} a & b=0 \\ 2*GCD(\frac{a}{2},\frac{b}{2}) &a ...
- Objective-C:NSValue类的常见用法
特殊类型的包装类:数组.结构体(OC内部的.自定义的).指针 // // main.m // 05-NSValue // // Created by ma c on 15/8/17. // Copyr ...
- sql server2005 express和Northwind数据库安装
最近在学<C#入门经典>的数据库章节时,发现机子上既没有sql server又没书中所说的northwind数据库,想立刻运行下第一个工程DataReading都没法进行.在网上折腾后有了 ...
- SQL Server’s Storage Top 10 Best Practices
好文章, 简明扼要. Storage Top 10 Best Practices http://technet.microsoft.com/en-us/library/cc966534.aspx
- Substring with Concatenation of All Words leetcode java
题目: You are given a string, S, and a list of words, L, that are all of the same length. Find all sta ...