· 8 years ago · Aug 14, 2018, 04:34 PM
1# Quat Solutions - Proyecto Control de Personal
2
3Por Alan Badillo Salas (badillo.soft@hotmail.com)
4
5## Introducción
6
7El proyecto consiste en un sistema de control de personal y proyectos dividido en varias etapas. La primer etapa consistirá en definir la base de datos utilizada. La segunda etapa consistirá en crear formularios de consola para cargar y visualizar datos, una tercer etapa será el montaje de un servidor backend con Spring para proveer los servicios para procesar diversos formularios enviados y una cuarta etapa será la creación de una aplicación web para proveer los fomularios y visualizar los datos del sistema.
8
9## Base de datos
10
11Se han diseñado las siguientes tabla para la base de datos `quat_dev`.
12
13> Crear o limpiar la base de datos `quat_dev`.
14
15~~~sql
16-- Borra la base de datos quat_dev si existe
17drop database if exists quat_dev;
18-- Crea la base de datos quat_dev
19create database quat_dev;
20-- Usa la base de datos quat_dev
21use quat_dev;
22~~~
23
24> Tabla personal
25
26~~~sql
27-- Asignado a Mardeli
28create table personal (
29 id int primary key auto_increment,
30 nombre varchar(60) not null,
31 ap_paterno varchar(60) not null,
32 ap_materno varchar(60),
33 rfc varchar(20),
34 curp varchar(20),
35 fecha_ingreso timestamp,
36 estatus varchar(255),
37 foto mediumblob
38);
39~~~
40
41> Tabla proyectos
42
43~~~sql
44-- Asignado a Marco
45create table proyectos (
46 id int primary key auto_increment,
47 nombre varchar(255) not null,
48 descripcion text,
49 fecha_inicio timestamp not null,
50 fecha_entrega timestamp,
51 presupuesto float,
52 retorno_esperado float
53);
54~~~
55
56> Tabla Puestos
57
58~~~sql
59-- Asignado a Steffany
60create table puestos (
61 id int primary key auto_increment,
62 nombre varchar(60) not null,
63 caracteriscas varchar(255) not null
64);
65~~~
66
67> Tabla Gastos
68
69~~~sql
70-- Asignado a Victor
71create table gastos (
72 id int primary key auto_increment,
73 tipo varchar(255) not null,
74 descripcion text,
75 forma_pago_requerido varchar(255)
76);
77~~~
78
79> Tabla Asignacion del Personal al Puesto
80
81~~~sql
82-- Asignado a Steffany
83create table asignacion_personal_puesto (
84 id int primary key auto_increment,
85 id_personal int not null,
86 id_puesto int not null,
87 salario float not null,
88 fecha_asignacion timestamp not null,
89 fecha_desasignacion timestamp
90);
91~~~
92
93> Tabla Asignacion del Personal al Proyecto
94
95~~~sql
96-- Asignado a Marco
97create table asignacion_personal_proyecto (
98 id int primary key auto_increment,
99 id_personal int not null,
100 id_proyecto int not null,
101 objetivos varchar(255),
102 fecha_asignacion timestamp,
103 fecha_cumplimiento timestamp,
104 fecha_desasignacion timestamp,
105 motivo_desasignacion varchar(255)
106);
107~~~
108
109> Tabla Registro del Gasto al Proyecto
110
111~~~sql
112-- Asignado a Victor
113create table registro_gasto_proyecto (
114 id int primary key auto_increment,
115 id_gasto int not null,
116 id_proyecto int not null,
117 forma_pago varchar(255),
118 comentarios text,
119 factura_pdf mediumblob,
120 factura_xml mediumblob
121);
122~~~
123
124> Tabla Registro de laa Facturas al Proyecto
125
126~~~sql
127-- Asignado a Mardeli
128create table registro_factura_proyecto (
129 id int primary key auto_increment,
130 id_proyecto int not null,
131 rfc_emisor varchar(30),
132 folio varchar(100),
133 pdf mediumblob,
134 xml mediumblob,
135 subtotal float,
136 iva_retenido float,
137 isr_retenido float,
138 iva_transladado float,
139 total float,
140 fecha_facturacion timestamp,
141 estatus varchar(255)
142);
143~~~
144
145## Formularios de Carga de datos en Consola (Java)
146
147A continuación se describen los formularios para subir datos a cada tabla en *Java*.
148
149> Registrar nuevo Personal
150
151~~~java
152class PersonalNuevoCli {
153 public static void main(String[] args) {
154 Scanner sc = new Scanner(System.in);
155 System.out.println("Registrar nuevo Personal");
156 System.out.println("------------------------------");
157 System.out.print("Nombre: ");
158 String nombre = sc.nextLine();
159 System.out.print("Apellido Paterno: ");
160 String ap_paterno = sc.nextLine();
161 System.out.print("Apellido Materno (opcional): ");
162 String ap_materno = sc.nextLine();
163 System.out.print("RFC (opcional): ");
164 String rfc = sc.nextLine();
165 System.out.print("Curp (opcional): ");
166 String curp = sc.nextLine();
167 System.out.print("Fecha Ingreso (YYYY-MM-DD): ");
168 String fecha_ingreso = sc.nextLine();
169 Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/quat_dev?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC", "root", "****");
170 String query = "insert into personal " +
171 "(nombre, ap_paterno, ap_materno, rfc, curp, fecha_ingreso, estatus) " +
172 "values (?, ?, ?, ?, ?, ?, ?)";
173 PreparedStatement st = conn.prepareStatement(query, Statement.RETURN_GENERATED_KEYS);
174 st.setString(1, nombre);
175 st.setString(2, ap_paterno);
176 st.setString(3, ap_materno);
177 st.setString(4, rfc);
178 st.setString(5, curp);
179 st.setString(6, fecha_ingreso);
180 st.setString(7, "Personal registrado desde el Cliente de Consola v1.0");
181 st.execute();
182 ResultSet rs = st.getGeneratedKeys();
183 System.out.println("------------------------------");
184 if (rs.next()) {
185 int id = rs.getInt(1);
186 System.out.printf("Se creó el personal con id: %d\n", id);
187 } else {
188 System.out.println("Error al registrar al personal");
189 }
190 }
191}
192~~~