Creando una minishiell

Ver el tema anterior Ver el tema siguiente Ir abajo

Creando una minishiell

Mensaje  [G]host el Jue Ago 18, 2011 4:44 am

Código:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleMiniShell
{
    //La clase que representa a los comandos
    public class Comando
    {
        private string cmd; //Cadena que representa el comando
        private int idx; //Indice del comando
        private string desc; //descripcion del comando

        //Constructor para inicializar cada comando
        public Comando(string cmd, int id, string dc)
        {
            this.cmd = cmd;
            this.idx = id;
            this.desc = dc;
        }

        //Propiedades para no violar el encapsulamiento
        public string Cmd {get {return cmd;}}
        public int Idx { get {return idx;}}
        public string Dc { get { return desc; } }
    }

    //La clase que encapsula los comandos
    public class ClassInter
    {
        private Comando[] comandos; //Vector de comandos
        private ListadoPersonas lst1; //La lista para ingresar datos
        private string com; //La cadena que simula el comando que ingresa el usuario
        private int id;  //La identidad que nos devuelve cual fue el comando
       
       
        //El poderoso constructor que nos hace la labor de crear los objetos
        //e iniciar nuestra shell de mentiritas.
        public ClassInter()
        {
           
            //Creamos los comandos
            comandos = new Comando[]
            {
                //Recordermos que Comando es un objeto y se crea como
                //tal por cada comando una nueva asignacion en memoria

                //La plantilla es: comando,indice del comando, Descripcion del comando
                //el indice nos sirve para saber que comando de la lista se escribio
                //y luego procesarlo con el switch()
                new Comando("add record",1,"Adiciona nuevos registros al sistema."),
                new Comando("show record",2,"Muestra todos los registros del sistema."),
                new Comando("delete record",3,"Borra o Elimina todos los registros."),
                new Comando("help",4,"Ayuda de los comandos."),
                new Comando("cls",5,"Limpia la terminal."),
                new Comando("quit",6,"Sale del sistema."),
            };
            //Creamos el objeto lista y tener acceso a sus metodos
            lst1 = new ListadoPersonas();

            //Este ciclo simula la shell, pero en vez de mostrar un tipico menu
            //el usuario digita uno de nuestros comandos e invoca esa accion
            Console.ForegroundColor = ConsoleColor.Cyan;
            Console.WriteLine("Bienvenidos a mini-Shell con Listas genericas");
            Console.WriteLine("Simulando comandos al estilo bash.");
            Console.WriteLine("Autor: [G]host.");
            Console.WriteLine("Web: www.ghost.activo.mx\n.");
            do{
                //Jijiji para darle piquete a la shell
                Console.ForegroundColor = ConsoleColor.Green;
                Console.Write("The Hackers Shell> ");
                Console.ForegroundColor = ConsoleColor.Magenta;
                com = Console.ReadLine();
                id = Indice(com);
                switch (id)
                {
                    case 1:
                        add();
                        break;
                    case 2:
                        show();
                        break;
                    case 3:
                        delete();
                        break;
                    case 4:
                        help();
                        break;
                    case 5:
                        clear();
                        break;
                    case 6:
                        quit();
                        break;
                    default:
                        Console.WriteLine("No se reconoce el comando!.\nEjecute comando help.");
                        break;

                }
            }while((id!=6) || (!com.Equals("quit")));
        }

        //La funcion que nos devuelve cual comando se ingreso
        //pero nos devuelve su indice
        public int Indice(string cmd)
        {
            int aux=-1;
            //Foreach para recorrer nuestros objetos
            foreach (Comando c in this.comandos)
            {
                if (c.Cmd.Equals(cmd.ToLower()))
                {
                    aux = c.Idx;
                    break;
                }
            }
            return aux;
        }

        //Estos metodos simulan la acciones
        //Pero realmente invocamos los metodos
        //de nuestra clase ListadoPersonas o algo asi jijij
        public void add()
        {
            lst1.Adicionar();
        }

        public void show()
        {
            lst1.MostrarTodo();
        }

        public void delete()
        {
            lst1.Eliminar();
        }

        public void quit()
        {
            Console.WriteLine("Esta saliendo de The Hackers Shell");
            Console.ReadKey();
        }

        public void help()
        {
            Console.ForegroundColor = ConsoleColor.Yellow;
            foreach(Comando c in this.comandos)
            {
                Console.WriteLine("{0} ---> {1}",c.Cmd,c.Dc);
            }
            Console.ForegroundColor = ConsoleColor.Magenta;
        }

        public void clear()
        {
            Console.Clear();
        }

    }
}
avatar
[G]host
Admin

Mensajes : 67
Puntos : 204
Reputación : 0
Fecha de inscripción : 24/10/2010
Edad : 26

Ver perfil de usuario http://ghost.activo.mx

Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba

- Temas similares

 
Permisos de este foro:
No puedes responder a temas en este foro.