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

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

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

1,基础信息类

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

复制代码

2,具体实现

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

复制代码

  1. @interface MovieTicket : Ticket
  2. //票价
  3. @property float price;
  4. //电影票的编号
  5. @property int ticketNo;
  6. @end

复制代码

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

时间: 2024-12-28 16:08:07

黑马程序员——c语言学习心得—— 电影购票系统的相关文章

黑马程序员——c语言学习心得—— 指针

黑马程序员——c语言学习心得—— 指针 -------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 1,打开文件fopen(文件名,打开方式);例如:FILE *fp = fopen("a1","r");  返回的是文件的指针(文件在内存缓冲区的首地址)fopen函数反回值 是指向 a1文件的指针,通常赋值给一个指针变量关于文件名a1 也可以是一个“路径+文件名”   c:\abc.txt----------------

黑马程序员——c语言学习心得——位运算符

黑马程序员——c语言学习心得——位运算符 -------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 位运算符C语言提供了六种位运算符: & 按位与 | 按位或 ^ 按位异或 ~ 取反 << 左移 >> 右移 1. 按位与运算 按位与运算符"&"是双目运算符.其功能是参与运算的两数各对应的二进位相与.只有对应的两个二进位均为1时,结果位才为1 ,否则为0.参与运算的数以补码方式出现. 例如:9&

黑马程序员——c语言学习心得——函数传递二维数组

黑马程序员——c语言学习心得——函数传递二维数组 -------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.定义指针的时候一定要初始化.   变量定义的时候给变量初始化,这是保证不出错的一个很好的习惯.尤其是在指针的使用上,如果我们没有给指针初始化,就会出现野指针,该指针的指向并不是我们所希望的,一旦错误的释放了这个指针,就会发生内存的访问.那么如何初始化指针变量呢,一般有以下几种方法:   1.初始化空指针   int* pInteger=N

黑马程序员——oc语言学习心得—— 属性声明和赋值

黑马程序员——oc语言学习心得—— 属性声明和赋值 -------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 1,在oc中所有类继承与终极父类Object2,声明字符变量采用N是string  *_xxx 实例变量一般以下划线开头3,在oc中方法以+ -号区分 -号开头是实例方法或对象方法  +号开头是类方法  前置用对象调用 后者用类名调用4,在xcode4以后声明@property 不用在写@snysize  自动生成get.set方法5,属性

黑马程序员——c语言学习心得——位运算符a

黑马程序员——c语言学习心得——位运算符 -------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- c语言中经常需要通过函数传递二维数组,有三种方法可以实现,如下: 方法一, 形参给出第二维的长度. 例如: #include <stdio.h>void func(int n, char  str[ ][5] ){int i;for(i = 0; i < n; i++)  printf("/nstr[%d] = %s/n"

黑马程序员—oc语言学习心得—block

黑马程序员—oc语言学习心得—block -------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 1,程序一般用typedef定义一个block类型 然后调用 typedef void(^xxx)(); 可使用助记符 inlineblock 2,Block内部可以访问外部变量:默认情况下,Block内部不能修改外部的局部变量 给局部变量加上__block关键字,则这个局部变量可以在block内部进行修改. 3,block的作用: 利用block封

黑马程序员——oc语言学习心得----NSFileManager

黑马程序员——oc语言学习心得----NSFileManager -------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 自己总结了下NSFileManager的简单几个用法 : // 首先要创建文件管理器 NSFileManager *fm=[NSFileManager defaultManager]; 1,判断文件是否存在 fileExistsAtPath: 2,判断文件是否是目录 fileExistsAtPath: 3, 判断文件是否可读

黑马程序员------C 语言学习笔记---C语言基本语法成分

黑马程序员------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- 1.1     C语言基本语法成分 #include <stdio.h> int main() { #define PI 3.14 int r; double s; double m; // 提示用户输入半径 pri

黑马程序员------C 语言学习笔记---C语言的基本结构

黑马程序员------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- 第一 C语言结构基础 1.1     C语言的基本结构 01          #include <stdio.h> :表示文件包含,功能是将头文件stdio.h中的内容包含到程序中. 02          mai