[GPA Check] 출력 기능 완성
Updated:
출력 기능 완성
[GPA Check] 입력 기능 완성 에 이어 출력기능도 완성했다.
그런데 평균평점을 구하는 식을 자세히 몰라서 일반적인 평균 구하는 방식으로 계산을 했다.
얼추 비슷한 것 같은데 학점이 4점 짜리인지 3점 짜리인지에 따라 비중이 달라지는 것 같다.
그러니 평균평점은 참고만 해야겠다 !
출력은 취득학점, 평균평점만 추가해주면 되어서 간단했다.
def print_info(self, check):
widget = QPlainTextEdit(self)
widget.setReadOnly(True)
query = 'SELECT * FROM ' + check
my_cur.execute(query)
my_result = my_cur.fetchall()
widget.appendPlainText(check.replace('_', '-') + ' 성적 조회\n')
widget.appendPlainText('교과목명\t\t\t\t\t이수구분\t\t\t\t학점\t\t등급')
widget.appendPlainText('-------------------------------------------------------------------------------'
'----------------------------------------------------------------------------')
application_credit = 0 # 신청학점
acquisition_credit = 0 # 취득학점
average_grade = self.cal_average_credit(my_result)
for idx, cur in enumerate(my_result):
class_name = str(cur[1])
classification = str(cur[2])
credit = str(cur[3])
grade = str(cur[4])
application_credit += int(credit)
acquisition_credit += int(credit)
if idx == 0:
if len(class_name) <= 8:
output = class_name + '\t\t\t\t\t' + classification + '\t\t\t\t' + credit + '\t\t' + grade
else:
output = class_name + '\t\t\t\t' + classification + '\t\t\t\t' + credit + '\t\t' + grade
else:
if len(class_name) <= 8:
output = '\n' + class_name + '\t\t\t\t\t' + classification + '\t\t\t\t' + credit + '\t\t' + grade
else:
output = '\n' + class_name + '\t\t\t\t' + classification + '\t\t\t\t' + credit + '\t\t' + grade
widget.appendPlainText(output)
widget.appendPlainText('-------------------------------------------------------------------------------'
'----------------------------------------------------------------------------\n')
widget.appendPlainText('신청학점 : ' + str(application_credit) + '\t\t\t\t\t취득학점 : ' + str(acquisition_credit) +
'\t\t\t\t\t평균평점 : ' + str(average_grade)[:4])
widget.setGeometry(25, 40, 950, 435)
widget.show()
[GPA Check] 출력 함수 수정 과 코드가 조금 달라졌다.
데이터가 얼마 안된다는 생각에 PK 를 교과목명으로 했다.
그런데 UPDATE 하는 과정에서 교과목명을 제대로 인식하지 못하는 경우가 있었다.
그래서 일반적인 PK 를 id 로 만들어 주었다.
그래서 15번째 줄 부터 시작하는 for 문에서 인덱스가 한 개씩 밀렸다 !
평균평점 계산
앞서 말했지만 정말 정말 참고용으로만 봐야한다.
학점 당 수치가 다르게 적용되는 것 같다.
3-1 학기 같은 경우 전부 3 학점이고 한 과목만 2 학점이다.
이때 일반적으로 평균을 구한 값인 4.33 과 학교 포털 사이트에서 보여지는 평점과 0.01 밖에 차이가 나지 않는다.
하지만 2-1학기나 4학점 전공필수가 있는 경우 꽤 오차범위가 크다 !
그러니 참고용..
def cal_average_credit(self, my_result):
sum = 0
p_cnt = 0
for cur in my_result:
if cur[4] == 'A+':
sum += 4.5
elif cur[4] == 'A0':
sum += 4.0
elif cur[4] == 'B+':
sum += 3.5
elif cur[4] == 'B0':
sum += 3.0
elif cur[4] == 'C+':
sum += 2.5
elif cur[4] == 'C0':
sum += 2.0
elif cur[4] == 'D+':
sum += 1.5
elif cur[4] == 'D0':
sum += 1.0
elif cur[4] == 'P':
p_cnt += 1
return sum / (len(my_result) - p_cnt)
파이썬은 case 문이 없는게 조금 아쉬운 것 같다.
어쨌든 평균도 구한 뒤 출력을 하면 ?!
입, 출력 기능이 모두 완성되었다 !
이제 남은 부분은 비교과적인 부분인 세종사회봉사 이수여부 , 고전독서 인증여부, 토익 만 하면 된다 !
Leave a comment