# 성적 처리 프로그램 v4
# 성적데이터 추가 / 조회 / 수정 / 삭제 기능 제공
# 성적 데이터 저장용 변수
sjs = []
# 메뉴 정의 함수
def display_menu():
# 화면출력용 메뉴 정의
main_menu = '''
성적처리 프로그램 v4
---------------------------
1. 성적 데이터 추가
2. 성적 데이터 조회
3. 성적 데이터 상세조회
4. 성적 데이터 수정
5. 성적 데이터 삭제
0. 프로그램 종료
----------------------------
'''
print(main_menu, end=' ')
# 메뉴 입력
menu = input(' => 작업을 선택하세요 : ')
return menu
# 성적 입력 함수
# 이름, 국어, 영어, 수학 데이터 입력 총점, 평균, 학점을 계산하여 dict형으로 변환후 리스트에 저장
def add_sungjuk():
# 성적 데이터 입력받음
name = input('이름은?')
kor = int(input('국어는?'))
eng = int(input('영어는?'))
mat = int(input('수학은?'))
# 입력받은 데이터로 초기화
sj = {'name':name, 'kor':kor, 'eng':eng, 'mat':mat }
# 총점, 평균, 학점을 계산하기 위해 compute_sungjuk 호출
compute_sungjuk(sj)
# 처리된 성적 데이터를 리스트에 저장
sjs.append(sj)
# 입력 결과 확인 그러나 메모리 저장용이라 0 누르면 날라감 ->나중에 데이터베이스 저장
print(len(sjs), sjs)
def compute_sungjuk(sj):
tot = sj['kor'] + sj['eng'] + sj['mat']
avg = tot / 3
grd = '가'
if avg >= 90: grd = '수'
elif avg >= 80: grd = '우'
elif avg >= 70: grd = '미'
elif avg >= 60: grd = '양'
sj['tot'] = tot
sj['avg'] = avg
sj['grd'] = grd
# 성적데이터 목록으로 출력
# 전체 성적 데이터에서 '이름,국어,영어,수학만 출력'
def list_sungjuk() :
hdr = '\n\t이름 \t국어 \t영어 \t수학\n'
hdr += '\t------------------------------\n'
print(hdr)
result = ''
for sj in sjs:
result += f"\t{sj['name']}\t\t{sj['kor']}\t\t{sj['eng']}\t\t{sj['mat']}\n"
print(result)
# 성적데이터 상세 출력
# 이름을 입력받아 해당 학생의 성적데이터 출력
def view_sungjuk() :
name = input(f'조회할 학생의 이름을 입력하시오')
result = '찾는 학생이 없습니다.'
# 조회할 대상이 sjs에 존재하는지 확인
for sj in sjs:
if name == sj['name']:
result = f"{sj['name']} {sj['kor']} {sj['eng']} {sj['mat']} \n" \
f"{sj['tot']} {sj['avg']} {sj['grd']} "
break #데이터 삭제 후에 검색중지
print(result)
# 성적 데이터 수정
# 수정할 학생이 존재하면 국어,영어,수학 다시 입력하고
# 총점, 평균, 학점을 다시 계산하고 dict형으로 변환하고 리스트에 저장, 데이터 수정완료 출력
def mdf_sungjuk():
name = input('수정할 학생의 이름은?')
result = '데이터가 없습니다.'
for sj in sjs:
if name == sj['name']:
name = input(f"수정할 이름은? [기존 : {sj['name']}]")
kor = int(input(f"수정할 국어점수는? [기존 : {sj['kor']}]"))
eng = int(input(f"수정할 영어점수는? [기존 : {sj['eng']}]"))
mat = int(input(f"수정할 수학점수는? [기존 : {sj['mat']}]"))
# 입력받은 데이터로 초기화
# sj['name'] = name
# sj['kor'] = kor
# sj['eng'] = eng
# sj['mat'] = mat 이 방법은 복잡하고 메모리 큼
sju = {'name': name, 'kor': kor, 'eng': eng, 'mat': mat}
# 총점, 평균, 학점을 재 계산하기 위해 compute_sungjuk 호출
compute_sungjuk(sju)
# 기존 삭제 후 업데이트
idx = sjs.index(sj)
sjs.remove(sj)
sjs.insert(idx, sju)
# 입력 결과 확인 그러나 메모리 저장용이라 0 누르면 날라감 ->나중에 데이터베이스 저장
print(len(sjs), sjs)
result = '데이터 수정완료'
break
print(result)
# 이름을 입력받아 그 이름의 학생 성적 데이터 제거
def rmv_sungjuk():
name = input('삭제할 학생의 이름은?')
result = '삭제할 데이터가 없습니다' # 삭제여부 저장용 변수
for sj in sjs:
if name == sj['name']:
sjs.remove(sj) # 리스트의 요소인 dict를 제거 # del sj['name'] 은 이름만 지우기
result = '성공적으로 제거됨'
break
print(result)
# 프로그램 main
while True:
# 메뉴를 화면에 표시하고 실행할 메뉴를 선택받아 menu 변수에 저장
menu = display_menu()
# 입력받은 메뉴 구분
if menu == '1' : add_sungjuk()
elif menu == '2' : list_sungjuk()
elif menu == '3' : view_sungjuk()
elif menu == '4' : mdf_sungjuk()
elif menu == '5' : rmv_sungjuk()
elif menu == '0' : break
else : print(' => 잘못 입력하셨습니다.')
# 사원 관리 프로그램 v1
# 사원 데이터 추가/조회/수정/삭제 기능 제공
# 사원 데이터 저장용 변수
emps = []
# 메뉴 정의 함수
def display_empmenu():
# 화면출력용 메뉴 정의
main_menu = '''
사원관리 프로그램 v1
---------------------------
1. 사원 데이터 추가
2. 사원 데이터 조회
3. 사원 데이터 상세조회
4. 사원 데이터 수정
5. 사원 데이터 삭제
0. 프로그램 종료
----------------------------
'''
print(main_menu, end=' ')
# 메뉴 입력
menu = input(' => 작업을 선택하세요 : ')
return menu
# 사원 입력 함수
def add_emp():
# 사원 데이터 입력받음
empno = input('사원번호를 입력하시오')
fname = input('이름을 입력하시오')
lname = input('성을 입력하시오')
email = input('이메일을 입력하시오')
phone = input('전화번호를 입력하시오')
hdate = input('입사일을 입력하시오')
jobid = input('직책을 입력하시오')
sal = input('급여를 입력하시오')
comm = input('수당을 입력하시오')
mgrid = input('매니저 이름을 입력하시오')
deptid = input('부서를 입력하시오')
# 입력받은 데이터로 초기화
emp = {'empno': empno, 'fname': fname, 'lname': lname,
'email': email, 'phone': phone, 'hdate': hdate,
'jobid': jobid, 'sal': sal, 'comm': comm,
'mgrid': mgrid, 'deptid': deptid}
# 처리된 사원 데이터를 리스트에 저장
emps.append(emp)
# 입력 결과 확인 그러나 메모리 저장용이라 0 누르면 날라감 ->나중에 데이터베이스 저장
print(len(emps), emps)
# 사원정보 조회
# 사번, 이름, 성, 이메일, 직책, 부서번호
def list_emp():
result = ''
for emp in emps:
result += f"\t사원번호: {emp['empno']}\t이름: {emp['fname']}\t성: {emp['lname']}\t이메일: {emp['email']}\t직책: {emp['jobid']}\t부서: {emp['deptid']}\n"
print(result)
# 사원정보 상세조회
# 사번을 입력받음
def view_emp():
empno = input(f'조회할 사원의 사원번호를 입력하시오')
result = '찾는 사원이 없습니다'
for emp in emps:
if empno == emp['empno']:
result = f"{emp['empno']}{emp['fname']}{emp['lname']}{emp['email']} \n" \
f"{emp['phone']}{emp['hdate']}{emp['jobid']}{emp['sal']} \n" \
f"{emp['comm']}{emp['mgrid']}{emp['deptid']}"
break
print(result)
# 사원정보 수정
# 사번을 입력받음
def mdf_emp():
empno = input('수정할 사원의 사원번호는?')
result = '데이터 없음'
for emp in emps :
if empno == emp['empno']:
empno = input(f"수정할 사원번호는? [기존 : {emp['empno']}]")
fname = input(f"수정할 이름은? [기존 : {emp['fname']}]")
lname = input(f"수정할 성은? [기존 : {emp['lname']}]")
email = input(f"수정할 이메일은? [기존 : {emp['email']}]")
phone = input(f"수정할 전화번호는? [기존 : {emp['phone']}]")
hdate = input(f"수정할 입사일은? [기존 : {emp['hdate']}]")
jobid = input(f"수정할 직책은? [기존 : {emp['jobid']}]")
sal = input(f"수정할 급여는? [기존 : {emp['sal']}]")
comm = input(f"수정할 수당은? [기존 : {emp['comm']}]")
mgrid = input(f"수정할 상사번호는? [기존 : {emp['mgrid']}]")
deptid = input(f"수정할 부서번호는? [기존 : {emp['deptid']}]")
empk = {'empno':empno,'fname' : fname, 'lname' : lname,'email': email,
'phone': phone, 'hdate':hdate, 'jobid': jobid,'sal': sal,
'comm': comm, 'mgird': mgrid, 'deptid': deptid}
idx = emps.index(emp)
emps.remove(emp)
emps.insert(idx, empk)
print(len(emps), emps)
result = '데이터 수정완료'
break
print(result)
# 사원정보 삭제
# 사번을 입력받음
def rmv_emp():
empno = input('삭제할 사원의 번호는?')
result = '삭제할 데이터가 없습니다.'
for emp in emps:
if empno == emp['empno']:
emps.remove(emp)
result ='성공적으로 제거됨'
break
print(result)
# 프로그램 main
while True:
# 메뉴를 화면에 표시하고 실행할 메뉴를 선택받아 menu 변수에 저장
menu = display_empmenu()
# 입력받은 메뉴 구분
if menu == '1' : add_emp()
elif menu == '2' : list_emp()
elif menu == '3' : view_emp()
elif menu == '4' : mdf_emp()
elif menu == '5' : rmv_emp()
elif menu == '0' : break
else : print(' => 잘못 입력하셨습니다.')
'Python' 카테고리의 다른 글
PyCharm - 모듈 (0) | 2022.05.17 |
---|---|
PyCharm - comprehension (0) | 2022.05.17 |
PyCharm - Dict (0) | 2022.05.12 |
PyCharm - Tuple, Set (0) | 2022.05.12 |
PyCharm - list (0) | 2022.05.11 |