import pickle as p
class Student:
def __init__(self,name,department,stuNum,kor,eng,math):
self.__name=name
self.__department=department
self.__stuNum=stuNum
self.__kor=kor
self.__eng=eng
self.__math=math
def getName(self):
return self.__name
def getDepart(self):
return self.__name
def getStuNum(self):
return self.__stuNum
def getTotal(self):
return self.__kor+self.__eng+self.__math
def getAvg(self):
return self.getTotal()/3
def setKor(self,score):
self.__kor=score
def setEng(self,score):
self.__eng=score
def setMath(self,score):
self.__math=score
def __str__(self):
return self.__name +"\t"+self.__department+"\t"+str(self.__stuNum)+"\t"+str(self.__kor)+"\t"+str(self.__eng)+"\t"+str(self.__math)+"\t"+str(self.getTotal())+"\t"+str(self.getAvg())
def ScoreStudent(): ## 학생정보를 성적순으로 정렬시켜서 출력시킬 함수
rr=[]
print('성적순 출력')
e=readStudent()
rr=sorted(e,key=lambda x:x.getTotal(),reverse=True)
print("이름 \t 학과\t 학번 \t 국어\t 영어\t수학\t 총점\t평균\t")
for i in range(len(rr)):
print(rr[i])
def searchInfo(): ## 학생 정보 검색 할 함수
c=int(input("1. 이름검색 2. 학과검색 3. 성적검색"))
e=readStudent()
if c==1:
name=input('검색하실 이름을 입력하시오..')
for i in range(len(e)):
if e[i].getName() == name:
print(e[i])
elif c==2:
depart=input('검색하실 학과을 입력하시오..')
for i in range(len(e)):
if e[i].getDepart() == depart:
print(e[i])
elif c==3:
c2=int(input('1.국어성적 2.영어성적 3.수학성적.'))
if c2==1:
score=int(input('국어성적 몇점이상 출력?'))
rr=sorted(e,key=lambda x:x.getKor(),reverse=True)
for i in range(len(rr)):
if rr[i].getKor() >= score:
print(rr[i])
elif c2==2:
score=int(input('영어성적 몇점이상 출력?'))
rr=sorted(e,key=lambda x:x.getEng(),reverse=True)
for i in range(len(rr)):
if rr[i].getEng() >= score:
print(rr[i])
elif c2==3:
score=int(input('수학성적 몇점이상 출력?'))
rr=sorted(e,key=lambda x:x.getMath(),reverse=True)
for i in range(len(rr)):
if rr[i].getMath() >= score:
print(rr[i])
def inputStudent():
e=readStudent()
print("추가할 학생정보 입력:")
name=input('이름입력: ')
department=input('학과 입력: ')
while True:
fflag=0
studentNum=input('학번 입력: ')
if e==None:
break
for i in range(len(e)):
if e[i].getStuNum()==studentNum:
print('존재하는 학번입니다 다시 입력 바람')
fflag=1
if fflag==1:
continue
else:
break
kor=int(input('국어 성적입력: '))
eng=int(input('영어 성적입력: '))
math=int(input('수학 성적입력: '))
x=Student(name,department,studentNum,kor,eng,math)
if e==None:
with open('db1.txt','wb')as file:
p.dump(x,file)
else:
with open('db1.txt','ab')as file:
p.dump(x,file)
import os
def readStudent(): ## 학생정보를 읽어올 함수
file_path="c:\\Users\\Jacky Park Jong Hyun\\pie3\\db1.txt"
if(os.path.isfile(file_path)):
with open('db1.txt','rb')as file:
x=[]
while True:
try:
data = p.load(file)
except EOFError:
break
x.append(data)
return x
def modifyInfo():
stuNum=input('수정할 학번을 입력하세요')
e=readStudent()
flag=0
for i in range(len(e)):
if e[i].getStuNum()==stuNum:
print(e[i])
flag=1
if flag==0:
return print('학번 존재하지않음')
elif flag==1:
num=int(input('1.국어성적변경 2. 영어성적변경 3. 수학 성적변경'))
if num==1:
score=int(input('국어 몇점으로 변경?'))
e[i].setKor(score)
changer(e)
elif num==2:
score=int(input('영어 몇점으로 변경?'))
e[i].setEng(score)
changer(e)
elif num==3:
score=int(input('수학 몇점으로 변경?'))
e[i].setMath(score)
changer(e)
else:
return print('잘못 입력')
def changer(ee):
with open('db1.txt','wb')as file:
for i in range(len(ee)):
p.dump(ee[i],file)
def deleteInfo(): ## 학생 정보 삭제 할 함수
stuNum=input('수정할 학번을 입력하세요')
c=0
e=readStudent()
for i in range(len(e)):
if e[i].getStuNum()==stuNum:
print(e[i])
c=int(input('정말로 이정보를 삭제 하시겠습니까? 1. 예 2.아니오'))
del e[i]
break
if c==1:
with open('db1.txt','wb')as file:
for i in range(len(e)):
p.dump(e[i],file)
elif c==0:
print('해당학번이 존재하지 않습니다')
elif c==2:
print('삭제를 취소하셧습니다')
while True: ## 메인으로 돌아갈 부분
num=int(input("1. 입력 2. 출력 3. 검색 4. 수정 5. 삭제 0. 종료"))
if num==1:
inputStudent()
elif num==2:
ScoreStudent()
elif num==3:
searchInfo()
elif num==4:
modifyInfo()
elif num==5:
deleteInfo()
elif num==0:
break
else:
print('잘못입력하셧습니다')
댓글