이 프로젝트는 학생과 직장인에 대한 정보를 관리하기 위한 기본 인사 관리 시스템을 자바로 구현한 것입니다. 콘솔 기반의 인터랙티브한 애플리케이션으로, 사용자는 학생과 직장인의 정보를 등록, 수정, 삭제 및 조회할 수 있습니다.
이 시스템은 네 개의 주요 클래스로 구성되어 있습니다: MainEntry, Person, Student, 그리고 Worker.
MainEntry 클래스는 애플리케이션의 시작점을 정의합니다. 사용자가 학생 또는 직장인 관리 시스템을 선택할 수 있도록 메뉴를 제공하며, 각각의 시스템으로 진입하여 관련 작업을 수행할 수 있습니다.
public class MainEntry {
public static void main(String[] args) {
Student st = new Student(null, null, null, null);
Worker er = new Worker(null, null, null, null);
Scanner sc = new Scanner(System.in);
System.out.println("인사관리 시스템 입니다. 1.학생 2.직장");
while (true) {
int choice = sc.nextInt();
switch (choice) {
case 1:
System.out.println("학생 인사관리 시스템입니다.");
st.all();
break;
case 2:
System.out.println("직장인 인사관리 시스템입니다.");
er.all();
break;
}
}
}
}
Person 클래스는 학생과 직장인 공통의 속성을 정의한 부모 클래스입니다. 이름, 주소, 전화번호, 번호 등의 속성과 이에 대한 getter와 setter 메서드를 포함하고 있습니다.
public class Person {
String name, address, tel, no;
int age;
public Person(String name, String address, String tel, String no) {
this.name = name;
this.address = address;
this.tel = tel;
this.no = no;
}
@Override
public String toString() {
return "Person [name=" + name + ", address=" + address + ", tel=" + tel + ", no=" + no + ", age=" + age + "]";
}
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public String getAddress() { return address; }
public void setAddress(String address) { this.address = address; }
public String getTel() { return tel; }
public void setTel(String tel) { this.tel = tel; }
public String getNo() { return no; }
public void setNo(String no) { this.no = no; }
public int getAge() { return age; }
public void setAge(int age) { this.age = age; }
}
Student 클래스는 Person 클래스를 상속하며, 학생에 특화된 속성과 메서드를 추가로 정의합니다. 학생의 성적을 관리하고 성적에 따라 학점을 부여하는 기능을 포함하고 있습니다.
public class Student extends Person {
private int en, cn, kr, total, average;
private char grade;
HashMap<String, Student> st = new HashMap<>();
Scanner sc = new Scanner(System.in);
public Student(String no, String name, String address, String tel) {
super(name, address, tel, no);
}
// 학생 등록
public void enroll() {
sc.nextLine();
System.out.println("학생의 학번을 입력하세요.");
no = sc.nextLine();
System.out.println("학생의 이름을 입력하세요.");
name = sc.nextLine();
System.out.println("학생의 주소를 입력하세요.");
address = sc.nextLine();
System.out.println("학생의 번호를 입력하세요.");
tel = sc.nextLine();
Student student = new Student(no, name, address, tel);
st.put(no, student);
System.out.println("학생을 추가 했습니다. 학생 학번:" + student.no + " 학생 이름:" + student.name + " 학생 전화번호:" + student.tel);
}
// 성적 등록
public void grade() {
sc.nextLine();
System.out.println("학생의 학번을 입력하세요.");
no = sc.nextLine();
if (st.containsKey(no)) {
Student student = st.get(no);
System.out.println("고전문학 점수를 입력하세요.");
kr = sc.nextInt();
System.out.println("이산수학 점수를 입력하세요.");
cn = sc.nextInt();
System.out.println("영어문학 점수를 입력하세요.");
en = sc.nextInt();
student.setCn(cn);
student.setEn(en);
student.setKr(kr);
average = (cn + en + kr) / 3;
student.setAverage(average);
student.setGrade(rank(student.getAverage()));
System.out.println("성적이 등록되었습니다. 평균 점수:" + student.getAverage() + " 학점은 " + student.getGrade());
} else {
System.out.println("등록된 학생정보가 없습니다.");
}
}
// 성적 등급
public char rank(int average) {
if (average >= 90) return 'A';
else if (average >= 80) return 'B';
else if (average >= 70) return 'C';
else if (average >= 60) return 'D';
else return 'F';
}
// 학생 정보 출력
public void print() {
if (st.isEmpty()) {
System.out.println("등록된 학생 정보가 없습니다.");
} else {
for (Student student : st.values()) {
System.out.println("학생 학번:" + student.no + " 학생 이름:" + student.name + " 학생 전화번호:" + student.tel + " 학생 학점은:" + student.getGrade());
}
}
}
// 학생 관련 모든 기능 실행
public void all() {
while (true) {
System.out.println("1.학생정보 등록 2.학생정보 삭제 3.학생정보 수정 4.성적 등록 5.학생정보 출력 6.프로그램 종료");
int num = sc.nextInt();
switch (num) {
case 1:
System.out.println("학생정보 등록");
enroll();
break;
case 2:
System.out.println("학생정보 삭제");
del();
break;
case 3:
System.out.println("학생정보 수정");
set();
break;
case 4:
System.out.println("성적 등록");
grade();
break;
case 5:
System.out.println("학생 정보 출력");
print();
break;
case 6:
System.out.println("시스템 종료");
System.exit(0);
break;
default:
System.out.println("올바른 숫자를 입력하세요");
}
}
}
public void del() {
sc.nextLine();
System.out.println("삭제할 학생의 학번을 입력하세요.");
no = sc.nextLine();
if (st.containsKey(no)) {
st.remove(no);
System.out.println("학생정보가 삭제되었습니다.");
} else {
System.out.println("등록된 학생정보가 없습니다.");
}
}
public void set() {
sc.nextLine();
System.out.println("변경할 학생의 학번을 입력하세요.");
String no = sc.nextLine();
if (st.containsKey(no)) {
Student student = st.get(no);
System.out.println("수정 1.학생 이름 2.학생 번호 3.점수 변경");
int num = sc.nextInt();
sc.nextLine();
if (num == 1) {
System.out.println("변경할 학생의 이름을 입력하세요.");
String newName = sc.nextLine();
student.setName(newName);
System.out.println("학생의 이름이 변경되었습니다.");
} else if (num == 2) {
System.out.println("변경할 학생의 전화번호를 입력하세요.");
String newtel = sc.nextLine();
student.setTel(newtel);
System.out.println("학생의 전화번호가 변경되었습니다.");
} else if (num == 3) {
System.out.println("변경할 과목을 고르세요. 1.고전 문학 2.이산 수학 3.영어 문학");
int nm = sc.nextInt();
sc.nextLine();
switch (nm) {
case 1:
System.out.println("변경할 점수를 입력하세요.");
int newKr = sc.nextInt();
student.setKr(newKr);
break;
case 2:
System.out.println("변경할 점수를 입력하세요.");
int newCn = sc.nextInt();
student.setCn(newCn);
break;
case 3:
System.out.println("변경할 점수를 입력하세요.");
int newEn = sc.nextInt();
student.setEn(newEn);
break;
default:
System.out.println("올바른 과목 번호를 입력하세요.");
return;
}
updateRank(student);
}
} else {
System.out.println("등록된 학생 정보가 없습니다.");
}
}
private void updateRank(Student student) {
int averageScore = (student.getKr() + student.getCn() + student.getEn()) / 3;
student.setAverage(averageScore);
student.setGrade(rank(averageScore));
}
}
Worker 클래스는 Person 클래스를 상속하며, 직장인에 특화된 속성과 메서드를 추가로 정의합니다. 직장인의 주급을 계산하고 관리하는 기능을 포함하고 있습니다
public class Worker extends Person {
private double hour, weekHour, weekWage;
HashMap<String, Worker> wr = new HashMap<>();
Scanner sc = new Scanner(System.in);
public Worker(String name, String address, String tel, String no) {
super(name, address, tel, no);
}
public double getHour() { return hour; }
public void setHour(double hour) { this.hour = hour; }
public double getWeekHour() { return weekHour; }
public void setWeekHour(double weekHour) { this.weekHour = weekHour; }
public double getWeekWage() { return weekWage; }
public void setWeekWage(double weekWage) { this.weekWage = weekWage; }
// 직장인 등록
public void enroll() {
sc.nextLine();
System.out.println("사원번호를 입력하세요.");
no = sc.nextLine();
System.out.println("사원 이름을 입력하세요.");
name = sc.nextLine();
System.out.println("사원의 주소를 입력하세요.");
address = sc.nextLine();
System.out.println("사원의 번호를 입력하세요.");
tel = sc.nextLine();
Worker worker = new Worker(no, name, address, tel);
wr.put(no, worker);
System.out.println("사원을 추가 했습니다. 사원 번호:" + worker.no + " 사원 이름:" + worker.name + " 사원 전화번호:" + worker.tel);
}
// 직장인 정보 삭제
public void del() {
sc.nextLine();
System.out.println("삭제할 사원의 사원번호를 입력하세요.");
no = sc.nextLine();
if (wr.containsKey(no)) {
wr.remove(no);
System.out.println("사원정보가 삭제되었습니다.");
} else {
System.out.println("등록된 사원정보가 없습니다.");
}
}
// 직장인 정보 수정
public void set() {
sc.nextLine();
System.out.println("변경할 사원번호를 입력하세요.");
String no = sc.nextLine();
if (wr.containsKey(no)) {
Worker worker = wr.get(no);
System.out.println("수정 1.사원 이름 2.사원 번호");
int num = sc.nextInt();
sc.nextLine();
if (num == 1) {
System.out.println("변경할 사원의 이름을 입력하세요.");
String newName = sc.nextLine();
worker.setName(newName);
System.out.println("사원의 이름이 변경되었습니다.");
} else if (num == 2) {
System.out.println("변경할 사원의 전화번호를 입력하세요.");
String newtel = sc.nextLine();
worker.setTel(newtel);
System.out.println("사원의 전화번호가 변경되었습니다.");
}
} else {
System.out.println("등록된 사원 정보가 없습니다.");
}
}
// 직장인 정보 출력
public void print() {
if (wr.isEmpty()) {
System.out.println("등록된 사원 정보가 없습니다.");
} else {
for (Worker worker : wr.values()) {
System.out.println("사원 번호:" + worker.no + " 사원 이름:" + worker.name + " 사원 전화번호:" + worker.tel + " 사원 임금:" + worker.weekWage);
}
}
}
// 주급 계산
public void wage() {
sc.nextLine();
System.out.println("임금을 계산할 직원의 사원번호를 입력하세요.");
String no = sc.nextLine();
if (wr.containsKey(no)) {
Worker worker = wr.get(no);
System.out.println("시간당 임금을 입력하세요.");
double hour = sc.nextDouble();
System.out.println("주당 근무 시간을 입력하세요.");
double weekHour = sc.nextDouble();
worker.setHour(hour);
worker.setWeekHour(weekHour);
double weekWage = hour * weekHour;
worker.setWeekWage(weekWage);
System.out.println("임금이 계산되었습니다. 주급: " + worker.getWeekWage());
} else {
System.out.println("등록된 사원정보가 없습니다.");
}
}
// 직장인 관련 모든 기능 실행
public void all() {
while (true) {
System.out.println("1.사원정보 등록 2.사원정보 삭제 3.사원정보 수정 4.임금 등록 5.사원정보 출력 6.프로그램 종료");
int num = sc.nextInt();
switch (num) {
case 1:
System.out.println("사원정보 등록");
enroll();
break;
case 2:
System.out.println("사원정보 삭제");
del();
break;
case 3:
System.out.println("사원정보 수정");
set();
break;
case 4:
System.out.println("임금 등록");
wage();
break;
case 5:
System.out.println("사원 정보 출력");
print();
break;
case 6:
System.out.println("시스템 종료");
System.exit(0);
break;
default:
System.out.println("올바른 숫자를 입력하세요");
}
}
}
}