
👇 공부한 자료들의 실제 소스파일들을 기록해논 공간입니다 👇
오늘의 과제 : 자유주제
지금까지 자바를 배운 내용으로 종합과제를 주셨다.
주제는 자유 주제 이고 써야 기술은 List or Hashmap 컬렉션, I/O 파일입출력 등 1번씩 다 쓰는 게 좋다
어렵다면 한가지라도 하는 방향으로 노력해야 한다
주말까지 간단한 ppt까지 만들어서 교사선생님 메일로 전송해야 함
기능 시나리오 고민 및 요구사항 분석
# 사원관리 프로그램
사원의 정의
- 사원번호
- 이름
- 나이
- 주소
- 근무부서
- 직책
------------------
주요 요구기능 1 - 메뉴
사원 추가
사원 수정
사원 삭제
사원 전체 보기
부서별 조회
부서별 txt파일 추출
프로그램 종료
요구기능 프로그램 실행 시 최초 시나리오
1. 프로그램이 실행되면 중요 메뉴로 이동한다
요구기능 사원 추가 시나리오
1. 사원 1을 생성한다
2. 사원의 정의는 바뀌어선 안된다
3. 사원번호는 중복되지 않는다
4. 사원 정상 추가 시 사원을 모아놓는 곳에 등록되야 한다
5. 등록되는 사항은 사원 번호와 이름 부서명만 등록된다
요구기능 사원 수정 시나리오
1. 수정할 사원의 사 번을 적는다
2. 사원 수정 기능에서 수정 가능한 영역은 직책만 변경 가능하다
요구기능 부서 및 직위 변경 시나리오
1. 변경을 희망하는 사람의 사번을 적는다
2. 변경 가능한 것은 부서변경과 직위변경이다
3. 등록된 부서나 직위 외에 다른 내용이 입력된다면 처리 불가하다
4. 부서 변경 시 기존 부서와 변경 후 내용을 알려준다
5. 직위 변경시 기존 직위와 변경 후 직위를 알려준다
요구기능 사원 삭제 시나리오
1. 삭제할 사원의 사 번을 적는다
2. 삭제할지 재차 묻는다
필요한 것?
1. 사원 등록 시 사원번호와 사원객체를 담을 배열 : hashmap 이용 < Int형, 사원클래스 >
2. 부서, 직위 목록이 있는 배열
클래스 명세서





클래스 다이어그램

