성적처리프로그램 class로 만들기
성저처리1과 기능은 같다.
class형태로 만들고 데이터를 pickle로 저장하고 불러온다.
기능
1 입력 : 이름 국어성적 영어성적 수학성적을 입력(총점과 평균은 계산해서 입력됨)
2 전체출력 : 모든 데이터 출력
3 이름 검색 : 이름을 입력해서 같은 이름인 사람의 점수 출력
4 평균 검색 : 점수를 입력해서 평균점수가 입력받은 점수보다 높은 사람 출력
5 수정 : 이름을 입력받으면 해당 이름과 같은 사람의 국어, 영어, 수학의 점수를 다시 입력받는다.
6 삭제 : 이름을 입력받아 같은 사람의 데이터를 삭제
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
|
import pickle
class Student:
def __init__(self,name,kor,eng,mat):
self.name = name
self.kor = kor
self.eng = eng
self.mat = mat
self.total = kor+eng+mat
self.avg = self.total/3
def student_print(self):
print(self.name,"\t",self.kor,"\t",self.eng,"\t",self.mat,"\t",self.total,"\t%.3f"%self.avg);
def student_name(self):
return self.name
def student_avg(self):
return self.avg
def __lt__(self, other):
return self.avg > other.avg
def student_reply(self,kor,eng,mat):
self.kor = kor
self.eng = eng
self.mat = mat
self.total = kor+eng+mat
self.avg = self.total/3
class File_IO:
def __init__(self,data):
self.student_list = []
self.data=data
def file_read(self):
try:
with open(self.data,"rb") as file:
while(True):
try:
self.student_list=pickle.load(file)
except EOFError:
break
except FileNotFoundError:
pass
def file_write(self):
with open(self.data,"wb") as file:
pickle.dump(self.student_list,file)
class Function(File_IO):
def input_info(self):
name = input("이름:")
korea = int(input("국어:"))
english = int(input("영어:"))
math = int(input("수학:"))
tmp_student = Student(name,korea,english,math)
super().file_read()
self.student_list.append(tmp_student)
super().file_write()
def print_all(self):
super().file_read()
print("이름\t국어\t영어\t수학\t총점\t평균")
for i in self.student_list:
i.student_print()
def search_name(self):
name = input("이름:")
super().file_read()
print("이름\t국어\t영어\t수학\t총점\t평균")
for i in self.student_list:
if i.student_name() == name:
i.student_print()
def search_avg(self):
avg = float(input("점수:"))
super().file_read()
print("이름\t국어\t영어\t수학\t총점\t평균")
sorted_mylist = sorted(self.student_list)
for i in sorted_mylist:
if i.student_avg() >=avg:
i.student_print()
def insert(self):
name = input("이름:")
num=-1
super().file_read()
for i in range(len(self.student_list)):
if self.student_list[i].student_name() == name:
num = i
break;
if(num!=-1):
korea = int(input("국어:"))
english = int(input("영어:"))
math = int(input("수학:"))
self.student_list[i].student_reply(korea,english,math)
super().file_write()
def delete(self):
name = input("이름:")
num=-1
super().file_read()
for i in range(len(self.student_list)):
if self.student_list[i].student_name() == name:
num = i
break;
if(num!=-1):
del self.student_list[i]
super().file_write()
def main():
score_list = Function("test.txt")
while(True):
num = int(input("기능선택(1.입력 2.전체출력 3.이름검색 4.평균검색 5.수정 6.삭제 (0.끝))"))
if num==0:
break
elif num==1:
score_list.input_info()
elif num==2:
score_list.print_all()
elif num==3:
score_list.search_name()
elif num==4:
score_list.search_avg()
elif num==5:
score_list.insert()
elif num==6:
score_list.delete()
main()
|
cs |
'python' 카테고리의 다른 글
[Python] 파이썬 GC(Garbage Collector) (1) | 2022.09.29 |
---|---|
[Python] GIL (Global Interpreter Lock) (0) | 2022.09.15 |
[python] 성적 처리하기 (0) | 2020.07.22 |
[python] 반복문으로 별모양 그리기2 (0) | 2020.07.22 |
[python] 반복문으로 별모양 출력하기 (0) | 2020.07.22 |
댓글