Simulador de encuestas autopersonalizables

Iniciado por clipto, 1 Marzo 2009, 17:25 PM

0 Miembros y 1 Visitante están viendo este tema.

clipto

Nota: un programa de encuestas autopersonalisables consiste en q el usuario encargado de administrar el programa pueda decir q la pregunta1 es respondia por el usuario & q la pregunta 2 es de selección múltiple con única respuesta & así sucesivamente.
Aplicando la Logica del calculo, la cual aplique tanto para programar el simulador la hare para explicarlo
Vamos
Primero q todo: tengo un amigo q me conto q tenia q hacer un programa para una compañía X, q se encarga de hacer encuetas en las distintas partes de colombia, y me dijo q el programa consistía en generar encuestas en ambiente web para q las personas las pudieras hacer desde internet y una aplicación extra par alos blackberrys para q la pudieras ejecutar en los pueblos donde se cae el internet & muchas cosas mas como se deben imagina, de ahi viene el nombre simulador ya q a mi me causo intriga lo de las "encuestas autopersonalisables" & lo mio esta echo en C#, y además solo es un algoritmo q implemente para generar tales encuestas.
- ahora yo no uso BD ya q solo es un simulador, solo ultilizo vectores & matrices ya verán porq.
Leer mas http://rapidshare.com/files/203870200/Planteamiento.pdf
agrego una imagen del programa



Nota: es el primer programa q hago orientado objeto donde aplico las clases,  claro no es gran nivel porq ya entre a la u & no me dio tiempo de seguir leyendo msdn pero ami me guta bastante el modo enq trabaje, creo q le saque el jugo alo q leei,

post original en: http://proyeccionclipto.blogspot.com/


clipto

