diff --git a/em-oop/src/Main.java b/em-oop/src/Main.java index b8c7fc3..b9ac252 100644 --- a/em-oop/src/Main.java +++ b/em-oop/src/Main.java @@ -1,202 +1,258 @@ +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.StandardOpenOption; +import java.util.ArrayList; +import java.util.Arrays; import java.util.Scanner; public class Main { + public static void main(String[] args) { - System.out.println("会社名:" + EmployeeData.COMPANY_NAME); - - BaseData employee = new EmployeeData("10000", "山田龍也", "ヤマダタツヤ", - "yamada@hoge.jp", "aaa", "10"); - System.out.println(employee.toCSV()); - System.out.println(employee.getPrimaryKeyValue()); - - System.out.println(); - - BaseData[] employees = new BaseData[5]; - - //setterがBaseData.javaにはないためコンストラクタで代入 - // for (int i = 0; i < employees.length; i++) { - // employees[i] = new EmployeeData(); - // } - // - // employees[0].setIdEmployee("10000"); - // employees[0].setNmEmployee("山田龍也"); - // employees[0].setKnEmployee("ヤマダタツヤ"); - // employees[0].setMailAddress("yamada@hoge.jp"); - // employees[0].setPassword("aaa"); - // employees[0].setIdDepartment("10"); - // - // employees[1].setIdEmployee("10001"); - // employees[1].setNmEmployee("高橋準\t"); - // employees[1].setKnEmployee("タカハシジュン"); - // employees[1].setMailAddress("jtaka@hoge.jp"); - // employees[1].setPassword("bbb"); - // employees[1].setIdDepartment("10"); - // - // employees[2].setIdEmployee("10002"); - // employees[2].setNmEmployee("麻枝史明"); - // employees[2].setKnEmployee("マエダフミアキ"); - // employees[2].setMailAddress("fmak@hoge.jp"); - // employees[2].setPassword("ccc"); - // employees[2].setIdDepartment("11"); - // - // employees[3].setIdEmployee("10003"); - // employees[3].setNmEmployee("丸戸章介"); - // employees[3].setKnEmployee("マルトショウスケ"); - // employees[3].setMailAddress("marusyo@hoge.jp"); - // employees[3].setPassword("ddd"); - // employees[3].setIdDepartment("12"); - // - // employees[4].setIdEmployee("10004"); - // employees[4].setNmEmployee("三宅武\t"); - // employees[4].setKnEmployee("ミヤケタケシ"); - // employees[4].setMailAddress("miya@hoge.jp"); - // employees[4].setPassword("eee"); - // employees[4].setIdDepartment("13"); - employees[0] = new EmployeeData("10000", "山田龍也", "ヤマダタツヤ", - "yamada@hoge.jp", "aaa", "10"); - employees[1] = new EmployeeData("10001", "高橋準", "タカハシジュン", - "jtaka@hoge.jp", "bbb", "10"); - employees[2] = new EmployeeData("10002", "麻枝史明", "マエダフミアキ", - "fmak@hoge.jp", "ccc", "11"); - employees[3] = new EmployeeData("10003", "丸戸章介", "マルトショウスケ", - "marusyo@hoge.jp", "ddd", "12"); - employees[4] = new EmployeeData("10004", "三宅武", "ミヤケタケシ", - "miya@hoge.jp", "eee", "13"); - - for (BaseData e : employees) { - System.out.println(e); - } - System.out.println("現在の社員のデータ件数:" + EmployeeData.getEmpCount() + "件"); - - System.out.println(); - - //社員データ+部署データ - BaseData[] allData = new BaseData[11]; - for (int i = 0; i < employees.length; i++) { - allData[i] = employees[i]; - - } - DepartmentData[] dept = new DepartmentData[6]; - for (int i = 0; i < dept.length; i++) { - dept[i] = new DepartmentData(); - } - dept[0].setIdDepartment("10"); - dept[0].setNmDepartment("役員"); - allData[5] = dept[0]; - dept[1].setIdDepartment("11"); - dept[1].setNmDepartment("人事・総務部"); - allData[6] = dept[1]; - dept[2].setIdDepartment("12"); - dept[2].setNmDepartment("経理部"); - allData[7] = dept[2]; - dept[3].setIdDepartment("13"); - dept[3].setNmDepartment("システム開発事業部"); - allData[8] = dept[3]; - dept[4].setIdDepartment("14"); - dept[4].setNmDepartment("教育事業部"); - allData[9] = dept[4]; - dept[5].setIdDepartment("15"); - dept[5].setNmDepartment("営業企画部"); - allData[10] = dept[5]; - - int employeeCount = 0; - int deptCount = 0; - for (BaseData data : allData) { - System.out.println(data); - if (data instanceof EmployeeData) { - employeeCount++; - } else if (data instanceof DepartmentData) { - deptCount++; - } - } - System.out.println("社員データ:" + employeeCount + "件\n部署データ:" + deptCount + "件"); - System.out.println(); - - System.out.println("メールアドレス表示"); - for (BaseData data : allData) { - if (data instanceof EmployeeData) { - System.out.println(((EmployeeData) data).getMailAddress()); - } - } - - System.out.println(); - - //nullおよび前後の空白を取り除いた結果が空文字チェック - BaseData emp = new EmployeeData("10000", "デフォルト", "ヤマダタツヤ", "yamada@hoge.jp", "aaa", "10"); - System.out.println(emp); - ((EmployeeData) emp).setNmEmployee(null); - System.out.println(emp); - ((EmployeeData) emp).setNmEmployee("   "); - System.out.println(emp); - - System.out.println(); - - System.out.println("コンストラクタに全てから文字で"); - BaseData emptyEmployee = new EmployeeData("", "", "", "", "", ""); - System.out.println(emptyEmployee); - - System.out.println(); + ArrayList employees = new ArrayList(); + System.out.println("システムを開始します\n"); + //検索 Scanner scanner = new Scanner(System.in); - while (true) { - System.out.println("検索したい部署名を入力してください(終了する場合は0)"); + employees = inportEmployeesCSV(); + System.out.println("1:検索 2:登録 3:更新 4:削除 0:終了"); System.out.print(">>>>"); - String searchDeptNm = scanner.nextLine(); - String searchDeptId = ""; - if (endChack(searchDeptNm)) + String str = scanner.nextLine().strip(); + switch (str) { + case "0": + System.out.println("システムを終了します"); + return; + case "1": + System.out.println("1:全検索 2:条件検索 それ以外:戻る"); + System.out.print(">>>>"); + str = scanner.nextLine().strip(); + Display(str, employees); break; - for (BaseData data : allData) { - if (data instanceof DepartmentData) { - if (((DepartmentData) data).getNmDepartment().equals(searchDeptNm)) { - searchDeptId = ((DepartmentData) data).getIdDepartment(); - } - } - } - if (searchDeptId.equals("")) { - System.out.println("該当する部署が見つかりませんでした"); - continue; - } - for (BaseData data : allData) { - if (data instanceof EmployeeData) { - if (((EmployeeData) data).getIdDepartment().equals(searchDeptId)) { - System.out.println( - ((EmployeeData) data).getNmEmployee() + "\t" + ((EmployeeData) data).getMailAddress()); - } - } - } - System.out.println(); - } - - while (true) { - System.out.println("検索したい社員IDを入力してください(終了する場合は0)"); - System.out.print(">>>>"); - String findId = scanner.nextLine(); - if (endChack(findId)) + case "2": + append(); + break; + case "3": + update(employees); + break; + case "4": + delete(employees); + break; + default: + System.out.println("指定の番号を入力してください"); break; - boolean matchFlag = false; - - for (BaseData e : employees) { - if (e.getPrimaryKeyValue().equals(findId)) { - System.out.println(e); - matchFlag = true; - break; - } - } - if (!matchFlag) { - System.out.println("該当する社員が見つかりませんでした"); } System.out.println(); } } - static boolean endChack(String input) { - if (input.equals("0")) { - System.out.println("システムを終了します"); - return true; + //削除 + private static void delete(ArrayList allData) { + Scanner scanner = new Scanner(System.in); + ArrayList dataList = new ArrayList(); + Path path = Path.of("employees.csv"); + System.out.println("IDを入力してください"); + System.out.print(">>>>"); + String str = scanner.nextLine().strip(); + boolean matchFlag = false; + + for (BaseData e : allData) { + if (e.getPrimaryKeyValue().equals(str)) { + matchFlag = true; + } else { + dataList.add(e.toCSV()); + } } - return false; + if (!matchFlag) { + System.out.println("入力された値で情報がみつかりませんでした"); + } else { + + System.out.println("指定されたIDの情報を削除します? Y/y\n(Y/y以外の入力であればキャンセル)"); + System.out.print(">>>>"); + str = scanner.nextLine().strip(); + if (str.equalsIgnoreCase("y")) { + try { + Files.write(path, dataList); + System.out.println("削除が完了しました"); + } catch (IOException e1) { + // TODO 自動生成された catch ブロック + e1.printStackTrace(); + } + } else { + System.out.println("削除をキャンセルしました"); + } + + } + System.out.println(); + } + + //更新 + private static void update(ArrayList allData) { + //更新するファイルのパス + Path path = Path.of("employees.csv"); + //ID以外の更新するデータの項目 + String[] appendData = { "社員名", "フリガナ", "メールアドレス", "パスワード", "部署ID" }; + boolean zeroCheck = true; //入力されたデータが空白かのチェック用変数 + Scanner scanner = new Scanner(System.in); + + System.out.println("IDを入力してください"); + System.out.print(">>>>"); + String str = scanner.nextLine().strip(); + boolean matchFlag = false; + ArrayList dataList = new ArrayList(); + String content; + for (BaseData e : allData) { + content = e.toCSV(); + if (e.getPrimaryKeyValue().equals(str)) { + + for (int i = 0; i < appendData.length; i++) { + while (zeroCheck) { + zeroCheck = false; + System.out.println(appendData[i] + "を入力してください"); + System.out.print(">>>>"); + String scanString = scanner.nextLine().strip(); + + if (scanString == null || scanString.strip().length() == 0) { + System.out.println(appendData[i] + "は入力必須です"); + zeroCheck = true; + } + str += ","; + str += scanString; + System.out.println(); + } + zeroCheck = true; + + } + + matchFlag = true; + content = str; + } + + dataList.add(content); + } + if (!matchFlag) { + System.out.println("入力された値で情報がみつかりませんでした"); + } else { + try { + Files.write(path, dataList); + System.out.println("更新が完了しました"); + } catch (IOException e1) { + // TODO 自動生成された catch ブロック + e1.printStackTrace(); + } + } + System.out.println(); + + } + + private static void Display(String str, ArrayList data) { + switch (str) { + case "1": + allDisplay(data); + break; + case "2": + employeeSeach(data); + break; + default: + return; + } + } + + private static void allDisplay(ArrayList data) { + + data.stream().forEach(d -> { + System.out.println(d); //一覧表示 + }); + + System.out.println(); + } + + //ID検索 + private static void employeeSeach(ArrayList allData) { + Scanner scanner = new Scanner(System.in); + + System.out.println("検索したい社員IDを入力してください"); + System.out.print(">>>>"); + String str = scanner.nextLine().strip(); + boolean matchFlag = false; + + for (BaseData e : allData) { + if (e.getPrimaryKeyValue().equals(str)) { + System.out.println(e); + + matchFlag = true; + break; + } + } + if (!matchFlag) { + System.out.println("入力された値で情報がみつかりませんでした"); + } + System.out.println(); + + } + + //書き込み ※社員IDが被っていても追加出来てしまう + private static void append() { + Scanner scanner = new Scanner(System.in); + String scanString; + String str = ""; + String[] appendData = { "社員ID", "社員名", "フリガナ", "メールアドレス", "パスワード", "部署ID" }; + boolean zeroCheck = true; + + for (int i = 0; i < appendData.length; i++) { + while (zeroCheck) { + zeroCheck = false; + System.out.println(appendData[i] + "を入力してください"); + System.out.print(">>>>"); + scanString = scanner.nextLine().strip(); + + if (scanString == null || scanString.strip().length() == 0) { + System.out.println(appendData[i] + "は入力必須です"); + zeroCheck = true; + } + + str += scanString; + System.out.println(); + } + if (i < appendData.length - 1) + str += ","; + zeroCheck = true; + + } + + Path path = Path.of("employees.csv"); + try { + Files.writeString(path, str + "\n", StandardOpenOption.APPEND); + } catch (IOException e) { + // TODO 自動生成された catch ブロック + e.printStackTrace(); + } + } + + //社員CSVの読み込み + private static ArrayList inportEmployeesCSV() { + final String employeesCSVPath = "employees.csv"; + ArrayList employees = new ArrayList(); + + Path pathEmp = Path.of(employeesCSVPath); + ArrayList content = new ArrayList(); + try { + // content = Files.readString(path); + content = (ArrayList) (Files.readAllLines(pathEmp)); + } catch (IOException e) { + // TODO 自動 生成された catch ブロック + e.printStackTrace(); + } + content.stream().forEach(data -> { + + ArrayList content2 = new ArrayList(Arrays.asList(data.split(","))); + employees.add( + new EmployeeData(content2.get(0), content2.get(1), content2.get(2), content2.get(3), + content2.get(4), content2.get(5))); + }); + return employees; + } } diff --git a/em-oop/src/Sub.java b/em-oop/src/Sub.java index c515ad3..0ea1fbd 100644 --- a/em-oop/src/Sub.java +++ b/em-oop/src/Sub.java @@ -1,165 +1,202 @@ -import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.Path; -import java.util.ArrayList; -import java.util.Arrays; import java.util.Scanner; public class Sub { - public static void main(String[] args) { - final String employeesCSVPath = "employees.csv"; - final String departmentsCSVPath = "departments.csv"; + System.out.println("会社名:" + EmployeeData.COMPANY_NAME); - ArrayList employees = new ArrayList(); - ArrayList departments = new ArrayList(); + BaseData employee = new EmployeeData("10000", "山田龍也", "ヤマダタツヤ", + "yamada@hoge.jp", "aaa", "10"); + System.out.println(employee.toCSV()); + System.out.println(employee.getPrimaryKeyValue()); - //社員CSVの読み込み - Path pathEmp = Path.of(employeesCSVPath); - ArrayList content = new ArrayList(); - try { - // content = Files.readString(path); - content = (ArrayList) (Files.readAllLines(pathEmp)); - } catch (IOException e) { - // TODO 自動 生成された catch ブロック - e.printStackTrace(); - } - content.stream().forEach(data -> { - - ArrayList content2 = new ArrayList(Arrays.asList(data.split(","))); - employees.add( - new EmployeeData(content2.get(0), content2.get(1), content2.get(2), content2.get(3), - content2.get(4), content2.get(5))); - }); - - //部門CSVの読み込み - content.clear();//使いまわしたいから - - Path pathDept = Path.of(departmentsCSVPath); - - try { - // content = Files.readString(path); - content = (ArrayList) (Files.readAllLines(pathDept)); - } catch (IOException e) { - // TODO 自動 生成された catch ブロック - e.printStackTrace(); - } - content.stream().forEach(data -> { - - ArrayList content2 = new ArrayList(Arrays.asList(data.split(","))); - employees.add( - new DepartmentData(content2.get(0), content2.get(1))); - }); - - ArrayList allData = new ArrayList(); - allData.addAll(employees); - allData.addAll(departments); - - //intを配列にしたらエラーが出なかった 理由不明 - int employeeCount = 0; - int deptCount = 0; - int[] counter = { 0, 0 }; - - allData.stream().forEach(data -> { - System.out.println(data); //一覧表示 - if (data instanceof EmployeeData) { - counter[0]++; - } else if (data instanceof DepartmentData) { - counter[1]++; - } - - }); - - System.out.println("社員データ:" + counter[0] + "件\n部署データ:" + counter[1] + "件"); System.out.println(); - //検索 - Scanner scanner = new Scanner(System.in); - while (true) { - System.out.println("検索したい項目を入力してください\n社員ID:1 部署名:2 終了:0"); - System.out.print(">>>>"); - String str = scanner.nextLine().strip(); - switch (str) { - case "1": - EmployeeSeach(allData); - break; - case "2": - DepartmentSearch(allData); - break; - case "0": - System.out.println("システムを終了します"); - return; - default: - break; - } + BaseData[] employees = new BaseData[5]; + + //setterがBaseData.javaにはないためコンストラクタで代入 + // for (int i = 0; i < employees.length; i++) { + // employees[i] = new EmployeeData(); + // } + // + // employees[0].setIdEmployee("10000"); + // employees[0].setNmEmployee("山田龍也"); + // employees[0].setKnEmployee("ヤマダタツヤ"); + // employees[0].setMailAddress("yamada@hoge.jp"); + // employees[0].setPassword("aaa"); + // employees[0].setIdDepartment("10"); + // + // employees[1].setIdEmployee("10001"); + // employees[1].setNmEmployee("高橋準\t"); + // employees[1].setKnEmployee("タカハシジュン"); + // employees[1].setMailAddress("jtaka@hoge.jp"); + // employees[1].setPassword("bbb"); + // employees[1].setIdDepartment("10"); + // + // employees[2].setIdEmployee("10002"); + // employees[2].setNmEmployee("麻枝史明"); + // employees[2].setKnEmployee("マエダフミアキ"); + // employees[2].setMailAddress("fmak@hoge.jp"); + // employees[2].setPassword("ccc"); + // employees[2].setIdDepartment("11"); + // + // employees[3].setIdEmployee("10003"); + // employees[3].setNmEmployee("丸戸章介"); + // employees[3].setKnEmployee("マルトショウスケ"); + // employees[3].setMailAddress("marusyo@hoge.jp"); + // employees[3].setPassword("ddd"); + // employees[3].setIdDepartment("12"); + // + // employees[4].setIdEmployee("10004"); + // employees[4].setNmEmployee("三宅武\t"); + // employees[4].setKnEmployee("ミヤケタケシ"); + // employees[4].setMailAddress("miya@hoge.jp"); + // employees[4].setPassword("eee"); + // employees[4].setIdDepartment("13"); + employees[0] = new EmployeeData("10000", "山田龍也", "ヤマダタツヤ", + "yamada@hoge.jp", "aaa", "10"); + employees[1] = new EmployeeData("10001", "高橋準", "タカハシジュン", + "jtaka@hoge.jp", "bbb", "10"); + employees[2] = new EmployeeData("10002", "麻枝史明", "マエダフミアキ", + "fmak@hoge.jp", "ccc", "11"); + employees[3] = new EmployeeData("10003", "丸戸章介", "マルトショウスケ", + "marusyo@hoge.jp", "ddd", "12"); + employees[4] = new EmployeeData("10004", "三宅武", "ミヤケタケシ", + "miya@hoge.jp", "eee", "13"); + + for (BaseData e : employees) { + System.out.println(e); + } + System.out.println("現在の社員のデータ件数:" + EmployeeData.getEmpCount() + "件"); + + System.out.println(); + + //社員データ+部署データ + BaseData[] allData = new BaseData[11]; + for (int i = 0; i < employees.length; i++) { + allData[i] = employees[i]; } - } + DepartmentData[] dept = new DepartmentData[6]; + for (int i = 0; i < dept.length; i++) { + dept[i] = new DepartmentData(); + } + dept[0].setIdDepartment("10"); + dept[0].setNmDepartment("役員"); + allData[5] = dept[0]; + dept[1].setIdDepartment("11"); + dept[1].setNmDepartment("人事・総務部"); + allData[6] = dept[1]; + dept[2].setIdDepartment("12"); + dept[2].setNmDepartment("経理部"); + allData[7] = dept[2]; + dept[3].setIdDepartment("13"); + dept[3].setNmDepartment("システム開発事業部"); + allData[8] = dept[3]; + dept[4].setIdDepartment("14"); + dept[4].setNmDepartment("教育事業部"); + allData[9] = dept[4]; + dept[5].setIdDepartment("15"); + dept[5].setNmDepartment("営業企画部"); + allData[10] = dept[5]; + + int employeeCount = 0; + int deptCount = 0; + for (BaseData data : allData) { + System.out.println(data); + if (data instanceof EmployeeData) { + employeeCount++; + } else if (data instanceof DepartmentData) { + deptCount++; + } + } + System.out.println("社員データ:" + employeeCount + "件\n部署データ:" + deptCount + "件"); + System.out.println(); + + System.out.println("メールアドレス表示"); + for (BaseData data : allData) { + if (data instanceof EmployeeData) { + System.out.println(((EmployeeData) data).getMailAddress()); + } + } + + System.out.println(); + + //nullおよび前後の空白を取り除いた結果が空文字チェック + BaseData emp = new EmployeeData("10000", "デフォルト", "ヤマダタツヤ", "yamada@hoge.jp", "aaa", "10"); + System.out.println(emp); + ((EmployeeData) emp).setNmEmployee(null); + System.out.println(emp); + ((EmployeeData) emp).setNmEmployee("   "); + System.out.println(emp); + + System.out.println(); + + System.out.println("コンストラクタに全てから文字で"); + BaseData emptyEmployee = new EmployeeData("", "", "", "", "", ""); + System.out.println(emptyEmployee); + + System.out.println(); - private static void DepartmentSearch(ArrayList allData) { Scanner scanner = new Scanner(System.in); + while (true) { - System.out.println("検索したい部署名を入力してください(戻る場合は0)"); + System.out.println("検索したい部署名を入力してください(終了する場合は0)"); System.out.print(">>>>"); - String str = scanner.nextLine().strip(); + String searchDeptNm = scanner.nextLine(); String searchDeptId = ""; - switch (str) { - case "0": - System.out.println("検索一覧に戻ります\n"); - return; - default: - for (BaseData data : allData) { - if (data instanceof DepartmentData) { - if (((DepartmentData) data).getNmDepartment().equals(str)) { - searchDeptId = ((DepartmentData) data).getIdDepartment(); - } - } - } - if (searchDeptId.equals("")) { - System.out.println("該当する部署が見つかりませんでした\n"); - continue; - } - for (BaseData data : allData) { - if (data instanceof EmployeeData) { - if (((EmployeeData) data).getIdDepartment().equals(searchDeptId)) { - System.out.println( - ((EmployeeData) data).getNmEmployee() + "\t" - + ((EmployeeData) data).getMailAddress()); - } - } - } - System.out.println(); + if (endChack(searchDeptNm)) break; + for (BaseData data : allData) { + if (data instanceof DepartmentData) { + if (((DepartmentData) data).getNmDepartment().equals(searchDeptNm)) { + searchDeptId = ((DepartmentData) data).getIdDepartment(); + } + } } + if (searchDeptId.equals("")) { + System.out.println("該当する部署が見つかりませんでした"); + continue; + } + for (BaseData data : allData) { + if (data instanceof EmployeeData) { + if (((EmployeeData) data).getIdDepartment().equals(searchDeptId)) { + System.out.println( + ((EmployeeData) data).getNmEmployee() + "\t" + ((EmployeeData) data).getMailAddress()); + } + } + } + System.out.println(); } - } - private static void EmployeeSeach(ArrayList allData) { - Scanner scanner = new Scanner(System.in); while (true) { - System.out.println("検索したい社員IDを入力してください(戻る場合は0)"); + System.out.println("検索したい社員IDを入力してください(終了する場合は0)"); System.out.print(">>>>"); - String str = scanner.nextLine().strip(); - boolean matchFlag = false; - switch (str) { - case "0": - System.out.println("検索一覧に戻ります\n"); - return; - default: - for (BaseData e : allData) { - if (e.getPrimaryKeyValue().equals(str)) { - System.out.println(e); - matchFlag = true; - break; - } - } - if (!matchFlag) { - System.out.println("該当する社員が見つかりませんでした"); - } - System.out.println(); + String findId = scanner.nextLine(); + if (endChack(findId)) break; + boolean matchFlag = false; + for (BaseData e : employees) { + if (e.getPrimaryKeyValue().equals(findId)) { + System.out.println(e); + matchFlag = true; + break; + } } + if (!matchFlag) { + System.out.println("該当する社員が見つかりませんでした"); + } + System.out.println(); } + } + + static boolean endChack(String input) { + if (input.equals("0")) { + System.out.println("システムを終了します"); + return true; + } + return false; + } + }