黑马程序员——c语言学习心得—— 电影购票系统

时间:2024-02-17 07:03:15

黑马程序员——c语言学习心得——  电影购票系统

1,基础信息类

  1. #import <Foundation/Foundation.h>
  2. #import "Cinema.h"
  3. void buyMovieTicket(){
  4.     //购买电影票
  5.     
  6.     //调用 电影院的类的 buyTicket的方法
  7.     //                  [[Cinema alloc] init];
  8.     Cinema *cinema = [[Cinema alloc] initWithCinemaName:@"亿达影城"];;
  9.     
  10.     //开始购票
  11.     [cinema buyTicket];
  12. }
  13. void buySongTicket(){
  14.     //购买演唱会票
  15. }
  16. int main(int argc, const char * argv[]) {
  17.     @autoreleasepool {
  18.        
  19.         //打印欢迎信息
  20.         printf("**********欢迎使用购票系统***********\n");
  21.         
  22.         //提示用户选择
  23.         printf("您可以使用购票系统购买:1.电影票   2.演唱会票\n");
  24.         int num;
  25.         scanf("%d",&num);
  26.         
  27.         //当用户选择不同的功能,调用不同的函数
  28.         if (num == 1) {
  29.             
  30.             //在函数中创建对象,开始购票
  31.             buyMovieTicket();
  32.         }else if(num == 2){
  33.         
  34.             buySongTicket();
  35.         
  36.         }
  37.         
  38.     }
  39.     return 0;
  40. }
复制代码

2,具体实现

  1. @interface Cinema : NSObject
  2. {
  3.     //电影院的名称
  4.     NSString *_cinemaName;
  5.     
  6.     //票的集合
  7.     MovieTicket  *tickets[5];
  8. }
  9. -(instancetype)initWithCinemaName:(NSString *)name;
  10. //开始购票
  11. -(void)buyTicket;
  12. //显示正在上映的电影票
  13. -(void)list;
  14. //选择电影
  15. -(void)selectMovie;
  16. //选择排数
  17. -(void)selectRow;
  18. //选择座位号
  19. -(void)selectCol;
  20. //开始支付
  21. -(void)pay;
  22. //出票(打印票)
  23. -(void)printTicket;
  24. @end
