[JAVA + 국비교육] Java 팀 프로젝트(자판기) | 소스 코드, 실행 영상, 느낀 점
by 무작정 개발반응형
2022.01.18 ~ 01.19
이번에는 한 달 동안 자바를 배우고 복습하는 겸으로 2인 1팀 프로젝트를 진행했습니다.
저와 팀원은 실력이 부족해서 고난도 프로젝트가 아닌 기본을 다지자는 느낌으로 시작했습니다.
팀 프로젝트 주제 : 자판기
VendingMain
package a.test;
import java.util.Scanner;
public class VendingMain extends VendingVO {
public static void main(String[] args) throws Exception {
Scanner sc = new Scanner(System.in);
Test t = new Test();
VendingVO vv = new VendingVO();
//시작 이미지 보여주기
t.startImage();
System.out.println();
System.out.println("------------------------------------------------------------");
System.out.println();
t.name();
vv.user();
}
}
Test
package a.test;
public class Test extends Thread {
public void startImage() throws Exception {
try {
Thread.sleep(100);
} catch (Exception e) {
// TODO: handle exception
}
String Main[] = {
" _____________ ////\\\\\\\\",
"| _ _________ | | |",
"||.---------.|| @ o o @",
"||| ||| | ~ |",
"||| ||| \\ -- / |\\ |",
"||| ||| __| |___ | \\ |",
"|||---------||| // \\ /|___|",
"| ........... | // \\ / /",
"| || ^^^ () | / /| |\\ \\ / /",
"|[ ] | / / | | \\ \\/ /",
"|[ ] | / / | | \\ \\/ /",
"| || | < < | | \\ /",
"| _ _ | \\ \\| . | \\_/",
"| :::| \\ \\|______|",
"|-------------| | |",
"|-------------| | |",
" | | |"
};
for(int i=0; i<Main.length; i++) {
System.out.println(Main[i]);
sleep(200);
}
}
public void name() throws Exception {
try {
Thread.sleep(100);
} catch (Exception e) {
// TODO: handle exception
}
String name[] = {
"#################################################################################",
"###### ##### ####### ##### ##### ##### #########",
"########### ###### ########## ## ####### ########### ##### #########",
"########## ##### #### ##### ####### ###### #########",
"######### ## #### ####################### ######### ####### #########",
"######## #### ### ############## ###### ######## ######## #########",
"####### ########### ############## ################ ######### #########",
"##################### ############## ################### #########",
"#################################################################################",
" ",
"어서오세요~~ 현우와 성재의 부자되기위한 자판기입니다!!"
};
for(int i=0; i<name.length; i++) {
System.out.println(name[i]);
sleep(200);
}
}
public void coin() throws Exception {
try {
//int j=0;
//while(j<4) {
String[] coinC = {
" ==================================",
" | |",
" | |",
" | 돈 |",
" | |",
" | |",
" ==================================",
};
for(int i=0; i<coinC.length; i++) {
sleep(600);
System.out.println(coinC[i]);
//} j++;
}
} catch (Exception e) {
// TODO: handle exception
}
}
public void drinkCan() throws Exception {
try {
sleep(200);
} catch (Exception e) {
// TODO: handle exception
}
int j=0;
while(j<2) {
String[] can = {
" ___#________",
" // * //",
" // 음 //",
" // 료 * // 떨" ,
" //* 수 // 어" ,
"// * // 지" ,
" ̄ ̄ ̄ ̄ ̄ ̄ ̄ 는",
" 중",
"___#________ .",
"\\\\ * \\\\ .",
" \\\\ 음 \\\\ .",
" \\\\ * 료 \\\\ .",
" \\\\ 수 * \\\\",
" \\\\ * \\\\",
"  ̄ ̄ ̄ ̄ ̄ ̄ ̄" };
for(int i=0; i<can.length; i++) {
System.out.println(can[i]);
} j++;
sleep(600);
}
}
}
VendingVO
package a.test;
import java.util.Random;
import java.util.Scanner;
public class VendingVO {
public int MAX = 10;
String[] box = new String[MAX];
int[] price = new int[MAX];
int count = 10;
Random rd = new Random();
int admin = 7777; // 관리자 메뉴로 가는 비밀번호
//int extra = 7777;
int totalMoney = 0; // 총 수익
Scanner sc = new Scanner(System.in);
public void list() {
box[0] = "고가-골라";
price[0] = 1300;
box[1] = "스포트라이트";
price[1] = 1100;
box[2] = "비크닉";
price[2] = 500;
box[3] = "렝스비";
price[3] = 700;
box[4] = "파워레인저";
price[4] = 1300;
box[5] = "핫세븐";
price[5] = 1000;
box[6] = "솔의 눈코입";
price[6] = 900;
box[7] = "옥수수 콧털차";
price[7] = 1700;
box[8] = "금수저의 물";
price[8] = 50000;
box[9] = "랜덤뽑기";
price[9] = 3000;
}
public void admine() {
//user();
while(true) {
System.out.println("================================================");
System.out.println();
System.out.println("---------------관리자 페이지--------------------");
System.out.println();
System.out.println("1. 수익 확인 2. 종료 ");
System.out.println();
System.out.print("번호를 입력하세요 : ");
int num = sc.nextInt();
System.out.println();
System.out.println("================================================");
if(num == 1) {
System.out.println("현재까지의 수익은 " + totalMoney + "입니다.");
}
else if(num == 2) {
user();
return;
}
}
}
public void user () {
Boolean first = true;
int money = 0; //처음 자판기 금액 초기화
while(true) {
try {
Test t = new Test();
list();
System.out.println("==================================================================================");
for(int i=0; i<count; i++) {
if(i==3) {
System.out.println();
System.out.println();
}
if(i==6) {
System.out.println();
System.out.println();
}
if(i==9) {
System.out.println();
System.out.println();
}
System.out.print("[" + (i+1) + "] :" + box[i] + "(" + price[i] + "원) ");
}
if(first) {
System.out.println();
System.out.println("==================================================================================");
System.out.println("※주의사항 : 카드결제시 부가세 150% 추가!");
System.out.print("동전이나 지폐를 넣어주세요 : ");
money = sc.nextInt();
t.coin();
first = false;
}
////
if(money == 7777) {
admine();
return;
}
} catch (Exception e) {
System.out.println("이상한거 넣지말고 돈넣어라!!!");
sc.nextLine();
System.out.println("※주의사항 : 카드결제시 부가세 150% 추가!");
System.out.print("동전이나 지폐를 넣어주세요 : ");
//
money = sc.nextInt();
if(money == 7777) {
admine();
return;
}
}
System.out.println();
System.out.println("==================================================================================");
System.out.print("메뉴 입력 : ");
int num = sc.nextInt();
Test t = new Test();
try {
//t.drinkCan();
if(num > 10) {
System.out.println();
System.out.println("잘못누르셨습니다. 다시 버튼을 눌러서 구매하세요");
continue;
}
if(money < price[num-1]) {
System.out.println("잔액이 부족합니다....");
System.out.println("[[잔액 : " + money +"원]]");
continue;
}
t.drinkCan();
//돈이 충분한지
if(num == 10 && money >= price[num-1]) {
int rand = (int)(Math.random()*8) + 1;
System.out.println("(" + box[rand] + " ) 이/가 나왔습니다~");
money = money - price[num-1];
totalMoney += price[num-1];
}
else if(money >= price[num-1]) {
money = money - price[num-1];
totalMoney += price[num-1];
System.out.println("(" + box[num-1] + " ) 이/가 나왔습니다~");
}
} catch (Exception e) {
// TODO: handle exception
}
System.out.println();
System.out.println("[[잔액 : " + money +"원]]");
System.out.println();
System.out.println("========================================================================");
//돈이0원이 되면 종료 처음으로
if(money == 0 ) {
System.out.println();
System.out.println("호갱님~ 감사합니다! 또 이용해주세요~~~");
first = true;
continue;
}
//돈이 0원이 아니라면 진행
System.out.println("[1] 계속 구매하기 [2] 금액 추가하기 [3] 잔돈 반환하기 [4] 도망치기 [5] 관리자");
System.out.println();
System.out.print("번호를 입력하시오 : ");
int num1 = sc.nextInt();
System.out.println("======================================================================");
try {
//VendingVO v = new VendingVO();
if(num1 ==1) {
//System.out.println("======================================================================");
continue;
}
else if (num1 ==2) {
System.out.println();
System.out.print("동전이나 지폐를 투입해주세요(카드사절) : ");
int extra = sc.nextInt();
money += extra;//시작
System.out.println();
System.out.println("금액이 추가 되었습니다! [ 남은 잔액 : " + money + "원 ]");
System.out.println("======================================================================");
}
else if(num1 == 3) {
System.out.println();
System.out.println("[ 거스름돈 " + money + "원이 반환되었습니다. ]");
System.out.println();
//System.out.println("다음에 또 이용해주세요~~");
first = true;
}
else if(num1 == 4) {
System.out.println();
System.out.println("손님이 도망가버렸습니다!!!!" + money + "원 내꺼 ㅎ");
System.exit(0);
}
else if(num1 == 5) {
admine();
return;
}
else if(num1 != -1) {
System.out.println();
System.out.println("잘못누르셨습니다. 강제로 구매하세요 *^^*");
}
}
catch (Exception e) {
System.out.println("이상한거 넣지말고 돈넣어라!!!");
sc.nextLine();
System.out.println("※주의사항 : 카드결제시 부가세 150% 추가!");
System.out.print("동전이나 지폐를 넣어주세요(카드사절): ");
money = sc.nextInt();
}
}
}
}
실행 영상
프로젝트 후기
이번 프로젝트를 하며 시작하기도 전에 많은 걱정이 있었습니다. 과연 만들 수 있을까... 다른 사람들과 비교되면 어떨까..
하지만 저는 일단 멘땅에 헤딩을 해보는 경험을 추구해서 먼저 1페이지로 프로젝트를 개발하게 되었습니다. 저와 팀원은 실력이 부족해서 힘들었지만 최종적으로는 완료를 했습니다. 하지만 1페이지로 개발을 하게 되어 소스가 많이 복잡하고,
기능적으로 한계가 있었습니다. 그래서 다시 생각을 해보며 3 페이로 기능별로 구분하여 다시 개발하게 되었습니다. 시간이 부족하고 실력 또한 부족해서 100% 완벽한 프로젝트라고 말할 수는 없지만 최종적으로 완성을 하게 되었습니다.
이 팀 프로젝트를 진행하며 수많은 시행착오를 겪었고, 그 시행착오를 겪으며 난 왜 이 오류도 해결하지 못할까?라고 고민을 하였지만, 저는 포기하는 것을 매우 싫어합니다. 그래서 어떻게든 해보자는 생각을 갖고 로직을 그려보며 어떤 것이 문제일까 하며 찾아보며 해서 해결하였습니다.
결론은 프로젝트가 많은 도움이 되었습니다.
프로젝트 소스코드는 하단 깃허브 링크 참고
https://github.com/chaehyuenwoo/JAVA_STUDY/tree/master/test
반응형
'Language > Java' 카테고리의 다른 글
자바의 정석 | Ch 07 - 객체지향 프로그래밍2-2 (0) | 2022.02.06 |
---|---|
자바의 정석 | Ch 07 - 객체지향 프로그래밍2-1 (0) | 2022.02.02 |
[JAVA+국비교육] XML파일 읽어오기, 정규화 표현식 (0) | 2022.01.17 |
[JAVA+국비교육] Class 클래스, 정규화표현식, 채팅프로그램 만들기 (0) | 2022.01.14 |
[JAVA+국비교육] Event (이벤트) (0) | 2022.01.13 |
블로그의 정보
무작정 개발
무작정 개발