From bac2dd15c89310a0c1022806c10132f02aad0da4 Mon Sep 17 00:00:00 2001 From: rarlala Date: Tue, 5 Sep 2023 10:34:42 +0900 Subject: [PATCH] Add pre-assignment --- .../project.pbxproj | 289 ++++++++++++++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../UserInterfaceState.xcuserstate | Bin 0 -> 22995 bytes .../xcdebugger/Breakpoints_v2.xcbkptlist | 6 + .../xcschemes/xcschememanagement.plist | 14 + MyCreditManager_2_rarlala2015/main.swift | 163 ++++++++++ 7 files changed, 487 insertions(+) create mode 100644 MyCreditManager_2_rarlala2015.xcodeproj/project.pbxproj create mode 100644 MyCreditManager_2_rarlala2015.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 MyCreditManager_2_rarlala2015.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 MyCreditManager_2_rarlala2015.xcodeproj/project.xcworkspace/xcuserdata/rarla.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 MyCreditManager_2_rarlala2015.xcodeproj/xcuserdata/rarla.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist create mode 100644 MyCreditManager_2_rarlala2015.xcodeproj/xcuserdata/rarla.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 MyCreditManager_2_rarlala2015/main.swift diff --git a/MyCreditManager_2_rarlala2015.xcodeproj/project.pbxproj b/MyCreditManager_2_rarlala2015.xcodeproj/project.pbxproj new file mode 100644 index 0000000..ed25939 --- /dev/null +++ b/MyCreditManager_2_rarlala2015.xcodeproj/project.pbxproj @@ -0,0 +1,289 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 56; + objects = { + +/* Begin PBXBuildFile section */ + D084CBB32A8B51C50030F1B7 /* main.swift in Sources */ = {isa = PBXBuildFile; fileRef = D084CBB22A8B51C50030F1B7 /* main.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXCopyFilesBuildPhase section */ + D084CBAD2A8B51C50030F1B7 /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = /usr/share/man/man1/; + dstSubfolderSpec = 0; + files = ( + ); + runOnlyForDeploymentPostprocessing = 1; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + D084CBAF2A8B51C50030F1B7 /* MyCreditManager_2_rarlala2015 */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = MyCreditManager_2_rarlala2015; sourceTree = BUILT_PRODUCTS_DIR; }; + D084CBB22A8B51C50030F1B7 /* main.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = main.swift; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + D084CBAC2A8B51C50030F1B7 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + D084CBA62A8B51C50030F1B7 = { + isa = PBXGroup; + children = ( + D084CBB12A8B51C50030F1B7 /* MyCreditManager_2_rarlala2015 */, + D084CBB02A8B51C50030F1B7 /* Products */, + ); + sourceTree = ""; + }; + D084CBB02A8B51C50030F1B7 /* Products */ = { + isa = PBXGroup; + children = ( + D084CBAF2A8B51C50030F1B7 /* MyCreditManager_2_rarlala2015 */, + ); + name = Products; + sourceTree = ""; + }; + D084CBB12A8B51C50030F1B7 /* MyCreditManager_2_rarlala2015 */ = { + isa = PBXGroup; + children = ( + D084CBB22A8B51C50030F1B7 /* main.swift */, + ); + path = MyCreditManager_2_rarlala2015; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + D084CBAE2A8B51C50030F1B7 /* MyCreditManager_2_rarlala2015 */ = { + isa = PBXNativeTarget; + buildConfigurationList = D084CBB62A8B51C50030F1B7 /* Build configuration list for PBXNativeTarget "MyCreditManager_2_rarlala2015" */; + buildPhases = ( + D084CBAB2A8B51C50030F1B7 /* Sources */, + D084CBAC2A8B51C50030F1B7 /* Frameworks */, + D084CBAD2A8B51C50030F1B7 /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = MyCreditManager_2_rarlala2015; + productName = MyCreditManager_2_rarlala2015; + productReference = D084CBAF2A8B51C50030F1B7 /* MyCreditManager_2_rarlala2015 */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + D084CBA72A8B51C50030F1B7 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = 1; + LastSwiftUpdateCheck = 1430; + LastUpgradeCheck = 1430; + TargetAttributes = { + D084CBAE2A8B51C50030F1B7 = { + CreatedOnToolsVersion = 14.3.1; + }; + }; + }; + buildConfigurationList = D084CBAA2A8B51C50030F1B7 /* Build configuration list for PBXProject "MyCreditManager_2_rarlala2015" */; + compatibilityVersion = "Xcode 14.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = D084CBA62A8B51C50030F1B7; + productRefGroup = D084CBB02A8B51C50030F1B7 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + D084CBAE2A8B51C50030F1B7 /* MyCreditManager_2_rarlala2015 */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXSourcesBuildPhase section */ + D084CBAB2A8B51C50030F1B7 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + D084CBB32A8B51C50030F1B7 /* main.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + D084CBB42A8B51C50030F1B7 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 13.3; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + D084CBB52A8B51C50030F1B7 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 13.3; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = macosx; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + }; + name = Release; + }; + D084CBB72A8B51C50030F1B7 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = JPCDXBVSAH; + ENABLE_HARDENED_RUNTIME = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + }; + name = Debug; + }; + D084CBB82A8B51C50030F1B7 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = JPCDXBVSAH; + ENABLE_HARDENED_RUNTIME = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + D084CBAA2A8B51C50030F1B7 /* Build configuration list for PBXProject "MyCreditManager_2_rarlala2015" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + D084CBB42A8B51C50030F1B7 /* Debug */, + D084CBB52A8B51C50030F1B7 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + D084CBB62A8B51C50030F1B7 /* Build configuration list for PBXNativeTarget "MyCreditManager_2_rarlala2015" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + D084CBB72A8B51C50030F1B7 /* Debug */, + D084CBB82A8B51C50030F1B7 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = D084CBA72A8B51C50030F1B7 /* Project object */; +} diff --git a/MyCreditManager_2_rarlala2015.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/MyCreditManager_2_rarlala2015.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/MyCreditManager_2_rarlala2015.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/MyCreditManager_2_rarlala2015.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/MyCreditManager_2_rarlala2015.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/MyCreditManager_2_rarlala2015.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/MyCreditManager_2_rarlala2015.xcodeproj/project.xcworkspace/xcuserdata/rarla.xcuserdatad/UserInterfaceState.xcuserstate b/MyCreditManager_2_rarlala2015.xcodeproj/project.xcworkspace/xcuserdata/rarla.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..fb8bc92c47485c986a6f84c3403a630b75ff11a5 GIT binary patch literal 22995 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 + + diff --git a/MyCreditManager_2_rarlala2015.xcodeproj/xcuserdata/rarla.xcuserdatad/xcschemes/xcschememanagement.plist b/MyCreditManager_2_rarlala2015.xcodeproj/xcuserdata/rarla.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..1785a23 --- /dev/null +++ b/MyCreditManager_2_rarlala2015.xcodeproj/xcuserdata/rarla.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,14 @@ + + + + + SchemeUserState + + MyCreditManager_2_rarlala2015.xcscheme_^#shared#^_ + + orderHint + 0 + + + + diff --git a/MyCreditManager_2_rarlala2015/main.swift b/MyCreditManager_2_rarlala2015/main.swift new file mode 100644 index 0000000..7a8191a --- /dev/null +++ b/MyCreditManager_2_rarlala2015/main.swift @@ -0,0 +1,163 @@ +// +// main.swift +// MyCreditManager_2_rarlala2015 +// +// Created by Rarla on 2023/08/15. +// + +import Foundation + +var userOption: String? +let store = UserDefaults.standard +let localStudentData = store.dictionary(forKey: "studentData") as? [String: [String: String]] ?? [:] +var studentData: [String : [String: String]] = localStudentData + +var gradeType = ["A+" : 4.5, "A0": 4, "B+": 3.5, "B0": 3, "C+": 2.5, "C0": 2, "D+": 1.5, "D0": 1, "F": 0] + +func selectOption() { + print("원하는 기능을 입력해주세요 \n1: 학생추가, 2: 학생삭제, 3: 성적추가(변경), 4: 성적삭제, 5: 평점보기, X: 종료") + userOption = readLine() + + guard let option = userOption else { + return inputError("뭔가 입력이 잘못되었습니다. 1~5 사이의 숫자 혹은 X를 입력해주세요.") + } + + switch option { + case "X": + exit() + case "1": + addStudent() + case "2": + deleteStudent() + case "3": + addAndUpdateGrade() + case "4": + deleteGrade() + case "5": + viewRatings() + default: + inputError("뭔가 입력이 잘못되었습니다. 1~5 사이의 숫자 혹은 X를 입력해주세요.") + break + } + + if option != "X" && 1...5 ~= Int(option)! { + selectOption() + } +} + +func addStudent() { + print("추가할 학생의 이름을 입력해주세요") + let studentName = readLine() + + guard let name = (studentName?.trimmingCharacters(in: .whitespaces) != "" ? studentName : nil) else { + return inputError() + } + + if studentData[name] != nil { + return inputError("\(name)은 이미 존재하는 학생입니다. 추가하지 않습니다.") + } + + studentData[name] = [:] + store.set(studentData, forKey: "studentData") + print("\(name) 학생을 추가했습니다.") +} + +func deleteStudent() { + print("삭제할 학생의 이름을 입력해주세요") + let studentName = readLine() + + guard let name = (studentName?.trimmingCharacters(in: .whitespaces) != "" ? studentName : nil) else { + return inputError() + } + + if studentData[name] == nil { + return inputError("\(name) 학생을 찾지 못했습니다.") + } + + studentData.removeValue(forKey: name) + store.set(studentData, forKey: "studentData") + print("\(name) 학생을 삭제하였습니다.") +} + +func addAndUpdateGrade() { + print("성적을 추가할 학생의 이름, 과목 이름, 성적(A+, A0, F 등)을 띄어쓰기로 구분하여 차례로 작성해주세요. \n입력예) Mickey Swift A+ \n만약에 학생의 성적 중 해당 과목이 존재하면 기존 점수가 갱신됩니다.") + let inputData = readLine() + guard let splitData = inputData?.split(separator: " ") else { + return inputError() + } + + if splitData.count != 3 { return inputError() } + if studentData[String(splitData[0])] == nil || gradeType[String(splitData[2])] == nil { + return inputError() + } + + let studentName = String(splitData[0]) + let subject = String(splitData[1]) + let grade = String(splitData[2]) + + var student = studentData[studentName]! + student.updateValue(grade, forKey: subject) + studentData.updateValue(student, forKey: studentName) + store.set(studentData, forKey: "studentData") + + print("\(studentName) 학생의 \(subject) 과목이 \(grade)로 추가(변경)되었습니다.") +} + +func deleteGrade() { + print("성적을 삭제할 학생의 이름, 과목 이름을 띄어쓰기로 구분하여 차례로 작성해주세요 \n입력예) Mickey Swift") + let inputData = readLine() + guard let splitData = inputData?.split(separator: " ") else { return inputError() } + if splitData.count != 2 { return inputError() } + + if studentData[String(splitData[0])] == nil { + return inputError("\(String(splitData[0])) 학생을 찾지 못했습니다.") + } + + let studentName = String(splitData[0]) + let subject = String(splitData[1]) + + var student = studentData[studentName]! + student.removeValue(forKey: subject) + studentData.updateValue(student, forKey: studentName) + store.set(studentData, forKey: "studentData") + + print("\(studentName) 학생의 \(subject) 과목의 성적이 삭제되었습니다.") +} + +func viewRatings() { + print("평점을 알고싶은 학생의 이름을 입력해주세요") + let studentName = readLine() + + guard let name = (studentName?.trimmingCharacters(in: .whitespaces) != "" ? studentName : nil) else { + return inputError() + } + + guard let student = studentData[name] else { + return inputError("\(name) 학생을 찾지 못했습니다.") + } + + if student.count == 0 { + return inputError("\(name) 학생의 출력할 성적 데이터가 없습니다.") + } + + var score = 0.0 + for data in student { + print("\(data.0): \(data.1)") + score += Double(gradeType[data.1]!) + } + + let grade = String(format: "%.2f", score / Double(student.count)) + print("평점 : \(grade)") +} + +func exit() { + print("프로그램을 종료합니다...") +} + +func inputError(_ message: String = "입력이 잘못되었습니다. 다시 확인해주세요.") { + print(message) + selectOption() +} + +// start +selectOption()