- 조건 -
1. 광해
2. 내부자들
영화별 좌석 예매 프로그램을 제작해주세요.
영화를 선택 후 각 영화에 대한 예매 프로그램을 제작합니다.
예매는 1인 또는 2인 또는 3인까지 동시에 예매가 가능합니다.
영화는 1인당 9000원이며, 할인권이 있을 경우 1명만 10% 할인이 가능합니다.
#include<stdio.h>
#include<string.h>
#include <stdlib.h>
typedef struct Movie{
char m_name[20]; //영화명
char seat[10]; //좌석현황(O, X로 표시하기 위하여 문자열로 지정)
int s_count; //좌석수
}Movie;
int c_movie, personnel, s_num[3]; //영화선택, 사람수, 좌석선택
int i;
Movie mv[2] = {{"어벤져스", "OOOOOOOOOO", 0}, {"내부자들", "OOOOOOOOOO", 0}}; //초기 세팅
//영화목록
void m_list()
{
printf("\n");
printf(" ----영화 리스트----\n");
printf("| 1. 어벤져스 |\n");
printf("| 2. 내부자들 |\n");
printf("| 3. 종료 |\n");
printf(" -------------------\n");
printf("영화 선택 : ");
scanf("%d", &c_movie);
printf("\n");
//1번 영화
if(c_movie == 1)
{
mv[c_movie-1].s_count = 0;
//매진 확인
s_count();
//영화 예매
m_reservation();
}//if(c_movie == 1)
//2번 영화
else if(c_movie == 2)
{
mv[c_movie-1].s_count = 0;
//매진 확인
s_count(mv, c_movie-1);
//영화 예매
m_reservation();
}//else if(c_movie == 2)
//종료
else if(c_movie == 3)
{
exit(1); //프로그램 종료
}
else
{
printf("잘못된 번호입니다.\n");
}
m_list();
}
//매진 확인
void s_count(){
for(i=0; i<10; i++)
{
if(mv[c_movie-1].seat[i] == 'O')
{
mv[c_movie-1].s_count++; //예매 가능한 좌석을 O으로 표시 했으며 O의 수를 카운트
}
}
}
//영화 예매
void m_reservation()
{
//예매 가능
if(mv[c_movie-1].s_count>0)
{
printf("인원을 입력하세요 : ");
scanf("%d", &personnel);
//예약 가능 인원 확인
if(personnel <= mv[c_movie-1].s_count && personnel < 4 && personnel > 0) //남은 좌석수, 최대인원 확인
{
for(;;)
{
s_list();
//좌석 입력
s_set();
break;
}//for(;;)좌석
//할인권 유무
payment();
}//if(personnel <= mv[0].s_count && personnel < 4 && personnel > 0)
else if(personnel > 3)
{
printf("최대 3명까지만 예약 가능합니다.\n\n");
m_list();
}//else if(personnel > 3)
else if(personnel > mv[c_movie].s_count)
{
printf("좌석이 부족합니다.\n");
printf("남은 좌석 %d\n", mv[0].s_count);
m_list();
}//else if(personnel > mv[0].s_count)
else if(personnel < 1)
{
printf("최소 1명 이상 이어야 합니다.\n");
m_list();
}//else if(personnel < 1)
}//if(mv[0].s_count>0)
//1번 매진
else
{
printf("해당 영화는 매진입니다.\n");
m_list();
}
}
//좌석현황
void s_list(){
printf("\n");
printf(" ------좌석현황------\n");
printf("|좌석을 선택 하세요. |\n");
printf("|1 2 3 4 5 6 7 8 9 10|\n");
printf("|");
for(i=0; i<10; i++){
printf("%c ", mv[c_movie-1].seat[i]);
}//for(i=0; i<10; i++)
printf("|\n");
printf(" --------------------\n");
printf("\n");
}
//좌석선택
void s_set(){
for(i=0; i<personnel; i++){
printf("%d번째 좌석 ",i+1);
scanf("%d", &s_num[i]);
if(1 > s_num[i] || s_num[i] > 10){
printf("없는 좌석입니다.\n");
i--;
}//if(1 > s_num[i] || s_num[i] > 10)
else if(mv[c_movie-1].seat[s_num[i]-1] == 'X'){
printf("해당 좌석은 예매 불가능 합니다.\n");
i--;
continue;
}//else if(mv[c_movie-1].seat[s_num[i]-1] == 'X')
else if(mv[c_movie-1].seat[s_num[i]-1] == 'O'){
mv[c_movie-1].seat[s_num[i]-1] = 'X';
}//else if(mv[c_movie-1].seat[s_num[i]-1] == 'O')
}//for(i=0; i<personnel; i++)
printf("\n");
}
//결제
void payment(){
int price;
char sale, c_pay;
printf("할인권이 있습니까?(Y/N) ");
scanf(" %c", &sale);
if(sale == 'Y' || sale == 'y'){
price = 9000*personnel-900;
printf("\n결제 하실 금액은 %d원 입니다\n", price);
}//if(sale == 'Y' || sale == 'y')
else if(sale == 'N' || sale == 'n'){
price = 9000*personnel;
printf("\n결제 하실 금액은 %d원 입니다\n", price);
}//else if(sale == 'N' || sale == 'n')
printf("결제 하시겠습니까?(Y/N) ");
scanf(" %c", &c_pay);
if(c_pay == 'Y' || c_pay == 'y'){
printf("예약 완료\n");
}//if(c_pay == 'Y' || c_pay == 'y')
else if(c_pay == 'N' || c_pay == 'n'){
for(i=0; i<personnel; i++){
mv[c_movie-1].seat[s_num[i]-1] = 'O';
}//for(i=0; i<personnel; i++)
printf("예약 취소\n");
}//else if(c_pay == 'N' || c_pay == 'n')
}
int main(void){
m_list();
return 0;
}
전화번호부 프로그램(C언어) (0) | 2021.01.12 |
---|---|
직원 관리 프로그램(C언어) (0) | 2021.01.12 |
출입명부 프로그램(C언어) (0) | 2021.01.12 |