Read 메뉴 함수
def search_menu(self):
print('===주소록 검색하기===')
print('[1] 전체 주소록 검색하기')
print('[2] 이름으로 검색하기')
print('[3] 전화번호로 검색하기')
print('[4] 이메일로 검색하기')
print('[0] 돌아가기')
search_input=int(input('원하시는 기능의 숫자를 입력해 주세요 >>'))
if search_input == 0 : return self.menu()
elif search_input == 1 : return self.searchAll() #searchAll 함수 필요함!
elif search_input == 2 :
search_by_name = input('검색할 이름을 입력해주세요 >>')
return self.search(search_by_name,"name")
elif search_input == 3 :
search_by_phone = input('검색할 전화번호를 입력해주세요 >>')
return self.search(search_by_phone,"phone")
elif search_input == 4 :
search_by_email = input('검색할 이메일을 입력해주세요 >>')
return self.search(search_by_email,"email")
검색 기능 구현 함수
def search(self,alias,type):
if type == "name" :
cursor.execute(f"select name, phone, email from phoneBookDB where name = '{alias}'")
search_data = cursor.fetchall()
elif type == "phone":
cursor.execute(f"select name, phone, email from phoneBookDB where phone = '{alias}'")
search_data = cursor.fetchall()
elif type == "email":
cursor.execute(f"select name, phone, email from phoneBookDB where email = '{alias}'")
search_data = cursor.fetchall()
if len(search_data) == 0:
print('전화번호가 없습니다.')
return
else: #빈 문자열에 각 순서대로 할당한 값 넣어서 마지막에 한 번에 출력.
search_for_print=""
i = 0
for(name,phone,email) in search_data:
if i == 0:
search_for_print += f"이름:{name} 전화번호:{phone} 이메일:{email}"
i += 1
continue
else:
search_for_print += "\n" + f"이름:{name} 전화번호:{phone} 이메일:{email}"
print(search_for_print)
def searchAll(self):
cursor.execute(f"select * from phoneBookDB order by name")
All_data = cursor.fetchall()
if len(All_data) == 0:
return "전화번호가 없습니다."
else: #빈 문자열에 줄 바꿈을 하면서 데이터를 쌓은 뒤 한 번에 출력.
All_data_text = ""
i = 0
for d in All_data:
if i == 0: #첫 출력물은 공백 없이 출력하고 다음부터 줄바꿈을 하면서 출력할 수 있도록. do~while을 이용하면 개선이 될까?
All_data_text = f"이름 : {d[1]} 전화번호 : {d[2]} 이메일 : {d[3]}"
i+=1
continue
All_data_text +="\n"+f"이름 : {d[1]} 전화번호 : {d[2]} 이메일 : {d[3]}"
print(All_data_text)
첫 번째 함수(search_menu())는
메뉴를 보여주는 함수로, 입력 값에 따라 함수가 연결된다.
두 번째 함수(search)는
검색을 구현하는 함수로 출력시 줄바꿈을 자연스럽게 하기 위해서 i를 부여하고 함수를 작성하였다.
이런 경우에는 do ~ while문을 사용하면 더 직관적인 코드가 작성되지 않을 까 생각이 든다.
세 번째 함수(searchAll())는
메뉴에서 전체 전화번호부 조회를 하기위한 함수이다.
'Back-end > Python - project' 카테고리의 다른 글
[Python] 전화번호부 Project - PySide6(PyQt6) (1) | 2022.08.09 |
---|---|
[Python] 전화번호부 Project - Delete 구현 (1) | 2022.08.09 |
[Python] 전화번호부 Project - Update구현 (0) | 2022.08.09 |
[Python] 전화번호부 Project - DB연동, Create 구현 (1) | 2022.08.06 |
[Python] Project Prologue........ (1) | 2022.08.05 |
댓글