Proyecto Final Programación 1
Proyecto Final Programación 1
Proyecto Final Programación 1
MACHALA
FACULTADDEINGENIERACIVIL
ESCUELADEINFORMTICA
CARRERADEINGENIERADESISTEMAS
PROYECTODE
PROGRAMACINI
GRUPON
3
INTEGRANTES
DANIELAFRANIOGUAYCHAAPOLINARIO
JORDYADRIANSANCHEZCABRERA
DOCENTERESPONSABLE
LSI.GEANNINAAGUIRREBRIONES
PERODO2014
MACHALAELOROECUADOR
ProyectodeProgramacinI
RESUMEN
LaBiblioteca de CityBook poseemuchoslibrosyclientes,adiariosonprestadosmuchos
ejemplares pero no se puede llevar un control exacto de ello, para solucionar esto
nosotros decidimos automatizar dicho proceso. De alli nace el objetivo de nuestro
proyecto que consisteencrear unsoftwaredecontrolbibliotecario,gracias alaayudade
nuestros conocimientos internet y libros pudimos obtener mucha informacin sobre la
codificacin haciendoreferenciamsespecfica alo que sonvalidacionesycreacin de
funciones. Para el diseo y programacin del software se uso DevC++ un compilador
muypotentecongrandesfuncionalidades.
Nuestro software ofrece tres servicios los ms importantes que son control de clientes,
control delibros ycontroldetransacciones,cadaunoenlazadoconelotro,estosservicios
danla facilidadal usuarioderegistrar un cliente para hacer laadquisicindel libro,claro
quecada libroqueposeelabibliotecadebeseragregadoalsistemadeformamanual,ya
con este registro se puede controlar cada una de las transacciones de libros que se
realicen al dia,con estos tres servicios se soluciona la problemtica existente en la
bibliotecadelaciudaddeCitybook.
ProyectodeProgramacinI
AGRADECIMIENTO
ProyectodeProgramacinI
DEDICATORIA
ProyectodeProgramacinI
NDICEDECONTENIDOS
1. RESUMEN
2. AGRADECIMIENTO
3. DEDICATORIA
4. NDICEDECONTENIDOS
5. INTRODUCCIN
6. CAPTULO1:MARCOCONTEXTUAL
a. 1.PROBLEMA
b. 2.OBJETIVOS
c. OBJETIVOGENERAL
d. OBJETIVOSESPECFICOS
7. CAPTULOII:MARCOTERICO
8. CAPTULOIII:PROPUESTADELPROYECTO
9. CONCLUSIONESYRECOMENDACIONES
ProyectodeProgramacinI
INTRODUCCIN
ProyectodeProgramacinI
CAPTULO1:MARCOCONTEXTUAL
1.PROBLEMA
librosydeprstamosodevolucionesenlabibliotecamunicipaldeCitybook.
2.OBJETIVOS
OBJETIVOGENERAL
Controlarelprocesoderentayalquilerdelibros.
Automatizarlosprocesosdecomercializacinyalquilerdelibros.
Permitir al usuario, el registro y actualizacin de sus clientes, con sus datos
correspondientes.
Registrar y controlar las fechas de salida y de ingreso de libros, permitiendo
registrareladeudocorrespondientealalquiler.
Elingreso,actualizacinyeliminacindelosciudadanosregistradosenelsistema.
Elingreso,modificacinyeliminacindeloslibros.
Permitirelingresodelapellidodelusuarioyqueelsistemagenereunabsqueda
Una vez hecha la devolucin, se debe incrementar la existencia del libro
automticamente.
Si existen das de atraso: Calcular los das de atraso considerando la fecha
mxima de entrega y la fecha en que se est haciendo efectiva ladevolucin del
libro.
ProyectodeProgramacinI
CAPTULOII:MARCOTERICO
SistemadesarrolladoenDevC++
Es un entorno de desarrollo integrado (IDE) para programar en lenguaje C/C++. Usa
MinGW que es una versin de GCC(GNU Compiler Collection) como su compilador.
DevC++ puede adems ser usado en combinacin con Cygwin y cualquier compilador
basadoenGCC.
El Entorno est desarrollado en el lenguaje Delphi de Borland. Tiene una pgina de
paquetesopcionalesparainstalar,condiferentesbibliotecasdecdigoabierto.
LenguajedeProgramacinC++
C++ es un lenguaje de programacin diseado amediados de losaos 1980porBjarne
Stroustrup. La intencin de su creacin fue el extender al exitoso lenguaje de
programacin C con mecanismos que permitan la manipulacin de objetos. En ese
sentido, desde el punto de vista de los lenguajes orientados a objetos, el C++ es un
lenguajehbrido.
Actualmente existeunestndar, denominado ISOC++,al quesehanadheridolamayora
de los fabricantes de compiladores msmodernos. Existentambinalgunosintrpretes,
talescomoROOT.
Una particularidad delC++ esla posibilidadderedefinirlosoperadores,ydepodercrear
nuevostiposquesecomportencomotiposfundamentales.
El nombre C++ fue propuesto por Rick Mascitti en el ao 1983, cuando el lenguaje fue
utilizado por primera vez fuera de un laboratorio cientfico. Antes se haba usado el
nombre "C con clases". En C++, la expresin "C++" significa "incremento de C" y se
refiereaqueC++esunaextensindeC.
ProyectodeProgramacinI
LibreriasdeC++
TIPOSDELIBRERASDEC++
FICHEROSINCLUDEDEDEVC++
Librerafstream:
Flujos hacia/desde ficheros. Permite la manipulacin de archivos desde el programar,
tantoleercomoescribirenellos.
Librerastdio:
Contiene los prototiposdelasfunciones,macros,ytiposparamanipulardatosdeentrada
ysalida.
Librerastdlib:
Contienelosprototiposdelasfunciones,macros,ytiposparautilidadesdeusogeneral.
Librerastring:
Parte de la STL relativa a contenedores tipo string una generalizacin de las cadenas
alfanumricasparaalbergar cadenasdeobjetos.Muytilparaelfcilusodelascadenas
decaracteres,pueseliminamuchasdelasdificultadesquegeneranloschar
ProyectodeProgramacinI
Libreravector:
Parte delaSTLrelativaaloscontenedorestipovectorunageneralizacindelasmatrices
unidimensionalesC/C++
Libreriasstream:Flujoshacia/desdecadenasalfanumricas.
Tiposdedatos
C++tienelossiguientestiposfundamentales:
Caracteres:char(tambinesunentero),wchar_t
Enteros:short,int,long,longlong
Nmerosencomaflotante:float,double,longdouble
Booleanos:bool
Vaco:void
ProyectodeProgramacinI
FuncionesC++
Una funcin esunconjunto de lneasde cdigoque realizanunatareaespecfica y puede
retornar un valor. Las funciones pueden tomar parmetros que modifiquen su
funcionamiento. Las funciones son utilizadas para descomponer grandes problemas en
tareas simples y para implementar operaciones que son comnmenteutilizadasdurante
un programa y de esta manera reducir la cantidad de cdigo. Cuando una funcin es
invocada se le pasa elcontrola lamisma,unavezqueestafinalizconsu tareaelcontrol
esdevueltoalpuntodesdeelcuallafuncinfuellamada.
<tipo>[clase::]<nombre>([Parmetros])
{
cuerpo
}
Llamaraunafuncin
Parallamaralafuncincuadrado()vistaanteriormente,podemosemplear:
cout<<cuadrado(25)
cout<<cuadrado(X)
R=cuadrado(X)//guardarenRelcuadradodeX
Funcionesvoid
Bajo ciertas circunstancias se desear escribir funciones que no regresen valor alguno
(estosera algoparecidoaescribirproceduresenPascal)yparaellopodemosdeclarara
la funcin como void. La palabra reservada voidesutilizada para declarar funcionessin
valor de retorno y tambin para indicar que una funcin especfica no requiere de
parmetros. Por ejemplo, la funcin pausa() que se ver enseguida, no devolver valor
algunoylamismanorequieredeparmetros.
//estafuncinrequieredelalibreraiostream
voidpausa(void)
ProyectodeProgramacinI
{
cout<<"Porfavorpresione<Enter>HOLA..."
cin.get()
cin.ignore(255,'\n')//rechazarcaracteresintroducidosantesde<Enter>
}
Notas: se debe de aclarar que el uso de la palabra void dentro de los parntesis es
opcional al momento de declarar una funcin. As, la funcin pausa() podra haberse
declaradocomovoidpausa(),ylamismapuedeinvocarsecomo:pausa().
FUNCIONESUSADAS
Center(Void).Funcinquemepermitecentrareltexto.
voidcenter(char*cad)
{
//Declaramosvariables
inti,k
//Establecemosellargodelacadena
intn=strlen(cad)
//ktieneahoraelvalordelanchodelapantallamenosellargodelacadena
//recibida,dividido2
k=(80n)/2
//Tantosespaciosinicialescomoelvalordek
for(i=0i<ki++){printf("")}//Imprimimoslacadena
printf("%s",cad)
}
Center(Void).Funcionquepermiteagregaralcolordetexto!
voidcolor(inta,intb){
//utilizalibreriawindows.h
intX=a*16+b
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),X)
}
Gotoxy(Void).FuncinquesirveparamoverlaposiciondeCursor.
voidgotoxy(intx,inty){
//estafuncionrequierelibreriawindows.h
HANDLEhcon
hcon=GetStdHandle(STD_OUTPUT_HANDLE)
ProyectodeProgramacinI
COORDdwPos
dwPos.X=x
dwPos.Y=y
SetConsoleCursorPosition(hcon,dwPos)
}
MSG(VOID).Funcinquepermitemostrarunmensajedealerta,estylowindows.
voidmsg(stringtxt,stringtitle,chartype[2]){
//requieredeWindows.h
constchar*text=txt.c_str()
title=title+"SysLibrary"//mensagepordefecto
constchar*tl=title.c_str()
if(type=="e"){
MessageBox(GetActiveWindow(),text,tl,MB_ICONERROR)
}elseif(type=="i"){
MessageBox(GetActiveWindow(),text,tl,MB_ICONINFORMATION)
}elseif(type=="a"){
MessageBox(GetActiveWindow(),text,tl,MB_ICONEXCLAMATION)
}
}
Validar (bool Return). Funcion propia del sistema que permite la validacin de tres
tiposdecaracteres.
Permitevalidar,nmerosenterosdeNnmerosenterosenviadosalafuncin.
PermiteValidarSoloTextohastaNcaracteresenviadosalafuncin.
PermiteValidarDoublesdePrecios,permitiendoelaccesode,o.enelvalor!.
Enva False en caso de existir errores, es decirsi no cumplenconlos requerimientos, o
Trueencasodecumplirlosrequerimientosprecisados.
//validasolotextoosolonumerossegunsellamealafuncion
//"1"paravalidarSolotexto"2"soloentero
//paravalidarenterossinlimite(limite==0)
boolvalidar(charchr[],intlimite,inttype,charformat[2]){
stringchrString
chrString=chr
if(format=="e"&&int(chr[0])==0){returntrue}else{
if(chrString.length()==limite||limite==0){
for(inti=0i<chrString.length()i++){
switch(type){//comprueboquetipodevalidaciondesea
case1:
if(isdigit(chr[i])){
msg("Error,IngreseSoloTexto!.","Error","e")
returnfalse
ProyectodeProgramacinI
break
}
break
case2:
if(!isdigit(chr[i])){
msg("Error,IngreseSoloNumeros!.","Error","e")
returnfalse
break
}
break
case3://Double
if (!isdigit(chr[i]) && chr[chrString.length()3]!='.' &&
chr[chrString.length()3]!=','){
msg("Error,IngreseSoloNumeros!.","Error","e")
returnfalse
break
}
break
}
}
}else{
charlim_[10]
itoa(limite,lim_,10)
stringl=lim_
stringerror_="Error,ingresesolo"+l+"Digitos"
msg(error_,"Error","e")
returnfalse
}
}
}
//funcion EXPLODE (PHP) permite separar un string por un limitador y meter los
datosseparadosenunarray!
vector <string> explode(const string& str, const char& ch){ // se envia el string y el
limitador
stringnext
vector<string>result
for(string::const_iteratorit=str.begin()it!=str.end()it++){
ProyectodeProgramacinI
if(*it==ch){
if(!next.empty()){
result.push_back(next)
next.clear()
}
}else{ next+=*it}
}
if(!next.empty())
result.push_back(next)
returnresult
}//codigoFuenteObtenidodo
https://www.daniweb.com/softwaredevelopment/cpp/code/440617/cequivalentforphps
explodefunction
FuncionesPropiasdelSistema
BUSCARENBASEDEDATOS
stringdataSearch(charcodigo[14],intn,chardatabase[100]){
chardata[1024]//sealmacenatodoloqcontieneelarchivotetexto
stringdatos="false"
fstreamdataSys(database,ios::in)//leeenfomadeentradaosalida
if(dataSys){//siexiste
while(!dataSys.eof()){//repetirhastaelfinaldelalineadelarchivo
dataSys.getline(data,1024,'\n')//obtengolineaxlineadelarchivo
}
}
}
returndatos
}
ProyectodeProgramacinI
ACTUALIZARBASEDEDATOS
booldataUpdate(stringcod,stringremplaze,chardatabase[100]){
if(cod!=""&&remplaze!=""){
chardata[1024]
vector<string>GuardaDatos(0)
constchar*codigo
//===========ConvertirdeStringAChar
codigo=cod.c_str()
fstreamdataRead(database,ios::in)//leeenfomadeentradaosalida
//remplazo
if(dataRead){//siexiste
while(!dataRead.eof()){//repetirhastaelfinaldelalineadelarchivo
dataRead.getline(data,1024,'\n')//obtengolineaxlineadelarchivo
if(strstr(data,codigo)){
GuardaDatos.push_back(remplaze) //siesiguala1sereemplaza
casocontrarioseelimina
}else{
GuardaDatos.push_back(data)
}
}
dataRead.close()
//actualizo
ofstreamdataWrite(database,ios::out)
for(inti=0i<GuardaDatos.size()i++){
dataWrite<<GuardaDatos[i]
if(i<GuardaDatos.size()1){
dataWrite<<endl
}
}
dataWrite.close()
returntrue
}else{
returnfalse
}
}else{
returnfalse
}
ProyectodeProgramacinI
PROCESOSDEELSOFTWARESYSLIBRARY
AdministrarUsuarios:
Se realiza el ingreso, actualizacin y eliminacin de los ciudadanos registrados en el
sistema.
Loscamposasociadosaestaentidad son:cdigo(segenerasecuencialmente),nombre,
apellido,cdula,direccin,telfono.
Validacin:
Sedebevalidarlacduladelusuario,soloingresode10caracteresnumricos.
No debe permitir el ingreso de usuarios repetidos, verificar la cdula.De darse elcaso
debermostrarunmensajedeadvertencia.
AdministrarLibros:
EnestainterfazserealizarelIngreso,modificacinyeliminacindeloslibros.
Los campos asociados a esta entidad son: cdigo, ISBN (trece dgitos), nombre, autor,
editor, editorial, gnero (arte, biografa, ciencia, drama, historia, comedia, suspenso),
costo,existencia,estatus(BBestSeller,CClsico).
Transacciones:
Existendostiposdetransacciones:
1.Prstamo:
Lainterfazpararealizarelprstamodeberegistrarlossiguientescampos:
Cdigo de la transaccin (se genera secuencialmente), cdigo usuario, cdigo
libro,fechadeprstamo,fechamx.entrega,estatus(PPendiente).
Parala seleccin del usuariosedebe generar una bsquedaporapellido,unavez
encontradosedebetrabajarconsucdigo.
Si elusuario tieneregistrado unprstamo no se debeautorizarelprocesosinque
antesefecteladevolucinpendiente.
ProyectodeProgramacinI
2.Devolucin:
Se debe realizar una bsqueda de la transaccin de prstamo (Buscar solo
transacciones con estatus P), asociada al usuario y al libro quedesea realizar la
devolucin.
Una vez encontrado el registro se debe considerar lo siguiente al hacer la
devolucin:
Existencia:Sedebeincrementarlaexistenciadellibroautomticamente.
Dasdeatraso:Calcular losdas deatraso considerando lafechamx.deentrega
ylafechaenqueseesthaciendoefectivaladevolucindellibro.
Multa:Por cada da de atrasosedebe cancelarunvalordeUSD2,00siellibroes
unBestSeller,ysiesClsicoelvalordelamultaesUSD0,50ctvosporda.
El valor de la multa no debe exceder al costo del libro, si esto ocurre, debe
cancelarelcostodellibroregistradoenelsistema.
MANEJODEARCHIVOS
GestionarArchivosenC++
Yase puedenmanejargrancantidaddedatosdelmismoydiferentetipoalmismotiempo
(arrays y arrays de estructuras). El problema es que el programa retiene los datos
mientras est ejecutndoseysepierden al terminar laejecucin.La solucin para hacer
quelosdatosnosepierdanesalmacenarlosenunficherooarchivo.
stream>Buffer(RAM)>FICHERO
El buffer es un rea de memoria situada en la RAM asignada al programa que abre el
archivo.
ProyectodeProgramacinI
Los archivos son medios que facilita el lenguaje para almacenar los datos en forma
permanente,normalmenteenlosdispositivosdealmacenamientoestndar
Organizacindearchivosdeaccesosecuencial
Archivos de acceso secuencial: los datos se almacenan de forma consecutiva y no es
posible leer un registrodirectamente, es decir para leerel registron hay que leerlos n1
registrosanteriores.
Archivos de accesoaleatorio:sepuede acceder aunregistro concreto sinnecesidadde
leertodoslosanteriores.
TipodealmacenamientoenArchivos
Archivos de texto: Los datos se almacenan usandocdigo ASCIIypor tanto, pueden ser
procesados por cualquier editor de texto.Archivos binarios:Los datos se almacenanen
binario.
Bibliotecadeflujos
Para poder manipular archivos, C++ dispone de la biblioteca estandar fstream (file
stream) dondeseencuentrantodaslas funcionesnecesarias para abrir ycerrararchivos,
ascomopararealizarlasoperacionesde
lecturayescrituradedatosenarchivos.
#include<fstream.h>
Operacionesasociadasaarchivos
Abrirfichero
Cerrarfichero
Lecturayescritura
Funcionesdecontrol
Paraentradaolectura
Parasalidaoescrituraenmodotruncado
ProyectodeProgramacinI
Enmodoaadir
Aperturadearchivos
Al igual que los flujos cin y cout, los flujos de E/S solo pueden transferir datos en una
direccin, estosignificaque se tienenque definir flujos diferentesparalecturayescritura
dedatos.
Abrirelarchivoparalecturaoentrada
Abrir un archivo para entrada, es definir un flujo de archivo deentrada. En el programa,
nosreferiremosalficheroutilizandoelnombredelflujo
Abrirelficheroparalectura:Ejemplo
Supongamos que queremos abrir un fichero quesellamamisdatos.txt queseencuentra
enlaunidaddediscoa:
#include<fstream.h>
ifstreamleer_fich(a:\\misdatos.txt)
Hemosdefinidoelflujodeentradaleer_fich.
Abrirelarchivoparaescrituraosalida
Abrirunarchivoparasalida,esdefinirunflujodearchivodesalida.
ofstream<flujo_salida> (ruta_de_localizacin)/OutputfilestreamNombre
fsico
ofstream<flujo_salida>(ruta_de_localizacin,ios_base::out)
Existendosposibilidades:
Si se abre un archivo en modo salida y dicho archivo ya existe, todos los datos
almacenadossernsobreescritos.Sielarchivonoexiste,secrear.
ProyectodeProgramacinI
C++enWindows
Cmdconcolores
Para cambiar el color de la interfaz del programa se necesita la libreria "stdlib.h". sub
aplicacinsirveparacambiarelcolordefondodelcmdyelcolordelasletras.
Uso
#include<stdlib.h>
usingnamespacestd
system("color45")
Enestecasosehadefinidoelfondodepantalladecolorrojoylasletrasrosadas.
ProyectodeProgramacinI
CAPTULOIII:PROPUESTADELPROYECTO
2. Implementardichosistemaconlamayorfacilidadde manejoparaelusuarioydarle
una alta eficiencia a las transacciones y a los servicios que brinda la Biblioteca
llegandodeestamaneraalasolucindelaproblemtica.
ProyectodeProgramacinI
ESTRUCTURADELPROGRAMA
ProyectodeProgramacinI
CONCLUSIONESYRECOMENDACIONES
Una vez que hemos cumplido con el objetivo y hemos terminado nuestro proyecto
podemosdeducirlassiguientesconclusiones:
Debido a que la biblioteca CityBook, cuenta con gran demanda y por tanto
requiereuncontroldetransaccionesbibliotecariasautomatizadasyeficaces.
La biblioteca Citybook ahora cuenta con un sistema capaz de realizar todo el
trabajodealmacenamiento deinformacinen subasededatosyaseadeclientes
odelibros.
Con la implementacin del software denominado Syslibrary, se podr agilizar
todasycadaunadelastransaccionesquegeneranenlalibreraCityBook.
Se Recomienda, Utilizar Un Nuevo sistema de Compilacin debido a que el
sistemaproporcionadoparaelpresenteproyecto,esambiguo.
ProyectodeProgramacinI
Bibliografa
Deitel, H. M., Deitel, P. J., & Octavio, G. P. (2004). Cmo programar en C/C y
Java.Mxico:PearsonEducacin.
ArchivosenC++,View2014
http://www.nebrija.es/~abustind/Informatica/MetodologiaI/Archivos.pdf
FuncionExplode
https://www.daniweb.com/softwaredevelopment/cpp/code/440617/cequivalentfor
phpsexplodefunction
PlaySound
http://msdn.microsoft.com/enus/library/windows/desktop/dd743680(v=vs.85).aspx
Ficheros
http://www.nebrija.es/~abustind/Informatica/MetodologiaI/Archivos.pdf
AprendaC++comosiestuvieraenprimero.pdf
http://www.identi.li/index.php?topic=188310
http://es.scribd.com/doc/97873375/LibreriadeTurboC
http://www.fepe55.com.ar/blog/2007/07/02/todaslaslibreriasyfuncionesstandard
dellenguajec/
ProyectodeProgramacinI