32 Commits

Author SHA1 Message Date
s-sakiyama
c7b7a48681 検索、登録、更新、削除の機能を追加
メインシステムをMain.javaに移行
2026-09-24 15:49:32 +09:00
s-sakiyama
b254050ce8 ファイルからの読み取り、ArrayList、StreamAPIの使用練習 2026-09-17 16:20:52 +09:00
s-sakiyama
1bbc548980 DepartmentDataにコンストラクタの追加 2026-09-17 16:19:13 +09:00
s-sakiyama
ed98c7c338 9段階目(部署名から社員を検索する集計プログラムを作ろう) 2026-09-16 16:48:57 +09:00
s-sakiyama
0ac701ce98 8段階目(キャストでサブクラス限定の機能を使おう) 2026-09-16 16:17:23 +09:00
s-sakiyama
08b99dc55b 7段階目(instanceofで型を確認しよう) 2026-09-16 16:07:10 +09:00
s-sakiyama
db8e199c9d 6段階目(DepartmentDataを作って、ポリモーフィズムの威力を実感しよう) 2026-09-16 15:59:22 +09:00
s-sakiyama
f68bef8367 5段階目(Mainでポリモーフィズムを使おう) 2026-09-16 15:14:05 +09:00
s-sakiyama
9c3605cf87 4段階目(BaseDataを作り、EmployeeDataに継承させよう) 2026-09-16 13:31:36 +09:00
s-sakiyama
e8648e7d8b 3段階目(ポリモーフィズムを体感しよう) 2026-09-16 13:21:23 +09:00
s-sakiyama
551f5a4fe2 2段階目(抽象クラスとインターフェースを使ってみよう) 2026-09-16 13:12:58 +09:00
s-sakiyama
03c7af9751 1段階目(継承とsuperでシンプルな図形クラスを作ろう) 2026-09-16 12:59:09 +09:00
s-sakiyama
856eb9888a Merge remote-tracking branch 'origin/main' into s-sakiyama 2026-09-16 12:39:57 +09:00
s-sakiyama
8fbfa99047 9段階目(何度でも検索できるようにしよう) 2026-09-15 16:06:53 +09:00
s-sakiyama
1c4b834578 8段階目(社員をID検索してみよう) 2026-09-15 15:43:55 +09:00
s-sakiyama
b8aa7238f6 7段階目(IDが一致するか調べるメソッドを作ろう) 2026-09-15 15:06:13 +09:00
s-sakiyama
d88468306f 9段階目(チェックをもう1つの項目にも広げ、コンストラクタと統一しよう) 2026-09-15 14:44:43 +09:00
s-sakiyama
968c5094a4 8段階目(セッターに簡単なチェックを入れてみよう) 2026-09-15 14:24:20 +09:00
s-sakiyama
3b6b23c883 7段階目(staticで社員データの件数を数えよう) 2026-09-15 14:03:03 +09:00
s-sakiyama
f143cf7ec2 6段階目(toStringをオーバーライドしよう) 2026-09-15 13:55:35 +09:00
s-sakiyama
b58fcecaa2 5段階目(EmployeeDataにコンストラクタを作ろう) 2026-09-15 13:34:30 +09:00
s-sakiyama
d98145e598 4段階目(EmployeeDataをカプセル化しよう) 2026-09-15 13:25:46 +09:00
s-sakiyama
3d026db061 3段階目(Studentクラスにコンストラクタとstaticメンバを追加しよう) 2026-09-15 13:08:33 +09:00
s-sakiyama
38620e220f 2段階目(Itemクラスをカプセル化し、toStringをオーバーライドしよう) 2026-09-15 13:02:03 +09:00
s-sakiyama
d4b07b24bf 1段階目(Bookクラスにコンストラクタを作ろう) 2026-09-15 13:01:42 +09:00
s-sakiyama
066af8799d Merge remote-tracking branch 'origin/main' into s-sakiyama 2026-09-15 12:37:00 +09:00
s-sakiyama
27685ac25f 6段階目(複数の社員をまとめて表示してみよう) 2026-09-14 16:50:07 +09:00
s-sakiyama
3e82879f22 4段階目(EmployeeDataクラスの型を作ろう) 2026-09-14 16:37:11 +09:00
s-sakiyama
769fb977ca 3段階目(複数のインスタンスを扱ってみよう) 2026-09-14 16:32:27 +09:00
s-sakiyama
04da447bfe 2段階目(自分でクラスを宣言してみよう) 2026-09-14 16:32:12 +09:00
s-sakiyama
25802b8380 1段階目(用意されたクラスを使ってみよう) 2026-09-14 16:31:51 +09:00
s-sakiyama
be15630c5b 1段階目(用意されたクラスを使ってみよう) 2026-09-14 16:31:32 +09:00
25 changed files with 609 additions and 541 deletions

View File

@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="src" path="em-oop/src"/>
<classpathentry kind="output" path="bin"/>
</classpath>

1
.gitignore vendored
View File

@@ -25,4 +25,3 @@ hs_err_pid*
replay_pid*
/.metadata/
/bin/

View File

@@ -1,17 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>java-cui-em-oop</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>

6
em-oop/departments.csv Normal file
View File

@@ -0,0 +1,6 @@
10,役員
11,人事・総務部
12,経理部
13,システム開発事業部
14,教育事業部
15,営業企画部
1 10 役員
2 11 人事・総務部
3 12 経理部
4 13 システム開発事業部
5 14 教育事業部
6 15 営業企画部

5
em-oop/employees.csv Normal file
View File

@@ -0,0 +1,5 @@
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
1 10000 山田龍也 ヤマダタツヤ yamada@hoge.jp aaa 10
2 10001 高橋準 タカハシジュン jtaka@hoge.jp bbb 10
3 10002 麻枝史明 マエダフミアキ fmak@hoge.jp ccc 11
4 10003 丸戸章介 マルトショウスケ marusyo@hoge.jp ddd 12
5 10004 三宅武 ミヤケタケシ miya@hoge.jp eee 13

View File

@@ -1,9 +1,7 @@
//Day3_4段階目:BaseDataを作り、EmployeeDataに継承させよう
public abstract class BaseData {
public abstract String toString();
public abstract String toCSV();
public abstract String getPrimaryKeyValue();
}

View File

@@ -3,25 +3,27 @@ public class BasicCheck1 {
public static void main(String[] args) {
// TODO 自動生成されたメソッド・スタブ
Book book = new Book();
book.title = "吾輩は猫である";
book.author = "夏目漱石";
book.price = 800;
System.out.println(book.title);
System.out.println(book.author);
System.out.println(book.price);
System.out.println();
//9/15段階1
Book book1 = new Book();
book1.title = "タイトル未設定";
book1.author ="著者未設定";
book1.price = 0;
System.out.println(book1.title);
System.out.println(book1.author);
System.out.println(book1.price);
Book book2 = new Book();
book2.title = "銀河鉄道の夜";
book2.author ="宮沢賢治";
book2.price = 500;
Book book2 = new Book("銀河鉄道の夜", "宮沢賢治", 500);
System.out.println(book2.title);
System.out.println(book2.author);
System.out.println(book2.price);
}
}

View File

@@ -1,21 +1,15 @@
public class BasicCheck2 {
public static void main(String[] args) {
Student student1 = new Student(1,"鈴木一郎");
Student student2 = new Student(2,"田中花子");
Student student3 = new Student(3,"佐藤次郎");
// student.studentId = 1;
// student.name = "鈴木一郎";
// System.out.print("学籍番号"+student.studentId);
// System.out.print("名前:" + student.name);
// TODO 自動生成されたメソッド・スタブ
Student student1 = new Student(1, "鈴木一郎");
Student student2 = new Student(2, "田中花子");
Student student3 = new Student(3, "佐藤次郎");
student1.printProfile();
student2.printProfile();
student3.printProfile();
System.out.println("現在の生徒数:" + Student.getStudentCount() + "人");
}
}

View File

