안녕하세요!
페어 프로그래밍(고객관리프로그램) python 본문
여태까지 배운 python의 문법을 이용하여 고객 관리 프로그램을 만들어보도록 하자.
1. 요구사항 - 데이터
고객의 정보는 이름, 성별, 이메일, 출생년도 가 있습니다. 고객의 정보를 입력받아 본인이 선택한 자료구조에 저장 해야 합니다. 이름은 문자열로 저장하며, 성별은 남자는 M, 여자는 F로 저장합니다. 이메일은 문자열로 저장하며, 태어난 연도는 정수로 저장 합니다
2. 요구사항 - 기능
고객 관리 프로그램은 고객의 정보를 저장, 조회, 수정, 삭제 할 수 있는 기능이 있어야 합니다. 고객 정보를 파일에 저장하는 기능을 구현하지 않아도 됩니다. “ I ”를 눌러 고객의 정보를 입력받도록 하며, 저장된 고객 정보는 “P ” 또는 “ N ”을 눌러 이전 고객정보 또는 다 음 고객정보를 조회할 수 있어야 합니다. 조회한 고객 정보는 “ U ”를 눌러 새로운 정보로 수정할 수 있어야 합니다. “ D ”를 누르면 조회한 고객 정보를 삭제해야 합니다. 프로그램의 종료는 “ Q ”를 누릅니다
쉽게말해,
1.고객의 정보를 이름 성별 이메일 출생년도로 받는다. 2. 이름 이메일은 문자열로, 성별은 M/F로, 출생년도는 정수로 받는다. 3. 고객의 정보를 CRUD 기능으로 받되, DB를 이용하지 않아도 된다. 4. Create는 I키를 이용, Read는 P(이전), N(다음) 키를 이용하여 확인 가능해야한다. 5. Update는 U키를 사용하여 수정 가능해야하고, D키를 이용하여 현재 정보의 Delete기능을 수행해야한다. 6. Q키를 이용하여 프로그램 종료 해야한다. |
우리는 5명이 한 조가 되어 각 10분씩 드라이버와 네비게이터가 돼야 했다.
(네비게이터 : 소스 및 기능, 문법 설명)
(드라이버 : 네비게이터가 설명 해주는 대로 코딩)
총 2시간의 코딩시간이 주어졌으며, (마감기한을 말씀해주지 않으시고 진행하셨다.) 앞의 정보를 토대로 먼저 아이디어를 내서 분할 한 뒤, 코딩을 시작했다.
지금은 이미 코드를 작성하고 난 뒤라 어느정도 정리가 되어있는걸 알고있지만, 처음 받았을때는 굉장히 난해해보여서 정보를 정리하고 시작에 들어갔다. 약 15분정도 회의를 하여 어떤식으로 접근할건지를 정하고 들어갔다.
무조건 계속해서 정보를 받아야하므로 While True: 를 사용하여 시작하기로 했고, CRUD중 C부터 접근하기로했으며, input을 하나씩 가져가며 기능을 추가하기로 하였다. 이 과정에서 4개를 동시에 하자는 의견이 있었지만, 하나씩 천천히 해 나가야 기능 구현 시, 중구난방으로 퍼져나가지 않을거라는 설득을 했다.
customer_list = []
index = 0
while True:
customer = input('입력: 고객 등록[i], 이전 고객 조회 [p], 다음 고객 조회[n], 회원 삭제[d], 종료[q] : ')
if customer == 'i':
name = input("이름을 입력해주세요. :")
while True:
gender = input("성별을 F 또는 M으로 입력해주세요. :")
if gender == 'F' or gender=='M':
break
while True:
email = input("이메일을 입력해주세요. :")
if not email.isdigit():
break
while True:
birth = input("생년월일을 입력해주세요. :")
if birth.isdigit():
break
user_dic = dict()
print(name, gender, email, birth)
user_dic['name']=name
user_dic['gender']=gender
user_dic['email']=email
user_dic['birth']=int(birth)
customer_list.append(user_dic)
print(customer_list)
elif customer == 'd':
customer_list.remove(customer_list[index])
index = 0
print(customer_list)
elif customer == 'p':
if index == 0:
print(customer_list[index])
elif index != 0:
index -= 1
print(customer_list[index])
elif customer == 'n':
if index + 1 == len(customer_list):
print(customer_list[index])
elif index != len(customer_list):
index += 1
print(customer_list[index])
elif customer == 'u':
print()
modify =input("이름:n, 성별:g, 이메일:e, 생년월일:b")
if modify == "n":
customer_update = input("변경하실 내용을 입력해주세요.")
customer_list[index]["name"] = customer_update
if modify == "g":
customer_update = input("변경하실 내용을 입력해주세요.")
customer_list[index]["gender"] = customer_update
if modify == "e":
customer_update = input("변경하실 내용을 입력해주세요.")
customer_list[index]["email"] = customer_update
if modify == "b":
customer_update = input("변경하실 내용을 입력해주세요.")
customer_list[index]["birth"] = customer_update
elif customer == 'q':
break
처음 한 시간 동안은 정규식은 배제하고, 기능을 우선 만들었다.
우선 이름을 구현하기 위해 input을 사용하여 이름을 입력해주세요 라는 멘트를 같이 넣었고 name에 들어가는걸 확인했다. 페어프로그래밍의 어려운점은, 4명의 시어머니와 1명의 며느리만 있기 때문에, 드라이버는 그저 시키는대로 말없이 타이핑해야하고, 나머지 4명에서의 토론의 장이 열린다는 것이다. 그리고 드라이버가 자아를 가질 경우, 원하는방향으로 가지 않을때가 있었다. 첫번째 분이 드라이버를 잡았을 때, 팀원들이 설명한것 이상으로 코드를 작성했고, 나는 그렇게하는게 이번 짧은 교육 시간에서 배우고자 하는게 아니라는 생각이 들었다. 2번째 차례 나의 드라이버 차례였는데 마치 https://www.youtube.com/watch?v=3VG2OgkRJK0 영상처럼 행동했다.
그러자 내 의도를 알아챈 팀원들은 웃으면서 좀 더 구체적으로 좀 더 원하는바를 디테일하게 설명하기 시작했고, 토론 또한 자기의 의견의 디테일을 높여가며 이야기했다. 이후부터는 다들 어떤 방향으로 드라이버가 움직여야 되는지 깨달았는지 디테일하게, 그리고 정확하게 움직였다.
각자의 자리에서 네비게이터와 드라이버가 힘을 합쳐 코드 작성을 완료했지만, 길지 않은 시간이다보니, 완벽한 코딩을 하지는 못했다.(시간이 조금 더 있었다고 정말 잘 했을까 싶긴하지만)
이후 각자의 코딩을 발표하는 시간을 가졌고, 우리조는 기능에서의 구현과 팀원들간의 소통의 중요함을 깨달을 수 있는 유익한 시간이였음을 몸으로 느꼈다.
'개발일지 > python' 카테고리의 다른 글
만들어진 로직을 손쉽게 def 로 변경하기(함수화하기) (2) | 2023.11.08 |
---|---|
Python 함수(define) 간단 정리! pickle 간단 사용법 (2) | 2023.11.07 |
python 제어문 - for , list 안의 for문 (0) | 2023.11.06 |
python 제어문 - 반복문 간단 정리! (0) | 2023.11.05 |
Python set(집합), boolean(불리언) (0) | 2023.11.05 |