1 Commits

Author SHA1 Message Date
e1b74e4ad2 個人開発20261023 2026-10-23 16:25:33 +09:00
7 changed files with 235 additions and 516 deletions

View File

@@ -108,12 +108,4 @@ public abstract class BaseAccess {
* @throws IOException * @throws IOException
*/ */
public abstract void delete(String key) throws IOException; public abstract void delete(String key) throws IOException;
public List<BaseData> selectByidDepartment(String key) throws FileNotFoundException {
// TODO 自動生成されたメソッド・スタブ
return null;
}
} }

View File

@@ -9,151 +9,64 @@ import com.rhizome.example.data.BaseData;
import com.rhizome.example.data.DepartmentData; import com.rhizome.example.data.DepartmentData;
public class DepartmentAccess extends BaseAccess { public class DepartmentAccess extends BaseAccess {
private static final String DPT_FILEPATH = "file/DepartmentData.csv";
private static final String DEPARTMENT_FILEPATH = "file/DepartmentData.csv";
public DepartmentAccess() { public DepartmentAccess() {
super(DEPARTMENT_FILEPATH); super("file/DepartmentData.csv");
} }
@Override public List<BaseData> selectAll() throws FileNotFoundException {
//条件検索用メソッド List<String> csvList = this.readData();
public List<BaseData> selectByidDepartment(String key) throws FileNotFoundException { List<BaseData> datalist = new ArrayList();
//全件データ
List<BaseData> allList = new ArrayList<>();
//取得用リスト(CSV形式) for(String line : csvList) {// 26
List<String> csvList = readData(); DepartmentData dpt = new DepartmentData();
for (String line : csvList) {
DepartmentData department = new DepartmentData();
String[] columns = line.split(","); String[] columns = line.split(",");
department.setIdDepartment(columns[0]);
department.setNameDepartment(columns[1]);
dpt.setIdDepartment(columns[0]);
allList.add(department); dpt.setNmDepartment(columns[1]);
datalist.add(dpt);
} }
return datalist;
}
public List<BaseData> selectById(String key) throws FileNotFoundException {
List<BaseData> allList = this.selectAll();
List<BaseData> selectList = new ArrayList();
for(BaseData dpt : allList) {
//IDでの抽出データ if (dpt.getPrimaryKeyValue().equals(key)) {
List<BaseData> selectList = new ArrayList<>(); selectList.add(dpt);
for (BaseData department : allList) {
if (department.getPrimaryKeyValue().equals(key)) {
selectList.add(department);
} }
} }
return selectList; return selectList;
} }
//全件検索用メソッド
public List<BaseData> selectByallDepartment(String key) throws FileNotFoundException {
//全件データ
List<BaseData> allList = new ArrayList<>();
//取得用リスト(CSV形式)
List<String> 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 { public void insert(BaseData data) throws IOException {
//CSVファイルに追記する this.addData(data);// 61
addData(data); }// 62
}
@Override
public void update(BaseData updateData) throws IOException { public void update(BaseData updateData) throws IOException {
//更新後データリスト List<BaseData> updatedList = new ArrayList();
List<BaseData> updatedList = new ArrayList<>();
//全件取得し、更新データを反映する for(BaseData dpt : this.selectAll()) {
List<BaseData> allList = new ArrayList<>(); if (dpt.getPrimaryKeyValue().equals(updateData.getPrimaryKeyValue())) {// 72
//取得用リスト(CSV形式)
List<String> 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); updatedList.add(updateData);
} else { } else {
//上記以外は取得したデータをそのまま設定 updatedList.add(dpt);
updatedList.add(department);
} }
} }
//ファイル上書き処理
updateData(updatedList);
}
@Override this.updateData(updatedList);// 81
}// 83
public void delete(String key) throws IOException { public void delete(String key) throws IOException {
//全件から削除データを除いたリスト List<BaseData> deletedList = new ArrayList();// 88
List<BaseData> deletedList = new ArrayList<>();
//全件取得し、keyに該当するデータをリストから削除する for(BaseData employee : this.selectAll()) {// 91 93
//全件データ if (!employee.getPrimaryKeyValue().equals(key)) {// 94
List<BaseData> allList = new ArrayList<>(); deletedList.add(employee);// 95
//取得用リスト(CSV形式)
List<String> 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); updateData(deletedList);
} }
@Override
public List<BaseData> selectById(String key) throws FileNotFoundException {
// TODO 自動生成されたメソッド・スタブ
return null;
}
} }

