[黑马IOS自学第十二篇]购票系统实现

本文档介绍了如何在iOS环境中实现一个购票系统,通过OC编程语言,详细讲解了从产品经理提出需求到项目经理管理,再到具体购票系统的代码实现,包括`Cinema`类的头文件和实现文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 


 



将电影抽象出来,Common类 


产品经理 (说明需求)-->项目经理

 

 购票系统代码细节:


 main.m

#import <Foundation/Foundation.h>
#import "Cinema.h"

void buyMovieTicket(){
    Cinema *cinema = [[Cinema alloc] initWithCinemaName:@"百达影院"];
    
    [cinema buyTicket];
    
}
void buyConcertTicket(){
    
    
}
int main(int argc, const char * argv[]) {
    @autoreleasepool {
       
        //打印欢迎信息
        printf("************欢迎使用购票系统***************\n");
        
        //提示用户选择
        printf("****您可以使用购票系统购买:1.电影票 2.演唱会门票 ****\n");
        
        int num ;
        scanf("%d",&num);
        
        
        //当用户选择不同的功能,调用不同的函数
        
        switch (num) {
            case 1:
                buyMovieTicket();
                break;
            
            case 2:
                buyConcertTicket();
                break;
            default:
                printf("没有此选项,请重新选择");
                break;
        }
        
        //在函数里创建对象
        
        
        
        
        //开始购票
    
    
    
    

    
    
    }
    return 0;
}
2.Common.h (包含电影票,等信息)

//
//  Common.h
//  购票系统
//
//  Created by CHINGWEI_MACPC on 15/12/11.
//  Copyright © 2015年 itcast. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface Common : NSObject
@property NSString *name;
@property NSString *director;
@property int  duration;
@property NSString *actor ;
@property NSString *firmTime;
@property int no ;//编号

@end


3. Common.m

//
//  Common.m
//  购票系统
//
//  Created by CHINGWEI_MACPC on 15/12/11.
//  Copyright © 2015年 itcast. All rights reserved.
//

#import "Common.h"

@implementation Common

@end

4.Ticket.h
//
//  Ticket.h
//  购票系统
//
//  Created by CHINGWEI_MACPC on 15/12/11.
//  Copyright © 2015年 itcast. All rights reserved.
//

#import "Common.h"

@interface Ticket : Common
//座位号
@property int colNum;
//排数
@property int rowNum;
//地点
@property NSString *place;
//开始时间
@property NSString *startTime;
//结束时间
@property NSString *endTime;
 

-(void)printTicketInfo;
@end


 5.Ticket.m
//
//  Ticket.m
//  购票系统
//
//  Created by CHINGWEI_MACPC on 15/12/11.
//  Copyright © 2015年 itcast. All rights reserved.
//

#import "Ticket.h"

@implementation Ticket
-(void)printTicketInfo{
    NSLog(@"打印票的信息");
}
@end

6.MovieTicket.h

//
//  MovieTicket.h
//  购票系统
//
//  Created by CHINGWEI_MACPC on 15/12/11.
//  Copyright © 2015年 itcast. All rights reserved.
//

#import "Ticket.h"

@interface MovieTicket : Ticket
@property float price ;
@property int ticketNo;//每个电影票的编号
@end

7. MovieTicket.m

 

//
//  MovieTicket.m
//  购票系统
//
//  Created by CHINGWEI_MACPC on 15/12/11.
//  Copyright © 2015年 itcast. All rights reserved.
//

#import "MovieTicket.h"

@implementation MovieTicket

@end

 8.Cinema.h

//
//  Cinema.h
//  购票系统
//
//  Created by CHINGWEI_MACPC on 15/12/11.
//  Copyright © 2015年 itcast. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "MovieTicket.h"
@interface Cinema : NSObject
{
    //dianyingyaun的名字不需要getset犯法
    NSString *_cinemaName ;//初始化一下就好了
    //票的集合
    MovieTicket *tickets[5];
}
-(instancetype)initWithCinemaName:(NSString *)name;
//开始购票
-(void)buyTicket;
//显示正在上映的电影票信息
-(void)list;
//选择电影
-(void)selectMovie;
//选择排数
-(void)selectRow;
//选择列数
-(void)selectCol;
//开始支付
-(void)pay;
//出票(打印票)
-(void)printTicket;
@end

 9.Cinema.m

//
//  Cinema.m
//  购票系统
//
//  Created by CHINGWEI_MACPC on 15/12/11.
//  Copyright © 2015年 itcast. All rights reserved.
//

#import "Cinema.h"
//定义一个全局变量 保存编号
int selectNo;
#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++) {
            MovieTicket *mvticket = [MovieTicket new];
            
            //给对象赋值
            mvticket.name = [NSString stringWithFormat:@"变形金刚%02d",i+1];
            mvticket.duration = 120;
            mvticket.actor=@"banzhang";
            mvticket.director =@"liuchao";
            mvticket.no = i +1 ;
            mvticket.firmTime = [NSString stringWithFormat:@"201%d-11-11",i+1];
            mvticket.price = 30.f;
            mvticket.place = [NSString stringWithFormat:@"影厅%02d",i+1];;
            mvticket.startTime = [NSString stringWithFormat:@"1%d:00",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 ", tickets[i].no,tickets[i].name,tickets[i].actor,tickets[i].startTime,tickets[i].director,tickets[i].duration,tickets[i].firmTime);
    }
    
    [self selectMovie];
    
}
//选择电影
-(void)selectMovie{
    NSLog(@"选择影片");
    //定义一个全局变量保存用户选择的影片信息
    printf("请选择要观看的一部影片:");
    int num ;
    scanf("%d",&num);
    if (num < 0 || num>5) {
        return    ;
    }
    selectNo = num ;
    NSLog(@"\n你已经选择了影片: %@",tickets[selectNo-1].name);
    
    [self selectRow];
}

//选择排数
-(void)selectRow{
    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(" + ");
            }
            
        }
        printf("\n");
    }
    NSLog(@"选择排数");
    int num ;
    scanf("%d",&num);
    if (num<0 || num>7) {
        return ;
    }
    //保存排数
    NSLog(@"您选择了%d",tickets[selectNo-1].rowNum);
    [self selectCol] ;
}

//选择列数
-(void)selectCol{
    
    NSLog(@"选择座位号");
    int num ;
    scanf("%d",&num);
    if (num<0 || num>15) {
        return ;
    }
    //保存排数
    tickets[selectNo-1].colNum = num;
    tickets[selectNo-1].rowNum = num;
    NSLog(@"\n\n你选择的影片是:%@  开始时间:%@ \n您的座位是第%d排,%d座位\n影厅:%@  票价:%f",tickets[selectNo-1].name,tickets[selectNo-1].startTime,tickets[selectNo-1].rowNum,tickets[selectNo-1].colNum,tickets[selectNo-1].place,tickets[selectNo-1].price);
    printf("请确认 1.确认 0.取消\n");
    int flag ;
    scanf("%d",&flag);
    if (flag<0 || flag>15) {
        return ;
    }
    [self pay];
}

//开始支付
-(void)pay{
    
    NSLog(@"支付电影票");
    [self printTicket];
}

//出票(打印票)
-(void)printTicket{
    NSLog(@"出票");
    NSLog(@"\n\n恭喜您 购票成功 :\n购票信息如下:\n影片是:%@  开始时间:%@ \n您的座位是第%d排,%d座位\n影厅:%@  票价:%f",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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值