From 030dbb8a96454c892a5f6361ba33b017d2c24474 Mon Sep 17 00:00:00 2001 From: ohdair Date: Mon, 19 Dec 2022 10:59:30 +0900 Subject: [PATCH 1/8] =?UTF-8?q?Feat:=20=ED=94=84=EB=A1=9C=EA=B7=B8?= =?UTF-8?q?=EB=9E=A8=20=ED=95=84=EC=88=98=20=EA=B8=B0=EB=8A=A5=20=EB=AA=A8?= =?UTF-8?q?=EB=93=88=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 저장 형식 추가 - 성적별 점수 추가 - 프로그램 기능 명령어 추가 - 프로그램 문구 추가 + 질문 + 실행 + 에러 --- Git_ Exercise.xcodeproj/project.pbxproj | 12 +++ .../UserInterfaceState.xcuserstate | Bin 0 -> 13797 bytes .../xcschemes/xcschememanagement.plist | 14 +++ Git_ Exercise/Modules/Modules.swift | 91 ++++++++++++++++++ 4 files changed, 117 insertions(+) create mode 100644 Git_ Exercise.xcodeproj/project.xcworkspace/xcuserdata/bagjaeu.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 Git_ Exercise.xcodeproj/xcuserdata/bagjaeu.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 Git_ Exercise/Modules/Modules.swift diff --git a/Git_ Exercise.xcodeproj/project.pbxproj b/Git_ Exercise.xcodeproj/project.pbxproj index 424a5e0..387cfdc 100644 --- a/Git_ Exercise.xcodeproj/project.pbxproj +++ b/Git_ Exercise.xcodeproj/project.pbxproj @@ -8,6 +8,7 @@ /* Begin PBXBuildFile section */ 2768CA08294F453B00990B98 /* main.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2768CA07294F453B00990B98 /* main.swift */; }; + 90D3F153294FFCB300CEA3F8 /* Modules.swift in Sources */ = {isa = PBXBuildFile; fileRef = 90D3F152294FFCB300CEA3F8 /* Modules.swift */; }; /* End PBXBuildFile section */ /* Begin PBXCopyFilesBuildPhase section */ @@ -25,6 +26,7 @@ /* Begin PBXFileReference section */ 2768CA04294F453B00990B98 /* Git_ Exercise */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "Git_ Exercise"; sourceTree = BUILT_PRODUCTS_DIR; }; 2768CA07294F453B00990B98 /* main.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = main.swift; sourceTree = ""; }; + 90D3F152294FFCB300CEA3F8 /* Modules.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Modules.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -57,11 +59,20 @@ 2768CA06294F453B00990B98 /* Git_ Exercise */ = { isa = PBXGroup; children = ( + 90D3F151294FFCA200CEA3F8 /* Modules */, 2768CA07294F453B00990B98 /* main.swift */, ); path = "Git_ Exercise"; sourceTree = ""; }; + 90D3F151294FFCA200CEA3F8 /* Modules */ = { + isa = PBXGroup; + children = ( + 90D3F152294FFCB300CEA3F8 /* Modules.swift */, + ); + path = Modules; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -121,6 +132,7 @@ buildActionMask = 2147483647; files = ( 2768CA08294F453B00990B98 /* main.swift in Sources */, + 90D3F153294FFCB300CEA3F8 /* Modules.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/Git_ Exercise.xcodeproj/project.xcworkspace/xcuserdata/bagjaeu.xcuserdatad/UserInterfaceState.xcuserstate b/Git_ Exercise.xcodeproj/project.xcworkspace/xcuserdata/bagjaeu.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..6cbda2cb1e08a575580933f52dc2fa3a56dae3cc GIT binary patch literal 13797 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 literal 0 HcmV?d00001 diff --git a/Git_ Exercise.xcodeproj/xcuserdata/bagjaeu.xcuserdatad/xcschemes/xcschememanagement.plist b/Git_ Exercise.xcodeproj/xcuserdata/bagjaeu.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..9cab2b7 --- /dev/null +++ b/Git_ Exercise.xcodeproj/xcuserdata/bagjaeu.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,14 @@ + + + + + SchemeUserState + + Git_ Exercise.xcscheme_^#shared#^_ + + orderHint + 0 + + + + diff --git a/Git_ Exercise/Modules/Modules.swift b/Git_ Exercise/Modules/Modules.swift new file mode 100644 index 0000000..9966f62 --- /dev/null +++ b/Git_ Exercise/Modules/Modules.swift @@ -0,0 +1,91 @@ +// +// Modules.swift +// Git_ Exercise +// +// Created by 박재우 on 2022/12/19. +// + +import Foundation + +typealias Student = String + +class Management { + var students: [Student: [ReportCard]] = [:] +} + +struct ReportCard { + var subject: String + var grade: String +} + +enum Pattern: String { + case input = "^[0-9a-zA-Z+]*$" +} + +enum Score: Double { + case APlus = 4.5 + case AZero = 4.0 + case BPlus = 3.5 + case BZero = 3.0 + case CPlus = 2.5 + case CZero = 2.0 + case DPlus = 1.5 + case DZero = 1.0 + case F = 0.0 +} + +enum Grade: String { + case APlus = "A+" + case AZero = "A0" + case BPlus = "B+" + case BZero = "B0" + case CPlus = "C+" + case CZero = "C0" + case DPlus = "D+" + case DZero = "D0" + case F = "F" +} + +enum Commands: String { + case addStudent = "1" + case deleteStudent = "2" + case updateGrade = "3" + case removeGrade = "4" + case reportCard = "5" + case exit = "X" +} + +enum Errors: String { + case main = "뭔가 입력이 잘못되었습니다. 1~5 사이의 숫자 혹은 X를 입력해주세요." + case input = "입력이 잘못되었습니다. 다시 확인해주세요." + case containStudent = "은 이미 존재하는 학생입니다. 추가하지 않습니다." + case searchStudent = " 학생을 찾지 못했습니다." + case searchSubject = " 과목을 찾지 못했습니다." +} + +enum Questions: String { + case main = "원하는 기능을 입력해주세요\n1: 학생추가, 2: 학생삭제, 3: 성적추가(변경), 4: 성적삭제, 5: 평점보기, X: 종료" + case addStudent = "추가할 학생의 이름을 입력해주세요." + case deleteStudent = "삭제할 학생의 이름을 입력해주세요" + case updateGrade = "성적을 추가할 학생의 이름, 과목 이름, 성적(A+, A0, F 등)을 띄어쓰기로 구분하여 차례로 작성해주세요." + case removeGrade = "성적을 삭제할 학생의 이름, 과목 이름을 띄어쓰기로 구분하여 차례로 작성해주세요." + case reportCard = "평점을 알고 싶은 학생의 이름을 입력해주세요" +} + +class Operations { + func addStudent(_ student: Student) { + print("\(student) 학생을 추가했습니다.") + } + func deleteStudent(_ student: Student) { + print("\(student) 학생을 삭제하였습니다.") + } + func updateGrade(_ reportCard: ReportCard, of student: Student) { + print("\(student) 학생의 \(reportCard.subject) 과목이 \(reportCard.grade)로 추가(변경)되었습니다.") + } + func removeGrade(_ subject: String, of student: Student) { + print("\(student) 학생의 \(subject) 과목의 성적이 삭제되었습니다.") + } + var exit: String { + return "프로그램을 종료합니다..." + } +} From 8ea770b3c96e3a16136b5ce62b785c7ac6b1a5bb Mon Sep 17 00:00:00 2001 From: ohdair Date: Mon, 19 Dec 2022 11:14:51 +0900 Subject: [PATCH 2/8] =?UTF-8?q?Feat:=20=ED=95=99=EC=83=9D=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 학생 입력 기능 추가 - 학생 중복 방지 기능 추가 - 실행 문구 추가 --- Git_ Exercise/Utils/AddStudent.swift | 25 +++++++++ Git_ Exercise/Utils/DeleteStudent.swift | 25 +++++++++ Git_ Exercise/Utils/Exit.swift | 12 +++++ Git_ Exercise/Utils/RemoveGrade.swift | 41 +++++++++++++++ Git_ Exercise/Utils/ReportCard.swift | 50 ++++++++++++++++++ Git_ Exercise/Utils/UpdateGrade.swift | 69 +++++++++++++++++++++++++ 6 files changed, 222 insertions(+) create mode 100644 Git_ Exercise/Utils/AddStudent.swift create mode 100644 Git_ Exercise/Utils/DeleteStudent.swift create mode 100644 Git_ Exercise/Utils/Exit.swift create mode 100644 Git_ Exercise/Utils/RemoveGrade.swift create mode 100644 Git_ Exercise/Utils/ReportCard.swift create mode 100644 Git_ Exercise/Utils/UpdateGrade.swift diff --git a/Git_ Exercise/Utils/AddStudent.swift b/Git_ Exercise/Utils/AddStudent.swift new file mode 100644 index 0000000..343f0a6 --- /dev/null +++ b/Git_ Exercise/Utils/AddStudent.swift @@ -0,0 +1,25 @@ +// +// AddStudent.swift +// Git_ Exercise +// +// Created by 박재우 on 2022/12/19. +// + +import Foundation + +func addStudent() { + print(Questions.addStudent.rawValue) + guard let student = readLine() else { return } + guard let _ = student.range(of: Pattern.input.rawValue, options: .regularExpression), + student.isEmpty == false else { + print(Errors.input.rawValue) + return + } + let isContain = manager.contains { $0.key == student } + guard isContain == false else { + print("\(student)\(Errors.containStudent.rawValue)") + return + } + manager[student] = [] + Operations().addStudent(student) +} diff --git a/Git_ Exercise/Utils/DeleteStudent.swift b/Git_ Exercise/Utils/DeleteStudent.swift new file mode 100644 index 0000000..1b15f6e --- /dev/null +++ b/Git_ Exercise/Utils/DeleteStudent.swift @@ -0,0 +1,25 @@ +// +// DeleteStudent.swift +// GradeManagement +// +// Created by 박재우 on 2022/12/07. +// + +import Foundation + +func deleteStudent() { + print(Questions.deleteStudent.rawValue) + guard let student = readLine() else { return } + guard let _ = student.range(of: Pattern.input.rawValue, options: .regularExpression), + student.isEmpty == false else { + print(Errors.input.rawValue) + return + } + let isContain = manager.contains { $0.key == student } + guard isContain else { + print("\(student)\(Errors.searchStudent.rawValue)") + return + } + manager.removeValue(forKey: student) + Operations().deleteStudent(student) +} diff --git a/Git_ Exercise/Utils/Exit.swift b/Git_ Exercise/Utils/Exit.swift new file mode 100644 index 0000000..3341349 --- /dev/null +++ b/Git_ Exercise/Utils/Exit.swift @@ -0,0 +1,12 @@ +// +// Exit.swift +// GradeManagement +// +// Created by 박재우 on 2022/12/07. +// + +import Foundation + +func exit() { + print(Operations().exit) +} diff --git a/Git_ Exercise/Utils/RemoveGrade.swift b/Git_ Exercise/Utils/RemoveGrade.swift new file mode 100644 index 0000000..65ad8a3 --- /dev/null +++ b/Git_ Exercise/Utils/RemoveGrade.swift @@ -0,0 +1,41 @@ +// +// RemoveGrade.swift +// GradeManagement +// +// Created by 박재우 on 2022/12/07. +// + +import Foundation + +func removeGrade() { + print(Questions.removeGrade.rawValue) + guard let answer = readLine() else { return } + var inputs = answer.components(separatedBy: " ") + guard 2 == inputs.count else { + print(Errors.input.rawValue) + return + } + for input in inputs { + guard let _ = input.range(of: Pattern.input.rawValue, options: .regularExpression), + input.isEmpty == false else { + print(Errors.input.rawValue) + return + } + } + let student = inputs.removeFirst() + let isStudent = manager.contains { $0.key == student } + guard isStudent else { + print("\(student)\(Errors.searchStudent.rawValue)") + return + } + let subject = inputs.removeFirst() + guard let reports = manager[student] else {return} + for index in 0.. Date: Mon, 19 Dec 2022 11:19:25 +0900 Subject: [PATCH 3/8] =?UTF-8?q?Feat:=20=ED=95=99=EC=83=9D=20=EC=82=AD?= =?UTF-8?q?=EC=A0=9C=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 학생 입력 기능 추가 - 보유 학생 여부 확인 기능 추가 - 실행 문구 추가 --- Git_ Exercise/Utils/DeleteStudent.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Git_ Exercise/Utils/DeleteStudent.swift b/Git_ Exercise/Utils/DeleteStudent.swift index 1b15f6e..1a2b46f 100644 --- a/Git_ Exercise/Utils/DeleteStudent.swift +++ b/Git_ Exercise/Utils/DeleteStudent.swift @@ -2,7 +2,7 @@ // DeleteStudent.swift // GradeManagement // -// Created by 박재우 on 2022/12/07. +// Created by 박재우 on 2022/12/19. // import Foundation From d6c84fdfcf3169a165154bf188e24be05029346f Mon Sep 17 00:00:00 2001 From: ohdair Date: Mon, 19 Dec 2022 11:22:00 +0900 Subject: [PATCH 4/8] =?UTF-8?q?Feat:=20=ED=95=99=EC=83=9D=20=EC=84=B1?= =?UTF-8?q?=EC=A0=81=20=EB=B0=A9=EC=98=81=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 학생 성적 입력 기능 추가 - 성적 추가/수정 기능 추가 - 실행 문구 추가 --- Git_ Exercise/Utils/UpdateGrade.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Git_ Exercise/Utils/UpdateGrade.swift b/Git_ Exercise/Utils/UpdateGrade.swift index 4439bd4..90d10ea 100644 --- a/Git_ Exercise/Utils/UpdateGrade.swift +++ b/Git_ Exercise/Utils/UpdateGrade.swift @@ -2,7 +2,7 @@ // UpdateGrade.swift // GradeManagement // -// Created by 박재우 on 2022/12/07. +// Created by 박재우 on 2022/12/19. // import Foundation From 963489421876dde47bfa5a461475aabca44b0441 Mon Sep 17 00:00:00 2001 From: ohdair Date: Mon, 19 Dec 2022 11:24:23 +0900 Subject: [PATCH 5/8] =?UTF-8?q?Feat:=20=ED=95=99=EC=83=9D=20=EC=84=B1?= =?UTF-8?q?=EC=A0=81=20=EC=82=AD=EC=A0=9C=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 성적 삭제 기능 추가 - 보유 성적표 확인 기능 추가 - 실행 문구 추가 --- Git_ Exercise/Utils/RemoveGrade.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Git_ Exercise/Utils/RemoveGrade.swift b/Git_ Exercise/Utils/RemoveGrade.swift index 65ad8a3..40e1536 100644 --- a/Git_ Exercise/Utils/RemoveGrade.swift +++ b/Git_ Exercise/Utils/RemoveGrade.swift @@ -2,7 +2,7 @@ // RemoveGrade.swift // GradeManagement // -// Created by 박재우 on 2022/12/07. +// Created by 박재우 on 2022/12/19. // import Foundation From 7ed827742fb1e7ca4584754ae77ea33e84842004 Mon Sep 17 00:00:00 2001 From: ohdair Date: Mon, 19 Dec 2022 11:26:20 +0900 Subject: [PATCH 6/8] =?UTF-8?q?Feat:=20=ED=95=99=EC=83=9D=20=EC=84=B1?= =?UTF-8?q?=EC=A0=81=ED=91=9C=20=EB=B3=B4=EA=B8=B0=20=EA=B8=B0=EB=8A=A5=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 학생 입력 기능 추가 - 학생 보유 성적 확인 기능 추가 - 모든 성적 평점 보기 기능 추가 --- Git_ Exercise/Utils/ReportCard.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Git_ Exercise/Utils/ReportCard.swift b/Git_ Exercise/Utils/ReportCard.swift index 778fb9e..47eebea 100644 --- a/Git_ Exercise/Utils/ReportCard.swift +++ b/Git_ Exercise/Utils/ReportCard.swift @@ -2,7 +2,7 @@ // ReportCard.swift // GradeManagement // -// Created by 박재우 on 2022/12/07. +// Created by 박재우 on 2022/12/19. // import Foundation From 95e0c1126af3d4bb6b2f1d139cf72def1cde8f98 Mon Sep 17 00:00:00 2001 From: ohdair Date: Mon, 19 Dec 2022 11:28:36 +0900 Subject: [PATCH 7/8] =?UTF-8?q?Feat:=20=ED=94=84=EB=A1=9C=EA=B7=B8?= =?UTF-8?q?=EB=9E=A8=20=EC=A2=85=EB=A3=8C=20=EB=AC=B8=EA=B5=AC=20=EC=B6=9C?= =?UTF-8?q?=EB=A0=A5=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 문구 출력 기능 추가 --- Git_ Exercise/Utils/Exit.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Git_ Exercise/Utils/Exit.swift b/Git_ Exercise/Utils/Exit.swift index 3341349..38a5f0c 100644 --- a/Git_ Exercise/Utils/Exit.swift +++ b/Git_ Exercise/Utils/Exit.swift @@ -2,7 +2,7 @@ // Exit.swift // GradeManagement // -// Created by 박재우 on 2022/12/07. +// Created by 박재우 on 2022/12/19. // import Foundation From 627651f2bab3607d6ef20d3f311dd62df016df01 Mon Sep 17 00:00:00 2001 From: ohdair Date: Mon, 19 Dec 2022 11:30:00 +0900 Subject: [PATCH 8/8] =?UTF-8?q?Feat:=20=EC=84=B1=EC=A0=81=EA=B4=80?= =?UTF-8?q?=EB=A6=AC=20=ED=94=84=EB=A1=9C=EA=B7=B8=EB=9E=A8=20=EB=8F=99?= =?UTF-8?q?=EC=9E=91=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 프로그램 동작 커멘드 추가 - 프로그램 종료 기능 추가 --- Git_ Exercise.xcodeproj/project.pbxproj | 32 ++++++++++++++++++ .../UserInterfaceState.xcuserstate | Bin 13797 -> 25237 bytes Git_ Exercise/main.swift | 26 ++++++++++++-- 3 files changed, 55 insertions(+), 3 deletions(-) diff --git a/Git_ Exercise.xcodeproj/project.pbxproj b/Git_ Exercise.xcodeproj/project.pbxproj index 387cfdc..945cc85 100644 --- a/Git_ Exercise.xcodeproj/project.pbxproj +++ b/Git_ Exercise.xcodeproj/project.pbxproj @@ -9,6 +9,12 @@ /* Begin PBXBuildFile section */ 2768CA08294F453B00990B98 /* main.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2768CA07294F453B00990B98 /* main.swift */; }; 90D3F153294FFCB300CEA3F8 /* Modules.swift in Sources */ = {isa = PBXBuildFile; fileRef = 90D3F152294FFCB300CEA3F8 /* Modules.swift */; }; + 90D3F156294FFFA200CEA3F8 /* AddStudent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 90D3F155294FFFA200CEA3F8 /* AddStudent.swift */; }; + 90D3F15C294FFFC600CEA3F8 /* UpdateGrade.swift in Sources */ = {isa = PBXBuildFile; fileRef = 90D3F157294FFFC500CEA3F8 /* UpdateGrade.swift */; }; + 90D3F15D294FFFC600CEA3F8 /* DeleteStudent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 90D3F158294FFFC500CEA3F8 /* DeleteStudent.swift */; }; + 90D3F15E294FFFC600CEA3F8 /* Exit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 90D3F159294FFFC600CEA3F8 /* Exit.swift */; }; + 90D3F15F294FFFC600CEA3F8 /* RemoveGrade.swift in Sources */ = {isa = PBXBuildFile; fileRef = 90D3F15A294FFFC600CEA3F8 /* RemoveGrade.swift */; }; + 90D3F160294FFFC600CEA3F8 /* ReportCard.swift in Sources */ = {isa = PBXBuildFile; fileRef = 90D3F15B294FFFC600CEA3F8 /* ReportCard.swift */; }; /* End PBXBuildFile section */ /* Begin PBXCopyFilesBuildPhase section */ @@ -27,6 +33,12 @@ 2768CA04294F453B00990B98 /* Git_ Exercise */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "Git_ Exercise"; sourceTree = BUILT_PRODUCTS_DIR; }; 2768CA07294F453B00990B98 /* main.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = main.swift; sourceTree = ""; }; 90D3F152294FFCB300CEA3F8 /* Modules.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Modules.swift; sourceTree = ""; }; + 90D3F155294FFFA200CEA3F8 /* AddStudent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddStudent.swift; sourceTree = ""; }; + 90D3F157294FFFC500CEA3F8 /* UpdateGrade.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UpdateGrade.swift; sourceTree = ""; }; + 90D3F158294FFFC500CEA3F8 /* DeleteStudent.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DeleteStudent.swift; sourceTree = ""; }; + 90D3F159294FFFC600CEA3F8 /* Exit.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Exit.swift; sourceTree = ""; }; + 90D3F15A294FFFC600CEA3F8 /* RemoveGrade.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RemoveGrade.swift; sourceTree = ""; }; + 90D3F15B294FFFC600CEA3F8 /* ReportCard.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReportCard.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -59,6 +71,7 @@ 2768CA06294F453B00990B98 /* Git_ Exercise */ = { isa = PBXGroup; children = ( + 90D3F154294FFF8000CEA3F8 /* Utils */, 90D3F151294FFCA200CEA3F8 /* Modules */, 2768CA07294F453B00990B98 /* main.swift */, ); @@ -73,6 +86,19 @@ path = Modules; sourceTree = ""; }; + 90D3F154294FFF8000CEA3F8 /* Utils */ = { + isa = PBXGroup; + children = ( + 90D3F155294FFFA200CEA3F8 /* AddStudent.swift */, + 90D3F158294FFFC500CEA3F8 /* DeleteStudent.swift */, + 90D3F159294FFFC600CEA3F8 /* Exit.swift */, + 90D3F15A294FFFC600CEA3F8 /* RemoveGrade.swift */, + 90D3F15B294FFFC600CEA3F8 /* ReportCard.swift */, + 90D3F157294FFFC500CEA3F8 /* UpdateGrade.swift */, + ); + path = Utils; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -131,8 +157,14 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 90D3F15F294FFFC600CEA3F8 /* RemoveGrade.swift in Sources */, + 90D3F160294FFFC600CEA3F8 /* ReportCard.swift in Sources */, 2768CA08294F453B00990B98 /* main.swift in Sources */, + 90D3F15E294FFFC600CEA3F8 /* Exit.swift in Sources */, 90D3F153294FFCB300CEA3F8 /* Modules.swift in Sources */, + 90D3F15D294FFFC600CEA3F8 /* DeleteStudent.swift in Sources */, + 90D3F15C294FFFC600CEA3F8 /* UpdateGrade.swift in Sources */, + 90D3F156294FFFA200CEA3F8 /* AddStudent.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/Git_ Exercise.xcodeproj/project.xcworkspace/xcuserdata/bagjaeu.xcuserdatad/UserInterfaceState.xcuserstate b/Git_ Exercise.xcodeproj/project.xcworkspace/xcuserdata/bagjaeu.xcuserdatad/UserInterfaceState.xcuserstate index 6cbda2cb1e08a575580933f52dc2fa3a56dae3cc..a6edea9ca594ecf5d38579cba05073f81f2e7ba3 100644 GIT binary patch literal 25237 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 delta 7727 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 diff --git a/Git_ Exercise/main.swift b/Git_ Exercise/main.swift index 986559b..3742214 100644 --- a/Git_ Exercise/main.swift +++ b/Git_ Exercise/main.swift @@ -2,10 +2,30 @@ // main.swift // Git_ Exercise // -// Created by 잼킹 on 2022/12/18. +// Created by 박재우 on 2022/12/18. // import Foundation -print("Hello, World!") - +var manager = Management().students +main: while true { + print(Questions.main.rawValue) + guard let input = readLine() else { break main } + switch Commands(rawValue: input) { + case .addStudent: + addStudent() + case .deleteStudent: + deleteStudent() + case .updateGrade: + updateGrade() + case .removeGrade: + removeGrade() + case .reportCard: + reportCard() + case .exit: + exit() + break main + default: + print(Errors.main.rawValue) + } +}