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;
}
+
+
+
}