View File

@@ -17,7 +17,6 @@ public class EmployeeAccess extends BaseAccess {
} }
@Override @Override
//条件検索用メソッド
public List<BaseData> selectById(String key) throws FileNotFoundException { public List<BaseData> selectById(String key) throws FileNotFoundException {
//全件データ //全件データ
List<BaseData> allList = new ArrayList<>(); List<BaseData> allList = new ArrayList<>();
@@ -25,7 +24,6 @@ public class EmployeeAccess extends BaseAccess {
//取得用リスト(CSV形式) //取得用リスト(CSV形式)
List<String> csvList = readData(); List<String> csvList = readData();
for (String line : csvList) { for (String line : csvList) {
EmployeeData employee = new EmployeeData(); EmployeeData employee = new EmployeeData();
String[] columns = line.split(","); String[] columns = line.split(",");
@@ -49,36 +47,8 @@ public class EmployeeAccess extends BaseAccess {
} }
return selectList; return selectList;
} }
//全件検索用メソッド
public List<BaseData> selectByall(String key) throws FileNotFoundException {
//全件データ
List<BaseData> allList = new ArrayList<>();
//取得用リスト(CSV形式)
List<String> 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 @Override
public void insert(BaseData data) throws IOException { public void insert(BaseData data) throws IOException {
//CSVファイルに追記する //CSVファイルに追記する

View File

@@ -19,5 +19,4 @@ public abstract class BaseData {
*/ */
public abstract String getPrimaryKeyValue(); public abstract String getPrimaryKeyValue();
} }

View File

@@ -1,53 +1,33 @@
package com.rhizome.example.data; package com.rhizome.example.data;
public class DepartmentData extends BaseData { public class DepartmentData extends BaseData {
/** 部署ID */
private String idDepartment; private String idDepartment;
/** 部署名 */ private String nmDepartment;
private String nameDepartment;
/**
* @return 部署ID
*/
public String getIdDepartment() { public String getIdDepartment() {
return idDepartment; return idDepartment;
} }
/**
* @param idDepartment 部署ID
*/
public void setIdDepartment(String idDepartment) { public void setIdDepartment(String idDepartment) {
this.idDepartment = idDepartment; this.idDepartment = idDepartment;
} }
public String getNmDepartment() {
/** return nmDepartment;
* @return 部署名
*/
public String getNameDepartment() {
return nameDepartment;
} }
/** public void setNmDepartment(String nmDepartment) {
* @param nameDepartment 部署名 this.nmDepartment = nmDepartment;
*/
public void setNameDepartment(String nameDepartment) {
this.nameDepartment = nameDepartment;
} }
@Override
public String toString() { public String toString() {
// TODO 自動生成されたメソッド・スタブ return this.getIdDepartment()
return getIdDepartment() + "\t" + getNameDepartment(); + "\t" + this.getNmDepartment();
} }
@Override
public String toCSV() { public String toCSV() {
// TODO 自動生成されたメソッド・スタブ return this.getIdDepartment()
return getIdDepartment() + "," + getNameDepartment(); + "\t" + this.getNmDepartment();
} }
@Override
public String getPrimaryKeyValue() { public String getPrimaryKeyValue() {
// TODO 自動生成されたメソッド・スタブ return this.idDepartment;
return idDepartment;
} }
} }

View File

@@ -1,234 +0,0 @@
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<BaseData> 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<BaseData> 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;
}
}

View File

@@ -1,16 +1,18 @@
package com.rhizome.example.main; package com.rhizome.example.main;
import java.io.BufferedReader;
import java.io.FileNotFoundException; import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Scanner; import java.util.Scanner;
import com.rhizome.example.access.DepartmentAccess;
import com.rhizome.example.access.EmployeeAccess; import com.rhizome.example.access.EmployeeAccess;
import com.rhizome.example.data.BaseData; import com.rhizome.example.data.BaseData;
import com.rhizome.example.data.DepartmentData;
import com.rhizome.example.data.EmployeeData; import com.rhizome.example.data.EmployeeData;
public class Main { public class Main {
static Scanner sc = new Scanner(System.in); static Scanner sc = new Scanner(System.in);
@@ -20,7 +22,9 @@ public class Main {
* @param args * @param args
*/ */
public static void main(String[] args) { public static void main(String[] args) {
System.out.println("システムを開始します"); System.out.println("システムを開始します");
//※1
while (true) { while (true) {
try { try {
new Main().start(); new Main().start();
@@ -38,13 +42,19 @@ public class Main {
*/ */
public void start() throws IOException { public void start() throws IOException {
System.out.println(); System.out.println();
System.out.println("1:検索 2:登録 3:更新 4:削除 9:データ切り替え 0:終了"); System.out.println("1:検索 2:登録 3:更新 4:削除 9:データ切り替え 0:終了 (管理対象:Employee)");
String ope = sc.nextLine(); String ope = sc.nextLine(); //キーボードから読み取り
DepartmentMain dp = new DepartmentMain();
switch (ope) { switch (ope) {
case "1": //検索 case "1": //検索
empSelect(); System.out.println(" 1:全件検索 2:条件検索 それ以外:戻る");
String choose = sc.nextLine(); //キーボードから読み取り
if(choose.equals("1")) { //1の時
empSelect("all"); //引数all(文字列)を渡す
}else if(choose.equals("2")) { //2の時
empSelect(); //引数なし
}
break; break;
case "2": //登録 case "2": //登録
empInsert(); empInsert();
@@ -55,45 +65,55 @@ public class Main {
case "4": //削除 case "4": //削除
empDelete(); empDelete();
break; break;
case "9": //切り替え
dptloop:while(true) {
System.out.println("1:検索 2:登録 3:更新 4:削除 9:データ切り替え 0:終了 (管理対象:Department)");
String dope = sc.nextLine();
switch (dope) {
case "1": //検索
System.out.println(" 1:全件検索 2:条件検索 それ以外:戻る");
String dptchoose = sc.nextLine();
if(dptchoose.equals("1")) {
dptSelect("all"); //全検索
}else if(dptchoose.equals("2")) {
dptSelect(); //条件検索
}
break;
case "2": //登録
dptInsert();
break;
case "3": //更新
dptUpdate();
break;
case "4": //削除
dptDelete();
break;
case "9": //切り替え
break dptloop;
case "0": //終了
System.out.println("システムを終了します");
System.exit(0);
default:
System.out.println("指定の番号を入力してください");
continue; //※2戻る
}
}
break;
case "0": //修了 case "0": //修了
System.out.println("システムを終了します"); System.out.println("システムを終了します");
System.exit(0); System.exit(0);
case "9":
dp.dpData();
break;
default: default:
System.out.println("指定の番号を入力してください"); System.out.println("指定の番号を入力してください");
break; break;
} }
} }
/** /**
* 社員ファイルから情報を検索する * 社員ファイルから情報を検索する
* *
* @throws FileNotFoundException * @throws FileNotFoundException
*/ */
public void empSelect() throws FileNotFoundException { public void empSelect() throws FileNotFoundException {
System.out.println();
System.out.println("1:全件検索 2:条件検索");
String search = sc.nextLine();
switch(search) {
case "1": //全件検索
//EmployeeData.csvファイルに記載されている情報が一覧で表示
EmployeeAccess all = new EmployeeAccess();
List<BaseData> allList = new ArrayList<>();
allList = all.selectByall(search);
for (BaseData employee : allList) {
System.out.println(employee.toString());
}
break;
case "2": //条件検索
//IDの入力および入力チェック
EmployeeAccess ea = new EmployeeAccess(); EmployeeAccess ea = new EmployeeAccess();
List<BaseData> list; List<BaseData> list;
@@ -105,25 +125,57 @@ public class Main {
if (list.size() == 0) { //取得結果が0件の場合 if (list.size() == 0) { //取得結果が0件の場合
System.out.println("入力された値で情報がみつかりませんでした"); System.out.println("入力された値で情報がみつかりませんでした");
} }
//取得結果件数分、データをタブ区切りで出力する //取得結果件数分、データをタブ区切りで出力する
for (BaseData employee : list) { for (BaseData employee : list) {
System.out.println(employee.toString()); System.out.println(employee.toString());
} }
break; }
//throwsで例外が起きたときにメインメソッドで処理できるようにする
public void empSelect(String str)throws FileNotFoundException { //allを受け取るメソッド
default: //1.2以外なら戻る //try-catchで例外処理+try-with-resourcesでファイルを自動で閉じる
try { //csvファイルを読み込みreaderの変数へ代入
start(); try (BufferedReader reader = new BufferedReader(new FileReader("file/EmployeeData.csv"))) {
String line; //変数定義
//ファイルから読み込んだ1行をlineに代入しnullじゃない間ループ
while((line = reader.readLine())!= null) {
System.out.println(line); //lineを出力
}
}catch(IOException e) { //エラーの受け取りと処理
System.out.println("ファイルの読み込み中にエラーが発生しました");
e.printStackTrace(); //エラーの内容を詳しく表示する処理
}
}
public void dptSelect() throws FileNotFoundException {
DepartmentAccess da = new DepartmentAccess();
List<BaseData> list;
String id = inputCheck("ID", true);
list = da.selectById(id);
if (list.size() == 0) {
System.out.println("入力された値で情報がみつかりませんでした");
}
for (BaseData department : list) {
System.out.println(department.toString());
}
}
public void dptSelect(String str) throws FileNotFoundException {
try (BufferedReader dptreader = new BufferedReader(new FileReader("file/DepartmentData.csv"))) {
String line;
while((line = dptreader.readLine())!= null) {
System.out.println(line);
}
}catch(IOException e) { }catch(IOException e) {
// TODO 自動生成された catch ブロック System.out.println("ファイルの読み込み中にエラーが発生しました");
e.printStackTrace(); e.printStackTrace();
} //メインメニューへ戻る
break;
} }
} }
/** /**
* 社員ファイルに情報を登録する * 社員ファイルに情報を登録する
* *
@@ -153,6 +205,18 @@ public class Main {
System.out.println("登録が完了しました"); System.out.println("登録が完了しました");
} }
public void dptInsert() throws IOException {
String depId = inputCheck("部署ID", true);
String depName = inputCheck("部署名", false);
DepartmentData dpt = new DepartmentData();
dpt.setIdDepartment(depId);
dpt.setNmDepartment(depName);
DepartmentAccess da = new DepartmentAccess();
da.insert(dpt);
System.out.println("登録が完了しました");
}
/** /**
* 社員ファイルの情報を更新する * 社員ファイルの情報を更新する
* *
@@ -190,6 +254,25 @@ public class Main {
System.out.println("更新が完了しました"); System.out.println("更新が完了しました");
} }
public void dptUpdate() throws IOException {
DepartmentAccess da = new DepartmentAccess();
String dptid = inputCheck("ID", true);
if (da.selectById(dptid).size() == 0) {
System.out.println("入力された値で情報がみつかりませんでした");
return;
}
String depId = inputCheck("部署ID", true);
String depName = inputCheck("部署名前", true);
DepartmentData dpt = new DepartmentData();
dpt.setIdDepartment(depId);
dpt.setNmDepartment(depName);
da.update(dpt);
System.out.println("更新が完了しました");
}
/** /**
* 社員ファイルの情報を削除する * 社員ファイルの情報を削除する
* *
@@ -217,6 +300,25 @@ public class Main {
System.out.println("削除が完了しました"); System.out.println("削除が完了しました");
} }
public void dptDelete() throws IOException {
DepartmentAccess da = new DepartmentAccess();
String dptid = inputCheck("ID", true);
if (da.selectById(dptid).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(dptid);
System.out.println("削除が完了しました");
}
/** /**
* 入力値を判定し、返却する * 入力値を判定し、返却する
* *
@@ -247,7 +349,4 @@ public class Main {
} }
return str; return str;
} }
} }