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