has a , is a 를 이용하여 만든 급여관리프로그램이다
데이터관리 클래스
- Admin Class
import java.util.ArrayList;
import java.util.Scanner;
class Admin extends User{
private String name_; //관리자 아이디
private int password_; //관리자 비밀번호
private String id;
ArrayList<User> arr = new ArrayList<>();
Scanner sc = new Scanner(System.in);
public Admin() {
}
public void search() {
//관리자가 user 배열에 접속하여 이름을 찾아서 결과를 출력하는 메소드
System.out.print("찾고자하는 사원 이름을 입력하세요 : ");
String yourName = sc.next();
for (int i = 0 ; i < arr.size(); i++) {//arr배열의 크기보다 작으면 반복
if (getName().equals(yourName)) {//검색한 이름과 getName()의 이름이 일치하면
//검색한 사원의 정보를 출력
System.out.println("고용조건 : "+getWorkType());
System.out.println("일한시간(주) : "+getWeeklyTime());
System.out.println("직급 : "+getPosition());
System.out.println("이름 : "+getName());
System.out.println("기본급 : "+getSalary());
System.out.println("수당 : "+getBonus());
System.out.println("세율 : "+arr.get(i).getTaxRate());
System.out.println("실수령액 : "+arr.get(i).getMonthSalary());
System.out.println("휴대전화 : "+arr.get(i).getPhone());
System.out.println("주소 : "+getAdress());
System.out.println("은행 : "+getBank());
break;
}
}
}
public void input() {
//관리자가 user 배열에 접속하여 수정, 입력을 하는 메소드
while(true) {
User us =new User();
System.out.println("고용 조건 :");
workType = sc.next();
us.setWorkType(workType);
if(workType.equals("R")||workType.equals("r")) {
System.out.print("일한시간(주) : ");
weeklyTime = sc.nextInt();
us.setWeeklyTime(weeklyTime);
System.out.print("직급 : ");
position = sc.next();
us.setPosition(position);
System.out.print("이름 : ");
name = sc.next();
us.setName(name);
System.out.print("주소 정보 : ");
adress = sc.next();
us.setAdress(adress);
System.out.print("은행 : ");
bank = sc.next();
us.setBank(bank);
System.out.print("기본급 : ");
salary = sc.nextInt();
us.setSalary(salary);
System.out.print("수당 : ");
bonus = sc.nextInt();
us.setBonus(bonus);
System.out.print("전화 번호 : ");
phone = sc.next();
us.setPhone(phone);
us.getRegMonthSalary() ;
us.getTaxRate();
us.getRegMonthSalary();
arr.add(us);
break;
}
else if(workType.equals("N")||workType.equals("n")) {
System.out.print("일한시간(주) : ");
weeklyTime = sc.nextInt();
us.setWeeklyTime(weeklyTime);
System.out.print("직급 : ");
position = sc.next();
us.setPosition(position);
System.out.print("이름 : ");
name = sc.next();
us.setName(name);
System.out.print("주소 정보 : ");
adress = sc.next();
us.setAdress(adress);
System.out.print("은행 : ");
bank = sc.next();
us.setBank(bank);
System.out.print("기본급 : ");
salary = sc.nextInt();
us.setSalary(salary);
System.out.print("수당 : ");
bonus = sc.nextInt();
us.setBonus(bonus);
System.out.print("전화 번호 : ");
phone = sc.next();
us.setPhone(phone);
us.getNonMonthSalary() ;
us.getTaxRate();
us.getNonMonthSalary();
arr.add(us);
break;
}
else {
System.out.println("잘못입력하였습니다.");
}
}
}
public void delete() {
System.out.println("삭제할 이름 적어주세요.");
String name = sc.next();
for(int i=0; i<arr.size(); i++) {
if(arr.get(i).getName().equals(name)) {
arr.remove(i);
System.out.println("삭제 되었습니다.");
}
}
}
public void modify() {
System.out.println("수정하고 싶은 이름을 입력하시오.");
String serchName = sc.next();
boolean flag = true;
for (int i=0; i<arr.size(); i++) {
if(arr.get(i).getName().equals(serchName)) {
flag = false;
System.out.println("고용 조건 변경 입력 : ");
String changeW = sc.next();
arr.get(i).setWorkType(changeW);
System.out.println("일한시간(주) 변경 입력 : ");
String changeWT = sc.next();
arr.get(i).setWorkType(changeWT);
System.out.println("직급 변경 입력 : ");
String changeP = sc.next();
arr.get(i).setPosition(changeP);
System.out.println("기본급 변경 입력 : ");
int changeS = sc.nextInt();
arr.get(i).setSalary(changeS);
System.out.println("수당 변경 입력 : ");
int changeB = sc.nextInt();
arr.get(i).setBonus(changeB);
System.out.println("휴대전화 변경 입력 : ");
String changePhone = sc.next();
arr.get(i).setPhone(changePhone);
System.out.println("주소 변경 입력 : ");
String changeA = sc.next();
arr.get(i).setAdress(changeA);
System.out.println("은행 변경 입력 : ");
String changeBank = sc.next();
arr.get(i).setBank(changeBank);
System.out.println("수정이 정상적으로 되었습니다.");
break;
}
if(flag) {
System.out.println("해당 하는 사람이 없습니다.");
}
}
}
public void output() {
System.out.println("==================모든 노동자 목록===================");
System.out.println("|고용형태| 일한시간(주) | 직급 | 이름 | 기본급 | 수당 | 세율 | 실수령액 | 휴대전화 | 주소 | 은행 |");
System.out.println("=================================================");
for(int i =0; i<arr.size();i++) {
System.out.println("| "+arr.get(i).getWorkType()+" | "+arr.get(i).getWeeklyTime()+" | "+arr.get(i).getPosition()+" | "+arr.get(i).getName()+" | "+arr.get(i).getSalary()
+" | "+arr.get(i).getBonus()+" | "+arr.get(i).getTaxRate()+" | "+arr.get(i).getMonthSalary()+" | "+arr.get(i).getPhone()+" | "+arr.get(i).getAdress()+" | "+arr.get(i).getBank()+" | ");
}
}
//-------------------------------------
public void searchRn(String id) {
this.id = id;
System.out.print("해당하는 id로 검색하겠습니다. ");
for (int i = 0 ; i < arr.size(); i++) {//arr배열의 크기보다 작으면 반복
if (arr.get(i).getName().equals(id)) {//검색한 이름과 getName()의 이름이 일치하면
//검색한 사원의 정보를 출력
System.out.println("고용조건 : "+arr.get(i).getWorkType());
System.out.println("일한시간(주) : "+arr.get(i).getWeeklyTime());
System.out.println("직급 : "+arr.get(i).getPosition());
System.out.println("이름 : "+arr.get(i).getName());
System.out.println("기본급 : "+arr.get(i).getSalary());
System.out.println("수당 : "+arr.get(i).getBonus());
System.out.println("세율 : "+arr.get(i).getTaxRate());
System.out.println("실수령액 : "+arr.get(i).getMonthSalary());
System.out.println("휴대전화 : "+arr.get(i).getPhone());
System.out.println("주소 : "+getAdress());
System.out.println("은행 : "+getBank());
break;
}
else {
System.out.println("등록되지 않은 사람입니다.");
}
}
}
public void modifyRn(String id) {
this.id = id;
System.out.println("해당하는 ID로 접속하겠습니다.");
boolean flag = true;
for (int i=0; i<arr.size(); i++) {
if(arr.get(i).getName().equals(id)) {
flag = false;
System.out.println("휴대전화 변경 입력 : ");
String changePhone = sc.next();
arr.get(i).setPhone(changePhone);
System.out.println("주소 변경 입력 : ");
String changeA = sc.next();
arr.get(i).setAdress(changeA);
System.out.println("은행 변경 입력 : ");
String changeBank = sc.next();
arr.get(i).setBank(changeBank);
System.out.println("수정이 정상적으로 되었습니다.");
break;
}
if(flag) {
System.out.println("해당 하는 사람이 없습니다.");
}
}
}
}
Main Class
import java.util.Scanner;
public class Main {
public static void main(String []args) {
Scanner sc= new Scanner(System.in);
User us=new User();
Admin ad = new Admin();
String str="Admin"; //ID와 Password가 str과 동일하면 관리자모드 로그인 허용
while(true) {//name과 worktype을 받아 관리자면 관리자 모드로 가게끔 ㄱㄱ
System.out.println("ID: ");
String id = sc.next();
System.out.print("Password: ");
String password = sc.next();
if(id.equals(str)&&password.equals(str)) {
System.out.println("1.입력 2.수정 3.출력 4.삭제 5.종료");
int num_2 = sc.nextInt();
switch(num_2) {
case 1:
ad.input();
break;
case 2:
ad.modify();
break;
case 3:
ad.output();
break;
case 4:
ad.delete();
break;
case 5:
System.exit(-1);
break;
default:
System.out.println("잘못 입력하셨습니다.");
break;
}
}
else {
System.out.println("고용조건(R/N):");
String jobtype=sc.next(); // 메인문에서 자기가 정규직인지 비정규직인지 넣는 변수
if(jobtype.equals("R")||jobtype.equals("r")||jobtype.equals("N")||jobtype.equals("n")) {
System.out.println("1.수정 2.검색 3.종료");
int num=sc.nextInt();
if(num==1) {
ad.modifyRn(id);
}
else if(num==2) {
ad.searchRn(id);
}
else if(num==3) {
System.exit(-1);
}
else {
System.out.println("잘못입력하였습니다");
}
}
else {
System.out.print("잘못입력하였습니다. 다시입력해주세요");
}
}
do {
System.out.print("계속하시겠습니까?(Y/N)");
char choice=sc.next().charAt(0);
if(choice=='y'||choice=='Y') {
break;
}
else if(choice=='N'||choice=='n') {
System.exit(-1);
}
else {
System.out.print("잘못입력하였습니다 다시입력하세요");
}
}while(true);
}
}
}
데이터클래스
-User Class
import java.util.ArrayList;
import java.util.Scanner;
class User {
String name;//이름
int age;
String position;//직급
String workType;//정규직 비정규직을 구분해주는 변수
int weeklyTime;//1주에 일한 시간
int salary;//기본급:관리자가 설정
int bonus;//보너스:관리자가 설정
int monthSalary;//실수령액
double taxRate;//세금
String adress;//주소
String phone;//전화번호
String bank;//계좌번호
Main ma = new Main();
ArrayList<User> arr = new ArrayList<>(); //arr 이라는 배열을 만들었음 바로 쓰면 됌
Scanner sc = new Scanner(System.in);
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getPosition() {
return position;
}
public void setPosition(String position) {
this.position = position;
}
public String getWorkType() {
return workType;
}
public void setWorkType(String workType) {
this.workType = workType;
}
public int getWeeklyTime() {
return weeklyTime;
}
public void setWeeklyTime(int weeklyTime) {
this.weeklyTime=weeklyTime;
}
public int getSalary() {
return salary;
}
public void setSalary(int salary) {
this.salary = salary;
}
public int getBonus() {
return bonus;
}
public void setBonus(int bonus) {
this.bonus = bonus;
}
public int getMonthSalary() {
return monthSalary;
}
public void setMonthSalary(int monthSalary) {
this.monthSalary = monthSalary;
}
public void setTaxRate(double taxRate) {
this.taxRate = taxRate;
}
public String getAdress() {
return adress;
}
public void setAdress(String adress) {
this.adress = adress;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getBank() {
return bank;
}
public void setBank(String bank) {
this.bank = bank;
}
public ArrayList<User> getArr() {
return arr;
}
public void setArr(ArrayList<User> arr) {
this.arr = arr;
}
public int getNonMonthSalary() {//월급을 계산하는 메소드
if(weeklyTime>=48) {
monthSalary=(int)(salary*(1.2));
return monthSalary;
}
else {
return monthSalary;
}
}
public int getRegMonthSalary() {//월급을 계산하는 메소드
monthSalary = (int)((salary+bonus)*(1.0-taxRate));
return monthSalary;
}
public double getTaxRate() {// 급여에 따라 세율을 정하는 메소드
if(salary <= 2000000) {
taxRate = 0.1;
return taxRate;
}
else if(salary>2000000 && salary<=4000000) {
taxRate = 0.2;
return taxRate;
}
else {
taxRate = 0.3;
return taxRate;
}
}
}
'Java' 카테고리의 다른 글
정렬 알고리즘 : 단순 선택 정렬 (0) | 2022.07.18 |
---|---|
정렬 알고리즘 : 버블정렬 (0) | 2022.07.18 |
BinarySearch (0) | 2022.07.14 |
팩토리얼 (0) | 2022.07.14 |
숫자를 입력 받아 교차하여 가장 작은 수 출력하기 2 (0) | 2022.07.12 |