소스코드
package employees_program;
import employees_program.activeProgram.AcitveEmplyoeeProgram;
public class Main {
public static void main(String[] args) {
// TODO : 주제 - 사원 관리 프로그램
new AcitveEmplyoeeProgram();
}
}
package employees_program.activeProgram;
import java.util.HashMap;
public class AcitveEmplyoeeProgram {
private Functions fn = new Functions();
// 사원 생성 시 입력받아 저장하는 hashMap
private static HashMap<Integer, Employees> employessList = new HashMap<>();
private static String[] deptName = {"인사팀", "회계팀", "개발팀", "영업팀", "인프라팀", "경영팀"};
private static String[] jobTitle = {"임원", "부장", "차장", "과장", "대리", "주임", "사원"};
// 사원들을 각각 등록할 HashMap
public AcitveEmplyoeeProgram(){
boolean flag = true;
while (flag){
info();
int selNum = Integer.parseInt(fn.returnText("메뉴 번호"));
switch (selNum){
case 1 : // 사원 추가
new AddEmplyoees();
break;
case 2 : // 사원 수정
new ModEmplyoees();
break;
case 3 : // 사원 전체보기
viewEmplyoees();
break;
case 4 : // 부서별 사원 정보 조회
new DeptList();
break;
case 5 : // 사원 삭제
new DelEmplyoees();
break;
case 6 : // 부서별 사원 정보 txt파일로 추출
new FileManager();
break;
case 7 :
System.out.println("프로그램 종료합니다");
flag = false;
break;
default :
System.out.println("입력한 번호는 없습니다. 다시 입력하세요");
}
}
}
private void viewEmplyoees() {
System.out.println("사원 전체 보기 메뉴 입니다");
for (Integer key : employessList.keySet()) {
fn.prtEmployees(employessList.get(key));
}
}
public static HashMap<Integer, Employees> getEmployessList() {
return employessList;
}
public static void setEmployessList(Integer num, Employees em) {
employessList.put(num,em);
}
public static String[] getDeptName() {
return deptName;
}
public static String[] getJobTitle() {
return jobTitle;
}
private void info(){
System.out.println("------------------------------------------");
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. 프로그램 종료");
}
}
package employees_program.activeProgram;
import static employees_program.activeProgram.AcitveEmplyoeeProgram.*;
public class AddEmplyoees {
// 사원 추가
private Functions fn = new Functions();
AddEmplyoees() {
addEmplyoees();
}
private void addEmplyoees() {
Employees em = new Employees();
System.out.println("사원 등록 메뉴 입니다");
try {
int emNum = Integer.parseInt(fn.returnText("사원 번호"));
// 동일 사번이 있는지 판단 후 리턴
if (!(fn.compareEmNumber(emNum))) {
em.setEmNum(emNum);
em.setEmName(fn.returnText("이름"));
em.setEmAge(Integer.parseInt(fn.returnText("사원 나이")));
fn.prtDeptAndJobTitle("부서");
em.setEmDept(fn.returnText("근무 부서"));
// 입력된 부서가 내부 부서목록과 일치 판단 후 리턴
if (fn.compareDept(em.getEmDept())) {
fn.prtDeptAndJobTitle("직위");
em.setEmJobTitle(fn.returnText("직위 등록"));
// 입력된 직위가 내부 직위목록과 일치 판단 후 리턴
if ( fn.compareJobTitle(em.getEmJobTitle()))
setEmployessList(em.getEmNum(), em);
}
}
} catch (Exception e) {
e.printStackTrace();
System.out.println("Unable to process");
}
}
}
package employees_program.activeProgram;
import java.util.HashMap;
import static employees_program.activeProgram.AcitveEmplyoeeProgram.getEmployessList;
public class DelEmplyoees {
// 사원 삭제
Functions fn = new Functions();
private HashMap<Integer,Employees> employeesList = getEmployessList();
DelEmplyoees(){
deleteEmplyoees();
}
private void deleteEmplyoees() {
System.out.println("사원 삭제 메뉴 입니다");
try {
int delEmNumber = Integer.parseInt(fn.returnText("삭제할 사원 번호"));
if (fn.compareEmNumber(delEmNumber)) {
String result = fn.returnText("정말 삭제하겠습니까 ? Y / N ").toLowerCase();
if (result.equals("y")) {
employeesList.remove(delEmNumber);
System.out.println("사번 : " + delEmNumber + " 삭제 완료");
} else System.out.println("초기 메뉴로 돌아갑니다");
}
}catch (Exception e){
e.printStackTrace();
System.out.println("Unable to process");
}
}
}
package employees_program.activeProgram;
import java.util.HashMap;
import static employees_program.activeProgram.AcitveEmplyoeeProgram.getEmployessList;
public class DeptList {
private HashMap<Integer, Employees> employeesList = getEmployessList();
private Employees em = null;
private String[] deptName = null;
private Functions fn = new Functions();
DeptList() {deptListSearch();}
private void deptListSearch() {
deptName = AcitveEmplyoeeProgram.getDeptName();
System.out.println("부서별 근무 사원 정보 메뉴입니다");
// 부서목록 출력 메서드
fn.prtDeptAndJobTitle("부서");
String deptNames = fn.returnText("조회 부서 명");
// 일치한 부서의 사원 정보를 출력해주는 메서드
if (fn.compareDept(deptNames)) isDept(deptNames);
}
private String isDept(String deptNames) {
for (Integer key : employeesList.keySet()) {
this.em = getEmployessList().get(key);
if (em.getEmDept().equals(deptNames)) {
fn.prtEmployees(em);
}
}
return null;
}
}
package employees_program.activeProgram;
public class Employees {
// 사원 번호
private int emNum = 0;
// 사원 이름
private String emName= null;
// 사원 나이
private int emAge= 0;
// 근무 부서
private String emDept = null;
// 직위
private String emJobTitle = null;
public int getEmNum() {
return emNum;
}
public void setEmNum(int emNum) {
this.emNum = emNum;
}
public String getEmName() {
return emName;
}
public void setEmName(String emName) {
this.emName = emName;
}
public int getEmAge() {
return emAge;
}
public void setEmAge(int emAge) {
this.emAge = emAge;
}
public String getEmDept() {
return emDept;
}
public void setEmDept(String emDept) {
this.emDept = emDept;
}
public String getEmJobTitle() {
return emJobTitle;
}
public void setEmJobTitle(String emJobTitle) {
this.emJobTitle = emJobTitle;
}
}
package employees_program.activeProgram;
import java.io.*;
import java.util.ArrayList;
import java.util.HashMap;
import static employees_program.activeProgram.AcitveEmplyoeeProgram.getEmployessList;
public class FileManager {
private HashMap<Integer, Employees> employeesList = getEmployessList();
private ArrayList<String> outEmInfo = null;
private Employees em = null;
FileManager() {
fileCreate();
}
private void fileCreate() {
Functions fn = new Functions();
fileInfo();
boolean choic = (Integer.parseInt(fn.returnText("번호")) == 1) ? true : false;
fn.prtDeptAndJobTitle("부서");
// 조회할 부서명 입력
String deptTitle = fn.returnText("부서");
if (fn.compareDept(deptTitle)) {
File file = null;
FileWriter fw = null;
BufferedWriter bw = null;
try {
// File에 입력될 내용을 List형식으로 등록함으로 List 생성
outEmInfo = new ArrayList<>();
file = new File(deptTitle + ".txt");
fw = new FileWriter(file, choic);
bw = new BufferedWriter(fw);
// employeesList <key 사번, value Employees> value값 가져오는 반복문
for (Integer key : employeesList.keySet()) {
this.em = employeesList.get(key);
// 입력한 부서명과 등록된 사원들 중 부서명이 일치한 사원이 확인하는 판단문
if (employeesList.get(key).getEmDept().equals(deptTitle)) {
// 부서명 동일한 Employees 대상의 정보를 txt파일에 입력되기 전 작업
emReturnList(em);
// 파일에 저장하는 작업
for (String writeText : outEmInfo) {
bw.write(writeText);
bw.write("\n");
}
}
}
bw.flush();
System.out.println(" [ " + deptTitle + " ] 추출 완료");
} catch (IOException e) { throw new RuntimeException(e);
} catch (Exception ee) {ee.printStackTrace();
} finally {
try { bw.close();
} catch (IOException e) { throw new RuntimeException(e);}
}
}
}
// txt파일 정보 입력 시 내용을 보기 쉽도록 처리하는 메서드
private ArrayList<String> emReturnList(Employees tmpEm) {
this.outEmInfo = new ArrayList<>();
this.em = tmpEm;
String[] outGuides = {"사원 번호 : ", "이 름 : ", "나 이 : ", "부 서 : ", "직 위 : "};
String[] emInfo = {String.valueOf(em.getEmNum()), em.getEmName(), String.valueOf(em.getEmAge()), em.getEmDept(), em.getEmJobTitle()};
for (int i = 0; i < emInfo.length; i++) {
outEmInfo.add(outGuides[i] + emInfo[i]);
}
outEmInfo.add("------------------------------");
return outEmInfo;
}
private void fileInfo() {
System.out.println("부서별 사원 정보를 txt 파일로 만들어 저장합니다.");
System.out.println("부서명이 파일명으로 자동 생성 됩니다");
System.out.println("1번 : 기존 txt 파일 내용 유지 및 현재 기록 추가");
System.out.println("2번 : 기존 txt 파일 내용 삭제 후 현재 상태로 기록 작성");
}
}
package employees_program.activeProgram;
import java.util.HashMap;
import java.util.Scanner;
import static employees_program.activeProgram.AcitveEmplyoeeProgram.getEmployessList;
public class Functions {
private HashMap<Integer, Employees> employeesList = null;
private Employees em = null;
private Scanner in = new Scanner(System.in);
private String[] deptName = AcitveEmplyoeeProgram.getDeptName();
private String[] jobTitle = AcitveEmplyoeeProgram.getJobTitle();
// 부서와 직위목록 출력해주는 메서드
public void prtDeptAndJobTitle(String text) {
if (text.equals("부서")) {
System.out.print("선택 가능한 부서 목록 : ");
for (String dept : this.deptName) System.out.print(dept + " ");
} else {
System.out.print("선택 가능한 직위 목록 : ");
for (String job : this.jobTitle) System.out.print(job + " ");
}
System.out.println();
}
// 입력한 부서가 목록에 있는 부서인지 판단후 결과리턴
public boolean compareDept(String isDeptName) {
for (String tmp : this.deptName)
if (isDeptName.equals(tmp)) return true;
System.out.println("해당 부서는 찾을 수 없습니다");
return false;
}
// 입력한 직위가 목록에 있는 직위인지 판단후 결과리턴
public boolean compareJobTitle(String jobTitle) {
for (String job : this.jobTitle)
if (job.equals(jobTitle)) return true;
System.out.println("해당 직위는 찾을 수 없습니다");
return false;
}
// 사원번호 동일한 사람이 있는지 확인 후 결과 리턴
public boolean compareEmNumber(int num){
employeesList = getEmployessList();
if (employeesList.containsKey(num)) return true;
else System.out.println("동일한 사원 번호가 있습니다");
return false;
}
// 사원 정보 출력
public void prtEmployees (Employees em){
this.em = em;
System.out.println("------------------------------------------");
System.out.println("직 위 : " + em.getEmJobTitle());
System.out.println("사원번호 : " + em.getEmNum());
System.out.println("근무부서 : " + em.getEmDept());
System.out.println("이 름 : " + em.getEmName());
System.out.println("나 이 : " + em.getEmAge());
}
// 입출력 리턴
public String returnText(String text) {
System.out.print("\t\t" + text + " 입력 >> ");
String outPutText = in.nextLine();
return outPutText;
}
}
package employees_program.activeProgram;
import java.util.HashMap;
import static employees_program.activeProgram.AcitveEmplyoeeProgram.getEmployessList;
public class ModEmplyoees {
// 사원 수정 메뉴
Functions fn = new Functions();
private HashMap<Integer, Employees> employeesList = getEmployessList();
ModEmplyoees(){
modEmplyoees();
}
private void modEmplyoees(){
Employees em = null;
System.out.println("사원 정보 수정 입니다");
try {
int emNum = Integer.parseInt(fn.returnText("수정 할 사원 번호"));
if (fn.compareEmNumber(emNum)) {
em = employeesList.get(emNum);
System.out.println("수정 가능 항목 : 직위 or 부서");
String editStr = fn.returnText("수정 항목");
if (editStr.equals("부서")) {
fn.prtDeptAndJobTitle("부서");
String afterStr = fn.returnText("부서");
if (fn.compareDept(afterStr)) {
System.out.println(" 변경 전 [ " + em.getEmDept() + " ] ");
em.setEmDept(afterStr);
System.out.println(" 변경 후 [ " + em.getEmDept() + " ] ");
System.out.println(" [ " + em.getEmName() + " ] 부서 변경 완료 ");
}
} else if (editStr.equals("직위")) {
fn.prtDeptAndJobTitle("직위");
String afterStr = fn.returnText("직위");
if (fn.compareJobTitle(afterStr)) {
System.out.println(" 변경 전 [ " + em.getEmJobTitle() + " ] ");
em.setEmJobTitle(afterStr);
System.out.println(" 변경 후 [ " + em.getEmJobTitle() + " ] ");
System.out.println(" [ " + em.getEmName() + " ] 님 직위 변경 완료 ");
}
} else {
System.out.println("Unable to process");
}
}
} catch (Exception e){
e.printStackTrace();
System.out.println("Unable to process");
}
}
}
'👩🏻💻 𝐋𝐚𝐧𝐠𝐮𝐚𝐠𝐞 > ⠀⠀⠀⠀ Jᴀᴠᴀ' 카테고리의 다른 글
2023/11/07 ✨ CRUD를 위한 게시판만들기 실습 (0) | 2023.11.07 |
---|---|
2023/11/06 ✨ CRUD를 위한 첫걸음 (0) | 2023.11.07 |
2023/11/02 📝 예외처리 , I/O 입출력 (1) | 2023.11.02 |
2023/11/01 💛 HashMap (1) | 2023.11.01 |
2023/10/31 🤔 Collections Framework & ArrayList (1) | 2023.11.01 |

