Praca domowa - książka kontaktów - wersja pełna z json
ZAŁOŻENIA:
Przyjmijmy, że dane będziemy przechowywać w plikach typu JSON. W tym celu skorzystajcie z podstawowej biblioteki json .
Nasze aplikacje raczej nie skorzystają z dodatkowej funkcjonalności którą mogłaby dostarczyć np. biblioteka Pandas.
Przechowywanie kontaktów
W naszej aplikacji do kontaktów dodajcie pozycje menu do wczytywania książki z pliku i zapisywanie
do niego.
Nie kombinujcie z trybem “a” - czyli append. Wczytujcie całą zawartość pliku w trybie “r” i z pomocą
biblioteki json zamieniajcie ją na obiekt z którego możecie korzystać w Pythonie (zakładam, że jest to
słownik).
Z kolei przy zapisie danych nadpisujcie cały plik zaktualizowaną zawartością (czyli skorzystajcie z trybu
“w”).
import json
import os
if os.path.exists("kontakty.json"):
with open("kontakty.json", "r", encoding="utf8") as plik:
kontakty = json.load(plik)
else:
kontakty = {}
while True:
opcje_menu = """
Tu Twoja książka kontaktowa. Co mam zrobić? Wybierz operację:
1. dodaj nowy kontakt do ksiazki
2. aktualizuj kontakt
3. usun kontakt
4. wydrukuj imiona
5. wydrukuj cala ksiazke
6. koniec programu
"""
print(opcje_menu)
#zabezpieczenie przed niepodawaniem
if not opcje_menu:
break
operacja = int(input("Wybierz kod operacji: "))
if operacja == 1:
nowe_imie = input("podaj imie nowego kontaktu")
kontakt=input ("wpisz dane kontaktowe")
kontakty[nowe_imie] = kontakt
print ("wybrano 1")
elif operacja == 2:
print("Wybrano 2")
nowy_kontakt = input("Wpisz ksywkę/im1ię, oosby której dane chcesz aktualizowac")
if nowy_kontakt in kontakty:
aktualizacja_danych = input("Wpisz dane kontaktowe: ")
kontakty[nowy_kontakt]= aktualizacja_danych
print("Kontakt został zaktualizowany")
else:
print("Nie ma takigo kontaktu w bazie")
elif operacja == 3:
print("Wybrano usunięcie pozycji z książki")
usun_kontakt=input("Wpisz ksywkę/imię, osby której dane chcesz usunąć ")
if usun_kontakt in kontakty:
kontakty.pop(usun_kontakt)
print("Kontakt został usunięty")
else:
print("Nie ma takiego kontaktu.")
elif operacja == 4:
print("Wybrano 4 - druk imion")
for imiona in kontakty:
print(imiona, ", ")
elif operacja == 5:
print ("Wybrano 5 - druk całej ksiązki")
for imie, dane in kontakty.items():
#print(f"{imie}: {dane}")
print(imie, " kontakt: ", dane)
elif operacja == 6:
print ("Wybrano zamknięcie programu: ")
while True:
czy_zamknac = input("Czy chcesz zapisać zmiany? Tak - T, Nie - N: ")
if czy_zamknac == "T":
with open("kontakty.json", "w", encoding="utf-8") as plik:
json.dump(
kontakty,
plik,
ensure_ascii=False,
sort_keys=True,
indent=4)
print("Zmiany zapisano.")
break
elif czy_zamknac == "N":
print("Zmian nie zapisano")
break
else:
print("Mozna podać tylko T lub N, wybierz 6 jeszcze raz i spróbuj ponownie")
break