黑那程式設計師——OC實戰——電影院買票系統
阿新 • • 發佈:2019-01-08
今天看完了教學視訊中的OC部分,最後的課程老師講了一個例項的題,就是模擬電影院購票的系統。在自己簡單些了一個小程式之後,再聽了老師的解法,自己融合老師講的和自己理解的內容,寫了一個改進版的程式。
程式程式碼如下
mian.h檔案
#import <Foundation/Foundation.h>
#import "Cinema.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
Cinema *C1=[[Cinema alloc]initWithcinema:@"搞基聖地"]; //初始化物件的屬性
printf("**************************************\n");
printf("******歡迎使用基佬專用電影票購票系統*******\n");
printf("**************************************\n");
while (1) { //利用迴圈,將購票行為可以迴圈進行
printf("是否開始購票?\n1.是 0.否\n");
int flag;
scanf("%d",&flag);
if (flag==1) { //判斷輸入內容
[C1 printmovie]; //呼叫購票的實力方法
}else if (flag==0){
break;
}else{
printf("輸入有誤!\n");
}
}
printf("謝謝您的使用\n");
}
return 0;
}
Cinema.h檔案
#import <Foundation/Foundation.h>
#import "MovieTicket.h"
@interface Cinema : NSObject
{
NSString *_cinema;
MovieTicket *_movt[5];
}
//初始化init
-(instancetype)initWithcinema:(NSString*)name;
//列出電影播放安排
-(void)printmovie;
//選擇電影
-(void)chosemovie;
//選擇座位
-(void)choseseat;
//選擇第幾排
-(void)chosepai;
//選擇第幾列
-(void)choselie;
//確認位置
-(void)queren;
//支付
-(void)pay;
//出票
-(void)printticket;
@end
Cinema.m檔案
#import "Cinema.h"
int NOMBER;
int PAI,LIE;
@implementation Cinema
//初始化init
-(instancetype)initWithcinema:(NSString*)name{
if (self=[super init]) {
_cinema=name; //MovieTicket *_mt[5]
for (int i=0; i<5; i++) {
MovieTicket *mt=[MovieTicket new];
[email protected]"放映電影";
mt.place=name;
mt.starttime=[NSString stringWithFormat:@"%02d:00",i+1];
[email protected]"120min";
mt.no=i+1;
mt.moviename=[NSString stringWithFormat:@"精肛互擼娃%02d",i+1];
[email protected]"激情四射狼";
[email protected]"bigbaby";
mt.price=100;
_movt[i]=mt;
}
}
return self;
}
//列出電影播放安排
-(void)printmovie{
for (int i=0; i<5; i++) {
NSLog(@"\n\nNO.%d\n電影名:%@ \n導演:%@ 主演:%@ \n電影時長:%@ 開場時間:%@ \n票價:%.2f\n\n",_movt[i].no,_movt[i].moviename,_movt[i].director,_movt[i].actor,_movt[i].duration,_movt[i].starttime,_movt[i].price);
};
[self chosemovie];
}
//選擇電影
-(void)chosemovie{
printf("請選擇電影編號!\n");
scanf("%d",&NOMBER);
if (NOMBER>0&&NOMBER<6) {
NSLog(@"\n\n您已成功選擇:%@",_movt[NOMBER-1].moviename);
[self choseseat];
}else {
printf("輸入非法,請重新選擇!\n");
[self chosemovie];
};
}
//選擇座位
-(void)choseseat{
printf("座位資訊如下,'+'為可選座位,'-'為已售出座位\n");
for (int i=-1; i<15; i++) {
for (int j=-1; j<15; j++) {
if (i==-1) {
printf(" %02d ",j+1);
}else if (j==-1){
printf(" %02d ",i+1);
}else{
if (_movt[NOMBER]->_seat[i][j]==0) {
printf(" + ");
}else if(_movt[NOMBER]->_seat[i][j]==1){
printf(" - ");
}
}
}
printf("\n");
}
[self chosepai];
}
//選擇第幾排
-(void)chosepai{
printf("請選擇第幾排\n");
scanf("%d",&PAI);
if (PAI>0&&PAI<16) {
_movt[NOMBER-1].pai=PAI;
printf("您已成功選擇第%d排\n",PAI);
[self choselie];
}else{
printf("輸入非法,請重新選擇!\n");
[self chosemovie];
};
}
//選擇第幾列
-(void)choselie{
printf("請選擇第幾列\n");
scanf("%d",&LIE);
if (LIE>0&&LIE<16) {
_movt[NOMBER-1].lie=LIE;
printf("您已成功選擇第%d列\n",LIE);
[self queren];
}else{
printf("輸入非法,請重新選擇!\n");
[self choselie];
};
}
//確認位置
-(void)queren{
int i;
printf("您選擇的是:第%d排,第%d列\n確認:1 取消:0\n",_movt[NOMBER-1].pai,_movt[NOMBER-1].lie);
scanf("%d",&i);
if (i==1) {
_movt[NOMBER]->_seat[_movt[NOMBER-1].pai-1][_movt[NOMBER-1].lie-1]=1;
printf("確認成功!\n");
[self pay];
}else if (i==0){
printf("取消成功,程式即將退出。。。\n");
return;
}else {
printf("輸入非法,請重新選擇!\n");
[self queren];
}
}
//支付
-(void)pay{
printf("支付中。。。。\n");
printf("支付成功\n");
[self printticket];
}
//出票
-(void)printticket{
NSLog(@"\n您的票:\n\n電影名:%@ \n導演:%@ 主演:%@ \n電影時長:%@ 開場時間:%@ \n票價:%.2f\n第%d排,第%d列\n\n",_movt[NOMBER-1].moviename,_movt[NOMBER-1].director,_movt[NOMBER-1].actor,_movt[NOMBER-1].duration,_movt[NOMBER-1].starttime,_movt[NOMBER-1].price,_movt[NOMBER-1].pai,_movt[NOMBER-1].lie);
}
@end
Common.h檔案
#import <Foundation/Foundation.h>
@interface Common : NSObject
{
@public
Common.m檔案
#import "Common.h"
@implementation Common
@end
Ticket.h檔案
#import "Common.h"
@interface Ticket : Common
//開始時間
@property NSString *starttime;
//持續時間
@property NSString *duration;
//座位位置
@property int pai;
@property int lie;
@end
Common.m檔案
#import "Ticket.h"
@implementation Ticket
@end
MovieTicket.h檔案
#import "Ticket.h"
@interface MovieTicket : Ticket
//編號
@property int no;
//電影名
@property NSString *moviename;
//導演
@property NSString *director;
//主演
@property NSString *actor;
//票價
@property float price;
//列印票
-(void)printMovieTicket;
@end
MovieTicket.m檔案
#import "MovieTicket.h"
@implementation MovieTicket
-(void)printMovieTicket{
NSLog(@"列印票資訊");
}
@end
以上就是我寫的程式,也算是這些天學習oc的一個小成果。
分享給大家。