비트교육_단기과정
성적관리프로그램 파이썬
ELpsy
2022. 7. 29. 17:51
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 |