Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

jaemin0619/VendingMachine

Repository files navigation

본 프로젝트는 네트워크 프로그래밍 과제의 일환으로, 실제 환경에서 사용 가능한 자판기 관리 프로그램을 개발하는 것을 목표로 한다. 단순한 로컬 자판기 시뮬레이션을 넘어서, 소켓 기반의 통신, GUI 기반 사용자 인터페이스, 웹 기반 관리자 패널, 데이터베이스 연동, 그리고 암호화 보안 처리까지 통합하여 실제 응용 가능한 수준의 복합 시스템을 구현하였다. 특히 본 프로젝트는 Java 기반의 클라이언트 자판기 프로그램과 WebSocket 기반의 관리자 웹 패널, TCP 서버 및 MySQL 연동, 그리고 사용자 정의 자료구조를 통합하여 구조화된 시스템을 구성함으로써, 복합적인 프로그래밍 요소들을 유기적으로 조합하는 실무 능력을 기르는 것을 핵심 목표로 설정하였다.


1.2 개발 환경 • 프로그래밍 언어: Java • GUI 도구: JavaFX • 네트워크 기술: TCP 소켓, WebSocket • 웹 개발 도구: React.js (with JSX, CSS) • 데이터베이스: MySQL • 암호화 기술: SHA-256, Base64 • 개발 툴: IntelliJ IDEA, VS Code, MySQL Workbench • 운영 체제: Windows 10 (개발 및 테스트 환경)


