빅데이터교육과정/JAVA
급여 관리 프로그램
Listeria
2021. 2. 12. 23:24
//근로자들의 공통된 사항들
public class Worker {
private int []id = new int[100];
private String []name = new String[100];
private int []pw = new int[100];
private int []salary = new int[100];
public int getId(int i) {
return id[i];
}
public void setId(int i,int id) {
this.id[i] = id;
}
public String getName(int i) {
return name[i];
}
public void setName(int i,String name) {
this.name[i] = name;
}
public int getPw(int i) {
return pw[i];
}
public void setPw(int i,int pw) {
this.pw[i] = pw;
}
public int getSalary(int i) {
return salary[i];
}
public void setSalary(int i,int salary) {
this.salary[i] = salary;
}
public Worker() {
}
}
//Worker 클래스를 상속하는 정규직 클래스
public class Permanent extends Worker {
private String []txt = {"과장", "팀장","대리", "사원", "비정규직"};
private String []grade = new String[100];
private String team;
private int bonus[] = new int[100];
public String getTxt(int i) {
return txt[i-1];
}
public void setGrade(int i, String grade) {
this.grade[i] = grade;
}
public String getGrade(int i) {
return grade[i];
}
public String getTeam() {
return team;
}
public void setTeam(String team) {
this.team = team;
}
public int getBonus(int i) {
return bonus[i];
}
public void setBonus(int i,int bonus) {
this.bonus[i] = bonus;
}
}
//Worker를 상속하는 계약직 클래스
public class Contract extends Worker {
private int margin;
public Contract() {
}
public int getMargin() {
return margin;
}
public void setMargin(int margin) {
this.margin = margin;
}
}
//계약직 클래스를 상속하는 시간제 클래스
public class TimeWorker extends Contract {
private String time[] = new String[100];
private String[] txt ={"sun","mon","tue","wed","thur","fri","sat"};
private String[] day = new String[100];
public String getTime(int i) {
return time[i];
}
public void setTime(int i,String time) {
this.time[i] = time;
}
public void setDay(int i, int j) {
this.day[i] = txt[j-1];
}
public String getDay(int i) {
return day[i];
}
}
//계약직 클래스를 상속하는 기간제 클래스
public class TermWorker extends Contract {
private String term;
public String getTerm() {
return term;
}
public void setTerm(String term) {
this.term = term;
}
}
//앞의 클래스들을 이용하여 실제적인 동작 기능들을 담고 있는 클래스
import java.util.Scanner;
public class Function {
//함수에 필요한 것들을 선언하고 constructor들을 초기화한다.
private Permanent pm = new Permanent();
private TimeWorker time = new TimeWorker();
private TermWorker term;
private int select;
public Function() {
Permanent pm = new Permanent();
TimeWorker time = new TimeWorker();
TermWorker term = new TermWorker();
}
Scanner sc1 = new Scanner(System.in);
public int getId(int i) {
return pm.getId(i);
}
public int getPw(int i) {
return pm.getPw(i);
}
public String getGrade(int i) {
return pm.getGrade(i);
}
public int ask(int numId) { //로그인
int numChk, numPw = 0;
int i=0;
int chk =0;
int answer = 0;
do {
for(i=0; i<100 ;i++) { //사원번호가 존재하는지 조회
numChk = getId(i);
if(numId == numChk) { //사원번호가 존재하면 그 번호를 저장
chk =i;
break;
}
}
if(chk >0) { //사원번호가 존재할때, 암호를 묻는 단계
System.out.println("암호를 입력하세요");
do {
numPw = sc1.nextInt();
if(numPw != getPw(chk)) {
System.out.println("틀린 비밀번호 입니다. 다시 입력하세요");
System.out.println("멈추시러면 0을 입력하세요");
}
else if(numPw==0) { break;} //0을 눌렀을때 멈춤
}while(numPw !=getPw(chk));
}else {
System.out.println("틀린 사번입니다");
chk++;
} //존재하지 않는 사번을 입력하였을때
}while(chk==0);
if( numPw == getPw(chk)) { answer ++;}
return answer; //비밀번호가 일치하면 1이 일치하지 않으면 0이 반환된다.
}
public void add(int i) {
int num;
System.out.println("추가할 사원 번호를 입력하세요");
num = sc1.nextInt();
pm.setId(num,num);
System.out.println("이름을 입력해 주세요");
pm.setName(num,sc1.next());
System.out.println("직급을 입력해 주세요.");
System.out.println("1.과장, 2.팀장, 3.대리, 4.사원, 5. 비정규직");
pm.setGrade(num,pm.getTxt((sc1.nextInt())));
System.out.println("비밀번호를 입력하세요");
pm.setPw(num, sc1.nextInt());
} //관리자 클래스가 입력된 값을 수정할 수 있음
public void correct() { //기본 값들 외에 급여, 근무시간 등을 관리자들이 수정할 수 있음.
int numId,select;
System.out.println("수정할 사람의 사번을 입력해주세요");
numId = sc1.nextInt();
if (pm.getGrade(numId)=="비정규직") { //비정규직 관련항목
System.out.println("수정할 사안을 입력해주세요");
System.out.println("1. 이름, 2. 직급, 3. 급여, 5. 근무날짜, 6. 근무시간");
select = sc1.nextInt();
switch(select) {
case 1:
System.out.println("수정할 이름을 입력해 주세요");
pm.setName(numId,sc1.next());
break;
case 2:
System.out.println("수정할 직급을 입력해 주세요.");
System.out.println("1.과장, 2.팀장, 3.대리, 4.사원, 5. 비정규직");
pm.setGrade(numId,pm.getTxt((sc1.nextInt())));
break;
case 3:
System.out.println("급여를 입력해 주세요.");
pm.setSalary(numId,sc1.nextInt());
break;
case 4:
System.out.println("근무날짜를 선택해주세요");
System.out.println("1. sun, 2.mon, 3.tue, 4. wed, 5.thur, 6.fri, 7.sat");
time.setDay(numId,sc1.nextInt());
case 5:
System.out.println("근무시간을 입력해주세요");
time.setTime(numId, sc1.next());
break;
}
}
else { //정규직 관련항목
System.out.println("수정할 사안을 입력해주세요");
System.out.println("1. 이름, 2. 직급, 3. 급여, 4. 보너스");
select = sc1.nextInt();
switch(select) {
case 1:
System.out.println("수정할 이름을 입력해 주세요");
pm.setName(numId,sc1.next());
break;
case 2:
System.out.println("수정할 직급을 입력해 주세요.");
System.out.println("1.과장, 2.팀장, 3.대리, 4.사원, 5. 비정규직");
pm.setGrade(numId,pm.getTxt((sc1.nextInt())));
break;
case 3:
System.out.println("급여를 입력해 주세요.");
pm.setSalary(numId,sc1.nextInt());
case 4:
System.out.println("보너스를 입력해 주세요.");
pm.setBonus(numId,sc1.nextInt());
break;
}
}
}
public void del() { //삭제를 할때.
int numId;
System.out.println("삭제할 사람의 사번을 입력해주세요");
numId = sc1.nextInt();
pm.setName(numId, null);
pm.setGrade(numId, null);
pm.setId(numId, 0);
}
public void searchIndiv(int i) { //개인의 급여 내역을조회
if(pm.getGrade(i)=="비정규직") {
System.out.print("이름 : "+ pm.getName(i));
System.out.print("\t"+"직급 : "+ pm.getGrade(i));
System.out.print("\t기본급 : "+pm.getSalary(i));
System.out.print("\t근무날짜 : "+time.getDay(i));
System.out.println("\t근무시간 : "+time.getTime(i));
}else {
System.out.print("이름 : "+ pm.getName(i));
System.out.print("\t직급 : "+ pm.getGrade(i));
System.out.print("\t기본급 : "+pm.getSalary(i));
System.out.println("\t보너스 : "+pm.getBonus(i));
}
}
public void searchEvery() {
for (int i = 0; i<100;i++) {
if(pm.getName(i) != null) { //비어있는 사번은 출력하지 않음.
if(pm.getGrade(i)=="비정규직") {
System.out.print("이름 : "+ pm.getName(i));
System.out.print("\t"+"직급 : "+ pm.getGrade(i));
System.out.print("\t기본급 : "+pm.getSalary(i));
System.out.print("\t근무날짜 : "+time.getDay(i));
System.out.println("\t근무시간 : "+time.getTime(i));
System.out.println("----------------------------------------");
}else {
System.out.print("이름 : "+ pm.getName(i));
System.out.print("\t직급 : "+ pm.getGrade(i));
System.out.print("\t기본급 : "+pm.getSalary(i));
System.out.println("\t보너스 : "+pm.getBonus(i));
System.out.println("----------------------------------------");
}
}
}
}
public void manage(String grade,int i) {
if (grade.equals("과장")||grade.equals("팀장")){
System.out.println("작업을 선택해 주세요");
System.out.println("1. 추가, 2. 수정, 3. 삭제, 4. 개별 조회, 5. 전체 조회");
select = sc1.nextInt();
switch (select) {
case 1 : { add(i); }break;
case 2 : { correct(); }break;
case 3 : { del(); }break;
case 4 : {
System.out.println("검색하려는 사람의 사번을 입력하세요");
i = sc1.nextInt();
searchIndiv(i); }break;
case 5 : { searchEvery(); }break;
default : System.out.println("wrong");
}
}else {
searchIndiv(i); //관리자가 아닌 사람이 로그인 하였을때는 본인의 급여 내역이 조회됨.
}
}
}
//manage 클래스를 이용하는 main문이 존재하는 class
import java.util.Scanner;
public class Management {
public static void main(String[] args) {
int i,select =0;
int numId = 0;
Scanner sc = new Scanner(System.in);
Function ftn = new Function();
//최초 실행, 관리자 임명을 위한 로그인
ftn.add(0);
do {
///로그인///
System.out.println("사번을 입력하세요.");
numId = sc.nextInt();
i = ftn.ask(numId);
//로그인 성공시 manage 프로그램을 불러온다.
if(i == 1) {
ftn.manage(ftn.getGrade(numId),numId);
}
else {
System.out.println("로그인에 실패했습니다.");
}
System.out.println("멈추시려면 0을, 다시 하시려면 아무키를 입력하세요.");
select = sc.nextInt();
///판단///
}while(select!=0);
}
}