黑马程序员——OC笔记之购票系统应用实践
来源:互联网 发布:c语言中取反 编辑:程序博客网 时间:2024/05/21 03:58
------- android培训、java培训、iOS培训、.Net培训、期待与您交流! ----------
这是一篇关于购票系统应用的实践过程。
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;}
#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
#import "Cinema.h"//定义私有变量,用于存放用户输入的电影编号、排数、座位号以及临时变量numint 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 "MvTicket.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
0 0
- 黑马程序员——OC笔记之购票系统应用实践
- 黑马程序员--OC自学笔记---06简单电影购票系统
- 【黑马程序员】OC-综合项目:购票系统
- 黑马程序员学习笔记——OC之基本简介
- 黑马程序员——OC笔记之Foundation框架上
- 黑马程序员——OC笔记之Foundation框架下
- 黑马程序员——OC学习笔记01 OC基础知识。
- 黑马程序员——oc之继承
- 黑马程序员——OC之protocol
- 黑马程序员——OC之NSString
- 黑马程序员----OC学习笔记之NSArray
- 黑马程序员--OC笔记
- 黑马程序员——OC笔记之面向对象三大特征(封装、继承、多态)
- 黑马程序员---OC学习笔记之autorelease快速创建对象的应用
- 黑马程序员—OC学习笔记—多态性学习
- 黑马程序员——ios学习笔记 OC 初步认识
- 黑马程序员——ios学习笔记 OC 类
- 黑马程序员——ios学习笔记 OC 继承
- Spark Graphx 构建graph和aggregateMessages聚合消息
- 乐点 Android SDK 积分墙开发者文档
- Fixing the Great Wall
- HDU - 2553 N皇后问题
- LeetCode 题解(167): Sqrt(x)
- 黑马程序员——OC笔记之购票系统应用实践
- 最小生成树之PRIM-O(n^2)
- ViewHolder到底用什么修饰?static?final?static final?
- easy ui datagrid的高度自适应
- 1089. Insert or Merge (25)
- java.sql.SQLException: 无效的列类型 PreparedStatement.setObject
- wpf中ist<T>与ObservableCollection<T>的用法区别
- sox音频处理器
- HDU4109 Instrction Arrangement 拓扑排序求关键路径