이전 고객 정보 관리 시스템 만들기 실습을 다듬어서 새로운 기능들을 넣어 보았다.
1. Insert에서 중복 이메일 방지
2. update에서 수정 할 고객 정보 검색 기능
- 입력된 이름과 일치하는 고객을 찾아서 index를 구함
- 수정 내용이 없는 항목은 이전 값 유지
3. 코드
customers = list()
index = -1
while True :
menu = input('''
다음 중에서 하실 작업의 메뉴를 입력하세요.
I - 고객 정보 입력
P - 이전 고객 정보 조회
C - 현재 고객 정보 조회
N - 다음 고객 정보 조회
U - 현재 고객 정보 수정
D - 현재 고객 정보 삭제
Q - 프로그램 종료
''').upper()
if menu == 'I':
print('고객 정보 입력')
customer = { 'name' : '', 'gender' : '', 'email' : '', 'year' : 0 }
# customer = dict()
customer['name'] = input('이름을 입력하세요 : ')
while True:
customer['gender'] = input('성별 (M/F)를 입력하세요 : ').upper()
if customer['gender'] in ('M', 'F'):
break
else:
print('잘못 입력하셨습니다. 다시 입력 해 주세요.')
while True:
customer['email'] = input('이메일 주소를 입력하세요 : ')
golbang = '@' in customer['email']
#이메일 중복 방지 로직 추가~~~
emails = [customer['email'] for customer in customers]
if customer['email'] in emails:
print('중복된 이메일 입니다. 다른 이메일을 입력하세요.')
continue
else:
if golbang:
break
else:
print('"@"를 포함한 이메일 주소를 입력하세요.')
while True:
customer['year'] = input('출생년도 4자리를 입력하세요 : ')
check = len(customer['year']) == 4 and customer['year'].isdigit()
if check:
break
else:
print('출생년도 숫자 4자리를 다시 입력하세요.')
customers.append(customer)
print(customers)
#새로 입력한 고객 정보의 위치 적용 여부 고민 (index = len(customers) - 1 )
index = len(customers) - 1
elif menu == 'P':
print('이전 고객 정보 조회')
if index <= 0:
print('이전 고객 데이터가 없습니다.')
print(index)
else:
index -= 1
print(f'{index + 1}번째 고객 정보 입니다.')
print(customers[index])
elif menu == 'C':
print('현재 고객 정보 조회')
if index >= 0:
print(f'{index + 1}번째 고객 정보 입니다.')
print(customers[index])
else:
print('입력된 정보가 없습니다. 정보 입력은 I를 선택하세요.')
elif menu == 'N':
print('다음 고객 정보 조회')
if index >= (len(customers) - 1):
print('다음 고객 데이터가 없습니다.')
print(index)
else:
index += 1
print(f'{index + 1}번째 고객 정보 입니다.')
print(customers[index])
elif menu == 'U':
print('현재 고객 정보 수정')
customer = { 'name' : '', 'gender' : '', 'email' : '', 'year' : 0 }
# 수정 할 고객 정보 검색 기능
modifycustomer = input('수정 할 고객 이름을 입력하세요 : ')
names = [customer['name'] for customer in customers]
if modifycustomer in names:
# 입력된 이름과 일치하는 고객을 찾아서 index를 구함
index = names.index(modifycustomer)
print(f'수정할 고객 정보는 {customers[index]}입니다. ')
# 수정 내용이 없는 항목은 이전 값 유지 하도록. (입력한 len(customer['name']) == 0 이면 이전값 입력 customer['name'] = customers[index]['name'] )
customer['name'] = input('변경할 이름을 입력하세요 : ')
if len(customer['name']) == 0:
customer['name'] = customers[index]['name']
print('이전값을 그대로 유지합니다.')
while True:
customer['gender'] = input('변경할 성별 (M/F)를 입력하세요 : ').upper()
if len(customer['gender']) == 0:
customer['gender'] = customers[index]['gender']
print('이전값을 그대로 유지합니다.')
break
else:
if customer['gender'] in ('M', 'F'):
break
else:
print('잘못 입력하셨습니다. 다시 입력 해 주세요.')
while True:
customer['email'] = input('변경할 이메일 주소를 입력하세요 : ')
if len(customer['email']) == 0:
customer['email'] = customers[index]['email']
print('이전값을 그대로 유지합니다.')
break
else:
golbang = '@' in customer['email']
emails = [customer['email'] for customer in customers]
if customer['email'] in emails:
print('중복된 이메일 입니다. 다른 이메일을 입력하세요.')
continue
else:
if golbang:
break
else:
print('"@"를 포함한 이메일 주소를 입력하세요.')
while True:
customer['year'] = input('변경할 출생년도 4자리를 입력하세요 : ')
if len(customer['year']) == 0:
customer['year'] = customers[index]['year']
print('이전값을 그대로 유지합니다.')
break
else:
check = len(customer['year']) == 4 and customer['year'].isdigit()
if check:
break
else:
print('출생년도 숫자 4자리를 다시 입력하세요.')
customers[index] = customer
print(f'변경된 고객 정보는 {customers[index]}입니다.')
else:
print(f'{modifycustomer} 이름을 가진 고객을 찾을 수 없습니다.')
elif menu == 'D':
print('현재 고객 정보 삭제')
print(f'현재 고객 정보 {customers[index]["name"]}를 삭제하시겠습니까?')
check = input('삭제하실려면 Y, 그대로 유지하시려면 N를 입력하세요').upper()
if check == 'Y':
del customers[index]
index -= 1
print('삭제가 완료되었습니다.')
else:
print('삭제가 취소되었습니다.')
elif menu == 'Q':
print('안녕히 가세요 :)')
break
else:
print('잘못 입력하셨습니다. 다시 입력하세요.')
4. 결과
다음 중에서 하실 작업의 메뉴를 입력하세요.
I - 고객 정보 입력
P - 이전 고객 정보 조회
C - 현재 고객 정보 조회
N - 다음 고객 정보 조회
U - 현재 고객 정보 수정
D - 현재 고객 정보 삭제
Q - 프로그램 종료
i
고객 정보 입력
이름을 입력하세요 : aaa
성별 (M/F)를 입력하세요 : m
이메일 주소를 입력하세요 : aaa@
출생년도 4자리를 입력하세요 : 1111
[{'name': 'aaa', 'gender': 'M', 'email': 'aaa@', 'year': '1111'}]
다음 중에서 하실 작업의 메뉴를 입력하세요.
I - 고객 정보 입력
P - 이전 고객 정보 조회
C - 현재 고객 정보 조회
N - 다음 고객 정보 조회
U - 현재 고객 정보 수정
D - 현재 고객 정보 삭제
Q - 프로그램 종료
i
고객 정보 입력
이름을 입력하세요 : bbb
성별 (M/F)를 입력하세요 : f
이메일 주소를 입력하세요 : bbb@
출생년도 4자리를 입력하세요 : 2222
[{'name': 'aaa', 'gender': 'M', 'email': 'aaa@', 'year': '1111'}, {'name': 'bbb', 'gender': 'F', 'email': 'bbb@', 'year': '2222'}]
다음 중에서 하실 작업의 메뉴를 입력하세요.
I - 고객 정보 입력
P - 이전 고객 정보 조회
C - 현재 고객 정보 조회
N - 다음 고객 정보 조회
U - 현재 고객 정보 수정
D - 현재 고객 정보 삭제
Q - 프로그램 종료
u
현재 고객 정보 수정
수정 할 고객 이름을 입력하세요 :
이름을 가진 고객을 찾을 수 없습니다.
다음 중에서 하실 작업의 메뉴를 입력하세요.
I - 고객 정보 입력
P - 이전 고객 정보 조회
C - 현재 고객 정보 조회
N - 다음 고객 정보 조회
U - 현재 고객 정보 수정
D - 현재 고객 정보 삭제
Q - 프로그램 종료
u
현재 고객 정보 수정
수정 할 고객 이름을 입력하세요 : bbb
수정할 고객 정보는 {'name': 'bbb', 'gender': 'F', 'email': 'bbb@', 'year': '2222'}입니다.
변경할 이름을 입력하세요 :
이전값을 그대로 유지합니다.
변경할 성별 (M/F)를 입력하세요 :
이전값을 그대로 유지합니다.
변경할 이메일 주소를 입력하세요 : aaa@
중복된 이메일 입니다. 다른 이메일을 입력하세요.
변경할 이메일 주소를 입력하세요 : bbbb@
변경할 출생년도 4자리를 입력하세요 :
이전값을 그대로 유지합니다.
변경된 고객 정보는 {'name': 'bbb', 'gender': 'F', 'email': 'bbbb@', 'year': '2222'}입니다.
다음 중에서 하실 작업의 메뉴를 입력하세요.
I - 고객 정보 입력
P - 이전 고객 정보 조회
C - 현재 고객 정보 조회
N - 다음 고객 정보 조회
U - 현재 고객 정보 수정
D - 현재 고객 정보 삭제
Q - 프로그램 종료
c
현재 고객 정보 조회
2번째 고객 정보 입니다.
{'name': 'bbb', 'gender': 'F', 'email': 'bbbb@', 'year': '2222'}
다음 중에서 하실 작업의 메뉴를 입력하세요.
I - 고객 정보 입력
P - 이전 고객 정보 조회
C - 현재 고객 정보 조회
N - 다음 고객 정보 조회
U - 현재 고객 정보 수정
D - 현재 고객 정보 삭제
Q - 프로그램 종료
q
안녕히 가세요 :)
'Back-End > Python' 카테고리의 다른 글
[Python][파이썬]객체 지향 프로그래밍(OOP) (0) | 2023.11.10 |
---|---|
[Python][파이썬] 고객 정보 관리 시스템 만들기 실습 3 - module, import (7) | 2023.11.08 |
[Python][파이썬] 라이브러리 활용 - datetime, timedelta, relativedelta (0) | 2023.11.08 |
[Python][파이썬] 라이브러리, 모듈(module), import , __name__ (1) | 2023.11.08 |
[Python][파이썬] 파일 생성하기, pickle 모듈 (1) | 2023.11.07 |