From 419911469acbd363c3bcc5eb85bdf1725288b54e Mon Sep 17 00:00:00 2001 From: SimJaeHyeok Date: Tue, 5 Sep 2023 10:42:04 +0900 Subject: [PATCH] =?UTF-8?q?=EC=82=AC=EC=A0=84=EA=B3=BC=EC=A0=9C=20update?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .DS_Store | Bin 0 -> 6148 bytes .../project.pbxproj | 285 ++++++++++++++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../UserInterfaceState.xcuserstate | Bin 0 -> 24705 bytes .../xcdebugger/Breakpoints_v2.xcbkptlist | 6 + .../xcschemes/xcschememanagement.plist | 14 + MyCreditManager_2_wogur1212/main.swift | 213 +++++++++++++ 8 files changed, 533 insertions(+) create mode 100644 .DS_Store create mode 100644 MyCreditManager_2_wogur1212.xcodeproj/project.pbxproj create mode 100644 MyCreditManager_2_wogur1212.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 MyCreditManager_2_wogur1212.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 MyCreditManager_2_wogur1212.xcodeproj/project.xcworkspace/xcuserdata/jaehyeoksim.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 MyCreditManager_2_wogur1212.xcodeproj/xcuserdata/jaehyeoksim.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist create mode 100644 MyCreditManager_2_wogur1212.xcodeproj/xcuserdata/jaehyeoksim.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 MyCreditManager_2_wogur1212/main.swift diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..6b1af1d8c18ce9d56e3b29122c2eb25291b92dc8 GIT binary patch literal 6148 zcmeHKL2uJA6n@@1mNFsr0Meuh$r9pLjjkOav`gsP0|zb(f&-wEEY%2Pah0YEQ&lNv z_G5PCm+*Jsd$uPnDqJdo81j>zKR?^=x&B^l$3!Ihvv`lFMMNHyv2h#4FNFJ9mt@Vh zYygFhF{YRjD(EGJOQT(bW56-+uQ9-TcL)3RoDM0c>-#su9zH=!P9y3|dN>zjie0*F&cYkO>ZRMy@Ii1+3-=ayHOp8wEyI5OqY~0%PHoYzHeehA0K@k?S zX+O;0vh_--G`gyX(d%Sfj#_sQRaS&aHqNy}5|1(D-J2wfRoPdwES_rLz;t*`uQ_UM z&*#1F<_W$c`-RM=gAMY4&4EzZO_ + + + + diff --git a/MyCreditManager_2_wogur1212.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/MyCreditManager_2_wogur1212.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/MyCreditManager_2_wogur1212.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/MyCreditManager_2_wogur1212.xcodeproj/project.xcworkspace/xcuserdata/jaehyeoksim.xcuserdatad/UserInterfaceState.xcuserstate b/MyCreditManager_2_wogur1212.xcodeproj/project.xcworkspace/xcuserdata/jaehyeoksim.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..488878a4c0409af19d2b9f620875f010f1968714 GIT binary patch literal 24705 zcmeHvcUV-{+V5JsQH4QZq)7)U!!V7ah`=xm3{{$4$p|ALWsn(EEOBjP5@Sm|>|9%?quJg*Io8@)-_#6OHL*^6$D~;M%-Objr(-z6*KDj) z_?B0f*t%^Ed3}XmL+;3e zSx_-5L8Yh+m7@wY9?eAcr~%o~EYygaP%~PLu0%@^K_Xg;u0qSu)o3}o9^HU$L~GHl z=yr4mx*u&t51?&mJKBMEqNmW)Xb;+p_MvCdA#@nMgkDCkp=0Px^e%c2ok9OXU!t$j z*XSGcE&2}qi8<_!y|DuO;o(?`qj3z5#c?SJ!;|q8 zJQYvF)3FuL#ItZCo{d{@D{jLM?8Ni%d`z&2m*P9|U3de&8*jutxEF82oAEt(3%(a` z!@KZ<_#yl--i?po=kW9R1^gm@3BQbA!EfL<@k#t1{u=*=e`he`#<(-yjDqoF0vRO} z#*Ad5m^db$Nn+HDfyrPpnbAxoQ^iy>HB2otftkomVkR?Fn5j%1GmB|t+L(4`E;Emr z&vY{jn1#$$%rfR`<~rskW<7H^vx(Wv+{fI{Y-e^b4>1ojk1@NMrCBB z*k$b1cq@AiyMkTAu46Z_o7wx=ZR{@gLH1GhW%d>JDElh=8heaA&YoajXWwAoWKXdl zu^+RauxHqRu|KdsvOlqZvgg?I9LsT>7dM23f*;RU@>P5_U&Bx0>v$VKi*M)c z{5*a>e*=Fbe-nQ*zm~s+zm;Fd-^Q=!Z|67g_wWz!+xSQLNBPJ2z5G7@P5vbR7XLPX zihqZHmw%6cpZ|dWkU!0T$$!uP!2izw!Jil01b1P$;4cISfkLPdCPWG`LZXl)qzHP! zAY=&H!Z;yEs1+s%6NO2_WMPUhRhTAB7iI``!WDv5m?_i?4MK-7N9YtBf>Y=c<_hzK z#lp41a^X5*g|JdsCEO~k6K)gk5FQY=3EPDo!cO5K;bCF7utzu`928!xjcxC0Z9R^L zAs^(66v!VbCze;MTWsBqDe&EgG!tU$TdfX9FY-gf2}9Uk6o3L@cW?{Iu2aMo=nL`< zntXFgUb;Cy#ZZu*nPN;EZA#IY%<1}q3`1Ul(O9Plu$T%a+B;hu9oBlA$zI>pW@~r4 zdJaL+DCu4lio(!H6pkWLB#I(D5r`XcCmzI;c-@O)P%Mf=@lYfI#Sw2Zj3kS=8OkV0 zGEvW<%{R9<*you$t!=hC#kj%!)mUfd+uNO;_SRNgXI+|JpJCP%7*q1{G};xTZf|V0!IL^g!r-3d zG1Qe;SJ@m+d#4qOOIU2OI<0kz2q>CY?*uUKUy7kaQv?t6YPYw}w02rtz1As$2A)YH z8uVzy!i8z+s>sZ=#j41KT7yPIe~(_g*tNh0l#P<^Lun`-WuQzn8jV3&Xe{v|zC=O% z$Z+CM0!ZL}u(UZS7v&)%%7@`Vo!i`Kg*nQ% z`Y-c3Z7@?mC{^ohZf$lp+Z+>{8=OsYF-yCn15Ph{=RmRkntjFm%WQ4-&hElaYe$pG zHnXd-5%#RV+x|wULk|TF&3#RIxMo_3CR0+XLe;1S)uIV#BAP^kNH7T@p(KoqB;og> zDQGI1hNhz#s1990B1kIHkPKoX6Nr`0aO9+VdxK34?Uyt=)&0X$S9iC~w70_Cs%@<> z2U|n`BRGZ&JMCQ^@&h=u9d(MB{#MHE&gOcXLuyR=IjCM}f2pB;nSqw;6p?@Pw4ZwF z6k&f;L|Qr5qRd7Py8SJv6}6#uWJeun4(cS4B#K0n7!ph3NIV%uw?6^Rg}?d0X$yeM zl<+?R{*r*jRFutNT6FuRh3KCJrH1|yRkXKu%Y=TBQbovUQR$e`D?=tAeMId*gUX*kXx(jVUccYD{hiHk8=!t=(-Gerv zNx&}?P!&lh;lL|lz)nC2(HAE?i4W8khoj3zxAanlBoeJt#9gWkY;9M)v#S#j{co5- z?oj5JOODCKzL&$8u65ak9z{u;(SztA^e}paWRlTj49VJz9z(m)}M5vyH263ZJ%|~!a;HywuV~E&~{wo*^dq&<;IO9 zTPBC~=wL71cKK`=(o3}+uono!Rr3gX9w~d!b0oJ1y+HEl$xY9bi`F>?!oVx&D0;O{ z5du(1>2^F-Q>ttooi+!Y+g3_-B%c^76!*<^X)u^!IbLuZHn|ztSsFfYIq-F-E$(_X|~Lmz35{n%dCV(Jep4SpEji9Qtp8ykf`E2{_sTcv|JdxuVP23j92w z*)~tspy*`#R(}(E9lb#p_cF`ZDQ4EyI1BS9Xwyv-Y6kiMWY?t+Tn_58rn|%D$mr{? zZbEgPUOP}uTEc2LW!oDq4Y26Vvj9EoT>E(vy^WH3&|9RS2c05jN`b+1x@?`@Nx z0!nlYh&--J@1svBIe&mYL?5A#Ng*jB7E-(!okpLc&(P7tL5y#$Mrx-3>Rl|V~W3QKpMuF-S zfk1agtFyj|GHs1*zEi4SGYhWXK;NSu(2wXR^fS=lS@a9&nZKdm(I1no?e$G|3iFet zMr&-HZIjz*Bl%W`Z3;!(25FpAq{q@=NDZlQCx}#&+7r;)IdmQ)ppW0s*O-M-*nkL{ z>zkdXW=BV>wOc+!Cc(nB(QT=5!oWxsR38uQfO#xnx5*$AJEXIQRL*?$x!sE;n!+B~ zQ_{oxAYN{06WsPfYXIBjYq{t!?DLoT%X5cLd$BL2wIPes|L`yO2Ntc}-fokd_QwHr zitxcpE7cyd`n@=i_VI5@^-&8Rfy01Wa1aj0AvlywB$LQwGG#L!iNkRO9!aK>X=FNl zs{ePu50AnLGWcBrx?E#dVKu-VP9ZaTa4M<$cW{UG=qOJ6cW`$_g&*TT6z_t9BmOzw zZ5F&00mt0jJ-li zK*xsp_8z3F{3F9YFJu;TNKLPb3U6%4<_}Ozfpcap|X1+CV&0JLWada)Keu4^&Dus6HiN z)~W@uzX6O|%g{9-er*6_)nj0)+Kb)+KsXPkrzkKu>A~1E8XIu|F2@tW%rpbcO9XF_ zPZGv;w8RZPS@8WXqRYfNC}|6{Fa~Ggu{ax#BQr@oX&^Q-i!^Qlq53p7q6BQh1t3h9 zkR}kVJBfob&`2t}f~-o#N=rL{5U7s;b`-(^`s)-UOvb|gv%2rDEKH1mnvx_{(@8fT zN=rKr!WTW?U2Rr%wYNii##VcMi-Ri5eY$KFC^CH|o!0u6e0v+keM&zQtgT%(*UZXs zHHCr-JRVo#D$-15lNQpt8Q0)in9oGgMmk_FbLdPcfJx(llWeebPZfv!uFg&vV5zkW z(7amir^+@9X4_sbi%VK4Rb-uOlaH3x)^1lT`QvM)RvYQ6G&Q$2K%G7zgTk5gY^Yua z2e~9wNHR5S!kENnQ1GkE_LQya*-r;stmiSwI%{0-?nLfl2yW zAf*6FTPd|!TWk$71%QS&sjB};A3d2n?QQ*foU7@p@bxI^0lW-fjjzGi;^p`{yaKPp ztMF>PhAbvmk|l%?kt`)wk!9p+at*om0el0{`Azs{ycXYrZ^i5IZFoJtoh%26UqM!q zRb;h@vqfwcag~UxMchPJAkwvY13G;*oX<`R#YE8azN6XNJ!Y-YMV0nVPxM$SF5wR11vPOqw$^1Z6Gg~TD$FCz!HIf8HbCh zVmjn>W2olMu;@s6p3 zp7!FMXwBdoQz|-a?Ur^hN;#;cHoR{&N^P^8HTJ6J#wMpshmW9Zd+?)V4M}v-$>Vq* z#l9!-llUq8G~R>vlIzJ0)EcJc!Gj-;H#@8b{fhxjAdsgLm|_%!|$e}+HDU*I$F>r4CSEHlTK3kr|C?;VlOuFo@h0dRP94@Q;aV8a(MT350bWAYy?92pZ8Sq}+X=?>_ ze69`D+wEkFJd`vh9poFpf?g&~TIG(enV=xc!gPwm-ql$TwyTtWR-*=M8H8Qiq#kc; zv^u&R)lyk%aP31{W(-q+lD0Bg%vdIy8OP)>xlA5oWbzpkd5}Cr9wv{FN6BMkH+h^q zL7v>on864QLJU*PlrW|6U5*mSQy^hdp=K{RNDjgGVYmjM4jJf89*tVIDZ#-HEO+5U zI26j7+u^M50I}<$kLkek?ci_+wF?BLibS(Y%F zY3Sx2W;%JA+MmHG$XtPL-pp75W8jbM0hFPCDT>!zJKMy}21T1`Ci{Ar7P6lz+94)e ztJ5lPhAcqzuY{|Xo#{l%UZ#VYLk^H!8s=KrAt{e>&>7#$ET^PTos}0n zyWmV`R^ZQ=Rm^I9hFQVfz}!e)fm8A=@*W42U}=@H_EOA#D%y9EG&K%sys6 zbAWkEIwm*156C!IpXXUd z0x}i@kbO&m>@3v%@`BnIz!2+>KVv;vFMNg_#`>_nWtIY-V90V39q z9nSjq0nu;d2lB@tAYy|6h}d8@gbgJ>lAp;h{XoRJOUUul#es;8k)EEt99)rrh)s|x z{CYVRBp_l_Bp~`-2BOvf2#Dfznz#aOT&5u|(a?`W zmRcp`V)cMrf7%sRlnT~H2ZYdd!e=U)jjZsy33bD#9h~qE2&!v?`zE+{z_n9y$fv@$ z6|S97t{(2t5WG5wVz9wq9?FN`I_YVopO;^=-*CTn6bX?WYPd^3)8Kz9gz$Ak$xf)# z0DU;&+6wM|D+KbQyPX7K6agxnq z&482aST>s-$L6rPY#wW5^H~#HAYzEpV?@k~m=iHCVnM`iB6b(ChloA5vV}5YvL$RO zTZZD;3X~vXFBvjL>?`5`5eL#JAR4CdUrEs3`5%Q%b~?Z&J43|YeYnY50XNy1Y(4!G z@h}nl$e$n%wkZPpaEzVJwgPstEh1L*ux%ptyFBz{=deymBxD`rfQW|!0J3w5O2qyb zAfR8!tueXoefVj0^}CoQGJY;0M?^g067{DyfYaG&19xGkEdc^IK+I*Y1%np5Tm&~) z;xTq5+*rk~2D^B@Y_PsS78G%qh_fz$Vk!}`H?lVY6t8tjgd&a=!C3}aJmvzSkiCsv z?-B|{93$fJAz~qWH$~%(Y!BNj;s_B(ia4qtkOxbK7ZC^hZn4`b&WbqtvVoQvB=Nb{ z_A&MV<>B4zD zz{A@W-md*V&3;CC_)`%Zdf3lJoOYQ!{3ZJh@F4pY(;?#YONl^=NLN=sv%ku0`wL~; z(SI-ZOrV+qWmkx^;t+>rPty?21ZBFurI%x<3P;^g7d`~DsmoGaCqEq`8*w}*$oz;; zh}a~815Z-Zz$Prg1m_LQ#|`6rIA2a7;v5m@ia1Zi#(u5@zCTL&Z4Ais8(nNUNQZOX z8l<@O-Qpr-PR;-KoccC1f{W$ixOi?9^5qhkATE(hVs>&WE(PN1zvk5JN9Z^9BTfUF zEZFrrWlv&jS6h2|SKCY)#4+5~PVE8t_Q5y(>YE^T1Ogj7tE}yfHqg4MgSpR)ThI=6 z1j&S;kn2*LL4R|uUIyR%YjgH`azeo?yhL0;kpKChB6%+#=XVVO$0`8r*GMricrBxG^FwqOyV?^wsa18E_MF6KCQIIJ1b0MO-4{(oI|uO5ot4j3`B1PO_&%s{>Z!Y4mC!d{+UN)Du)@ zZG^a)t_IuWeiDtzz4lw_Jadh?ikon;?j}NalSMq9c2`Mx(ifU=xtgf6C?aLTUN4s-yPOgiaD`FV^6cJAq@wCm<9S%{Z z352@BRWkgCP5{py4Z(tCv(1wnlvUPwk`oJTTOmWAx?(nIcoMkRhCGz2+dG|LuCDKF z?f}0L)K?BEBDGE(EUvLG<(5%Gxk|({dcfFKBGC!>MjiH68<=r{FX)V2rLW^w($XtL za4d7HL@b34{~cM~K*{Px?j{k>6tQi9tZw1fUu>Umhkd?N#PxKa8%TEl7R2N_$&l^s z;qJLu{Vh=cJ`vBN^&3g{z|O_wE-R86fCv(92Y|;;ZWpx+H-N9H!cW*fG`K}@%lM~h zNbf6x+&w(Kydg|Q;Wykr076HCfXMuta3MnQ~6T>Pkn#Moq2a&oFBS)%;`0OkuK!@^bbN}r@q5jkRE77<&Fm6{n!QESCb+iC_L7nDK z8o21_u!AERkT2dD>J>;UgxbTBpG6_Eob6cFJrk3nVy8sRHnyCBi8zXWs+ z>BfZmoInxTW|PDcUc*y@m12u!}Nz6Y9+ zmrWjP@ZgbvAGy#5@yk*$9t5XZ9A$8!*>r;|Wh#!uaj?1?3S#l7_dR*EZrskO%Sb@E~pq_~A)7$nH?O?^KM) z96cs$Z1%XE+&p8xsjRxDcIwRfhQ`@)dI|(%=NSsp3i8v^Qu0TeMyD8bnTC|i(FK~6 z^h|BKMwgeLVa(5ibx2ExtcOUN{y?)IA~o<|o2J!8j!x4=!iEl98`1_nG#KDv?C8wQ zj7+mRGi7vIo;Jl`Fl4|lQ)Y@TFGG`=o|$1TFaU+d=BJxXqxJd%NER8Lkz&YzvPMHe zUWzVLYcT5bv;`SDpw+;ENDw*zRpjVQ-QvZ6cfS@kXiTPEq5X&Ydt_t)*aF%>&u<28 zUkz4*dGKo%=>PJQf<9{iSOwtZ2e|IvM41R>Vaavs(qIrdQRaAoxv;3Xl;T6nMKgkW zEM!$u#RVd3uf3sMBkvE*x0PV-qG$n*2AB_JjNHoiqh#TaKQL` zj5^H~G!Mr`*zza`*XTN(6IG24r+Df~fF^Ay)il z^Z~@7#zRP25#&qGg&>~Q5R>yTJ_h-XXBh;UjVeYD4mk_>*~*v-$YZR59L7nIzc?N8 z7p=@prh&0R9wT^pm=?%ov@>%U2jgVcfHUJM$V@!ThO-6ibhZm}2R~qc0?{~t3*$y{ zYEHxHKx|9rGC`V}0(pINKnCdI?&R)+?7hdi1CYCSoO_2m&AUMko{2Z}MUa8lz%SxO z$g#T_^6Kv4?~@KH)E{=&B44{c`Q0LxU9H?h+{17R^hImYu!&7@>k+gD5Q<*8PVC3H zXCRb`+YS9c!9B@6#XZgK;r4R-xcwYh99l&T){1r!+eHlO%N!ARir67yr--{mJof=O zQV(*6xWn8L?m6yx?gez3dx?9Qp0M*o{IZBoi5N7huSLdPWIRZT$asm2Hx(fQj3Ah` zbl4%T(;+2)fyWOR5xitlppUGENPa+v+1?5MSCCZvAYM<3%9;;nS3QkdnI`9rRo6G! zXnI?KdZk)pP|jWS_J2sUHs>b_iOm?&_f9|EmXjNSS|V zvgA&4pHa~c)Zc|Y9H_sGL40QVJ?Y$6)F3M2MRkgK|Huq|NvrZDVkic=vE+zQ@hZB4sv+yrM{<4gvui_K>K0JI#fn38 z;@oC?m!rno*=TdhO-Ql=$W#|;y-vP2xU{T7{|P1u?wp91l9UrXhIkY(@AC}L@*K}k z?swgb_-YX^6EO(mEB@cDb4=c$qK9{$+F zbwoWuUX%&)oZ-N`a0xCQ(j)1@d?2rMs`z)sF0L0}bYQLt zhVl^eKS*EXBls8~F+P%yVr~%e8WG<>-rU5;@^O5;h(VvZN5oGIVGll8W{>OZ6#svD zX$G+{uaU=imIMSQ!6?-22wTlpN>w#w(r{t+JhB_h7dWm~;_z(2C-zqZx?yls`Q1t8-mhgcsks&yZHeVRA zhYf zKmA*8lWVWP;=yCo!+$N}BR%}LB7W{N$?-@2EG5UEC^s3GkE0LtYP?CJ9m;aRkdHIElMBBJ(cnHJ5&?`@{dzB;8Hn-$Apo{R|pp(sJ(|qgoE%4xr3AUj}`F=Nir3pglJi% zw)F~8XpO6@SRtNv1&-i1dW2CTe)HdUg`|X9K}9M-*PwO`u;OV_;9IBFq>a`Z^7Z)| zZ9!d|wchTSFMripJKNF?t}fMrhIW}M;eO6C&hkwr`#b({weT zDU1QC6h@2qogN`e#P5P@2bP~&MP1gcOD(0VnOvb5Deo8Z1f!5In1lksEEEbw0(h3* z7x4!o{!qjpi5M8>6A_;l@uwpG?0%FWz!@r(3l+k6p;D*<{|J~EKBwpB7a~3*;(v)4 z==>`HuG)&H%%p(*}NA zx~sL)7raKIVXm`58gmMDHMXYIgY}{dd@W<7%O*Q8hP3q%{YvX;^=kdZGHboopc?I3 zXPYn^oJ_(jp;2fOnnnDLhyhBz6Y=+(g%+VzXcO8+3<~m(BK}FlKT}#!!gda|gh(cL zITdo~g9$WWiw2X^e9EDZDmrMQJ1nN=f=7Ku7@B_8)kYJ`WWuSoHA+cHwZ<;UVVtNn z6zDaYdIcD=APPm8kFMP$bPEfFg(3z(`cq_ZzpqHRQdkO_n6N}3f+*r&MEt9Wf7>Kn zB`gzKMEtvm|A0x-xlyDTI?f?|L!z6#Q?k?~U%H?Xyy?|8$hDK-@{@S!(sCb?t1c$D z&q!D4a`OwTg&Qw6_?v{A1<-K79B^J_5K+hE$bL|WM~jSOP^9Ff64rCOAoH64t8?m~ zza!7xqoxybj|krC!2x$-H!>#|x!>>&WmD8c zEyyX!a8sj|jPm^xYmleht4qG<{R@oDrKl2O6K8;TfyOW{gx3PDK&#LibQ`)G-3xC_ zc?2@7A4gBZ>j0mHmjE7zOzV%~)qmf>OaFer-tfA=FnGs$doRI*ZNh_7x~GQ z({J?EyUe}vH#Kn0cCr1P!X`*L1culk+%1SgkI+lmf?-641Pmw2x7T<5vo^A69uJn#1G z@!aOQ!*iGCL!OU#KIZwj=eu6mE77aeYmV1CugzZDy>@y%==HGIqh5Qx_Io|!b)jrqz+~{+&&n-Ude0KR9 z^*QD9t$WfRSWr}u%L$OxTqu8q0rr4p_rFcm3lwyx! zpW=YxS;Zm6JBn}pJp5w)w0=52ySNP5Jv-vebyz?@@)qY$3w)ySwKjeSR z|9$@t{Xh0U?f;qo7yke9|Hc0||3CcC1)u;XfC~@;;sbI6rUY~aEDN|hU|YbW0lNd9 z2zV-BPr%`T=K@{`cq!nOfL8-P5A+E%2G$3*2HFGX1Udq547@$?-oPD!j|A=wJQDa^ z;0u8t27Vm)W#F%Ye*~UWVkN8Om5EB7Qm;%?j#HK>$1AIpHOk4#smkffI^{g&dgT`7 z9_2pe0p+vGL&_t{=anxiUsfJfzNS2`Jfr+l`L*&}<@d@Tl|L(gRsNwoKY|&-k8m52 zG-Be2<`K>j>qhJx@%o4_g1m#GgS0{8f~taSL5)GpL7hQY23-|&ebDVecLqHe^kmSU zpnX9Hf?f$a74&Y<`#~QDeH?T;=(C_7gMJSBCFu8{KZ8*)6U+ts2FC=C4lWF?4t4~0 z1uqT0Hu$>WmBBXz-xPdH@Vek_!TW-r3qBhBTJZ7U*Mr{-{v{+JBr~Kqq$y-k$nuaa zA@_xB4cQj5BV<>|Lm`iZJQi{^4!C@dr_ENo0zVVEVXB&;l~C2W4! zvamH_H-z03wsxfN$e@wxk@}IAkyRt7kE|PM9eHBpyCc6C`Sr-(!r5?jxITPFcuTk= zd`Y+%epUF@;cLRzhOZCb8UB9wmk~IEjo>5PB0M6zB8ElyM)*beM+8PBMW`aw5t;~H zgdrk5A~Rx4#Mp>&5xEi5BNjz$jCdyE(@1Y{{Z~Y`N3M)q8@VoWedHaHnje z^5MuwBX>tW5qUWB`N$U|Ux|D*@>t|Ik$*(tC^m|Z@{ID1@`+MJg+(PtsiQKYMn{>W zN}|f5DxzwlCPYn&ni6$Ils#&G)b&woqaKKQDe9G|SEG(aorroP>SWa0QSU_k6m>T0 z*Qnp4{){>wjiWuI{i6M&1EWVo2S>+8CqySjtD-ZaP0{A)qUhr2rs%HddC}d`3!~RZ zZ;8GydTaEy7_XRs7-dXQj6G&i%#|@DW@*erG5cap#Jmx6GUn}=cVga)`5@+_m``Fp zjrlz0&zSSEIF^m&W8GpsV!dLA#rnqj#rnr;Vk=@DvA4uN5&M1|8y6jy7dIoWF>ZET zYg~KWyf_lKG;UekHF3-1R>ZA}TN8Ij+=jS~ahu}qiMu!MVBBkQZ^WI9dpqv^xDVq# zjyoOqW8B$z6wk!_#s|bJaQ zjb9djP5kos74bL6-yVNw{D%0A@xAdo;~$KFIR4T2{qZlyAB}%4{&@U%@#jXNQOqcA zRP?CSQQA@ZQE8(Nje2F&tD}x3tV`IOuqENXgslm0Cw!LhN5c6;CXr8cPxMOkN%Tt$ zNF0$El9-yPOEe^=CuSyQC5}tXOUzF+Cl)0ZCpIQtlejhUrNnQOlu2WfCMV5Lx+Q5t zQcu$6q%BE1lO9icDrs-hfuw^;hm)R5dLik}q_>maP5L0|Trk(`@sOs+_-NuH2AIeA9%70LCZt0N>UGsg)hX3`svlH8 ztA0`arusv5K7~o)Q`}NKQ@m4rQj$}OQ`%E*NO>gX?UZxsk?OJP$?BPEo4QFoTkTLU zQZG?2RbQ=Mu3n*DrCy`HL%l)Wqu#8(SAD2PKUbes|C%bK zdZi9aRip-{jz|qo4NXl-)uxU~txBDkYEKnYZ%@4|bz^F8>gLofsrRQol=@Wa-qZuB z2UCxvKA-wV>RYL&Qr}HIllo=q*Qwv8{+W7SgEg#1q4C!QYDQ?%G&3|^niZN2ng=xp zHE(IY(tM-&PV>cVs}x_DipPNmc9(sh}-EM2y)LN`fg z)6LQ~>Y8sIR4>elIQ*WIPtsO!}|pnFueUw2Y>TKBc?JKc}Ev%25( zte)4q={@vb`eFKHeUZLJzf6Cleyx6;{&xMH`VIPr^!xPB=nv_i)4!;HS^uH_jQ$(_ z_xhjoXAPXe%iv@1GXxky4dI4JLyRHLpf+R}OokFexuMcfW0-1~VYtFjZ?GBchWUmC zhN}!Kv&LrSWEEvi$eNzjkToZ3dDhCTHCZ=it<74Ob$ixbSsSx9Wo^m2KWl&1Gg*hS zp38bM>y@n6vQA{Zne|rIJ6Z2%eVFyj*ub%gW7Ef$jU{7m8oP7sYhynidoJ56TaoRb zt;`P14$qFtj>(>$y*m5$?7OlzW^c;gl6_zHquIN&pU8fCT>7~DamC}x#*H6WJ#Nal z>Eo^#S3k}+Ztb{d$9*~Or*XfG`+eM>IX*c-IiWe>IZ-*WIU92B&3Po}iJYf%_T?PR zIg;~2&PzGRbKcJRCU;n_GB-UpJ9m1nBX@c3ExEVmuFGAYyCrvf?ylU2b05upI(J|0 zGr5OykK~@neIxf|?y0<%y!m+x@)qSS$@|UdW(+e%7^97G#sp)sQEk*34aN-P7-NO8 z%2;EZV4P%}YMf!T8taX-j7`Sb#%qmRj4v3!%va>6=TFJ+&c7}H(fqyn2l5Z*AI?9T ze=`46{(Jc!=6{m^Y5ouSKj;6N|406L6E=mLl1& z^CI&S^HTFNbB}q4`C;>8=Eu!@%=^p-%+H#SnNOKNH-BaR#{9kctoc{-@8&-Xy$gd2 z)rHzZLt#eYn8NJB+`{}qbD^cMw9s1EP&liwsc?2-TVY3`qp+)Re&K?`MTP4NA1{2T z@LW-JQBhHA(aNH&MMsKWEjnKGM$yTl4~xzeeO2^r(GNvG7yV-4E$$XCi;u<6;&0Jd zvMokSfu+z=YALr=TBB^(-A$swj;qjVnzkO)5<()s*T>(@RH}W|d}_7M0eO&M#eA z+FQE2^g!ubrQetST6(@Lwk)YEtt`8&xU9NtLfPc9X=Qa~O=T@*?PYVyoMm&%t}okK zcBt%^vUBA^xqG=^c~E(1d3bqLc}%&cJfnO}d3Jejd0}~Rd0F}R@~ZNM<@cArUjAPB z2jyRt|5$#u{I~KyE4T``3eSpR6}}Zg6%iE)mD)-}WnN`@Wo2be<;2PYA$St8S>esp^iZ%~e~f?yK5bwY_R*)zejbtM + + diff --git a/MyCreditManager_2_wogur1212.xcodeproj/xcuserdata/jaehyeoksim.xcuserdatad/xcschemes/xcschememanagement.plist b/MyCreditManager_2_wogur1212.xcodeproj/xcuserdata/jaehyeoksim.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..629be99 --- /dev/null +++ b/MyCreditManager_2_wogur1212.xcodeproj/xcuserdata/jaehyeoksim.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,14 @@ + + + + + SchemeUserState + + MyCreditManager_2_wogur1212.xcscheme_^#shared#^_ + + orderHint + 0 + + + + diff --git a/MyCreditManager_2_wogur1212/main.swift b/MyCreditManager_2_wogur1212/main.swift new file mode 100644 index 0000000..b52e04c --- /dev/null +++ b/MyCreditManager_2_wogur1212/main.swift @@ -0,0 +1,213 @@ +import Foundation + +class Student: Codable { + var name: String + var grade: [String: String]! + + init(name: String) { + self.name = name + self.grade = [:] + } + + func average() -> Double { + var totalScore = 0.0 + let totalSubjects = Double(grade.count) + + for total in grade.values { + switch total { + case "A+": + totalScore += 4.5 + case "A0": + totalScore += 4.0 + case "B+": + totalScore += 3.5 + case "B0": + totalScore += 3.0 + case "C+": + totalScore += 2.5 + case "C0": + totalScore += 2.0 + case "D+": + totalScore += 1.5 + case "D0": + totalScore += 1.0 + case "F": + totalScore += 0.0 + default: + break + } + } + let average = totalScore / totalSubjects + let finalAverage = round(average * 100)/100 + return finalAverage + } +} + +// 메뉴의 기능 모음 +class MenuFunction { + static func menuSelect() -> String { + let number = readLine() + var userSelect = String() + if let userInput = number { + userSelect = userInput + } + return userSelect + } + + static func addName() { + let inputName = readLine()?.trimmingCharacters(in: .whitespacesAndNewlines) + if let studentName = inputName { + if studentName.isEmpty { + print("입력이 잘못되었습니다. 다시 확인해주세요.") + } else if students[studentName] != nil { + print("\(studentName)은 이미 존재하는 학생입니다. 추가하지 않습니다.") + } else { + students[studentName] = Student(name: studentName) + print("\(studentName) 학생을 추가했습니다.") + } + } + } + + static func deleteStudent() { + let inputName = readLine()?.trimmingCharacters(in: .whitespacesAndNewlines) + if let studentName = inputName, !studentName.isEmpty { + if let student = students[studentName] { + students.removeValue(forKey: studentName) + print("\(student.name) 학생을 삭제하였습니다.") + } else { + print("\(studentName) 학생을 찾지 못했습니다.") + } + } else { + print("입력이 잘못되었습니다. 다시 확인해주세요.") + } + } + + static func addScore() { + let userInput = readLine() + var nameSubjectScore = Array() + if let studentInfo = userInput { + nameSubjectScore = studentInfo.components(separatedBy: " ") + + if nameSubjectScore.count != 3 { + print("입력이 잘못되었습니다. 다시 확인해주세요.") + } else if let student = students[nameSubjectScore[0]] { + student.grade[nameSubjectScore[1]] = nameSubjectScore[2] + print("\(nameSubjectScore[0]) 학생의 \(nameSubjectScore[1]) 과목 성적이 추가(변경)되었습니다.") + } else { + print("\(nameSubjectScore[0]) 학생은 등록되지 않았습니다. 성적을 추가할 수 없습니다.") + } + } + } + + static func deleteScore() { + let userInput = readLine() + if let studentInfo = userInput?.trimmingCharacters(in: .whitespacesAndNewlines) { + let nameSubjectScore = studentInfo.components(separatedBy: " ") + + if nameSubjectScore.isEmpty || nameSubjectScore.count != 2 { + print("입력이 잘못되었습니다. 다시 확인해주세요.") + } else if let student = students[nameSubjectScore[0]] { + if student.grade[nameSubjectScore[1]] == nil { + print("\(nameSubjectScore[1]) 과목의 성적이 존재하지 않습니다.") + }else { + student.grade.removeValue(forKey: nameSubjectScore[1]) + print("\(nameSubjectScore[0]) 학생의 \(nameSubjectScore[1]) 과목의 성적이 삭제 되었습니다") + } + } else { + print("\(nameSubjectScore[0]) 학생을 찾지 못했습니다.") + } + } + } + + static func showAverage() { + let userInput = readLine() + if let name = userInput?.trimmingCharacters(in: .whitespacesAndNewlines), !name.isEmpty { + if let student = students[name] { + if student.grade.isEmpty { + print("\(name) 학생의 성적이 없습니다.") + } else { + for (subject, score) in student.grade { + print("\(subject): \(score)") + } + print("평점: \(student.average())") + } + } else { + print("\(name) 학생을 찾지 못했습니다.") + } + } else { + print("입력이 잘못되었습니다. 다시 확인해주세요.") + } + } +} + +var students: [String: Student] = [:] + +// students파일 저장 및 불러오기 +func saveStudentsFile() { + if let documentURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first { + let fileURL = documentURL.appendingPathComponent("students_data.plist") + + do { + let data = try PropertyListEncoder().encode(students) + try data.write(to: fileURL) + } catch let error { + print("저장 실패: \(error)") + } + } +} + +func loadStudentsFile() { + if let documentURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first { + let fileURL = documentURL.appendingPathComponent("students_data.plist") + + do { + let data = try Data(contentsOf: fileURL) + let loadedStudents = try PropertyListDecoder().decode([String: Student].self, from: data) + students = loadedStudents + } catch let error { + print("불러오기 실패: \(error)") + } + } +} + + +func main() { + loadStudentsFile() + + menu: while true { + print(""" + 원하는 기능을 입력해 주세요 + 1: 학생추가, 2: 학생삭제, 3: 성적추가(변경), 4: 성적삭제, 5: 평점보기, X: 종료) + """) + let menuSelect = MenuFunction.menuSelect() + switch menuSelect { + case "1": + print("추가할 학생의 이름을 입력해주세요") + MenuFunction.addName() + case "2": + print("삭제할 학생의 이름을 입력해주세요") + MenuFunction.deleteStudent() + case "3": + print(""" + 성적을 추가할 학생의 이름, 과목 이름, 성적(A+, A0, F 등)을 띄어쓰기로 구분하여 차례로 작성해주세요. + 입력예) Mickey Swift A+ + 만약에 학생의 성적 중 해당 과목이 존재하면 기존 점수가 갱신됩니다. + """) + MenuFunction.addScore() + case "4": + print("성적을 삭제할 학생의 이름, 과목 이름을 띄어쓰기로 구분하여 차례로 작성해주세요.") + MenuFunction.deleteScore() + case "5": + print("평점을 알고싶은 학생의 이름을 입력해주세요") + MenuFunction.showAverage() + case "X": + print("프로그램을 종료합니다…") + saveStudentsFile() // 프로그램 종료 시 students 파일 저장 + break menu + default: + print("뭔가 입력이 잘못되었습니다. 1~5 사이의 숫자 혹은 X를 입력해주세요.") + } + } +} + +main()