Publicado el Deja un comentario

Python. Agenda de contactos

Crea una agenda de contactos y guardalos en un archivo csv que podras abrir con editor de textos o excel.
Para crear la agenda usaremos clases, funciones, metodos, etc.

El codigo utilizado es el siguiente:


# -*-coding:utf-8 -*-

"""
Created on Fri Dic 06 07:48:08 2019

@author: Jose
"""

#modulos
import csv
import itertools
import re

#clases
class Contacto:
nuevoId=itertools.count()
def __init__(self,nombre,apellidos,empresa,fijo,movil):
self.codigo=next(self.nuevoId)
self.nombre=nombre
self.apellidos=apellidos
self.empresa=empresa
self.fijo=fijo
self.movil=movil
class Agenda:
def __init__(self):
self.contactos=[]
def ordenarNombre(self):
self.contactos.sort(key=lambda contacto: contacto.nombre)
def ordenarApellidos(self):
self.contactos.sort(key=lambda contacto: contacto.apellidos)
def añadir(self,nombre,apellidos,empresa,fijo,movil):
contacto=Contacto(nombre,apellidos,empresa,fijo,movil)
self.contactos.append(contacto)
def mostrarTodos(self):
self.submenuOrden()
for contacto in self.contactos:
self.imprimeContacto(contacto)
def buscar(self,textoBuscar):
encontrado=0
for contacto in self.contactos:
if(re.findall(textoBuscar,contacto.nombre)) or (re.findall(textoBuscar,contacto.apellidos)):
self.imprimeContacto(contacto)
encontrado=encontrado+1
self.submenuBuscar(contacto.codigo)
if encontrado==0:
self.noEncontrado()
def borrar(self,codigo):
for contacto in self.contactos:
if contacto.codigo==codigo:
print('---*---*---*---*---*---*---*---*')
print('Quieres borrarlo? (s/n)')
print('---*---*---*---*---*---*---*---*')
opcion=str(input(""))
if opcion=='s' or opcion=='S':
print('Borrando contacto!!!')
del self.contactos[codigo]
elif opcion=='n' or opcion=='N':
break
def modificar(self,codigo):
for contacto in self.contactos:
if contacto.codigo==codigo:
del self.contactos[codigo]
nombre=str(input('Escribe el nombre: '))
apellidos=str(input('Escribe los apellidos: '))
empresa=str(input('Escribe la empresa: '))
fijo=str(input('Escribe el fijo: '))
movil=str(input('Escribe el movil: '))
contacto=Contacto(nombre.capitalize(),apellidos.capitalize(),empresa.capitalize(),fijo,movil)
self.contactos.append(contacto)
break
def submenuBuscar(self,codigo):
print('---*---*---*---*---*---*---*---*')
print('Quieres (m)odificarlo o (b)orrarlo? ')
print('---*---*---*---*---*---*---*---*')
opcion=str(input(""))
if opcion=='m' or opcion=='M':
self.modificar(codigo)
elif opcion=='b' or opcion=='B':
self.borrar(codigo)
else:
print('Continuamos sin realizar modificacion alguna')
def submenuOrden(self):
print('---*---*---*---*---*---*---*---*')
print('Quieres ordenar por (n)ombre o por (a)pellidos?')
print('---*---*---*---*---*---*---*---*')
opcion=str(input(""))
if opcion=='n' or opcion=='N':
self.ordenarNombre()
elif opcion=='a' or opcion=='A':
self.ordenarApellidos()

