- 질문 게시판입니다.
Date 17/10/19 15:33:52
Name   二ッキョウ니쿄
Subject   자바 질문입니다
package com.ex11market;
[메인클래스]
public class MarketMain {
static Goods[] g = { new Goods("g01", "레쓰비", 25, 900), new Goods("g02", "박카스", 25, 700),
new Goods("g03", "ABC초콜릿", 25, 1600), new Goods("g04", "크리넥스", 25, 2000),
new Goods("g05", "전자담배", 25, 90000) };
static Customer[] c = { new Customer("010-1111-1111", "서울이", "10-10"),
new Customer("010-1212-1212", "고려놈", "10-18"), new Customer("010-1313-1313", "연세놈", "01-11"),
new Customer("010-1414-1414", "서강이", "02-27"), new Customer("010-1515-1515", "세종이", "06-30") };

public static void main(String[] args) {
sell("g05", "1515", 3);
sell("g02", "1212", 5);
}

private static void sell(String gCode, String subTel, int su) {
int i, gIndex, cIndex;
for (i = 0; i < g.length; i++) {
if (g[i].getgCode().equals(gCode)) {
break;
}
}
if (i == g.length) {
System.out.println("상품코드가 잘못 되었습니다");
return;
}
gIndex = i; // 상품이 가르키는 곳의 인덱스
for (i = 0; i < c.length; i++) {
String tel = c[i].getTel();// 010-9999-9999
if (tel.substring(9).equals(subTel)) {
break;
}
}
if (i == c.length) {
System.out.println("전화번호가 잘못 되었습니다. 회원가입하시죠");
return;
}
cIndex = i; // 고객을 가르키는 곳의 인덱스
int tempSu = g[gIndex].getStock() - su;
if (tempSu < 0) {
System.out.println("재고량이 부족합니다. 죄송합니다.");
System.out.println("사장님!" + g[gIndex].getgName() + "얼른 주문하세요");
return;
}
g[gIndex].setStock(tempSu);
String gName = g[gIndex].getgName();
int price = g[gIndex].getPrice();
c[cIndex].buy(gName, price, su);
}

}

[상품클래스]
public class Goods {
private String gCode;
private String gName;
private int stock;
private int price;
public Goods() {
}
public Goods(String gCode, String gName, int stock, int price) {
this.gCode = gCode;
this.gName = gName;
this.stock = stock;
this.price = price;
}
public String getgCode() {
return gCode;
}
public void setgCode(String gCode) {
this.gCode = gCode;
}
public String getgName() {
return gName;
}
public void setgName(String gName) {
this.gName = gName;
}
public int getStock() {
return stock;
}
public void setStock(int stock) {
this.stock = stock;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}

}

[고객클래스]

import java.text.SimpleDateFormat;
import java.util.Date;

public class Customer {
private String tel;
private String cName;
private int money;
private int point;
private String birth;
private boolean vip;
public Customer() {
}
public Customer(String tel, String cName, String birth) {
this.tel = tel;
this.cName = cName;
this.birth = birth;
money = 0; point = 0;
}
public void changedTel(String cName,String tel) {
this.tel = tel;
}
public void buy(String gName, int price, int su) {
if(price<0) {
System.out.println("구매금액이 잘못되었습니다");
return;
}
money += price*su;
int thispoint = (int)(price*su*0.1);
point += thispoint;
if(money>=1000000 && vip == false) {
vip = true;
System.out.println("vip가 되셨습니다");
}
msgBirth();
System.out.println(gName+""+su+"개 *"+price+"원 = "+(price*su));
System.out.println("이번 누적 포인트는 "+thispoint+"원 입니다");
System.out.println(cName+"고객님 포인트 합계 : "+point+"원");
System.out.println("★ ★ ★ 감  사  합  니  다 ★ ★ ★");
}
public void msgBirth() {
Date now = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("MM-dd");
String today = sdf.format(now);
if(birth.equals(today)) {
System.out.println(cName+"님 생일 축하드립니다");
point+=3000;
System.out.println("생일 기념으로 3000포인트가 적립됩니다");
}
}
public String getTel() {
return tel;
}
public void setTel(String tel) {
this.tel = tel;
}
public String getcName() {
return cName;
}
public void setcName(String cName) {
this.cName = cName;
}
public int getMoney() {
return money;
}
public void setMoney(int money) {
this.money = money;
}
public int getPoint() {
return point;
}
public void setPoint(int point) {
this.point = point;
}
public String getBirth() {
return birth;
}
public void setBirth(String birth) {
this.birth = birth;
}
public boolean isVip() {
return vip;
}
public void setVip(boolean vip) {
this.vip = vip;
}
}
[콘솔창 결과물]

전자담배3개 *90000원 = 270000
이번 누적 포인트는 27000원 입니다
세종이고객님 포인트 합계 : 27000원
★ ★ ★ 감  사  합  니  다 ★ ★ ★
박카스5개 *700원 = 3500
이번 누적 포인트는 350원 입니다
고려놈고객님 포인트 합계 : 350원
★ ★ ★ 감  사  합  니  다 ★ ★ ★