Codigo del simulador:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace configuracionpaso1
{

    class confipaso1
    {
       
       public class limpiarpreguntas : mainprincipal.Mainprincipal.apariencia
        {
            ///limpio la pantalla para no teenr un desorden
           public void nodesorden()
           {
               limpiarpreguntas heredemos = new limpiarpreguntas();
               heredemos.aparienciapantalla();
               Console.Write("Construyendo Configuracion..");
           }
           
       
        }


        public void tipodeencuesta()
        {
            ///primero limpio la pantalla
            mainprincipal.Mainprincipal.apariencia limpio = new mainprincipal.Mainprincipal.apariencia();
            limpio.aparienciapantalla();
           
           
            Console.SetCursorPosition(6,1); Console.WriteLine("El asistente le guiara por el proceso de configuracion de la encuesta");
            Console.SetCursorPosition(15, 3);Console.WriteLine("Paso 1/2");
            Console.SetCursorPosition(2, 5); Console.Write("¿cuantas preguntas tendra la encuesta? : ");
           
           
            int tamencuesta=0;

            try
            {
               tamencuesta= Int32.Parse(Console.ReadLine());
            }
            catch (FormatException )
            {
                configuracionpaso1.confipaso1 denuevo = new confipaso1();
                denuevo.tipodeencuesta();


            }


           
            //declaro el array (vector) q me controlara la configuracion del tipo de preguntas
            int[] conftipo = new int[tamencuesta];
            //declaro la matriz q guardara la encuesta
            string[,] matrizmadre = new string[3, tamencuesta];
            //declaro la matriz q leera la encuestafinal
            string[,] matrizdelectura= new string[3,tamencuesta];


           
            //almaceno un valor para cada tipo de encuesta en el vector conftipo

            /*    Valor asiganado a cada tipo de encuesta
               [1] preguntas de seleccion multiple con unica respuesta
             * [2] pregunta respondida por el encuestado
             * [3] pregunta de seleccion multiple con unica respuesta & respondida
             *     por el encuestado
             * [4] pregunta de seleccion multiple con varias respuestas
             * [5] pregunta de seleccion multiple con varias respuestas & ademas incluye
             *     respuesta del encuestado
                         
             */

            int b = 0, a=0;       
            foreach (Int32 i in conftipo)
            {
                ///limpio la pantalla para no teenr un desorden
                limpiarpreguntas nolarguero = new limpiarpreguntas();
                nolarguero.nodesorden();

                b += 1;
                Console.WriteLine("\n \n seleccione un tipo de encuesta para la pregunta #"+ b);
                Console.WriteLine("\n \n");
                Console.WriteLine("--)pregunta de seleccion multiple con unica respuesta --opc [1]");
               // Console.WriteLine("\n");
                Console.WriteLine("--)pregunta respondida por el encuestado --opc[2]");
                //Console.WriteLine("\n");
                Console.WriteLine("--)pregunta de seleccion multiple con unica respuesta & respondida por el encuestado --opc[3]");
               // Console.WriteLine("\n");
                Console.WriteLine("-)pregunta con opcion multiple & varias repsuestas --opc[4]");
                //Console.WriteLine("\n");
                Console.WriteLine("--)pregunta con opcion multiple & varias repsuestas & respondida por el encuestado --opc[5]");
               
                Console.Write("\n digite el #correspondiente al tipo de pregunta deseado: ");
                Int32 opc=0;
               
                    try {
                        opc = Int32.Parse(Console.ReadLine());
                        }
                    catch(FormatException)
                        {
                        configuracionpaso1.confipaso1 denuevo = new confipaso1();
                        denuevo.tipodeencuesta();
                        }

                 ///para q la opcion digitada no este fuera de los limites   
                while(opc<1 || opc>5)
                   {
                       Console.WriteLine("El numero digitado esta fuera de los limites, intentelo nuevamentes");
                       Console.Write("\n digite el #correspondiente al tipo de pregunta deseado: ");
                       

                       try
                       {
                           opc = Int32.Parse(Console.ReadLine());
                       }
                       catch (FormatException)
                       {
                           configuracionpaso1.confipaso1 denuevo = new confipaso1();
                           denuevo.tipodeencuesta();
                       }
                   }
                   
                    conftipo[a] = opc;
                    a += 1;
               

                   

            }////fin foreach
         
            ///mando las matrices & el vector a configuracionpaso2
            configuracionpaso2.confpaso2 mandarconf = new configuracionpaso2.confpaso2();
            mandarconf.llenandoencuesta(conftipo,matrizmadre, matrizdelectura);
           
           
           
        }

    }



   
}

namespace configuracionpaso2
{
    public class tiposdepreguntas:confpaso2.limpiarpantalla
    {
        /*    Valor asiganado a cada tipo de encuesta
               [1] preguntas de seleccion multiple con unica respuesta
             * [2] pregunta respondida por el encuestado
             * [3] pregunta de seleccion multiple con unica respuesta & respondida
             *     por el encuestado
             * [4] pregunta de seleccion multiple con varias respuestas
             * [5] pregunta de seleccion multiple con varias respuestas & ademas incluye
             *     respuesta del encuestado
                         
             */


        public void tipo1(string[,] matrizmadre2, int np)
        {
            int np2 = np + 1;
            Console.WriteLine("\n Configuracion para la pregunta #"+ np2);
            Console.Write("Escriba la pregunta deseada: ");
            string pregunta = "";

            try
            {
                pregunta =np2+(") ")+ Console.ReadLine();
            }
            catch(OverflowException)
            {
                Console.WriteLine("se ha producido un error debido a q esta aplicacion es solo un simulador & la pregunta ingresada sobrepasa los limites");
                Console.ReadKey();
                tiposdepreguntas limpiar = new tiposdepreguntas();
                limpiar.lpantalla();
                limpiar.tipo1(matrizmadre2, np);
           
            }
           
           
            matrizmadre2[0, np] = pregunta;
            Console.Write("\n escriba el numero de incisos para la pregunta: ");
            int tinsisos = 0;
           
            try
            {
                tinsisos = int.Parse(Console.ReadLine());
            }
            catch(FormatException)
            {
                tiposdepreguntas limpiar = new tiposdepreguntas();
                limpiar.lpantalla();
                limpiar.tipo1( matrizmadre2,np);
            }

            for (int i = 1; i <= tinsisos;i++ )
            {
                Console.Write("\n"+ i+ ") ");
                string inciso =i+") "+ Console.ReadLine()+ "\n";
                matrizmadre2[1, np] = matrizmadre2[1, np] + inciso;
            }


            Console.WriteLine("\n la configuracion de la pregunta #"+np2+ " ha terminado" );
            Console.ReadKey();
            tiposdepreguntas limpiar2 = new tiposdepreguntas();
            limpiar2.lpantalla();

            /////boy aver como va quedando
           /* Console.WriteLine("\n \n");

            Console.WriteLine(matrizmadre2[0, np]);
            Console.WriteLine(matrizmadre2[1, np]);*/

        }

