23
PAQUTE ENTIDADES ALUMNO package Entidades; import java.util.ArrayList; import java.util.List; public class Alumno { private String Codigo; private String Nombre; private Curso oCurso; List<Nota> Notas = new ArrayList<Nota>(); private String Promedio; public Alumno() { } public Alumno(String Codigo, String Nombre, Curso oCurso, String Promedio) { this.Codigo = Codigo; this.Nombre = Nombre; this.oCurso = oCurso; this.Promedio = Promedio; } public String getCodigo() { return Codigo; } public void setCodigo(String Codigo) { this.Codigo = Codigo; } public String getNombre() { return Nombre; } public void setNombre(String Nombre) { this.Nombre = Nombre; } public Curso getOCurso() { return oCurso; } public void setOCurso(Curso oCurso) { this.oCurso = oCurso; } public List<Nota> getNotas() { return Notas; } public void setNotas(List<Nota> Notas) { this.Notas = Notas; } public String getPromedio() { return Promedio; }

Codigo Java

Embed Size (px)

Citation preview

Page 1: Codigo Java

PAQUTE ENTIDADESALUMNOpackage Entidades;import java.util.ArrayList;import java.util.List;

public class Alumno { private String Codigo; private String Nombre; private Curso oCurso; List<Nota> Notas = new ArrayList<Nota>(); private String Promedio;

public Alumno() { }

public Alumno(String Codigo, String Nombre, Curso oCurso, String Promedio) { this.Codigo = Codigo; this.Nombre = Nombre; this.oCurso = oCurso; this.Promedio = Promedio; } public String getCodigo() { return Codigo; }

public void setCodigo(String Codigo) { this.Codigo = Codigo; }

public String getNombre() { return Nombre; }

public void setNombre(String Nombre) { this.Nombre = Nombre; }

public Curso getOCurso() { return oCurso; }

public void setOCurso(Curso oCurso) { this.oCurso = oCurso; }

public List<Nota> getNotas() { return Notas; }

public void setNotas(List<Nota> Notas) { this.Notas = Notas; }

public String getPromedio() { return Promedio; }

public void setPromedio(String Promedio) { this.Promedio = Promedio; }}

Page 2: Codigo Java

CURSOpackage Entidades;

import java.util.List;

public class Curso { private String Codigo; private String Nombre; private String Formula; private List<String> Variables;

public Curso() { }

public Curso(String Codigo, String Nombre, String Formula, List<String> TiposEvaluaciones) { this.Codigo = Codigo; this.Nombre = Nombre; this.Formula = Formula; this.Variables = TiposEvaluaciones; }

public String getCodigo() { return Codigo; }

public void setCodigo(String Codigo) { this.Codigo = Codigo; }

public String getNombre() { return Nombre; }

public void setNombre(String Nombre) { this.Nombre = Nombre; }

public String getFormula() { return Formula; }

public void setFormula(String Formula) { this.Formula = Formula; }

public List<String> getVariables() { return Variables; }

public void setVariables(List<String> variables) { this.Variables = variables; }

@Override public String toString() { return Nombre; } }

Page 3: Codigo Java

NOTApackage Entidades;

public class Nota { private String TipoEvaluacion; private Double Valor;

public Nota() { }

public Nota(String TipoEvaluacion, Double Valor) { this.TipoEvaluacion = TipoEvaluacion; this.Valor = Valor; }

public String getTipoEvaluacion() { return TipoEvaluacion; }

public void setTipoEvaluacion(String TipoEvaluacion) { this.TipoEvaluacion = TipoEvaluacion; }

public Double getValor() { return Valor; }

public void setValor(Double Valor) { this.Valor = Valor; }}

Page 4: Codigo Java

PAQUETE ACESODATOSTablaAlumnopackage AccesoDatos;import java.util.ArrayList;import java.util.List;import Entidades.Alumno;import Entidades.Curso;

public class TablaAlumno { private static List<Alumno> alumnos = new ArrayList<Alumno>(); public static List<Alumno> Seleccionar(String codigo, String nombre,Curso oCurso) { List<Alumno> resultado = new ArrayList<Alumno>(); for(int i=0;i<alumnos.size();i++) { if(alumnos.get(i).getCodigo().substring(0,codigo.length()).equals(codigo)) { if(alumnos.get(i).getNombre().substring(0,nombre.length()).equals(nombre)) { if(alumnos.get(i).getOCurso().getCodigo().substring(0,oCurso.getCodigo().length()).equals(oCurso.getCodigo())) { resultado.add(alumnos.get(i)); } } } } return resultado; } private static int Buscar(Alumno alumno) { int posicion = -1; for(int i=0;i<alumnos.size();i++) { if(alumnos.get(i).getCodigo().equals(alumno.getCodigo())&&alumnos.get(i).getOCurso().getNombre().equals(alumno.getOCurso().getNombre())) { posicion = i; } } return posicion; } public static boolean Insertar(Alumno alumno) { int posicion = Buscar(alumno); if(!(posicion != -1)) { alumnos.add(alumno); return true; } else { return false; } } public static boolean Actualizar(Alumno alumno) { int posicion = Buscar(alumno); if(posicion != -1) { alumnos.set(posicion, alumno); return true; } else { return false; } } public static boolean Eliminar(Alumno alumno) { int posicion = Buscar(alumno); if(posicion != -1) { alumnos.remove(posicion); return true; } else { return false; } }}

Page 5: Codigo Java

TablaCursopackage AccesoDatos;import java.util.ArrayList;import java.util.List;import Entidades.Curso;public class TablaCurso { private static List<Curso> cursos = new ArrayList<Curso>(); public static List<Curso> Seleccionar(String codigo, String nombre) { List<Curso> resultado = new ArrayList<Curso>(); for(int i=0;i<cursos.size();i++) { if(cursos.get(i).getCodigo().substring(0,codigo.length()).equals(codigo)) { if(cursos.get(i).getNombre().substring(0,nombre.length()).equals(nombre)) { resultado.add(cursos.get(i)); } } } return resultado; }

private static int Buscar(Curso curso) { int posicion = -1;

for(int i=0;i<cursos.size();i++) { if(cursos.get(i).getCodigo().equals(curso.getCodigo())) { posicion = i; } }

return posicion; }

public static boolean Insertar(Curso curso) { int posicion = Buscar(curso); if(!(posicion != -1)) { cursos.add(curso); return true; } else { return false; } }

public static boolean Actualizar(Curso curso) { int posicion = Buscar(curso);

if(posicion != -1) { cursos.set(posicion, curso); return true; } else { return false; } }

public static boolean Eliminar(Curso curso) { int posicion = Buscar(curso);

if(posicion != -1) { cursos.remove(posicion); return true; } else { return false; } }}

Page 6: Codigo Java

ListNotasimport java.util.List;

public class ListNotas {

public static String[] Procesar(List<Nota> notas,String[] str) { for(int i=0;i<notas.size();i++){ for(int j=0;j<str.length;j++){ if(notas.get(i).getTipoEvaluacion().equals(str[j])){ String num=Double.toString(notas.get(i).getValor()); str[j]=num; } } } return str;} }

Page 7: Codigo Java

PAQUETE ACESODATOSGestionNotaspackage AccesoDatos;import java.util.ArrayList;import java.util.List;import Entidades.Curso;

public class TablaCurso { private static List<Curso> cursos = new ArrayList<Curso>();

public static List<Curso> Seleccionar(String codigo, String nombre) { List<Curso> resultado = new ArrayList<Curso>();

for(int i=0;i<cursos.size();i++) { if(cursos.get(i).getCodigo().substring(0,codigo.length()).equals(codigo)) { if(cursos.get(i).getNombre().substring(0,nombre.length()).equals(nombre)) { resultado.add(cursos.get(i)); } } } return resultado; } private static int Buscar(Curso curso) { int posicion = -1; for(int i=0;i<cursos.size();i++) { if(cursos.get(i).getCodigo().equals(curso.getCodigo())) { posicion = i; } } return posicion; } public static boolean Insertar(Curso curso) { int posicion = Buscar(curso);

if(!(posicion != -1)) { cursos.add(curso); return true; } else { return false; } } public static boolean Actualizar(Curso curso) { int posicion = Buscar(curso);

if(posicion != -1) { cursos.set(posicion, curso); return true; } else { return false; } } public static boolean Eliminar(Curso curso) { int posicion = Buscar(curso);

if(posicion != -1) { cursos.remove(posicion); return true; } else { return false; } }}

Page 8: Codigo Java

Logicapackage LogicaNegocio;

import AccesoDatos.ListNotas;import Entidades.Nota;import java.util.List;

public class Logica {

public String[] Procesar(List<Nota> notas,String[] str) { return ListNotas.Procesar(notas, str);

}}

Page 9: Codigo Java

PAQUETE DE PRESENTACIONModeloAlumnopackage Presentacion;

import java.util.ArrayList;import java.util.List;import javax.swing.table.AbstractTableModel;import Entidades.Alumno;

public class ModeloAlumno extends AbstractTableModel { private String[] columnas = {"Codigo","Nombre","Curso"}; private List<Alumno> datos = new ArrayList<Alumno>();

public ModeloAlumno(List<Alumno> datos) { this.datos = datos; }

public int getRowCount() { return datos.size(); }

public int getColumnCount() { return columnas.length; }

public String getColumnName(int columnIndex) { return columnas[columnIndex]; }

public Object getValueAt(int rowIndex, int columnIndex) { Object valor = null;

if(columnIndex == 0) { valor = datos.get(rowIndex).getCodigo(); } else if(columnIndex == 1) { valor = datos.get(rowIndex).getNombre(); }

else if(columnIndex == 2) { valor = datos.get(rowIndex).getOCurso().getNombre(); }

return valor; }}

Page 10: Codigo Java

ModeloCursopackage Presentacion;

import java.util.ArrayList;import java.util.List;import javax.swing.table.AbstractTableModel;import Entidades.Alumno;

public class ModeloAlumno extends AbstractTableModel { private String[] columnas = {"Codigo","Nombre","Curso"}; private List<Alumno> datos = new ArrayList<Alumno>();

public ModeloAlumno(List<Alumno> datos) { this.datos = datos; }

public int getRowCount() { return datos.size(); }

public int getColumnCount() { return columnas.length; }

public String getColumnName(int columnIndex) { return columnas[columnIndex]; }

public Object getValueAt(int rowIndex, int columnIndex) { Object valor = null;

if(columnIndex == 0) { valor = datos.get(rowIndex).getCodigo(); } else if(columnIndex == 1) { valor = datos.get(rowIndex).getNombre(); }

else if(columnIndex == 2) { valor = datos.get(rowIndex).getOCurso().getNombre(); }

return valor; }}

Page 11: Codigo Java

ModeloNotaspackage Presentacion;

import java.util.List;import javax.swing.table.AbstractTableModel;import Entidades.Alumno;import ProcesarFormula.InFija;import ProcesarFormula.PostFijo;import LogicaNegocio.Logica;

public class ModeloNotas extends AbstractTableModel { private List<String> columnas = null; private List<Alumno> datos = null;

public ModeloNotas(List<String> columnas, List<Alumno> datos) { this.columnas = columnas; this.datos = datos; }

public int getRowCount() { return datos.size(); }

public int getColumnCount() { return columnas.size(); }

@Override public String getColumnName(int columnIndex) { return columnas.get(columnIndex); }

public Object getValueAt(int rowIndex, int columnIndex) { Object valor = null;

if(columnIndex == 0) { valor = datos.get(rowIndex).getCodigo(); } else if(columnIndex == 1) { valor = datos.get(rowIndex).getNombre(); } else if(columnIndex == datos.get(rowIndex).getNotas().size() + 2) { valor = datos.get(rowIndex).getPromedio(); }

else if(columnIndex > 1 && columnIndex < (datos.get(rowIndex).getNotas().size() + 2)) { if(datos.get(rowIndex).getNotas().get(columnIndex - 2).getValor()!= 0.0) { valor = datos.get(rowIndex).getNotas().get(columnIndex - 2).getValor().toString(); } else { valor = ""; } }

return valor; }

Page 12: Codigo Java

@Override public boolean isCellEditable(int rowIndex, int columnIndex) { if(columnIndex > 1 && columnIndex < datos.get(rowIndex).getNotas().size() + 2) {//<notas...casillas editables return true; } else { return false; } }

@Override public void setValueAt(Object aValue, int rowIndex, int columnIndex) {

if(aValue != null) { if(aValue.toString().isEmpty()) { datos.get(rowIndex).getNotas().get(columnIndex - 2).setValor(0.0); } else { datos.get(rowIndex).getNotas().get(columnIndex - 2).setValor(Double.parseDouble(aValue.toString()));

Logica log=new Logica(); InFija inf=new InFija(); inf.setInfija(datos.get(rowIndex).getOCurso().getFormula());

String[] str=log.Procesar(datos.get(rowIndex).getNotas(),inf.getInfija()); PostFijo post=new PostFijo(str); datos.get(rowIndex).setPromedio(Float.toString(post.getValor())); } fireTableCellUpdated(rowIndex, columnIndex); fireTableCellUpdated(rowIndex, datos.get(rowIndex).getNotas().size() + 2); } }}

Page 13: Codigo Java

Paquete procesar formula Analyzer_Lexico

package ProcesarFormula;

public class Analyzer_Lexico { private int tipo,error;

public Analyzer_Lexico(){ error = 0; tipo = -1; } public void add(char x){//metodo QUE RETORNA LOS ERRORES Q HAY tipo = getType(x); if(tipo == -1) error++; } public int getTipo(char c){ return getType(c); } public int getError(){ return error; } private static int getType(char x){//funcion q retorna valor entero int i = -1; switch(x){ case '0': i = 0; break; case '1': i = 0; break; case '2': i = 0; break; case '3': i = 0; break; case '4': i = 0; break; case '5': i = 0; break; case '6': i = 0; break; case '7': i = 0; break; case '8': i = 0; break; case '9': i = 0; break; case 'A': i = 0; break; case 'B': i = 0; break; case 'C': i = 0; break; case 'D': i = 0; break; case 'E': i = 0; break; case 'F': i = 0; break; case 'G': i = 0; break; case 'H': i = 0; break; case 'I': i = 0; break; case 'J': i = 0; break; case 'K': i = 0; break; case 'L': i = 0; break; case 'M': i = 0; break; case 'N': i = 0; break; case 'Ñ': i = 0; break; case 'O': i = 0; break; case 'P': i = 0; break; case 'Q': i = 0; break; case 'R': i = 0; break; case 'S': i = 0; break; case 'T': i = 0; break; case 'U': i = 0; break;

Page 14: Codigo Java

case 'V': i = 0; break; case 'W': i = 0; break; case 'X': i = 0; break; case 'Y': i = 0; break; case 'Z': i = 0; break; case '.': i = 1; break; case '(': i = 2; break; case ')': i = 3; break; //cierra case '+': i = 4; break; case '-': i = 4; break; case '*': i = 4; break; case '/': i = 4; break; } return i; }}

Analyzer_Sintactico

package ProcesarFormula;

public class Analyzer_Sintactico { private int tipo,error; private Pila pila;

public Analyzer_Sintactico(int tamaño){ tipo = -1; error = 0; pila = new Pila(tamaño); } public void add(char c){ //Falta optimizar String s = String.valueOf(c); char pi; if(c == '('){ //Se verifica los paréntesis pila.push(s); }else{ if(c == ')'){ if(pila.isEmpty()) error++; else{ pi = pila.pop().charAt(0); if((pi == '(' && c == ')') == false ) error++; } } } } public boolean isEmpty(){ return pila.isEmpty(); }

Page 15: Codigo Java

public void setType(int xtipo){ if(tipo == 1){ if(xtipo != 0) error++; //Si luego de "." no sigue un número } if(tipo == 4) { if(xtipo == 4) error++; //Si agrega dos operadores seguidos } tipo = xtipo; } public int getError(){ return error; }}

InFija

package ProcesarFormula;

import java.util.Vector;

public class InFija { private String[] Infija; private String[] Variables; private int errores;

public String[] getInfija() { return Infija; }

public void setInfija(String str) { Vector<String> cadenaInfija = new Vector(); Vector<String> Infij = new Vector(); //---------------- String[] stringInfija; String[] inf; int error = 0; //---------------- Analyzer_Sintactico asin = new Analyzer_Sintactico(str.length()); Analyzer_Lexico alex = new Analyzer_Lexico();

error = 0;

String num = ""; int i,j,tipo,atipo,nOperadores,nNumeros; char c; atipo = -5; i = 0; j = 1; nOperadores = 0; nNumeros = 0;

while( i < str.length() && error == 0){ c = str.charAt(i);

Page 16: Codigo Java

if( c != ' '){ j = 1;

tipo = alex.getTipo(c); //Tipo es un entero que con el que indica un caracter

if( (atipo == 0 && tipo == 2) || (atipo == 3 && tipo == 0) || (atipo == 3 && tipo == 2)){ c = '*'; //Agrega operador '*' en expresiones j = 0; /// x * (.. )*[ (...)*999 tipo = 4; } if( (atipo == -5 && c == '-') || (atipo == 2 && c == '-')){ //Agrega el 0 en expresiones (-9) ó -5 -> (0-9), 0-5 c = '0'; j = 0; tipo = 0; } alex.add(c);

asin.setType(tipo);

asin.add(c);

error = error + alex.getError() + asin.getError();

if(error == 0){ if( tipo < 2){ //Es número

num = num + String.valueOf(c);

}else{ //Es operador o signo de agrupación if(num.equals("") == false){ try{ cadenaInfija.add(num); //-------------------------- if(!(num.substring(0,1).equals(".")|| num.substring(0,1).equals("0")|| num.substring(0,1).equals("1")|| num.substring(0,1).equals("2")|| num.substring(0,1).equals("3")|| num.substring(0,1).equals("4")|| num.substring(0,1).equals("5")|| num.substring(0,1).equals("6")|| num.substring(0,1).equals("7")|| num.substring(0,1).equals("8")|| num.substring(0,1).equals("9"))){ Infij.add(num); } //-------------------------- nNumeros++; }catch(NumberFormatException e){ error++; } } num = ""; if(tipo == 4) //Es operador nOperadores++;

cadenaInfija.add(String.valueOf(c)); }

Page 17: Codigo Java

}

atipo = tipo; }

i = i + j;

} if(asin.isEmpty() == false) error++; //Si no están bien emperajados los paréntesis

if(num.equals("") == false){ // Si la cadena "num" tiene un número try{

nNumeros++; cadenaInfija.add(num);

//--------------------------

if(!(num.substring(0,1).equals(".")|| num.substring(0,1).equals("0")|| num.substring(0,1).equals("1")|| num.substring(0,1).equals("2")|| num.substring(0,1).equals("3")|| num.substring(0,1).equals("4")|| num.substring(0,1).equals("5")|| num.substring(0,1).equals("6")|| num.substring(0,1).equals("7")|| num.substring(0,1).equals("8")|| num.substring(0,1).equals("9"))){ Infij.add(num); } //--------------------------

}catch(NumberFormatException e){ error++; } }

if(nOperadores + 1 != nNumeros){ error++; //Si número de operadores no le corresponde al número de operandos }

if(error == 0){ int tamanio = cadenaInfija.size();

stringInfija = new String[tamanio]; for(i = 0; i < tamanio; i++){ //Pasa el vector a una arreglo de String stringInfija[i] = cadenaInfija.get(i);

} this.Infija = stringInfija; //---------------- int ta=Infij.size(); inf=new String[ta]; for(i = 0; i < ta; i++){ inf[i] = Infij.get(i); }

Page 18: Codigo Java

//----------------------- this.Variables=inf; }

this.errores=error; }

public int getErrores() { return errores; }

public String[] getVariables(){ return Variables; } }

Pilapackage ProcesarFormula;

public class Pila { private String[] pila; private int tope;

public Pila(int capacidad){ pila = new String[capacidad]; tope = -1; } public boolean isEmpty(){ return tope == -1; } public void push(String str){ if(tope + 1 < pila.length) pila[++tope] = str; } public String pop(){ if(isEmpty()) return ""; return pila[tope--]; } public String StackTop(){ return pila[tope]; }}

PostFijo

package ProcesarFormula;

import java.util.Vector;

public class PostFijo { private Vector<String> rpn;

Page 19: Codigo Java

private String[] cadena; public PostFijo(String[] cadenaInfija){ cadena = cadenaInfija; rpn = new Vector(); creaPostFijo(); } private void creaPostFijo(){ //La cadena infija debe ser correcta Pila pila = new Pila(cadena.length); int i,sim; i = 0; while(i < cadena.length){ String s= cadena[i]; sim = getPriori(s); if(sim == 0){ //Es número rpn.add(s); }else{ //Es operador while(pila.isEmpty() == false && Precedencia(pila.StackTop() ,s) && sim > 0) // Falta √ y ^ de derecha a izquierda rpn.add(pila.pop()); if(sim == -2){ //Si encuentra signo agrupacion que cierra while(getPriori(pila.StackTop()) != -1) //Hasta que encuentre signo agrupación que abre rpn.add(pila.pop()); pila.pop(); // quita "(" de la pila }else pila.push(s); } i++; } while(pila.isEmpty() == false) rpn.add(pila.pop()); } public String get(int index){ return rpn.get(index); } public int Size(){ return rpn.size(); } public boolean Precedencia(String strPila,String str){ //Corregir al trabajar con ^ int p1 = getPriori(strPila); // es asociativo por la derecha int p2 = getPriori(str); return p1 >= p2; } private static int getPriori(String str){ int i=0; if(str.equals("-")) i = 1; if(str.equals("+")) i = 1; if(str.equals("*")) i = 2; if(str.equals("/"))

Page 20: Codigo Java

i = 2; if(str.equals("(")) i = -1; if(str.equals(")")) i = -2; return i; } public float getValor(){ Pila pila = new Pila(cadena.length); String s,valor; float op1,op2; int i; for(i = 0; i < rpn.size(); i++){ s = rpn.get(i); if(getPriori(s) == 0){ //es número pila.push(s); }else{ op2 = Float.valueOf(pila.pop()); op1 = Float.valueOf(pila.pop()); valor = operar(s,op1,op2); pila.push(valor);

} } return Float.valueOf(pila.pop()); } private static String operar(String str, float op1, float op2){ float valor = 0; if(str.equals("+")) valor = op1 + op2; if(str.equals("-")) valor = op1 - op2; if(str.equals("*")) valor = op1*op2; if(str.equals("/")) valor = op1 / op2; return String.valueOf(valor); } }