def grabar(self):
with open('agenda.csv','w') as fichero:
escribir=csv.writer(fichero)
escribir.writerow(('codigo','nombre','apellidos','empresa','fijo','movil'))
for contacto in self.contactos:
escribir.writerow((contacto.codigo,contacto.nombre,contacto.apellidos,contacto.empresa,contacto.fijo,contacto.movil))
def imprimeContacto(self,contacto):
print('---*---*---*---*---*---*---*---*')
print('---*---*---*---*---*---*---*---*')
print('Codigo: {}'.format(contacto.codigo))
print('Nombre: {}'.format(contacto.nombre))
print('Apellidos: {}'.format(contacto.apellidos))
print('Empresa: {}'.format(contacto.empresa))
print('Fijo: {}'.format(contacto.fijo))
print('Movil: {}'.format(contacto.movil))
print('---*---*---*---*---*---*---*---*')
print('---*---*---*---*---*---*---*---*')
def noEncontrado(self):
print('---*---*---*---*---*---*---*---*')
print('---*---*---*---*---*---*---*---*')
print('Contacto no encontrado')
print('---*---*---*---*---*---*---*---*')
print('---*---*---*---*---*---*---*---*')
def ejecutar():
agenda=Agenda()
try:
with open('agenda.csv','r') as fichero:
lector=csv.DictReader(fichero,delimiter=',')
for fila in lector:
agenda.añadir(fila['nombre'].capitalize(),fila['apellidos'].capitalize(),fila['empresa'].capitalize(),fila['fijo'].capitalize(),fila['movil'].capitalize())
except:
print('Error al abrir fichero o que no existe aun')
while True:
menu=str(input("""
\nSelecciona una opcion\n
1 Mostrar lista de contactos
2 Buscar contacto
3 Añadir contacto
0 Salir \n\n
"""))
if menu=='1':
agenda.mostrarTodos()
elif menu=='2':
texto=str(input('Escribe el texto a buscar en contactos: '))
agenda.buscar(texto.capitalize())
agenda.grabar()
elif menu=='3':
nombre=str(input('Escribe el nombre: '))
apellidos=str(input('Escribe los apellidos: '))
empresa=str(input('Escribe la empresa: '))
fijo=str(input('Escribe el fijo: '))
movil=str(input('Escribe el movil: '))
agenda.añadir(nombre.capitalize(),apellidos.capitalize(),empresa.capitalize(),fijo,movil)
agenda.grabar()
elif menu=='0':
print('Hasta pronto!!!')
agenda.grabar()
break
else:
print('Opcion no valida!!!')
if __name__=='__main__':
ejecutar()

Please follow and like us:
Publicado el Deja un comentario

34 Python. Agenda de contactos parte 5 Borrar Datos

Creamos la funcion de borrado de registros.

Agenda

#AGENDA PYTHON
#CON SQLITE
#IMPORTA MODULO
from tkinter import *
from BDatos import *
from tkinter import messagebox
#VARIABLES
listado=[]
ANCHO=560
ALTO=540
POSX=400
POSY=400
anchoAlto=(str(ANCHO)+”x”+str(ALTO))
posicionX=”+”+str(POSX)
posicionY=”+”+str(POSY)
colorVentana=”blue”
colorFondo=”blue”
colorLetra=”white”
#funcion pruebas
def mostrarMensaje():
print(“Pruebas”)
#FUNCIONES
def mensaje(titulo,texto):
messagebox.showinfo(titulo,texto)
def listar():
if(len(listado)>0):
#borra lista
listado.clear()
conexion=sqlite3.connect(“agenda.db”)
consulta=conexion.cursor()
consulta.execute(“SELECT id,nombre,apellidos,telefono,email from agenda”)
for i in consulta:
id=(i[0])
nombre=(i[1])
apellidos=(i[2])
telefono=(i[3])
email=(i[4])
listado.append(i)
listado.sort()
conexion.close()
try:
textLista.delete(1.0,END)
except:
mensaje(“Listado”,”error en listado”)
textLista.insert(INSERT,”idtNombrettApellidosttTelefonon”)
for elemento in listado:
id=elemento[0]
nombre=elemento[1]
apellidos=elemento[2]
telefono=elemento[3]
textLista.insert(INSERT,id)
textLista.insert(INSERT,”t”)
textLista.insert(INSERT,nombre)
textLista.insert(INSERT,”t”)
textLista.insert(INSERT,”t”)
textLista.insert(INSERT,apellidos)
textLista.insert(INSERT,”t”)
textLista.insert(INSERT,”t”)
textLista.insert(INSERT,telefono)
textLista.insert(INSERT,”t”)
textLista.insert(INSERT,”n”)

