[python] 파이썬 성적관리 프로그램 ( 딕셔너리 사용 )

---기능---
1. 입력
2. 검색
3. 수정
4. 삭제
5. 출력(전체)
6. 종료

 

#맨처음

student = dict()
while True:
        select = int(input("1.입력 2.검색 3.수정 4.삭제 5.출력 6.종료 \n"))

student라는 딕셔너리를 생성해주고 사용자가 프로그램을 종료시킬때까지 반복시키기위해 
while True: 로 무한루프를 주었습니다. 그리고 기능 선택하기 위한 변수로 select를 생성 해주었습니다.
사용자가 누르는 숫자에 따라 기능을 사용할 수 있습니다.

 

#성적 입력

# ----- 성적 입력 -----
    if select == 1:
        id=input('학번 : ')
            
        if ( id not in student) == True:
            name = input('이름 : ')
            kor = int(input('국어 : '))
            eng = int(input('영어 : '))
            math = int(input('수학 : '))
            print('입력 완료')
            total = kor+eng+math
            avg = round(total/3,3)
            
            student[id] = [name,kor,eng,math,total,avg]            
            continue
        else:
            print('학생이 이미 존재')

사용자가 1을 입력하면 들어오는 if문입니다.

입력받은 학번을 id 변수에 저장하고 student객체에 동일한 id가 존재하지 않다면 
이름,국,영,수 점수를 입력받습니다. 

score변수에 총점을 담고 avg에는 평균값을 입력합니다.

이제 stduent[id]에 name,kor,eng,math,score,avg를 담아줍니다.
( EX : 학번을 1로 입력하고 이름/국/영/수에 test/2/2/2 점을 입력하면 student[id]에는 test/2/2/2/6/2.0 이 담기게 됩니다.)

학번이 중복일경우 학생이 존재한다고 출력됩니다.

 

#학생 검색

    if select == 2:
        search = input('학번 : ')
        
        if(search in student) == True:
            info = student[id]
            print('이름\t국어\t영어\t수학\t총점\t평균\t')
            for i in range(len(info)):
                print(info[i:i+1],end='\t')
            print()
            continue
        else:
            print('학생 존재 X ')

사용자가 2를 입력하면 들어오는 if문 입니다.

search에 학번(key)을 입력받습니다.

student객체에 사용자가 입력한 학번이 존재할경우 if문 내의 내용이 실행이 됩니다.(존재하지 않을경우 실행 X )

info라는 변수에 student[id]에 해당하는 값을 담아줍니다.

info의 크기 만큼 for문을 반복하고 결과를 출력해줍니다.
 print(info[i:i+1],end='\t') 이부분은 print(info[0:1],end='\t',info[1:2],end='\t',info.......과 같은 의미입니다.

info[0:1]에는 이름, info[1:2]에는 국어, [2:3]에는 영어 이런식으로 값이 들어가있고 for문으로 간략하게 출력해주었습니다.

 

#수정

 if select == 3:
        update = input('수정할 학생의 학번을 입력 : ')
            
        if(update in student) == True:
            name = input('이름 입력 : ')
            kor =  int(input('국어 성적: '))
            eng =  int(input('영어 성적: '))
            math = int(input('수학 성적: '))
            print('성적 입력 완료.')

            score = kor+eng+math
            avg = round(score/3, 3)
            
            student[update] = [name,kor,eng,math,score,avg]
            continue
        else:
            print('학생이 존재하지 않음')
            continue

update 변수에 학번을 입력받습니다.

입력한 학번이 student에 존재하면 if문 내의 내용이 실행이 됩니다.

name,kor,eng,math 값을 입력받고 새로 값을 넣어줍니다 ( 부분수정은 아직 미구현 )

 

#삭제

if select == 4:
        delete = input('삭제할 학번 : ')
        
        if(delete in student) == True:
            student.pop(delete)
            print('삭제 완료')
            continue
        else:
            print('학생 정보 X')
            continue

delete변수에 학번을 입력받습니다.

pop() 함수를 사용해 student의 입력받은 학번을 제거 합니다.

 

#전체출력

 if select == 5:
        for id in student:
            print('학번: ', id,'이름: ', name)
            print('[이름]\t\t[국어]\t[영어]\t[수학]\t[총점]\t[평균]')
            
            info = student[id]
            for i in range(len(info)):
                print(info[i:i+1],end='\t')
            
            print()
            continue

student에 존재하는 id(?) 만큼 반복하고

출력하는 부분은 #검색 부분과 동일합니다.

 

#종료

    if select == 6:
        break

 

 

전체코드

## import pickle
student = dict()

while True:
    select = int(input('1. 입력 2.검색 3.수정 4.삭제 5.출력 6.종료\n'))
    
    if select == 1:
        id=input('학번 : ')
            
        if ( id not in student) == True:
            name = input('이름 : ')
            kor = int(input('국어 : '))
            eng = int(input('영어 : '))
            math = int(input('수학 : '))
            print('입력 완료')
            total = kor+eng+math
            avg = round(total/3,3)
            
            student[id] = [name,kor,eng,math,total,avg]
                       
            continue
        else:
            print('학생이 이미 존재')
            
    if select == 2:
        search = input('학번 : ')
        
        if(search in student) == True:
            info = student[id]
            print('이름\t국어\t영어\t수학\t총점\t평균\t')
            for i in range(len(info)):
                print(info[i:i+1],end='\t')
            print()
            continue
        else:
            print('학생 존재 X ')
    
    if select == 3:
        update = input('수정할 학생의 학번을 입력 : ')
            
        if(update in student) == True:
            name = input('이름 입력 : ')
            kor =  int(input('국어 성적: '))
            eng =  int(input('영어 성적: '))
            math = int(input('수학 성적: '))
            print('성적 입력 완료.')

            score = kor+eng+math
            avg = round(score/3, 3)
            
            student[update] = [name,kor,eng,math,score,avg]
            continue
        else:
            print('학생이 존재하지 않음')
            continue
    

    
    if select == 4:
        delete = input('삭제할 학번 : ')
        
        if(delete in student) == True:
            student.pop(delete)
            print('삭제 완료')
            continue
        else:
            print('학생 정보 X')
            continue
    
    
    if select == 5:
        for id in student:
            print('학번: ', id,'이름: ', name)
            print('[이름]\t\t[국어]\t[영어]\t[수학]\t[총점]\t[평균]')
            
            info = student[id]
            for i in range(len(info)):
                print(info[i:i+1],end='\t')
            
            print()
            continue
    if select == 6:
        break

 

 

#아직 미완성부분

1. 부분수정 ( 딕셔너리에 익숙하지 않아서 구현중에 오류를 아직 해결을 못해서 미완성된것 먼저 올림 )
2. 디자인? 이 너무 안이쁨
3. 학생별로 과목 추가 or 변경 가능하도록하고싶음

 

댓글

Designed by JB FACTORY