Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Ta Lenguaje Programacion
Ta Lenguaje Programacion
“LENGUAJE DE PROGRAMACIÓN I”
Villa el Salvador
2022
1
Índice
Introducción: 4
Planteamiento del problema: 4
Antecedentes 5
Formulación del problema 5
Requerimientos: 5
Análisis: 5
Modelo Entidad Relación: 6
Objetivos: 7
2.1. Objetivo General: 7
2.2. Objetivo específico: 7
3. Marco Teórico: 7
Clases 7
Objeto 8
Campo o atributo 8
Métodos 8
Instancia 8
Constructor 8
Interfaz 8
Arreglos Unidimensionales 10
Enumeraciones 10
Clase JscrollPane 10
Clase JComboBox 10
Clase JList 10
Clase JTable 10
Arreglo de Objetos 11
Clase JLayeredPane 11
Clase JDesktopPane 11
Clase JTextArea 11
2
Clase JTextPane 11
List y ArrayList 12
Map Y HashMap 12
JMenuBar 13
JMenu 13
JMenuItem 13
JCheckMenuItem 14
JRadioButtonMenuItem 14
Persistencia 14
Serialización 14
Java Netbeans: 15
SQL Server: 15
JDBC: 15
Modelo Entidad-Relación: 16
Entidades: 16
Relaciones: 16
Cardinalidad: 16
Atributos: 17
Identificador: 17
Grado de Relación: 17
Roles: 18
Procedimiento del Programa: 18
Conclusiones: 26
Referencias Bibliográficas: 26
3
1. Introducción:
Primero podremos apreciar cómo fue qué analizamos nuestro problema, la manera
en qué sobrellevamos esto y empezamos a planificar con nuestra entidad relación para
poder empezar a codificar o graficar en sql server, dado qué qué se puede operar de esas
dos maneras, ya como parte final se mostrará el jframe y las clases usadas.
2.1.1. Antecedentes
Este programa nos ayudará con todos estos problemas que podrían suceder a
4
1. Formulación del problema
¿Cómo podemos crear una base de datos de proveedor a clientes que sea funcional?
1. Requerimientos:
Se necesita una Base de Datos que permita apoyar la gestión de un sistema de ventas, el
Un proveedor necesita tener el RUC, razón social, teléfono, dirección; este realiza el
abastecimiento de diversos productos los cuales tienen como atributos: código, descripción,
precio, stock, RUC del proveedor; se necesita el reporte de las ventas que guardara el número de
venta, el DNI de cliente y el codigo de producto, precio total, y la cantidad de productos; por
2. Análisis:
ENTIDADES
ATRIBUTOS
Proveedor:
ruc primary key, razón social, teléfono, dirección .
Producto:
Código primary key, descripción, ruc foreign key, precio, stock.
Vendidos:
N_Venta primary key, dni foreign key, codigo foreign key, precio,
calidad
5
Cliente:
Dni Primary key, nombre, apellidos, teléfono, Domicilio.
Roles:
Proveedor Abastecedor
Producto Producto
Vendidos Vende
Cliente Compra
1, 1
PROVEEDOR ABASTECE
1, n RUC
CODIGO
TELEFONO DIRECCIÓN
PRODUCTO DESCRIPCIÓN
STOCK 1, n
PRECIO
TIENE
1, 1
N VENTA6 PRECIO
VENTA
CANTIDAD
1, n
COMPRA
2. Objetivos:
Crear una Base de datos funcional que se encargue de guardar la información del
proveedor.
3. Marco Teórico:
Clases
Para la definición de clases Martinez (2020) “Es una plantilla. Define de manera
genérica cómo van a ser los objetos de un determinado tipo.”
7
Objeto
Campo o atributo
Métodos
Instancia
Con la clase se pueden crear instancias de un objeto, cada uno de ellos con sus
atributos definidos de forma independiente.
Constructor
Por defecto toda clase tiene un constructor sin parámetros cuyo identificador
coincide con el de la clase y que, al ejecutarse, inicializa el valor de cada atributo de la
nueva instancia: los atributos de tipo primitivo se inicializan a 0 o false, mientras que los
atributos de tipo objeto (referencia) se inicializan a null. Garro (2022)
Interfaz
8
clases establecer la forma de una clase (nombres de métodos, listas de argumentos y tipos
de retorno, pero no bloques de código). Una interfaz puede también contener datos
miembros, pero estos son siempre static y final. Una interfaz sirve para establecer un
'protocolo' entre clases.
Una interface es como una clase abstracta pura. Sólo provee 2 tipos de miembros:
Constantes de clase: aunque no es necesario poner los modificadores public static final.
Permite acceder a ellas directamente desde las clases que implementen dicha interface.
Declaraciones de método: aunque no es necesario poner public abstract. Los métodos
deben ser sobrescritos por todas las clases que implementen dicha interface. El uso de las
interfaces se puede aplicar en:
9
Arreglos Unidimensionales
Enumeraciones
Clase JscrollPane
Clase JComboBox
Es una lista desplegable que nos permite definir una serie de opciones de las
cuales el usuario tendrá la posibilidad de seleccionar una de ellas.
Clase JList
Es un componente que muestra una lista de objetos y nos permite seleccionar uno
o más elementos.
Clase JTable
Es una clase que se usa para crear tablas interactivas y editable por los usuarios
gracias a los componentes API SWING. Estos representan los datos en forma de tabla
10
teniendo la posibilidad de editar el contenido de las tablas, por ejemplo, modificar las
dimensiones de esta.
Arreglo de Objetos
Clase JLayeredPane
Esta clase ortorga una tercera dimensión para poder posicionar componentes, que
es la profundidad, es conocida como el eje Z. Cuando se añade un componente a un panel
por capas, se especifica su profundidad.
Los frames con mayor profundidad solapan de los que tienen menor profundidad,
y estos siempre están por debajo de los que tienen mayor profundidad.
Clase JDesktopPane
Funciona como un escritorio virtual, también se utiliza para crear interfaces multi-
documentos. Esta clase se extiende al JLayeredPane, lo que hace que también los
componentes puedan solaparse cuando se requieran. El JDesktopPane funcionará como
una clase padre de los JInternalFrame que se creen después.
Clase JTextArea
Esta clase a diferencia del JTextField, que son similares, permite ingresar
múltiples líneas de texto.
Clase JTextPane
Es un editor que permite cambiar los colores, fuentes, tamaño de la letra, y más.
También nos permite poner íconos directamente desde una clase ICON de java o añadir
componentes como un JButton, JLabel, etc.
11
List y ArrayList
List
ArrayList
Map Y HashMap
Map
12
Según DelftStack(2021) La interfaz Map por sí sola no se puede utilizar
para almacenar datos, pero podemos crear un objeto de sus clases de
implementación y luego usar la referencia Map para contener el objeto. Aquí,
usamos la clase HashMap para almacenar datos y la interfaz Map para contener la
referencia de esta clase.
HashMap
JMenuBar
JMenu
JMenuItem
13
JCheckMenuItem
JRadioButtonMenuItem
Persistencia
Serialización
14
Java Netbeans:
SQL Server:
Darias (2021) nos dice que el “Microsoft SQL Server es uno de los principales
sistemas de gestión de bases de datos relacional del mercado”.
El mismo autor nos menciona que el “Microsoft SQL Server es ideal para
almacenar toda la información deseada en bases de datos relacionales, como también para
administrar dichos datos sin complicaciones, gracias a su interfaz visual y a las opciones
y herramientas que tiene. Es algo vital, especialmente en webs que tienen la opción de
registrar usuarios para que inicien sesión”.
o sysadmin:
JDBC:
15
como series a la API que, posteriormente, se encarga de ejecutarlas en RDMS.
Por ello, el valor de estas series se puede modificar durante el tiempo de
ejecución, haciendo que JBDC sea dinámica. (Anónimo, 2021)
Modelo Entidad-Relación:
Entidades:
Relaciones:
Cardinalidad:
16
● Uno a Muchos (1:M): Esta se da cuando un registro es el conjunto
de datos que se obtendrían en una fila, dentro de una tabla en una
base de datos de una entidad A se relaciona con cero o varios
registros de una entidad B, y cada registro de la entidad B se
relaciona únicamente con un registro de la entidad A.
Atributos:
Identificador:
Grado de Relación:
El mismo autor nos menciona que los grados de relación se clasifican en:
17
● GRADO 2 (RELACIÓN BINARIA): Las relaciones en las que
participan dos entidades son binarias o de grado dos. Este tipo de
relación une a dos entidades. Este grado de relación es la más
popular en cualquier Diagrama ER.
Roles:
18
● Una vez dentro nos dirigimos al panel izquierdo
● Presionamos en Security
19
● Ahora presionamos click derecho encima de login y colocamos la opción nueva login.
20
● Ahora colocamos en Login Name : EC3 , posterior a ello seleccionamos Sql server
authentication donde pondremos de password 123.
21
● Nos dirigimos a server roles y dentro de este seleccionamos SYSADMIN y presionamos
ok para poder finalizar.
22
● Ahora nos desconectamos para ingresar con nuestro nuevo login.
23
● Seleccionamos lo siguiente para poder ingresar de nuevo.
24
● Nos volvemos a dirigir donde Security, después logins para verificar si aparece nuestro
nuevo login.
1. use SISTEMAVENTAS
25
5. telefono varchar(9) not null,
7. );
8.
15. );
16.
22. );
23.
26
25.
30. );
32.
33. alter table vendido add constraint FK_d1 foreign key (dni) references clientes(dni);
34. alter table vendido add constraint FK_d2 foreign key (codigo) references
productos(codigo);
35. alter table productos add constraint FK_d3 foreign key (ruc) references proveedor(ruc);
36.
27
para producto
para proveedor
28
29
30
Diagrama de Base de Datos
31
Esta opción nos dará acceso a la siguiente ventana
32
Damos clic en “Libraries” y seleccionamos el botón de agregar JAR/Folder:
33
Una vez presionado el botón, nos dirigirá a la siguiente ventana, en la cual tendremos
que ingresar a la dirección de la carpeta que será Escritorio\JavaSQL y
seleccionamos la versión del conector mssql-jdbc-8.2.2.jre8. Una vez hecho esto
damos clic en el botón “Abrir”.
Codificación:
34
Clase Conexión
package clases;
import java.sql.Connection;
import java.sql.DriverManager;
con= DriverManager.getConnection(conexionURL);
return con;
}catch(Exception e1){
System.out.println("Error:"+e1.toString());
return null;
}
Clase cliente
35
package clases;
public Cliente() {
}
36
public String getDireccion_Cliente() {
return Direccion_Cliente;
}
clase clienteDao
package clases;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
}catch(Exception e1){
System.out.println("Error:"+e1.toString());
return null;
}
}
public void registro(int DNI, String Nombre, int Telefono, String Direccion_Cliente){
37
try{
Connection con = ClienteDAO.getConexion();
CallableStatement proc=con.prepareCall("EXECUTE SPcliente ?,?,?,?");
proc.setInt("DNI", DNI);
proc.setString("Nombre", Nombre);
proc.setInt("Telefono", Telefono);
proc.setString("Direccion_Cliente", Direccion_Cliente);
proc.execute();
}catch(Exception e2){
}
}
clase Producto
package clases;
38
public Producto() {
}
public Producto(int Codigo,String Nombre, String Descripcion, String RUC, String Precio,
int Cantidad, int Stock) {
this.Codigo = Codigo;
this.Nombre = Nombre;
this.Descripcion = Descripcion;
this.RUC = RUC;
this.Precio = Precio;
this.Cantidad = Cantidad;
this.stock = Stock;
}
39
public void setCodigo(int Codigo) {
this.Codigo = Codigo;
}
40
}
41
clase ProductoDao
package clases;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.swing.JComboBox;
42
try{
}catch(Exception e1){
System.out.println("Error:"+e1.toString());
return null;
}
}
public void registro(int Codigo, String Descripcion, String RUC, String Precio, int Stock){
try{
Connection con = ProductoDAO.getConexion();
CallableStatement proc=con.prepareCall("EXECUTE SPproducto ?,?,?,?,?");
proc.setInt("Codigo", Codigo);
proc.setString("Descripcion", Descripcion);
proc.setString("RUC", RUC);
proc.setString("Precio", Precio);
proc.setInt("Stock", Stock);
proc.execute();
}catch(Exception e2){
43
}
} catch (SQLException e) {
System.out.println(e.toString());
}
//Me quede aqui nose como agregarle el combo
}
}
clase Proveedor
44
package clases;
public Proveedor() {
}
45
public void setDireccion(String Direccion) {
this.Direccion = Direccion;
}
clase ProveedorDao
package clases;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
}catch(Exception e1){
System.out.println("Error:"+e1.toString());
return null;
}
}
public void registro(String RUC, String Nombre, int Telefono, String Direccion){
try{
Connection con = ProveedorDAO.getConexion();
46
CallableStatement proc=con.prepareCall("EXECUTE SPprovedor ?,?,?,?");
proc.setString("RUC", RUC);
proc.setString("Nombre", Nombre);
proc.setInt("Telefono", Telefono);
proc.setString("Direccion", Direccion);
proc.execute();
}catch(Exception e2){
}
}
clase Vendidos
package clases;
public Vendidos() {
}
public Vendidos(String N_VENTA, int Codigo, String Producto, String RUC, String Precio,
String Cantidad, String Subtotal, int DNI) {
this.N_VENTA = N_VENTA;
this.Codigo = Codigo;
this.Producto = Producto;
this.RUC = RUC;
this.Precio = Precio;
47
this.Cantidad = Cantidad;
this.Subtotal = Subtotal;
this.DNI = DNI;
}
48
return Cantidad;
}
package clases;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
49
+" database = NUEVO2; "
+" user=DD ;"
+" password=123; ";
try{
}catch(Exception e1){
System.out.println("Error:"+e1.toString());
return null;
}
}
public void registro(String N_VENTA,int Codigo, String Producto, String RUC, String
Precio, String Cantidad,String Subtotal, int DNI){
try{
Connection con = VendidosDAO.getConexion();
CallableStatement proc=con.prepareCall("EXECUTE SPvendidos ?,?,?,?,?,?,?,?");
proc.setString("N_VENTA", N_VENTA);
proc.setInt("Codigo", Codigo);
proc.setString("Producto", Producto);
proc.setString("RUC", RUC);
proc.setString("Precio", Precio);
proc.setString("Cantidad", Cantidad);
proc.setString("Subtotal", Subtotal);
proc.setInt("DNI", DNI);
proc.execute();
}catch(Exception e2){
}
}
Jframe
vistas
50
Control Nombre Asignado Título de Control
51
JTextField4 txt_dir Direccion
52
Control Nombre Asignado Título de Control
53
JTextField3 txt_cant Proveedor
Asignado Control
ar
54
Control Nombre Asignado Título de Control
55
JLabel2 jLabel2 PRODUCTO
CLIENTE
56
JButton1 btn_comprar Comprar
57
Control Nombre Asignado Título de Control
codigo
package tapaquete;
import clases.Cliente;
import clases.ClienteDAO;
import clases.Producto;
import clases.ProductoDAO;
import clases.Proveedor;
import clases.ProveedorDAO;
import clases.Vendidos;
import clases.VendidosDAO;
import java.awt.event.KeyEvent;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
58
public Ventas() {
initComponents();
}
-----------------------------------------------------------------------------------------------------------------
PreparedStatement ps;
ResultSet rs;
ResultSetMetaData rsmd;
int columnas;
59
try {
Connection con = ClienteDAO.getConexion();
ps = con.prepareStatement("SELECT DNI,Nombre,Telefono,Direccion_Cliente
FROM Cliente");
rs= ps.executeQuery();
rsmd=rs.getMetaData();
columnas=rsmd.getColumnCount();
while(rs.next()){
Object[] fila= new Object[columnas];
for(int i=0;i<columnas;i++){
fila[i]=rs.getObject(i+1);
}
modelotabla.addRow(fila);
}
} catch (SQLException e) {
JOptionPane.showMessageDialog(null, "ERROR:" + e.toString());
}
}
PreparedStatement ps;
ResultSet rs;
ResultSetMetaData rsmd;
int columnas;
try {
Connection con = ProveedorDAO.getConexion();
ps = con.prepareStatement("SELECT RUC,Nombre,Telefono, Direccion FROM
Provedor");
rs= ps.executeQuery();
rsmd=rs.getMetaData();
columnas=rsmd.getColumnCount();
while(rs.next()){
Object[] fila= new Object[columnas];
for(int i=0;i<columnas;i++){
fila[i]=rs.getObject(i+1);
}
modelotabla.addRow(fila);
}
} catch (SQLException e) {
60
JOptionPane.showMessageDialog(null, "ERROR:" + e.toString());
}
}
PreparedStatement ps;
ResultSet rs;
ResultSetMetaData rsmd;
int columnas;
try {
Connection con = ProductoDAO.getConexion();
ps = con.prepareStatement("SELECT Codigo, Descripcion, RUC, Precio, Stock
FROM Producto");
rs= ps.executeQuery();
rsmd=rs.getMetaData();
columnas=rsmd.getColumnCount();
while(rs.next()){
Object[] fila= new Object[columnas];
for(int i=0;i<columnas;i++){
fila[i]=rs.getObject(i+1);
}
modelotabla.addRow(fila);
}
} catch (SQLException e) {
JOptionPane.showMessageDialog(null, "ERROR:" + e.toString());
}
61
private void txtcodigonvKeyPressed(java.awt.event.KeyEvent evt) {
// TODO add your handling code here:
/*** if (evt.getKeyCode() == KeyEvent.VK_ENTER) {
if (!"".equals(txtcodigonv.getText())) {
String cod = txtcodigonv.getText();
pd = PdDAO.BuscarPro(cod);
if (pd.getDescripcion() != null) {
txtdescripcionnv.setText("" + pd.getDescripcion());
txtprecionv.setText("" + pd.getPrecio());
txtstocknv.setText("" + pd.getStock());
} else {
txtcodigonv.requestFocus();
}
} else {
JOptionPane.showMessageDialog(null, "Ingrese el codigo del productos");
txtcodigonv.requestFocus();
}
}***/
}
PreparedStatement ps;
ResultSet rs;
ResultSetMetaData rsmd;
int columnas;
try {
Connection con = ProductoDAO.getConexion();
ps = con.prepareStatement("SELECT Codigo, Descripcion, RUC, Precio, Stock
FROM Producto");
rs= ps.executeQuery();
rsmd=rs.getMetaData();
columnas=rsmd.getColumnCount();
while(rs.next()){
62
Object[] fila= new Object[columnas];
for(int i=0;i<columnas;i++){
fila[i]=rs.getObject(i+1);
}
modelotabla.addRow(fila);
}
} catch (SQLException e) {
JOptionPane.showMessageDialog(null, "ERROR:" + e.toString());
}
}
subtotal= precio*cantidad;
txtsubtotal.setText(String.valueOf(subtotal));
}
PreparedStatement ps;
ResultSet rs;
ResultSetMetaData rsmd;
int columnas;
63
try {
Connection con = VendidosDAO.getConexion();
ps = con.prepareStatement("SELECT N_VENTA, Codigo, Producto, RUC,Precio,
Cantidad, Subtotal,DNI FROM Vendidos");
rs= ps.executeQuery();
rsmd=rs.getMetaData();
columnas=rsmd.getColumnCount();
while(rs.next()){
Object[] fila= new Object[columnas];
for(int i=0;i<columnas;i++){
fila[i]=rs.getObject(i+1);
}
modelotabla.addRow(fila);
}
} catch (SQLException e) {
JOptionPane.showMessageDialog(null, "ERROR:" + e.toString());
}
Conclusiones:
Referencias Bibliográficas:
64
García, E. (2020). Diferencia Entre Clases Abstractas E Interfaces En Java.
códigofacilito. https://codigofacilito.com/articulos/clases-abstractas-interfaces-java
2022, https://es.acervolima.com/java-swing-jlist-con-ejemplos/
https://aprendeprogramando.es/cursos-online/java/jscrollpane/
B. (15 de mayo 2021). Como usar JComboBox en Java (Lista desplegable). Byspel.
https://byspel.com/como-usar-jcombobox-en-java-lista-desplegable/
65
Nieva, G. (23 de Marzo 2020). Cómo crear aplicaciones multi-documento usando
JInternalFrame. DCodinGames. https://dcodingames.com/como-crear-aplicaciones-
multi-documento-usando-jinternalframe/
Sierra,M. y Cuenca, L.(s.f) “Interface Collection (API java). add, remove, size.
Ejemplo ArrayList. Diferencia con List. Streams (CU00917C)”. Obtenido de :
https://www.aprenderaprogramar.com/index.php?
option=com_content&view=article&id=596:interface-collection-api-java-add-remove-
size-ejemplo-arraylist-diferencia-con-list-streams-cu00917c&catid=58&Itemid=180
Equipo Geek(2020) Qué es HashSet Java y cómo comenzar con él. Obtenido de:
https://ifgeekthen.nttdata.com/es/que-es-hashset-java-y-como-comenzar-con-
66
el#:~:text=En%20resumidas%20l%C3%ADneas%20la%20clase,una%20llave%20a
%20un%20valor.
67