You are on page 1of 15

UNIVERSIDAD DE GUAYAQUIL

FACULTAD DE CIENCIAS MATEMATICAS Y FISICAS


CARRERA DE INGENIERIA EN SISTEMAS
COMPUTACIONALES

TEMA:
SISTEMA BIBLIOTECARIO PARA PRESTAMO, RESERVACION Y
CONSULTA DE LIBROS
(WEB SERVICES)
ASIGNATURA:
SISTEMAS OPERATIVOS DISTRIBUIDOS
INTEGRANTES:
MARIA VICTORIA LAZO CHIRIGUAYO
OSCAR RENE ORTIZ SALTOS
PROFESOR:
ING. JAVIER GONZALEZ
PARALELO:
S7K

CICLO I 2014

El trabajo que planteamos hacer fue crear una plataforma en linea por el
cual por medio de Servicios Web consulte a una base de datos los libros
que se encuentran disponibles y los que se podran reservar o prestar en una
biblioteca.
El esquema propuesto fue el siguiente:

El objetivo principal es que al momento de ir presencialmente al


establecimiento de prstamo del libro evitar recibir por parte de el/la
bibliotecario/a la noticia de que el libro no se encuentra disponible.
Y en el caso que si se encuentre el libro y nos ubiquemos en un lugar lejano
al del prstamo, poder realizar la reservacin y as pasar luego a retirarlo.
La persona para poder acceder a este servicio deber poseer un usuario y
contrasea, al ingresar al portal la primera pantalla que vera ser esta:

Es en la cual podr ingresar su autenticacin, ya que sin ella no podr


acceder a ningn servicio.
Para saber que su usuario y contrasea fueron aceptados en el lugar donde
se encontraba el login aparecern los nombres y id del usuario asi como
muestra la siguiente pantalla.

El men que se encuentra en la parte superior permitir hacer el uso de los


siguientes servicios que se encuentran listados a continuacin:

Todos estos son mtodos de un Web Service que permitirn consultar,


insertar, eliminar y actualizar registros de una base de datos.
Las interfaces que permiten la comunicacin Cliente-Aplicativo-Base de
datos son:

A continuacin se encuentra el Cdigo Fuente del servicio:

ServicioWeb.asmx
using
using
using
using
using
using
using
using

System;
System.Collections.Generic;
System.Linq;
System.Web;
System.Data;
System.Web.Services;
ServicioBiblioteca.Clases;
ServicioBiblioteca.Entidades;

