From 38e24f41a5d07f8df2557783ad0d10d33578e588 Mon Sep 17 00:00:00 2001 From: This is Jina Kim Date: Mon, 15 May 2023 22:43:12 +0900 Subject: [PATCH] Add files via upload MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 알려주신대로만.. 학습중입니다... --- Main.class | Bin 0 -> 516 bytes Main.java | 19 +++ SmartStoreApp.java | 66 +++++++++ SmartStoreApplication.class | Bin 0 -> 3945 bytes arrays/Collections.java | 14 ++ arrays/DArray.java | 163 +++++++++++++++++++++++ customers/ClassifiedCustomers.class | Bin 0 -> 2003 bytes customers/ClassifiedCustomersGroup.class | Bin 0 -> 4653 bytes customers/Customer.class | Bin 0 -> 3370 bytes customers/Customer.java | 90 +++++++++++++ customers/Customers.class | Bin 0 -> 7657 bytes customers/Customers.java | 27 ++++ exception/ArrayEmptyException.class | Bin 0 -> 552 bytes exception/ArrayEmptyException.java | 14 ++ exception/ElementNotFoundException.java | 22 +++ exception/EmptyArrayException.java | 22 +++ exception/InputEmptyException.class | Bin 0 -> 551 bytes exception/InputEmptyException.java | 13 ++ exception/InputEndException.class | Bin 0 -> 540 bytes exception/InputEndException.java | 12 ++ exception/InputFormatException.class | Bin 0 -> 561 bytes exception/InputFormatException.java | 12 ++ exception/InputRangeException.class | Bin 0 -> 547 bytes exception/InputRangeException.java | 12 ++ exception/InputTypeException.class | Bin 0 -> 553 bytes exception/InputTypeException.java | 12 ++ exception/NullArgumentException.java | 22 +++ groups/Group.class | Bin 0 -> 2808 bytes groups/Group.java | 51 +++++++ groups/GroupType.class | Bin 0 -> 1964 bytes groups/GroupType.java | 22 +++ groups/Groups.class | Bin 0 -> 4306 bytes groups/Groups.java | 45 +++++++ groups/Parameter.class | Bin 0 -> 2020 bytes groups/Parameter.java | 53 ++++++++ menu/CustomerMenu.class | Bin 0 -> 7283 bytes menu/CustomerMenu.java | 29 ++++ menu/GroupMenu.class | Bin 0 -> 6266 bytes menu/GroupMenu.java | 79 +++++++++++ menu/MainMenu.java | 39 ++++++ menu/Menu.class | Bin 0 -> 2542 bytes menu/Menu.java | 46 +++++++ menu/OrderType.class | Bin 0 -> 1689 bytes menu/SummarizedMenu.class | Bin 0 -> 5092 bytes menu/SummaryMenu.java | 27 ++++ util/Message.class | Bin 0 -> 891 bytes util/Message.java | 13 ++ util/UtilMethod.class | Bin 0 -> 1269 bytes 48 files changed, 924 insertions(+) create mode 100644 Main.class create mode 100644 Main.java create mode 100644 SmartStoreApp.java create mode 100644 SmartStoreApplication.class create mode 100644 arrays/Collections.java create mode 100644 arrays/DArray.java create mode 100644 customers/ClassifiedCustomers.class create mode 100644 customers/ClassifiedCustomersGroup.class create mode 100644 customers/Customer.class create mode 100644 customers/Customer.java create mode 100644 customers/Customers.class create mode 100644 customers/Customers.java create mode 100644 exception/ArrayEmptyException.class create mode 100644 exception/ArrayEmptyException.java create mode 100644 exception/ElementNotFoundException.java create mode 100644 exception/EmptyArrayException.java create mode 100644 exception/InputEmptyException.class create mode 100644 exception/InputEmptyException.java create mode 100644 exception/InputEndException.class create mode 100644 exception/InputEndException.java create mode 100644 exception/InputFormatException.class create mode 100644 exception/InputFormatException.java create mode 100644 exception/InputRangeException.class create mode 100644 exception/InputRangeException.java create mode 100644 exception/InputTypeException.class create mode 100644 exception/InputTypeException.java create mode 100644 exception/NullArgumentException.java create mode 100644 groups/Group.class create mode 100644 groups/Group.java create mode 100644 groups/GroupType.class create mode 100644 groups/GroupType.java create mode 100644 groups/Groups.class create mode 100644 groups/Groups.java create mode 100644 groups/Parameter.class create mode 100644 groups/Parameter.java create mode 100644 menu/CustomerMenu.class create mode 100644 menu/CustomerMenu.java create mode 100644 menu/GroupMenu.class create mode 100644 menu/GroupMenu.java create mode 100644 menu/MainMenu.java create mode 100644 menu/Menu.class create mode 100644 menu/Menu.java create mode 100644 menu/OrderType.class create mode 100644 menu/SummarizedMenu.class create mode 100644 menu/SummaryMenu.java create mode 100644 util/Message.class create mode 100644 util/Message.java create mode 100644 util/UtilMethod.class diff --git a/Main.class b/Main.class new file mode 100644 index 0000000000000000000000000000000000000000..85cce4d3a0add586630e78a685d9c5ec22714966 GIT binary patch literal 516 zcmZut%TB{E5F9scL()J?Tgv-@IM8w+C&Zx$2_YdN1vmut!pRL*aFs{pxcnCvKpgl0 zJ_@leNaax=KT$p^}Q?@+CeJ(BIQaKI#cv$|?ADxb1~<$nDiY_?m^()Cz=(LL!nU#QVFQ~UwqR3h|J@lH zGt2AYNJN@p_jg@r8V*gvr{i%VBd%pm?bc$UFS0`OEF$N=size) throw new IndexOutOfBoundsException(); + return arrays[index]; + } + + @Override + public void set(int index, T object) throws IndexOutOfBoundsException, NullArgumentException { + if(index<0 || index>=size) throw new IndexOutOfBoundsException(); + if(object == null) throw new NullArgumentException(); + arrays[index] = object; + } + + @Override + public int indexOf(T object) throws NullArgumentException, ElementNotFoundException { + if(object == null) throw new NullArgumentException(); + + for(int i=0; i=size) throw new IndexOutOfBoundsException(); + if(object == null) throw new NullArgumentException(); + if(size=index; i--) { + arrays[i+1] = arrays[i]; + } + arrays[index] = object; + size++; + } else { + grow(); + add(index, object); + } + } + + @Override + public T pop() { + return pop(size -1); + } + + @Override + public T pop(int index) throws IndexOutOfBoundsException { + if(size == 0) throw new EmptyStackException(); + if(index<0 || index>=size) throw new IndexOutOfBoundsException(); + + T popElement = arrays[index]; + arrays[index] = null; + + for(int i=index+1; idsUsb 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 { + // singleton + private static Groups allGroups; + + public static Groups getInstance() { + if (allGroups == null) { + allGroups = new Groups(); + } + return allGroups; + } + + private Groups() {} + + public Group find(GroupType groupType) { + // NOTE: 오류나는 코드 + // arrays.length: capacity + // arrays.size: 실제 객체가 들어가있는 수 +// System.out.println(size); +// for (int i = 0; i < size; i++) { +// if (arrays[i].getGroupType() == groupType) { +// return arrays[i]; +// } +// } +// return null; + + + for (int i = 0; i < allGroups.size; i++) { + if (allGroups.get(i).getGroupType() == groupType) { + return allGroups.get(i); + } + } + return null; + +// for (int i = 0; i < this.size; i++) { +// if (this.get(i).getGroupType() == groupType) { +// return this.get(i); +// } +// } +// +// return null; + } +} \ No newline at end of file diff --git a/groups/Parameter.class b/groups/Parameter.class new file mode 100644 index 0000000000000000000000000000000000000000..16a9c8a9be90c0052486e5d99d07afda81f4aa63 GIT binary patch literal 2020 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 GroupType (enum) + // "VIP" -> GroupType.VIP + + GroupType groupType = GroupType.valueOf(choice).replaceFullName(); + return groupType; + } catch (InputEndException e) { + System.out.println(Message.ERR_MSG_INPUT_END); + return null; + } catch (IllegalArgumentException e) { + System.out.println(Message.ERR_MSG_INVALID_INPUT_RANGE); + } + } + } + + public void setParameter() { // 초기화할 때만 호출 가능 + while ( true ) { + GroupType groupType = chooseGroup(); + + // GroupType에 해당하는 group 객체를 찾아야 함 + Group group = allGroups.find(groupType); + if (group != null && group.getParameter() != null) { // group.getParameter()이 null이 아니면 이미 초기화됨 + System.out.println("\n" + group.getGroupType() + " group already exists."); + System.out.println("\n" + group); + } else { + Parameter parameter = new Parameter(); + // time, pay 사용자 입력받은 후, 설정 필요 + + group.setParameter(parameter); + allCustomers.refresh(allGroups); // 파라미터가 변경되었거나 추가되는 경우, 고객 분류를 다시 해야함 + } + } + } +} \ No newline at end of file diff --git a/menu/MainMenu.java b/menu/MainMenu.java new file mode 100644 index 00000000..7ba85d92 --- /dev/null +++ b/menu/MainMenu.java @@ -0,0 +1,39 @@ +package me.smartstore.menu; + +public class MainMenu implements Menu { + + private final CustomerMenu customerMenu = CustomerMenu.getInstance(); + private final GroupMenu groupMenu = GroupMenu.getInstance(); + private final SummaryMenu summaryMenu = SummaryMenu.getInstance(); + + // singleton + private static MainMenu mainMenu; + + public static MainMenu getInstance() { + if (mainMenu == null) { + mainMenu = new MainMenu(); + } + return mainMenu; + } + + private MainMenu() {} + + @Override + public void manage() { + while ( true ) { // 프로그램 실행 while + int choice = mainMenu.chooseMenu(new String[] { + "Parameter", + "Customer", + "Classification Summary", + "Quit"}); + + if (choice == 1) groupMenu.manage(); + else if (choice == 2) customerMenu.manage(); + else if (choice == 3) summaryMenu.manage(); + else { // choice == 4 + System.out.println("Program Finished"); + break; + } + } + } +} \ No newline at end of file diff --git a/menu/Menu.class b/menu/Menu.class new file mode 100644 index 0000000000000000000000000000000000000000..e789a30f8cc800bdf8238ebd5dd24ed377a6fb61 GIT binary patch literal 2542 zcmaJ@TUQfT7~LlqW-9a zpndFREnfQ2+BUk%sy=qD{)PUNE?T?KOt>1!S~=&;Ip5jeKKuK=GxOJfzdr|X5?^R& z#bpKWN07o54FOz@K*6wV(h9C=>@Umd5slWPDn5|?brl)8;f9Kv8g5}sPJXChTtf_( zRoqr_N5NeU_wbQizpr9Kg&~KN5|Lo{kX10HpSs(hWtUvT&eC#!S9}{j4H?(S z&ZUh)6+*Sm1y_0#XyHbWV$QH`>u zU90J-A#avS#*BH%DPFXv1hk6_S+n3;j!h4dDXUbFqH^5YRl{98B_J&R+1F)f9ZQNK z_&>D4y{{=9K!Fbpm9BcMkXJaSy#bA6pMHq#mD$WpnY4YL4oMdtmBkSeZ)4;=uvzs zDSw8~1-iGTyg5K5z0RX%$OZOo#`DTD?dKnzrR+yW&YIHwOwp&EqV6R^uRfYH4f1n~ zi@GsmSaz=fmwfBjn{3dcWfn`WnP-44TVR);u9oAc9?eZ7&lKHLEu$?9^46$# zotuS%SsWrWfpDpivs{7BT6I^Wa9H9_nfB|BM_JYGn&W0qOS;`K&5NxdjdGH3Ek9&c zXFe<&ITpz#13xYL_s zt2IG49Dq1s4~OYnFp4FU_*V5P(XyHd(p#D)Zc>R9&iM`NLJwnJxieF3F`ht z!!nfdr%-=E9iM+%!`p!%$Bn2%6WeCI!KWZZBSCm|RG}UdN}3%^{EBb|kqWfo?pS>V z(R9!A&<{{!4NC}hOVpsp(noDWJr3|a+3qpbeTXX4dbHpzyiEr&G~gYapbP1HCj$TC zfP#|>PMu@t@i@&zsn8Pp5c`u)up_p!g2r_|>7MQin!Z8(GGaVu^NSvj-?iiG{Cd{; zwNiTEFjO4jnUAtPMhBf9&xG%y%2R$iobh-{JIPp5@fim_#xVp}aD-G>(6marpXf4} zG5!ZI$d>fQ7!yItI4|k9kbZEmt^4_R=#bC5!hfK3JlGbRc!u4X@lbbLU#5aRV_ycu z(#yZ4#a`}^{k{tJCn{)rh696bp>I)7kna(0`*9iVJo>>GX=!zs)=MwH_QprN@mJo# z_>BS`V{By)eyGebK=N7ke)ujh6+i)0rc)yms)v0a^WhBJ3l!lBWw^&%h3==lx0owdA!Gj5T3k; iiLru+_y?UUI4WLJ!+-*XN<%2nuPS6MaFP21xb#1mGftBL literal 0 HcmV?d00001 diff --git a/menu/Menu.java b/menu/Menu.java new file mode 100644 index 00000000..a2332ffb --- /dev/null +++ b/menu/Menu.java @@ -0,0 +1,46 @@ +package me.smartstore.menu; +import me.smartstore.exception.InputRangeException; +import me.smartstore.exception.InputEndException; +import me.smartstore.util.Message; +import java.util.InputMismatchException; +import java.util.Scanner; + +public interface Menu { + Scanner scanner = new Scanner(System.in); + + default String nextLine() { // 하나의 프로그램 상에서 nextLine() 함수를 통해서 사용자 입력을 받음 + return scanner.nextLine().toUpperCase(); + } + + default String nextLine(String end) { + System.out.println("** Press 'end', if you want to exit! **"); + String str = scanner.nextLine().toUpperCase(); + if (str.equals(end)) throw new InputEndException(); + return str; + } + + default int chooseMenu(String[] menus) { + while ( true ) { // 예외 복구 while + try { + System.out.println("==============================="); + for (int i = 0; i < menus.length; i++) { + System.out.printf(" %d. %s\n", i + 1, menus[i]); + } + System.out.println("==============================="); + System.out.print("Choose One: "); + int choice = Integer.parseInt(nextLine()); + if (choice >= 1 && choice <= menus.length) return choice; + throw new InputRangeException(); // choice 가 범위에 벗어남 + + } catch (InputMismatchException e) { + System.out.println(Message.ERR_MSG_INVALID_INPUT_FORMAT); + + } catch (InputRangeException e) { + System.out.println(Message.ERR_MSG_INVALID_INPUT_RANGE); + + } + } + } + + void manage(); // 각 서브메뉴들을 관리하는 함수 (각 서브메뉴의 최상위 메뉴) +} \ No newline at end of file diff --git a/menu/OrderType.class b/menu/OrderType.class new file mode 100644 index 0000000000000000000000000000000000000000..b22deef465efd3c97472e9273e121e94249cdcd2 GIT binary patch literal 1689 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 JY45 zo-$aDF8LMr71txb?~K%=9}E`ub8Q{h?u4sCc(Bf3wd#=^N726qQ5c6w>cIwswW?Z8 z=p^0abWpk;d}Ofxc>Okm2cMo4dO>m+da(KAg!Hsab!4#d_=NURFAgZ`fCeLalTyZ7OABfIOkdL_3)ah%b zq?0j4&&_|_ZP_)U!$iI-};O#HUSE5z?={GL)U_;8zL^)FUX B-9i8W literal 0 HcmV?d00001 diff --git a/util/Message.java b/util/Message.java new file mode 100644 index 00000000..a3f73c1f --- /dev/null +++ b/util/Message.java @@ -0,0 +1,13 @@ +package me.smartstore.util; + +public interface Message { + String ERR_MSG_INVALID_ARR_EMPTY = "No Customers. Please input one first."; + String ERR_MSG_NULL_ARR_ELEMENT = "Elements in Array has null. Array can't be sorted."; + String ERR_MSG_INVALID_INPUT_NULL = "Null Input. Please input something."; + String ERR_MSG_INVALID_INPUT_EMPTY = "Empty Input. Please input something."; + String ERR_MSG_INVALID_INPUT_RANGE = "Invalid Input. Please try again."; + String ERR_MSG_INVALID_INPUT_TYPE = "Invalid Type for Input. Please try again."; + String ERR_MSG_INVALID_INPUT_FORMAT = "Invalid Format for Input. Please try again."; + String ERR_MSG_INPUT_END = "END is pressed. Exit this menu."; + String END_MSG = "END"; +} \ No newline at end of file diff --git a/util/UtilMethod.class b/util/UtilMethod.class new file mode 100644 index 0000000000000000000000000000000000000000..24bd7273ec17f07e0680003c245323524c3c26d9 GIT binary patch literal 1269 zcmbVM+iuf95IviuaW00WEp36)OG-(0#2x9&ePzsRNta=z z+7^b}=8orjwj+$LCzWwX%f9ehcC*Zol}=zP~18(-Zf5z>6Hr~ z7&JRL6X5I^ix5Pq5F}N%yN)SdOFy^FAXdpo){#I`!)+bw*kH)MvTe%D;hiuaHxtL5 zEH-J&>nNb8;jWH**wRtL7Q@oSY6$P&?Ek2Oy7wH1_o#+AMHIZvP#RlrNI~Ec8XEP$ zzMO)A`wVmWaU`Yi01v54o^U;e)qG(H=D2H_p0q9Fy(5~^&$=B3{jFsQr=qy)3gYeOaN&Ktuy1d;)l|Y=4;{-x{1A20IvLjd<#^ER zi2wT-hMer%??Eul{je1xt1g2EOb;3mj=Db@(yeus((saDV}!hM#WE~UwnGka`qlj> z3hEY;w5CWhXlJxf6~BOerb7g2TH}E-4xP?=Xn-rYO40=~$dbl)-X?3`IaB4V76hB4%M6qg!xNP86gTJ%Grvh`E#ejy Fe*