复制代码
  1. #import "Cinema.h"
  2. #define ROW 7
  3. #define COL 15
  4. //定义一个全局变量,保存编号
  5. int selectNo;
  6. @implementation Cinema
  7. //定义构造方法
  8. -(instancetype)initWithCinemaName:(NSString *)name{
  9.     //先让父类初始化
  10.     if(self = [super init]){
  11.     
  12.         //给电影院初始化个名字
  13.         _cinemaName  = name;
  14.         
  15.         
  16.         //给电影票的数组初始化
  17.         for (int i=0; i<5; i++) {
  18.             
  19.             MovieTicket *mvticket = [MovieTicket new];
  20.             //给对象赋值
  21.             mvticket.name = [NSString stringWithFormat:@"变性金刚%02d",i+1];
  22.             mvticket.longTime = 120;
  23.             mvticket.actor = @"班长/亚马逊/撸啊撸";
  24.             mvticket.director = @"超哥";
  25.             mvticket.no = i+1;
  26.             mvticket.showTime = [NSString stringWithFormat:@"200%d-11-11",i+1];
  27.             mvticket.startTime = [NSString stringWithFormat:@"1%d:00",i+1];
  28.             mvticket.price = 30.0f;
  29.             mvticket.place = [NSString stringWithFormat:@"影厅%02d",i+1];
  30.             
  31.             //把对象存到数组中
  32.             tickets[i] = mvticket;
  33.             
  34.         }
  35.     
  36.     
  37.     }
  38.     return self;
  39. }
  40. //开始购票
  41. -(void)buyTicket{
  42.     NSLog(@"开始购票");
  43.     
  44.     //显示正在上映的电影
  45.     [self list];
  46. }
  47. //显示正在上映的电影票
  48. /*
  49. 思路:
  50. 1)利用已有的tickets数组,打印数组信息
  51. 2)遍历数组
  52. */
  53. -(void)list{
  54.     NSLog(@"显示正在上映的电影票");
  55.     
  56.     /*
  57.      编号     名称
  58.      主演     开始时间
  59.      导演     时长
  60.      上映时间  
  61.      
  62.      */
  63.     for (int i=0; i<5; i++) {
  64.     
  65.         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);
  66.     }
  67.     
  68.     //提示让用户选择影片
  69.     [self selectMovie];
  70. }
  71. //选择电影
  72. /*
  73. 思路:
  74. 1)定义一个全局变量,保存用户选择的影片编号
  75. 2)提示用户选择一部电影
  76. 3) 接收用户输入的电影编号
  77. 4) 保存编号
  78. */
  79. -(void)selectMovie{
  80. //    1)定义一个全局变量,保存用户选择的影片编号
  81.     
  82. //    2)提示用户选择一部电影
  83.     printf("请选择观看的电影编号:\n");
  84. //    3) 接收用户输入的电影编号
  85.     int num;
  86.     scanf("%d",&num);
  87.     if (num<0 || num >5) {
  88.         return;
  89.     }
  90.     
  91.     
  92. //    4) 保存编号     // 1 2 3 4 5    //3
  93.     selectNo = num;
  94.     
  95.     NSLog(@"\n您已经选择了影片:%@",tickets[selectNo-1].name);
  96.     
  97.     //选择排数
  98.     [self selectRow];
  99. }
  100. //选择排数
  101. /*
  102. 思路:
  103. 1)把电影院的座位信息都打出来看一下
  104. 2)提示,当前影厅有多少排,每排有多少个座位
  105. 3)提示让用户选择排数
  106. 4) 保存排数信息
  107. */
  108. -(void)selectRow{
  109.     printf("当前影厅共有:%d排,每排有%d个座位。\n",ROW,COL);
  110. //    1)把电影院的座位信息都打出来看一下
  111.     for (int i=-1; i<ROW; i++) {
  112.         for (int j=-1; j<COL; j++) {
  113.             
  114.             if (i==-1) {
  115.                 printf("%02d ",j+1);
  116.             }else if(j==-1){
  117.             
  118.                 printf("%02d",i+1);
  119.             }else{
  120.                 printf(" + ");
  121.             }
  122.         }
  123.         
  124.         printf("\n");
  125.     }
  126. //    2)提示,当前影厅有多少排,每排有多少个座位
  127. //    3)提示让用户选择排数
  128.     printf("请选择排数:\n");
  129.     int num;
  130.     scanf("%d",&num);
  131.     if (num<0 || num >7) {
  132.         return;
  133.     }
  134.     
  135.     //    4) 保存排数信息
  136.     tickets[selectNo-1].rowNum = num;
  137.     
  138.     
  139.     //选择座位
  140.     [self selectCol];
  141. }
  142. //选择座位号
  143. -(void)selectCol{
  144.     printf("您已经选择了%d排,请选择座位:\n",tickets[selectNo-1].rowNum);
  145.     
  146.     printf("请选择座位数:\n");
  147.     int num;
  148.     scanf("%d",&num);
  149.     if (num<0 || num >15) {
  150.         return;
  151.     }
  152.     
  153.     //  保存座位信息
  154.     tickets[selectNo-1].colNum = num;
  155.     
  156.     //把用户当前的购买的信息打印出来,让用户确认
  157.     //您选择 xxx  开始时间:
  158.     //  第 xx 排  xx 座
  159.     //价格:
  160.     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].price);
  161.     printf("请确认:1.确认无误  0.取消\n");
  162.     int flag;
  163.     scanf("%d",&flag);
  164.     
  165.     if (flag) {
  166.         //确认,然后支付
  167.         [self pay];
  168.     }
  169.    
  170. }
  171. //开始支付
  172. -(void)pay{
  173.     NSLog(@"\n开始支付...\n支付已经完成...");
  174.     //打印票
  175.     [self printTicket];
  176. }
  177. //出票(打印票)
  178. -(void)printTicket{
  179.     NSLog(@"\n\n恭喜您,购票成功:\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);
  180.     
  181.     
  182.     //座位信息打印出来看一下
  183.     for(int i=-1;i<ROW;i++){
  184.     
  185.         for (int j=-1; j<COL; j++) {
  186.             
  187.             //先判断是否显示小人,
  188.             // i == (rowNum-1)  && j== (colNum-1)
  189.             if (i== (tickets[selectNo-1].rowNum-1) && j ==(tickets[selectNo-1].colNum-1)) {
  190.                 printf(" @ ");
  191.                 
  192.             }else{
  193.             
  194.             
  195.                 if (i==-1) {
  196.                     printf("%02d ",j+1);
  197.                 }else if(j==-1){
  198.                     
  199.                     printf("%02d",i+1);
  200.                 }else{
  201.                     printf(" + ");
  202.                 }
  203.             
  204.             }
  205.         }
  206.     
  207.         printf("\n");
  208.     }
  209.     
  210. }
复制代码
  1. @interface MovieTicket : Ticket
  2. //票价
  3. @property float price;
  4. //电影票的编号
  5. @property int ticketNo;
  6. @end
复制代码