diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..bdc72e7
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+実行例(追加問題含め)/em_oop.jar
diff --git a/DepartmentData.csv b/DepartmentData.csv
new file mode 100644
index 0000000..649839f
--- /dev/null
+++ b/DepartmentData.csv
@@ -0,0 +1,6 @@
+10,役員
+11,人事・総務部
+12,経理部
+13,システム開発事業部
+14,教育事業部
+15,営業企画部
diff --git a/EmployeeData.csv b/EmployeeData.csv
new file mode 100644
index 0000000..c2800ae
--- /dev/null
+++ b/EmployeeData.csv
@@ -0,0 +1,11 @@
+10000,山田龍也,ヤマダタツヤ,yamada@hoge.jp,aaa,10
+10001,高橋準,タカハシジュン,jtaka@hoge.jp,bbb,10
+10002,麻枝史明,マエダフミアキ,fmak@hoge.jp,ccc,11
+10003,丸戸章介,マルトショウスケ,marusyo@hoge.jp,ddd,12
+10004,三宅武,ミヤケタケシ,miya@hoge.jp,eee,13
+10005,丸井悠,マルイハルカ,haru@hoge.jp,fff,13
+10006,涼元香織,スズモトカオリ,suzumoto@hoge.jp,ggg,13
+10007,葉山稔,ハヤマミノル,mhayama@hoge.jp,hhh,14
+10008,川上朱里,カワカミアカリ,kawakami@hoge.jp,iii,14
+10009,杉井肇,スギイハジメ,sugi@hoge.jp,jjj,15
+12345,石原,イシハラ,tesr,test,10
diff --git a/実行例_20261020/.classpath b/実行例_20261020/.classpath
new file mode 100644
index 0000000..463d5f9
--- /dev/null
+++ b/実行例_20261020/.classpath
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/実行例_20261020/.project b/実行例_20261020/.project
new file mode 100644
index 0000000..d4cd03d
--- /dev/null
+++ b/実行例_20261020/.project
@@ -0,0 +1,17 @@
+
+
+ 実行例_20261020
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+
+ org.eclipse.jdt.core.javanature
+
+
diff --git a/実行例_20261020/.settings/org.eclipse.core.resources.prefs b/実行例_20261020/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/実行例_20261020/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/=UTF-8
diff --git a/実行例_20261020/.settings/org.eclipse.jdt.core.prefs b/実行例_20261020/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..9a7984b
--- /dev/null
+++ b/実行例_20261020/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,11 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=21
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=21
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=21
diff --git a/実行例_20261020/bin/BaseData.class b/実行例_20261020/bin/BaseData.class
new file mode 100644
index 0000000..19bdda4
Binary files /dev/null and b/実行例_20261020/bin/BaseData.class differ
diff --git a/実行例_20261020/bin/DepartmentData.class b/実行例_20261020/bin/DepartmentData.class
new file mode 100644
index 0000000..2b4b4d0
Binary files /dev/null and b/実行例_20261020/bin/DepartmentData.class differ
diff --git a/実行例_20261020/bin/EmployeeData.class b/実行例_20261020/bin/EmployeeData.class
new file mode 100644
index 0000000..0d9f977
Binary files /dev/null and b/実行例_20261020/bin/EmployeeData.class differ
diff --git a/実行例_20261020/bin/Main.class b/実行例_20261020/bin/Main.class
new file mode 100644
index 0000000..ddeb2f8
Binary files /dev/null and b/実行例_20261020/bin/Main.class differ
diff --git a/実行例_20261020/src/BaseData.java b/実行例_20261020/src/BaseData.java
new file mode 100644
index 0000000..2240055
--- /dev/null
+++ b/実行例_20261020/src/BaseData.java
@@ -0,0 +1,10 @@
+
+
+public abstract class BaseData {
+
+ public abstract String toString();
+
+ public abstract String toCSV();
+
+ public abstract String getPrimaryKeyValue();
+}
diff --git a/実行例_20261020/src/DepartmentData.java b/実行例_20261020/src/DepartmentData.java
new file mode 100644
index 0000000..54f5132
--- /dev/null
+++ b/実行例_20261020/src/DepartmentData.java
@@ -0,0 +1,38 @@
+
+
+public class DepartmentData extends BaseData {
+
+ private String idDepartment;
+ private String nmDepartment;
+
+ public String getIdDepartment() {
+ return idDepartment;
+ }
+
+ public void setIdDepartment(String idDepartment) {
+ this.idDepartment = idDepartment;
+ }
+
+ public String getNmDepartment() {
+ return nmDepartment;
+ }
+
+ public void setNmDepartment(String nmDepartment) {
+ this.nmDepartment = nmDepartment;
+ }
+
+ @Override
+ public String toString() {
+ return getIdDepartment() + "\t" + getNmDepartment();
+ }
+
+ @Override
+ public String toCSV() {
+ return getIdDepartment() + "," + getNmDepartment();
+ }
+
+ @Override
+ public String getPrimaryKeyValue() {
+ return getIdDepartment();
+ }
+}
diff --git a/実行例_20261020/src/EmployeeData.java b/実行例_20261020/src/EmployeeData.java
new file mode 100644
index 0000000..ad40dcf
--- /dev/null
+++ b/実行例_20261020/src/EmployeeData.java
@@ -0,0 +1,147 @@
+
+
+public class EmployeeData extends BaseData {
+ //社員ID
+ private String idEmployee;
+ //社員名
+ private String nmEmployee;
+ //社員名カナ
+ private String knEmployee;
+ //メールアドレス
+ private String mailAddress;
+ //パスワード
+ private String password;
+ //部署ID
+ private String idDepartment;
+ //社員データ件数
+ private static int empCount = 0;
+ //コンストラクタ
+ public EmployeeData() {
+ empCount++;
+ }
+ //コンストラクタ
+ public EmployeeData(
+ String idEmployee,
+ String nmEmployee,
+ String knEmployee,
+ String mailAddress,
+ String password,
+ String idDepartment) {
+
+ this.setIdEmployee(idEmployee);
+ this.setNmEmployee(nmEmployee);
+ this.setKnEmployee(knEmployee);
+ this.setMailAddress(mailAddress);
+ this.setPassword(password);
+ this.setIdDepartment(idDepartment);
+
+ empCount++;
+ }
+
+ //ゲッター
+ public String getIdEmployee() {
+ return idEmployee;
+ }
+ public String getNmEmployee() {
+ return nmEmployee;
+ }
+ public String getKnEmployee() {
+ return knEmployee;
+ }
+ public String getMailAddress() {
+ return mailAddress;
+ }
+ public String getPassword() {
+ return password;
+ }
+ public String getIdDepartment() {
+ return idDepartment;
+ }
+ //セッター
+ public void setIdEmployee(String idEmployee) {
+
+ if (idEmployee == null) {
+ System.out.println("社員IDが空のため設定できませんでした");
+ return;
+ }
+
+ if (idEmployee.trim().isEmpty()) {
+ System.out.println("社員IDが空のため設定できませんでした");
+ return;
+ }
+
+ this.idEmployee = idEmployee;
+ }
+
+ public void setNmEmployee(String nmEmployee) {
+
+ if (nmEmployee == null) {
+ System.out.println("社員名が空のため設定できませんでした");
+ return;
+ }
+
+ if (nmEmployee.trim().isEmpty()) {
+ System.out.println("社員名が空のため設定できませんでした");
+ return;
+ }
+
+ this.nmEmployee = nmEmployee;
+ }
+
+ public void setKnEmployee(String knEmployee) {
+ this.knEmployee = knEmployee;
+ }
+
+ public void setMailAddress(String mailAddress) {
+ this.mailAddress = mailAddress;
+ }
+
+ public void setPassword(String password) {
+ this.password = password;
+ }
+
+ public void setIdDepartment(String idDepartment) {
+ this.idDepartment = idDepartment;
+ }
+
+ //toString
+ @Override
+ public String toString() {
+
+ return getIdEmployee() + "\t"
+ + getNmEmployee() + "\t"
+ + getKnEmployee() + "\t"
+ + getMailAddress() + "\t"
+ + getPassword() + "\t"
+ + getIdDepartment();
+ }
+
+ //CSV形式へ変換
+ @Override
+ public String toCSV() {
+
+ return getIdEmployee() + ","
+ + getNmEmployee() + ","
+ + getKnEmployee() + ","
+ + getMailAddress() + ","
+ + getPassword() + ","
+ + getIdDepartment();
+ }
+
+ //キー取得
+ @Override
+ public String getPrimaryKeyValue() {
+
+ return getIdEmployee();
+ }
+
+ //ID一致判定
+ public boolean isMatchId(String id) {
+ return getIdEmployee().equals(id);
+ }
+
+ //件数取得
+ public static int getEmpCount() {
+ return empCount;
+ }
+}
\ No newline at end of file
diff --git a/実行例_20261020/src/Main.java b/実行例_20261020/src/Main.java
new file mode 100644
index 0000000..6ab2c63
--- /dev/null
+++ b/実行例_20261020/src/Main.java
@@ -0,0 +1,214 @@
+import java.io.BufferedReader;
+import java.io.FileReader;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.util.Scanner;
+
+public class Main {
+
+ public static void main(String[] args) {
+ Scanner scanner = new Scanner(System.in);
+
+ //社員データ格納用配列
+ //CSVから読み込んだ社員データを格納する
+ EmployeeData[] employees = new EmployeeData[100];
+
+ //読み込んだ件数管理用
+ int count = 0;
+
+ // EmployeeData.csv読込
+ try {
+
+ BufferedReader br =
+ new BufferedReader(new FileReader("C:\\Users\\石原 叶大\\Documents\\em-oop\\EmployeeData.csv"));
+
+ String line;
+
+
+ // CSVを1行ずつ読込
+ while ((line = br.readLine()) != null) {
+
+ //カンマ区切りで分割
+ String[] data = line.split(",");
+
+ // EmployeeData生成
+ EmployeeData employee = new EmployeeData();
+
+
+ //CSVの値をEmployeeDataへ設定
+ employee.setIdEmployee(data[0]);
+ employee.setNmEmployee(data[1]);
+ employee.setKnEmployee(data[2]);
+ employee.setMailAddress(data[3]);
+ employee.setPassword(data[4]);
+ employee.setIdDepartment(data[5]);
+
+
+ //配列へ格納
+ employees[count] = employee;
+
+ //件数加算
+ count++;
+ }
+
+ //ファイルクローズ
+ br.close();
+
+ } catch (IOException e) {
+
+ //CSV読込失敗
+ System.out.println("CSVの読み込みに失敗しました");
+
+ return;
+ }
+
+ //システム開始
+ System.out.println("システムを開始します");
+
+ //ループ
+ //0が入力されるまで繰り返す
+ while (true) {
+
+ System.out.println();
+
+ //メニュー表示
+ System.out.println("1:検索 2:登録 3:更新 4:削除 0:終了");
+
+ //メニュー入力
+ String menu = scanner.nextLine();
+
+ //システム終了
+ if (menu.equals("0")) {
+ System.out.println("システムを終了します");
+
+ break;
+ }
+
+ //検索機能
+ else if (menu.equals("1")) {
+
+ //検索メニュー表示
+ System.out.println("1:全検索 2:条件検索 それ以外:戻る");
+
+ String searchMenu = scanner.nextLine();
+
+ //全検索
+ if (searchMenu.equals("1")) {
+
+ // 読み込んだ全社員を表示
+ for (int i = 0; i < count; i++) {
+
+ System.out.println(employees[i]);
+ }
+ }
+
+
+ //社員ID検索
+ else if (searchMenu.equals("2")) {
+
+ //ID入力
+ System.out.println("IDを入力してください");
+
+ String id = scanner.nextLine();
+
+ //検索判定
+ boolean found = false;
+
+ //配列検索
+ for (int i = 0; i < count; i++) {
+
+ //社員ID比較
+ if (employees[i].getPrimaryKeyValue().equals(id)) {
+
+ //一致データ表示
+ System.out.println(employees[i]);
+
+ found = true;
+ break;
+ }
+ }
+
+ //見つからなかった場合
+ if (!found) {System.out.println("該当する社員が見つかりませんでした");
+ }
+ }
+ }
+
+ //社員登録機能
+ else if (menu.equals("2")) {
+
+ //新しい社員データ生成
+ EmployeeData employee = new EmployeeData();
+
+ //社員ID入力
+ System.out.println("社員IDを入力してください");
+ employee.setIdEmployee(scanner.nextLine());
+
+ //社員名入力
+ System.out.println("社員名を入力してください");
+
+ employee.setNmEmployee(scanner.nextLine());
+
+ //フリガナ入力
+ System.out.println("フリガナを入力してください");
+ employee.setKnEmployee(scanner.nextLine());
+
+ //メールアドレス入力
+ System.out.println("メールアドレスを入力してください");
+ employee.setMailAddress(scanner.nextLine());
+
+ //パスワード入力
+ System.out.println("パスワードを入力してください");
+
+ employee.setPassword(scanner.nextLine());
+
+ //部署ID入力
+ System.out.println("部署IDを入力してください");
+ employee.setIdDepartment(scanner.nextLine());
+
+ //配列へ追加
+ employees[count] = employee;
+
+ //CSVへ追記
+ try {
+ PrintWriter pw =
+ new PrintWriter(new FileWriter("C:\\Users\\石原 叶大\\Documents\\em-oop\\EmployeeData.csv",true));
+
+ //CSVに1行追加
+ pw.println(employee.toCSV());
+ pw.close();
+
+ } catch (IOException e) {
+ System.out.println("CSVへの保存に失敗しました");
+
+ return;
+ }
+
+ // 件数加算
+ count++;
+
+ System.out.println("登録が完了しました");
+ }
+
+ //更新機能
+ //未実装あとから使う
+ else if (menu.equals("3")) {
+ System.out.println("更新機能は未実装です");
+ }
+
+ //削除機能
+ //未実装あとから使う
+ else if (menu.equals("4")) {
+ System.out.println("削除機能は未実装です");
+ }
+
+ //入力ミス
+ else {
+ System.out.println("正しく入力してください");
+ }
+ }
+
+ scanner.close();
+ }
+}
\ No newline at end of file