def limpiar():
ID.set(“”)
nombre.set(“”)
apellidos.set(“”)
telefono.set(“”)
email.set(“”)
def guardar():
no=nombre.get()
ap=apellidos.get()
tf=telefono.get()
em=email.get()
if((no==””)or(ap==””)):
mensaje(“Guardar”,”Faltan datos”)
else:
limpiar()
creaTabla()
inserta(no,ap,tf,em)
mensaje(“Guardar”,”Datos guardados”)
listar()
def modificar():
id=ID.get()
no=nombre.get()
ap=apellidos.get()
tf=telefono.get()
em=email.get()
if((no==””)or(ap==””)or(id==””)):
mensaje(“Modificar”,”Faltan datos”)
else:
try:
limpiar()
modifica(id,no,ap,tf,em)
mensaje(“Modificar”,”Contacto modificado”)
listar()
except:
mensaje(“Modificar”,”Error al modificar”)
def borrar():
try:
id=ID.get()
if(id==””):
mensaje(“Borrar”,”Debes insertar el codigo”)
else:
borra(id)
limpiar()
listar()
mensaje(“Borrar”,”Mensaje borrado”)
except:
mensaje(“Error”,”Error al borrar, inserta codigo”)
#VENTANA
ventana=Tk()
ventana.config(bg=colorVentana)
ventana.geometry(anchoAlto+posicionX+posicionY)
ventana.title(“Agenda”)
#Variables cajas
ID=IntVar()
nombre=StringVar()
apellidos=StringVar()
telefono=StringVar()
email=StringVar()
#Widgets
etiquetaID=Label(ventana,text=”ID:”).place(x=50,y=50)
cajaID=Entry(ventana,textvariable=ID).place(x=130,y=50)
etiquetaNombre=Label(ventana,text=”Nombre:”).place(x=50,y=90)
cajaNombre=Entry(ventana,textvariable=nombre).place(x=130,y=90)
etiquetaApellidos=Label(ventana,text=”Apellidos:”).place(x=50,y=130)
cajaApellidos=Entry(ventana,textvariable=apellidos).place(x=130,y=130)
etiquetaTelefono=Label(ventana,text=”Telefono:”).place(x=50,y=170)
cajaTelefono=Entry(ventana,textvariable=telefono).place(x=130,y=170)
etiquetaEmail=Label(ventana,text=”Email:”).place(x=50,y=210)
cajaEmail=Entry(ventana,textvariable=email).place(x=130,y=210)
textLista=Text(ventana)
textLista.place(x=50,y=240,width=400,height=200)
#Botones
botonAñadir=Button(ventana,text=”Añadir”,command=guardar).place(x=150,y=500)
botonBorrar=Button(ventana,text=”Borrar”,command=borrar).place(x=200,y=500)
botonBuscar=Button(ventana,text=”Buscar”,command=mostrarMensaje).place(x=250,y=500)
botonModificar=Button(ventana,text=”Modificar”,command=modificar).place(x=300,y=500)
listar()
ventana.mainloop()



BDatos

#SQLITE
import sqlite3
#CREA TABLA
def creaTabla():
conexion=sqlite3.connect(“agenda.db”)
consulta=conexion.cursor()
sql=”””CREATE TABLE IF NOT EXISTS agenda(id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
nombre VARCHAR(20) NOT NULL, apellidos VARCHAR(20) NOT NULL, telefono VARCHAR(14) NOT NULL,
email VARCHAR(20) NOT NULL)”””
if(consulta.execute(sql)):
print(“Tabla creada”)
else:
print(“No se pudo crear la tabla”)
conexion.close()
#INSERTAR DATOS
def inserta(nombre,apellidos,telefono,email):
conexion=sqlite3.connect(“agenda.db”)
consulta=conexion.cursor()
datos=(nombre,apellidos,telefono,email)
sql=”””INSERT INTO agenda(nombre,apellidos,telefono,email) VALUES (?,?,?,?)”””
if(consulta.execute(sql,datos)):
print(“Datos guardados”)
else:
print(“No se pudo guardar el dato”)
conexion.commit()
conexion.close()
def modifica(id,nombre,apellidos,telefono,email):
conexion=sqlite3.connect(“agenda.db”)
consulta=conexion.cursor()
consulta.execute(“””UPDATE agenda SET nombre = ?,apellidos = ?,
telefono = ?,email = ? WHERE id= ?”””,(nombre,apellidos,telefono,email, str(id)))
consulta.close()
conexion.commit()
conexion.close()
#BORRAR DATOS
def borra(id):
conexion=sqlite3.connect(“agenda.db”)
consulta=conexion.cursor()
consulta.execute(“DELETE from agenda WHERE id=”+str(id))
consulta.close()
conexion.commit()
conexion.close()

 

Please follow and like us: