네트워크 프로그래밍에 대한 이해를 높이기 위한 프로젝트로 자판기를 진행하게 되었다. (학교 과제다..)
요구사항 정의는 다음과 같다.
1. 판매 음료 개수가 6개로 하도록 하고 각각의 재고가 10개로 설정 되어 있어야 한다. ( 각각 450원(물), 500원(커피), 550원(이온음료), 700원(고급커피), 750원 (탄산음료), 800원 (특화음료)으로 한다.)
2. 음료의 재고가 없으면 품절 표시가 되어야 하고, 재고를 보충 가능한 기능을 넣어야 한다.
3. 입력 가능한 화폐의 단위는 5개로 (10원, 50원, 100원, 500원, 1,000원) 나누어져 있어야 한다. 돈 버튼을 누르면 돈이 증가하고, 이때 자판기 내부의 돈의 수도 증가한다. 이 입력을 했을 때 거스름 돈 반환 버튼이 존재해 거스름돈을 줄 수 있고, 판매에 따른 가감이 발생해야 한다. 입력 받을 수 있는 금액의 상한선은 5,000원까지이며, 지폐와 동전을 모두 포함하여 총 7,000원을 초과하여 입력 받을 수 없다.
4. 거스름 돈이 없을 때는 이에 맞는 화폐입력을 받아야 한다.
5. 음료가 배출된 후에도 반드시 다시 화폐를 입력 받을 수 있는 상태가 되어야 한다.
6. 관리자 메뉴가 버튼에 존재 해야하고, 관리자 메뉴에 들어갈 때 비밀번호는 반드시 특수문자 및 숫자가 각각 하나 이상 포함된 8자리 이상으로 설정하고 관리자 메뉴에서는 비밀 번호 변경이 가능해야 한다.
7. 일별/월별 매출 산출, 각 음료 일/월별 매출, 각 음료의 재고 보충이 가능해야 한다. 이때 재고 보충은 온라인이 아닌 인앱 상에서 가능해야 한다.
8. 현재의 자판기 매출은 사전에 저장해 놓은 파일과 연관성이 있어야 한다.
9. 관리자 메뉴에서 화폐현황이 파악가능해야 한다. - 화폐현황 확인 메뉴
수금 메뉴를 선택하면 해당금액을 수금 할 수 있어야 한다. 이 때 남은 금액은 화폐마다 최소 5장 씩 남아 있어야 한다.
관리자 메뉴와 관련된 모든 사항들은 파일로 읽기, 쓰기가 가능해야 한다. (일별,월별 매출, 재고소진 날짜 )
10. 자판기 관리 프로그램에서 멀티 스레드가 1회 이상 사용되어야 한다.
11. 자판기 관리 프로그램을 통해 생성/ 저장된 모든 데이터들은 소켓프로그래밍을 통해 지정된 서버로 전송되어 관리가 가능해야 한다.
서버의 기능은 다음과 같아야 한다.
- 각 자판기의 각 음료별 일별/ 월별 매출현황의 합산/누적합산
- 각 자판기의 실시간 재고현황 파악한다.
- 각 자판기의 음료 재고 부족시 관리자에게 알림 메시지를 전송한다.
- 각 자판기의 음료이름 변경을 진행한다.
12. 3대이상의 PC (Client1, Client2, Server) 혹은 소켓 프로그래밍을 통해 통신 가능한 3가지 환경에서 동작이 가능해야 한다.
요구사항에 따라 먼저 UI개발을 진행하고 이에 맞는 기능 구현을 진행하는 방식으로 진행할 예정이다.
UI는 자판기 기본 화면과 이에 연결된 관리자 화면, 이후 재고보충 화면과 화폐현황 확인 화면으로 프로그램을 구성할 예정이다. UI디자인은 미리캔버스에서 정사각형 화면으로 구성시키고 이뻐보이는 걸루다가 다 넣었다.
UI구성의 결과는 다음과 같다.




'Development Project > Python tkinter 자판기 Network Project' 카테고리의 다른 글
| 자판기 네트워크 파트 구현 (0) | 2024.06.14 |
|---|---|
| 자판기 네트워크 프로그래밍 프로젝트 2(2) - UI 구현 및 화면 이동 구현(tkinter, python) (0) | 2024.06.11 |
| 자판기 네트워크 프로그래밍 프로젝트 2(1) - UI 구현 및 화면 이동 구현(tkinter, python) (0) | 2024.06.10 |
| UI 프로그래밍 하기 tkinter & python 1 메인 화면 구성하기 (0) | 2024.06.04 |