Documente Academic
Documente Profesional
Documente Cultură
Soluciones Planteadas:
Centrándonos en la petición del planteamiento, he divido el problema de la base de datos
de la siguiente forma:
Como podemos apreciar se destacan varias entidades y campos:
a) De cada socio se guardan datos personales (número de identificación, nombre, direccion
y sexo, etc.).
b) Los Datos Del Barco o Barcos que poseen (número de Matrícula, nombre, Numero Del
Amarre, cuota que paga por el mismo).
c) Se requiere mantener la información sobre las salidas realizadas por cada Barco, Como
la Fecha y hora de salida, el destino y los Datos personales Del capitán Del Barco.
Aquí podemos ver claramente las relaciones y las entidades, donde nos muestra las tablas
a considerar, como son (socio, patron, barco, salida, y destino), pero para ello nos
basamos en el esquema siguiente, un socio y patron tienen las mismas informaciones,
solo el tipo de persona que es, alli elimino esas dos tablas y creo una sola llamada persona,
indicándole un campo que se llame tipo de persona, con esto tengo otra tabla donde
almacenare (si es socio, si es patron o es propietario, así de 3 tablas solo tengo una).
Todo barco viene de algún lugar y todo socio o persona tiene una nacionalidad, alli vemos
que tenemos que crear una tabla nacionalidad para poder relacionar con el barco y su
salida. También sabemos que el socio o persona o capitán deben de tener un sexo
característico, por ello debemos crear otra tabla llamada Sexo.
Con esto tendríamos ya nuestro esquema de bases datos:
Tablas: (Barco, Persona, Destino, Nacionalidad, Salida, Sexo, tipo Persona), adicional
a estas tendremos una tabla extra llamada Usuario, donde cada usuario seremos nosotros,
los que manipularemos el sistema.
Ya no entrare en estas cuestiones de instalación, y configuracion de un sistema de bases
de datos, porque a esta altura considero ya todos deben conocer esto, y deben de tenerlo
instalado en PC o laptop, a continuación detalle en codigo de los comandos usados que
solo deben de introducir.
Ya dentro del SQL server, nos loguemos con el usuario que tenemos al servidor creado
para tales fines, en mi caso como ven Juancito.
Use Clubnautico
Go
Al digitar o copiar este codigo y ejecutar nos sale en para más abajo donde dice mensaje
en español, si es ingles ya sabe es lo mismo, vemos que dice que se ejecutó correctamente,
lo que hemos hecho es crear la base de datos, luego de esto escribimos el otro codigo que
es para indicar que queremos usar esa base de datos para trabajar en ella digitar los demas
códigos.
Hasta aquí les explicó lo demas es intuitivo, es la misma operación, digitar y ejecutar cada
bloque de codigo, primero hagan las tablas, es decir todas las tablas y luego introducen
los datos.
A continuación todos los códigos de la Base de Datos y sus Tablas así como los registros
de los mismos.
--Creamos la tabla Usuarios
namespace Club_Nautico_Grupo.N._3
{
public partial class FrmLogin : Form
{
public FrmLogin()
{
InitializeComponent();
}
try
{
//Creamos la Cadena de conexion a la Base de Datos y las Tablas
SqlConnection miConecion = new
SqlConnection(@"server=JUANCITO\SQLJUANCITO; Initial Catalog = CLUBNAUTICO;
Integrated Security=True;");
//Llenando el dataAdapter
da.Fill(ds, "USUARIO");
//utilizado para representar una fila de la tabla q necesitas en
este caso usuario
DataRow DR;
DR = ds.Tables["USUARIO"].Rows[0];
}
catch
{
//en caso que la contraseña sea erronea mostrara un mensaje
//dentro de los parentesis va: "Mensaje a mostrar","Titulo de la
ventana",botones a mostrar en ste caso OK, icono a mostrar en este caso uno de
error
MessageBox.Show("Error! Su contraseña y/o usuario son invalidos",
"Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
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 Club_Nautico_Grupo.N._3
{
public partial class FrmPrincipal : Form
{
public FrmPrincipal()
{
InitializeComponent();
}
//instanciando el formulario
FrmPersonas FrmPersonas = new FrmPersonas();
FrmPersonas.Show();//abriendo el formulario
this.Hide();//esto sirve para ocultar el formulario
}
//instanciando el formulario
FrmBarco FrmBarco = new FrmBarco();
FrmBarco.MdiParent = this;
FrmBarco.Show();//abriendo el formulario
//instanciando el formulario
FrmPersonas FrmPersonas = new FrmPersonas();
FrmPersonas.MdiParent = this;
FrmPersonas.Show();//abriendo el formulario
namespace Club_Nautico_Grupo.N._3
{
public partial class FrmPersonas : Form
{
//Establecemos nuestra cadena de conexion con el Servidor SQL Server.
SqlConnection con = new SqlConnection("Data
Source=JUANCITO\\SQLJUANCITO;Initial Catalog=CLUBNAUTICO;Integrated
Security=true;");
SqlCommand cmd;
SqlDataAdapter adapt;
int ID = 0;
public FrmPersonas()
{
InitializeComponent();
DisplayData();
}
private void btninsert_Click(object sender, EventArgs e)
{
//Validamos que nuestros campos de textos esten vacios, y llenamos
con los datos digitados.
if (txt_dni.Text != "" && txt_nombre.Text != "" && txt_apellido.Text
!= "" && txt_direccion.Text != "" && txt_telefono.Text != "" && txt_Sexo.Text !=
"" && txt_nacionalidad.Text != "" && txt_tipo_persona.Text != "")
{
cmd = new SqlCommand("insert into
persona(DNI,nombre,apellidos,direccion,telefono,codigo_sexo,Id_nacion,tipo_person
a)values(@DNI,@nombre,@apellidos,@direccion,@telefono,@codigo_sexo,@Id_nacion,@ti
po_persona)", con);
//abrimos nuestra conexion para pasarle los oparametros de los
campos digitados en las tablas
con.Open();
cmd.Parameters.AddWithValue("@DNI", txt_dni.Text);
cmd.Parameters.AddWithValue("@nombre", txt_nombre.Text);
cmd.Parameters.AddWithValue("@apellidos", txt_apellido.Text);
cmd.Parameters.AddWithValue("@direccion", txt_direccion.Text);
cmd.Parameters.AddWithValue("@telefono", txt_telefono.Text);
cmd.Parameters.AddWithValue("@codigo_sexo", txt_Sexo.Text);
cmd.Parameters.AddWithValue("@id_nacion", txt_nacionalidad.Text);
cmd.Parameters.AddWithValue("@tipo_persona",
txt_tipo_persona.Text);
cmd.ExecuteNonQuery();
con.Close();
MessageBox.Show("Registro Creado Sactisfactoriamente!");
//DisplayData();
ClearData();
}
else
{
MessageBox.Show("No Se Guardo Correctamente, vuelva a intentar
llenando todos los campos.!");
}
}
//Display Data in DataGridView
private void DisplayData()
{
con.Open();
DataTable dt = new DataTable();
adapt = new SqlDataAdapter("select * from persona", con);
adapt.Fill(dt);
dtgv_personas.DataSource = dt;
con.Close();
}
//Clear Data
private void ClearData()
{
//txt_codigo.Text = "";
txt_dni.Text = "";
txt_nombre.Text = "";
txt_apellido.Text = "";
txt_direccion.Text = "";
txt_telefono.Text = "";
txt_Sexo.Text = "";
txt_nacionalidad.Text = "";
txt_tipo_persona.Text = "";
ID = 0;
}
btnbuscar.Enabled = false;
btndelete.Enabled = false;
btnupdate.Enabled = false;
btn_nuevo.Enabled = false;
btn_reporte.Enabled = false;
ID = 0;
}
txt_codigo.Enabled = false;
txt_dni.Enabled = false;
txt_nombre.Enabled = false;
txt_apellido.Enabled = false;
txt_direccion.Enabled = false;
txt_telefono.Enabled = false;
txt_Sexo.Enabled = false;
txt_nacionalidad.Enabled = false;
txt_tipo_persona.Enabled = false;
txt_bscar.Enabled = false;
ID = 0;
}
txt_codigo.Enabled = false;
txt_dni.Enabled = false;
txt_nombre.Enabled = false;
txt_apellido.Enabled = false;
txt_direccion.Enabled = false;
txt_telefono.Enabled = false;
txt_Sexo.Enabled = false;
txt_nacionalidad.Enabled = false;
txt_tipo_persona.Enabled = false;
txt_bscar.Enabled = true;
ID = 0;
btnbuscar.Enabled = true;
btndelete.Enabled = true;
btnupdate.Enabled = true;
btn_nuevo.Enabled = true;
btn_reporte.Enabled = true;
}
}
else
{
MessageBox.Show("Por favor Seleccione Registro que se va
Actualizar");
}
}
// Eliminar registro
private void btndelete_Click(object sender, EventArgs e)
{
if (ID != 0)
{
cmd = new SqlCommand("delete persona where
id_persona=@id_persona", con);
con.Open();
cmd.Parameters.AddWithValue("@id_persona", ID);
else
{
MessageBox.Show("El Registro no se ha borrado!");
con.Close();
}
DisplayData();
ClearData();
}
else
{
MessageBox.Show("Por favor Seleccione un Registro para Borrar");
cmd.ExecuteNonQuery();
con.Close();
}
}
/// <summary>
/// ////
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
txt_codigo.Text = "";
txt_dni.Text = "";
txt_nombre.Text = "";
txt_apellido.Text = "";
txt_direccion.Text = "";
txt_telefono.Text = "";
txt_Sexo.Text = "";
txt_nacionalidad.Text = "";
txt_tipo_persona.Text = "";
}
con.Close();
}
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;
using System.Data.SqlClient;
using CrystalDecisions.CrystalReports.Engine;
namespace Club_Nautico_Grupo.N._3
{
public partial class Filtro_Persona_Reporte : Form
{
ReportDocument cryRpt = new ReportDocument();
public Filtro_Persona_Reporte()
{
InitializeComponent();
}
sda.Fill(dst,"persona");
cryRpt.Load(@"C:\Users\raul\Desktop\Club_Nautico_Grupo.N.3\Club_Nautico_Grupo.N.3
\Reportes Varios\Filtro_personas_Tipo.rpt");
cryRpt.SetDataSource(dst);
crystalReportViewer1.ReportSource = cryRpt;
crystalReportViewer1.Refresh();
sda.Fill(dst, "persona");
cryRpt.Load(@"C:\Users\raul\Desktop\Club_Nautico_Grupo.N.3\Club_Nautico_Grupo.N.3
\Reportes Varios\Filtro_personas_Tipo.rpt");
cryRpt.SetDataSource(dst);
crystalReportViewer1.ReportSource = cryRpt;
crystalReportViewer1.Refresh();
}
sda.Fill(dst, "persona");
cryRpt.Load(@"C:\Users\raul\Desktop\Club_Nautico_Grupo.N.3\Club_Nautico_Grupo.N.3
\Reportes Varios\Filtro_personas_Tipo.rpt");
cryRpt.SetDataSource(dst);
crystalReportViewer1.ReportSource = cryRpt;
crystalReportViewer1.Refresh();
}
}
}
Ventana Barco:
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;
using System.Data.SqlClient;
namespace Club_Nautico_Grupo.N._3
{
public partial class FrmBarco : Form
{
SqlCommand sCommand;
SqlDataAdapter sAdapter;
SqlCommandBuilder sBuilder;
DataSet sDs;
DataTable sTable;
//int ID = 0;
public FrmBarco()
{
InitializeComponent();
}
//ID = 0;
string cadsql = "select * from Barco where id_barco = '" +
txt_bscar.Text + "' ";
SqlCommand comando = new SqlCommand(cadsql, con);
con.Open();
}
else
{
MessageBox.Show("No se ha encontrado el registro buscado!");
txt_Id_Barco.Text = "";
txt_Nombre_Barco.Text = "";
txt_n_Amarre.Text = "";
txt_destino.Text = ""; ;
txt_capitan.Text = "";
txt_bscar.Text = "";
//ID = 0;
}
con.Close();
}
}
}
Ventana Destinos
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;
using System.Data.SqlClient;
namespace Club_Nautico_Grupo.N._3
{
public partial class FrmDestinos : Form
{
//Establecemos nuestra cadena de conexion con el Servidor SQL Server.
SqlConnection con = new SqlConnection("Data
Source=JUANCITO\\SQLJUANCITO;Initial Catalog=CLUBNAUTICO;Integrated
Security=true;");
SqlCommand cmd;
SqlDataAdapter adapt;
int ID = 0;
public FrmDestinos()
{
InitializeComponent();
DisplayData();
}
private void Inabilitar_Botones()
{
//txtcodigo_Destino.Enabled = false;
//txt_Destino.Enabled = false;
//btnupdate.Enabled = false;
//btn_cancelar.Enabled = true;
//btninsert.Enabled = true;
//btndelete.Enabled = true;
//btnsalir.Enabled = true;
//ID = 0;
}
//Clear Data
private void ClearData()
{
txtcodigo_Destino.Enabled = false;
txt_Destino.Enabled = false;
btnupdate.Enabled = false;
btn_cancelar.Enabled = false;
btninsert.Enabled = false;
btndelete.Enabled = false;
btnsalir.Enabled = true;
ID = 0;
}
}
private void FrmDestinos_Load(object sender, EventArgs e)
{
Inabilitar_Botones();
SetFontAndColors();
ID =
Convert.ToInt32(Dtgv_Destinos.Rows[e.RowIndex].Cells[0].Value.ToString());
//txtcodigo_Destino.Text =
Dtgv_Destinos.Rows[e.RowIndex].Cells[0].Value.ToString();
txt_Destino.Text =
Dtgv_Destinos.Rows[e.RowIndex].Cells[1].Value.ToString();
else
{
MessageBox.Show("El Registro no se ha borrado!");
con.Close();
}
DisplayData();
ClearData();
}
else
{
MessageBox.Show("Por favor Seleccione un Registro para Borrar");
cmd.ExecuteNonQuery();
con.Close();
}
}
if (txt_Destino.Text != "" )
{
}
else
{
MessageBox.Show("Por favor Seleccione Registro que se va
Actualizar");
}
}
}
else
{
MessageBox.Show("No se ha encontrado el registro buscado!");
txtcodigo_Destino.Text = "";
txt_Destino.Text = "";
ID = 0;
}
con.Close();
}
Reportes de Destinos:
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;
using System.Data.SqlClient;
using CrystalDecisions.CrystalReports.Engine;
namespace Club_Nautico_Grupo.N._3
{
public partial class Reporte_Salidas : Form
{
SqlConnection con = new SqlConnection("Data
Source=JUANCITO\\SQLJUANCITO;Initial Catalog=CLUBNAUTICO;Integrated
Security=true;");
ReportDocument cryRpt = new ReportDocument();
public Reporte_Salidas()
{
InitializeComponent();
}
sda.Fill(dst, "salida");
cryRpt.Load(@"C:\Users\raul\Desktop\Club_Nautico_Grupo.N.3\Club_Nautico_Grupo.N.3
\Reportes Varios\Reporte_Salidas.rpt");
cryRpt.SetDataSource(dst);
crystalReportViewer1.ReportSource = cryRpt;
crystalReportViewer1.Refresh();
sda.Fill(dst, "destino");
cryRpt.Load(@"C:\Users\raul\Desktop\Club_Nautico_Grupo.N.3\Club_Nautico_Grupo.N.3
\Reportes Varios\Reporte_Salidas.rpt");
cryRpt.SetDataSource(dst);
crystalReportViewer1.ReportSource = cryRpt;
crystalReportViewer1.Refresh();
}
sda.Fill(dst, "tipo_persona");
cryRpt.Load(@"C:\Users\raul\Desktop\Club_Nautico_Grupo.N.3\Club_Nautico_Grupo.N.3
\Reportes Varios\Reporte_Salidas.rpt");
cryRpt.SetDataSource(dst);
crystalReportViewer1.ReportSource = cryRpt;
crystalReportViewer1.Refresh();
sda.Fill(dst, "Barco");
cryRpt.Load(@"C:\Users\raul\Desktop\Club_Nautico_Grupo.N.3\Club_Nautico_Grupo.N.3
\Reportes Varios\Reporte_Salidas.rpt");
cryRpt.SetDataSource(dst);
crystalReportViewer1.ReportSource = cryRpt;
crystalReportViewer1.Refresh();
}
}
}
Ventana Salidas
Codigo
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient; // Libreria necesaria para los comandos SQL Server y
la Conexion a la Base de Datos.
namespace Club_Nautico_Grupo.N._3
{
public partial class FrmSalida : Form
{
//Establecemos nuestra cadena de conexion con el Servidor SQL Server.
SqlConnection con = new SqlConnection("Data
Source=JUANCITO\\SQLJUANCITO;Initial Catalog=CLUBNAUTICO;Integrated
Security=true;");
SqlCommand cmd;
SqlDataAdapter adapt;
int ID = 0;
public FrmSalida()
{
InitializeComponent();
DisplayData();
}
btnbuscar.Enabled = false;
btndelete.Enabled = false;
btnupdate.Enabled = false;
btn_nuevo.Enabled = false;
ID = 0;
}
btnbuscar.Enabled = false;
btndelete.Enabled = false;
btnupdate.Enabled = false;
btn_nuevo.Enabled = false;
ID = 0;
}
cmd.ExecuteNonQuery();
con.Close();
MessageBox.Show("Registro Creado Sactisfactoriamente!");
//DisplayData();
ClearData();
}
else
{
MessageBox.Show("No Se Guardo Correctamente, vuelva a intentar
llenando todos los campos.!");
}
}
//Clear Data
private void ClearData()
{
txtId_Barco.Enabled = false;
txt_Matricula.Enabled = true;
Dtp_Fecha.Enabled = true;
txt_destino.Enabled = true;
txt_persona.Enabled = true;
txt_bscar.Enabled = false;
ID = 0;
}
}
private void btndelete_Click(object sender, EventArgs e)
{
if (ID != 0)
{
cmd = new SqlCommand("delete salida where id_salida=@id_salida",
con);
con.Open();
cmd.Parameters.AddWithValue("@id_salida", ID);
else
{
MessageBox.Show("El Registro no se ha borrado!");
con.Close();
}
DisplayData();
ClearData();
}
else
{
MessageBox.Show("Por favor Seleccione un Registro para Borrar");
cmd.ExecuteNonQuery();
con.Close();
}
}
}
else
{
MessageBox.Show("No se ha encontrado el registro buscado!");
txtId_Barco.Text = "";
txt_Matricula.Text = "";
Dtp_Fecha.Text = "";
txt_destino.Text = ""; ;
txt_persona.Text = "";
txt_bscar.Text = "";
ID = 0;
}
con.Close();
}
btnbuscar.Enabled = true;
btndelete.Enabled = false;
btnupdate.Enabled = false;
btn_nuevo.Enabled = true;
ID = 0;
}
}
else
{
MessageBox.Show("Por favor Seleccione Registro que se va
Actualizar");
}
}
frmbuscar.Show();//abriendo el formulario
}
Reporte Salidas
Codigo:
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;
using System.Data.SqlClient;
using CrystalDecisions.CrystalReports.Engine;
namespace Club_Nautico_Grupo.N._3
{
public partial class Reporte_Destinos : Form
{
ReportDocument cryRpt = new ReportDocument();
public Reporte_Destinos()
{
InitializeComponent();
}
sda.Fill(dst, "destino");
cryRpt.Load(@"C:\Users\raul\Desktop\Club_Nautico_Grupo.N.3\Club_Nautico_Grupo.N.3
\Reportes Varios\Reporte_Destinos.rpt");
cryRpt.SetDataSource(dst);
crystalReportViewer1.ReportSource = cryRpt;
crystalReportViewer1.Refresh();
}