-
[Python] 파이썬 성적관리 프로그램(파일 사용)Python 2022. 9. 12. 22:08
파일을 이용한 성적관리 프로그램을 파이썬으로 구현해보았다.
파일을 읽어오는 클래스
class Read: def readFile(self): st = [] with open('DB2.txt', 'r') as f: line = f.readlines() for li in line: st.append(li.split()) return st
결과를 출력해주는 클래스
from read import * class Disp: def __init__(self): self.read = Read() def disp2(self, st, j): print("학과: ", st[j][0], "\t", end='') print("학번: ", st[j][1], "\t", end='') print("이름: ", st[j][2], "\t", end='') print("국어점수: ", st[j][3], "\t", end='') print("영어점수: ", st[j][4], "\t", end='') print("수학점수: ", st[j][5], "\t", end='') print("총점: ", st[j][6], "\t", end='') print("평균: ", st[j][7]) print() def disp(self): ##########출력########## st = self.read.readFile() dic = {} for i in range(len(st)): dic[st[i][1]] = float(st[i][-1]) sorted_dict = sorted(dic.items(), key = lambda item: item[1], reverse = True) for k,v in sorted_dict: k = int(k) j = 0 for j in range(len(sorted_dict)): if k == int(st[j][1]): self.disp2(st, j)
검색 클래스(이름, 학과, 과목별 점수)
from disp import * class Search: def __init__(self): self.read = Read() self.disp = Disp() def searchName(self): st = self.read.readFile() searchName = input('검색하실 이름을 입력해주세요. ') for i in range(len(st)): if st[i][2] == searchName: self.disp.disp2(st, i) def searchDe(self): st = self.read.readFile() dep = input('검색하실 학과를 입력해주세요. ') for i in range(len(st)): if st[i][0] == dep: self.disp.disp2(st, i) def searchScore(self): st = self.read.readFile() sub = int(input('1.국어, 2.영어, 3.수학 ')) score = int(input('검색하실 점수를 입력해주세요. ')) for i in range(len(st)): if int(st[i][sub+2]) >= score: self.disp.disp2(st, i)
입력 및 수정, 삭제 클래스
from search import * class Grade: def __init__(self): self.read = Read() self.disp = Disp() self.search = Search() def input(self): #########입력############ student = [] student.append((input('학과를 입력해주세요 ')+" ")) student.append((input('학번을 입력해주세요 ')+" ")) student.append((input('이름을 입력해주세요 ')+" ")) student.append((input('국어점수를 입력해주세요 ')+" ")) student.append((input('영어점수를 입력해주세요 ')+" ")) student.append((input('수학점수를 입력해주세요 ')+" ")) total = int(student[3])+int(student[4])+int(student[5]) student.append((str(total)+" ")) student.append((str(round((total/3), 2))+"\n")) with open('DB2.txt', 'a+') as f: f.writelines(student) with open('DB2.txt', 'r') as f: line = f.readlines() for li in line: print(li, end = '') def repeat(self, student, line): for i in range(0, 6): student.append(line[i] + " ") total = int(line[3])+int(line[4])+int(line[5]) student.append((str(total)+" ")) student.append((str(round((total/3), 2))+"\n")) return student def update(self): st = self.read.readFile() id = int(input('수정하실 학생의 학번을 입력해주세요. ')) with open('DB2.txt', 'w') as f: for line in st: student = [] if int(line[1]) == id: sub = int(input('수정하실 과목의 번호를 입력해주세요. 1.국어, 2.영어, 3.수학 ')) score = int(input('수정 점수를 입력해주세요. ')) line[sub+2] = str(score) f.writelines(self.repeat(student, line)) def delete(self): st = self.read.readFile() id = int(input('삭제하실 학생의 학번을 입력해주세요. ')) with open('DB2.txt', 'w') as f: for line in st: student = [] if int(line[1]) != id: f.writelines(self.repeat(student, line)) def main(self): while 1: x = int(input('1.입력, 2.출력, 3.검색, 4.수정, 5.삭제, 6.종료 ')) if x == 1: self.input() elif x == 2: self.disp.disp() elif x == 3: y = int(input('1.학과 검색, 2.이름 검색, 3.성적 검색 ')) if y == 1: self.search.searchDe() elif y == 2: self.search.searchName() elif y == 3: self.search.searchScore() elif x == 4: self.update() elif x == 5: self.delete() elif x == 6: break grade = Grade() grade.main()
입력 출력 검색 수정 삭제 728x90'Python' 카테고리의 다른 글
[Python] Selenium 크롤링 (0) 2023.06.28 [Python] 파이썬으로 로또 프로그램 만들기 (0) 2022.09.12