Estructura de datos y algoritmos
GENERADOR DE LABERINTOS
Pequeño programa que a través de 5 clases crea y resuelve laberintos.
Funciona de la siguiente manera, primeramente, se crea una clase, con geters y seters a la cual llame TuTipo, esta clase nos servirá para guardar un posicionamiento, que está en base a una retícula imaginaria, que nos servirá para crear los laberintos.
package TercerSemestre.EstructurasDinamicas.ExamenLaberinto; /** * * * @author (David Lázaro) * @version (1.0 / 11/09/2017) */ public class TuTipo { private int fila; private int columna; public TuTipo(int f, int c) { // initialise instance variables fila = f; columna = c; } public int getF(){ return fila; } public int getC(){ return columna; } public void setF(int f){ fila=f; } public void setC(int c){ columna=c; } }
La Siguiente clase es Crealaberinto, que es la que contiene la lógica detrás de las paredes y caminos de el laberinto, y el algoritmo para generarlos de manera aleatoria.
package TercerSemestre.EstructurasDinamicas.ExamenLaberinto; /** * * * @author (David Lázaro) * @version (1.0 / 11/09/2017) */ import java.util.Scanner; import java.util.Vector; public class CreaLaberinto { static int [][] laberinto; public void main(int n) { laberinto = new int [n][n]; //vector que almacena las pociciones iniciales de los numero 3 Vector <TuTipo> L3s = new Vector <TuTipo> (); int fpa=0; int cpa=0; TuTipo posActual = new TuTipo(fpa,cpa); //Ciclo para poner los 3 for(int i=1 ; i<laberinto.length ; i +=2){ for(int j=1 ; j<laberinto[0].length ; j+=2){ laberinto[i][j]=3; fpa=i; cpa=j; L3s.add(new TuTipo (fpa,cpa)); } } int posInicioC = (int)(Math.random()*L3s.size()); Vector <TuTipo> L2s = new Vector <TuTipo> (); Vector <TuTipo> L1s = new Vector <TuTipo> (); L2s.add(L3s.get(posInicioC)); //CICLO PARA CHACAR LAS POCICIONES ALREDEDOR DE LOS 3 while(L2s.size()!=0){ int posInicioA = (int)(Math.random()*L2s.size()); TuTipo seleccionado= L2s.remove(posInicioA); int file=seleccionado.getF(); int column=seleccionado.getC(); laberinto[file][column]=1; //CHECA LA POSICION ARRIBA if(file >= 3){ if(laberinto[file-2][column]==3){ L2s.add(new TuTipo (file-2,column)); laberinto[file-2][column]=2; }else if(laberinto[file-2][column]==1){ L1s.add(new TuTipo (file-1,column)); } } //CHECA LA POSICION A LA DERECHA if(column + 3 <= laberinto.length){ if(laberinto[file][column+2]==3){ L2s.add(new TuTipo (file,column+2)); laberinto[file][column+2]=2; }else if(laberinto[file][column+2]==1){ L1s.add(new TuTipo (file,column+1)); } } //CHECA LA POSICION ABAJO if(file+3 <= laberinto.length){ if(laberinto[file+2][column]==3){ L2s.add(new TuTipo (file+2,column)); laberinto[file+2][column]=2; }else if(laberinto[file+2][column]==1){ L1s.add(new TuTipo (file+1,column)); } } //CHECA LA POSICION A LA IZQUIERDA if(column >= 3){ if(laberinto[file][column-2]==3){ L2s.add(new TuTipo (file,column-2)); laberinto[file][column-2]=2; }else if(laberinto[file][column-2]==1){ L1s.add(new TuTipo (file,column-1)); } } //SELECCIONA UN PUENTE if(!L1s.isEmpty()){ int posInicioB = (int)(Math.random()*L1s.size()); TuTipo seleccionado1= L1s.remove(posInicioB); int file1=seleccionado1.getF(); int column1=seleccionado1.getC(); laberinto[file1][column1]=1; L1s.clear(); } } //entrada laberinto[1][0]=1; //Salida laberinto[n-2][n-1]=1; //Ciclo para imprimir la matriz /*for (int i = 0; i < laberinto.length ; i++) { for (int j = 0; j < laberinto[0].length; j++) { System.out.print(laberinto[i][j] + " "); } System.out.println();*/ } }
Las siguientes 2 clases son la clase Cola y Pila, ambas realizan una función similar, encuentran la solución del laberinto, sin embargo, la clase cola funciona con el concepto de Primero en entrar Primero en Salir y la clase pila funciona con el concepto contrario el Primero en Entrar Último en Salir. Pero para crear una diferencia más marcada y grafica entre ambas la clase pila, además de mostrar el camino correcto de color verde también muestra en los caminos donde busco la salida, pero que eran callejones sin salida en color rojo.
package TercerSemestre.EstructurasDinamicas.ExamenLaberinto; /** * * * @author (David Lázaro) * @version (1.0 / 11/09/2017) */ import java.util.Queue; import java.util.LinkedList; import java.util.Stack; public class Cola { static Stack <TuTipo> pila; public static void main() { Queue <TuTipo> cola = new LinkedList <TuTipo> (); int fpa=1; int cpa=0; TuTipo posActual = new TuTipo(fpa,cpa); TuTipo s = new TuTipo((Interface.n)-2,(Interface.n)-1); while(true){ if( cpa+1<Interface.n && CreaLaberinto.laberinto[fpa][cpa+1]== 1){ cola.offer(new TuTipo (fpa,cpa+1)); CreaLaberinto.laberinto[fpa][cpa+1]=CreaLaberinto.laberinto[fpa][cpa]+1; if(fpa==s.getF()&& cpa+1==s.getC()){ cola.offer(new TuTipo(fpa,cpa)); break; } } if (fpa+1<Interface.n && CreaLaberinto.laberinto[fpa+1][cpa]== 1){ cola.offer(new TuTipo (fpa+1,cpa)); CreaLaberinto.laberinto[fpa+1][cpa]=CreaLaberinto.laberinto[fpa][cpa]+1; if(fpa+1==s.getF()&& cpa==s.getC()){ cola.offer(new TuTipo(fpa,cpa)); break; } } if(cpa-1>=0 && CreaLaberinto.laberinto[fpa][cpa-1]== 1){ cola.offer(new TuTipo (fpa,cpa-1)); CreaLaberinto.laberinto[fpa][cpa-1]=CreaLaberinto.laberinto[fpa][cpa]+1; if(fpa==s.getF()&& cpa-1==s.getC()){ cola.offer(new TuTipo(fpa,cpa)); break; } } if (fpa-1>=0 && CreaLaberinto.laberinto[fpa-1][cpa]== 1){ cola.offer(new TuTipo (fpa-1,cpa)); CreaLaberinto.laberinto[fpa-1][cpa]=CreaLaberinto.laberinto[fpa][cpa]+1; if(fpa-1==s.getF()&& cpa==s.getC()){ cola.offer(new TuTipo(fpa,cpa)); break; } } if(!cola.isEmpty()){ posActual=(TuTipo)cola.poll(); fpa=posActual.getF(); cpa=posActual.getC(); } } CreaLaberinto.laberinto[1][0]=1; pila = new Stack <TuTipo> (); fpa=s.getF(); cpa=s.getC(); int num = CreaLaberinto.laberinto[s.getF()][s.getC()]; while(num !=2){ if (cpa+1<CreaLaberinto.laberinto.length && CreaLaberinto.laberinto[fpa][cpa+1]==num-1){ pila.push(new TuTipo (fpa,cpa+1)); num=num-1; }else if (fpa+1<CreaLaberinto.laberinto.length && CreaLaberinto.laberinto[fpa+1][cpa]==num-1){ pila.push(new TuTipo (fpa+1,cpa)); num=num-1; }else if(cpa-1>=0 && CreaLaberinto.laberinto[fpa][cpa-1]==num-1){ pila.push(new TuTipo (fpa,cpa-1)); num=num-1; }else if(fpa-1>=0 && CreaLaberinto.laberinto[fpa-1][cpa]==num-1){ pila.push(new TuTipo (fpa-1,cpa)); num=num-1; } if(!pila.empty()){ posActual=(TuTipo)pila.peek(); fpa=posActual.getF(); cpa=posActual.getC(); } } } }
package TercerSemestre.EstructurasDinamicas.ExamenLaberinto; /** * . * * @author (David Lázaro) * @version (1.0 / 11/09/2017) */ import java.util.Stack; public class Pila { private CreaLaberinto llamar = new CreaLaberinto(); public static void main(){ Stack <TuTipo> pila = new Stack <TuTipo> (); int fpa=1; int cpa=0; TuTipo posActual = new TuTipo(fpa,cpa); TuTipo s = new TuTipo((Interface.n)-2,(Interface.n)-1); while(true){ if( cpa+1<CreaLaberinto.laberinto.length && CreaLaberinto.laberinto[fpa][cpa+1]== 1){ pila.push(new TuTipo (fpa,cpa)); CreaLaberinto.laberinto[fpa][cpa]=2; cpa+=1; }else if (fpa+1<CreaLaberinto.laberinto.length && CreaLaberinto.laberinto[fpa+1][cpa]== 1){ pila.push(new TuTipo (fpa,cpa)); CreaLaberinto.laberinto[fpa][cpa]=2; fpa+=1; }else if(cpa-1>=0 && CreaLaberinto.laberinto[fpa][cpa-1]== 1){ pila.push(new TuTipo (fpa,cpa)); CreaLaberinto.laberinto[fpa][cpa]=2; cpa-=1; }else if (fpa-1>=0 && CreaLaberinto.laberinto[fpa-1][cpa]== 1){ pila.push(new TuTipo (fpa,cpa)); CreaLaberinto.laberinto[fpa][cpa]=2; fpa-=1; }else{ if(!pila.empty()){ posActual=(TuTipo)pila.pop(); } CreaLaberinto.laberinto[fpa][cpa]=3; fpa=posActual.getF(); cpa=posActual.getC(); } if(fpa==s.getF()&& cpa==s.getC()){ CreaLaberinto.laberinto[fpa][cpa]=4; pila.push (new TuTipo(fpa,cpa)); break; } } } }
Hasta este momento, todo ha sido todo en trasfondo, la parte que el usuario no ve, pero en la clase, es la parte con la cual interactúa el usuario, esta contiene, el marco y los botones del programa al momento de ejecución.
package TercerSemestre.EstructurasDinamicas.ExamenLaberinto; /** * * * @author (David Lázaro) * @version (1.0 / 11/09/2017) */ import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Interface extends JFrame implements ActionListener{ private JButton generar; private JButton pila; private JButton cola; private JPanel panel; private CreaLaberinto ejecutar = new CreaLaberinto(); private Pila ejecutar1 = new Pila(); private Cola ejecutar2 = new Cola(); static int n; public static void main(String[] args){ Interface frame = new Interface(); frame.setSize(1080,720); frame.createGUI(); frame.setVisible(true); } private void createGUI(){ setDefaultCloseOperation(EXIT_ON_CLOSE); Container window = getContentPane(); window.setLayout(new FlowLayout()); panel = new JPanel(); panel.setPreferredSize(new Dimension (1000, 600)); panel.setBackground(Color.white); window.add(panel); generar = new JButton("GENERAR"); window.add(generar); generar.addActionListener(this); pila = new JButton("PILA"); window.add(pila); pila.addActionListener(this); cola = new JButton("COLA"); window.add(cola); cola.addActionListener(this); } public void actionPerformed(ActionEvent event){ Graphics papel = panel .getGraphics(); if (event.getSource()== generar){ papel.setColor(Color.white); papel.fillRect(0, 0, 1000, 600); this.n= Integer.parseInt(JOptionPane.showInputDialog("Introduce un numero impar")); ejecutar.main(n); int x =1000/n; int y =600/n; for(int i=0 ; i<n ; i++){ for(int j=0 ; j<n ; j++){ if(CreaLaberinto.laberinto[i][j]==0){ papel.setColor(Color.blue); papel.fillRect(i*x, j*y, x, y); } if(CreaLaberinto.laberinto[i][j]==1){ papel.setColor(Color.white); papel.fillRect(i*x, j*y, x, y); } } } cola.setEnabled(true); pila.setEnabled(true); } if (event.getSource()== pila){ ejecutar1.main(); int x =1000/n; int y =600/n; for(int i=0 ; i<n ; i++){ for(int j=0 ; j<n ; j++){ if(CreaLaberinto.laberinto[i][j]==2 |CreaLaberinto.laberinto[i][j]==4){ papel.setColor(Color.green); papel.fillRect(i*x, j*y, x, y); } if(CreaLaberinto.laberinto[i][j]==3){ papel.setColor(Color.red); papel.fillRect(i*x, j*y, x, y); } } } pila.setEnabled(false); cola.setEnabled(false); } if (event.getSource()== cola){ ejecutar2.main(); int x =1000/n; int y =600/n; for (int z=0 ; z<Cola.pila.size() ; z++){ TuTipo p = Cola.pila.get(z); int f = p.getF(); int c = p.getC(); papel.setColor(Color.green); papel.fillRect(f*x, c*y, x, y); } cola.setEnabled(false); pila.setEnabled(false); } } }
Buscaminas
Es un juego, elaborado bajo el concepto de arreglos bidimensionales (matrices), en el cual, un carácter se determina como mina, y hay caracteres que representan espacios sin minas, el algoritmo detrás de la parte gráfica, recibe una coordenada de la matriz y revisa esta tiene una mina, de no ser así, revisa a sus vecinos para ver si alguno es una mina, así sucesivamente con los vecinos, de los vecinos, hasta encontrar una mina y en los espacios de alrededor, da una pista de cuales casillas colindan con una o más minas, así el jugador puede tomar una decisión, de que casilla seleccionar como siguiente.
Codigo
package Matrices; /** * * * @author (David Lázaro) <br > * @version (1.0 / 11/09/2017) */</br > import java.lang.*; import java.util.*; import java.util.stream.*; import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.awt.GridLayout; public class BMinas extends JFrame implements ActionListener{ static JButton MBotones[][]; private static int numero =Integer.parseInt(JOptionPane.showInputDialog("Ingresa un numero para la medida del Tablero")); private static int minas = Integer.parseInt(JOptionPane.showInputDialog("Cantidad de Minas")); int a, b; //matriz logica private static String [][] campo = new String [numero][numero]; //matriz Priva linea de comandos private static String [][] bMinas = new String [numero][numero]; //matriz grafica private GridLayout[][]tablero = new GridLayout[numero][numero]; public static void main(String[] args){ for (int nMinas=1; nMinas <= minas; nMinas ++){ int fila; int col; do{ fila = (int)(Math.random()*campo.length); col = (int)(Math.random()*campo[0].length); }while (campo[fila][col]=="*"); campo[fila][col]= "*"; } // campo.length chaca el alto del arreglo for (int f=0; f < campo.length; f++){ for(int c=0; c < campo[0].length; c++){ if (campo[f][c]!="*"){ campo[f][c]= (String)(""+ cuentaVecinos(campo,f,c)) ; if(cuentaVecinos(campo,f,c) ==0){ campo[f][c] = " "; } } } } //Impresion de el array logico oh imaginario for (int i = 0; i < numero; i++) { for (int j = 0; j < numero; j++) { System.out.print(campo[i][j] + " "); } System.out.println(); } //Llenado de la Segunda Matriz // campo.length chaca el alto del arreglo for (int fila=0; fila < bMinas.length; fila++){ for(int col=0; col < bMinas[0].length; col++){ bMinas[fila][col] = (String)("T") ; } } //Impresion del array de Ts for (int i = 0; i < numero; i++) { for (int j = 0; j < numero; j++) { System.out.print(bMinas[i][j] + " "); } System.out.println(); } BMinas frame = new BMinas(); frame.setSize(1000,1000); frame.crearGUI(); frame.setVisible(true); } private void crearGUI(){ setDefaultCloseOperation(EXIT_ON_CLOSE); Container window = getContentPane(); window.setLayout(new GridLayout(numero, numero)); MBotones = new JButton[campo.length][campo.length]; for(int fila = 0; fila < campo.length; fila++){ for(int col = 0; col < campo.length; col++){ MBotones[fila][col]= new JButton(""); MBotones[fila][col].addActionListener(this); window.add(MBotones[fila][col]); } } } public static void gray(int a, int b){ if (campo[a][b] == " "){ MBotones[a][b].setBackground(Color.WHITE); }else { MBotones[a][b].setBackground(Color.YELLOW);} } //Este metodo checa si la casilla tiene numero bomba o esta basia y destapa segun corresponda public static void destapaSerie(int numFila, int numCol){ if(numFila-1 >= 0 && numCol-1 >= 0 && bMinas[numFila-1][numCol-1]=="T" ){ bMinas[numFila-1][numCol-1]= campo [numFila-1][numCol-1]; MBotones[numFila-1][numCol-1].setText(bMinas[numFila-1][numCol-1]); gray(numFila-1,numCol-1); if(campo [numFila-1][numCol-1]==(" ")){ destapaSerie(numFila-1,numCol-1); } } if(numFila-1 >= 0 && bMinas[numFila-1][numCol]=="T"){ bMinas[numFila-1][numCol]= campo [numFila-1][numCol]; MBotones[numFila-1][numCol].setText(bMinas[numFila-1][numCol]); gray(numFila-1,numCol); if(campo [numFila-1][numCol]==(" ")){ destapaSerie(numFila-1,numCol); } } if(numFila-1 >= 0 && numCol+1 < bMinas.length && bMinas[numFila-1][numCol+1]=="T"){ bMinas[numFila-1][numCol+1]= campo [numFila-1][numCol+1]; MBotones[numFila-1][numCol+1].setText(bMinas[numFila-1][numCol+1]); gray(numFila-1,numCol+1); if(campo [numFila-1][numCol+1]==(" ")){ destapaSerie(numFila-1,numCol+1); } } if(numFila >= 0 && numCol-1 >= 0 && bMinas[numFila][numCol-1]=="T"){ bMinas[numFila][numCol-1]= campo [numFila][numCol-1]; MBotones[numFila][numCol-1].setText(bMinas[numFila][numCol-1]); gray(numFila,numCol-1); if(campo [numFila][numCol-1]==(" ")){ destapaSerie(numFila,numCol-1); } } if(numFila >= 0 && bMinas[numFila][numCol]=="T"){ bMinas[numFila][numCol]= campo [numFila][numCol]; MBotones[numFila][numCol].setText(bMinas[numFila][numCol]); gray(numFila,numCol); if(campo [numFila][numCol]==(" ")){ destapaSerie(numFila,numCol); } } if(numFila >= 0 && numCol+1 < bMinas.length && bMinas[numFila][numCol+1]=="T"){ bMinas[numFila][numCol+1]= campo [numFila][numCol+1]; MBotones[numFila][numCol+1].setText(bMinas[numFila][numCol+1]); gray(numFila,numCol+1); if(campo [numFila][numCol+1]==(" ")){ destapaSerie(numFila,numCol+1); } } if(numFila+1 < bMinas.length && numCol-1 >= 0 && bMinas[numFila+1][numCol-1]=="T"){ bMinas[numFila+1][numCol-1]= campo [numFila+1][numCol-1]; MBotones[numFila+1][numCol-1].setText(bMinas[numFila+1][numCol-1]); gray(numFila+1,numCol-1); if(campo [numFila+1][numCol-1]==(" ")){ destapaSerie(numFila+1,numCol-1); } } if(numFila+1 < bMinas.length && bMinas[numFila+1][numCol]=="T"){ bMinas[numFila+1][numCol]= campo [numFila+1][numCol]; MBotones[numFila+1][numCol].setText(bMinas[numFila+1][numCol]); gray(numFila+1,numCol); if(campo [numFila+1][numCol]==(" ")){ destapaSerie(numFila+1,numCol); } } if(numFila+1 < bMinas.length && numCol+1 < bMinas.length && bMinas[numFila+1][numCol+1]=="T"){ bMinas[numFila+1][numCol+1]= campo [numFila+1][numCol+1]; MBotones[numFila+1][numCol+1].setText(bMinas[numFila+1][numCol+1]); gray(numFila+1,numCol+1); if(campo [numFila+1][numCol+1]==(" ")){ destapaSerie(numFila+1,numCol+1); } } } //Este metodo pone los numeros alrededor de las bombas public static int cuentaVecinos(String[][]campo, int f, int c){ int cont =0; int k = campo.length; int p = campo[0].length; if(f-1 >=0 && c-1 >=0 && campo[f-1][c-1]=="*"){ cont++; } if(f-1>=0 && campo[f-1][c]=="*"){ cont++; } if(f-1>=0 && c+1<k && campo[f-1][c+1]=="*"){ cont++; } if(f >=0 && c-1 >=0 && campo[f][c-1]=="*"){ cont++; } if(f>=0 && campo[f][c]=="*"){ cont++; } if(f>=0 && c+1<k && campo[f][c+1]=="*"){ cont++; } if(f+1 <p && c-1 >=0 && campo[f+1][c-1]=="*"){ cont++; } if(f+1 <p && campo[f+1][c]=="*"){ cont++; } if(f+1 < p && c+1<k && campo[f+1][c+1]=="*"){ cont++; } return cont; } public void actionPerformed(ActionEvent event){ //event.getSource, busca un evento que ocurra, en este caso en el boton, y se pide que si se encuenta un evento, asigne el valor almacenado //en la variable pero con su valor de cadena de caracteres. if (event.getSource() instanceof JButton){ for (int fila=0; fila < MBotones.length; fila++){ for(int col=0; col < MBotones[0].length; col++){ if (MBotones[fila][col] == event.getSource()){ a = fila; b = col; } } } MBotones[a][b].setText(campo[a][b]); if((campo[a][b])== "*"){ MBotones[a][b].setBackground(Color.RED); JOptionPane.showMessageDialog(null,"Ya Perdiste"); } if((campo[a][b])!= "*"){ MBotones[a][b].setBackground(Color.BLUE); } if((campo[a][b])== " "){ destapaSerie(a,b); } //MBotones[a][b].setText(campo[a][b]); //MBotones[a][b].setEnabled(false); } } }
Proyectos de SQL Server + Visual Studio
Inicio Sistema Colegio
Codigo de la clase que realiza la conección con la base de datos.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Data.SqlClient; namespace SistemaMiColegio { public class BDConexion { public static SqlConnection obtenerConexion() { //System.Data.SqlClient.SqlConnection strConn = new System.Data.SqlClient.SqlConnection(@"Data Source = DAVIDLM\MSSQLSERVER2; Initial Catalog=ventas; Integrated Security=true"); //System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand(); SqlConnection Conn = new SqlConnection(@"Data Source = DAVIDLM\MSSQLSERVER2 ; Initial Catalog = MiColegio; Integrated Security = SSPI"); Conn.Open(); return Conn; } } }
Codigo de la pantalla del modulo de registro de estudiantes
// Autor: David Lázaro //Version 1.0 //11/Sep/2017 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace SistemaMiColegio { public partial class Form1 : Form { public Form1() { InitializeComponent(); } public Alumno alumnoActual{get; set;} private void Guardar_Click(object sender, EventArgs e) { Alumno Alumno = new Alumno(); Alumno.Nombre = textNombre.Text; Alumno.Apellidos = textApellidos.Text; Alumno.Direccion = textDireccion.Text; Alumno.Fecha_Nac = textFechaNac.Text; int resultado = alumnoABMC.agregarAlumno(Alumno); if (resultado > 0) { MessageBox.Show("El alumno se guardo exitosamente", "Datos Guardados", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { MessageBox.Show("El alumno NO se guardo exitosamente", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } } private void Busqueda_Click(object sender, EventArgs e) { BuscarAlumno pBuscarAlumno = new BuscarAlumno(); pBuscarAlumno.ShowDialog(); if (pBuscarAlumno.alumnoSeleccionado != null) { alumnoActual = pBuscarAlumno.alumnoSeleccionado; textNombre.Text = pBuscarAlumno.alumnoSeleccionado.Nombre; textApellidos.Text = pBuscarAlumno.alumnoSeleccionado.Apellidos; textDireccion.Text = pBuscarAlumno.alumnoSeleccionado.Direccion; textFechaNac.Text = pBuscarAlumno.alumnoSeleccionado.Fecha_Nac; Guardar.Enabled = false; Modificar.Enabled = true; } } } }
Codigo de la clase que agrega, busca y recupera la informacion de un alumno
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Data.SqlClient; namespace SistemaMiColegio { class alumnoABMC { public static int agregarAlumno(Alumno pAlumno) { int retorno; using (SqlConnection Conn = BDConexion.obtenerConexion()) { SqlCommand cmd = new SqlCommand(string.Format("INSERT INTO Alumnos (Nombre, Apellidos, Direccion, Fecha_Nacimiento) VALUE('{0}','{1}','{2}','{3}')", pAlumno.Nombre, pAlumno.Apellidos, pAlumno.Direccion, pAlumno.Fecha_Nac), Conn); retorno = cmd.ExecuteNonQuery(); Conn.Close(); } return retorno; //Fin del metodo agregarAlumno() } //------------------------------------------------------------------------------------------------------------- public static List<Alumno> buscarAlumnos(String pNombre, String pApellidos) { List<Alumno> Lista = new List<Alumno>(); using (SqlConnection Conn = BDConexion.obtenerConexion()) { SqlCommand cmd = new SqlCommand(string.Format("SELECT Matricula, Nombre, Apellidos, Direccion, Fecha_Nacimiento FROM Alumnos WHERE Nombre LIKE '%{0}%' OR Apellios LIKE '%{1}%'", pNombre, pApellidos, Conn)); SqlDataReader leerTabla = cmd.ExecuteReader(); while (leerTabla.Read()) { Alumno pAlumno = new Alumno(); pAlumno.Id = leerTabla.GetInt64(0); pAlumno.Nombre = leerTabla.GetString(1); pAlumno.Apellidos = leerTabla.GetString(2); pAlumno.Direccion = leerTabla.GetString(3); pAlumno.Fecha_Nac = Convert.ToString(leerTabla.GetDateTime(4)); Lista.Add(pAlumno); } Conn.Close(); return Lista; } } //Fin del metodo buscarAlumno //----------------------------------------------------------------------------------------------------------------- public static Alumno obtenerAlumno(Int64 pId) { Alumno pAlumno = new Alumno(); using (SqlConnection Conn = BDConexion.obtenerConexion()) { SqlCommand cmd = new SqlCommand(string.Format("SELECT, Nombre, Apellidos, Direccion, Fecha_Nacimiento, FROM Alumnos WHERE Matricula = {0}", pId), Conn); SqlDataReader leerTabla = cmd.ExecuteReader(); while (leerTabla.Read()) { pAlumno.Id = leerTabla.GetInt64(0); pAlumno.Nombre = leerTabla.GetString(1); pAlumno.Apellidos = leerTabla.GetString(2); pAlumno.Direccion = leerTabla.GetString(3); pAlumno.Fecha_Nac = Convert.ToString(leerTabla.GetDateTime(4)); } Conn.Close(); return pAlumno; }//Fin del metodo Obtener Alumno } //---------------------------------------------------------------------------------------------------------------- public static int modificarAlumno(Alumno pAlumno) { int resultSet = 0; using (SqlConnection Conn = BDConexion.obtenerConexion()) { SqlCommand cmd = new SqlCommand(string.Format("UPDATE Alumnos SET Nombre = '{0}', Apellidos = '{1}', Direccion = '{2}', Fecha_Nac = '{3}' WHERE Matricula {4}", pAlumno.Nombre, pAlumno.Apellidos, pAlumno.Direccion, pAlumno.Fecha_Nac, pAlumno.Id), Conn); resultSet = cmd.ExecuteNonQuery(); Conn.Close(); } return resultSet; } } }
Forma para buscar Alumno
Codigo de la clase que sirve para buscar y accesar los datos almacenados en la base de datos pertenecientes a un alumno especifico.
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace SistemaMiColegio { public partial class BuscarAlumno : Form { public BuscarAlumno() { InitializeComponent(); } public Alumno alumnoSeleccionado { set; get;} private void Buscar_Click(object sender, EventArgs e) { dataGridView1.DataSource = alumnoABMC.buscarAlumnos(textNombre.Text, textApellidos.Text); } private void Aceptar_Click(object sender, EventArgs e) { //Si el grid esta lleno y se selecciona una fila, al click en aceptar se pasan los valores del registro //a la pantalla principal if (dataGridView1.SelectedRows.Count == 1) { Int64 Id = Convert.ToInt64(dataGridView1.CurrentRow.Cells[0].Value); alumnoSeleccionado = alumnoABMC.obtenerAlumno(Id); this.Close(); } else { MessageBox.Show("No se ha seleccionado el registro del alumno"); } } } }
Algunos comandos basicos de SQL Server
Codigo para Crear una base de datos y una tabla con sus columnas
USE master GO CREATE DATABASE [ventas] ON PRIMARY ( NAME = 'ventas_Data', FILENAME = 'C:\bdVentas\Data\ventas_data.mdf', SIZE = 5120KB, MAXSIZE = 10240KB, FILEGROWTH = 10% ) LOG ON ( NAME = 'ventas_Log', FILENAME = 'C:\bdVentas\Log\ventas_log.mdf', SIZE = 1024KB, MAXSIZE = 2048KB, FILEGROWTH = 10% ) GO USE ventas GO CREATE TABLE productos ( idProducto int NOT NULL, nombre nvarchar (80) NOT NULL, cantidad int NOT NULL, precio smallmoney NOT NULL, productImage image NULL, CONSTRAINT Pk_Products PRIMARY KEY CLUSTERED (idProducto) ) ON [PRIMARY]
Codigo para omitir un caracter de busqueda
--BUSCAR A LOS AUTORES CUYO NOMBRE NO TERMINE CON LA LETRA N USE pubs --Nombre de la base de datos GO SELECT [au_fname] --Nombre de la columna FROM[dbo].[authors] --Nombre de la tabla WHERE [au_fname] NOT LIKE '%n' --Condicion de busqueda en culumna, que no sean n
Cross Join
--Cross Join despliega cada combinacion --por cada fila que se encuentre en cada tabla --Es un producto cartesiano. Una multiplicación total --de los registros (filas) de la tabla de origen POR --el total de los registros de la tabla de origen --Si tabla origen 1=8 Rows (filas) y tablas de origen 2= 7 filas --la tabla derivada sera de 56 = Rows --Cuanto puede comprar cada cliente de acuerdo a las ventas? USE joinDB GO SELECT c.idComprador, v.cantidad FROM Compradores AS c, Ventas AS v GO SELECT * FROM Ventas