Advertisement
Guest User

Untitled

a guest
Apr 7th, 2020
233
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.93 KB | None | 0 0
  1. import os
  2. import pickle
  3. from tabulate import tabulate
  4.  
  5. UI = '''
  6. 1. Добавить новый контакт
  7. 2. Посмотреть контакты
  8. 3. Найти контакт
  9. 4. Изменить контакт
  10. 5. Удалить контакт
  11. 6. Сброс всех контактов
  12. 7. Выход
  13. '''
  14.  
  15.  
  16. class Person(object):
  17.  
  18.     def __init__(self, name=None, mail=None, phone=None):
  19.         self.name = name
  20.         self.mail = mail
  21.         self.phone = phone
  22.  
  23.     def __str__(self):
  24.         return tabulate({"Имя": [self.name], "Почта": [self.mail],  "Телефон": [self.phone]}, headers="keys")
  25.  
  26.  
  27. class Addressbook(object):
  28.     def __init__(self, database):
  29.         self.database = database
  30.         self.persons = {}
  31.         if not os.path.exists(self.database):
  32.             file_pointer = open(self.database, 'wb')
  33.             pickle.dump({}, file_pointer)
  34.             file_pointer.close()
  35.         else:
  36.             with open(self.database, 'rb') as person_list:
  37.                 self.persons = pickle.load(person_list)
  38.  
  39.     def add(self):
  40.         name, mail, phone = self.details()
  41.         if name not in self.persons:
  42.             self.persons[name] = Person(name, mail, phone)
  43.         else:
  44.             print('Контакт с таким именем уже есть.')
  45.  
  46.     def search(self):
  47.         name = input('Введите имя: ')
  48.         if name not in self.persons:
  49.             print('Такого контакта нет.')
  50.         else:
  51.             print(self.persons[name])
  52.  
  53.     def viewall(self):
  54.         if self.persons:
  55.             for view in self.persons.values():
  56.                 print(view)
  57.         else:
  58.             print('В адрессной книге нет контактов.')
  59.  
  60.     def details(self):
  61.         name = input('Имя: ')
  62.         mail = input('Почта: ')
  63.         phone = input('Телефон: ')
  64.         return name, mail, phone
  65.  
  66.     def delete(self):
  67.         name = input('Введите имя: ')
  68.         if name in self.persons:
  69.             del self.persons[name]
  70.             print('Контакт удалён.')
  71.         else:
  72.             print('Контакта с таким именем нет.')
  73.  
  74.     def update(self):
  75.         name = input('Введите имя: ')
  76.         if name in self.persons:
  77.             print('Введитет новые данные.')
  78.             name, mail, phone = self.details()
  79.             self.persons[name].__init__(name, mail, phone)
  80.             print('Контакт изменен.')
  81.         else:
  82.             print('Контакт с таким именем не найден.')
  83.  
  84.  
  85.  
  86.  
  87.     def reset(self):
  88.         self.persons = {}
  89.  
  90.     def __del__(self):
  91.         with open(self.database, 'wb') as db:
  92.             pickle.dump(self.persons, db)
  93.  
  94.     def __str__(self):
  95.         return UI
  96.  
  97.     """
  98.  
  99.  
  100.    def __del__(self):
  101.        pass
  102.  
  103.  
  104.  
  105.    @staticmethod
  106.    def print_contacts():
  107.        '''Вывести информацию.'''
  108.        print('В книге {} контактов'.format(Addressbook.contacts))
  109.        #contact_dict.sort()
  110.        for item1, item2 in contact_dict.items():
  111.            print('{0}: {1}, {2}'.format(item1, item2[0], item2[1]))
  112.        # print('{0}: {1}, {2}'.format(self.name, self.mail, self.phone), end="")
  113.  
  114.    """
  115.  
  116.  
  117. def main():
  118.     app = Addressbook('dict_app.data')
  119.     choice = ''
  120.     while choice != '7':
  121.         print(app)
  122.         choice = input('Choose: ')
  123.         if choice == '1':
  124.             app.add()
  125.         elif choice == '2':
  126.             app.viewall()
  127.         elif choice == '3':
  128.             app.search()
  129.         elif choice == '4':
  130.             app.update()
  131.         elif choice == '5':
  132.             app.delete()
  133.         elif choice == '6':
  134.             app.reset()
  135.         elif choice == '7':
  136.             print("Exiting.")
  137.         else:
  138.             print("Invalid choice.")
  139.  
  140.  
  141. if __name__ == '__main__':
  142.     main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement