From 4a9dad81f0a8d309f62cb8da19e8700c94fa2c40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=93=A6=E3=80=80=E6=98=B4=E4=B8=96?= <26-k-kawara-rootship@it-college.co.jp> Date: Fri, 23 Oct 2026 16:15:23 +0900 Subject: [PATCH] =?UTF-8?q?Department=E5=AE=9F=E8=A3=85=E3=81=BE=E3=81=A7?= =?UTF-8?q?=E5=AE=8C=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .classpath | 7 + .gitignore | 1 + .project | 23 ++ .settings/.jsdtscope | 7 + ...rg.eclipse.wst.jsdt.ui.superType.container | 1 + .../org.eclipse.wst.jsdt.ui.superType.name | 1 + file/DepartmentData.csv | 1 + file/EmployeeData.csv | 1 + .../example/access/DepartmentAccess.java | 114 ++++++++ .../rhizome/example/data/DepartmentData.java | 58 +++++ src/com/rhizome/example/main/Main.java | 243 +++++++++++++++++- 11 files changed, 446 insertions(+), 11 deletions(-) create mode 100644 .classpath create mode 100644 .gitignore create mode 100644 .project create mode 100644 .settings/.jsdtscope create mode 100644 .settings/org.eclipse.wst.jsdt.ui.superType.container create mode 100644 .settings/org.eclipse.wst.jsdt.ui.superType.name create mode 100644 src/com/rhizome/example/access/DepartmentAccess.java create mode 100644 src/com/rhizome/example/data/DepartmentData.java diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..31d6a44 --- /dev/null +++ b/.classpath @@ -0,0 +1,7 @@ + + + + + + + diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ae3c172 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/bin/ diff --git a/.project b/.project new file mode 100644 index 0000000..cec334c --- /dev/null +++ b/.project @@ -0,0 +1,23 @@ + + + development-empmanager + + + + + + org.eclipse.wst.validation.validationbuilder + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + org.eclipse.wst.jsdt.core.jsNature + + diff --git a/.settings/.jsdtscope b/.settings/.jsdtscope new file mode 100644 index 0000000..cca691f --- /dev/null +++ b/.settings/.jsdtscope @@ -0,0 +1,7 @@ + + + + + + + diff --git a/.settings/org.eclipse.wst.jsdt.ui.superType.container b/.settings/org.eclipse.wst.jsdt.ui.superType.container new file mode 100644 index 0000000..49c8cd4 --- /dev/null +++ b/.settings/org.eclipse.wst.jsdt.ui.superType.container @@ -0,0 +1 @@ +org.eclipse.wst.jsdt.launching.JRE_CONTAINER \ No newline at end of file diff --git a/.settings/org.eclipse.wst.jsdt.ui.superType.name b/.settings/org.eclipse.wst.jsdt.ui.superType.name new file mode 100644 index 0000000..11006e2 --- /dev/null +++ b/.settings/org.eclipse.wst.jsdt.ui.superType.name @@ -0,0 +1 @@ +Global \ No newline at end of file diff --git a/file/DepartmentData.csv b/file/DepartmentData.csv index 649839f..d041914 100644 --- a/file/DepartmentData.csv +++ b/file/DepartmentData.csv @@ -1,3 +1,4 @@ +09,代表取締役 10,役員 11,人事・総務部 12,経理部 diff --git a/file/EmployeeData.csv b/file/EmployeeData.csv index 60789e5..b2a56ce 100644 --- a/file/EmployeeData.csv +++ b/file/EmployeeData.csv @@ -8,3 +8,4 @@ 10007,葉山稔,ハヤマミノル,mhayama@hoge.jp,hhh,14 10008,川上朱里,カワカミアカリ,kawakami@hoge.jp,iii,14 10009,杉井肇,スギイハジメ,sugi@hoge.jp,jjj,15 +10010,瓦昂世,カワラコウセイ,kawara@hoge.jp,kkk,09 diff --git a/src/com/rhizome/example/access/DepartmentAccess.java b/src/com/rhizome/example/access/DepartmentAccess.java new file mode 100644 index 0000000..83509c2 --- /dev/null +++ b/src/com/rhizome/example/access/DepartmentAccess.java @@ -0,0 +1,114 @@ +package com.rhizome.example.access; + +import java.io.FileNotFoundException; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +import com.rhizome.example.data.BaseData; +import com.rhizome.example.data.DepartmentData; + +public class DepartmentAccess extends BaseAccess{ + private static final String DEPDATA_FILEPATH = "file/DepartmentData.csv"; + public DepartmentAccess() { + super(DEPDATA_FILEPATH); + } + @Override + public List selectById(String key) throws FileNotFoundException { + //全件データ + List allList = new ArrayList<>(); + + //取得用リスト(CSV形式) + List csvList = readData(); + + for (String line : csvList) { + DepartmentData department = new DepartmentData(); + String[] columns = line.split(","); + department.setIdDepartment(columns[0]); + department.setNmDepartment(columns[1]); + + allList.add(department); + } + //IDでの抽出データ + List selectList = new ArrayList<>(); + + for (BaseData department : allList) { + if (department.getPrimaryKeyValue().equals(key)) { + selectList.add(department); + } + } + + return selectList; + } + + @Override + public void insert(BaseData data) throws IOException { + //CSVファイルに追記する + addData(data); + } + + @Override + public void update(BaseData updateData) throws IOException { + //更新後データリスト + List updatedList = new ArrayList<>(); + + //全件取得し、更新データを反映する + List allList = new ArrayList<>(); + + //取得用リスト(CSV形式) + List csvList = readData(); + + for (String line : csvList) { + DepartmentData department = new DepartmentData(); + String[] columns = line.split(","); + department.setIdDepartment(columns[0]); + department.setNmDepartment(columns[1]); + + allList.add(department); + } + + for (BaseData department : allList) { + if(department.getPrimaryKeyValue().equals(updateData.getPrimaryKeyValue())) { + //指定されたデータとキーが一致するデータの場合、更新データを設定 + updatedList.add(updateData); + } else { + //上記以外は取得したデータをそのまま設定 + updatedList.add(department); + } + } + //ファイル上書き処理 + updateData(updatedList); + + } + + @Override + public void delete(String key) throws IOException { + //全件から削除データを除いたリスト + List deletedList = new ArrayList<>(); + + //全件取得し、keyに該当するデータをリストから削除する + //全件データ + List allList = new ArrayList<>(); + + //取得用リスト(CSV形式) + List csvList = readData(); + + for (String line : csvList) { + DepartmentData department = new DepartmentData(); + String[] columns = line.split(","); + department.setIdDepartment(columns[0]); + department.setNmDepartment(columns[1]); + + allList.add(department); + } + + for (BaseData department : allList) { + if(!department.getPrimaryKeyValue().equals(key)) { + deletedList.add(department); + } + } + //ファイル上書き処理 + updateData(deletedList); + } + +} \ No newline at end of file diff --git a/src/com/rhizome/example/data/DepartmentData.java b/src/com/rhizome/example/data/DepartmentData.java new file mode 100644 index 0000000..3588161 --- /dev/null +++ b/src/com/rhizome/example/data/DepartmentData.java @@ -0,0 +1,58 @@ +package com.rhizome.example.data; + +public class DepartmentData extends BaseData { + /** 部署ID */ + private String idDepartment; + /** 部署名 */ + private String nmDepartment; + + /** + * @return 部署ID + */ + public String getIdDepartment() { + return idDepartment; + } + + /** + * @param idDepartment 部署ID + */ + public void setIdDepartment(String idDepartment) { + this.idDepartment = idDepartment; + } + + /** + * @return 部署名 + */ + public String getNmDepartment() { + return nmDepartment; + } + /** + * @param ndDepartment 部署名 + */ + public void setNmDepartment(String nmDepartment) { + this.nmDepartment = nmDepartment; + } + + + + /** + * {@inheritDoc} + */ + @Override + public String toString() { + return getIdDepartment() + "\t" + getNmDepartment(); + + } + + @Override + public String toCSV() { + return getIdDepartment() + "," + getNmDepartment(); + } + + @Override + public String getPrimaryKeyValue() { + return idDepartment; + + } + +} diff --git a/src/com/rhizome/example/main/Main.java b/src/com/rhizome/example/main/Main.java index a08fa53..20d9214 100644 --- a/src/com/rhizome/example/main/Main.java +++ b/src/com/rhizome/example/main/Main.java @@ -1,12 +1,16 @@ package com.rhizome.example.main; +import java.io.BufferedReader; import java.io.FileNotFoundException; +import java.io.FileReader; import java.io.IOException; import java.util.List; import java.util.Scanner; +import com.rhizome.example.access.DepartmentAccess; import com.rhizome.example.access.EmployeeAccess; import com.rhizome.example.data.BaseData; +import com.rhizome.example.data.DepartmentData; import com.rhizome.example.data.EmployeeData; public class Main { @@ -21,12 +25,13 @@ public class Main { System.out.println("システムを開始します"); while (true) { try { - new Main().start(); + new Main().Start(); } catch (Exception e) { System.out.println("予期せぬエラーが発生しました"); e.printStackTrace(); } } + } /** @@ -34,33 +39,161 @@ public class Main { * @throws IOException * */ - public void start() throws IOException { + public void Start() throws IOException { System.out.println(); - System.out.println("1:検索 2:登録 3:更新 4:削除 0:終了"); + System.out.println("1:検索 2:登録 3:更新 4:削除 9:データ切り替え 0:終了 (管理対象:Employee)"); String ope = sc.nextLine(); switch (ope) { - case "1": //検索 - empSelect(); + case "1": //検索 ←変えたとこ + empDivide(); break; - case "2": //登録 + case "2": //登録 empInsert(); break; - case "3": //更新 + case "3": //更新 empUpdate(); break; - case "4": //削除 + case "4": //削除 empDelete(); break; - case "0": //修了 + case "9": //切り替え ←追加したとこ + Change(); + break; + case "0": //終了 System.out.println("システムを終了します"); System.exit(0); + break; default: System.out.println("指定の番号を入力してください"); break; } } + //自分がつくったところ 部署のデータ + public void departmentStart() throws IOException { + System.out.println(); + System.out.println("1:検索 2:登録 3:更新 4:削除 9:データ切り替え 0:終了 (管理対象:Department)"); + String ope = sc.nextLine(); + + switch (ope) { + case "1": //検索 おかしい + depDivide(); + break; + case "2": //登録 おけ + depInsert(); + break; + case "3": //更新 おけ + depUpdate(); + break; + case "4": //削除 おかしい + depDelete(); + break; + case "9": //切り替え おけ + Change(); + break; + case "0": //終了 おけ + System.out.println("システムを終了します"); + System.exit(0); + break; + default: + System.out.println("指定の番号を入力してください"); + break; + } + } + + //自分がつくったところ データ切り替えるか確認するばしょ + public void Change() throws IOException { + System.out.println(); + System.out.println("データを切り替えますか?"); + System.out.println("1:部署データへ 2:社員データへ 0:終了"); + String ope = sc.nextLine(); + + switch (ope) { + case "1": //部署データに切り替える おけ + departmentStart(); + break; + case "2": //社員データに戻る おけ + Start(); + break; + case "0": //終了 + System.out.println("システムを終了します"); + System.exit(0); + break; + default: + System.out.println("指定の番号を入力してください"); + break; + } + + } + + //自分がつくったところ 全検索か条件検索か + public void empDivide() throws IOException { + System.out.println(); + System.out.println("1:全検索 2:条件検索 それ以外:戻る"); + String ope = sc.nextLine(); + + switch (ope) { + case "1": //全検索 おけ + empExportcsv(); + break; + case "2": //条件検索 おけ + empSelect(); + break; + default: + break; + + } + } + + //自分がつくったところ 部署 全検索か 条件検索か + public void depDivide() throws IOException { + System.out.println(); + System.out.println("1:全検索 2:条件検索 それ以外:戻る"); + String ope = sc.nextLine(); + + switch (ope) { + case "1": //全検索 おけ + depExportcsv(); + break; + case "2": //条件検索 おけ + depSelect(); + break; + default: + break; + } + } + + //自分がつくったとこ csv指定して出力 + public void empExportcsv() throws IOException { + + try (BufferedReader reader = new BufferedReader(new FileReader("file/EmployeeData.csv"))) { + String line; + + while ((line = reader.readLine()) != null) { + String formatted = line.replace(",", " "); + System.out.println(formatted); + } + + } + + } + + //自分がつくったとこ 部署csv指定して出力 + public void depExportcsv() throws IOException { + + try (BufferedReader reader = new BufferedReader(new FileReader("file/DepartmentData.csv"))) { + String line; + + while ((line = reader.readLine()) != null) { + String formatted = line.replace(",", " "); + System.out.println(formatted); + } + + } + + } + /** * 社員ファイルから情報を検索する * @@ -75,7 +208,7 @@ public class Main { //idに一致する社員データ取得 list = ea.selectById(id); - if (list.size() == 0) { //取得結果が0件の場合 + if (list.size() == 0) { //取得結果が0件の場合 System.out.println("入力された値で情報がみつかりませんでした"); } @@ -83,6 +216,29 @@ public class Main { for (BaseData employee : list) { System.out.println(employee.toString()); } + + } + + //自分がつくったところ 部署ファイルから情報検索 + public void depSelect() throws FileNotFoundException { + DepartmentAccess da = new DepartmentAccess(); + List list; + + //IDの入力および入力チェック + String id = inputCheck("ID", true); + //idに一致する社員データ取得 + list = da.selectById(id); + + if (list.size() == 0) { //取得結果が0件の場合 + System.out.println("入力された値で情報がみつかりませんでした"); + } + + //取得結果件数分、データをタブ区切りで出力する + for (BaseData department : list) { + System.out.println(department.toString()); + + } + } /** @@ -114,6 +270,23 @@ public class Main { System.out.println("登録が完了しました"); } + //自分がつくったところ 部署ファイルに情報登録 + public void depInsert() throws IOException { + //各項目の入力および入力チェック処理 + String id = inputCheck("部署ID", true); + String name = inputCheck("部署名", false); + + //部署データインスタンスを生成し、入力値を設定 + DepartmentData department = new DepartmentData(); + department.setIdDepartment(id); + department.setNmDepartment(name); + + DepartmentAccess da = new DepartmentAccess(); + //ファイルデータ追加処理 + da.insert(department); + System.out.println("登録が完了しました"); + } + /** * 社員ファイルの情報を更新する * @@ -151,6 +324,29 @@ public class Main { System.out.println("更新が完了しました"); } + //自分が作ったところ 部署データアップデート + public void depUpdate() throws IOException { + DepartmentAccess da = new DepartmentAccess(); + //入力チェック + String id = inputCheck("部署ID", true); + //存在チェック + if (da.selectById(id).size() == 0) { + System.out.println("入力された値で情報がみつかりませんでした"); + return; + } + + //名前入力チェック + String name = inputCheck("部署名", false); + DepartmentData department = new DepartmentData(); + department.setIdDepartment(id); + department.setNmDepartment(name); + + //ファイルデータ更新処理 + da.update(department); + System.out.println("更新が完了しました"); + + } + /** * 社員ファイルの情報を削除する * @@ -166,7 +362,7 @@ public class Main { System.out.println("入力された値で情報がみつかりませんでした"); return; } - System.out.println("指定されたIDの情報を削除します? Y/y"); + System.out.println("指定されたIDの情報を削除しますか? Y/y"); System.out.println("(Y/y以外の入力であればキャンセル)"); String yY = sc.nextLine(); if (!"y".equals(yY) && !"Y".equals(yY)) { @@ -178,6 +374,30 @@ public class Main { System.out.println("削除が完了しました"); } + //自分がつくったところ 部署データ削除 + public void depDelete() throws IOException { + DepartmentAccess da = new DepartmentAccess(); + //入力チェック + String id = inputCheck("部署ID", true); + //存在チェック + if (da.selectById(id).size() == 0) { + System.out.println("入力された値で情報がみつかりませんでした"); + return; + } + System.out.println("指定されたIDの情報を削除しますか? Y/y"); + System.out.println("(Y/y以外の入力であればキャンセル)"); + String yY = sc.nextLine(); + if (!"y".equals(yY) && !"Y".equals(yY)) { + System.out.println("削除をキャンセルしました"); + return; + } + + //ファイルデータ削除処理 + da.delete(id); + System.out.println("削除が完了しました"); + + } + /** * 入力値を判定し、返却する * @@ -208,4 +428,5 @@ public class Main { } return str; } + }