👇 공부한 자료들의 실제 소스파일들을 기록해논 공간입니다 👇
오늘의 과제 : 자유주제
지금까지 자바를 배운 내용으로 종합과제를 주셨다.
주제는 자유 주제 이고 써야 기술은 List or Hashmap 컬렉션, I/O 파일입출력 등 1번씩 다 쓰는 게 좋다
어렵다면 한가지라도 하는 방향으로 노력해야 한다
주말까지 간단한 ppt까지 만들어서 교사선생님 메일로 전송해야 함
기능 시나리오 고민 및 요구사항 분석
# 사원관리 프로그램
사원의 정의
- 사원번호
- 이름
- 나이
- 주소
- 근무부서
- 직책
------------------
주요 요구기능 1 - 메뉴
사원 추가
사원 수정
사원 삭제
사원 전체 보기
부서별 조회
부서별 txt파일 추출
프로그램 종료
요구기능 프로그램 실행 시 최초 시나리오
1. 프로그램이 실행되면 중요 메뉴로 이동한다
요구기능 사원 추가 시나리오
1. 사원 1을 생성한다
2. 사원의 정의는 바뀌어선 안된다
3. 사원번호는 중복되지 않는다
4. 사원 정상 추가 시 사원을 모아놓는 곳에 등록되야 한다
5. 등록되는 사항은 사원 번호와 이름 부서명만 등록된다
요구기능 사원 수정 시나리오
1. 수정할 사원의 사 번을 적는다
2. 사원 수정 기능에서 수정 가능한 영역은 직책만 변경 가능하다
요구기능 부서 및 직위 변경 시나리오
1. 변경을 희망하는 사람의 사번을 적는다
2. 변경 가능한 것은 부서변경과 직위변경이다
3. 등록된 부서나 직위 외에 다른 내용이 입력된다면 처리 불가하다
4. 부서 변경 시 기존 부서와 변경 후 내용을 알려준다
5. 직위 변경시 기존 직위와 변경 후 직위를 알려준다
요구기능 사원 삭제 시나리오
1. 삭제할 사원의 사 번을 적는다
2. 삭제할지 재차 묻는다
필요한 것?
1. 사원 등록 시 사원번호와 사원객체를 담을 배열 : hashmap 이용 < Int형, 사원클래스 >
2. 부서, 직위 목록이 있는 배열
클래스 명세서





