class Rubrica:
def __init__(self, nome, numero, email):
self.nome = nome
self.numero = numero
self.email = email
def __str__(self):
return "%-20s %-15s %s" %(self.nome, self.numero, self.email)
def str_numero(self):
return "%-20s %s" %(self.nome, self.numero)
def str_email(self):
return "%-20s %s" %(self.nome, self.numero)
class Tipo_Dato:
def Quale_str(self):
Quale_s()
scelta = raw_input("")
while 1:
if scelta == "1":
Met_O_num.Stampa()
return
elif scelta == "2":
Met_O_em.Stampa()
return
elif scelta == "":
return
else:
print "Scelta non valida"
print "Per uscire dalla funzione premere invio"
def Quale_mod(self):
Quale_s()
scelta = raw_input("")
while 1:
if scelta == "1":
Met_O_num.Mod()
return
elif scelta == "2":
Met_O_em.Mod()
return
elif scelta == "":
return
else:
print "Scelta non valida"
print "Per uscire dalla funzione premere invio"
class Operazioni_Numeri:
def Mod(self):
nom = raw_input("")
for x in Contatti:
if nom == x.nome:
numero = raw_input("")
x.numero = numero
return
else:
print "Nessuna corrispondenza in rubrica"
return
def Cancella(self):
nom = raw_input("")
if nom == "":
return
for x in Contatti:
if nom == x.nome:
i = Contatti.index(x)
del Contatti[i]
else:
print "Nessun nome corrispondete in rubrica"
print "Per uscire dalla funzione premere invio"
Met_O.Cancella()
def Cancella_tutto(self):
scelta = raw_input("Stai per cancellare l'intera rubrica sei sicuro?(s/N)")
if scelta == "s":
global Contatti
Contatti = []
elif scelta == "N":
return
else:
print "Scelta non valida"
Met_O.Cancella_tutto()
def Stampa(self):
nom = raw_input("")
print "%-20s %s" %("Nome", "Numero")
print
for x in Contatti:
if nom == x.nome:
print x.str_numero()
print
return
else:
print "Nessuna corrispondenza in rubrica"
return
class Operazioni_email:
def Mod(self):
nom = raw_input("")
for x in Contatti:
if nom == x.nome:
email = raw_input("")
x.email = email
return
else:
print "Nessuna corrispondenza in rubrica"
return
def Stampa(self):
nom = raw_input("")
print "%-20s %s" ("Nome", "Email")
print
for x in Contatti:
if nom == x.nome:
print x.str_email()
print
return
else:
print "Nessuna corrispondenza in rubrica"
return
class Users:
def Recupero_dati(self):
import pickle
file_name = "C:\Users\Franco\Desktop\Rubrica_" + user + ".pck"
file = open(file_name,"r")
while 1:
try:
global Contatti
x = pickle.load(file)
Contatti.append(x)
except:
return
def Recupero_user(self):
import string
global list_users
f = open("C:\Users\Franco\Desktop\list_users.txt","r")
list_users = string.split(f.read())
def Controllo_user(self):
global user
user = raw_input("Inserisci Username, per aggiungerne uno scrivere x e poi invio")
if user == "x":
Crea_file()
global list_users
list_users.append(new_user)
elif user in list_users:
Met_U.Recupero_dati()
else:
print "Nessuno user corrispondente"
Met_U.Controllo_user()
class Salva:
def Salva_numeri(self):
import pickle
if user != "x":
file_name = "C:\Users\Franco\Desktop\Rubrica_" + user + ".pck"
elif user == "x":
file_name = "C:\Users\Franco\Desktop\Rubrica_" + new_user + ".pck"
file = open(file_name, "w")
for x in Contatti:
pickle.dump(x, file)
return
def Salva_user(self):
f = open("C:\Users\Franco\Desktop\list_users.txt","w")
for x in list_users:
f.write("%s " %(x))
return
def Vuoi_salvare(self):
scelta = raw_input("Vuoi salvare?(s/N)")
if scelta == "s":
Met_S.Salva_user()
Met_S.Salva_numeri()
elif scelta == "N":
return
else:
print "Scelta non valida"
Met_S.Vuoi_salvare()
#Funzioni di utilizzo generale
def Menu():
print "Cosa vuoi fare?"
print "1-Aggiungi un contatto"
print "2-Modifica un contatto"
print "3-Visualizza un contatto"
print "4-Visualizza tutti i contatti"
print "5-Eliminare un contatto"
print "6-Eliminare tutti i contatti"
print "7-Esci"
def Crea_file():
global new_user
new_user = raw_input("Insersci il nuovo Username")
file_name = "C:\Users\Franco\Desktop\Rubrica_" + new_user + ".pck"
file = open(file_name, "w")
file.close()
def Aggiungi():
nome = raw_input("")
numero = raw_input("")
email = raw_input("")
contatto = Rubrica(nome, numero, email)
Contatti.append(contatto)
def Stampa_Tutto():
lista_nomi = []
for x in Contatti:
lista_nomi.append(x.nome)
lista_nomi.sort()
Categorie()
for x in lista_nomi:
for y in Contatti:
if x == y.nome:
print Contatti[Contatti.index(y)]
print
return
def Stampa():
nom = raw_input("")
Categorie()
for x in Contatti:
if nom == x.nome:
print x
print
return
else:
print "Nessuna corrispondenza in rubrica"
return
def Categorie():
print
print "%-20s %-15s %s" %("Nome","Numero","Email")
print
def Quale_s():
print "Su che tipo di dato vuoi operare?"
print "1-Un numero"
print "2-Una email"
Contatti = []
Met_Tipo = Tipo_Dato()
Met_O_em = Operazioni_email()
Met_O_num = Operazioni_Numeri()
Met_U = Users()
Met_S = Salva()
Met_U.Recupero_user()
Met_U.Controllo_user()
while 1:
Menu()
scelta = raw_input("Inserire la scelta")
if scelta == "1":
Aggiungi()
elif scelta == "2":
Met_Tipo.Quale_mod()
elif scelta == "3":
Met_Tipo.Quale_str()
elif scelta == "4":
Stampa_Tutto()
elif scelta == "5":
Met_O_num.Cancella()
elif scelta == "6":
Met_O_num.Cancella_tutto()
elif scelta == "7":
Met_S.Vuoi_salvare()
break
else:
print "Scelta non valida"
scelta = raw_input("Inserire la scelta")