UNIVERSIDAD FEMENINA DEL SAGRADO CORAZÓN FACULTAD DE INGENIERIA DE SISTEMAS Curso : Taller de Computación Tema : “Eventos y Arreglos” Profesora : Gladys Hortencia, Garcia Vilcapoma Alumnas: Pastor Humpiri, Fanny Rosana 2006-1 Problema 1: Construir un problema usando eventos Los eventos usados en este problema son: TextChanged, LostFocus, GotFocus, Load, MouseEnter, MouseDown, MouseLeave. Imports System.Drawing.Image Public Class Form1 Inherits System.Windows.Forms.Form Const pi = 3.1416 Private Sub TxtMasa_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TxtMasa.TextChanged Me.TxtDensidad.Text = (Val(Me.TxtMasa.Text)) / (pi * (Val(Me.TxtDiam.Text) / 2) ^ 2 * Val(Me.TxtLong.Text)) End Sub Private Sub TxtDiam_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TxtDiam.TextChanged Me.TxtDensidad.Text = Math.Round((Val(Me.TxtMasa.Text)) / (pi * (Val(Me.TxtDiam.Text) / 2) ^ 2 * Val(Me.TxtLong.Text))) End Sub Private Sub TxtLong_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TxtLong.TextChanged Me.TxtDensidad.Text = Math.Round((Val(Me.TxtMasa.Text)) / (pi * (Val(Me.TxtDiam.Text) / 2) ^ 2 * Val(Me.TxtLong.Text))) End Sub Private Sub TxtDensidad_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TxtDensidad.LostFocus Me.BackColor = Color.Empty End Sub Private Sub TxtDensidad_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TxtDensidad.GotFocus Me.BackColor = Color.Beige End Sub Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Me.BackColor = Color.Aqua End Sub Private Sub Form1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseDown Me.BackColor = Color.Chocolate End Sub Private Sub BtnAlum_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) Handles BtnAlum.MouseEnter Me.TxtMasa.Text = 51.5 Me.TxtDiam.Text = 2.52 Me.TxtLong.Text = 3.75 Me.TxtDensidad.Text = 3 End Sub Private Sub BtnCobre_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) Handles BtnCobre.MouseEnter Me.TxtMasa.Text = 56.3 Me.TxtDiam.Text = 1.23 Me.TxtLong.Text = 5.06 Me.TxtDensidad.Text = 9 End Sub Private Sub BtnEst_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) Handles BtnEst.MouseEnter Me.TxtMasa.Text = 69.1 Me.TxtDiam.Text = 1.75 Me.TxtLong.Text = 3.74 Me.TxtDensidad.Text = 8 End Sub Private Sub TxtDensidad_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TxtDensidad.TextChanged If Val(TxtDensidad.Text) = 3 Then Me.PicSustancia.Image = FromFile(Application.StartupPath & "\" & "aluminio.jpg") ElseIf Val(TxtDensidad.Text) = 9 Then Me.PicSustancia.Image = FromFile(Application.StartupPath & "\" & "cobre.jpg") ElseIf Val(TxtDensidad.Text) = 8 Then Me.PicSustancia.Image = FromFile(Application.StartupPath & "\" & "estaño.jpg") End If End Sub Private Sub BtnAlum_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs) Handles BtnAlum.MouseLeave Me.PicSustancia.Image = Nothing End Sub Private Sub BtnCobre_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs) Handles BtnCobre.MouseLeave Me.PicSustancia.Image = Nothing End Sub Private Sub BtnEst_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs) Handles BtnEst.MouseLeave Me.PicSustancia.Image = Nothing End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Me.TxtMasa.Clear() Me.TxtDiam.Clear() Me.TxtLong.Clear() Me.TxtDensidad.Clear() End Sub End Class Problema 2. En una biblioteca de una Universidad, se registran los libros por codigo, titulo, autor, area, canlibros, editorial y Año de Edición. Calcular el total de libros. Mostrar los nombres de las areas que tienen menos libros. Obtenga los codigos y titulos de los libros que tienen más de 10 años de antigüedad. Mostrar en orden creciente según autor. Actualizar la cantidad de libros. Public Class Form1 Inherits System.Windows.Forms.Form Dim Codigo() As Integer = {1, 2, 3, 4, 5, 6} Dim Titulo() As String = {"Filosofia", "Ecologia", "Biologia", "Geometria Analitica", "Psicologia", "Java"} Dim Autor() As String = {"Stepman", "Chester", "Gubman", "Lehman", "Downsted", "Wess"} Dim Area() As String = {"Humanidades", "Humanidades", "Ciencias", "Ciencias", "Ciencias", "Ciencias"} Dim AEdicion() As Integer = {1996, 2000, 2003, 2001, 1979, 1995} Dim CanLibros(6) As Integer Dim i, Total, conth, contc As Integer Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load conth = 0 contc = 0 For i = 0 To Codigo.Length - 1 ListBox1.Items.Add(Codigo(i)) ListBox2.Items.Add(Titulo(i)) ListBox3.Items.Add(Autor(i)) ListBox4.Items.Add(Area(i)) If Area(i) = "Humanidades" Then conth = conth + 1 ElseIf Area(i) = "Ciencias" Then contc = contc + 1 End If ListBox6.Items.Add(AEdicion(i)) Next Me.TxtHuman.Text = conth Me.TxtCiencias.Text = contc End Sub Private Sub BtnIngresar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnIngresar.Click Total = 0 For i = 0 To Codigo.Length - 1 Step 1 CanLibros(i) = Val(InputBox("Ingresando Cantidad de libros" & i + 1 & ":")) Me.ListBox5.Items.Add(CanLibros(i)) Total = Total + CanLibros(i) Next i Me.TxtTotal.Text = Total End Sub Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click Me.Close() End Sub Private Sub BtnLimpiar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnLimpiar.Click Me.ListBox5.Items.Clear() Me.TxtTotal.Clear() End Sub Private Sub BtnAutor_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnAutor.Click Me.ListBox1.Items.Clear() Me.ListBox2.Items.Clear() Me.ListBox3.Items.Clear() Me.ListBox4.Items.Clear() Me.ListBox5.Items.Clear() Me.ListBox6.Items.Clear() Dim i, j, k As Integer Dim aux As Integer Dim auxn As String For k = 0 To Codigo.Length - 2 For j = 0 To Codigo.Length - 2 - k If Autor(j) > Autor(j + 1) Then aux = Codigo(j) Codigo(j) = Codigo(j + 1) Codigo(j + 1) = aux auxn = Titulo(j) Titulo(j) = Titulo(j + 1) Titulo(j + 1) = auxn auxn = Autor(j) Autor(j) = Autor(j + 1) Autor(j + 1) = auxn auxn = Area(j) Area(j) = Area(j + 1) Area(j + 1) = auxn aux = CanLibros(j) CanLibros(j) = CanLibros(j + 1) CanLibros(j + 1) = aux aux = AEdicion(j) AEdicion(j) = AEdicion(j + 1) AEdicion(j + 1) = aux End If Next Next For i = 0 To Codigo.Length - 1 ListBox1.Items.Add(Codigo(i)) ListBox2.Items.Add(Titulo(i)) ListBox3.Items.Add(Autor(i)) ListBox4.Items.Add(Area(i)) ListBox5.Items.Add(CanLibros(i)) ListBox6.Items.Add(AEdicion(i)) Next End Sub Private Sub btnAnt_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAnt.Click Dim dif As Integer Const año = 2006 For i = 0 To Codigo.Length - 1 dif = año - AEdicion(i) If dif >= 10 Then ListBox7.Items.Add(Autor(i)) ListBox8.Items.Add(Titulo(i)) End If Next End Sub End Class Problema 3: Los Resultados de las últimas elecciones a alcalde en el pueblo x han sido los siguientes: Distrito Candidato Candidato Candidato Candidato A B C D 1 194 48 206 45 2 180 20 320 16 3 221 90 140 20 4 432 50 821 14 5 820 61 946 18 Escribir un programa que haga las siguientes tareas: a) Imprimir la tabla anterior con cabeceras incluidas b) Calcular e imprimir el número total de votos recibidos por cada candidato y el porcentaje del total de votos emitidos. Asimismo, visualizar el candidato más votado. c) Si algún candidato recibe más del 50 por 100 de los votos, el programa imprimirá un mensaje declarándolo ganador d) Si ningún candidato recibe más del 50 por 100 de los votos el programa debe imprimir el nombre de los dos candidatos más votados, que serán los que pasen a la segunda ronda de las elecciones. Public Class Form1 Inherits System.Windows.Forms.Form Dim distrito() As Integer = {1, 2, 3, 4, 5} Dim A() As Integer = {194, 180, 221, 432, 820} Dim B() As Integer = {48, 20, 90, 50, 61} Dim C() As Integer = {206, 320, 140, 821, 946} Dim D() As Integer = {45, 16, 20, 14, 18} Dim i, conta, contb, contc, contd As Integer Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load For i = 0 To distrito.Length - 1 ListBox1.Items.Add(distrito(i)) ListBox2.Items.Add(A(i)) ListBox3.Items.Add(B(i)) ListBox4.Items.Add(C(i)) ListBox5.Items.Add(D(i)) Next End Sub Private Sub BtnCalcular_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnCalcular.Click conta = 0 contb = 0 contc = 0 contd = 0 Dim total As Integer Dim cinc As Single For i = 0 To distrito.Length - 1 conta = conta + A(i) contb = contb + B(i) contc = contc + C(i) contd = contd + D(i) Next Me.TxtTotA.Text = conta Me.TxtTotB.Text = contb Me.TxtTotC.Text = contc Me.TxtTotD.Text = contd total = conta + contb + contc + contd cinc = total * 0.5 If conta > cinc And contb > cinc And contc > cinc And contd > cinc Then Me.LblMostrar.Text = "HABRA NUEVAS ELECCIONES" End If If conta > cinc And contb > cinc Then Me.LblMostrar.Text = "CANDIDATO A y CANDIDATO B PASAN A SEGUNDA VUELTA" End If If conta > cinc And contc > cinc Then Me.LblMostrar.Text = "CANDIDATO A y CANDIDATO C PASAN A SEGUNDA VUELTA" End If If conta > cinc And contd > cinc Then Me.LblMostrar.Text = "CANDIDATO A y CANDIDATO D PASAN A SEGUNDA VUELTA" End If If contb > cinc And contc > cinc Then Me.LblMostrar.Text = "CANDIDATO B y CANDIDATO C PASAN A SEGUNDA VUELTA" End If If contb > cinc And contd > cinc Then Me.LblMostrar.Text = "CANDIDATO B y CANDIDATO D PASAN A SEGUNDA VUELTA" End If If contc > cinc And contd > cinc Then Me.LblMostrar.Text = "CANDIDATO C y CANDIDATO D PASAN A SEGUNDA VUELTA" End If If conta > cinc Then Me.LblMostrar.Text = "CANDIDATO A GANADOR DE LAS ELECCIONES" ElseIf contb > cinc Then Me.LblMostrar.Text = "CANDIDATO B GANADOR DE LAS ELECCIONES" ElseIf contc > cinc Then Me.LblMostrar.Text = "CANDIDATO C GANADOR DE LAS ELECCIONES" ElseIf contd > cinc Then Me.LblMostrar.Text = "CANDIDATO D GANADOR DE LAS ELECCIONES" Else Me.LblMostrar.Text = "HABRA NUEVAS ELECCIONES" End If End Sub Private Sub BtnSalir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnSalir.Click Me.Close() End Sub End Class SEGUNDA PARTE DEL TRABAJO Enunciado: Hacer una aplicación para transporte terrestre, donde se seleccione una ruta de pasaje, y muestre el destino y el origen, y se pueda escoger si es Pasaje o encomienda, ademas la cantidad a seleccionar por un combobox. Y el Precio de venta total, sera la cantidad por el precio. Dim PKG, PBOL As Single Private Sub RadioButton1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RB1.CheckedChanged LBUNI.Text = "BOLETO" LBPRE.Text = PBOL.ToString End Sub ‘ Si selecciona pasaje, entonces el textbox unidad, mostrara “boleto” y en el textbox precio mostrara el ‘precio del boleto. ToString convierte a cadena el numero que esta en PBOL Private Sub RB2_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RB2.CheckedChanged LBUNI.Text = "KILOGRAMOS" LBPRE.Text = PKG.ToString End Sub ‘ Si selecciona pasaje, entonces el textbox unidad, mostrara “kilogramos” y en el textbox precio mostrara el ‘precio del boleto. Private Sub LB1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LB1.SelectedIndexChanged Dim I As Integer I = LB1.SelectedIndex + 1 Select Case I Case 1, 2, 4, 9 PBOL = 80 : PKG = 5 : LBOR.Text = "LIMA" : LBDES.Text = "TACNA" Case 3, 6 PBOL = 70 : PKG = 4.5 : LBOR.Text = "LIMA" : LBDES.Text = "TUMBES" Case 5, 7 PBOL = 90 : PKG = 5.5 : LBOR.Text = "LIMA" : LBDES.Text = "PUNO" Case 8, 10 PBOL = 30 : PKG = 3 : LBOR.Text = "LIMA" : LBDES.Text = "ICA" End Select End Sub ‘ da valores a pbol, que es el precio de boleto, pkg precio en kilogramos, y lbor que es origen y lbdes que es destino Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged Dim CAN As Integer CAN = Val(ComboBox1.Text) LBVEN.Text = Val(LBPRE.Text) * CAN End Sub Problema: Hacer una aplicacion de una tienda de artefactos, donde se seleccione mediante una lista los artefactos, y salga el precio al contado, al credito y un obsequio. Luego seleccionando a cuantos meses desea pagar, calcule la cuota inicial, el saldo y la cuota mensual. Dim PRECIO() As Single = {300, 450, 700, 850, 900, 1500, 200} Private Sub LB1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LB1.SelectedIndexChanged Dim I As Integer I = LB1.SelectedIndex Select Case PRECIO(I) Case 100 To 300 LBO.Text = "CUCHILLO ELECTRICO" Me.LblPCre.Text = 400 Case 301 To 600 LBO.Text = "WODMAN PHILIPS" Me.LblPCre.Text = 700 Case 601 To 1000 LBO.Text = "TOSTADORA" Me.LblPCre.Text = 1200 Case 1001 To 1600 LBO.Text = "RADIO CASETERA" Me.LblPCre.Text = 1800 Case 1600 To 1800 LBO.Text = "SECADORA" Me.LblPCre.Text = 1900 End Select LBPREA.Text = PRECIO(I).ToString End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click If Me.rbn6.Checked Then Me.LblCuoIni.Text = Me.LblPCre.Text * 0.5 ElseIf Me.rbn12.Checked Then Me.LblCuoIni.Text = Me.LblPCre.Text * 0.4 Else Me.LblCuoIni.Text = Me.LblPCre.Text * 0.3 End If Me.LblSaldo.Text = Me.LblPCre.Text - Me.LblCuoIni.Text If Me.rbn6.Checked Then Me.LblCuoMen.Text = Me.LblSaldo.Text / 6 ElseIf Me.rbn12.Checked Then Me.LblCuoMen.Text = Me.LblSaldo.Text / 12 Else Me.LblCuoMen.Text = Me.LblSaldo.Text / 18 End If End Sub Problema: Presentar una aplicación donde se muestre la hora actual, el dia de hoy, el mes actual, la hora actual, usando las propiedades: now, today, today.tolongdatestring, today.day, today.dayofweek, Today.DayOfWeek.ToString, TimeOfDay Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 'LA PROPIEDAD NOW NOS DEVUELVE LA FECHA ACTUAL. Y la hora 'ESTA PROPIEDAD PERTENECE A LA ESTRUCTURA DE DATETIME TextBox1.Text = Now End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click TextBox2.Text = Today ‘Devuelve solo la fecha: dia/mes/año en numero End Sub Private Sub Button3_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button3.Click TextBox3.Text = Today.ToLongDateString ‘Devuelve la fecha actual pero en letras ejemplo: Viernes, 26 de Mayo ‘ de 2006 End Sub Private Sub Button4_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button4.Click TextBox4.Text = Today.Day ‘ solo muestra el dia de hoy, en numero. End Sub Private Sub Button5_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button5.Click TextBox5.Text = Today.DayOfWeek ‘ muestra el mes de hoy, en numero End Sub Private Sub Button6_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button6.Click TextBox6.Text = Today.DayOfWeek.ToString ‘ muestra el dia de la semana, de hoy en cadena End Sub Private Sub Button7_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button7.Click 'HACE QUE TE MUESTRE LA HORA TextBox7.Text = TimeOfDay End Sub Problema: Crear una aplicación, donde ingresando su dni, y seleccionando si es persona normal o juridica, aparezca su número de RUC. Private Sub BTNGENERAR_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BTNGENERAR.Click Dim RUC, ELE, CAR As String Dim A, R, SM As Integer 'ELE toma el valor de la caja de texto ELE = TXTEL.Text 'Si se ha elegido un tipo If RBJ.Checked Then RUC = "12" ElseIf RBN.Checked Then RUC = "10" Else MsgBox("ELIJA UN TIPO") End If 'Concatena ELE con el RUC por la izquierda RUC = RUC & ELE SM = 0 'Suma los digitos de la ELE For A = 1 To Len(ELE) CAR = Mid(ELE, A, 1) SM = SM + Val(CAR) Next 'Coge el resto de dividir entre 10 R = SM Mod 10 'Concatena por la derecha con el digito R RUC = RUC & R LBRUC.Text = RUC End Sub 'valida elnumero ingresado por teclado Private Sub TXTEL_Validated(ByVal sender As Object, ByVal e As System.EventArgs) Handles TXTEL.Validated ' si el text de TxtEL no es numerico o su longitud es diferente de 8 If Not IsNumeric(TXTEL.Text) Or Len(TXTEL.Text) <> 8 Then MsgBox("INGRESE SOLO # Y LONGITUD 8") ' selecciona una porcion de texto TXTEL.Select() End If End Sub Problema: Crear una aplicacion donde se ingrese nombre y apellidos materno y paterno, y genera el numero de registro del carnet de asegurado Dim NUMERO As Integer Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BTNACEPTAR.Click Dim FE As Date Dim CAD1, CAD2, CAD3, CAD4, CAD, SEXO, APP, AMM, NOM As String Dim D, M, Y As Integer 'Lo convierte a Fecha FE = CDate(TextBox4.Text) 'Establece el formato asi Año/Mes/Dia CAD = Format(FE, "yyMMdd") ‘Format establece valor de una cadena a una variable If RBM.Checked Then SEXO = "1" End If If RBF.Checked Then SEXO = "0" End If NOM = TextBox1.Text If Len(NOM) >= 4 Then ‘ len es la longitud de la cadena CAD3 = Mid(NOM, 1, 1) & Mid(NOM, 4, 1) Else CAD3 = Mid(NOM, 1, 1) & Mid(NOM, 2, 1) End If AMM = TextBox3.Text If Len(AMM) >= 4 Then CAD2 = Mid(AMM, 1, 1) & Mid(AMM, 4, 1) Else ‘ Mid pasa a una variable los valores de cadena recortados CAD2 = Mid(AMM, 1, 1) & Mid(AMM, 2, 1) End If APP = TextBox2.Text If Len(APP) >= 4 Then CAD1 = Mid(APP, 1, 1) & Mid(APP, 4, 1) Else CAD1 = Mid(APP, 1, 1) & Mid(APP, 2, 1) End If ' CAD4 = Format(NUMERO, "000") LBSEG.Text = UCase(CAD & SEXO & CAD1 & CAD2 & CAD3 & "000") ‘ UCase convierte a mayuscula lo que esta en minusculas End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BTNUEVO.Click NUMERO = NUMERO + 1 Label7.Text = Format(NUMERO, "000") End Sub