def pretraga_autor(): #funkcija koja vrši pretragu knjiga po autoru global lista_knjiga lista = lista_autora() for i in range(len(lista)): lista[i] = lista[i].upper() ulaz = input("Unesite autora za pretraživanje: ") ulaz = provjeri_unos(ulaz).upper() n = len(lista) i = 0 ind = True print( "\nISBN NASLOV AUTORI GODINA IZDAVANJA ŽANR CIJENA KOLIČINA OPIS " ) while ind: if (i < n): if (lista[i].find(ulaz) != -1): for knjiga in lista_knjiga: if (lista_autora()[i] == knjiga["autori"]): print( "{:<15} {:<15} {:<15} {:<16} {:<15} {:<7.2f} {:<8} {:<15}" .format(knjiga["isbn"], knjiga["naslov"], knjiga["autori"], knjiga["godina"], knjiga["zanr"], float(knjiga["cijena"]), knjiga["kolicina"], knjiga["opis"])) i = i + 1 else: ind = False
def pretraga_isbn(): #funkcija koja vrši pretragu knjiga po ISBN-u global lista_knjiga lista = lista_isbn() x = True while x: ulaz = input("Unesite ISBN za pretraživanje: ") ulaz = provjeri_unos(ulaz) if ulaz.isdigit(): x = False else: print("Pogrešan format unosa. Pokušajte ponovo.") n = len(lista) i = 0 ind = True print( "\nISBN NASLOV AUTORI GODINA IZDAVANJA ŽANR CIJENA KOLIČINA OPIS " ) while ind: if (i < n): if (lista[i].find(ulaz) != -1): for knjiga in lista_knjiga: if (lista_isbn()[i] == knjiga["isbn"]): print( "{:<15} {:<15} {:<15} {:<16} {:<15} {:<7.2f} {:<8} {:<15}" .format(knjiga["isbn"], knjiga["naslov"], knjiga["autori"], knjiga["godina"], knjiga["zanr"], float(knjiga["cijena"]), knjiga["kolicina"], knjiga["opis"])) i = i + 1 else: ind = False
def unos_knjiga(): # funkcija koja služi za unos novih knjiga global lista_knjiga zanrovi = ["autobiografija", "drama", "fantazija", "roman"] knjiga = {} print("\n-----Podaci o knjizi-----") autori = input("Autori: ") autori = provjeri_unos(autori) knjiga["autori"] = autori naslov = input("Naslov: ") naslov = provjeri_unos(naslov) knjiga["naslov"] = naslov godina = None while godina is None: x = input("Godina: ") if x.isdigit(): godina = x knjiga["godina"] = godina else: print("Godina mora biti broj") isbn = None while isbn is None: unos_isbn = input("ISBN: ") if unos_isbn.isdigit() and provjera_isbn(unos_isbn): isbn = unos_isbn knjiga["isbn"] = isbn else: print( "Unijeti isbn već postoji ili je pogrešan format unosa. Pokušajte ponovo." ) zanr = None while zanr is None: print("Ponuđeni žanrovi:") for i in range(len(zanrovi)): print(str(i + 1) + ".) " + zanrovi[i]) zanr_indeks = input("Unesite redni broj žanra: ") if zanr_indeks.isdigit(): if 0 < int(zanr_indeks) <= len(zanrovi): zanr = zanrovi[int(zanr_indeks) - 1] knjiga["zanr"] = zanr else: print("\nIndeks žanra mora biti broj") cijena = None while cijena is None: x = input("Cijena: ") try: cijena = float(x) knjiga["cijena"] = cijena except ValueError: print("Pogrešan format unosa. Pokušajte ponovo.") kolicina = None while kolicina is None: x = input("Količina: ") if x.isdigit(): kolicina = int(x) knjiga["kolicina"] = kolicina else: print("Količina mora biti pozitivan cijeli broj") opis = input("Opis: ") opis = provjeri_unos(opis) knjiga["opis"] = opis knjiga["brisanje"] = False lista_knjiga.append(knjiga) # dodavanje knjige u listu knjiga zapis = "{}|{}|{}|{}|{}|{:.2f}|{}|{}|{}\n".format( knjiga["autori"], knjiga["naslov"], knjiga["godina"], knjiga["isbn"], knjiga["zanr"], float(knjiga["cijena"]), knjiga["kolicina"], knjiga["opis"], knjiga["brisanje"]) print("\nUnesena knjiga:") print(knjiga) print("\nZapis unesene knjige u fajlu:") print(zapis) f = open("../data/fajl_knjige.txt", "a") f.write(zapis) f.close() lista_knjiga = ucitavanje_knjiga("../data/fajl_knjige.txt") print("Učitane knjige:") for knjiga in lista_knjiga: print(knjiga)
def izmjena_knjige(): #funkcija koja vrši izmjenu knjige global lista_knjiga lista_knjiga = ucitavanje_knjiga("../data/fajl_knjige.txt") nova_lista_knjiga = [] for knjiga in lista_knjiga: if (knjiga["brisanje"] == "False" and int(knjiga["kolicina"]) > 0): nova_lista_knjiga.append(knjiga) if (nova_lista_knjiga == []): print("\nNema knjiga za izmjenu") return x = True while (x): i = 1 print("\nSpisak knjiga:\n") print("RB. ISBN NASLOV ") for knjiga in nova_lista_knjiga: print("{:>2}. {:<15} {:<15}".format(i, knjiga["isbn"], knjiga["naslov"])) i = i + 1 ulaz = input("\nUnesite redni broj knjige: ") if ulaz.isdigit(): if 0 < int(ulaz) <= len(nova_lista_knjiga): ulaz = int(ulaz) x = False else: print("\nPogrešan unos") for i in range(len(nova_lista_knjiga)): if (ulaz == i + 1): for knjiga in lista_knjiga: if (nova_lista_knjiga[i]["isbn"] == knjiga["isbn"]): #izmjena podataka o knjizi zanrovi = ["autobiografija", "drama", "fantazija", "roman"] print("\n-----Podaci o knjizi-----") autori = input("Autori: ") autori = provjeri_unos(autori) knjiga["autori"] = autori naslov = input("Naslov: ") naslov = provjeri_unos(naslov) knjiga["naslov"] = naslov godina = None while godina is None: x = input("Godina: ") if x.isdigit(): godina = x knjiga["godina"] = godina else: print("Godina mora biti broj") zanr = None while zanr is None: print("Ponuđeni žanrovi:") for i in range(len(zanrovi)): print(str(i + 1) + ".) " + zanrovi[i]) zanr_indeks = input("Unesite redni broj žanra: ") if zanr_indeks.isdigit(): if 0 < int(zanr_indeks) <= len(zanrovi): zanr = zanrovi[int(zanr_indeks) - 1] knjiga["zanr"] = zanr else: print("\nIndeks žanra mora biti broj") cijena = None while cijena is None: x = input("Cijena: ") try: cijena = float(x) knjiga["cijena"] = cijena except ValueError: print("Pogrešan format unosa. Pokušajte ponovo.") kolicina = None while kolicina is None: x = input("Količina: ") if x.isdigit(): kolicina = int(x) knjiga["kolicina"] = kolicina else: print("Količina mora biti pozitivan cijeli broj") opis = input("Opis: ") opis = provjeri_unos(opis) knjiga["opis"] = opis break f = open("../data/fajl_knjige.txt", "w") for knjiga in lista_knjiga: zapis = "{}|{}|{}|{}|{}|{:.2f}|{}|{}|{}\n".format( knjiga["autori"], knjiga["naslov"], knjiga["godina"], knjiga["isbn"], knjiga["zanr"], float(knjiga["cijena"]), knjiga["kolicina"], knjiga["opis"], knjiga["brisanje"]) f.write(zapis) f.close() print("\nKnjiga je uspiješno izmijenjena")
def unos_korisnika(): # funkcija koja služi za unos novih korisnika global lista_korisnika uloge = ["prodavac", "menadžer", "administrator"] korisnik = {} print("\n-----Podaci o korisniku-----") korisnicko_ime = None while korisnicko_ime is None: unos_korisnicko_ime = input("Korisničko_ime: ") unos_korisnicko_ime = provjeri_unos(unos_korisnicko_ime) if provjera_korisnicko_ime(unos_korisnicko_ime): korisnicko_ime = unos_korisnicko_ime korisnik["korisnicko_ime"] = korisnicko_ime else: print("Unijeto korisničko ime već postoji. Pokušajte ponovo.") sifra = input("Šifra: ") sifra = provjeri_unos(sifra) korisnik["sifra"] = sifra ime = input("Ime: ") ime = provjeri_unos(ime) korisnik["ime"] = ime prezime = input("Prezime: ") prezime = provjeri_unos(prezime) korisnik["prezime"] = prezime uloga = None while uloga is None: print("Ponuđene uloge:") for i in range(len(uloge)): print(str(i + 1) + ".) " + uloge[i]) uloga_indeks = input("Unesite redni broj uloge: ") if uloga_indeks.isdigit(): if 0 < int(uloga_indeks) <= len(uloge): uloga = uloge[int(uloga_indeks) - 1] korisnik["uloga"] = uloga else: print("\nIndeks uloge mora biti broj") lista_korisnika.append(korisnik) # dodavanje korisnika u listu korisnika zapis = "{}|{}|{}|{}|{}\n".format(korisnik["korisnicko_ime"], korisnik["sifra"], korisnik["ime"], korisnik["prezime"], korisnik["uloga"]) print("\nUneseni korisnik:") print(korisnik) print("\nZapis unesenog korisnika u fajlu:") print(zapis) f = open("../data/fajl_korisnici.txt", "a") f.write(zapis) f.close() lista_korisnika = ucitavanje_korisnika("../data/fajl_korisnici.txt") print("Učitani korisnici:") for korisnik in lista_korisnika: print(korisnik)
def izmjena_korisnika(): #funkcija koja vrši izmjenu korisnika global lista_korisnika nova_lista_korisnika = [] for korisnik in lista_korisnika: if korisnik["uloga"] != "administrator": nova_lista_korisnika.append(korisnik) if (nova_lista_korisnika == []): print("\nNema korisnika za izmjenu") return x = True while (x): i = 1 print("\nSpisak korisnika:\n") print("RB. IME PREZIME KORISNIČKO IME ") for korisnik in nova_lista_korisnika: print("{:>2}. {:<15} {:<15} {:<15}".format( i, korisnik["ime"], korisnik["prezime"], korisnik["korisnicko_ime"])) i = i + 1 ulaz = input("\nUnesite redni broj korisnika: ") if ulaz.isdigit(): if 0 < int(ulaz) <= len(nova_lista_korisnika): ulaz = int(ulaz) x = False else: print("\nPogrešan unos") for i in range(len(nova_lista_korisnika)): if (ulaz == i + 1): for korisnik in lista_korisnika: if (nova_lista_korisnika[i]["korisnicko_ime"] == korisnik["korisnicko_ime"]): #izmjena podataka o korisniku uloge = ["prodavac", "menadžer", "administrator"] print("\n-----Podaci o korisniku-----") sifra = input("Šifra: ") sifra = provjeri_unos(sifra) korisnik["sifra"] = sifra ime = input("Ime: ") ime = provjeri_unos(ime) korisnik["ime"] = ime prezime = input("Prezime: ") prezime = provjeri_unos(prezime) korisnik["prezime"] = prezime uloga = None while uloga is None: print("Ponuđene uloge:") for i in range(len(uloge)): print(str(i + 1) + ".) " + uloge[i]) uloga_indeks = input("Unesite redni broj uloge: ") if uloga_indeks.isdigit(): if 0 < int(uloga_indeks) <= len(uloge): uloga = uloge[int(uloga_indeks) - 1] korisnik["uloga"] = uloga else: print("\nIndeks uloge mora biti broj") break f = open("../data/fajl_korisnici.txt", "w") for korisnik in lista_korisnika: zapis = "{}|{}|{}|{}|{}\n".format(korisnik["korisnicko_ime"], korisnik["sifra"], korisnik["ime"], korisnik["prezime"], korisnik["uloga"]) f.write(zapis) f.close() print("\nKorisnik je uspiješno izmijenjen")