コード例 #1
0
ファイル: DAORepo.cs プロジェクト: acepeda1310/Examinator
        public Clases.Examen insertExamen(Clases.Examen examen)
        {
            String cadena = "INSERT INTO Examenes (idTema) VALUES ('" + examen.idTema + "')";

            execNonQuery(String cadena);
            return(examen);
        }
コード例 #2
0
        //Devuelve un examen a partir de una ID
        public Clases.Examen getExamen(int idExamen)
        {
            Clases.Examen examen;
            int           idTema;
            int           numPreguntas;
            int           numRespuestas;

            String cadena = "SELECT idTema " +
                            "FROM Examenes " +
                            "WHERE idExamen IS (" + idExamen + ")";

            idTema = this.execQueryInt(cadena);

            cadena = "SELECT numPreguntas " +
                     "FROM Examenes " +
                     "WHERE idExamen IS (" + idExamen + ")";
            numPreguntas = this.execQueryInt(cadena);

            cadena = "SELECT numRespuestas " +
                     "FROM Examenes " +
                     "WHERE idExamen IS (" + idExamen + ")";
            numRespuestas = this.execQueryInt(cadena);

            examen = new Clases.Examen(idTema, numPreguntas, numRespuestas);
            return(examen);
        }
コード例 #3
0
        //Actualiza la tabla con la relación entre los exámenes y las notas (No implementado aún)
        protected void updateRelacionExamenNota(Clases.Examen examen, Clases.Nota nota)
        {
            String cadena = "INSERT " +
                            "INTO Examenes_Notas (idExamen, idNota) " +
                            "VALUES ('" + examen.getIdExamen() + "', '" + nota.getIdNota() + "')";

            this.execNonQuery(cadena);
        }
コード例 #4
0
ファイル: FExamenes.cs プロジェクト: Myrkul/Examinator
        private void btnImprimir_Click(object sender, EventArgs e)
        {
            int idExamen = Convert.ToInt32(tablaExamenes.SelectedRows[0].Cells[0].Value);

            Clases.Examen examen = examenNotaDAO.getExamen(idExamen);
            examen.setIdExamen(idExamen);
            Utils.Generar.generarPDF(examen);
        }
コード例 #5
0
 //Actualiza la tabla con la relación entre los exámenes y las preguntas
 private void updateRelacionExamenPreguntas(Clases.Examen examen, List <int> preguntas)
 {
     for (int k = 0; k < preguntas.Count; k++)
     {
         String cadena = "INSERT " +
                         "INTO Examenes_Preguntas (idExamen, idPregunta) " +
                         "VALUES('" + examen.getIdExamen() + "', '" + preguntas[k] + "')";
         this.execNonQuery(cadena);
     }
 }
コード例 #6
0
        //Inserta un examen
        public Clases.Examen insertExamen(Clases.Examen examen, List <int> preguntas, int numPreguntas, int numRespuestas)
        {
            String cadena = "INSERT " +
                            "INTO Examenes (idTema, numPreguntas, numRespuestas) " +
                            "VALUES ('" + examen.getIdTema() + "', '" + numPreguntas + "', '" + numRespuestas + "')";

            execNonQuery(cadena);
            examen.setIdExamen(this.findLastID());
            this.updateRelacionExamenPreguntas(examen, preguntas);
            return(examen);
        }
