Cajero Automático Cliente y Servidor Python

Here the source code of an ATM developed in python.

Server

import socket
import sys

SALDO = 50000
HOST = '127.0.0.1'  # Se configura la direccion del servidor
PORT = 65432        # se configura el puerto
NUMCTA = "2787782"
msgresp = "Error en la transaccion consulte a la entidad bancaria"

while True:

    with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
        s.bind((HOST, PORT))
        s.listen()
        conn, addr = s.accept()
        with conn:
            while True:
                data = conn.recv(1024)   #queda en escucha
                if not data:
                    break

                msgdec = data.decode() # se recibe y se decodifican los datos

                #verifica el numero de cuenta
                if msgdec[1:8] == NUMCTA:
                    # se hacen los procedimientos dependiendo la seleccion del cliente
                    if msgdec[0:1] == "1": #caso consulta de saldo
                        msgresp = "Su saldo actual es de $" + str(SALDO) + " Pesos"
                        print("El cliente "+msgdec[1:8]+" tiene un saldo de $" + str(SALDO) + " Pesos")
                    if msgdec[0:1] == "2": #caso retiro de dinero
                        valret = int(msgdec[8:len(msgdec)])
                        if SALDO > valret:
                            SALDO = SALDO-valret
                            msgresp = "Retire su dinero, su nuevo saldo es $" + str(SALDO) + " Pesos"
                            print("El cliente "+msgdec[1:8]+" tiene un saldo de $" + str(SALDO) + " Pesos")
                        else:
                            msgresp = "Saldo insuficiente intente un valor menor"
                    if msgdec[0:1] == "3": #caso consignacion
                        valdep = int(msgdec[8:len(msgdec)])
                        SALDO = SALDO + valdep
                        msgresp = "Deposite su dinero, su nuevo saldo es $" + str(SALDO) + " Pesos"
                        print("El cliente "+msgdec[1:8]+" tiene un saldo de $" + str(SALDO) + " Pesos")
                    if msgdec[0:1] == "4": #caso Salir
                        msgresp = "Gracias por usar nuestros serivicos"
                        sys.exit()

                else:
                    msgresp ="Numero de cuenta invalido"

                msgrespcod = msgresp.encode()   #se codifica la respuesta al cajero
                conn.sendall(msgrespcod)        #se envia la respuesta al cajero


Client


import socket
import sys

HOST = '127.0.0.1'  # se configura la direccion del servidor
PORT = 65432        # se configura el puerto del servidor

def EnvServ(msg):
    with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
        s.connect((HOST, PORT))
        msgcod = msg.encode()       # se codifica el mensaje
        s.sendall(msgcod)           # se envia el mensaje
        data = s.recv(1024)

        # Se recibe la respuesta del banco
        msgdev = data.decode()
        print (msgdev)


while True:
    # Mensaje de Bienvenida e identifica al idcliente
    print ("\n" * 5)
    print ("****   Bienvenido al banco XYZ   ****\nDigite su numero de cuenta para comenzar")
    idcliente=input()
    #Mensaje con las opciones
    print ('Seleccione la operacion a realizar\n1. Consulta de saldo\n2. Retirar\n3. Consignar\n4. Salir')
    sel=input()
    if sel == "4":
        EnvServ(sel + idcliente)
        sys.exit()
    if sel == "1":
        EnvServ(sel + idcliente)    #envio de datos donde el primer digito es
                                #el tipo de transaccion y el resto el id del usr
    else:
        valortrans=input("Digite el valor $")
        EnvServ(sel + idcliente + valortrans)


Download the full source code Here.