namespace ServicioBiblioteca
{
/// <summary>
/// Descripcin breve de Service1
/// </summary>

[WebService(Namespace =
"http://localhost/",Name="OROMAR",Description="Proyecto de SOD S7K 2014")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// Para permitir que se llame a este servicio Web desde un script, usando ASP.NET
AJAX, quite la marca de comentario de la lnea siguiente.
// [System.Web.Script.Services.ScriptService]
public class ServicioWeb : System.Web.Services.WebService
{
/*TRANSACCIONES LIBROS*/
[WebMethod]
public DataTable ConsultaBaseLibros()
{
string error;
DataTable dtable=null;
try
{
LibrosDAO lDao = new LibrosDAO();
dtable = lDao.ConsultaBaseLibros();
}
catch (Exception ex) { error = ex.Message; }

return dtable;

[WebMethod]
public DataTable ConsultaLibro(string id_libro)
{
string error;
DataTable dtable = null;
try
{
LibrosDAO ldao = new LibrosDAO();
dtable = ldao.ConsultaLibro(id_libro);
}
catch (Exception ex) { error = ex.Message; }
return dtable;
}
[WebMethod]
public int IngresaLibro(string titulo,string autor, string editorial, int edicion)
{
LibrosDAO lDao = new LibrosDAO();
EntidadLibros eL = new EntidadLibros(titulo, autor, editorial, edicion);
int d = lDao.IngresaLibro(eL);
return d;
}
[WebMethod]
public int EliminaLibro(string id_libro)
{
LibrosDAO ldao = new LibrosDAO();
int d = ldao.EliminaLibro(id_libro);
return d;
}
[WebMethod]

public int ActualizaLibro(string id_libro,string titulo, string autor, string editorial, int
edicion)
{
LibrosDAO lDao = new LibrosDAO();
EntidadLibros eL = new EntidadLibros(id_libro,titulo, autor, editorial, edicion);
int d = lDao.ActualizaLibro(eL);
return d;
}
/*TRANSACCIONES USUARIOS*/
[WebMethod]
public DataTable ConsultaBaseUsuarios()
{
string error;
DataTable dtable = null;
try
{
UsuariosDAO uDao = new UsuariosDAO();
dtable = uDao.ConsultaBaseUsuarios();
}
catch (Exception ex) { error = ex.Message; }
return dtable;
}
[WebMethod]
public DataTable ConsultaUsuario(string id_usuario)
{
string error;
DataTable dtable = null;
try
{
UsuariosDAO uDao = new UsuariosDAO();
dtable = uDao.ConsultaUsuario(id_usuario);
}
catch (Exception ex) { error = ex.Message; }
}

return dtable;

[WebMethod]
public int IngresaUsuario(string id_usuario,string nombre, string apellido, string
ciudad, string fechaNacim)
{
UsuariosDAO uDao = new UsuariosDAO();
EntidadUsuarios eU = new EntidadUsuarios(id_usuario,nombre, apellido, ciudad,
DateTime.Parse(fechaNacim));
int d = uDao.IngresaUsuario(eU);
return d;
}
[WebMethod]
public int EliminaUsuario(string id_usuario)
{
UsuariosDAO uDao = new UsuariosDAO();
int d = uDao.EliminaUsuario(id_usuario);
return d;
}

[WebMethod]
public int ActualizaUsuario(string id_usuario, string nombre, string apellido, string
ciudad, string fechaNacim)
{
UsuariosDAO uDao = new UsuariosDAO();
EntidadUsuarios eU = new EntidadUsuarios(id_usuario, nombre, apellido, ciudad,
DateTime.Parse(fechaNacim));
int d = uDao.ActualizaUsuario(eU);
return d;
}
[WebMethod]
public DataTable ConsultaTransaccionLibros()
{
TransaccionesLibrosDAO uDao = new TransaccionesLibrosDAO();
DataTable dtable = new DataTable();
dtable = uDao.ConsultaTransaccionLibros();
return dtable;
}
[WebMethod]
public int ReservaLibros(string id_libro,string id_usuario)
{
TransaccionesLibrosDAO uDao = new TransaccionesLibrosDAO();
return uDao.ReservaLibros(id_libro, id_usuario);
}
}

ConexionBase.cs
using
using
using
using
using
using

System;
System.Collections.Generic;
System.Linq;
System.Web;
System.Data.SqlClient;
System.Configuration;

namespace ServicioBiblioteca.Conexion
{
public class ConexionBase
{
public SqlConnection conectar()
{
SqlConnection conexion= new
SqlConnection(ConfigurationManager.ConnectionStrings["CadenaConexion"].Connection
String);
return conexion;
}
}
}

LibrosDAO.cs
using
using
using
using
using

System;
System.Collections.Generic;
System.Linq;
System.Web;
System.Data.SqlClient;

using ServicioBiblioteca.Conexion;
using ServicioBiblioteca.Entidades;
using System.Data;
namespace ServicioBiblioteca.Clases
{
public class LibrosDAO
{
ConexionBase cb = new ConexionBase();
public DataTable ConsultaBaseLibros()
{
SqlConnection con = cb.conectar();
DataTable dtable= new DataTable();
SqlDataReader reader;
SqlCommand command = new SqlCommand("ConsultaLibros", con);
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add("@pv_error", SqlDbType.VarChar,100).Direction =
ParameterDirection.Output;
con.Open();
reader = command.ExecuteReader();
dtable.TableName = "Libros";
dtable.Load(reader);
con.Close();
return dtable;
}
public DataTable ConsultaLibro(string id_libro)
{
SqlConnection con = cb.conectar();
DataTable dtable = new DataTable();
SqlDataReader reader;
SqlCommand command = new SqlCommand("ConsultaLibro", con);
command.CommandType = CommandType.StoredProcedure;
command.Parameters.AddWithValue("@pv_identificador", id_libro);
command.Parameters.Add("@pv_error", SqlDbType.VarChar, 100).Direction =
ParameterDirection.Output;
con.Open();
reader = command.ExecuteReader();
dtable.TableName = "Libros";
dtable.Load(reader);
con.Close();
return dtable;
}
public int IngresaLibro(EntidadLibros eL)
{
int r;
SqlConnection con = cb.conectar();
SqlCommand command = new SqlCommand("InsertaLibro", con);
command.CommandType = CommandType.StoredProcedure;
//command.Parameters.Add("@tramite", SqlDbType.VarChar, 100);
command.Parameters.AddWithValue("@pv_titulo",eL.Titulo);
command.Parameters.AddWithValue("@pv_autor", eL.Autor);

command.Parameters.AddWithValue("@pv_editorial", eL.Editorial);
command.Parameters.AddWithValue("@pn_edicion", eL.Edicion);
command.Parameters.Add("@pv_error", SqlDbType.VarChar, 100).Direction =
ParameterDirection.Output;
con.Open();
r=command.ExecuteNonQuery();
con.Close();
return r;
}
public int EliminaLibro(string id_libro)
{
int r;
SqlConnection con = cb.conectar();
SqlCommand command = new SqlCommand("delete from Libros where id_libro=
@id_libro", con);
command.Parameters.AddWithValue("@id_libro",id_libro);
command.Parameters.Add("@pv_error", SqlDbType.VarChar, 100).Direction =
ParameterDirection.Output;
con.Open();
r = command.ExecuteNonQuery();
con.Close();
return r;
}
public int ActualizaLibro(EntidadLibros eL)
{
int r=0;
try
{
SqlConnection con = cb.conectar();
SqlCommand command = new SqlCommand("ActualizaLibro", con);
command.CommandType = CommandType.StoredProcedure;
//command.Parameters.Add("@tramite", SqlDbType.VarChar, 100);
command.Parameters.AddWithValue("@pv_titulo", eL.Titulo);
command.Parameters.AddWithValue("@pv_autor", eL.Autor);
command.Parameters.AddWithValue("@pv_editorial", eL.Editorial);
command.Parameters.AddWithValue("@pn_edicion", eL.Edicion);
command.Parameters.AddWithValue("@pv_identificador", eL.Id_libro);
command.Parameters.Add("@pv_error", SqlDbType.VarChar, 100).Direction =
ParameterDirection.Output;
con.Open();
r = command.ExecuteNonQuery();
con.Close();
}
catch (Exception e) {
r = 0;
}
return r;
}

TransaccionesLibrosDAO.cs
using
using
using
using
using

System;
System.Collections.Generic;
System.Linq;
System.Web;
System.Data;

using System.Data.SqlClient;
using ServicioBiblioteca.Conexion;
using System.Collections;
namespace ServicioBiblioteca.Clases
{
public class TransaccionesLibrosDAO
{
ConexionBase cb = new ConexionBase();
public DataTable PrestamoLibros(String libro)
{
SqlConnection con = cb.conectar();
DataTable dtable = new DataTable();
SqlDataReader reader;
SqlCommand command = new SqlCommand("select * from cantidad_libros
where id_libro=@libro", con);
command.Parameters.AddWithValue("@libro", libro);
con.Open();
reader = command.ExecuteReader();
dtable.TableName = "Bitacora";
dtable.Load(reader);

con.Close();
return dtable;

public int ReservaLibros(string id_libro, string id_usuario)


{
SqlConnection con = cb.conectar();
SqlConnection con1 = cb.conectar();
SqlConnection con2 = cb.conectar();
SqlConnection con3 = cb.conectar();
DataTable dtable = new DataTable();
SqlDataReader reader,reader2,reader3;
int num=0;
int v=0, vl;
SqlCommand command = new SqlCommand("select * from libros where
id_libro=@libro", con);
SqlCommand command1 = new SqlCommand("select * from usuarios where
id_usuario=@usuario", con1);
SqlCommand command3 = new SqlCommand("SELECT ISNULL(MAX(id_reserva)
+1,0) FROM reserva_libros", con3);
SqlCommand command2 = new SqlCommand("insert into reserva_libros
(id_reserva,id_usuario,id_libro,fecha_reserva)"+
"values(@num,@libro,@usuario,getdate()); ", con2);
con3.Open();
reader3 = command3.ExecuteReader();
if (reader3.Read())
{
v = reader3.GetInt32(0);
}
con3.Close();
command.Parameters.AddWithValue("@libro", id_libro);
command1.Parameters.AddWithValue("@usuario", id_usuario);
command2.Parameters.AddWithValue("@num", v);
command2.Parameters.AddWithValue("@libro", id_libro);
command2.Parameters.AddWithValue("@usuario", id_usuario);

con.Open();
reader = command.ExecuteReader();

con1.Open();
reader2 = command1.ExecuteReader();
if (reader.HasRows && reader2.HasRows)
{
con2.Open();
num=command2.ExecuteNonQuery();
con2.Close();
}
reader.Close();
reader2.Close();
con.Close();
con1.Close();
return num;
}
public DataTable ConsultaTransaccionLibros()
{
SqlConnection con = cb.conectar();
DataTable dtable = new DataTable();
SqlDataReader reader;
SqlCommand command = new SqlCommand("select * from bitacora_libros",
con);

con.Open();
reader = command.ExecuteReader();
dtable.TableName = "Bitacora";
dtable.Load(reader);
con.Close();
return dtable;
}

using System;
using
using
using
using
using
using
using

UsuariosDAO.cs

System.Collections.Generic;
System.Linq;
System.Web;
System.Data.SqlClient;
ServicioBiblioteca.Conexion;
System.Data;
ServicioBiblioteca.Entidades;

namespace ServicioBiblioteca.Clases
{
public class UsuariosDAO
{
ConexionBase cb = new ConexionBase();
public DataTable ConsultaBaseUsuarios()
{
SqlConnection con = cb.conectar();
DataTable dtable = new DataTable();
SqlDataReader reader;
SqlCommand command = new SqlCommand("ConsultaUsuarios", con);

command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add("@pv_error", SqlDbType.VarChar, 100).Direction =
ParameterDirection.Output;
con.Open();
reader = command.ExecuteReader();
dtable.TableName = "Usuarios";
dtable.Load(reader);

con.Close();
return dtable;

public DataTable ConsultaUsuario(string id_usuario)


{
SqlConnection con = cb.conectar();
DataTable dtable = new DataTable();
try
{
SqlDataReader reader;
SqlCommand command = new SqlCommand("ConsultaUsuario", con);
command.CommandType = CommandType.StoredProcedure;
command.Parameters.AddWithValue("@pv_identificador", id_usuario);
command.Parameters.Add("@pv_error", SqlDbType.VarChar, 100).Direction =
ParameterDirection.Output;
con.Open();
reader = command.ExecuteReader();
dtable.TableName = "Usuario";
dtable.Load(reader);

}
catch (Exception e) { }
finally { con.Close(); }
return dtable;

public int IngresaUsuario(EntidadUsuarios eU)


{
int r=0;
SqlConnection con = cb.conectar();
try
{
SqlCommand command = new SqlCommand("InsertaUsuario", con);
command.CommandType = CommandType.StoredProcedure;
command.Parameters.AddWithValue("@pv_identificador", eU.Id_usuario);
command.Parameters.AddWithValue("@pv_nombre", eU.Nombre);
command.Parameters.AddWithValue("@pv_apellido", eU.Apellido);
command.Parameters.AddWithValue("@pv_ciudad", eU.Ciudad);
command.Parameters.AddWithValue("@pd_fecha_nacim", eU.FechaNacim);
command.Parameters.Add("@pv_error", SqlDbType.VarChar, 100).Direction =
ParameterDirection.Output;
con.Open();
r = command.ExecuteNonQuery();

}
catch (Exception e) { r = 0; }
finally { con.Close(); }
return r;

public int EliminaUsuario(string id_usuario)

{
int r=0;
SqlConnection con = cb.conectar();
try
{
SqlCommand command = new SqlCommand("delete from Usuarios where
id_usuario= @id_usuario", con);
command.Parameters.AddWithValue("@id_usuario", id_usuario);
command.Parameters.Add("@pv_error", SqlDbType.VarChar, 100).Direction =
ParameterDirection.Output;
con.Open();
r = command.ExecuteNonQuery();
}
catch (Exception e) { r = 0; }
finally { con.Close(); }
return r;
}
public int ActualizaUsuario(EntidadUsuarios eU)
{
int r = 0;
try
{
SqlConnection con = cb.conectar();
SqlCommand command = new SqlCommand("ActualizaUsuario", con);
command.CommandType = CommandType.StoredProcedure;
command.Parameters.AddWithValue("@pv_nombre", eU.Nombre);
command.Parameters.AddWithValue("@pv_apellido", eU.Apellido);
command.Parameters.AddWithValue("@pv_ciudad", eU.Ciudad);
command.Parameters.AddWithValue("@pd_fecha_nacim", eU.FechaNacim);
command.Parameters.AddWithValue("@pv_identificador", eU.Id_usuario);
command.Parameters.Add("@pv_error", SqlDbType.VarChar, 100).Direction =
ParameterDirection.Output;
con.Open();
r = command.ExecuteNonQuery();
con.Close();
}
catch (Exception e)
{
r = 0;
}
return r;
}

Web.config
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<connectionStrings>
<add name="CadenaConexion" connectionString="workstation
id=BibliotecaSOD.mssql.somee.com;packet size=4096;user
id=myo;pwd=91979996;data source=BibliotecaSOD.mssql.somee.com;persist security
info=False;initial catalog=BibliotecaSOD" />
</connectionStrings>
<system.web>
<compilation debug="true" >
<assemblies>

<add assembly="System.Core, Version=3.5.0.0, Culture=neutral,


PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Data.DataSetExtensions, Version=3.5.0.0,
Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral,
PublicKeyToken=31BF3856AD364E35"/>
<add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral,
PublicKeyToken=B77A5C561934E089"/>
</assemblies>
</compilation>
<authentication mode="Windows" />
<pages>
<controls>
<add tagPrefix="asp" namespace="System.Web.UI"
assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral,
PublicKeyToken=31BF3856AD364E35"/>
<add tagPrefix="asp" namespace="System.Web.UI.WebControls"
assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral,
PublicKeyToken=31BF3856AD364E35"/>
</controls>
</pages>
<httpHandlers>
<remove verb="*" path="*.asmx"/>
<add verb="*" path="*.asmx" validate="false"
type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions,
Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add verb="*" path="*_AppService.axd" validate="false"
type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions,
Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add verb="GET,HEAD" path="ScriptResource.axd"
type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions,
Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
validate="false"/>
</httpHandlers>
<httpModules>
<add name="ScriptModule" type="System.Web.Handlers.ScriptModule,
System.Web.Extensions, Version=3.5.0.0, Culture=neutral,
PublicKeyToken=31BF3856AD364E35"/>
</httpModules>
</system.web>
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs" warningLevel="4"
type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0,
Culture=neutral, PublicKeyToken=b77a5c561934e089">
<providerOption name="CompilerVersion" value="v3.5"/>
<providerOption name="WarnAsError" value="false"/>
</compiler>
</compilers>
</system.codedom>
<system.webServer>
<validation validateIntegratedModeConfiguration="false"/>
<modules>
<remove name="ScriptModule" />
<add name="ScriptModule" preCondition="managedHandler"
type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0,
Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
</modules>
<handlers>
<remove name="WebServiceHandlerFactory-Integrated"/>
<remove name="ScriptHandlerFactory" />

<remove name="ScriptHandlerFactoryAppServices" />


<remove name="ScriptResource" />
<add name="ScriptHandlerFactory" verb="*" path="*.asmx"
preCondition="integratedMode"
type="System.Web.Script.Services.ScriptHandlerFactory,
System.Web.Extensions, Version=3.5.0.0, Culture=neutral,
PublicKeyToken=31BF3856AD364E35"/>
<add name="ScriptHandlerFactoryAppServices" verb="*"
path="*_AppService.axd" preCondition="integratedMode"
type="System.Web.Script.Services.ScriptHandlerFactory,
System.Web.Extensions, Version=3.5.0.0, Culture=neutral,
PublicKeyToken=31BF3856AD364E35"/>
<add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD"
path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler,
System.Web.Extensions, Version=3.5.0.0, Culture=neutral,
PublicKeyToken=31BF3856AD364E35" />
</handlers>
</system.webServer>
<runtime>
<assemblyBinding appliesTo="v2.0.50727" xmlns="urn:schemas-microsoftcom:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Extensions"
publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Extensions.Design"
publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>

You might also like