class AddressBookApp(Application): def __init__(self): super().__init__() self.addressbook = AddressBook() self.addressbook.load(self.config) def create_menu(self, menu): # 메뉴를 구성해야합니다. # super().create_menu(menu) menu.add('목록', self.print_book) menu.add('상세보기', self.print_detail) menu.add('검색', self.search) menu.add('추가', self.add) menu.add('수정', self.update) menu.add('삭제', self.delete) menu.add('종료', self.exit) # 검색방법: 키워드 검색... '길동' --> [홍길동, 고길동] def search(self): keyword = input('검색어: ') result = self.addressbook.search(keyword) print('=' * 50) print(f'검색 ({len(result)}건)') print('=' * 50) for index, entry in enumerate(result, 1): print( f'{index:02d}] {entry.name}: {entry.phone}, {entry.email}, {entry.addr}' ) print('-' * 50) def print_book(self): print('=' * 50) print('주소록') print('=' * 50) for index, entry in enumerate(self.addressbook.book, 1): print( f'{index:02d}] {entry.name}: {entry.phone}, {entry.email}, {entry.addr}' ) print('-' * 50) def print_detail(self): index = int(input('대상 선택(번호): ')) # 검색 entry = self.addressbook.book[index - 1] # entry 포멧팅 해서 출력 print(f'이름: {entry.name}') print(f'전화번호: {entry.phone}') print(f'email: {entry.email}') print(f'주소: {entry.addr}') def add(self): print('새 주소록 항목 추가') name = input('이름:') phone = input('전화번호:') email = input('이메일:') addr = input('주소:') self.addressbook.add(name, phone, email, addr) def update(self): index = int(input('대상 선택(번호): ')) # 검색 entry = self.addressbook.book[index - 1] print('주소록 항목 수정') name = input(f'이름({entry.name}):') if name.strip() == '': name = entry.name phone = input(f'전화번호({entry.phone}):') if phone.strip() == '': phone = entry.phone email = input(f'이메일({entry.email}):') if email.strip() == '': email = entry.email addr = input(f'주소({entry.addr}):') if addr.strip() == '': addr = entry.addr self.addressbook.update(index - 1, name, phone, email, addr) def delete(self): index = int(input('대상 선택(번호):')) entry = self.addressbook.book[index - 1] ans = input(f'{entry.name}을 삭제할까요?(Y/N)') if ans == 'Y': self.addressbook.delete(index - 1) def destroyed(self): self.addressbook.save(self.config)
class AddressBookApp(Application): def __init__(self): super().__init__() self.addressbook = AddressBook() self.addressbook.load(self.config) def create_menu(self, menu): self.menu.add('목록', self.print_book) # print_book() 이라고 쓰면 이 메서드의 리턴값을 넘겨주기 때문에 괄호를 쓰면 안됨 self.menu.add('상세보기', self.print_detail) self.menu.add('검색', self.search) self.menu.add('추가', self.add) self.menu.add('수정', self.update) self.menu.add('삭제', self.delete) self.menu.add('종료', self.exit) def print_book(self): print('='*50) print('주소록') print('='*50) for ix, entry in enumerate(self.addressbook.book): print(f'{ix+1:02d}. {entry.name} : {entry.phone}, {entry.email}, {entry.addr}') def print_detail(self): index = int(input('대상 선택 (번호): ')) entry = self.addressbook.book[index-1] print() print(f'이름 : {entry.name}') print(f'전화번호 : {entry.phone}') print(f'이메일 : {entry.email}') print(f'주소 : {entry.addr}') def search(self): # 부분 일치 검색 (키워드 검색) keyword = input('검색어 : ') result = self.addressbook.search(keyword) print('='*50) print(f'검색 결과 ({len(result)}건)') print('='*50) for index, entry in enumerate(result): print(f'{index+1:02d}) {entry.name} : {entry.phone}, {entry.email}, {entry.addr}') def add(self): print('\n<새 주소록 항목 추가>\n') name = input('이름 : ') phone = input('전화번호 : ') email = input('이메일 : ') addr = input('주소 : ') self.addressbook.add(name, phone, email, addr) print('\n등록이 완료되었습니다.') def update(self): index = int(input('대상 선택 (번호): ')) entry = self.addressbook.book[index-1] print('주소록 항목 수정') name = input(f'이름({entry.name}) -> ') if name.strip() == '': name = entry.name phone = input(f'전화번호({entry.phone}) -> ') if phone.strip() == '': phone = entry.phone email = input(f'이메일({entry.email}) -> ') if email.strip() == '': email = entry.email addr = input(f'주소({entry.addr}) -> ') if addr.strip() == '': addr = entry.addr self.addressbook.update(index-1, name, phone, email, addr) def delete(self): index = int(input('대상 선택 (번호): ')) entry = self.addressbook.book[index-1] if input(f'{entry.name}님을 정말로 삭제할까요? (y/n) ') == 'y': self.addressbook.delete(index-1) def destroyed(self): self.addressbook.save(self.config)