        public void tipo2(string[,] matrizmadre2, int np)
        {
            int np2 = np + 1;
            Console.WriteLine("\n Configuracion para la pregunta #" + np2);
            Console.Write("Escriba la pregunta deseada: ");
            string pregunta = "";

            try
            {
                pregunta = np2 + (") ") + Console.ReadLine();
            }
            catch (OverflowException)
            {
                Console.WriteLine("se ha producido un error debido a q esta aplicacion es solo un simulador & la pregunta ingresada sobrepasa los limites");
                Console.ReadKey();
                tiposdepreguntas limpiar = new tiposdepreguntas();
                limpiar.lpantalla();
                limpiar.tipo2(matrizmadre2, np);

            }


            matrizmadre2[0, np] = pregunta;

            Console.WriteLine("\n la configuracion de la pregunta #"+ np2+ " ha terminado");
            Console.ReadKey();
            tiposdepreguntas limpiar2 = new tiposdepreguntas();
            limpiar2.lpantalla();

           
        }

        public void tipo3(string[,] matrizmadre2, int np)
        {
            ///como el tipo 3 empiesa haciendo una pregunta
            ///de seleccion multiple con unica respuesta
            ///puedo llamar al tipo1 & asi no estoy escribiendo
            ///el mismo codigo n veces
            tiposdepreguntas mismoproceso = new tiposdepreguntas();
            mismoproceso.tipo1(matrizmadre2, np);

            ///& la respuesta del usuario la configuro en el tercernamespace
            ///ya q esta es leeida en el proceso final


        }

        public void tipo4(string[,] matrizmadre2, int np, int[] gneresp)
        {
            int np2 = np + 1;
            Console.WriteLine("\n Configuracion para la pregunta #" + np2);
            Console.Write("Escriba la pregunta deseada: ");
            string pregunta = "";

            try
            {
                pregunta = np2 + (") ") + Console.ReadLine();
            }
            catch (OverflowException)
            {
                Console.WriteLine("se ha producido un error debido a q esta aplicacion es solo un simulador & la pregunta ingresada sobrepasa los limites");
                Console.ReadKey();
                tiposdepreguntas limpiar = new tiposdepreguntas();
                limpiar.lpantalla();
                limpiar.tipo1(matrizmadre2, np);

            }


            matrizmadre2[0, np] = pregunta;
            Console.Write("\n escriba el numero de incisos para la pregunta: ");
            int tinsisos = 0;

            try
            {
                tinsisos = int.Parse(Console.ReadLine());
            }
            catch (FormatException)
            {
                tiposdepreguntas limpiar = new tiposdepreguntas();
                limpiar.lpantalla();
                limpiar.tipo4(matrizmadre2, np, gneresp);
            }

            for (int i = 1; i <= tinsisos; i++)
            {
                Console.Write("\n" + i + ") ");
                string inciso = i + ") " + Console.ReadLine() + "\n";
                matrizmadre2[1, np] = matrizmadre2[1, np] + inciso;
            }


            Console.Write("\n Escriba el numero de respuestas q tendra la pregunta: ");
            Int32 nresp = 0;
            try
            {
                nresp = Int32.Parse(Console.ReadLine());

            }
            catch (FormatException)
            {
                tiposdepreguntas limpiar = new tiposdepreguntas();
                limpiar.lpantalla();
                limpiar.tipo4(matrizmadre2, np, gneresp);
               
            }

            gneresp[np] = nresp;


            Console.WriteLine("\n la configuracion de la pregunta #"+ np2+ " ha terminado");
            Console.ReadKey();
            tiposdepreguntas limpiar2 = new tiposdepreguntas();
            limpiar2.lpantalla();

           

        }