コード例 #7
0
        public static void generarPDF(Clases.Examen examen)
        {
            DAO.PreguntaRespuesta_DAO preguntaRespuestaDAO = new DAO.PreguntaRespuesta_DAO();
            DAO.Tema_DAO       temaDAO       = new DAO.Tema_DAO();
            DAO.Asignatura_DAO asignaturaDAO = new DAO.Asignatura_DAO();

            List <int> listaPreguntas   = preguntaRespuestaDAO.getPreguntasExamen(examen.getIdExamen());
            String     nombreTema       = temaDAO.findTemaById(examen.getIdTema());
            String     nombreAsignatura = asignaturaDAO.findAsignaturaByTema(examen.getIdTema());
            int        numRespuestas    = examen.getNumRespuestas();

            Document  doc    = new Document(PageSize.LETTER);
            PdfWriter writer = null;

            //Se pregunta por la ruta de guardado
            using (SaveFileDialog dialog = new SaveFileDialog())
            {
                dialog.Filter           = "Archivos PDF (*.pdf)|*.pdf";
                dialog.FilterIndex      = 2;
                dialog.RestoreDirectory = true;

                if (dialog.ShowDialog() == DialogResult.OK)
                {
                    writer = PdfWriter.GetInstance(doc,
                                                   new FileStream(dialog.FileName, FileMode.Create));
                }
            }

            //Título del PDF
            doc.AddTitle("Examen tema: " + nombreTema);

            doc.Open();

            //Fuente por defecto
            iTextSharp.text.Font _standardFont = new iTextSharp.text.Font(iTextSharp.text.Font.FontFamily.HELVETICA, 8, iTextSharp.text.Font.NORMAL, BaseColor.BLACK);

            //Cabecera del examen
            doc.Add(new Paragraph(nombreAsignatura));
            doc.Add(new Paragraph("Examen tema: " + nombreTema));
            doc.Add(Chunk.NEWLINE);
            doc.Add(new Paragraph("Nombre: "));
            doc.Add(Chunk.NEWLINE);

            List <String> listaEnunciados = new List <String>();

            //Se crea la tabla donde se pintarán las preguntas y las respuestas

            PdfPTable tblPrueba = new PdfPTable(2); //Tabla con dos columnas

            PdfPCell clPreguntas = new PdfPCell();

            PdfPCell clRespuestas = new PdfPCell();

            for (int k = 0; k < listaPreguntas.Count; k++)
            {
                //Se guardan los enunciados de las preguntas
                listaEnunciados.Add(preguntaRespuestaDAO.findPreguntaById(listaPreguntas[k]));
            }

            Random rng = new Random();

            for (int k = 0; k < listaPreguntas.Count; k++)
            {
                //Se añaden los enunciados a la celda de las preguntas
                clPreguntas             = new PdfPCell(new Phrase(listaEnunciados[k], _standardFont));
                clPreguntas.BorderWidth = 0;
                tblPrueba.AddCell(clPreguntas);

                //Se guardan las respuestas de la pregunta en orden aleatorio
                List <int> listaRespuestas = preguntaRespuestaDAO.getRespuestasPregunta(listaPreguntas[k], numRespuestas);
                barajar(listaRespuestas, rng);

                //Se añaden las respuestas a la celda como una sola cadena
                String cadenaRespuestas = "";
                for (int i = 0; i < listaRespuestas.Count; i++)
                {
                    cadenaRespuestas += preguntaRespuestaDAO.findRespuestaById(listaRespuestas[i]) + "\n\n\n";
                }
                clRespuestas             = new PdfPCell(new Phrase(cadenaRespuestas, _standardFont));
                clRespuestas.BorderWidth = 0;
                tblPrueba.AddCell(clRespuestas);
            }

            doc.Add(tblPrueba);
            doc.Close();
            writer.Close();
        }
