Kod programu
import json
import os
from datetime import datetime
PLIK_DANE = "ksiazka_adresowa.json"
class KsiazkaKontaktowa:
def __init__(self):
self.ksiazka = self._wczytaj_dane()
def _wczytaj_dane(self):
if os.path.exists(PLIK_DANE):
with open(PLIK_DANE, "r", encoding="utf-8") as f:
return json.load(f)
return {}
def _zapisz_dane(self):
with open(PLIK_DANE, "w", encoding="utf-8") as f:
json.dump(self.ksiazka, f, ensure_ascii=False, indent=4, sort_keys=True)
def dodaj_kontakt(self):
imie = input("Podaj nazwę kontaktu: ").strip()
if not imie:
print("Nazwa kontaktu nie może być pusta!")
return
if imie in self.ksiazka:
print(f"Kontakt {imie} już istnie. Aktualne dane:")
self._wyswietl_kontakt(imie)
return
numer = input("Podaj numer telefonu: ").strip()
email = input("Podaj adres email (opcjonalnie): ").strip()
adres = input("Podaj adres (opcjonalnie): ").strip()
self.ksiazka[imie] = {
'telefon': numer,
'email': email if email else None,
'adres': adres if adres else None,
'data_dodania': datetime.now().strftime("%Y-%m-%d %H:%M:%S")
}
print(f"Kontakt {imie} został dodany.")
def aktualizuj_kontakt(self):
imie = input("Podaj nazwę kontaktu do aktualizacji: ").strip()
if imie not in self.ksiazka:
print("Nie ma takiego kontaktu.")
return
print("Aktualne dane:")
self._wyswietl_kontakt(imie)
print("\nWprowadź nowe dane (pozostaw puste aby nie zmieniać):")
nowy_numer = input("Nowy numer telefonu: ").strip()
nowy_email = input("Nowy email: ").strip()
nowy_adres = input("Nowy adres: ").strip()
if nowy_numer:
self.ksiazka[imie]['telefon'] = nowy_numer
if nowy_email:
self.ksiazka[imie]['email'] = nowy_email
if nowy_adres:
self.ksiazka[imie]['adres'] = nowy_adres
print("Kontakt został zaktualizowany.")
def usun_kontakt(self):
imie = input("Podaj nazwę kontaktu do usunięcia: ").strip()
if imie in self.ksiazka:
del self.ksiazka[imie]
print("Kontakt został usunięty.")
else:
print("Nie ma takiego kontaktu.")
def wyswietl_wszystkie_kontakty(self):
if not self.ksiazka:
print("Brak kontaktów.")
return
print("\nTwoja książka kontaktowa:")
for imie, dane in sorted(self.ksiazka.items()):
self._wyswietl_kontakt(imie)
print("-" * 40)
def wyszukaj_kontakt(self):
fraza = input("Wpisz fragment nazwy lub numeru telefonu: ").strip().lower()
znalezione = False
for imie, dane in self.ksiazka.items():
if (fraza in imie.lower() or
fraza in dane['telefon'].lower() or
(dane['email'] and fraza in dane['email'].lower())):
self._wyswietl_kontakt(imie)
print("-" * 40)
znalezione = True
if not znalezione:
print("Nie znaleziono pasujących kontaktów.")
def _wyswietl_kontakt(self, imie):
dane = self.ksiazka[imie]
print(f"\nNazwa: {imie}")
print(f"Telefon: {dane['telefon']}")
if dane['email']:
print(f"Email: {dane['email']}")
if dane['adres']:
print(f"Adres: {dane['adres']}")
print(f"Dodano: {dane['data_dodania']}")
def main():
print("Witaj w książce kontaktowej!")
ksiazka = KsiazkaKontaktowa()
while True:
print("\nMenu:")
print("1. Dodaj nowy kontakt")
print("2. Edytuj istniejący kontakt")
print("3. Usuń kontakt")
print("4. Wyświetl wszystkie kontakty")
print("5. Wyszukaj kontakt")
print("0. Zapisz i wyjdź")
wybor = input("Wybierz opcję: ").strip()
if wybor == "1":
ksiazka.dodaj_kontakt()
elif wybor == "2":
ksiazka.aktualizuj_kontakt()
elif wybor == "3":
ksiazka.usun_kontakt()
elif wybor == "4":
ksiazka.wyswietl_wszystkie_kontakty()
elif wybor == "5":
ksiazka.wyszukaj_kontakt()
elif wybor == "0":
ksiazka._zapisz_dane()
print("Dane zostały zapisane. Do widzenia!")
break
else:
print("Nieprawidłowy wybór. Spróbuj ponownie.")
if __name__ == "__main__":
main()