        public void tipo5(string[,] matrizmadre2, int np, int[] gneresp)
        {
            ///este tipo de pregunta es, pregunta de seleccion
            ///multiple con varias respuestas por lo cual puedo
            ///llamar al tipo4
            tiposdepreguntas ir = new tiposdepreguntas();
            ir.tipo4(matrizmadre2, np, gneresp);
            ///& lo otro es leer una pregunta escrita por el
            ///usuario lo cual hare en el namespace3
           


        }
   
    }

    public class confpaso2
    {
        public class limpiarpantalla : mainprincipal.Mainprincipal.apariencia
        {
            public void lpantalla()
            {
                limpiarpantalla limpio = new limpiarpantalla();
                limpio.aparienciapantalla();
               
            }
           
           
           
           
        }

        /// <summary>
        /// Metodo principal de este namespace
        /// </summary>
        public void llenandoencuesta(int[] conftipo2, string[,] matrizmadre2, string[,] matrizdelectura2)
        {

            confpaso2.limpiarpantalla llamada = new limpiarpantalla();
            llamada.lpantalla();


            ////creemos un vector para guardar ahi nresp
            int[] numeresp = new int[conftipo2.Length];


            Console.SetCursorPosition(30, 1); Console.Write("Paso 2/2");
            int a = 0;
            foreach (Int32 i in conftipo2 )
            {

               
                if (i == 1)
                {
                    tiposdepreguntas ir = new tiposdepreguntas();
                    ir.tipo1(matrizmadre2, a);
                }

                if (i == 2)
                {
                    tiposdepreguntas ir = new tiposdepreguntas();
                    ir.tipo2(matrizmadre2, a);
                }

                if (i == 3)
                {
                    tiposdepreguntas ir = new tiposdepreguntas();
                    ir.tipo3(matrizmadre2, a);
                }

                if (i == 4)
                {
                    tiposdepreguntas ir = new tiposdepreguntas();
                    ir.tipo4(matrizmadre2, a, numeresp);
                }

                if (i == 5)
                {
                    tiposdepreguntas ir = new tiposdepreguntas();
                    ir.tipo5(matrizmadre2, a, numeresp);
                }

                a += 1;
               
            }///fin foreach

            llamada.lpantalla();

            Console.WriteLine("La configuracion ha terminado, ahora se generara la encuesta deseada");
            Console.ReadKey();

            ///ahora llamo al namespace3, la encuesta generada
            ///
            encuestar.encuestagenerada mandardatos = new encuestar.encuestagenerada();
            mandardatos.encuesta(conftipo2, matrizmadre2, matrizdelectura2, numeresp);

         }


    }


}

namespace encuestar
{
    public class encuestagenerada :mainprincipal.Mainprincipal.apariencia

    {
       


