diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..26d3352
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/.idea/KDTBE5_Java_Assignment3.iml b/.idea/KDTBE5_Java_Assignment3.iml
new file mode 100644
index 0000000..c90834f
--- /dev/null
+++ b/.idea/KDTBE5_Java_Assignment3.iml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..4458232
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..12e7bfa
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/uiDesigner.xml b/.idea/uiDesigner.xml
new file mode 100644
index 0000000..2b63946
--- /dev/null
+++ b/.idea/uiDesigner.xml
@@ -0,0 +1,124 @@
+
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..35eb1dd
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/me/day05/practice/Practice01/Auth.java b/src/me/day05/practice/Practice01/Auth.java
new file mode 100644
index 0000000..d0d94d9
--- /dev/null
+++ b/src/me/day05/practice/Practice01/Auth.java
@@ -0,0 +1,5 @@
+package me.day05.practice.Practice01;
+
+public enum Auth {
+ FingerPrint, Pattern, PIN, Face;
+}
diff --git a/src/me/day05/practice/Practice01/Company.java b/src/me/day05/practice/Practice01/Company.java
new file mode 100644
index 0000000..6e94740
--- /dev/null
+++ b/src/me/day05/practice/Practice01/Company.java
@@ -0,0 +1,5 @@
+package me.day05.practice.Practice01;
+
+public enum Company {
+ SAMSUNG, LG, APPLE;
+}
diff --git a/src/me/day05/practice/Practice01/Electronic.java b/src/me/day05/practice/Practice01/Electronic.java
new file mode 100644
index 0000000..daa04b1
--- /dev/null
+++ b/src/me/day05/practice/Practice01/Electronic.java
@@ -0,0 +1,53 @@
+package me.day05.practice.Practice01;
+
+import java.time.LocalDate;
+import java.util.Arrays;
+
+public class Electronic {
+ private static int count = 0;
+ private final String productNo;
+ private final String modelName;
+ private final Company companyName;
+ private final LocalDate dateOfMade;
+ private final Auth[] authMethods;
+
+ public Electronic(String modelName, Company companyName, LocalDate dateOfMade, Auth[] authMethods) {
+ count++;
+ this.productNo = LocalDate.now().toString().replace("-", "").substring(2) + String.format("%04d", count);
+ this.modelName = modelName;
+ this.companyName = companyName;
+ this.dateOfMade = dateOfMade;
+ this.authMethods = authMethods;
+ }
+
+ public String getProductNo() {
+ return productNo;
+ }
+
+ public String getModelName() {
+ return modelName;
+ }
+
+ public Company getCompanyName() {
+ return companyName;
+ }
+
+ public LocalDate getDateOfMade() {
+ return dateOfMade;
+ }
+
+ public Auth[] getAuthMethods() {
+ return authMethods;
+ }
+
+ @Override
+ public String toString() {
+ return "Electronic{" +
+ "productNo='" + productNo + '\'' +
+ ", modelName='" + modelName + '\'' +
+ ", companyName=" + companyName +
+ ", dateOfMade=" + dateOfMade +
+ ", authMethods=" + Arrays.toString(authMethods) +
+ '}';
+ }
+}
\ No newline at end of file
diff --git a/src/me/day05/practice/Practice01/User.java b/src/me/day05/practice/Practice01/User.java
new file mode 100644
index 0000000..b261ea0
--- /dev/null
+++ b/src/me/day05/practice/Practice01/User.java
@@ -0,0 +1,92 @@
+package me.day05.practice.Practice01;
+
+import java.util.Objects;
+public class User {
+ private String userId;
+ private String userPassword;
+ private String userPhoneNumber;
+ private String userEmail;
+ private String userBirthDate;
+ private Electronic[] electronicDevices;
+ private final String registerTime;
+
+ public User(String userId, String userPassword, String userPhoneNumber, String userEmail, String userBirthDate, Electronic[] electronicDevices) {
+ this.userId = userId;
+ this.userPassword = userPassword;
+ this.userPhoneNumber = userPhoneNumber;
+ this.userEmail = userEmail;
+ this.userBirthDate = userBirthDate;
+ this.electronicDevices = electronicDevices;
+ this.registerTime = String.valueOf(System.currentTimeMillis());
+ }
+
+ public String getUserId() {
+ return userId;
+ }
+
+ public void setUserId(String userId) {
+ this.userId = userId;
+ }
+
+ public String getUserPassword() {
+ return userPassword;
+ }
+
+ public void setUserPassword(String userPassword) {
+ this.userPassword = userPassword;
+ }
+
+ public String getUserPhoneNumber() {
+ return userPhoneNumber;
+ }
+
+ public void setUserPhoneNumber(String userPhoneNumber) {
+ this.userPhoneNumber = userPhoneNumber;
+ }
+
+ public String getUserEmail() {
+ return userEmail;
+ }
+
+ public void setUserEmail(String userEmail) {
+ this.userEmail = userEmail;
+ }
+
+ public String getUserBirthDate() {
+ return userBirthDate;
+ }
+
+ public void setUserBirthDate(String userBirthDate) {
+ this.userBirthDate = userBirthDate;
+ }
+
+ public Electronic[] getElectronicDevices() {
+ return electronicDevices;
+ }
+
+ public void setElectronicDevices(Electronic[] electronicDevices) {
+ this.electronicDevices = electronicDevices;
+ }
+
+ public String getRegisterTime() {
+ return registerTime;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(userId, userPassword, userPhoneNumber, userEmail, userBirthDate, electronicDevices);
+ }
+
+ @Override
+ public String toString() {
+ return "User{" +
+ "userId=" + userId +
+ ", userPassword='" + userPassword + '\'' +
+ ", userPhoneNumber='" + userPhoneNumber + '\'' +
+ ", userEmail='" + userEmail + '\'' +
+ ", userBirthDate='" + userBirthDate + '\'' +
+ ", electronicDevices=" + electronicDevices +
+ '}';
+ }
+
+}
\ No newline at end of file
diff --git a/src/me/day05/practice/Practice02/Users.java b/src/me/day05/practice/Practice02/Users.java
new file mode 100644
index 0000000..7f24347
--- /dev/null
+++ b/src/me/day05/practice/Practice02/Users.java
@@ -0,0 +1,68 @@
+package me.day05.practice.Practice02;
+
+import me.day05.practice.Practice01.User;
+
+import java.util.Arrays;
+
+
+public class Users {
+ private static Users instance = null;
+ private User[] userList;
+
+ private Users() {
+ userList = new User[0];
+ }
+
+ public static Users getInstance() {
+ if (instance == null) {
+ instance = new Users();
+ }
+ return instance;
+ }
+
+ public User[] getUserList() {
+ return userList;
+ }
+
+ public void setUserList(User[] userList) {
+ this.userList = userList;
+ }
+
+ @Override
+ public int hashCode() {
+ return Arrays.hashCode(userList);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null || getClass() != obj.getClass()) {
+ return false;
+ }
+ Users users = (Users) obj;
+ return Arrays.equals(userList, users.userList);
+ }
+
+ @Override
+ public String toString() {
+ return "Users{" +
+ "userList=" + Arrays.toString(userList) +
+ '}';
+ }
+
+ public User findByUserId(String userId) {
+ for (User user : userList) {
+ if (user.getUserId().equals(userId)) {
+ return user;
+ }
+ }
+ return null;
+ }
+ public User Copy(User user) {
+ User userCopy = new User(user.getUserId(), user.getUserPassword(), user.getUserPhoneNumber(),
+ user.getUserEmail(), user.getUserBirthDate(), user.getElectronicDevices());
+ return userCopy;
+ }
+}
\ No newline at end of file
diff --git a/src/me/day05/practice/Practice03/Electronics.java b/src/me/day05/practice/Practice03/Electronics.java
new file mode 100644
index 0000000..46f3c2a
--- /dev/null
+++ b/src/me/day05/practice/Practice03/Electronics.java
@@ -0,0 +1,48 @@
+package me.day05.practice.Practice03;
+import me.day05.practice.Practice01.Auth;
+import me.day05.practice.Practice01.Company;
+import me.day05.practice.Practice01.Electronic;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class Electronics {
+ private static Electronics instance;
+ private Electronic[] electronicList;
+
+ private Electronics() {
+ }
+
+ public static Electronics getInstance() {
+ if (instance == null) {
+ instance = new Electronics();
+ }
+ return instance;
+ }
+ public Electronic findByProductNo(String productNo) {
+ for (Electronic electronic : electronicList) {
+ if (electronic.getProductNo().equals(productNo)) {
+ return electronic;
+ }
+ }
+ return null;
+ }
+ public Electronic[] groupByCompanyName(Company company) {
+ List products = new ArrayList<>();
+ for (Electronic product : electronicList) {
+ if (product.getCompanyName().equals(company)) {
+ products.add(product);
+ }
+ }
+ return products.toArray(new Electronic[0]);
+ }
+ public Electronic[] groupByAuthMethod(Auth authMethod) {
+ List result = new ArrayList<>();
+ for (Electronic electronic : electronicList) {
+ if (electronic.getAuthMethods().equals(authMethod)) {
+ result.add(electronic);
+ }
+ }
+ return result.toArray(new Electronic[result.size()]);
+ }
+}
\ No newline at end of file