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的架构设计与团队协作
今天写这篇博客是想达到抛砖引玉的作用,想与大家交流一下思想,相互学习,博文中有不足之处还望大家批评指正.本篇博客的内容沿袭以往博客的风格,也是以干货为主,偶尔扯扯咸蛋(哈哈~不好好工作又开始发表博客啦 ...
随机推荐
- MVC实现有关时间的进度条,使用jQuery ui的progressbar
在电商网站中,有时候通过进度条来直观地显示用户是否到期以及用户当前的状态. 设计这样的一个Model. public class User { public int Id { get; set; } ...
- java转换emoji表情
/** * @Description 将字符串中的emoji表情转换成可以在utf-8字符集数据库中保存的格式(表情占4个字节,需要utf8mb4字符集) * @param str * 待转换字符串 ...
- 【spring boot】【log4jdbc】使用log4jdbc打印mybatis的sql和Jpa的sql语句运行情况
在spring boot 中使用mybatis 想看到sql语句的运行情况. 虽然按照 之前说的配置了 logging.level.你的mapper包位置 = debug 但是依旧没有起作用. 所以采 ...
- 【docker】docker基础原理,核心技术简介
关于docker的核心技术,就是以下的三大技术: 1.namespaces [命名空间] 使用linux的命名空间实现的进程间隔离.Docker 容器内部的任意进程都对宿主机器的进程一无所知. 除了进 ...
- .Net异步编程 z
1. 引言 最近在学习Abp框架,发现Abp框架的很多Api都提供了同步异步两种写法.异步编程说起来,大家可能都会说异步编程性能好.但好在哪里,引入了什么问题,以及如何使用,想必也未必能答的上来. 自 ...
- 算法:非平衡二叉搜索树(UnBalanced Binary Search Tree)
背景 很多场景下都需要将元素存储到已排序的集合中.用数组来存储,搜索效率非常高: O(log n),但是插入效率比较低:O(n).用链表来存储,插入效率和搜索效率都比较低:O(n).如何能提供插入和搜 ...
- servlet 3.0特性说明
Servlet 3.0 作为 Java EE 6 规范体系中一员,随着 Java EE 6 规范一起发布.该版本在前一版本(Servlet 2.5)的基础上提供了若干新特性用于简化 Web 应用的开发 ...
- Facebook数据库工具Flashcache初探
Flashcache是Facebook技术团队的又一力作,最初是为加速MySQL设计的.Flashcache是在Linux层面的,所以任何受磁盘IO困绕的软件或应用都可以方便的使用之. 1. Why ...
- Hadoop目录
1. 通过java读取HDFS的数据 (转) 2. FLume监控文件夹,将数据发送给Kafka以及HDFS的配置文件详解 3. 开启hadoop和Hbase集群的lzo压缩功能(转) 4. Hado ...
- mysql必知必会(一、数据库基础知识)
基础概念 1.数据库(database):是一个以某种有组织的方式存储的数据集合.(保存有组织的数据的容器) 2.表(table):是一种结构化的文件,可用来存储某种特定类型的数据.(表名在同个数据库 ...