CS_Study Pizza Order Service 구현

tahn·2023년 2월 17일
0

CS_Study

목록 보기
4/4
post-thumbnail

Mandatory

C++로 Pizza Order Service를 구현

피자 주문을 위해 주문자, 판매자, 재료가게 이렇게 3가지 객체가 존재 (클래스는 더 많겠죠?)

또한 각 객체는 단일이 아닌 여러개일 수 있음. (주문자 여러개)

  1. 큰 로직은 주문자가 피자를 주문하면 피자가게에선 미리 메뉴를 만들어 두고 그 메뉴에 어떤 재료가 들어갈지 파악 한 후, 재료가게에서 가져와 피자를 만들어 판매하는 시스템.
  2. 이때 재료가게는 각 재료에 대한 재고를 가지고 있어서 재고가 없으면 피자가게에서 주문을 받을때 재료 없음 과 같은 에러메세지를 나타내야함
  3. 즉 피자가게는 재료를 가지고 있지 않고, 주문이 들어오면 그때 재료가게에서 주문을 받는 시스템
  4. 피자가게에서 피자를 생성할 수도 있지만, 그냥 코드상에 만들어 두는걸로 제한
  5. 피자가게 매출과 피자별로 몇개 팔렸는지 볼 수 있는 창이 있어야 함
  6. 소비자는 돈 충전하는 메뉴가 있어야 하며, 돈이 부족할 시 잔액부족이라는 에러메세지를 호출해야함
  7. 주문이 성사되면 소비자의 돈과 재료가게의 재료는 줄어들고, 판매자의 돈은 증가해야함
  8. 프로그램이 종료되어도 파일을 읽어들여 정보를 가져와야함 (가장 마지막에 작업)

1. 로그인 기능

  • 아이디 비밀번호 받아 로그인 맞는지 확인하는 기능 구현
  • 손님로그인, 피자가게 로그인, 재료가게 로그인 메뉴가 각각 존재해야 함 (admin page)

2. 주문기능

  • 피자 주문 메뉴에서 메뉴랑 재료, 가격을 보여주면 좋을것 같긴 함 (이건 각자 알아서)
  • 주문시 각종 에러코드에 대한 처리 필요 (enum 사용)

조건

  1. 각 코드는 깃헙으로 업데이트 하며 작업할 것. (방법은 알아서 찾을 것.)
  2. STL 중 vector, map을 이용하면 편함.
  3. 클래스를 나누는 기준은 알아서 하되, 최대한 서로 역할이 겹치지 않도록 작업 할 것.
  4. 클래스를 나눴다면 클래스 별로 각각 다른 cpp 파일과 h 파일로 나누어서 작업 할 것. (Pizza.cpp 파일 하나에 모든 클래스를 다 때려박지 말 것)
  5. 텍스트 데이터는 되도록 string을 사용할 것.
  6. 헤더파일과 소스파일(cpp 파일)은 반드시 나누어 구현하고, 헤더파일엔 선언이, 소스파일엔 구현을 할 것.
  7. pizza는 기본적으로 도우, 토마토, 치즈가 기본적으로 들어가고 나머지 토핑에 따라 이름과 가격이 달라지는데 이때 도우, 토마토, 치즈는 결국 겹치는 메뉴이니 상속을 이용 할 것
  8. main 함수
int main()
{
    MainController MAcc;
    MAcc.start();
}
  1. 4번에서 클래스를 파일별로 나눴다면 서로 private 에 가지고있는 데이터 형태에는 접근이 어렵도록 해야함. 상속을 통해서 데이터를 주고받는다거나, 아님 데이터 전체를 다른 클래스에 넘긴다거나 하는 행위를 할 시 호오온납니다. 가져오려는 데이터가 있는 클래스에 함수를 통해 원하는 데이터만 골라서 가져오거나, 아님 매개변수에 레퍼런스를 붙여서 가져온다거나 하는 방법으로 처리하는걸 추천 (이건 꼭 인터넷에 검색해서라도 숙지 후 작업 바람)

결과 or 에러 호출 목록

  1. 저번에 해봤으니 대충 어떻게 해야할지 알거라 믿습니다.

코드 작업 순서

  1. 클래스간 데이터 이동 방법 공부
  2. 구조도 그리기
  3. 코드 작성
  4. 파일쓰기, 읽기 구현방법 공부 및 구현

발표 방식

  1. 전체적인 구조도 설명
  2. 프로그램 실행
  3. 코드 설명

기간

2023.3.2 (목) ~ 2023.3.23 (목) 3주간

Bonus

여긴 생각 나는대로 추가하겠습니다.

profile
html 개발자

0개의 댓글