public Clases.Examen insertExamen(Clases.Examen examen) { String cadena = "INSERT INTO Examenes (idTema) VALUES ('" + examen.idTema + "')"; execNonQuery(String cadena); return(examen); }
//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); }
//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); }
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); }
//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); } }
//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); }
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(); }
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."); }
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."); }