黑马程序员--OC自学笔记---06简单电影购票系统
2015-12-30 09:34
621 查看
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
1. 需求分析
进入电影院我们首先看到的是各种影讯,然后根据影讯选择我们要观看的电影,选择观看时间,选座位,付钱,之后会收一张票,票上面标明了影片名称,影厅编号,影片放映时间
流程分析:::
1) 要有影讯信息
2) 选择我们要看到电影
3) 选择座位
4) 打印票据信息
2. 功能分析
1) 选择购票种类
① 定义变量保存用户选择的结果
② 提示信息,让用户选择
③ 分别定义两个函数,购买电影票和演唱会票
④ 在函数中创建电影院对象,调用购票的方法
2) 显示最新上映的影片信息
① 重写电影院类的构造方法
② 初始化影片的数组
③ 通过for循环遍历数组,显示所有的影片信息
3) 选择影片
① 选择影片编号
② 保存选择的影片信息
4) 选择座位信息
① 初始化座位信息
② 显示座位信息
③ 选择排数
④ 选择座位数
⑤ 购票再次确认
5) 打印电影票
① 提示购票成功
② 打印购票信息
③ 显示座位信息
3. 类设计
4. 功能代码实现
1. 需求分析
进入电影院我们首先看到的是各种影讯,然后根据影讯选择我们要观看的电影,选择观看时间,选座位,付钱,之后会收一张票,票上面标明了影片名称,影厅编号,影片放映时间
流程分析:::
1) 要有影讯信息
2) 选择我们要看到电影
3) 选择座位
4) 打印票据信息
2. 功能分析
1) 选择购票种类
① 定义变量保存用户选择的结果
② 提示信息,让用户选择
③ 分别定义两个函数,购买电影票和演唱会票
④ 在函数中创建电影院对象,调用购票的方法
2) 显示最新上映的影片信息
① 重写电影院类的构造方法
② 初始化影片的数组
③ 通过for循环遍历数组,显示所有的影片信息
3) 选择影片
① 选择影片编号
② 保存选择的影片信息
4) 选择座位信息
① 初始化座位信息
② 显示座位信息
③ 选择排数
④ 选择座位数
⑤ 购票再次确认
5) 打印电影票
① 提示购票成功
② 打印购票信息
③ 显示座位信息
3. 类设计
4. 功能代码实现
//基础信息类 #import <Foundation/Foundation.h> @interface Common : NSObject //名称 @property NSString *name; //时长 @property int longTime; //主演 @property NSString *actor; //导演 @property NSString *director; //上映时间 @property NSString *showTime; //编号 @property int no; @end #import "Common.h" @implementation Common @end //票类 #import "Common.h" @interface Ticket : Common //排数 @property int rowNum; //座位号 @property int colNum; //地点 @property NSString *place; //开始时间 @property NSString *startTime; //打印票 @end #import "Ticket.h" @implementation Ticket @end //电影票类 #import "Ticket.h" @interface MovieTicket : Ticket //票价 @property float price; //电影票编号 @property int ticketNo; @end #import "MovieTicket.h" @implementation MovieTicket @end //电影院类 #import <Foundation/Foundation.h> #import "MovieTicket.h" @interface Cinema : NSObject { //电影院名称 NSString *_cinemaName; //票的集合 MovieTicket *tickets[5]; } -(instancetype)initWithCinemaName:(NSString*)name; //开始购票 -(void)buyTicket; //显示正在上映的电影票 -(void)list; //选择电影 -(void)selectMovie; //选择排数 -(void)selectRow; //选择座位号 -(void)selectCol; //开始支付 -(void)pay; //出票(打印票) -(void)printTicket; @end #import "Cinema.h" #define ROW 7 #define COL 15 //用户选择的电影编号 int selectNo; @implementation Cinema //初始化影片信息 -(instancetype)initWithCinemaName:(NSString*)name{ //先让父类初始化 if (self = [super init]) { //给电影院初始化名字 _cinemaName = name; //给电影票数组初始化 for (int i=0; i<5; i++) { MovieTicket *mvticket = [MovieTicket new]; //给对象赋值 mvticket.name = [NSString stringWithFormat:@"钢铁侠%02d",i+1]; mvticket.longTime = 120; mvticket.actor = @"钢铁侠"; mvticket.director = @"jams"; mvticket.no = i+1; mvticket.showTime = [NSStringstringWithFormat:@"201%d-12-12",i]; mvticket.startTime = [NSString stringWithFormat:@"1%d:30",i]; mvticket.price = 19.9f; mvticket.place = [NSString stringWithFormat:@"%02d",i+1]; tickets[i] = mvticket; } } return self; } //开始购票 -(void)buyTicket{ NSLog(@"开始购票"); //显示正在上映的电影票 [self list]; } //显示正在上映的电影票 -(void)list{ NSLog(@"显示正在上映的电影票"); /* 编号 名称 主演 开始时间 导演 时长 上映时间 */ for (int i=0; i<5; i++) { NSLog(@"\n\n编号:%d 名称:%@\n主演:%@ 开始时间:%@\n导演:%@ 时长:%d\n上映时间:%@\n\n",tickets[i].no,tickets[i].name,tickets[i].actor,tickets[i].startTime,tickets[i].director,tickets[i].longTime,tickets[i].showTime); } //选择电影 [self selectMovie]; } //选择电影 -(void)selectMovie{ NSLog(@"选择电影"); /* 定义一个全局变量,保存用户输入的选择编号 提示用户选择一部电影 接收用户输入的电影编号 保存编号 */ //提示用户选择一部电影 printf("请选择要观看的电影编号:\n"); int num; //接收用户输入的电影编号 scanf("%d",&num); if (num<0 || num>5) { return; } //保存编号 selectNo = num; NSLog(@"您已经选择了影片:%@\n\n",tickets[selectNo-1].name); //选择排数 [self selectRow]; } //选择排数 /* 把电影院的所有作为信息打印出来看一下 提示,当前影厅有多少排,每排有多少座位 提示让用户选择排数 保存排数信息 */ -(void)selectRow{ NSLog(@"选择排数"); printf("当前影厅共有%d排,每排有%d个座位\n",ROW,COL); //1)把电影院的所有作为信息打印出来看一下 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(" + "); } } printf("\n"); } //2)提示让用户选择排数 printf("请选择排数:\n"); int num; //3)保存排数信息 scanf("%d",&num); if (num<0||num>7) { return; } tickets[selectNo-1].rowNum = num; //选择座位号 [self selectCol]; } //选择座位号 -(void)selectCol{ NSLog(@"您已经选择了第%d排,请选择座位号:\n",tickets[selectNo-1].rowNum); printf("请选择座位号:\n"); int num; //3)保存排数信息 scanf("%d",&num); if (num<0||num>15) { return; } tickets[selectNo-1].colNum = num; //显示用户的选择信息 NSLog(@"您选择的影片是:\n %@ 开始时间:%@\n 第%d排%d座 \n 票价:%.2f",tickets[selectNo-1].name,tickets[selectNo-1].startTime,tickets[selectNo-1].rowNum,tickets[selectNo-1].colNum,tickets[selectNo-1].price); //确认 printf("请确认:1.确定 0.取消\n"); int flag; scanf("%d",&flag); if (flag) { //开始支付 [self pay]; } } //开始支付 -(void)pay{ NSLog(@"开始支付...\n支付完成...\n"); //出票(打印票) [self printTicket]; } //出票(打印票) -(void)printTicket{ NSLog(@"出票"); NSLog(@"恭喜您,购票成功!\n购票信息如下:\n %@ 开始时间:%@\n 第%d排%d座 影厅 %@ \n 票价:%.2f",tickets[selectNo-1].name,tickets[selectNo-1].startTime,tickets[selectNo-1].rowNum,tickets[selectNo-1].colNum,tickets[selectNo-1].place,tickets[selectNo-1].price); //打印座位信息 for (int i=-1; i<ROW; i++) { for (int j=-1; j<COL; j++) { if (i==tickets[selectNo-1].rowNum &&j==tickets[selectNo-1].colNum) { printf(" @ "); }else if (i==-1){ printf("%02d ",j+1); }else if(j==-1){ printf("%02d ",i+1); }else{ printf(" + "); } } printf("\n"); } } @end
相关文章推荐
- 黑马程序员--OC自学笔记---05点语法、@property、@synthesize、动态类型、id类型、响应方法、构造方法
- iOS面试3
- 程序员经常说的二十多句话,吐槽吧程序员!
- 程序员经常说的二十多句话,吐槽吧程序员!
- 程序员经常说的二十多句话,吐槽吧程序员!
- 程序缘,程序媛,程序员-2015年年终总结
- 程序员生存定律--成长路上常见的坑
- 程序员生存定律--管理向左,技术向右
- 月薪3万的程序员都避开了哪些坑
- 在程序员联盟除了编程,你还能学到这些
- 【程序员】区区英语算什么,还搞不定了?
- 【程序员游学记】卢浮宫与虚拟现实
- 从扎克伯格捐450亿看程序员前景
- 在程序员联盟除了编程,你还能学到这些
- 【程序员】区区英语算什么,还搞不定了?
- 【程序员游学记】卢浮宫与虚拟现实
- 程序员如何谋划出月薪3万
- 程序员入行门槛真的那么低吗?
- 程序员『青春饭』问题之我见
- 一个40岁程序员的无奈