@@ -3,32 +3,23 @@ public class BasicCheck3 {
public static void main(String[] args) {
// TODO 自動生成されたメソッド・スタブ
Item[] items = new Item[3];
items[0] = new Item();
items[1] = new Item();
items[2] = new Item();
for (int i = 0; i < items.length; i++) {
items[i] = new Item();
}
items[0].setName("ノート");
items[0].setPrice(120);
items[0].setStock(50);
items[1].setName("消しゴム");
items[1].setPrice(80);
items[1].setStock(30);
items[2].setName("鉛筆");
items[2].setPrice(60);
items[2].setStock(100);
for (int i = 0; i < items.length; i++) {
items[i].sell(5);
}
for (int i = 0; i < items.length; i++) {
System.out.println(items[i]);
for (Item i : items) {
i.sell(5);
System.out.println(i);
}
}

View File

@@ -3,16 +3,16 @@ public class Book {
String title;
String author;
int price;
//コンストラクタ
public Book() {
title = "タイトル未設定";
author = "著者未設定";
price = 0;
}
}
public Book(String title,String author,int price){
//引数ありコンストラクタ
public Book(String title, String author, int price) {
this.title = title;
this.author = author;
this.price = price;

View File

@@ -2,42 +2,21 @@
public class Circle extends Shape {
private double radius;
public Circle(double radius) {
super("円");
this.radius = radius;
}
@Override
public double area() {
return Math.PI * radius * radius;
}
@Override
public void showInfo() {
super.showInfo();
System.out.println("半径:" + this.radius);
System.out.println("(半径:" + this.radius + ")");
}
// //Shapeクラスを継承
//
// //フィールド作成
// private double radius;
//
// //コンストラクタ作成
// public Circle(double radius) {
// super("円");
// this.radius = radius;
// }
//
// //メソッド作成
// public double area() {
// return Math.PI * radius * radius;
// }
//
// public void showInfo() {
// super.showInfo();
// System.out.println("(半径:" + this.radius + ")");
// }
}

View File

@@ -2,10 +2,7 @@
public class Day3Check1 {
public static void main(String[] args) {
Circle circle = new Circle(2.0);
Circle circle = new Circle(2);
circle.showInfo();
}
}

View File

@@ -2,13 +2,13 @@
public class Day3Check2 {
public static void main(String[] args) {
Rectangle rectangle = new Rectangle(3,4);
Rectangle rectangle = new Rectangle(3, 4);
rectangle.showInfo();
System.out.println("四角形の面積は" + rectangle.area() + "です");
Greeting greeting = new JapaneseGreeting();
System.out.println(greeting.hello());
Greeting jpGreeting = new JapaneseGreeting();
System.out.println(jpGreeting.hello());
LoudGreeting jpShout = new JapaneseGreeting();
System.out.println(jpShout.shout());
}
}

View File

@@ -1,13 +1,11 @@
public class Day3Check3 {
public static void main(String[] ages) {
Shape shape1 = new Circle(2);
shape1.showInfo();
Shape shape2 = new Rectangle(3, 4);
shape2.showInfo();
}
public static void main(String[] args) {
Shape shape1 = new Circle(2);
shape1.showInfo();
Shape shape2 = new Rectangle(3, 4);
shape2.showInfo();
}
}

View File

@@ -1,59 +1,48 @@
public class DepartmentData extends BaseData{
public class DepartmentData extends BaseData {
private String idDepartment;
private String nmDepartment;
//gettre・setter
//部署IDのgetter
public DepartmentData() {
}
public DepartmentData(String idDepartment, String nmDepartment) {
this.idDepartment = idDepartment;
this.nmDepartment = nmDepartment;
}
@Override
public String toString() {
return getIdDepartment() + "\t" + getNmDepartment();
}
@Override
public String toCSV() {
return getIdDepartment() + "," + getNmDepartment();
}
@Override
public String getPrimaryKeyValue() {
// TODO 自動生成されたメソッド・スタブ
return getIdDepartment();
}
public String getIdDepartment() {
return idDepartment;
}
//部署IDのsetter
public void setIdDepartment(String idDepartment) {
this.idDepartment = idDepartment;
}
//部署名のgetter
public String getNmDepartment() {
return nmDepartment;
}
//部署名のsetter
public void setNmDepartment(String nmDepartment) {
this.nmDepartment = nmDepartment;
}
//部署名を文字列として返す
@Override
public String toString() {
return this.getIdDepartment() + "\t" + this.getNmDepartment();
}
//CSV形式で返す
@Override
public String toCSV() {
return this.getIdDepartment() + "," + this.getNmDepartment();
}
//部署IDを返す
@Override
public String getPrimaryKeyValue() {
return this.getIdDepartment();
}
//部署名
// @Override
// public String toCSV() {
// return this.getIdDepartment() + "," + getNmDepartment();
// }
//部署ID
// @Override
// public String getPrimaryKeyValue() {
// return this.getIdDepartment();
// }
}

View File

@@ -1,30 +1,22 @@
public class EmployeeData extends BaseData {
private String idEmployee;
private String nmEmployee;
private String knEmployee;
private String mailAddress;
private String password;
private String idDepartment;
//社員データ件数
private static int empCount = 0;
//引数なしコンストラクタ
static final String COMPANY_NAME = "Rhizome";
//コンストラクタ
public EmployeeData() {
empCount++;
}
//6つの引数をもつコンストラクタ
public EmployeeData(
String idEmployee,
String nmEmployee,
String knEmployee,
String mailAddress,
String password,
String idDepartment) {
//引数ありコンストラクタ
public EmployeeData(String idEmployee, String nmEmployee, String knEmployee,
String mailAddress, String password, String idDepartment) {
this.setIdEmployee(idEmployee);
this.setNmEmployee(nmEmployee);
this.setKnEmployee(knEmployee);
@@ -33,47 +25,36 @@ public class EmployeeData extends BaseData {
this.setIdDepartment(idDepartment);
empCount++;
}
@Override
public String toString() {
return this.idEmployee + "\t" + this.nmEmployee
+ "\t" + this.knEmployee + "\t" + this.mailAddress
+ "\t" + this.password + "\t" + this.idDepartment;
}
// public static int getEmpCount() {
// return empCount;
// }
public String getIdEmployee() {
return idEmployee;
}
public void setIdEmployee(String idEmployee) {
//9段階目(空文字チェック、セッター経由になっているかを見直し)
if (idEmployee == null || idEmployee.trim().isEmpty()) {
System.out.println("社員IDが空のため設定できませんでした");
if (!check(idEmployee, "社員ID"))
return;
}
this.idEmployee = idEmployee;
}
//社員名
public String getNmEmployee() {
return nmEmployee;
}
public void setNmEmployee(String nmEmployee) {
//8段階目(空文字や空白だけの値が渡された場合は代入しない)
if (nmEmployee == null || nmEmployee.trim().isEmpty()) {
System.out.println("社員名が空のため設定できませんでした");
if (!check(nmEmployee, "社員名"))
return;
}
this.nmEmployee = nmEmployee;
}
//社員名カナ
public String getKnEmployee() {
return knEmployee;
}
@@ -82,7 +63,6 @@ public class EmployeeData extends BaseData {
this.knEmployee = knEmployee;
}
//メールアドレス
public String getMailAddress() {
return mailAddress;
}
@@ -91,7 +71,6 @@ public class EmployeeData extends BaseData {
this.mailAddress = mailAddress;
}
//パスワード
public String getPassword() {
return password;
}
@@ -100,7 +79,6 @@ public class EmployeeData extends BaseData {
this.password = password;
}
//部署ID
public String getIdDepartment() {
return idDepartment;
}
@@ -108,46 +86,27 @@ public class EmployeeData extends BaseData {
public void setIdDepartment(String idDepartment) {
this.idDepartment = idDepartment;
}
//社員データ件数を取得
public static int getEmpCount() {
return empCount;
}
//社員IDが一致するか確認
public boolean isMatchID(String id) {
return this.idEmployee != null && this.idEmployee.equals(id);
}
//社員情報を文字列として返す
@Override
public String toString() {
return this.getIdEmployee() + "\t"
+ this.getNmEmployee() + "\t"
+ this.getKnEmployee() + "\t"
+ this.getMailAddress() + "\t"
+ this.getPassword() + "\t"
+ this.getIdDepartment();
private boolean check(String str, String stringName) {
if (str == null || str.strip().length() == 0) {
System.out.println(stringName + "が空のため設定できませんでした");
return false;
}
return true;
}
//CSV形式で返す
@Override
public String toCSV() {
return this.getIdEmployee() + ","
+ this.getNmEmployee() + ","
+ this.getKnEmployee() + ","
+ this.getMailAddress() + ","
+ this.getPassword() + ","
+ this.getIdDepartment();
}
return getIdEmployee() + "," + getNmEmployee() + "," + getKnEmployee() + ","
+ getMailAddress() + "," + getPassword() + "," + getIdDepartment();
}
//社員IDを返す
@Override
public String getPrimaryKeyValue() {
return this.getIdEmployee();
return this.idEmployee;
}
}

View File

@@ -1,3 +1,4 @@
public interface Greeting {
String hello();
}
}

View File

@@ -1,12 +1,22 @@
public class Item {
private String name;
private int price;
private int stock;
void sell(int amount) {
this.setStock(this.getStock() - amount);
}
@Override
public String toString() {
return this.getName() + " " + this.getPrice() + "円(残り" + this.getStock() + "個)";
}
int totalPrice() {
return this.price * this.stock;
}
public String getName() {
return name;
}
@@ -30,14 +40,4 @@ public class Item {
public void setStock(int stock) {
this.stock = stock;
}
void sell(int amount) {
this.setStock(this.getStock() - amount);
}
@Override
public String toString() {
return getName() + "" + getPrice() + "円(残り" + getStock() + "個)";
}
}
}

View File

@@ -1,9 +1,14 @@
public class JapaneseGreeting implements Greeting {
public class JapaneseGreeting implements Greeting, LoudGreeting {
@Override
public String hello() {
return "こんにちは";
}
@Override
public String shout() {
return "やっほー!";
}
}

View File

@@ -0,0 +1,4 @@
public interface LoudGreeting {
String shout();
}

View File

@@ -1,257 +1,258 @@
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.StandardOpenOption;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
//Day3_5段階目:BaseData型で社員を作成
// BaseData employee = new EmployeeData(
// "10000",
// "山田龍也",
// "ヤマダタツヤ",
// "yamada@hoge.jp",
// "aaa",
// "10"
// );
// System.out.println(employee.toCSV());
// System.out.println(employee.getPrimaryKeyValue());
//Day3_5段階目:BaseData型の配列を作成
BaseData[] Employees = new EmployeeData[5];
Employees[0] = new EmployeeData(
"10000",
"山田龍也",
"ヤマダタツヤ",
"yamada@hoge.jp",
"aaa",
"10"
);
Employees[1] = new EmployeeData(
"10001",
"高橋準",
"タカハシジュン",
"jtaka@hoge.jp",
"bbb",
"10"
);
Employees[2] = new EmployeeData(
"10002",
"麻枝史明",
"マエダフミアキ",
"fmak@hoge.jp",
"ccc",
"11"
);
Employees[3] = new EmployeeData(
"10003",
"丸戸章介",
"マルトショウスケ",
"marusyo@hoge.jp",
"ddd",
"12"
);
Employees[4] = new EmployeeData(
"10004",
"三宅武",
"ミヤケタケシ",
"miya@hoge.jp",
"eee",
"13"
);
//社員+部署をまとめる配列
BaseData[] allData = new BaseData[11];
//
for (int i = 0; i < Employees.length; i++) {
allData[i] = Employees[i];
ArrayList<BaseData> employees = new ArrayList<BaseData>();
System.out.println("システムを開始します\n");
//検索
Scanner scanner = new Scanner(System.in);
while (true) {
employees = inportEmployeesCSV();
System.out.println("1:検索 2:登録 3:更新 4:削除 0:終了");
System.out.print(">>>>");
String str = scanner.nextLine().strip();
switch (str) {
case "0":
System.out.println("システムを終了します");
return;
case "1":
System.out.println("1:全検索 2:条件検索 それ以外:戻る");
System.out.print(">>>>");
str = scanner.nextLine().strip();
Display(str, employees);
break;
case "2":
append();
break;
case "3":
update(employees);
break;
case "4":
delete(employees);
break;
default:
System.out.println("指定の番号を入力してください");
break;
}
System.out.println();
}
//部署データ6件
DepartmentData dept1 = new DepartmentData();
dept1.setIdDepartment("10");
dept1.setNmDepartment("役員");
allData[5] = dept1;
DepartmentData dept2 = new DepartmentData();
dept2.setIdDepartment("11");
dept2.setNmDepartment("人事・総務部");
allData[6] = dept2;
DepartmentData dept3 = new DepartmentData();
dept3.setIdDepartment("12");
dept3.setNmDepartment("経理部");
allData[7] = dept3;
DepartmentData dept4 = new DepartmentData();
dept4.setIdDepartment("13");
dept4.setNmDepartment("システム開発事業部");
allData[8] = dept4;
DepartmentData dept5 = new DepartmentData();
dept5.setIdDepartment("14");
dept5.setNmDepartment("教育事業部");
allData[9] = dept5;
DepartmentData dept6 = new DepartmentData();
dept6.setIdDepartment("15");
dept6.setNmDepartment("営業企画部");
allData[10] = dept6;
//6段階目
//全データ表示
// for (int i = 0; i < allData.length; i++) {
// System.out.println(allData[i]);
// }
//7段階目:instanceofで件数を数える
// int employeeCount = 0;
// int departmentCount = 0;
//
// for(int i = 0; i < allData.length; i++) {
// if(allData[i] instanceof EmployeeData) {
// employeeCount++;
// }
//
// if(allData[i] instanceof DepartmentData) {
// departmentCount++;
// }
// }
//
// System.out.println("社員データ" + employeeCount + "件");
// System.out.println("部署データ" + departmentCount + "件");
//8段階目
//全社員のメールアドレスを表示
// for(int i = 0; i < allData.length; i++) {
// if(allData[i] instanceof EmployeeData) {
// EmployeeData employeeData = (EmployeeData) allData[i];
//
// System.out.println(employeeData.getMailAddress());
// }
// }
//部署名から社員を検索
String targetDepartmentId = null;
for(int i = 0; i < allData.length;i++) {
if(allData[i] instanceof DepartmentData) {
DepartmentData departmentData = (DepartmentData) allData[i];
if(departmentData.getNmDepartment().equals("システム開発事業部")) {
targetDepartmentId = departmentData.getIdDepartment();
}
}
//削除
private static void delete(ArrayList<BaseData> allData) {
Scanner scanner = new Scanner(System.in);
ArrayList<String> dataList = new ArrayList<String>();
Path path = Path.of("employees.csv");
System.out.println("IDを入力してください");
System.out.print(">>>>");
String str = scanner.nextLine().strip();
boolean matchFlag = false;
for (BaseData e : allData) {
if (e.getPrimaryKeyValue().equals(str)) {
matchFlag = true;
} else {
dataList.add(e.toCSV());
}
}
for (int i = 0; i < allData.length; i++) {
if(allData[i] instanceof EmployeeData) {
EmployeeData employeeData = (EmployeeData) allData[i];
if(employeeData.getIdDepartment().equals(targetDepartmentId)) {
System.out.println(employeeData.getNmEmployee() + "\t" + employeeData.getMailAddress());
if (!matchFlag) {
System.out.println("入力された値で情報がみつかりませんでした");
} else {
System.out.println("指定されたIDの情報を削除します? Y/y\n(Y/y以外の入力であればキャンセル)");
System.out.print(">>>>");
str = scanner.nextLine().strip();
if (str.equalsIgnoreCase("y")) {
try {
Files.write(path, dataList);
System.out.println("削除が完了しました");
} catch (IOException e1) {
// TODO 自動生成された catch ブロック
e1.printStackTrace();
}
} else {
System.out.println("削除をキャンセルしました");
}
}
System.out.println();
}
//更新
private static void update(ArrayList<BaseData> allData) {
//更新するファイルのパス
Path path = Path.of("employees.csv");
//ID以外の更新するデータの項目
String[] appendData = { "社員名", "フリガナ", "メールアドレス", "パスワード", "部署ID" };
boolean zeroCheck = true; //入力されたデータが空白かのチェック用変数
Scanner scanner = new Scanner(System.in);
System.out.println("IDを入力してください");
System.out.print(">>>>");
String str = scanner.nextLine().strip();
boolean matchFlag = false;
ArrayList<String> dataList = new ArrayList<String>();
String content;
for (BaseData e : allData) {
content = e.toCSV();
if (e.getPrimaryKeyValue().equals(str)) {
for (int i = 0; i < appendData.length; i++) {
while (zeroCheck) {
zeroCheck = false;
System.out.println(appendData[i] + "を入力してください");
System.out.print(">>>>");
String scanString = scanner.nextLine().strip();
if (scanString == null || scanString.strip().length() == 0) {
System.out.println(appendData[i] + "は入力必須です");
zeroCheck = true;
}
str += ",";
str += scanString;
System.out.println();
}
zeroCheck = true;
}
matchFlag = true;
content = str;
}
dataList.add(content);
}
if (!matchFlag) {
System.out.println("入力された値で情報がみつかりませんでした");
} else {
try {
Files.write(path, dataList);
System.out.println("更新が完了しました");
} catch (IOException e1) {
// TODO 自動生成された catch ブロック
e1.printStackTrace();
}
}
// Employees[0].setIdEmployee("10000");
// Employees[0].setNmEmployee("山田龍也");
// Employees[0].setKnEmployee("ヤマダタツヤ");
// Employees[0].setMailAddress("yamada@hoge.jp");
// Employees[0].setPassword("aaa");
// Employees[0].setIdDepartment("10");
// System.out.println("10000を検索します");
// System.out.println(Employees[0].isMatchID("10000"));
// Employees[1].setIdEmployee("10001");
// Employees[1].setNmEmployee("高橋準");
// Employees[1].setKnEmployee("タカハシジュン");
// Employees[1].setMailAddress("jtaka@hoge.jp");
// Employees[1].setPassword("bbb");
// Employees[1].setIdDepartment("10");
// Employees[2].setIdEmployee("10002");
// Employees[2].setNmEmployee("麻枝史明");
// Employees[2].setKnEmployee("マエダフミアキ");
// Employees[2].setMailAddress("fmak@hoge.jp");
// Employees[2].setPassword("ccc");
// Employees[2].setIdDepartment("11");
// Employees[3].setIdEmployee("10003");
// Employees[3].setNmEmployee("丸戸章介");
// Employees[3].setKnEmployee("マルトショウスケ");
// Employees[3].setMailAddress("marusyo@hoge.jp");
// Employees[3].setPassword("ddd");
// Employees[3].setIdDepartment("12");
// Employees[4].setIdEmployee("10004");
// Employees[4].setNmEmployee("三宅武");
// Employees[4].setKnEmployee("ミヤケタケシ");
// Employees[4].setMailAddress("miya@hoge.jp");
// Employees[4].setPassword("eee");
// Employees[4].setIdDepartment("13");
//5人分の社員情報を表示
// for (int i = 0; i < Employees.length; i++) {
// System.out.println(Employees[i]);
//
// }
//社員データの件数を表示
// System.out.println("現在の社員データ件数:" + EmployeeData.getEmpCount() + "件");
//社員ID検索機能
// Scanner scanner = new Scanner(System.in);
// while(true) {
// System.out.println("検索したい社員IDを入力してください(終了する場合は0)");
// String id = scanner.nextLine();
// if(id.equals("0")) {
// System.out.println("システムを終了します");
// break;
// }
// boolean found = false;
// for (int i = 0; i < Employees.length; i++) {
//
// if(Employees[i].getPrimaryKeyValue().equals(id)) {
// System.out.println(Employees[i]);
// found = true;
// break;
// }
// }
//
// if(found == false) {
// System.out.println("該当する社員が見つかりませんでした");
// }
// }
// Employees[0].showInfo();
//
// System.out.println(Employees.idEmployee);
// System.out.println(Employees.nmEmployee);
// System.out.println(Employees.knEmployee);
// System.out.println(Employees.mailAddress);
// System.out.println(Employees.password);
// System.out.println(Employees.idDepartment);
System.out.println();
}
private static void Display(String str, ArrayList<BaseData> data) {
switch (str) {
case "1":
allDisplay(data);
break;
case "2":
employeeSeach(data);
break;
default:
return;
}
}
private static void allDisplay(ArrayList<BaseData> data) {
data.stream().forEach(d -> {
System.out.println(d); //一覧表示
});
System.out.println();
}
//ID検索
private static void employeeSeach(ArrayList<BaseData> allData) {
Scanner scanner = new Scanner(System.in);
System.out.println("検索したい社員IDを入力してください");
System.out.print(">>>>");
String str = scanner.nextLine().strip();
boolean matchFlag = false;
for (BaseData e : allData) {
if (e.getPrimaryKeyValue().equals(str)) {
System.out.println(e);
matchFlag = true;
break;
}
}
if (!matchFlag) {
System.out.println("入力された値で情報がみつかりませんでした");
}
System.out.println();
}
//書き込み ※社員IDが被っていても追加出来てしまう
private static void append() {
Scanner scanner = new Scanner(System.in);
String scanString;
String str = "";
String[] appendData = { "社員ID", "社員名", "フリガナ", "メールアドレス", "パスワード", "部署ID" };
boolean zeroCheck = true;
for (int i = 0; i < appendData.length; i++) {
while (zeroCheck) {
zeroCheck = false;
System.out.println(appendData[i] + "を入力してください");
System.out.print(">>>>");
scanString = scanner.nextLine().strip();
if (scanString == null || scanString.strip().length() == 0) {
System.out.println(appendData[i] + "は入力必須です");
zeroCheck = true;
}
str += scanString;
System.out.println();
}
if (i < appendData.length - 1)
str += ",";
zeroCheck = true;
}
Path path = Path.of("employees.csv");
try {
Files.writeString(path, str + "\n", StandardOpenOption.APPEND);
} catch (IOException e) {
// TODO 自動生成された catch ブロック
e.printStackTrace();
}
}
//社員CSVの読み込み
private static ArrayList<BaseData> inportEmployeesCSV() {
final String employeesCSVPath = "employees.csv";
ArrayList<BaseData> employees = new ArrayList<BaseData>();
Path pathEmp = Path.of(employeesCSVPath);
ArrayList<String> content = new ArrayList<String>();
try {
// content = Files.readString(path);
content = (ArrayList<String>) (Files.readAllLines(pathEmp));
} catch (IOException e) {
// TODO 自動 生成された catch ブロック
e.printStackTrace();
}
content.stream().forEach(data -> {
ArrayList<String> content2 = new ArrayList<String>(Arrays.asList(data.split(",")));
employees.add(
new EmployeeData(content2.get(0), content2.get(1), content2.get(2), content2.get(3),
content2.get(4), content2.get(5)));
});
return employees;
}
}

View File

@@ -1,19 +1,17 @@
public class Rectangle extends Shape {
private double width;
private double height;
public Rectangle(double width, double height) {
super("四角");
super("四角形");
this.width = width;
this.height = height;
}
@Override
public double area() {
// TODO 自動生成されたメソッド・スタブ
return width * height;
}

View File

@@ -1,41 +1,14 @@
//
//public abstract class Shape {
//
// private String name;
//
// public Shape(String name) {
// this.name = name;
//
// }
//
// public abstract double area();
// //return 0.0;
//
//
//
// public void showInfo() {
// //System.out.println(this.name + "の面積は" + this.area() + "です");
//
// }
public class Shape {
//フィールド作成
public abstract class Shape {
private String name;
//コンストラクタ作成
public Shape(String name) {
this.name = name;
}
//メソッド作成
double area() {
return 0.0;
}
public abstract double area();
//メソッド作成
void showInfo() {
//出力
public void showInfo() {
System.out.println(this.name + "の面積は" + this.area() + "です");
}
}

View File

@@ -2,29 +2,19 @@
public class Student {
int studentId;
String name;
static int studentCount = 0;
void printProfile() {
System.out.println("学籍番号:" + this.studentId + " 名前:" + this.name);
}
public Student(int studentId, String name) {
this.studentId = studentId;
this.name = name;
studentCount++;
}
public void printProfile() {
System.out.println("学籍番号:" + this.studentId + " 名前:" + this.name);
}
//public static void main(String[] args) {
//Student s = new Student(1,"鈴木一郎");
//s.printProfile();
//}
public static int getStudentCount() {
return studentCount;
}
}

202
em-oop/src/Sub.java Normal file
View File

@@ -0,0 +1,202 @@
import java.util.Scanner;
public class Sub {
public static void main(String[] args) {
System.out.println("会社名:" + EmployeeData.COMPANY_NAME);
BaseData employee = new EmployeeData("10000", "山田龍也", "ヤマダタツヤ",
"yamada@hoge.jp", "aaa", "10");
System.out.println(employee.toCSV());
System.out.println(employee.getPrimaryKeyValue());
System.out.println();
BaseData[] employees = new BaseData[5];
//setterがBaseData.javaにはないためコンストラクタで代入
// for (int i = 0; i < employees.length; i++) {
// employees[i] = new EmployeeData();
// }
//
// employees[0].setIdEmployee("10000");
// employees[0].setNmEmployee("山田龍也");
// employees[0].setKnEmployee("ヤマダタツヤ");
// employees[0].setMailAddress("yamada@hoge.jp");
// employees[0].setPassword("aaa");
// employees[0].setIdDepartment("10");
//
// employees[1].setIdEmployee("10001");
// employees[1].setNmEmployee("高橋準\t");
// employees[1].setKnEmployee("タカハシジュン");
// employees[1].setMailAddress("jtaka@hoge.jp");
// employees[1].setPassword("bbb");
// employees[1].setIdDepartment("10");
//
// employees[2].setIdEmployee("10002");
// employees[2].setNmEmployee("麻枝史明");
// employees[2].setKnEmployee("マエダフミアキ");
// employees[2].setMailAddress("fmak@hoge.jp");
// employees[2].setPassword("ccc");
// employees[2].setIdDepartment("11");
//
// employees[3].setIdEmployee("10003");
// employees[3].setNmEmployee("丸戸章介");
// employees[3].setKnEmployee("マルトショウスケ");
// employees[3].setMailAddress("marusyo@hoge.jp");
// employees[3].setPassword("ddd");
// employees[3].setIdDepartment("12");
//
// employees[4].setIdEmployee("10004");
// employees[4].setNmEmployee("三宅武\t");
// employees[4].setKnEmployee("ミヤケタケシ");
// employees[4].setMailAddress("miya@hoge.jp");
// employees[4].setPassword("eee");
// employees[4].setIdDepartment("13");
employees[0] = new EmployeeData("10000", "山田龍也", "ヤマダタツヤ",
"yamada@hoge.jp", "aaa", "10");
employees[1] = new EmployeeData("10001", "高橋準", "タカハシジュン",
"jtaka@hoge.jp", "bbb", "10");
employees[2] = new EmployeeData("10002", "麻枝史明", "マエダフミアキ",
"fmak@hoge.jp", "ccc", "11");
employees[3] = new EmployeeData("10003", "丸戸章介", "マルトショウスケ",
"marusyo@hoge.jp", "ddd", "12");
employees[4] = new EmployeeData("10004", "三宅武", "ミヤケタケシ",
"miya@hoge.jp", "eee", "13");
for (BaseData e : employees) {
System.out.println(e);
}
System.out.println("現在の社員のデータ件数:" + EmployeeData.getEmpCount() + "件");
System.out.println();
//社員データ+部署データ
BaseData[] allData = new BaseData[11];
for (int i = 0; i < employees.length; i++) {
allData[i] = employees[i];
}
DepartmentData[] dept = new DepartmentData[6];
for (int i = 0; i < dept.length; i++) {
dept[i] = new DepartmentData();
}
dept[0].setIdDepartment("10");
dept[0].setNmDepartment("役員");
allData[5] = dept[0];
dept[1].setIdDepartment("11");
dept[1].setNmDepartment("人事・総務部");
allData[6] = dept[1];
dept[2].setIdDepartment("12");
dept[2].setNmDepartment("経理部");
allData[7] = dept[2];
dept[3].setIdDepartment("13");
dept[3].setNmDepartment("システム開発事業部");
allData[8] = dept[3];
dept[4].setIdDepartment("14");
dept[4].setNmDepartment("教育事業部");
allData[9] = dept[4];
dept[5].setIdDepartment("15");
dept[5].setNmDepartment("営業企画部");
allData[10] = dept[5];
int employeeCount = 0;
int deptCount = 0;
for (BaseData data : allData) {
System.out.println(data);
if (data instanceof EmployeeData) {
employeeCount++;
} else if (data instanceof DepartmentData) {
deptCount++;
}
}
System.out.println("社員データ:" + employeeCount + "件\n部署データ:" + deptCount + "件");
System.out.println();
System.out.println("メールアドレス表示");
for (BaseData data : allData) {
if (data instanceof EmployeeData) {
System.out.println(((EmployeeData) data).getMailAddress());
}
}
System.out.println();
//nullおよび前後の空白を取り除いた結果が空文字チェック
BaseData emp = new EmployeeData("10000", "デフォルト", "ヤマダタツヤ", "yamada@hoge.jp", "aaa", "10");
System.out.println(emp);
((EmployeeData) emp).setNmEmployee(null);
System.out.println(emp);
((EmployeeData) emp).setNmEmployee("   ");
System.out.println(emp);
System.out.println();
System.out.println("コンストラクタに全てから文字で");
BaseData emptyEmployee = new EmployeeData("", "", "", "", "", "");
System.out.println(emptyEmployee);
System.out.println();
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.println("検索したい部署名を入力してください(終了する場合は0)");
System.out.print(">>>>");
String searchDeptNm = scanner.nextLine();
String searchDeptId = "";
if (endChack(searchDeptNm))
break;
for (BaseData data : allData) {
if (data instanceof DepartmentData) {
if (((DepartmentData) data).getNmDepartment().equals(searchDeptNm)) {
searchDeptId = ((DepartmentData) data).getIdDepartment();
}
}
}
if (searchDeptId.equals("")) {
System.out.println("該当する部署が見つかりませんでした");
continue;
}
for (BaseData data : allData) {
if (data instanceof EmployeeData) {
if (((EmployeeData) data).getIdDepartment().equals(searchDeptId)) {
System.out.println(
((EmployeeData) data).getNmEmployee() + "\t" + ((EmployeeData) data).getMailAddress());
}
}
}
System.out.println();
}
while (true) {
System.out.println("検索したい社員IDを入力してください(終了する場合は0)");
System.out.print(">>>>");
String findId = scanner.nextLine();
if (endChack(findId))
break;
boolean matchFlag = false;
for (BaseData e : employees) {
if (e.getPrimaryKeyValue().equals(findId)) {
System.out.println(e);
matchFlag = true;
break;
}
}
if (!matchFlag) {
System.out.println("該当する社員が見つかりませんでした");
}
System.out.println();
}
}
static boolean endChack(String input) {
if (input.equals("0")) {
System.out.println("システムを終了します");
return true;
}
return false;
}
}