コード例 #8
0
ファイル: FGenerar.cs プロジェクト: Myrkul/Examinator
        private void btnGenerar_Click(object sender, EventArgs e)
        {
            int        numPreguntas;
            int        numRespuestas;
            int        valorPreguntaAcertada;
            int        valorPreguntaFallada;
            int        valorPreguntaVacia;
            List <int> listaPreguntasTotales   = new List <int>();
            List <int> listaPreguntasEscogidas = new List <int>();

            //Control de entrada
            if (comboAsignatura.SelectedIndex == -1)
            {
                MessageBox.Show("Debes seleccionar la asignatura.");
                return;
            }
            if (tNumero.Text.Equals("") || tNumero.Text.Equals("0"))
            {
                MessageBox.Show("Introduzca el número de preguntas.");
                return;
            }
            try
            {
                numPreguntas          = Convert.ToInt32(tNumero.Text);
                valorPreguntaAcertada = 10 / numPreguntas;
            }
            catch
            {
                MessageBox.Show("Introduzca un número válido de preguntas.");
                return;
            }
            try
            {
                numRespuestas = Convert.ToInt32(tNumRespuestas.Text);
            }
            catch
            {
                MessageBox.Show("Introduzca un número válido de respuestas.");
                return;
            }
            try
            {
                valorPreguntaVacia = 1 / Convert.ToInt32(tVacias.Text);
            }
            catch (DivideByZeroException)
            {
                valorPreguntaVacia = 0;
            }
            catch
            {
                MessageBox.Show("Introduzca un valor válido.");
                return;
            }
            try
            {
                valorPreguntaFallada = 1 / Convert.ToInt32(tIncorrectas.Text);
            }
            catch (DivideByZeroException)
            {
                valorPreguntaFallada = 0;
            }
            catch
            {
                MessageBox.Show("Introduzca un valor válido.");
                return;
            }

            String tema = comboTema.SelectedItem.ToString();

            listaPreguntasTotales = preguntaRespuestaDAO.getPreguntas(temaDAO.findTemaByName(tema), numRespuestas);

            if (numPreguntas > listaPreguntasTotales.Count)
            {
                MessageBox.Show("No hay tantas preguntas guardadas.");
                return;
            }

            //Se randomiza el orden de las respuestas
            Random rnd = new Random();
            int    k   = 0;

            do
            {
                int indice = rnd.Next(1, listaPreguntasTotales.Count);
                if (!listaPreguntasEscogidas.Contains(listaPreguntasTotales [indice - 1]))
                {
                    listaPreguntasEscogidas.Add(listaPreguntasTotales [indice - 1]);
                    k++;
                }
            } while(numPreguntas > k);
            //Se inserta el examen y se genera el PDF
            Clases.Examen examen = new Clases.Examen(temaDAO.findTemaByName(tema), numPreguntas, numRespuestas);
            examen = examenNotaDAO.insertExamen(examen, listaPreguntasEscogidas, numPreguntas, numRespuestas);
            Utils.Generar.generarPDF(examen);
            MessageBox.Show("Generado.");
        }
コード例 #9
0
ファイル: FGenerar.cs プロジェクト: acepeda1310/Examinator
        private void btnGenerar_Click(object sender, EventArgs e)
        {
            int        numPreguntas;
            int        valorPreguntaAcertada;
            int        valorPreguntaFallada;
            int        valorPreguntaVacia;
            List <int> listaPreguntasTotales   = new List <int>();
            List <int> listaPreguntasEscogidas = new List <int>();

            if (comboAsignatura.SelectedIndex == -1)
            {
                MessageBox.Show("Debes seleccionar la asignatura.");
                return;
            }

            /*         if (comboTema.SelectedIndex == -1)
             *       {
             *           MessageBox.Show("Debes seleccionar el tema.");
             *           return;
             *       }*/
            if (tNumero.Text.Equals("") || tNumero.Text.Equals("0"))
            {
                MessageBox.Show("Introduzca el número de preguntas.");
                return;
            }
            try
            {
                numPreguntas          = Convert.ToInt32(tNumero.Text);
                valorPreguntaAcertada = 10 / numPreguntas;
            }
            catch
            {
                MessageBox.Show("Introduzca un número válido de preguntas.");
                return;
            }
            try
            {
                valorPreguntaVacia = 1 / Convert.ToInt32(tVacias.Text);
            }
            catch (DivideByZeroException a)
            {
                valorPreguntaVacia = 0;
            }
            catch
            {
                MessageBox.Show("Introduzca un valor válido.");
                return;
            }
            try
            {
                valorPreguntaFallada = 1 / Convert.ToInt32(tIncorrectas.Text);
            }
            catch (DivideByZeroException a)
            {
                valorPreguntaFallada = 0;
            }
            catch
            {
                MessageBox.Show("Introduzca un valor válido.");
                return;
            }

            String asignatura = comboAsignatura.SelectedItem.ToString();
            String tema       = comboTema.SelectedItem.ToString();

            listaPreguntasTotales = repo.getPreguntas(asignatura, tema);

            if (numPreguntas > listaPreguntasTotales.Count)
            {
                MessageBox.Show("No hay tantas preguntas guardadas.");
                return;
            }
            Random rnd = new Random();

            for (int i = 0; i < listaPreguntasTotales.Count; i++)
            {
                int indice = rnd.Next(1, listaPreguntasTotales.Count);
                listaPreguntasEscogidas.Add(listaPreguntasTotales[indice - 1]);
            }
            Clases.Examen examen = new Clases.Examen(repo.findTemaByName(tema));
            examen = repo.insertExamen(examen);
            MessageBox.Show("Generado.");
        }