=================================================================================

안녕하세요 자바 4주차 공부중인 코린이입니다.
슈퍼마켓에서 배열등을 이용해 콘솔창에서 물건을 사고 재고랑 가격, 포인트 등을 만드는 코드를 짰는데요
제가 배운 영역에서 어떻게 더 리팩토링해서 보기 좋고 더 나은 ? 상태로 만들어야 할지 더 알수가 없어서 질문드립니다.
혹시 어떤식으로 고치는게 좋을까요?
제반지식은 본문에 쓰인 코드랑 싱글턴, 스트레터지 패턴, 대표적인 api 몇가지랑 추상화,인터페이스, 상속, 접근제한자 및 기본적인 변수 연산자 제어문 배열정도입니다..

깔끔하게 올릴 방법을 몰라서 이렇게 올리는데 도움 주시면 감사드리겠습니다.



0


목록
번호 제목 이름 날짜 조회 추천
3671 IT/컴퓨터컴퓨터 질문 자주 드려서 죄송합니다 6 헬리제의우울 17/11/13 2880 0
3670 IT/컴퓨터윈도우 기본 밝기 설정 문의드립니다. David.J 17/11/12 3633 0
3661 IT/컴퓨터컴퓨터가 부팅이 되지 않습니다 12 넌이미차단됐다 17/11/10 2854 0
3649 IT/컴퓨터노트북의 기본 오디오가 왜 안되는 걸까요? 2 우분투 17/11/08 4509 0
3644 IT/컴퓨터업무용 외장 저장장치 질문입니다 8 [익명] 17/11/07 2108 0
3643 IT/컴퓨터노트북이 갑자기 로그인이 안 됩니다;; 3 David.J 17/11/07 3875 0
3641 IT/컴퓨터가성비좋은 태블릿 추천해주세요 7 jsclub 17/11/07 4045 0
3638 IT/컴퓨터음악 태깅해주는 어플/사이트 추천 부탁드립니다. 1 유리소년 17/11/06 4297 0
3637 IT/컴퓨터마우스를 추천해주세요 20 DoubleYellowDot 17/11/06 4585 0
3631 IT/컴퓨터[자바스크립트]linkapend 나 linkreplace 걸린 텍스트를 재활성 시킬수 있는 방법이 있을까요? 2 불타는밀밭 17/11/04 3071 0
3619 IT/컴퓨터디비디플레이어 연결방법 ㅠ 11 CONTAXS2 17/11/02 5678 0
3605 IT/컴퓨터웹/모바일 기획 문서 작성에 유용한 툴이 있을까요? 6 기쁨평안 17/11/01 3510 0
3594 IT/컴퓨터집에 컴퓨터 팬돌아가는 소리가 이상해서 열어서 먼지를 좀 제거했는데... 13 사나남편 17/10/30 3965 1
3592 IT/컴퓨터휴대폰 선택약정 질문 드립니다. 6 해시브라운 17/10/30 4587 0
3588 IT/컴퓨터동아리 컴퓨터에 윈도우 10을 까는데 도움이 필요합니다 ㅜㅜ 3 코리몬테아스 17/10/29 4380 0
3572 IT/컴퓨터써멀그리스와 써멀패드 구매할 수 있는 매장, 서울 4 Cibo & Killy 17/10/27 9254 0
3565 IT/컴퓨터휴대폰 세팅 질문합니다. 6 메타장판 17/10/25 4041 0
3561 IT/컴퓨터액셀 이자계산 질문입니다 4 헬리제의우울 17/10/25 5274 0
3560 IT/컴퓨터대용량 파일을 어떤 분의 이메일 주소로 전송하려고 하는데 어떻게 하나요? 19 벤젠 C6H6 17/10/25 2754 0
3534 IT/컴퓨터자바 질문입니다 3 二ッキョウ니쿄 17/10/19 2981 0
3532 IT/컴퓨터지나치게 느긋한 노트북, RAM을 추가하면 해결될까요? 9 Homo_Skeptic 17/10/19 3776 0
3529 IT/컴퓨터SSD드라이브에서 파일 빼는법 아시는분! 부탁드립니다 ㅠ 4 팅핑랩썬브클 17/10/18 4081 0
3524 IT/컴퓨터텔넷과 FTP에서 보는 시간이 달라요 8 카라숏 17/10/16 3988 0
3516 IT/컴퓨터컴퓨터 실행 후 일정 시간 뒤 다운 증상 8 17/10/15 17497 0
3514 IT/컴퓨터핸드폰 호갱이 되고 싶지 않습니다 11 우롱버블티 17/10/14 3918 0
목록

+ : 최근 2시간내에 달린 댓글
+ : 최근 4시간내에 달린 댓글

댓글