黑马程序员——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)选择购票种类

  1. 定义变量保存用户选择的结果
  2. 提示信息让用户选择
  3. 分别定义两个函数,购买电影票和演唱会票
  4. 在函数中创建电影院对象,调用购票方法

2)显示最新上映的影片信息

  1. 重写电影院类的构造方法
  2. 初始化影片的数组
  3. 通过for循环遍历数组,显示所有影响信息

3)选择影片

  1. 选择影片编号(定义全局变量接收)
  2. 保存选择的影片信息

4)选择座位

  1. 初始化座位信息
  2. 显示座位信息
  3. 选择排数
  4. 选择座位数
  5. 购票再次确认

5)打印电影票

  1. 提示购票成功
  2. 打印购票信息
  3. 显示座位信息

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"//定义私有变量,用于存放用户输入的电影编号、排数、座位号以及临时变量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
原创粉丝点击