将电影抽象出来,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
//
// 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
//
// 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