MecaniCalc
PROYECTO INTEGRADOR
El proyecto integrador es un proyecto que conjunta los conocimientos adquiridos en las materias del plan Diamante de la Universidad de Montemorelos. Dentro de este proyecto se incluyeron las materias de Negocios y procesos de comercialización, Desarrollo de aplicaciones web y Fundamentos de ingeniería de software.
PROPÓSITO
El propósito de la MecaniCalc es presentar un software que ayude a solucionar problemas relacionados con el tiro parabólico con rozamiento y sin rozamiento del aire, beneficiando tanto a alumnos como maestros a comparar los resultados de los dos sistemas. El proyecto se realizó en el lenguaje de programación Java, en el entorno de enseñanza BlueJ. Las fórmulas utilizadas para el cálculo del tiro parabólico sin aire fueron vistas en la clase de Mecánica, mientras que para el sistema con rozamiento, se obtuvieron de una fuente confiable en internet.
RESULTADOS
MecaniCalc resultó exitosa, cumpliendo sus funciones. Además de realizar los cálculos básicos de buena manera, el proyecto cumplió con la función de calculadora científica, además de poder calcular las medidas que existen dentro de la Biblia y un medidor de tiro parabólico,
import java.awt.*; import java.awt.event.*; import javax.swing.*; /** */ public class DProyectoIntegrador extends JFrame implements ActionListener { private JTextField txtVelInicial, txtGrados, txtResultado1,txtResultado2,txtRoz; private JLabel lblVelInicial, lblGrados, lblResultado1, lblResultado2,lblDatos,lblQue,lblRoz,lblGraph; private JButton btnCalcular; private JPanel PanGrafica; private JRadioButton TiempoAire, Dist, Altura; private ButtonGroup operaciones; public static void main(String [] args) { DProyectoIntegrador prog = new DProyectoIntegrador(); prog.setSize(1100, 300); prog.setVisible(true); } private DProyectoIntegrador() { super("Tiro Parabolico"); Container contenedor = getContentPane(); contenedor.setLayout(null); lblDatos = new JLabel("Ingrese los datos"); contenedor.add(lblDatos); lblDatos.setBounds(80,10,200,50); lblVelInicial = new JLabel("Velocidad incial"); contenedor.add(lblVelInicial); lblVelInicial.setBounds(30,70,100,30); txtVelInicial = new JTextField(); contenedor.add(txtVelInicial); txtVelInicial.setBounds(140,70,100,30); lblGrados = new JLabel("�ngulo"); contenedor.add(lblGrados); lblGrados.setBounds(30,130,50,30); txtGrados = new JTextField(); contenedor.add(txtGrados); txtGrados.setBounds(140,130,100,30); lblRoz = new JLabel("Rozamiento (b<.1)"); contenedor.add(lblRoz); lblRoz.setBounds(30,190,110,30); txtRoz = new JTextField(); contenedor.add(txtRoz); txtRoz.setBounds(140,190,100,30); lblQue = new JLabel("�Qu� quiere encontrar?"); contenedor.add(lblQue); lblQue.setBounds(290,10,200,50); TiempoAire = new JRadioButton("Tiempo en el aire",true); Dist = new JRadioButton("Distancia en x",false); Altura = new JRadioButton("Altura en y",false); operaciones = new ButtonGroup(); operaciones.add(TiempoAire); operaciones.add(Dist); operaciones.add(Altura); contenedor.add(TiempoAire); TiempoAire.setBounds(290,70,150,30); contenedor.add(Dist); Dist.setBounds(290,110,150,30); contenedor.add(Altura); Altura.setBounds(290,150,150,30); btnCalcular = new JButton("Calcular"); contenedor.add(btnCalcular); btnCalcular.setBounds(580,40,100,30); btnCalcular.addActionListener(this); lblResultado1 = new JLabel("Sin rozamiento"); contenedor.add(lblResultado1); lblResultado1.setBounds(520,100,150,30); txtResultado1 = new JTextField(); contenedor.add(txtResultado1); txtResultado1.setBounds(640,100,100,30); lblResultado2 = new JLabel("Con rozamiento"); contenedor.add(lblResultado2); lblResultado2.setBounds(520,170,150,30); txtResultado2 = new JTextField(); contenedor.add(txtResultado2); txtResultado2.setBounds(640,170,100,30); lblGraph = new JLabel("Gr�ficas"); contenedor.add(lblGraph); lblGraph.setBounds(900,10,100,50); PanGrafica = new JPanel(); PanGrafica.setBounds(800,60,250,170); PanGrafica.setBackground(Color.white); contenedor.add(PanGrafica); } public void actionPerformed(ActionEvent event) { double vel1, ang, resultado1,resultado2,roz,angle; resultado1=0; resultado2=0; vel1=Double.parseDouble(txtVelInicial.getText()); angle=Double.parseDouble(txtGrados.getText()); roz=Double.parseDouble(txtRoz.getText()); ang=angle*Math.PI/180.0; if(TiempoAire.isSelected()) { resultado1=(((2*vel1)*Math.sin(ang))/9.8); resultado2=(1/roz)*(Math.log(1+(roz*vel1*Math.sin(ang)/9.8))); } else if(Dist.isSelected()) { resultado1=((2*Math.pow(vel1, 2))*(Math.sin(ang))*(Math.cos(ang)))/9.8; double a1=0,a2=0,a=0,b=0,c=0,ac4=0,dentro=0,arriba=0,abajo=0,raiz=0; ang=angle*Math.PI/180.0; a1=2*roz; a2=3*vel1*Math.cos(ang); a= (a1)/(a2); b= 1; c=-2*(vel1*Math.cos(ang))*(vel1*Math.sin(ang))/9.8; ac4=4*a*c; dentro = Math.pow(b,2)-(ac4); raiz = Math.sqrt(dentro); arriba=(-b)+raiz; abajo=2*a; resultado2=arriba/abajo; } else if(Altura.isSelected()) { resultado1=(Math.pow((vel1*Math.sin(ang)),2))/(2*9.8); resultado2=(vel1*Math.sin(ang))/roz-((9.8/Math.pow(roz,2))*Math.log(1+((roz*vel1*Math.sin(ang))/9.8))); } txtResultado1.setText(String.valueOf(resultado1)); txtResultado2.setText(String.valueOf(resultado2)); } }