您的位置:首页 > 职场人生

黑马程序员--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. 功能代码实现

//基础信息类
#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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: