示例#1
0
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)
示例#2
0
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)