Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- PointCut
- 유효성검사
- 생성자주입
- .xml
- Model
- 어노테이션
- application.properties
- frontController
- @
- 비즈니스레이어
- 의존주입
- gradle
- MVC
- Java
- after-throwing
- springmvc
- 서비스레이어
- @ResponseBody
- @RequestParam
- 스프링
- SpringBoot
- @Valid
- produces
- jointpoint
- 바인딩변수
- c:if
- springjdbc
- spring
- AOP
- @RequestMapping
Archives
- Today
- Total
메모장
[자판기 프로그램] 본문
728x90
반응형
[자판기 프로그램 제작]
"프로그램"
: 특정 데이터에 대해 CRUD 기능을 제공하는 것
C 데이터 생성
ex) 회원가입 사진업로드 학생추가 메뉴추가
R 데이터 읽어오기(==출력)
ex) 로그인 피드1개보기,피드목록보기,친구스토리보기 학생목록출력,학생1명의정보출력 메뉴출력
U 데이터 변경
ex) 마이페이지 글변경 학생점수변경 메뉴구매(재고줄어듦),메뉴의상태변경(가격변경)
D 데이터 삭제
ex) 회원탈퇴 글삭제
--------------------------------------------------------------------------------
자판기 프로그램에서 어떤 데이터를 다룰지?
▶ class 상품
상품명
재고
가격
상품번호 ★ ex) 주민등록번호,등록번호,학번,아이디,...
★ 데이터는 항상 유일해야한다!
=> 중복 xxxxx
=> 우연히 이름이 같은 데이터가 존재할수도있음!!!!!
=> 이 데이터가 정말 그 데이터가 맞아? "식별이 가능할수있도록" PK(기본키)
▶ 메서드
상품판매()
재고가 줄어들어야함
총 가격을 안내해야함
가격변경()
가격을 변경해야함
▶ main()
상품배열[]
상품배열에 상품추가하기
상품배열에 저장된 상품들을 출력하기
Q1) 상품판매(),가격변경() -> 메서드 : 인스턴스변수에 변화가 발생할땐 메서드로 선언
VS
상품'배열'에 상품추가하기, 상품'배열'에 저장된 상품들을 출력하기
-> main() 배열에 관련 된 일들은 main에 선언
package class01;
import java.util.Scanner;
class Product{
// 1. 멤버변수 - 순서 첫번째
int num; // PK
String name;
int cnt;
int price;
// 3. 생성자 - 순서 세번째
Product(int num,String name,int price){
this.num=num;
this.name=name;
this.cnt=5; // 재고의 디폴트값은 5
this.price=price;
System.out.println(this.name+" 생성완료!");
}
// 2. 메서드 - 순서 두번째
// 1) 기능파악
// : 사용자가 3개구매할건데, 구매가능한가요?
// : 가능하다면 재고 마이너스
// : 총 가격안내
// : 불가능하다면 구매실패
// 2) 메서드 시그니처 파악
// : INPUT -> int 구매할상품의개수
// : OUTPUT -> int 총가격, boolean
// => int 총가격(구매실패시 0원)
// 3) 기능구현
int sell(int cnt) {
int sum=0;
if(this.cnt>=cnt) {
this.cnt-=cnt;
sum=cnt*this.price;
System.out.println("총 금액은 "+sum+"원 입니다.");
}
else {
System.out.println(this.name+" 재고가 부족합니다.");
}
return sum;
}
// 1) 관리자가 ㅁㅁㅁ원으로 가격을 변경
// 변경되었습니다!
// 2) INPUT -> int 가격
// OUTPUT -> void
// 3)
void setPrice(int price) { // 멤버변수(인스턴스변수)의 값을 새로 정의하는 것 == setter
this.price=price;
System.out.println(this.name+" 가격변경완료!");
}
void printInfo() {
System.out.println(this.name+" ["+this.cnt+"] "+this.price+"원");
}
}
public class Test01 {
public static void main(String[] args) {
// ※ main()에서 객체의 멤버변수에 직접적으로 접근 xxxxx
Product[] data=new Product[3];
// 현재 상품배열 data[]에 저장된 상품의 개수는 0개!
// data[]의 크기 == 3
int index=0; // 상품배열에 저장되어있는 상품의 개수
Scanner sc=new Scanner(System.in);
while(true) {
System.out.println("=== 자판기 ===");
System.out.println("1. 메뉴추가");
System.out.println("2. 메뉴출력");
System.out.println("3. 메뉴구매");
System.out.println("4. 가격변경");
System.out.println("5. 프로그램종료");
System.out.println("===============");
System.out.print("입력) ");
int action=sc.nextInt();
if(action==5) {
System.out.println("프로그램종료...");
break;
}
else if(action==1) { // C
// 상품 객체를 생성해서,
System.out.println("생성할 상품의 이름입력");
System.out.print("입력) ");
String name=sc.next();
System.out.println("생성할 상품의 가격입력");
System.out.print("입력) ");
int price=sc.nextInt();
// 상품 객체 배열에 저장해줘~
data[index++]=new Product(index,name,price);
}
else if(action==2) { // R
// 상품배열에 저장되어있는 상품만큼 화면에 출력해줘~
for(int i=0;i<index;i++) { // 상품배열에 저장되어있는 상품의 개수
///// System.out.println((i+1)+". "+data[i].name+" ["+data[i].cnt+"] "+data[i].price+"원");
///// 안정성(보안)의 문제로, 이렇게 코딩 xxxxx
System.out.print((i+1)+". ");
data[i].printInfo();
}
}
else if(action==3) { // U
// 사용자가 구매할상품번호입력
// 해당상품구매를 진행
System.out.println("구매할 상품의 번호입력");
System.out.print("입력) ");
int num=sc.nextInt();
System.out.println("구매할 상품의 개수입력");
System.out.print("입력) ");
int cnt=sc.nextInt();
data[num-1].sell(cnt);
}
else if(action==4) { // U
System.out.println("가격변경할 상품의 번호입력");
System.out.print("입력) ");
int num=sc.nextInt();
System.out.println("상품의 가격입력");
System.out.print("입력) ");
int price=sc.nextInt();
data[num-1].setPrice(price);
}
else { // 유효성 검사(사용자의 입력값 검사)
System.out.println("잘못된 번호입니다! 확인후 다시이용해주세요!");
}
}
}
728x90
반응형
'JAVA > [실습문제]' 카테고리의 다른 글
| [실습문제] 상속 (예제 만들기) (0) | 2024.04.08 |
|---|---|
| [실습 문제] 상속 (포켓몬) (0) | 2024.04.08 |
| 포켓몬 문제 ( class 만들기 ) (0) | 2024.04.08 |
| [과제] Class (0) | 2024.04.08 |
| [실습] 자동차 class를 코딩하기 (0) | 2024.04.08 |