黑马程序员——OC笔记之购票系统应用实践
2015-08-13 12:02
495 查看
------- android培训、java培训、iOS培训、.Net培训、期待与您交流!
----------
这是一篇关于购票系统应用的实践过程。
2)选择影片
3)选择座位
4)下单支付
5)购买完成
2)显示最新上映的影片信息
3)选择影片
4)选择座位
5)打印电影票
提示信息让用户选择
分别定义两个函数,购买电影票和演唱会票
在函数中创建电影院对象,调用购票方法
初始化影片的数组
通过for循环遍历数组,显示所有影响信息
保存选择的影片信息
显示座位信息
选择排数
选择座位数
购票再次确认
打印购票信息
显示座位信息
名词提炼法:电影院类、电影票类、电影类。
电影院类的属性:影院名称、影厅
行为:买票 显示电影 选电影 选座 出票
电影类的属性:影片名 时长 导演 演员 简介 编号
行为:无
电影票类继承自电影类
新增的属性:排数 座位号 观影地点
行为:无
main.m
Cinema.h
Cinema.m
MvTicket.h
#import "Ticket.h"
@interface MvTicket : Ticket
//属性的get和set方法
@property float price;
@property NSString *ticketNo;
@end
MvTicket.m
#import "MvTicke
4000
t.h"
@implementation MvTicket
@end
Ticket.h
#import "Common.h"
@interface Ticket : Common
@property NSString *place;
@end
Ticket.m
#import "Ticket.h"
@implementation Ticket
@end
Common.h
#import <Foundation/Foundation.h>
@interface Common : NSObject
@property NSString *movieName;
@property int longTime;
@property NSString *actor;
@property NSString *showTime;
@property int mvNo;
@property NSString *direction;
@end
Common.m
打完收工。
----------
这是一篇关于购票系统应用的实践过程。
1、分析《购票系统》使用流程
1)选择购买电影票2)选择影片
3)选择座位
4)下单支付
5)购买完成
2、《购票系统》功能分析
1)选择购票种类2)显示最新上映的影片信息
3)选择影片
4)选择座位
5)打印电影票
3、各个功能实现思路
1)选择购票种类
定义变量保存用户选择的结果提示信息让用户选择
分别定义两个函数,购买电影票和演唱会票
在函数中创建电影院对象,调用购票方法
2)显示最新上映的影片信息
重写电影院类的构造方法初始化影片的数组
通过for循环遍历数组,显示所有影响信息
3)选择影片
选择影片编号(定义全局变量接收)保存选择的影片信息
4)选择座位
初始化座位信息显示座位信息
选择排数
选择座位数
购票再次确认
5)打印电影票
提示购票成功打印购票信息
显示座位信息
4、类的设计
实际生活:去电影院购买一张电影票看电影名词提炼法:电影院类、电影票类、电影类。
电影院类的属性:影院名称、影厅
行为:买票 显示电影 选电影 选座 出票
电影类的属性:影片名 时长 导演 演员 简介 编号
行为:无
电影票类继承自电影类
新增的属性:排数 座位号 观影地点
行为:无
5、代码的具体实现
前方高能,密集恐惧症慎入。main.m
#import <Foundation/Foundation.h> #import "Cinema.h" void buyMovieTicket(){ //调用电影院的类的buyTicket的方法 Cinema *cinema=[[Cinema alloc]initWithCinemaName:@"黑马影城"]; [cinema buyTicket]; } void buySongTicket(){ NSLog(@"程序员正在与唱片公司洽谈中..."); NSLog(@"请下次再来!"); return; } int main(int argc, const char * argv[]) { @autoreleasepool { printf("***********欢迎使用购票系统************\n"); printf("您可以使用购票系统购买:1、电影票 0、演唱票\n"); int no; //接收用户输入的数据 scanf("%d",&no); //判断条件调用函数 if (no==1) { buyMovieTicket(); }else if (no==0){ buySongTicket(); } } return 0; }
Cinema.h
#import <Foundation/Foundation.h> #import "MvTicket.h" @interface Cinema : NSObject { //属性声明 NSString *_cinemaName; MvTicket *mvName[5]; } -(instancetype)initWithCinemaName:(NSString*)name; //方法声明 -(void)buyTicket; -(void)list; -(void)selectMovie; -(void)selectRow; -(void)selectCol; -(void)pay; -(void)printTicket; @property int mvplace; @end
Cinema.m
#import "Cinema.h" //定义私有变量,用于存放用户输入的电影编号、排数、座位号以及临时变量num int mvNo; int row; int col; int num; #define Row 7 #define Col 15 @implementation Cinema //定义构造方法 -(instancetype)initWithCinemaName:(NSString*)name{ if (self = [super init]) { _cinemaName=name; //给电影信息初始化 for (int i=0; i<5; i++) { MvTicket *mvticket = [[MvTicket alloc]init]; mvticket.movieName=[NSString stringWithFormat:@"另一个疯子%02d",i+1]; mvticket.longTime=120; mvticket.actor=@"鲁智深/鲁滨逊/撸啊撸"; mvticket.showTime=[NSString stringWithFormat:@"200%d-11-11 19:30",i+2]; mvticket.price=30.0f; mvticket.ticketNo=[NSString stringWithFormat:@"%02d",i+1]; mvticket.place=[NSString stringWithFormat:@"%d号厅",i+1]; mvticket.direction=[NSString stringWithFormat:@"神奈川·季莫申科"]; mvName[i]=mvticket; } } return self; } -(void)buyTicket{ NSLog(@"\n欢迎光临%@,那您已经可以浏览相关信息:",_cinemaName); printf("最新上映的影片信息如下:\n"); //调用下一个方法 [self list]; } -(void)list{ for (int i=0; i<5; i++) { NSLog(@"\n\n 影名:%@ 放映时间:%@\n 主演:%@ 时长:%.2d\n 导演:%@ 票价:%.2f\n\n",mvName[i].movieName,mvName[i].showTime,mvName[i].actor,mvName[i].longTime,mvName[i].direction,mvName[i].price); } printf("请选择要观看的电影编号:\n"); [self selectMovie]; } -(void)selectMovie{ scanf("%d",&num); //判断是否合法 if (num<0 || num>5) { return; } mvNo=num; printf("当前场地有%d排,有%d列\n",Row,Col); for (int i=-1; i<Row; i++) { for (int j=-1; j<Col; j++) { if (i==-1) { printf("%02d ",j+1); } else if(j==-1){ printf("%02d ",i+1); }else { printf(" 0 "); } } printf("\n"); } printf("请选择排数\n"); [self selectRow]; } -(void)selectRow{ scanf("%d",&num); if (num<0 || num>7) { return; } row=num; printf("请选择座位号\n"); [self selectCol]; } -(void)selectCol{ scanf("%d",&num); if (num<0 || num>15) { return; } col=num; printf("是否确认购买:1、确认购买 0、取消\n"); [self pay]; } -(void)pay{ scanf("%d",&num); if (num!=1) { return; } printf("正在支付中...\n"); printf("恭喜您支付成功。\n您所购买的电影信息如下:\n"); [self printTicket]; } -(void)printTicket{ NSLog(@"\n\n 影名:%@ 放映时间:%@\n 主演:%@ 时长:%d min\n 导演:%@ 票价:%.2f\n 放映厅:%@ %d排%d座 编号:%@\n\n",mvName[mvNo-1].movieName,mvName[mvNo-1].showTime,mvName[mvNo-1].actor,mvName[mvNo-1].longTime,mvName[mvNo-1].direction,mvName[mvNo-1].price,mvName[mvNo-1].place,row,col,mvName[mvNo-1].ticketNo); printf("您的座位分布图如下:\n"); //打印座位分布图 for (int i=-1; i<Row; i++) { for (int j=-1; j<Col; j++) { if (i==row-1 && j==col-1) { printf(" 1 "); } else if (i==-1) { printf("%02d ",j+1); } else if(j==-1){ printf("%02d ",i+1); } else { printf(" 0 "); } } printf("\n"); } } @end
MvTicket.h
#import "Ticket.h"
@interface MvTicket : Ticket
//属性的get和set方法
@property float price;
@property NSString *ticketNo;
@end
MvTicket.m
#import "MvTicke
4000
t.h"
@implementation MvTicket
@end
Ticket.h
#import "Common.h"
@interface Ticket : Common
@property NSString *place;
@end
Ticket.m
#import "Ticket.h"
@implementation Ticket
@end
Common.h
#import <Foundation/Foundation.h>
@interface Common : NSObject
@property NSString *movieName;
@property int longTime;
@property NSString *actor;
@property NSString *showTime;
@property int mvNo;
@property NSString *direction;
@end
Common.m
#import "Common.h" @implementation Common @end
打完收工。
相关文章推荐
- 100 个最佳 Ubuntu 应用(中)
- 在 AppImage、Flathub 和 Snapcraft 平台上搜索 Linux 应用
- 24 个必备的 Linux 应用程序
- 注册表趣味应用小集
- 远程控制技术的应用
- 路由器访问列表的应用
- xDSL技术及其应用
- 基于XML的桌面应用
- SQL Server 2008 R2 应用及多服务器管理
- ExtJS 2.0实用简明教程之应用ExtJS
- JSP应用的安全问题
- 前端开发必须知道的JS之闭包及应用
- Geohash的原理、算法和具体应用探究
- PHP答题类应用接口实例
- ASP.NET过滤器的应用方法介绍
- 让Android应用不被杀死(killer)的方法
- Android提高之蓝牙传感应用实例
- Android应用中加入微信分享简单方法
- 深入jetty的使用详解
- 使用python编写批量卸载手机中安装的android应用脚本