1.3 주요 기능 요약 기능 항목 세부 내용 사용자 UI JavaFX 기반 음료 선택, 투입금 입력, 잔돈 반환, 재고 상태 표시 금액 처리 화폐 투입 (10~1000원), 누적 금액 표시, 거스름돈 반환 알고리즘 재고 관리 음료 재고 차감, 관리자에 의한 보충 기능 구현 파일 및 DB 처리 판매 기록 저장 (CSV → MySQL 전환), 암호화 로그 DB 저장 서버 통신 TCP 기반 로그 전송, WebSocket 기반 실시간 관리자 제어 자료구조 활용 BST(Tree) 기반 음료 검색, Stack/Queue/Map 등 활용 보안 기능 관리자 비밀번호 SHA-256 암호화, 판매 로그 Base64 처리 웹 관리자 패널 React 기반 관리자 UI 구현, 재고 변경/매출 조회/수금 등 1.4 요구사항

  • 기능 요구사항 <사용자>
  1. 판매하는 음료의 개수는 기본적으로 8개로 하되, 각각 200원(믹스커피), 300원(고급믹 스커피), 450원(물), 500원(캔커피), 550원(이온음료), 700원(고급캔커피), 750원 (탄산음 료), 800원 (특화음료)으로 한다. しろまる
  2. 각각 음료의 재고는 기본적으로 10개로 하며, 10개 이상 음료가 배출되었을 때는 해 당 음료 (물품)에 대해 품절 표시를 하고 해당 음료를 더 이상 선택할 수 없어야 한다 (단, 이전에 재고가 보충되었을 경우에는 해당 재고만큼의 판매가 가능해야 함). しろまる
  3. 입력 받을 수 있는 화폐의 단위는 10원, 50원, 100원, 500원, 1,000원으로만 한정하 되, 지폐로 입력 받을 수 있는 금액의 상한선은 5,000원까지이며, 지폐와 동전을 모두 포함하여 총 7,000원을 초과하여 입력 받을 수 없다 (화폐의 입력 금액에 따라 판매 가 능 음료가 표기되어야 한다). 이 때, 화폐를 입력 받는 변수는 반드시 동적 할당을 사 용해야 하며, 화폐가 반환되거나 음료의 판매가 끝나면 동적 할당을 해제해야 한다. しろまる 4 기본적으로 거스름 돈을 가지고 있어야 하며 (각 동전별로 10개를 기본 값으로 하고 음료의 개수와 마찬가지로 생성자를 사용하여 초기화 할 것), 거스름 돈 반환 혹은 음 료 판매에 따른 동전의 가감이 구현되어야 한다. 또한 음료 자판기에서 화폐를 입력 받 을 때는 반드시 사용자 요구에 의한 화폐 반환이 가능해야 한다. 단, 거스름돈이 없는 경우, 거스름돈 없음이란 표기를 한 후 이에 맞는 화폐 입력을 받아야 한다. しろまる
  4. 음료가 배출된 이후에도 반드시 다시 화폐를 입력 받을 수 있는 상태가 되어야 한다. しろまる <관리자>
  5. 관리자 메뉴 (비밀번호 확인을 통해 관리자 메뉴에 접근할 수 있도록 작성하되, 비밀 번호는 반드시 특수문자 및 숫자가 각각 하나 이상 포함된 8자리 이상으로 설정할 수 있도록 해야 하며 필요시 언제든 변경 가능해야 함)는 다음과 같은 조건을 만족해야 한 다. - 일별/월별 매출 산출, 각 음료의 일별/월별 매출, 각 음료의 재고 보충 (재고 보충은 오프라인 형태)이 가능해야 한다. 이 때, 일별/월별 매출은 사전에 파일로 저장해 놓 은 파일(각자 만들어 사용)을 사용하여야 하며, 현재의 자판기 매출은 사전에 저장해 놓은 파일과 연관성을 가지고 있어야 한다. - 관리자 메뉴에서는 현재 자판기 내의 화폐현황을 손쉽게 파악할 수 있어야 하며, 관 리자가 "수금"이란 메뉴를 선택할 경우, 해당 금액을 수금할 수 있어야 한다. 단, 이 경우에도 반환을 위한 최소한의 화폐 (임의로 지정할 것)는 남겨두어야 한다. - 관리자 메뉴에서는 각 음료의 판매가격, 판매이름을 사용자의 입력을 통해 언제든 바 꿀 수 있어야 한다. - 관리자 메뉴와 관련된 모든 사항들은 파일로 읽기/쓰기가 되어야 한다. (최소 기록 사항: 일별/월별 매출, 재고 소진 날짜 혹은 주기) しろまる
  6. 관리자 메뉴가 활성화 되어 있는 경우, 화면이 관리자 전용 메뉴로 변경 되어야 하며, 관리자 메뉴가 활성화 되어 있는 경우에는 다른 기능들은 동작하지 않아야 한다. 즉, 관리자 화면과 판매 화면은 각각 독립적으로 동작해야 한다. しろまる
  7. 반드시 예외 처리 및 주석 (프로그램, 함수, 라인 주석 등)이 반드시 포함되어야 한다. しろまる
  8. 예외처리시 사용하는 언어의 예외처리 방식에 따른 동작을 사용해야 하며, 모든 부분 에 예외처리가 잘 이루어져야 한다. しろまる
  9. 상기한 바와 같은 프로그램의 실행은 모두 GUI 환경에서 동작하여야 한다. しろまる
  10. 사용하는 모든 자료구조는 직접 만들어서 사용해야 한다. しろまる
  11. 각 음료의 재고 수량은 Linked-List를 통해 구현되어야 한다. しろまる
  12. 본 프로그램의 작성 시 Stack과 Queue가 적절한 곳에 각 1회 이상씩 사용되어야 한 다. しろまる
  13. 본 프로그램의 작성 시 Tree 구조가 적절한 곳에 1회 이상씩 사용되어야 한다. しろまる
    15.본 프로그램의 작성 시 다양한 Sort 및 Search 기법이 적절한 곳에 각 1회 이상씩 사용되어야 한다. しろまる
  14. 본 프로그램의 작성 시 멀티 스레드(2개 이상[e.g : 기본 판매 및 관리자]), 멀티 스레 드 동기화가 적절한 곳에 1회 이상씩 사용되어야 한다. しろまる
  15. 관리자 메뉴에서 필요한 관리 데이터는 별도의 데이터베이스 또는 클라우드 기반 데이 터베이스를 사용하여야 한다. しろまる
  16. 본 프로그램의 동작은 GUI (플랫폼은 본인들이 선택하여 수행)를 통해 프로그램의 동 작 및 수행결과를 알 수 있도록 해야 하며, 서버 쪽 관리메뉴는 웹 페이지로도 접근이 가능할 수 있도록 프로그램을 작성해야 한다. しろまる
  17. 저장되는 모든 데이터는 별도의 암호화 과정을 거쳐 암호화되어 저장되어야 한다. しろまる
  18. 본 프로그램에서 작성하는 자판기 관리 프로그램을 통해 생성/저장된 모든 데이터들 은 Socket 프로그래밍을 통해 지정된 서버로 전송되어 관리될 수 있어야 한다. 또한 상기한 바와 같은 데이터를 수신한 서버는 다음과 같은 기능을 수행할 수 있어야 한다. - 각 자판기의 각 음료별 일별/월별 매출현황의 합산/누적합산 - 각 자판기의 일별/월별 매출 현황의 합산/누적합산 - 각 자판기의 실시간 재고현황 파악 - 각 자판기의 음료 재고 부족 시 관리자에게 알림 메시지 전송 - 각 자판기의 음료 이름 변경 – しろまる <기타> 21.(Option 1) 본 프로그램의 동작은 적어도 3대 이상의 PC (Client1, Client2, Server) 혹은 Socket 프로그래밍을 통해 통신할 수 있는 3가지의 환경에서 동작할 수 있어야 한다. しろまる
  19. 명시된 기능들 외에 자신의 프로그램만의 특장점이 될 수 있는 기능들을 추가할 경우 이를 명시하고 구현할 수 있다. しろまる

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

AltStyle によって変換されたページ (->オリジナル) /