새소식

인기 검색어

비트교육_단기과정

성적관리프로그램 파이썬

  • -
import pickle
import os
import copy
 
dataList = None
 
dpSize = os.path.getsize('db.p')
if dpSize != 0:
    with open('db.p''rb'as file:
        dataList = pickle.load(file)
 
 
def insertinfo():  # 학생정보 입력 메서드
    category = ['학과''이름''국어''영어''수학''총점''평균']
 
    data = input('학번, 학과, 이름, 국어 점수, 영어 점수, 수학 점수를 입력하시오 : ').split()
    std_id = data[0]  # 학번
    del data[0]
    data.append(int(data[2]) + int(data[3]) + int(data[4]))
    data.append(int(data[5]) // 3)
    dataDict = dict(zip(category, data))
    if std_id not in dataList:
        dataList.setdefault(std_id, dataDict)
 
 
def dispALLInfo():  # 학생 전체 출력
    for key, value in dataList.items():
        print(key, end=' ===>   ')
        for key, value in value.items():
            print(key, end=' = ')
            print(value, end='   ')
        print()
 
 
def dispInfo(std_id):  # 학생 한명 출력
    print(std_id, end=' ===>   ')
    for key, value in dataList.get(std_id).items():
        print(key, end=' = ')
        print(value, end='   ')
    print()
 
 
def dispInfoTp(*temp):  # sorted 반환값 전용 출력 함수
    for i in temp:
        x, y = i
        dispInfo(x)
 
 
def deleteInfo(a):  # 사번으로 삭제
    del dataList[a]
    print('삭제 후 결과\n')
    dispALLInfo()
 
 
def dbDump():  # DB 저장
    with open('db.p''wb'as file:
        pickle.dump(dataList, file)
 
 
def searchInfo():  # 학생 검색
    searchChoice = input('검색 유형을 선택하시오 => 1. 학번  2. 이름  3. 학과  : ')
    if searchChoice == '1':
        std_id = input('검색할 학생의 학번을 입력하시오 : ')
        dispInfo(std_id)
    elif searchChoice == '2':
        std_name = input('검색할 학생의 이름을 입력하시오 : ')
        for key, value in dataList.items():
            if value.get('이름'== std_name:
                dispInfo(key)
    elif searchChoice == '3':
        std_depart = input('검색할 학생의 학과를 입력하시오 : ')
        for key, value in dataList.items():
            if value.get('학과'== std_depart:
                dispInfo(key)
 
 
def modifyInfo():
    std_id = input('정보수정할 학생의 학번을 입력하시오 : ')
    dispInfo(std_id)
    ch, value = input('\n수정할 항목과 값을 입력하시오(총점, 평균 제외) : ').split()
    dataList[std_id].update({ch: value})
    if ch == '국어' or '수학' or '영어':
        dataList[std_id].update(
            총점=(int(dataList[std_id].get('국어')) + int(dataList[std_id].get('영어')) + int(dataList[std_id].get('수학'))))
        dataList[std_id].update(평균=int(dataList[std_id].get('총점')) // 3)
 
 
while True:
 
    print()
    userChoic = input('1.입력  2.출력  3.검색  4.삭제  5.수정  6.종료   ==>    ')
    if userChoic == '1':
        insertinfo()
    elif userChoic == '2':
        opt2 = input('1. 등록순  2. 총점순  3. 이름순 : ')
        if opt2 == '1':
            dispALLInfo()
        elif opt2 == '2':
            temp = copy.deepcopy(dataList)
            temp = sorted(temp.items(), key=lambda x: x[1].get('총점'), reverse=True)
            dispInfoTp(*temp)
        elif opt2 == '3':
            temp = copy.deepcopy(dataList)
            temp = sorted(temp.items(), key=lambda x: x[1].get('이름'), reverse=False)
            dispInfoTp(*temp)
 
 
    elif userChoic == '3':
        searchInfo()
    elif userChoic == '4':
        deleteInfo(input('삭제할 값을 입력하시오  ==>  '))
    elif userChoic == '5':
        modifyInfo()
    elif userChoic == '6':
        dbDump()
        exit()
    else:
        print('형식에 맞게 입력하세요')
 
cs

 

'비트교육_단기과정' 카테고리의 다른 글

단기 프로젝트 진행사항  (0) 2022.10.21
파이썬 class 성적관리 프로그램  (0) 2022.07.29
원형 큐 실습  (0) 2022.07.26
숫자 야구 Python ver  (0) 2022.07.26
로또 당첨 프로그램 Python ver  (0) 2022.07.26
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.