티스토리 뷰

카테고리 없음

교통과태료 프로그램(Java)

무한경쟁시대 2021. 11. 12. 23:05

[Main] 클래스

import jun.view.Nav;

public class Main {

	public static void main(String[] args) {
		Nav run = new Nav();
	}

}

 

[SpeedMeasuringDevice] 클래스

public class SpeedMeasuringDevice {
	private String car;
	private String carNum;
	private int speed;
	private String date;
	
	public SpeedMeasuringDevice() {}
	
	public SpeedMeasuringDevice(String car, String carNum, int speed, String date) {
		this.car = car;
		this.carNum = carNum;
		this.speed = speed;
		this.date = date;
	}
	
	public String getCar() {
		return car;
	}

	public String getCarNum() {
		return carNum;
	}

	public int getSpeed() {
		return speed;
	}

	public String getDate() {
		return date;
	}

	public void setCar(String car) {
		this.car = car;
	}

	public void setCarNum(String carNum) {
		this.carNum = carNum;
	}

	public void setSpeed(int speed) {
		this.speed = speed;
	}

	public void setDate(String date) {
		this.date = date;
	}

	public String inform() {
		return "차종류: " + car + " / 차번호: " + carNum + " / 속력: " + speed + " / 날짜: " + date;		
	}

	@Override
	public String toString() {
		return "SpeedMeasuringDevice [car=" + car + ", carNum=" + carNum + ", speed=" + speed + ", date=" + date + "]";
	}
	
	
	

	
	
	
}

 

[Nav] 클래스 - 콘솔에서 출력담당

import java.util.Scanner;

import com.example.controller.SmdController;
import com.example.domain.SpeedMeasuringDevice;
//TODO: 이부분은 view입니다.

public class Nav {
	private SmdController smdCon = new SmdController();
	private Scanner sc = new Scanner(System.in);
	private int overspeed;
	
	SpeedMeasuringDevice[] arrSpeed = smdCon.printSmd();
	
	public Nav() {
		int menuNum = 0;
		do {
			System.out.println("========== 교통위반 범칙금 확인하세요 ==========");
			System.out.println("(1): 속도위반 확인하기 ");
			System.out.println("(2): 범칙금/과태료 납입하기");
			System.out.println("(3): 과태료 납입 내역보기");//직접해보세용~~
			System.out.println("(9): 프로그램 종료");
			System.out.print("메뉴 번호: ");
			menuNum = sc.nextInt();
			
			switch(menuNum) {
			case 1:
				inputData(1);
				break;
			case 2:
				inputData(2);
				break;
			case 3:
				inputData(3);
				break;
			case 9:
				inputData(9);
				return;
			default: System.out.println("잘못된 번호입니다. 다시 입력하세요.");
			}
		}while(menuNum != 9);
	}
//size length length()
	private void inputData(int mainNum) {
		switch(mainNum) {
		case 1:
			System.out.print("차번호 입력: ");
			String carNumIn = sc.next();
			for(int i = 0; i<arrSpeed.length; i++) {
				if(arrSpeed[i].getCarNum().equals(carNumIn)) {
					if(arrSpeed[i].getSpeed() > SmdController.LimitedSpeed) {
						System.out.println("과속위반을 하셨습니다. " + arrSpeed[i].inform());
						overspeed = arrSpeed[i].getSpeed() - SmdController.LimitedSpeed;
						System.out.println(overspeed + "초과하였습니다.");
					}
					return;
				}else {
					System.out.println("일치하는 차번호가 존재하지 않습니다.");
					return;
				}
			}
			break;
		case 2:
			System.out.print("차번호 입력: ");
			carNumIn = sc.next();
			for(int i = 0; i<arrSpeed.length; i++) {
				if(arrSpeed[i].getCarNum().equals(carNumIn)) {
					if(arrSpeed[i].getSpeed() > SmdController.LimitedSpeed) {
						System.out.println("과속위반을 하셨습니다. " + arrSpeed[i].inform());
						this.overspeed = arrSpeed[i].getSpeed() - SmdController.LimitedSpeed;
						System.out.println(overspeed + "초과하였습니다.");
						if(overspeed > 0) {
							if(overspeed < 20) {
								System.out.println("납입하실 교통과태료는 30,000");
							}else if(overspeed>=20) {
								System.out.println("납입하실 교통과태료는 60,000");
							}
						}
					}
					return;
				}else {
					System.out.println("일치하는 차번호가 존재하지 않습니다.");
					return;
				}
			}
			break;
		case 9:
			System.out.println("프로그램을 종료합니다.");
			return;
		default: System.out.println("잘못입력하셨습니다.");
		}
		
	}
}

 

[SmdController] 클래스

import com.example.domain.SpeedMeasuringDevice;

//기능을 구현하는 곳
public class SmdController {
	
	public static final int LimitedSpeed = 100;//미리 메모리에 준비시키는?
	private SpeedMeasuringDevice [] smdList = new SpeedMeasuringDevice[999];
	
	public SmdController() {
		smdList[0] = new SpeedMeasuringDevice("현대차", "13러1920",150,"2021/03/22");
		smdList[1] = new SpeedMeasuringDevice("BMW", "02가1920",120,"2021/06/21");
		smdList[2] = new SpeedMeasuringDevice("Audi", "16다1920",150,"2021/03/29");
		smdList[3] = new SpeedMeasuringDevice("Benz", "13하1920",160,"2021/06/21");
		smdList[4] = new SpeedMeasuringDevice("Ford", "13러1920",150,"2021/03/23");
	}
	
	public SpeedMeasuringDevice[] printSmd() {
		return smdList; //배열 전체를 들고온다?
	}
}