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的架构设计与团队协作
今天写这篇博客是想达到抛砖引玉的作用,想与大家交流一下思想,相互学习,博文中有不足之处还望大家批评指正.本篇博客的内容沿袭以往博客的风格,也是以干货为主,偶尔扯扯咸蛋(哈哈~不好好工作又开始发表博客啦 ...
随机推荐
- Windows程序调试系列: 使用VC++生成调试信息 转
Windows程序调试系列: 使用VC++生成调试信息 ZhangTao,zhangtao.it@gmail.com, 译自 “Generating debug information with Vi ...
- Android native层动态库注射
1.简单介绍 本文解说在Android native层.root权限下.注射动态库到目标进程,从而hook目标进程中动态库的函数的实现方式. 文中的源代码所有来源于网络.我仅仅是略微加以整理. 环境: ...
- setTimeout() 实现程序每隔一段时间自己主动运行
定义和使用方法 setTimeout() 方法用于在指定的毫秒数后调用函数或计算表达式. 语法 setTimeout(code,millisec) 參数 描写叙述 code 必需.要调用的函数后要运行 ...
- unity 脚本执行顺序设置 Script Execution Order Settings
通过Edit->Project Settings->Script Execution Order打开MonoManager面板 或者选择任意脚本在Inspector视图中点击Execu ...
- POP的Stroke动画
POP的Stroke动画 效果 源码 https://github.com/YouXianMing/Animations // // PopStrokeController.m // Animatio ...
- [翻译] 极具动感的 FRDLivelyButton
FRDLivelyButton https://github.com/sebastienwindal/FRDLivelyButton FRDLivelyButton is a simple UIBut ...
- table固定首行(一)
<html> <head> <title>Untitled Document</title> <meta http-equiv="Con ...
- Maven最佳实践:Maven仓库
什么是Maven仓库 在不用Maven的时候,比如说以前我们用Ant构建项目,在项目目录下,往往会看到一个名为/lib的子目录,那里存放着各类第三方依赖jar文 件,如log4j.jar,junit. ...
- Python for everyone chapter 1
Chapter 1 10 试题 1. When Python is running in the interactive mode and displaying the chevron prompt ...
- python中的归并排序
本来在博客上看到用python写的归并排序的程序,然后自己跟着他写了一下,结果发现是错的,不得不自己操作.而自己对python不是非常了解所以就变百度边写,最终在花了半个小时之后就写好了. def m ...