From c18a8fe81c027f82a66dfe174ff4db594d5b0870 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A6=8F=E6=A3=AE=E3=80=80=E7=99=BE=E5=A4=A2?= <26-m-fukumori-cosmicb@it-college.co.jp> Date: Fri, 23 Oct 2026 16:26:44 +0900 Subject: [PATCH] 2026/10/23 --- .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 + .../rhizome/example/access/BaseAccess.java | 8 + .../example/access/DepartmentAccess.java | 159 ++++++++++++ .../example/access/EmployeeAccess.java | 38 ++- src/com/rhizome/example/data/BaseData.java | 1 + .../rhizome/example/data/DepartmentData.java | 53 ++++ .../rhizome/example/main/DepartmentMain.java | 234 ++++++++++++++++++ src/com/rhizome/example/main/Main.java | 68 ++++- 13 files changed, 584 insertions(+), 17 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 create mode 100644 src/com/rhizome/example/main/DepartmentMain.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/src/com/rhizome/example/access/BaseAccess.java b/src/com/rhizome/example/access/BaseAccess.java index 4d553cc..952369f 100644 --- a/src/com/rhizome/example/access/BaseAccess.java +++ b/src/com/rhizome/example/access/BaseAccess.java @@ -108,4 +108,12 @@ public abstract class BaseAccess { * @throws IOException */ public abstract void delete(String key) throws IOException; + + + + + public List selectByidDepartment(String key) throws FileNotFoundException { + // TODO 自動生成されたメソッド・スタブ + return null; + } } diff --git a/src/com/rhizome/example/access/DepartmentAccess.java b/src/com/rhizome/example/access/DepartmentAccess.java new file mode 100644 index 0000000..6cad76c --- /dev/null +++ b/src/com/rhizome/example/access/DepartmentAccess.java @@ -0,0 +1,159 @@ +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 DEPARTMENT_FILEPATH = "file/DepartmentData.csv"; + + public DepartmentAccess() { + super(DEPARTMENT_FILEPATH); + } + + @Override + //条件検索用メソッド + public List selectByidDepartment(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.setNameDepartment(columns[1]); + + + allList.add(department); + } + + + //IDでの抽出データ + List selectList = new ArrayList<>(); + + for (BaseData department : allList) { + if (department.getPrimaryKeyValue().equals(key)) { + selectList.add(department); + } + } + + return selectList; + + } + + //全件検索用メソッド + public List selectByallDepartment(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.setNameDepartment(columns[1]); + + + allList.add(department); + } + + + return allList; + + } + + + @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.setNameDepartment(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.setNameDepartment(columns[1]); + + + allList.add(department); + } + + for (BaseData department : allList) { + if(!department.getPrimaryKeyValue().equals(key)) { + deletedList.add(department); + } + } + //ファイル上書き処理 + updateData(deletedList); + } + + @Override + public List selectById(String key) throws FileNotFoundException { + // TODO 自動生成されたメソッド・スタブ + return null; + } + + + + +} diff --git a/src/com/rhizome/example/access/EmployeeAccess.java b/src/com/rhizome/example/access/EmployeeAccess.java index 4eb9e4b..1edc35d 100644 --- a/src/com/rhizome/example/access/EmployeeAccess.java +++ b/src/com/rhizome/example/access/EmployeeAccess.java @@ -17,13 +17,15 @@ public class EmployeeAccess extends BaseAccess { } @Override + //条件検索用メソッド public List selectById(String key) throws FileNotFoundException { //全件データ List allList = new ArrayList<>(); - + //取得用リスト(CSV形式) List csvList = readData(); - + + for (String line : csvList) { EmployeeData employee = new EmployeeData(); String[] columns = line.split(","); @@ -35,8 +37,8 @@ public class EmployeeAccess extends BaseAccess { employee.setIdDepartment(columns[5]); allList.add(employee); - } - + } + //IDでの抽出データ List selectList = new ArrayList<>(); @@ -47,7 +49,35 @@ public class EmployeeAccess extends BaseAccess { } return selectList; + } + + //全件検索用メソッド + public List selectByall(String key) throws FileNotFoundException { + //全件データ + List allList = new ArrayList<>(); + + //取得用リスト(CSV形式) + List csvList = readData(); + + + for (String line : csvList) { + EmployeeData employee = new EmployeeData(); + String[] columns = line.split(","); + employee.setIdEmployee(columns[0]); + employee.setNmEmployee(columns[1]); + employee.setKnEmployee(columns[2]); + employee.setMailAddress(columns[3]); + employee.setPassword(columns[4]); + employee.setIdDepartment(columns[5]); + + allList.add(employee); + } + + return allList; + + } + @Override public void insert(BaseData data) throws IOException { diff --git a/src/com/rhizome/example/data/BaseData.java b/src/com/rhizome/example/data/BaseData.java index 3a5ac18..3ada6ee 100644 --- a/src/com/rhizome/example/data/BaseData.java +++ b/src/com/rhizome/example/data/BaseData.java @@ -19,4 +19,5 @@ public abstract class BaseData { */ public abstract String getPrimaryKeyValue(); + } diff --git a/src/com/rhizome/example/data/DepartmentData.java b/src/com/rhizome/example/data/DepartmentData.java new file mode 100644 index 0000000..7fcf2fa --- /dev/null +++ b/src/com/rhizome/example/data/DepartmentData.java @@ -0,0 +1,53 @@ +package com.rhizome.example.data; + +public class DepartmentData extends BaseData{ + /** 部署ID */ + private String idDepartment; + /** 部署名 */ + private String nameDepartment; + + /** + * @return 部署ID + */ + public String getIdDepartment() { + return idDepartment; + } + /** + * @param idDepartment 部署ID + */ + public void setIdDepartment(String idDepartment) { + this.idDepartment = idDepartment; + } + + /** + * @return 部署名 + */ + public String getNameDepartment() { + return nameDepartment; + } + /** + * @param nameDepartment 部署名 + */ + public void setNameDepartment(String nameDepartment) { + this.nameDepartment = nameDepartment; + } + + @Override + public String toString() { + // TODO 自動生成されたメソッド・スタブ + return getIdDepartment() + "\t" + getNameDepartment(); + } + + @Override + public String toCSV() { + // TODO 自動生成されたメソッド・スタブ + return getIdDepartment() + "," + getNameDepartment(); + } + + @Override + public String getPrimaryKeyValue() { + // TODO 自動生成されたメソッド・スタブ + return idDepartment; + } + +} diff --git a/src/com/rhizome/example/main/DepartmentMain.java b/src/com/rhizome/example/main/DepartmentMain.java new file mode 100644 index 0000000..21cb575 --- /dev/null +++ b/src/com/rhizome/example/main/DepartmentMain.java @@ -0,0 +1,234 @@ +package com.rhizome.example.main; + +import java.io.FileNotFoundException; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import java.util.Scanner; + +import com.rhizome.example.access.DepartmentAccess; +import com.rhizome.example.data.BaseData; +import com.rhizome.example.data.DepartmentData; + + +public class DepartmentMain { + static Scanner sc = new Scanner(System.in); + + public static void main(String[] args) { + System.out.println("システムを開始します"); + while (true) { + try { + new DepartmentMain ().dpData(); + } catch (Exception e) { + System.out.println("予期せぬエラーが発生しました"); + e.printStackTrace(); + } + } + } + + /** + * 処理選択を行う + * @throws IOException + * + */ + public void dpData() throws IOException { + System.out.println(); + System.out.println("1:検索 2:登録 3:更新 4:削除 9:データ切り替え 0:終了"); + String ope = sc.nextLine(); + DepartmentMain dp = new DepartmentMain(); + + switch (ope) { + case "1": //検索 + dpSelect(); + break; + case "2": //登録 + dpInsert(); + break; + case "3": //更新 + dpUpdate(); + break; + case "4": //削除 + dpDelete(); + break; + case "0": //修了 + System.out.println("システムを終了します"); + System.exit(0); + case "9": + dp.dpData(); + default: + System.out.println("指定の番号を入力してください"); + break; + } + } + + + + /** + * 社員ファイルから情報を検索する + * + * @throws FileNotFoundException + */ + public void dpSelect() throws FileNotFoundException { + System.out.println(); + System.out.println("1:全件検索 2:条件検索"); + String search = sc.nextLine(); + + switch(search) { + case "1": //全件検索 + //DepartmentData.csvファイルに記載されている情報が一覧で表示 + DepartmentAccess all = new DepartmentAccess(); + List allList = new ArrayList<>(); + allList = all.selectByallDepartment(search); + + for (BaseData department : allList) { + System.out.println(department.toString()); + } + + break; + + + case "2": //条件検索 + //IDの入力および入力チェック + DepartmentAccess ea = new DepartmentAccess(); + List list; + + //IDの入力および入力チェック + String id = inputCheck("ID", true); + //idに一致する社員データ取得 + list = ea.selectByidDepartment(id); + + if (list.size() == 0) { //取得結果が0件の場合 + System.out.println("入力された値で情報がみつかりませんでした"); + } + //取得結果件数分、データをタブ区切りで出力する + for (BaseData department : list) { + System.out.println(department.toString()); + } + break; + + default: //1.2以外なら戻る + try { + dpData(); + } catch (IOException e) { + // TODO 自動生成された catch ブロック + e.printStackTrace(); + } //メインメニューへ戻る + break; + } + + } + + + /** + * 社員ファイルに情報を登録する + * + * @throws IOException + */ + public void dpInsert() throws IOException { + //各項目の入力および入力チェック処理 + String id = inputCheck("部署ID", true); + String name = inputCheck("部署名", false); + + + //社員データインスタンスを生成し、入力値を設定 + DepartmentData department = new DepartmentData(); + department.setIdDepartment(id); + department.setNameDepartment(name); + + DepartmentAccess ea = new DepartmentAccess(); + //ファイルデータ追加処理 + ea.insert(department); + System.out.println("登録が完了しました"); + } + + /** + * 社員ファイルの情報を更新する + * + * @throws IOException + */ + public void dpUpdate() throws IOException { + DepartmentAccess ea = new DepartmentAccess(); + + //IDの入力および入力チェック + String id = inputCheck("ID", true); + //IDの存在チェック + if (ea.selectById(id).size() == 0) { + System.out.println("入力された値で情報がみつかりませんでした"); + return; + } + + //各項目の入力および入力チェック処理 + String name = inputCheck("部署名", false); + + + //社員データインスタンスを生成し、入力値を設定 + DepartmentData department = new DepartmentData(); + department.setIdDepartment(id); + department.setNameDepartment(name); + + + //ファイルデータ更新処理 + ea.update(department); + System.out.println("更新が完了しました"); + } + + /** + * 社員ファイルの情報を削除する + * + * @throws IOException + */ + public void dpDelete() throws IOException { + DepartmentAccess ea = new DepartmentAccess(); + + //IDの入力および入力チェック + String id = inputCheck("ID", true); + //IDの存在チェック + if (ea.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; + } + //ファイルデータ削除処理 + ea.delete(id); + System.out.println("削除が完了しました"); + } + + /** + * 入力値を判定し、返却する + * + * @param titleName 入力項目名 + * @param flg 数値チェック可否フラグ + * @return チェック済み入力値 + */ + public static String inputCheck(String titleName, boolean flg) { + String str = null; + while (true) { + System.out.println(titleName + "を入力してください"); + str = sc.nextLine(); + if (str.trim().length() == 0) { + System.out.println(titleName + "は入力必須です。"); + continue; + } + if (flg) { + if (str.trim().length() > 0) { + try { + Integer.parseInt(str); + } catch (NumberFormatException e) { + System.out.println(titleName + "は数値入力です"); + continue; + } + } + } + break; + } + return str; + + + } +} \ No newline at end of file diff --git a/src/com/rhizome/example/main/Main.java b/src/com/rhizome/example/main/Main.java index a08fa53..a858e41 100644 --- a/src/com/rhizome/example/main/Main.java +++ b/src/com/rhizome/example/main/Main.java @@ -2,6 +2,7 @@ package com.rhizome.example.main; import java.io.FileNotFoundException; import java.io.IOException; +import java.util.ArrayList; import java.util.List; import java.util.Scanner; @@ -9,6 +10,7 @@ import com.rhizome.example.access.EmployeeAccess; import com.rhizome.example.data.BaseData; import com.rhizome.example.data.EmployeeData; + public class Main { static Scanner sc = new Scanner(System.in); @@ -36,8 +38,9 @@ public class Main { */ 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:終了"); String ope = sc.nextLine(); + DepartmentMain dp = new DepartmentMain(); switch (ope) { case "1": //検索 @@ -55,35 +58,71 @@ public class Main { case "0": //修了 System.out.println("システムを終了します"); System.exit(0); + case "9": + dp.dpData(); + break; default: System.out.println("指定の番号を入力してください"); break; } } + /** * 社員ファイルから情報を検索する * * @throws FileNotFoundException */ public void empSelect() throws FileNotFoundException { - EmployeeAccess ea = new EmployeeAccess(); - List list; + System.out.println(); + System.out.println("1:全件検索 2:条件検索"); + String search = sc.nextLine(); + + switch(search) { + case "1": //全件検索 + //EmployeeData.csvファイルに記載されている情報が一覧で表示 + EmployeeAccess all = new EmployeeAccess(); + List allList = new ArrayList<>(); + allList = all.selectByall(search); + + for (BaseData employee : allList) { + System.out.println(employee.toString()); + } + + break; + + + case "2": //条件検索 + //IDの入力および入力チェック + EmployeeAccess ea = new EmployeeAccess(); + List list; - //IDの入力および入力チェック - String id = inputCheck("ID", true); - //idに一致する社員データ取得 - list = ea.selectById(id); + //IDの入力および入力チェック + String id = inputCheck("ID", true); + //idに一致する社員データ取得 + list = ea.selectById(id); - if (list.size() == 0) { //取得結果が0件の場合 - System.out.println("入力された値で情報がみつかりませんでした"); + if (list.size() == 0) { //取得結果が0件の場合 + System.out.println("入力された値で情報がみつかりませんでした"); + } + //取得結果件数分、データをタブ区切りで出力する + for (BaseData employee : list) { + System.out.println(employee.toString()); + } + break; + + default: //1.2以外なら戻る + try { + start(); + } catch (IOException e) { + // TODO 自動生成された catch ブロック + e.printStackTrace(); + } //メインメニューへ戻る + break; } - //取得結果件数分、データをタブ区切りで出力する - for (BaseData employee : list) { - System.out.println(employee.toString()); - } } + /** * 社員ファイルに情報を登録する @@ -208,4 +247,7 @@ public class Main { } return str; } + + + }