1) Crear una base de datos en SQL Server 2005 llamada Examen2
2) Crear una tabla llamada notas en la base Examen2 que tenga la siguiente estructura:
Campo | Tipo |
Carnet | char(7) |
Nombre | varchar(50) |
Asignatura | varchar(50) |
NotaPP | int |
NotaSP | int |
NotaTA | int |
NotaEF | int |
NotaFinal | real |
3) Crear un programa en visual basic 2008 que permita ingresar datos a
la tabla Notas.
4) La nota final se calculará en base a los parámetros de UCYT para los
cursos regulares.
5) El programa también deberá poder consultar las notas de un estudiante
y mostrar su estado (Aprobado o REPROBADo) en la barra de título
6) Se debe validar que las notas no sean menor que 0 ni mayor que 100
Si ingresara un dato en ese rango debe aparecer un mensaje de error
correspondiente.
SOLUCION:
Hay que diseñar un formulario para obtener o mostrar los datos al usuario. El diseño era parte del examen. Todo programador deber diseñar su propio formulario de acuerdo a su creatividad e ingenio. Una solución sencilla podría ser la siguiente:
El proyecto a realizar consta de un formulario. Lo primero que hay que hacer es colocar al inicio del formulario dos líneas que nos permitirán tener acceso a la librería de datos ADO .NET para SQL Server.
Imports System.Data Imports System.Data.SqlClient
Estas líneas se deben colocar al inicio del formulario, antes de la declaración de clase del formulario (Public Class Form1)
Para que nuestro sistema conecte al servidor SQL Server donde creamos la base de datos Examen2 necesitamos crear una cadena de conexión. Es importante en este paso saber que usaremos la cadena de conexión por lo menos en dos puntos del programa y dos procedimientos diferentes, entonces para evitar estar digitando la cadena varias veces, se puede definir después de la declaración de la clase del formulario y antes de cualquier procedimiento.
Public Class Form1 'Declararemos la conexión aquí para que esté visible a todos los procedimientos Dim cn As New SqlConnection("Data source=3PHPB01\SQLEXPRESS;Initial Catalog=Examen2;Integrated Security=true")
El botón Grabar (llamado btnGrabar) es el que hará el proceso de insertar el nuevo registro en la base de datos
Private Sub btnGrabar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGrabar.Click 'Hay que validar las notas If Val(txtNotaPP.Text) < 0 Or Val(txtNotaPP.Text) > 100 Then MessageBox.Show("La nota del primer parcial no esta en el rango establecido...por favor revise") Exit Sub End If If Val(txtNotaSP.Text) < 0 Or Val(txtNotaSP.Text) > 100 Then MessageBox.Show("La nota del segundo parcial no esta en el rango establecido...por favor revise") Exit Sub End If If Val(txtNotaTA.Text) < 0 Or Val(txtNotaTA.Text) > 100 Then MessageBox.Show("La nota del trabajo acumulado no esta en el rango establecido...por favor revise") Exit Sub End If If Val(txtNotaEF.Text) < 0 Or Val(txtNotaEF.Text) > 100 Then MessageBox.Show("La nota del exámen final no esta en el rango establecido...por favor revise") Exit Sub End If 'Calcular la nota final usando la función de usuario CalcularNotaFinal() y colocar el resultado 'en la caja de texto. txtNotaFinal.Text = CalcularNotaFinal() 'Si todo esta bien se sigue con la grabación de los datos Dim sql As String sql = "INSERT INTO Notas " sql &= "(Carnet, Nombre, Asignatura, NotaPP, NotaSP, NotaTA, NotaEF, NotaFinal)" sql &= "VALUES(@Carnet, @Nombre, @Asignatura, @NotaPP, @NotaSP, @NotaTA, @NotaEF, @NotaFinal)" Dim cmd As New SqlCommand(sql, cn) cmd.Parameters.AddWithValue("@Carnet", txtCarnet.Text) cmd.Parameters.AddWithValue("@Nombre", txtNombre.Text) cmd.Parameters.AddWithValue("@Asignatura", txtAsignatura.Text) cmd.Parameters.AddWithValue("@NotaPP", Val(txtNotaPP.Text)) cmd.Parameters.AddWithValue("@NotaSP", Val(txtNotaSP.Text)) cmd.Parameters.AddWithValue("@NotaTA", Val(txtNotaTA.Text)) cmd.Parameters.AddWithValue("@NotaEF", Val(txtNotaEF.Text)) cmd.Parameters.AddWithValue("@NotaFinal", CalcularNotaFinal()) cn.Open() Dim i As Integer = cmd.ExecuteNonQuery() If i > 0 Then MessageBox.Show("Registro grabado...") Else MessageBox.Show("No se pudo guardar el registro...") End If cn.Close() End Sub
Comentando un poco el código, hemos hecho inicialmente la validación de las cajas de texto que corresponden a las notas para garantizar que estas no sean ni menor que 0 ni mayor que 100. La validación se puede hacer de diferentes maneras, la que se presenta no es la mejor pero la más simple. Nótese que el código se puede copiar cuatro veces solo cambiando el control de texto correspondiente. La función VAL convierte una expresión en un número. Se recomienda usar la funciones Convert (Ej. Convert.ToInt32(txtNotaPP.Text))
Si revisan el código, hemos utilizado una función llamada CalcularNotaFinal que calcula la nota final del estudiante en base a lo que hemos digitado en las cajas de texto. El uso de funciones simplifican el código que se escribe y lo deja más legible. La función es la siguiente:
Private Function CalcularNotaFinal() As Integer Dim npp, nsp, nta, nef As Integer npp = Val(txtNotaPP.Text) nsp = Val(txtNotaSP.Text) nta = Val(txtNotaTA.Text) nef = Val(txtNotaEF.Text) Dim notafinal As Integer notafinal = npp * 0.2 + nsp * 0.2 + nta * 0.2 + nef * 0.4 Return notafinal End Function
Finalmente en el botón con los tres puntos (btnBuscar) hacemos la búsqueda del carnet del estudiante y mostramos los datos. Se evalúa la nota final y se coloca en la barra de titulo el estado del estudiante (APROBADO o REPROBADO)
Private Sub btnBuscar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBuscar.Click 'Validemos que ya hemos colocado un código de carnet If txtCarnet.Text = "" Then MessageBox.Show("No se ha digitado el código de carnet") Exit Sub End If Dim cmd As New SqlCommand("SELECT * FROM Notas WHERE Carnet = @Carnet", cn) cmd.Parameters.AddWithValue("@Carnet", txtCarnet.Text) cn.Open() Dim dr As SqlDataReader = cmd.ExecuteReader() If dr.Read() Then txtNombre.Text = dr("Nombre") txtAsignatura.Text = dr("Asignatura") txtNotaPP.Text = dr("NotaPP") txtNotaSP.Text = dr("NotaSP") txtNotaTA.Text = dr("NotaTA") txtNotaEF.Text = dr("NotaEF") txtNotaFinal.Text = dr("NotaFinal") 'Colocar el estado de la nota en la barra de titulo If Val(txtNotaFinal.Text) >= 70 Then Me.Text = "Alumno : " & txtNombre.Text & " esta APROBADO " Else Me.Text = "Alumno : " & txtNombre.Text & " esta REPROBADO " End If Else MessageBox.Show("El carnet " & txtCarnet.Text & " no tiene notas registradas") End If cn.Close() End Sub
Y eso es todo. El programa completo lo pueden bajar en el siguiente enlace para que lo tengan. Es probable que lo usemos en clase.
Proyecto Completo en VB 2008
Script para crear la base de datos
El script para crear la base de datos Ejercicio2 es un archivo con las instrucciones para crear la BD. Solo se requiere abrir en el SQL Management Studio (consola de SQL Server) y ejecutarlo. No se preocupe si la base no aparecer, solo vaya al objeto Databases y con el botón derecho seleccione Refresh.
Hasta pronto.
No hay comentarios:
Publicar un comentario