Escribir un programa para gestionar un listín telefónico con los nombres y los teléfonos de los clientes de una empresa. El programa incorporar funciones crear el fichero con el listín si no existe, para consultar el teléfono de un cliente, añadir el teléfono de un nuevo cliente y eliminar el teléfono de un cliente. El listín debe estar guardado en el fichero de texto listin.txt
donde el nombre del cliente y su teléfono deben aparecer separados por comas y cada cliente en una línea distinta.
In [4]:
def get_phone(file, client):
'''
Función que devuelve el teléfono de un cliente de un fichero dado.
Parámetros:
file: Es un fichero con los nombres y teléfonos de clientes.
client: Es una cadena con el nombre del cliente.
Devuelve:
El teléfono del cliente guardado en el fichero o un mensaje de error si el teléfono o el fichero no existe.
'''
try:
f = open(file, 'r')
except FileNotFoundError:
return('¡El fichero ' + file + ' no existe!\n')
else:
directory = f.readlines()
f.close()
directory = dict([tuple(line.split(',')) for line in directory])
if client in directory:
return directory[client]
else:
return('¡El cliente ' + client + ' no existe!\n')
def add_phone(file, client, telf):
'''
Función que añade el teléfono de un cliente de un fichero dado.
Parámetros:
file: Es un fichero con los nombres y teléfonos de clientes.
client: Es una cadena con el nombre del cliente.
telf: Es una cadena con el teléfono del cliente.
Devuelve:
Un mesaje informando sobre si el teléfono se ha añadido o ha habido algún problema.
'''
try:
f = open(file, 'a')
except FileNotFoundError:
return('¡El fichero ' + file + ' no existe!\n')
else:
f.write(client + ',' + telf + '\n')
f.close()
return('El teléfono se ha añadido.\n')
def remove_phone(file, client):
'''
Función que elimina el teléfono de un cliente de un fichero dado.
Parámetros:
file: Es un fichero con los nombres y teléfonos de clientes.
client: Es una cadena con el nombre del cliente.
Devuelve:
Un mesaje informando sobre si el teléfono se ha borrado o ha habido algún problema.
'''
try:
f = open(file, 'r')
except FileNotFoundError:
return('¡El fichero ' + file + ' no existe!\n')
else:
directory = f.readlines()
f.close()
directory = dict([tuple(line.split(',')) for line in directory])
if client in directory:
del directory[client]
f = open(file, 'w')
for name, telf in directory.items():
f.write(name + ',' + telf)
f.close()
return ('¡El cliente se ha borrado!\n')
else:
return('¡El cliente ' + client + ' no existe!\n')
def create_directory(file):
'''
Función que crea un fichero vacío para guardar un listín telefónico.
Parámetros:
file: Es un fichero.
Devuelve:
Un mesaje informando sobre si el fichero se ha creado correctamente o no.
'''
import os
if os.path.isfile(file):
answer = input('El fichero ' + file + ' ya existe. ¿Desea vaciarlo (S/N)? ')
if answer == 'N':
return 'No se ha creado el fichero porque ya existe.\n'
f = open(file, 'w')
f.close()
return 'Se ha creado el fichero.\n'
def menu():
'''
Función que presenta un menú con las operaciones disponibles sobre un listín telefónico y devuelve la opción seleccionada por el usuario.
Devuelve:
La opción seleccionada por el usuario.
'''
print('Gesión del listín telefónico')
print('============================')
print('1 - Consultar un teléfono')
print('2 - Añadir un teléfono')
print('3 - Eliminar un teléfono')
print('4 - Crear el listín')
print('0 - Terminar')
option = input('Introduzca el número de la opción deseada: ')
return option
def directory():
'''
Función que lanza la aplicación para la gestión del listín telefónico.
'''
file = 'listin.txt'
while True:
option = menu()
if option == '1':
name = input('Introduce el nombre del cliente: ')
print(get_phone(file, name))
elif option == '2':
name = input('Introduce el nombre del cliente: ')
telf = input('Introduce el teléfono del cliente: ')
print(add_phone(file, name, telf))
elif option == '3':
name = input('Introduce el nombre del cliente: ')
print(remove_phone(file, name))
elif option == '4':
print(create_directory(file))
else:
break
return
directory()