A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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

------Java培训Android培训iOS培训.Net培训、期待与您交流------


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
复制代码



------Java培训Android培训iOS培训.Net培训、期待与您交流------

3 个回复

倒序浏览
继续加油
回复 使用道具 举报
多多学习!
回复 使用道具 举报
toveyloves 来自手机 中级黑马 2015-11-1 12:33:51
板凳
Nice!这波6
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马