        public void encuesta(int[] conftipo2, string[,] matrizmadre2, string[,] matrizdelectura2,int[]numeresp)
        {
           ///primero boy a limpiar la pantalla
            encuestagenerada limpiar = new encuestagenerada();
            limpiar.aparienciapantalla();
            int a = 0;
            foreach(int i in conftipo2)
            {
               
                if (i == 1)
                {
                    Console.WriteLine(matrizmadre2[0,a]);
                    Console.WriteLine(matrizmadre2[1,a]);
                    Console.Write("opcion seleccionada: ");
                    string grespuesta = Console.ReadLine();
                    matrizdelectura2[1, a] = grespuesta;
                    limpiar.aparienciapantalla();
                }

                if (i==2)
                {
                    Console.WriteLine(matrizmadre2[0, a]);
                    //Console.WriteLine(matrizmadre2[1, a]);
                    Console.Write("escriba lo q piensa: ");
                    string grespuesta = Console.ReadLine();
                    matrizdelectura2[0, a] = grespuesta;
                    limpiar.aparienciapantalla();

                }

                if (i == 3)
                {
                    Console.WriteLine(matrizmadre2[0, a]);
                    Console.WriteLine(matrizmadre2[1, a]);
                    Console.Write("opcion seleccionada: ");
                    string grespuesta = Console.ReadLine();
                    matrizdelectura2[1, a] = grespuesta;
                    Console.Write("escriba lo q piensa: ");
                    grespuesta = Console.ReadLine();
                    matrizdelectura2[2, a] = grespuesta;
                    limpiar.aparienciapantalla();


                }


                if (i == 4)
                {
                    Console.WriteLine(matrizmadre2[0, a]);
                    Console.WriteLine(matrizmadre2[1, a]);
                    Console.Write("opciones seleccionadas: ");
                    int cd=numeresp[a];
                    for(int b=1;b<=cd; b++)
                    {
                        Console.Write("\n -) ");
                        String gopc= Console.ReadLine();
                        matrizdelectura2[2, a] = matrizdelectura2[2, a]+"\n"+ gopc;
                       

                    }
                    limpiar.aparienciapantalla();
                }

                if (i == 5)
                {
                    Console.WriteLine(matrizmadre2[0, a]);
                    Console.WriteLine(matrizmadre2[1, a]);
                    Console.Write("opciones seleccionadas: ");
                    int cd = numeresp[a];
                    for (int b = 1; b <= cd; b++)
                    {
                        Console.Write("\n -) ");
                        String gopc = Console.ReadLine();
                        matrizdelectura2[2, a] = matrizdelectura2[2, a] + "\n" + gopc;
                       

                    }
                   

                    Console.Write("\n escriba lo q piensa:");
                    string pensamiento = Console.ReadLine();
                    limpiar.aparienciapantalla();
                }



                a += 1;

             
            }
        }
    }

}

namespace mainprincipal
{
    public class Mainprincipal
    {

       public class apariencia
        {
            public void aparienciapantalla ()
            {
                Console.Title = "simulador de encuestas autopersonalizables by clipto";
                Console.Clear();
            }

       
        }

         static void Main()
        {
           
            ////empiezo tomando la apariencia de la pantalla
            apariencia esilopantalla = new apariencia();
            esilopantalla.aparienciapantalla();
           
            //////primero leeo la conf de la encuesta --namespace1
            configuracionpaso1.confipaso1 cfp1 = new configuracionpaso1.confipaso1();
            cfp1.tipodeencuesta();

            esilopantalla.aparienciapantalla();
            Console.WriteLine("Gracias por usar este simulador!!! propiedad de Felix Hernandez");
           

            Console.ReadKey();
        }
    }

}



pagina oficial: http://proyeccionclipto.blogspot.com/

Mr. Crowley

Hola.. muy bien! No es por hacer publicidad (porque ni siquiera conozco a la compania que hace el software), pero hay una aplicacion que sirve para hacer este tipo de encuestas en ambiente web, permite utilizar una base de datos, usuarios, etc.

Andaba buscando algo parecido, ya que ultimamente estoy haciendo encuestas a mis clientes acerca de la calidad de los productos que adquieren; de esta forma me permiten mejorar en muchos aspectos y saber la reputacion de la compania, entre otras cosas. Bueno, en fin... la cosa es que descargue SmartLite WebQuiz XP (no recuerdo de donde), del cual he sacado un par de ideas; espero que a usted tambien le sirva para que pueda mejorar su sistema  ;D

Si no lo encuentra me envia un privado y se lo paso por correo electronico ::)
Mi blog personal: www.calirojas.com