클래스 다이어그램

소스코드
package employees_program;
import employees_program.activeProgram.AcitveEmplyoeeProgram;
public class Main {
public static void main(String[] args) {
// TODO : 주제 - 사원 관리 프로그램
new AcitveEmplyoeeProgram();
}
}
package employees_program.activeProgram;
import java.util.HashMap;
public class AcitveEmplyoeeProgram {
private Functions fn = new Functions();
// 사원 생성 시 입력받아 저장하는 hashMap
private static HashMap<Integer, Employees> employessList = new HashMap<>();
private static String[] deptName = {"인사팀", "회계팀", "개발팀", "영업팀", "인프라팀", "경영팀"};
private static String[] jobTitle = {"임원", "부장", "차장", "과장", "대리", "주임", "사원"};
// 사원들을 각각 등록할 HashMap
public AcitveEmplyoeeProgram(){
boolean flag = true;
while (flag){
info();
int selNum = Integer.parseInt(fn.returnText("메뉴 번호"));
switch (selNum){
case 1 : // 사원 추가
new AddEmplyoees();
break;
case 2 : // 사원 수정
new ModEmplyoees();
break;
case 3 : // 사원 전체보기
viewEmplyoees();
break;
case 4 : // 부서별 사원 정보 조회
new DeptList();
break;
case 5 : // 사원 삭제
new DelEmplyoees();
break;
case 6 : // 부서별 사원 정보 txt파일로 추출
new FileManager();
break;
case 7 :
System.out.println("프로그램 종료합니다");
flag = false;
break;
default :
System.out.println("입력한 번호는 없습니다. 다시 입력하세요");
}
}
}
private void viewEmplyoees() {
System.out.println("사원 전체 보기 메뉴 입니다");
for (Integer key : employessList.keySet()) {
fn.prtEmployees(employessList.get(key));
}
}
public static HashMap<Integer, Employees> getEmployessList() {
return employessList;
}
public static void setEmployessList(Integer num, Employees em) {
employessList.put(num,em);
}
public static String[] getDeptName() {
return deptName;
}
public static String[] getJobTitle() {
return jobTitle;
}
private void info(){
System.out.println("------------------------------------------");
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. 프로그램 종료");
}
}
package employees_program.activeProgram;
import static employees_program.activeProgram.AcitveEmplyoeeProgram.*;
public class AddEmplyoees {
// 사원 추가
private Functions fn = new Functions();
AddEmplyoees() {
addEmplyoees();
}
private void addEmplyoees() {
Employees em = new Employees();
System.out.println("사원 등록 메뉴 입니다");
try {
int emNum = Integer.parseInt(fn.returnText("사원 번호"));
// 동일 사번이 있는지 판단 후 리턴
if (!(fn.compareEmNumber(emNum))) {
em.setEmNum(emNum);
em.setEmName(fn.returnText("이름"));
em.setEmAge(Integer.parseInt(fn.returnText("사원 나이")));
fn.prtDeptAndJobTitle("부서");
em.setEmDept(fn.returnText("근무 부서"));
// 입력된 부서가 내부 부서목록과 일치 판단 후 리턴
if (fn.compareDept(em.getEmDept())) {
fn.prtDeptAndJobTitle("직위");
em.setEmJobTitle(fn.returnText("직위 등록"));
// 입력된 직위가 내부 직위목록과 일치 판단 후 리턴
if ( fn.compareJobTitle(em.getEmJobTitle()))
setEmployessList(em.getEmNum(), em);
}
}
} catch (Exception e) {
e.printStackTrace();
System.out.println("Unable to process");
}
}
}
package employees_program.activeProgram;
import java.util.HashMap;
import static employees_program.activeProgram.AcitveEmplyoeeProgram.getEmployessList;
public class DelEmplyoees {
// 사원 삭제
Functions fn = new Functions();
private HashMap<Integer,Employees> employeesList = getEmployessList();
DelEmplyoees(){
deleteEmplyoees();
}
private void deleteEmplyoees() {
System.out.println("사원 삭제 메뉴 입니다");
try {
int delEmNumber = Integer.parseInt(fn.returnText("삭제할 사원 번호"));
if (fn.compareEmNumber(delEmNumber)) {
String result = fn.returnText("정말 삭제하겠습니까 ? Y / N ").toLowerCase();
if (result.equals("y")) {
employeesList.remove(delEmNumber);
System.out.println("사번 : " + delEmNumber + " 삭제 완료");
} else System.out.println("초기 메뉴로 돌아갑니다");
}
}catch (Exception e){
e.printStackTrace();
System.out.println("Unable to process");
}
}
}
package employees_program.activeProgram;
import java.util.HashMap;
import static employees_program.activeProgram.AcitveEmplyoeeProgram.getEmployessList;
public class DeptList {
private HashMap<Integer, Employees> employeesList = getEmployessList();
private Employees em = null;
private String[] deptName = null;
private Functions fn = new Functions();
DeptList() {deptListSearch();}
private void deptListSearch() {
deptName = AcitveEmplyoeeProgram.getDeptName();
System.out.println("부서별 근무 사원 정보 메뉴입니다");
// 부서목록 출력 메서드
fn.prtDeptAndJobTitle("부서");
String deptNames = fn.returnText("조회 부서 명");
// 일치한 부서의 사원 정보를 출력해주는 메서드
if (fn.compareDept(deptNames)) isDept(deptNames);
}
private String isDept(String deptNames) {
for (Integer key : employeesList.keySet()) {
this.em = getEmployessList().get(key);
if (em.getEmDept().equals(deptNames)) {
fn.prtEmployees(em);
}
}
return null;
}
}
package employees_program.activeProgram;
public class Employees {
// 사원 번호
private int emNum = 0;
// 사원 이름
private String emName= null;
// 사원 나이
private int emAge= 0;
// 근무 부서
private String emDept = null;
// 직위
private String emJobTitle = null;
public int getEmNum() {
return emNum;
}
public void setEmNum(int emNum) {
this.emNum = emNum;
}
public String getEmName() {
return emName;
}
public void setEmName(String emName) {
this.emName = emName;
}
public int getEmAge() {
return emAge;
}
public void setEmAge(int emAge) {
this.emAge = emAge;
}
public String getEmDept() {
return emDept;
}
public void setEmDept(String emDept) {
this.emDept = emDept;
}
public String getEmJobTitle() {
return emJobTitle;
}
public void setEmJobTitle(String emJobTitle) {
this.emJobTitle = emJobTitle;
}
}
package employees_program.activeProgram;
import java.io.*;
import java.util.ArrayList;
import java.util.HashMap;
import static employees_program.activeProgram.AcitveEmplyoeeProgram.getEmployessList;
public class FileManager {
private HashMap<Integer, Employees> employeesList = getEmployessList();
private ArrayList<String> outEmInfo = null;
private Employees em = null;
FileManager() {
fileCreate();
}
private void fileCreate() {
Functions fn = new Functions();
fileInfo();
boolean choic = (Integer.parseInt(fn.returnText("번호")) == 1) ? true : false;
fn.prtDeptAndJobTitle("부서");
// 조회할 부서명 입력
String deptTitle = fn.returnText("부서");
if (fn.compareDept(deptTitle)) {
File file = null;
FileWriter fw = null;
BufferedWriter bw = null;
try {
// File에 입력될 내용을 List형식으로 등록함으로 List 생성
outEmInfo = new ArrayList<>();
file = new File(deptTitle + ".txt");
fw = new FileWriter(file, choic);
bw = new BufferedWriter(fw);
// employeesList <key 사번, value Employees> value값 가져오는 반복문
for (Integer key : employeesList.keySet()) {
this.em = employeesList.get(key);
// 입력한 부서명과 등록된 사원들 중 부서명이 일치한 사원이 확인하는 판단문
if (employeesList.get(key).getEmDept().equals(deptTitle)) {
// 부서명 동일한 Employees 대상의 정보를 txt파일에 입력되기 전 작업
emReturnList(em);
// 파일에 저장하는 작업
for (String writeText : outEmInfo) {
bw.write(writeText);
bw.write("\n");
}
}
}
bw.flush();
System.out.println(" [ " + deptTitle + " ] 추출 완료");
} catch (IOException e) { throw new RuntimeException(e);
} catch (Exception ee) {ee.printStackTrace();
} finally {
try { bw.close();
} catch (IOException e) { throw new RuntimeException(e);}
}
}
}
// txt파일 정보 입력 시 내용을 보기 쉽도록 처리하는 메서드
private ArrayList<String> emReturnList(Employees tmpEm) {
this.outEmInfo = new ArrayList<>();
this.em = tmpEm;
String[] outGuides = {"사원 번호 : ", "이 름 : ", "나 이 : ", "부 서 : ", "직 위 : "};
String[] emInfo = {String.valueOf(em.getEmNum()), em.getEmName(), String.valueOf(em.getEmAge()), em.getEmDept(), em.getEmJobTitle()};
for (int i = 0; i < emInfo.length; i++) {
outEmInfo.add(outGuides[i] + emInfo[i]);
}
outEmInfo.add("------------------------------");
return outEmInfo;
}
private void fileInfo() {
System.out.println("부서별 사원 정보를 txt 파일로 만들어 저장합니다.");
System.out.println("부서명이 파일명으로 자동 생성 됩니다");
System.out.println("1번 : 기존 txt 파일 내용 유지 및 현재 기록 추가");
System.out.println("2번 : 기존 txt 파일 내용 삭제 후 현재 상태로 기록 작성");
}
}
package employees_program.activeProgram;
import java.util.HashMap;
import java.util.Scanner;
import static employees_program.activeProgram.AcitveEmplyoeeProgram.getEmployessList;
public class Functions {
private HashMap<Integer, Employees> employeesList = null;
private Employees em = null;
private Scanner in = new Scanner(System.in);
private String[] deptName = AcitveEmplyoeeProgram.getDeptName();
private String[] jobTitle = AcitveEmplyoeeProgram.getJobTitle();
// 부서와 직위목록 출력해주는 메서드
public void prtDeptAndJobTitle(String text) {
if (text.equals("부서")) {
System.out.print("선택 가능한 부서 목록 : ");
for (String dept : this.deptName) System.out.print(dept + " ");
} else {
System.out.print("선택 가능한 직위 목록 : ");
for (String job : this.jobTitle) System.out.print(job + " ");
}
System.out.println();
}
// 입력한 부서가 목록에 있는 부서인지 판단후 결과리턴
public boolean compareDept(String isDeptName) {
for (String tmp : this.deptName)
if (isDeptName.equals(tmp)) return true;
System.out.println("해당 부서는 찾을 수 없습니다");
return false;
}
// 입력한 직위가 목록에 있는 직위인지 판단후 결과리턴
public boolean compareJobTitle(String jobTitle) {
for (String job : this.jobTitle)
if (job.equals(jobTitle)) return true;
System.out.println("해당 직위는 찾을 수 없습니다");
return false;
}
// 사원번호 동일한 사람이 있는지 확인 후 결과 리턴
public boolean compareEmNumber(int num){
employeesList = getEmployessList();
if (employeesList.containsKey(num)) return true;
else System.out.println("동일한 사원 번호가 있습니다");
return false;
}
// 사원 정보 출력
public void prtEmployees (Employees em){
this.em = em;
System.out.println("------------------------------------------");
System.out.println("직 위 : " + em.getEmJobTitle());
System.out.println("사원번호 : " + em.getEmNum());
System.out.println("근무부서 : " + em.getEmDept());
System.out.println("이 름 : " + em.getEmName());
System.out.println("나 이 : " + em.getEmAge());
}
// 입출력 리턴
public String returnText(String text) {
System.out.print("\t\t" + text + " 입력 >> ");
String outPutText = in.nextLine();
return outPutText;
}
}
package employees_program.activeProgram;
import java.util.HashMap;
import static employees_program.activeProgram.AcitveEmplyoeeProgram.getEmployessList;
public class ModEmplyoees {
// 사원 수정 메뉴
Functions fn = new Functions();
private HashMap<Integer, Employees> employeesList = getEmployessList();
ModEmplyoees(){
modEmplyoees();
}
private void modEmplyoees(){
Employees em = null;
System.out.println("사원 정보 수정 입니다");
try {
int emNum = Integer.parseInt(fn.returnText("수정 할 사원 번호"));
if (fn.compareEmNumber(emNum)) {
em = employeesList.get(emNum);
System.out.println("수정 가능 항목 : 직위 or 부서");
String editStr = fn.returnText("수정 항목");
if (editStr.equals("부서")) {
fn.prtDeptAndJobTitle("부서");
String afterStr = fn.returnText("부서");
if (fn.compareDept(afterStr)) {
System.out.println(" 변경 전 [ " + em.getEmDept() + " ] ");
em.setEmDept(afterStr);
System.out.println(" 변경 후 [ " + em.getEmDept() + " ] ");
System.out.println(" [ " + em.getEmName() + " ] 부서 변경 완료 ");
}
} else if (editStr.equals("직위")) {
fn.prtDeptAndJobTitle("직위");
String afterStr = fn.returnText("직위");
if (fn.compareJobTitle(afterStr)) {
System.out.println(" 변경 전 [ " + em.getEmJobTitle() + " ] ");
em.setEmJobTitle(afterStr);
System.out.println(" 변경 후 [ " + em.getEmJobTitle() + " ] ");
System.out.println(" [ " + em.getEmName() + " ] 님 직위 변경 완료 ");
}
} else {
System.out.println("Unable to process");
}
}
} catch (Exception e){
e.printStackTrace();
System.out.println("Unable to process");
}
}
}
'👩🏻💻 𝐋𝐚𝐧𝐠𝐮𝐚𝐠𝐞 > ⠀⠀⠀⠀ Jᴀᴠᴀ' 카테고리의 다른 글
2023/11/07 ✨ CRUD를 위한 게시판만들기 실습 (0) | 2023.11.07 |
---|---|
2023/11/06 ✨ CRUD를 위한 첫걸음 (0) | 2023.11.07 |
2023/11/02 📝 예외처리 , I/O 입출력 (1) | 2023.11.02 |
2023/11/01 💛 HashMap (1) | 2023.11.01 |
2023/10/31 🤔 Collections Framework & ArrayList (1) | 2023.11.01 |