ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Python 실습] 성적 관리 프로그램(파일 사용)
    Python/Python 실습 2022. 7. 29. 18:06

    성적 관리 프로그램을 파일을 사용해 한번 실행을 종료하더라도, 다시 실행했을 때,

    전에 실행한 내용들이 남아 있을 수 있도록 코드를 설계했다.

     

    import pickle as p
    import os
    
    file = 'C:\\Users\\2019A00298\\Desktop\\python\\students.p'
    student = {}
    
    if os.path.isfile(file):
        if os.path.getsize(file) > 0:
            with open('students.p','rb') as file:
                student = p.load(file)
    
    subkey = ['이름', '국어', '영어', '수학', '총점', '평균']
    
    def insert(student):
        std_num = int(input('학번을 입력하세요. : '))
        name = input('이름을 입력하세요. : ')
        kor = int(input('국어 점수를 입력하세요. : '))
        eng = int(input('영어 점수를 입력하세요. : '))
        math = int(input('수학 점수를 입력하세요. : '))
        
        total = kor+eng+math
        avg = total/3
    
        key = std_num
        student[key] = [name, kor, eng, math, total, avg]
        # man = student[key]
        return student
    
    def search(student):
        std = int(input('찾고싶은 학생의 학번을 입력하세요. : '))
        for i in student.keys():
            print(str(i), list(zip(subkey,student[i])))
        return student
    
    def update(student):
        upd = int(input('수정하고 싶은 학생의 학번을 입력하세요. : '))
        for key, value in student.items():
            if upd == key:
                name = input('이름을 입력하세요. : ')
                kor, eng, math = map(int, input('국어, 영어, 수학 점수를 입력하세요. : ').split())
                total = kor+eng+math
                avg = total/3
                
                student[upd] = [name, kor, eng, math, total, avg]
        return student
                
    def delete(student):
        dele = int(input('삭제하고 싶은 학생의 학번을 입력하세요. : '))
        for key, value in student.copy().items():
            if dele == key:
                st = student.pop(dele)
        return student
    
    def disp(student):
        
        for i in student.keys():
            print(str(i), list(zip(subkey,student[i])))
        return student
    
    while True:
        user_input = int(input('1.입력, 2.검색, 3.수정, 4.삭제, 5.출력, 6.종료'))
    
        if user_input == 1:
            student = insert(student)
            
        elif user_input == 2:
            student = search(student)
        
        elif user_input == 3:
            student = update(student)
        
        elif user_input == 4:
            student = delete(student)
        
        elif user_input == 5:
            student = disp(student)
        
        elif user_input == 6:
            print('프로그램을 종료합니다.')
            with open("students.p", 'wb') as file:
                p.dump(student, file)
            break
        
        else:
            print('잘못된 입력입니다.')
            break
Designed by Tistory.