배열로만 사용한 Is ~ A / has ~ A 관계
- 클래스 구성
메인(뷰), 기능
데이터 클래스 : 근로자, 정규직, 비정규직, 기간제, 시간제
EmployeeMain 클래스 (메인 : 뷰)
import Data.FixedTerm;
import Data.PartTime;
import Data.Permanent;
public class EmployeeMain {
public static void main(String[] args) {
// emp : 사원번호empNo, 비밀번호pw, 이름name, 급여sal, 구분번호cf
// per : 부서dept, 인센티브incentive, 직급position
// Irre : 추가수당extraSal
// PartT : 일한 시간workTime, 일하는요일workDate
// Fixed : 일하는기간workDate
Permanent[] per = new Permanent[100];
FixedTerm[] ft = new FixedTerm[50];
PartTime[] pt = new PartTime[50];
EmployeeManage em = new EmployeeManage();
int ck = 1;
int ck1;
do {
ck1 = em.adminPrint(); // 리턴값 : 관리자 1 일반 2
if(ck1 == 1) {
while(ck==1) { // 관리자는 종료하기전까지 여러번 실행
em.menuPrint();
ck = em.selectMenu(per, ft, pt);
}
}
else if(ck1 == 2) { // 일반은 한번만 실행
em.empSelect(per, ft, pt);
ck = 1;
}
}while(ck1 != 3);
System.out.println("종료되었습니다. ");
}
}
EmployeeManage 클래스 (기능)
import java.util.Scanner;
import Data.FixedTerm;
import Data.PartTime;
import Data.Permanent;
// 기능(관리)
public class EmployeeManage implements EmManage {
private int index1;
private int index2; // ft 기간제
private int index3; // pt 시간제
private int cnt1;
private int cnt2;
private int cnt3;
public EmployeeManage() {
index1 = 0;
index2 = 0;
index3 = 0;
cnt1 = 0;
cnt2 = 0;
cnt3 = 0;
}
@Override
public int adminPrint() {
Scanner sc = new Scanner(System.in);
System.out.println("모드를 선택하세요. ");
System.out.println("1. 관리자 2. 일반 3. 종료");
System.out.print("입력 : ");
int p = sc.nextInt();
switch(p) {
case 1:
System.out.print("비밀번호 입력 : ");
p = sc.nextInt();
if(p == 1234) { // 관리자 (팀장 과장)
return 1;
}
else { // 일반
System.out.println("비밀번호가 틀렸습니다. 사원조회 화면으로 전환됩니다.");
return 2;
}
case 2: return 2; // 일반
case 3: return 3; // end
default:
System.out.println("다시 입력하세요.");
return 0;
}
}
@Override
public void menuPrint() {
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("6. 사원 삭제");
System.out.println("7. 종료");
}
@Override
public int selectMenu(Permanent[] per, FixedTerm[] ft, PartTime[] pt) {
System.out.println();
System.out.print("원하는 메뉴의 번호를 입력하세요 : ");
Scanner sc = new Scanner(System.in);
int check = sc.nextInt();
// sc.close();
switch(check) {
case 1: // 사원 전체 조회
allSelect(per, ft, pt);
break;
case 2: // 사원 조회
empSelect(per, ft, pt);
break;
case 3: // 부서 조회 (미개발)
deptSelect(per);
break;
case 4: // 사원 추가
empCreate(per, ft, pt);
break;
case 5: // 사원 수정
empUpdate(per, ft, pt);
break;
case 6: // 사원 삭제
empDelete(per, ft, pt);
break;
case 7: // 종료
System.out.println("종료되었습니다.");
return 0;
default:
System.out.print("올바른 번호를 입력하세요.");
}
return 1;
}
@Override
public void allSelect(Permanent[] per, FixedTerm[] ft, PartTime[] pt) {
// 정규직
int count1 = 0;
int count2 = 0;
int count3 = 0;
boolean s = false;
System.out.println("----------- 정규직 -----------");
for(int i=0; i<index1; i++) { // 사원전체출력
if(per[i].getName() != null) {
count1 += 1;
System.out.println(count1 + ". 사번 : " + per[i].getCf() + per[i].getEmpNo());
System.out.println(count1 + ". 부서 : " + per[i].getDept());
System.out.println(count1 + ". 직급 : " + per[i].getPosition());
System.out.println(count1 + ". 이름 : " + per[i].getName());
System.out.println(count1 + ". 성과급 : " + per[i].getIncentive());
System.out.println(count1 + ". 급여 : " + per[i].getSal());
if(per[i].getPosition().equals("과장")) {
System.out.println(count1 + ". 과장 총급여 : " + (int)((per[i].getSal() + per[i].getIncentive()+(per[i].getSal()*0.5))));
}
else if(per[i].getPosition().equals("팀장")) {
System.out.println(count1 + ". 팀장 총급여 : " + (int)((per[i].getSal() + per[i].getIncentive()+(per[i].getSal()*0.4))));
}
else if(per[i].getPosition().equals("대리")) {
System.out.println(count1 + ". 대리 총급여 : " + (int)((per[i].getSal() + per[i].getIncentive()+(per[i].getSal()*0.3))));
}
else if(per[i].getPosition().equals("사원")) {
System.out.println(count1 + ". 사원 총급여 : " + (int)((per[i].getSal() + per[i].getIncentive()+(per[i].getSal()*0.2))));
}
System.out.println();
// 총급여
s = true;
}
}
// 시간제
System.out.println("----------- 시간제 -----------");
for(int i=0; i<index3; i++) {
if(pt[i].getName() != null) {
count2 += 1;
System.out.println(count2 + ". 사번 : " + pt[i].getCf() + pt[i].getEmpNo());
System.out.println(count2 + ". 이름 : " + pt[i].getName());
System.out.println(count2 + ". 시간 : " + pt[i].getWorkTime());
System.out.println(count2 + ". 추가수당 : " + (int)(pt[i].getSal()*pt[i].getExtraSal()));
System.out.println(count2 + ". 기본급여 : " + pt[i].getSal()*pt[i].getWorkTime());
System.out.println(count2 + ". 총급여 : " + (int)((pt[i].getSal() * pt[i].getWorkTime()) + ((pt[i].getSal()*pt[i].getExtraSal()))));
System.out.println();
s = true;
}
}
// 기간제
System.out.println("----------- 기간제 -----------");
for(int i=0; i<index2; i++) {
if(ft[i].getName() != null) {
count3 += 1;
System.out.println(count3 + ". 사번 : " + ft[i].getCf() + ft[i].getEmpNo());
System.out.println(count3 + ". 이름 : " + ft[i].getName());
System.out.println(count3 + ". 기간 : " + ft[i].getWorkTerm());
System.out.println(count3 + ". 추가수당 : " + (int)(ft[i].getSal()*ft[i].getExtraSal()));
System.out.println(count3 + ". 기본급여 : " + ft[i].getSal()*ft[i].getWorkTerm());
System.out.println(count3 + ". 총급여 : " + (int)((ft[i].getWorkTerm()*ft[i].getSal()) + (ft[i].getSal()*ft[i].getExtraSal())));
System.out.println();
s = true;
}
}
if(s == false) {
System.out.println("사원이 존재하지 않습니다. ");
}
System.out.println();
}
@Override
public void empSelect(Permanent[] per, FixedTerm[] ft, PartTime[] pt) { // 사원 조회
// 1이 들어오면 관리자
// 2가 들어오면 사용자
char c = 0;
Scanner sc = new Scanner(System.in);
System.out.println("--------------------------");
do {
System.out.println("A 정규직 B 기간제 C 시간제 4. 종료"); // 정규 1, 비정규 2
System.out.print(" 입력 : ");
char che = sc.next().charAt(0);
switch(che) {
case 'A': // 정규직 1(cf)
System.out.print("찾으실 사원번호를 입력하세요. : ");
int a = sc.nextInt();
int a1 = 0;
for(int i=0;i<index1;i++) {
if(per[i].getEmpNo() == a) {
System.out.println("사번 : " + per[i].getCf() + per[i].getEmpNo());
System.out.println("부서 : " + per[i].getDept());
System.out.println("직급 : " + per[i].getPosition());
System.out.println("이름 : " + per[i].getName());
System.out.println("성과급 : " + per[i].getIncentive());
System.out.println("급여 : " + per[i].getSal());
if(per[i].getPosition().equals("과장")) {
System.out.println("과장 총급여 : " + (int)((per[i].getSal() + per[i].getIncentive()+(per[i].getSal()*0.5))));
}
else if(per[i].getPosition().equals("팀장")) {
System.out.println("팀장 총급여 : " + (int)((per[i].getSal() + per[i].getIncentive()+(per[i].getSal()*0.4))));
}
else if(per[i].getPosition().equals("대리")) {
System.out.println("대리 총급여 : " + (int)((per[i].getSal() + per[i].getIncentive()+(per[i].getSal()*0.3))));
}
else if(per[i].getPosition().equals("사원")) {
System.out.println("사원 총급여 : " + (int)((per[i].getSal() + per[i].getIncentive()+(per[i].getSal()*0.2))));
}
System.out.println();
a1 = 1;
break; // 포문을 풀로 돌리지않게 해보기
}
}
if(a1 == 0) {
System.out.println("사원 정보가 존재하지 않습니다.");
}
break;
case 'B': // 기간제
System.out.print("찾으실 사원번호를 입력하세요. : ");
int b = sc.nextInt();
int b1 = 0;
for(int i=0;i<index2;i++) {
if(ft[i].getEmpNo() == b) {
System.out.println("사번 : " + ft[i].getCf() + ft[i].getEmpNo());
System.out.println("이름 : " + ft[i].getName());
System.out.println("기간 : " + ft[i].getWorkTerm());
System.out.println("추가수당 : " + (int)(ft[i].getSal()*ft[i].getExtraSal()));
System.out.println("기본급여 : " + ft[i].getSal()*ft[i].getWorkTerm());
System.out.println("총급여 : " + (int)((ft[i].getWorkTerm()*ft[i].getSal()) + (ft[i].getSal()*ft[i].getExtraSal())));
System.out.println();
b1 = 1;
break;
}
}
if(b1 == 0) {
System.out.println("사원 정보가 존재하지 않습니다.");
}
break;
case 'C': // 시간제
System.out.print("찾으실 사원번호를 입력하세요. : ");
int d = sc.nextInt();
int d1 = 0;
for(int i=0;i<index3;i++) {
if(pt[i].getEmpNo() == d) {
System.out.println("사번 : " + pt[i].getCf() + pt[i].getEmpNo());
System.out.println("이름 : " + pt[i].getName());
System.out.println("시간 : " + pt[i].getWorkTime());
System.out.println("추가수당 : " + (int)(pt[i].getSal()*pt[i].getExtraSal()));
System.out.println("기본급여 : " + pt[i].getSal()*pt[i].getWorkTime());
System.out.println("총급여 : " + (int)((pt[i].getSal() * pt[i].getWorkTime()) + ((pt[i].getSal()*pt[i].getExtraSal()))));
System.out.println();
d1 = 1;
break;
}
}
if(d1 == 0) {
System.out.println("사원 정보가 존재하지 않습니다.");
}
case '4': // 종료
c = che;
break;
default:
System.out.print("올바른 번호를 입력하세요.");
}
}while(c != '4');
}
public void deptSelect(Permanent[] per) { // 부서 조회 (정규직만)
// 위와 동일
Scanner sc = new Scanner(System.in);
String deptest;
if(index1 == 0) {
System.out.println("사원이 존재하지 않습니다.");
}
else {
do {
System.out.print("검색할 부서를 입력하세요 (종료n): ");
deptest = sc.next();
System.out.println("-------" + deptest + "-------");
for(int i=0;i<index1;i++) {
if(per[i].getDept().equals(deptest)) {
System.out.println((i+1) + ". 사번 : " + per[i].getCf() + per[i].getEmpNo());
System.out.println((i+1) + ". 이름 : " + per[i].getName());
System.out.println((i+1) + ". 직급 : " + per[i].getPosition());
System.out.println((i+1) + ". 성과 : " + per[i].getIncentive());
System.out.println((i+1) + ". 급여 : " + per[i].getSal());
System.out.println();
}
}
}while(!deptest.equals("n"));
}
}
@Override
public void empCreate(Permanent[] per, FixedTerm[] ft, PartTime[] pt) { // 사원 추가
Scanner sc = new Scanner(System.in);
int c;
// while문 추가
do {
System.out.println();
System.out.println("1. 정규직 2. 기간제 3. 시간제 4. 종료 ");
System.out.print("번호를 입력하세요. : ");
c = sc.nextInt();
switch(c) {
case 1: // index1
if(index1 == per.length) { // 인덱스 비교
System.out.println("사원을 추가할 수 없습니다. ");
}
else {
System.out.print("추가할 사원의 수를 입력하세요. : ");
this.cnt1 = sc.nextInt();
System.out.println();
if(index1+cnt1 > per.length) {
System.out.println("최대 사원수를 넘어갑니다. \n다시 입력하세요.");
}
else {
for(int i=0;i<cnt1;i++) {
per[index1] = new Permanent();
// 사번 자동부여
System.out.println("사원 정보를 입력하세요. 정규직은 A이며 사원번호가 자동 부여됩니다. ");
per[index1].setCf("A"); // 구분
per[index1].setEmpNo(index1 + 1); // 사원번호 : 1번부터 자동부여 되도록
// 입력정보
System.out.print((i+1) + "번 사원 이름 : ");
per[index1].setName(sc.next()); //이름
System.out.print((i+1) + "번 사원 부서 : ");
per[index1].setDept(sc.next()); // 부서
System.out.print((i+1) + "번 사원 직급 : ");
per[index1].setPosition(sc.next()); // 직급
System.out.print((i+1) + "번 사원 성과급 : ");
per[index1].setIncentive(sc.nextInt()); // 인센티브
System.out.print((i+1) + "번 사원 급여 : ");
per[index1].setSal(sc.nextInt()); // 급여
System.out.println();
index1++;
}
}
}
break;
case 2: // 기간제 index2
if(index2 == ft.length) { // 인덱스 비교
System.out.println("사원을 추가할 수 없습니다. ");
}
else {
System.out.print("추가할 사원의 수를 입력하세요. : ");
this.cnt2 = sc.nextInt();
System.out.println();
if(index2+cnt2 > ft.length) {
System.out.println("최대 사원수를 넘어갑니다. \n다시 입력하세요.");
}
else {
for(int i=0;i<cnt2;i++) {
ft[index2] = new FixedTerm();
// 사번 자동부여
System.out.println("사원 정보를 입력하세요. 비정규[기간제]는 B이며 사원번호가 자동 부여됩니다. ");
ft[index2].setCf("B"); // 구분
ft[index2].setEmpNo(index2 + 1); // 사원번호 : 1번부터 자동부여 되도록
// 입력정보
System.out.print((i+1) + "번 비정규 이름 : ");
ft[index2].setName(sc.next()); //이름
System.out.print((i+1) + "번 비정규 추가수당(최대 100%) : ");
ft[index2].setExtraSal(sc.nextInt());
System.out.print((i+1) + "번 비정규 일한기간 : ");
ft[index2].setWorkTerm(sc.nextInt());
System.out.print((i+1) + "번 비정규 일당 : ");
ft[index2].setSal(sc.nextInt()); // 급여
System.out.println();
index2++;
}
}
}
break;
case 3: // 시간제 index3
if(index3 == pt.length) { // 인덱스 비교
System.out.println("사원을 추가할 수 없습니다. ");
}
else {
System.out.print("추가할 사원의 수를 입력하세요. : ");
this.cnt3 = sc.nextInt();
System.out.println();
if(index3+cnt3 > pt.length) {
System.out.print("최대 사원수를 넘어갑니다. \n다시 입력하세요.");
}
else {
for(int i=0;i<cnt3;i++) {
pt[index3] = new PartTime();
// 사번 자동부여
System.out.println("사원 정보를 입력하세요. 비정규[시간제]는 C이며 사원번호가 자동 부여됩니다. ");
pt[index3].setCf("C"); // 구분
pt[index3].setEmpNo(index3 + 1); // 사원번호 : 1번부터 자동부여 되도록
// 입력정보
System.out.print((i+1) + "번 비정규 이름 : ");
pt[index3].setName(sc.next()); //이름
System.out.print((i+1) + "번 비정규 추가수당(최대 100%) : ");
pt[index3].setExtraSal(sc.nextInt());
System.out.print((i+1) + "번 비정규 일한시간 : ");
pt[index3].setWorkTime(sc.nextInt());
System.out.print((i+1) + "번 비정규 시급 : ");
pt[index3].setSal(sc.nextInt()); // 급여
System.out.println();
index3++;
}
}
}
break;
case 4:
break;
default:
System.out.println("다시 입력하세요. ");
break;
}
}while(c != 4);
}
@Override
public void empUpdate(Permanent[] per, FixedTerm[] ft, PartTime[] pt) { // 사원 수정
Scanner sc = new Scanner(System.in);
int up;
System.out.println();
do {
System.out.println("수정할 사원의 종류 번호를 선택하세요. ");
System.out.println("1. 정규직 2. 기간제 3. 시간제 4. 종료");
System.out.print("입력 : ");
up = sc.nextInt();
switch(up) {
case 1: // 이름 부서 직급 인센 급여
// 정규직
if(index1 == 0) { // 인덱스 비교
System.out.println("수정할 사원이 없습니다. ");
}
else {
System.out.print("수정할 사원번호를 입력하세요 : ");
up = sc.nextInt();
for(int i=0;i<index1;i++) {
if(per[i].getEmpNo() == up) { // 해당되는 사원번호 체크 조건문
do {
System.out.println("수정하실 필드명을 선택하세요. ");
System.out.print("1. 이름 2. 부서 3. 직급 4. 성과급 5. 급여 (종료 : 6) : ");
up = sc.nextInt();
System.out.println();
switch (up) {
case 1:
System.out.print("수정할 이름 입력 : ");
per[i].setName(sc.next());
System.out.println();
break;
case 2:
System.out.print("수정할 부서 입력 : ");
per[i].setDept(sc.next());
System.out.println();
break;
case 3:
System.out.print("수정할 직급 입력 : ");
per[i].setPosition(sc.next());
System.out.println();
break;
case 4:
System.out.print("수정할 성과급 입력 : ");
per[i].setIncentive(sc.nextInt());
System.out.println();
break;
case 5:
System.out.print("수정할 급여 입력 : ");
per[i].setSal(sc.nextInt());
System.out.println();
break;
case 6:
break;
default:
System.out.println("올바른 필드명을 입력하세요. ");
break;
}
}while(up != 6);
}
break;
}
}
break;
case 2: // 이름 추가수당 일한기간 급여
// 기간제
if(index2 == 0) { // 인덱스 비교
System.out.println("수정할 사원이 없습니다. ");
}
else {
System.out.print("수정할 사원번호를 입력하세요 : ");
up = sc.nextInt();
for(int i=0;i<index2;i++) {
if(ft[i].getEmpNo() == up) { // 해당되는 사원번호 체크 조건문
do {
System.out.println("수정하실 필드명을 선택하세요. ");
System.out.print("1. 이름 2. 추가수당 3. 일한기간 4. 급여 (종료 : 5) : ");
up = sc.nextInt();
System.out.println();
switch (up) {
case 1:
System.out.print("수정할 이름 입력 : ");
ft[i].setName(sc.next());
System.out.println();
break;
case 2:
System.out.print("수정할 추가수당 입력 (최대 100%): ");
ft[i].setExtraSal(sc.nextInt());
System.out.println();
break;
case 3:
System.out.print("수정할 기간 입력 : ");
ft[i].setWorkTerm(sc.nextInt());
System.out.println();
break;
case 4:
System.out.print("수정할 일당 입력 : ");
ft[i].setSal(sc.nextInt());
System.out.println();
break;
case 5:
break;
default:
System.out.println("올바른 필드명을 입력하세요. ");
break;
}
}while(up != 5);
}
break;
}
}
break;
case 3: // 이름 추가수당 일한기간 일한시간 급여
// 시간제
if(index3 == 0) { // 인덱스 비교
System.out.println("수정할 사원이 없습니다. ");
}
else {
System.out.print("수정할 사원번호를 입력하세요 : ");
up = sc.nextInt();
for(int i=0;i<index3;i++) {
if(pt[i].getEmpNo() == up) { // 해당되는 사원번호 체크 조건문
do {
System.out.println("수정하실 필드명을 선택하세요. ");
System.out.print("1. 이름 2. 추가수당 3. 일한시간 4. 급여 (종료 : 5) : ");
up = sc.nextInt();
System.out.println();
switch (up) {
case 1:
System.out.print("수정할 이름 입력 : ");
pt[i].setName(sc.next());
System.out.println();
break;
case 2:
System.out.print("수정할 추가수당 입력 (최대 100%) : ");
pt[i].setExtraSal(sc.nextInt());
System.out.println();
break;
case 3:
System.out.print("수정할 시간 입력 : ");
pt[i].setWorkTime(sc.nextInt());
System.out.println();
break;
case 4:
System.out.print("수정할 시급 입력 : ");
pt[i].setSal(sc.nextInt());
System.out.println();
break;
case 5:
break;
default:
System.out.println("올바른 필드명을 입력하세요. ");
break;
}
}while(up != 5);
}
break;
}
}
break;
case 4:
break;
default:
System.out.println("올바른 번호를 입력하세요. ");
break;
}
}while(up != 4);
}
@Override
public void empDelete(Permanent[] per, FixedTerm[] ft, PartTime[] pt) {
int num;
Scanner sc = new Scanner(System.in);
Permanent tmp1 = new Permanent();
PartTime tmp2 = new PartTime();
FixedTerm tmp3 = new FixedTerm();
do {
int cnt = 0; // 시작점 체크
int snum = 0; // null 값 체크
int k = 0;
System.out.println("삭제할 사원의 종류를 선택하세요. ");
System.out.println("1. 정규직 2. 시간제 3. 기간제 4. 종료");
System.out.print("입력 : ");
num = sc.nextInt();
switch (num) {
//// Try catch 문 작성
// try {
// }catch(Exception e) {
// }
case 1: // 정규직
if(index1 == 0) { // 인덱스 비교
System.out.println("삭제할 인원이 없습니다. ");
}
else {
try {
do {
System.out.print("삭제할 사원의 번호를 입력하세요 (종료:0) : ");
num = sc.nextInt();
for(int i=0;i<index1;i++) {
if(per[i].getEmpNo() == num) {
per[i] = new Permanent();
break;
}
}
}while(num != 0);
}catch(Exception e){}
// 배열정리
for(int i=0;i<=index1-1;i++) {
if(per[i].getName() == null) {
snum++;
}
}
while(k<snum) {
for(int i=0;i<=index1-1;i++) {
if(per[i].getName() == null) {
cnt = i;
break;
}
}
for(int i=cnt;i<=index1-1;i++) {
tmp1 = per[i+1];
per[i+1] = per[i];
per[i] = tmp1;
}
k++;
}
index1 -= snum;
// 사원번호 재부여
for(int i=0;i<index1;i++) {
per[i].setEmpNo(i + 1);
}
}
break;
case 2: // 시간제
if(index3 == 0) { // 인덱스 비교
System.out.println("삭제할 인원이 없습니다. ");
}
else {
try {
do {
System.out.print("삭제할 사원의 번호를 입력하세요 (종료:0) : ");
num = sc.nextInt();
for(int i=0;i<index3;i++) {
if(pt[i].getEmpNo() == num) {
pt[i] = new PartTime();
break;
}
}
}while(num != 0);}catch(Exception e) {}
// 배열정리
for(int i=0;i<=index3-1;i++) {
if(pt[i].getName() == null) {
snum++;
}
}
while(k<snum) {
for(int i=0;i<=index3-1;i++) {
if(pt[i].getName() == null) {
cnt = i;
break;
}
}
for(int i=cnt;i<=index3-1;i++) {
tmp2 = pt[i+1];
pt[i+1] = pt[i];
pt[i] = tmp2;
}
k++;
}
index3 -= snum;
// 사원번호 재부여
for(int i=0;i<index3;i++) {
pt[i].setEmpNo(i + 1);
}
}
break;
case 3: // 기간제 index2; // ft 기간제
if(index2 == 0) { // 인덱스 비교
System.out.println("삭제할 인원이 없습니다. ");
}
else {
try {
do {
System.out.print("삭제할 사원의 번호를 입력하세요 (종료:0) : ");
num = sc.nextInt();
for(int i=0;i<index2;i++) {
if(ft[i].getEmpNo() == num) {
ft[i] = new FixedTerm();
break;
}
}
}while(num != 0);}catch(Exception e) {}
// 배열정리
for(int i=0;i<=index2-1;i++) {
if(ft[i].getName() == null) {
snum++;
}
}
while(k<snum) {
for(int i=0;i<=index2-1;i++) {
if(ft[i].getName() == null) {
cnt = i;
break;
}
}
for(int i=cnt;i<=index2-1;i++) {
tmp3 = ft[i+1];
ft[i+1] = ft[i];
ft[i] = tmp3;
}
k++;
}
index2 -= snum;
// 사원번호 재부여
for(int i=0;i<index2;i++) {
ft[i].setEmpNo(i + 1);
}
}
break;
case 4: // 종료
break;
default:
System.out.println("올바른 번호를 입력하세요. ");
break;
}
}while(num != 4);
}
}
데이터 클래스(5개)
Employee 클래스 (근로자)
package Data;
// 근로자
public class Employee {
private int empNo; // 사원번호
private String name; // 이름
private int sal; // 급여
private String cf; // classification 구분번호 (정규직 A, 기간제 B, 시간제 C)
public Employee(){
empNo = 0;
name = null;
sal = 0;
cf = null;
}
public int getEmpNo() {
return empNo;
}
public void setEmpNo(int empNo) {
this.empNo = empNo;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getSal() {
return sal;
}
public void setSal(int sal) {
this.sal = sal;
}
public String getCf() {
return cf;
}
public void setCf(String cf) {
this.cf = cf;
}
}
Permanent 클래스(정규직)
package Data;
// 정규직
public class Permanent extends Employee {
private String dept; // 부서
private int incentive; // 인센티브
private String position; // 직급
// 부서dept, 인센티브incentive, 직급position
public Permanent() {
dept = null;
incentive = 0;
position = null;
}
public String getDept() {
return dept;
}
public void setDept(String dept) {
this.dept = dept;
}
public int getIncentive() {
return (int) (getSal()*0.2);
}
public void setIncentive(int incentive) {
this.incentive = incentive;
}
public String getPosition() {
return position;
}
public void setPosition(String position) {
this.position = position;
}
@Override
public String toString() {
return "Permanent [dept=" + dept + ", incentive=" + incentive + ", position=" + position + "]";
}
}
Irregular 클래스 (비정규직)
package Data;
// 비정규직
public class Irregular extends Employee {
private float extraSal; // 추가수당
// 추가수당extraSal
public Irregular() {
extraSal = 0f;
}
public float getExtraSal() {
return (float) (extraSal/100);
}
public void setExtraSal(int extraSal) {
this.extraSal = extraSal;
}
}
FixedTerm 클래스 (기간제)
package Data;
// 기간제
public class FixedTerm extends Irregular {
private int workTerm; // 일하는 기간
// 일하는기간workDate
public FixedTerm() {
workTerm = 0;
}
public int getWorkTerm() {
return workTerm;
}
public void setWorkTerm(int workterm) {
this.workTerm = workterm;
}
}
PartTime 클래스 (시간제)
package Data;
import java.util.Date;
//시간제
public class PartTime extends Irregular {
private int workTime; // 일한 시간
// 일한 시간workTime, 일하는요일workDate
public PartTime() {
workTime = 0;
}
public int getWorkTime() {
return workTime;
}
public void setWorkTime(int workTime) {
this.workTime = workTime;
}
}
반응형
'자바과정 > 과제물' 카테고리의 다른 글
(Java) 급여 관리 프로그램 [인터페이스 생성] (0) | 2021.02.15 |
---|---|
(Java) 스택&큐 [예외처리] (0) | 2021.02.15 |
(Java) 성적처리프로그램(3차원 배열사용) (0) | 2021.02.02 |
(Java) stack과 heap (0) | 2021.01.30 |
(Java) 별찍기 예제 (0) | 2021.01.30 |
댓글