cine_cpp

8
7/23/2019 cine_cpp http://slidepdf.com/reader/full/cinecpp 1/8 /****************************************************************** * * Módulo: Cine * * Descripción: * Módulo de gestión de películas de un cine. * Implementa los siguientes datos: * - titulo: titulo de la película * - entradas: entradas vendidas (max. 2! * - "ec#a: "ec#a de emisión * "ec#a.dia * "ec#a.mes * "ec#a.anno * - #orario: #ora de emisión de la película * #orario.#ora * #orario.minuto * - genero: comedia$ drama$ terror o %&lica * * ' las siguientes operaciones: * - altapelicula:alta de película * - venderentradas: vender entradas * - listapeliculas: )istado de películas * - calendario: Mostrar calendario de películas **********************************************************************/ include +stdio.#, include +ct'pe.#, include +stdli%.#, include +string.#, include Cine.# include Calendario.# int numeliculas 0 int auxIndice 0 int gen0 1ipoC#arenero auxenero0 1ipo3ectorelicula vector4uxiliar0 1ipoCalendario calendario0 int orden 0 /*  rocedimiento:  Dar alta a películas  3alidaciones:  )a película a la 5ue se pretende dar alta no est6 'a gra%ada (titulo!  )a "ec#a ' #ora introducidas son v6lidas  7o existe ninguna película programada en la "ec#a solicitada  8l g&nero introducido se corresponde con uno de los 9 v6lidos */ void 1ipoestion::Crearelicula(1ipo3ectorelicula vectoreliculas!  1ipoelicula pelicula0  Iniciali;arelicula( pelicula! 0  /*-- Compro%amos 5ue no tengamos guardadas 'a el n<mero  m6ximo de películas --*/  i" (Compro%ar7umeliculas(!!  s'stem(cls!0  print"( 4)14 D8 8)IC=)4>?n !0  print"( ?n !0  print"( ?n !0  /*-- Compro%amos 5ue el título no est& repetido --*/  do  print"( 1itulo de la pelicula: !0  scan"( @AB?ns$pelicula.titulo !0

Upload: willyrodriguezbarcelo

Post on 17-Feb-2018

233 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: cine_cpp

7/23/2019 cine_cpp

http://slidepdf.com/reader/full/cinecpp 1/8

/******************************************************************** Módulo: Cine

** Descripción:* Módulo de gestión de películas de un cine.* Implementa los siguientes datos:

* - titulo: titulo de la película* - entradas: entradas vendidas (max. 2!

* - "ec#a: "ec#a de emisión* "ec#a.dia* "ec#a.mes* "ec#a.anno* - #orario: #ora de emisión de la película* #orario.#ora

* #orario.minuto* - genero: comedia$ drama$ terror o %&lica** ' las siguientes operaciones:* - altapelicula:alta de película

* - venderentradas: vender entradas* - listapeliculas: )istado de películas* - calendario: Mostrar calendario de películas**********************************************************************/include +stdio.#,include +ct'pe.#,include +stdli%.#,

include +string.#,include Cine.#include Calendario.#

int numeliculas 0int auxIndice 0

int gen01ipoC#arenero auxenero01ipo3ectorelicula vector4uxiliar01ipoCalendario calendario0int orden 0

/* rocedimiento:  Dar alta a películas  3alidaciones:  )a película a la 5ue se pretende dar alta no est6 'a gra%ada (titulo!

  )a "ec#a ' #ora introducidas son v6lidas

  7o existe ninguna película programada en la "ec#a solicitada  8l g&nero introducido se corresponde con uno de los 9 v6lidos*/

void 1ipoestion::Crearelicula(1ipo3ectorelicula vectoreliculas!

  1ipoelicula pelicula0  Iniciali;arelicula( pelicula! 0  /*-- Compro%amos 5ue no tengamos guardadas 'a el n<mero  m6ximo de películas --*/  i" (Compro%ar7umeliculas(!!   s'stem(cls!0

  print"( 4)14 D8 8)IC=)4>?n !0  print"( ?n !0  print"( ?n !0

  /*-- Compro%amos 5ue el título no est& repetido --*/  do   print"( 1itulo de la pelicula: !0

  scan"( @AB?ns$pelicula.titulo !0

Page 2: cine_cpp

7/23/2019 cine_cpp

http://slidepdf.com/reader/full/cinecpp 2/8

Page 3: cine_cpp

7/23/2019 cine_cpp

http://slidepdf.com/reader/full/cinecpp 3/8

 rocedimiento: Krdena3ectoreliculas Krdena vectoreliculas por "ec#a

 */void 1ipoestion::Krdena3ectoreliculas( 1ipo3ectorelicula vectoreliculas$ int auxIndice !

  1ipoelicula auxelicula0  int aux auxIndice-O0

  E#ile ((auxIndice,! GG (8sosterior(vectoreliculasAaux."ec#a$vectoreliculasAauxIndice."ec#a!!!   auxelicula vectoreliculasAaux0  vectoreliculasAaux vectoreliculasAauxIndice0  vectoreliculasAauxIndice auxelicula0  auxIndice --0  aux --0

  /*

 Junción:Compro%arLorario  Compro%ar 5ue la #ora introducida es v6lida  1rue:  Jalse: Imprime mensaPe de error  */

 %ool 1ipoestion::Compro%arLorario( 1ipoLorario #orario!   i" (#orario.#ora+ #orario.#ora , 2Q #orario.minuto + #orario.minuto , RS!   print"( ?n)a #ora introducida no es correcta !0  print"( ?nIntrodu;ca un nuevo #orario?n !0  return "alse0  else

  return true0  /* Junción: 1ituloFepetido  Comprue%a si el título de la película est6 repetido

  1rue: 4signa a la glo%al auxIndice la posición en el vector   vectoreliculas del primer elemento li%re (titulo !  Jalse: Imprime mensaPe de error */

 %ool 1ipoestion::1ituloFepetido( 1ipoelicula pelicula$ 1ipo3ectorelicula vectoreliculas!   "or ( int i 0 i + maxeliculas0 iTT!

  i" (strcmp (vectoreliculasAi.titulo$ ! !

  auxIndice i0 /* osición del primer elemento del vector li%re */  return "alse0  else i" ( strcmp (pelicula.titulo$ vectoreliculasAi.titulo! !   print"( ?nUa #a dado alta a una pelicula con ese titulo !0

  print"( ?nIntrodu;ca un nuevo titulo?n !0  return true0      return "alse0

/* Juncion:compro%ar7umeliculas  Comprue%a si se #a re%asado el m6ximo de películas admitidas

*/ %ool 1ipoestion::Compro%ar7umeliculas(!   i" (numeliculas + maxeliculas!

  return true0

Page 4: cine_cpp

7/23/2019 cine_cpp

http://slidepdf.com/reader/full/cinecpp 4/8

  else   return "alse0 

/* Junción: Jec#aKcupada  Comprue%a si una "ec#a est6 ocupada

  1rue: Imprime mensaPe de error   Jalse:

*/ %ool 1ipoestion::Jec#aKcupada( 1ipoJec#a "ec#a$ 1ipo3ectorelicula vectoreliculas!   "or ( int i 0 i + maxeliculas0 iTT!   i" ((vectoreliculasAi."ec#a.dia "ec#a.dia! GG (vectoreliculasAi."ec#a.mes "ec#a.mes! GG(vectoreliculasAi."ec#a.anno "ec#a.anno!!   print"( ?nUa #a' una película programada para esta "ec#a !0

  print"( ?nIntrodu;ca una nueva "ec#a?n !0  return true0      return "alse0

/* Junción: Compro%arenero  Comprue%a si el g&nero introducido es correcto.  1rue: Devuelve el int 5ue corresponde a la posición en el tipo enum del g&nero  Jalse: Imprime mensaPe de error */

 %ool 1ipoestion::Compro%arenero( 1ipoC#arenero genero$ int G gen !   i" (strcmp(genero$ comedia!!   gen 0  return true0  else i" (strcmp(genero$ drama!!   gen O0

  return true0  else i" (strcmp(genero$ terror!!   gen 20  return true0  else i" (strcmp(genero$ %elica!!   gen Q0

  return true0  else   print"( ?n8l g&nero de%e ser comedia$ drama$ terror o %elica !0  print"( ?nIntrodu;ca un nuevo genero?n !0  return "alse0 

/* rocedimiento: Iniciali;ar3ectoreliculas*/void 1ipoestion::Iniciali;ar3ectoreliculas(1ipo3ectorelicula vectoreliculas!

  1ipoelicula pelicula0  Iniciali;arelicula( pelicula !0  "or (int i 0 i + maxeliculas0 iTT!   /* strcp'(vectoreliculasAi.titulo$ !0  vectoreliculasAi.entradas 0  vectoreliculasAi."ec#a.dia 0

  vectoreliculasAi."ec#a.mes 0  vectoreliculasAi."ec#a.anno 0  vectoreliculasAi.#orario.#ora 0

  vectoreliculasAi.#orario.minuto 0 */  vectoreliculasAi pelicula0 

Page 5: cine_cpp

7/23/2019 cine_cpp

http://slidepdf.com/reader/full/cinecpp 5/8

/*  rocedimiento: Iniciali;arelicula  rocedimiento para iniciali;ar el registro pelicula

*/void 1ipoestion::Iniciali;arelicula(1ipoelicula G pelicula!   strcp'(pelicula.titulo$ !0  pelicula.entradas 0

  pelicula."ec#a.dia 0  pelicula."ec#a.mes 0

  pelicula."ec#a.anno 0  pelicula.#orario.#ora 0  pelicula.#orario.minuto 0/* rocedimiento: MostraCalendario

  Muestra calendario de un mes/aNo dado como entradas  >i no #a' películas programadas ese mes$ se muestra el calendario  sin películas$ ' el emnsaPe V7o existen películas este mesV  >i existen películas:  Muestra 33 si 5uedan entradas por vender 

  Muestra WW si a"oro completo  )ista las películas programadas$ las entradas restantes o  4"oro completo*/void 1ipoestion::MostrarCalendario(1ipo3ectorelicula vectoreliculas!   int m 0  int a 0

  s'stem(cls!0  print"( C4)87D4FIK D8 8)IC=)4>?n !0  print"( ?n !0  print"( ?n !0  do   tr'

  print"( ?nMes: !0  ""lus#(stdin!0  i" (scan"( @2d$ Gm ! !   t#roE true0    print"( ?n4nno: !0

  ""lus#(stdin!0  i" (scan"( @9d$ Ga ! !   t#roE true0    catc# (%ool e!   m 0

  a 0

    E#ile (Hcalendario.8sCorrecta(O$ m$ a!!0  calendario.ImprimirCalendario( m$ a$ vectoreliculas !0  ImprimeeliculasMes( m$ a$ vectoreliculas!0

  print"( ?n !0  s'stem(pause!0/* rocedimiento: ImprimeeliculasMes  )istado de películas del mes ' aNo pasados como par6metros

*/void 1ipoestion::ImprimeeliculasMes( int mes$ int anno$ 1ipo3ectorelicula vectoreliculas !   %ool #a'eliculas "alse0

  "or (int i0 i+maxeliculas0 iTT!   i" ((vectoreliculasAi."ec#a.mes mes! GG (vectoreliculasAi."ec#a.anno anno!!   Imprimeelicula( vectoreliculasAi $ O !0

  #a'eliculas true0

Page 6: cine_cpp

7/23/2019 cine_cpp

http://slidepdf.com/reader/full/cinecpp 6/8

      i" (H#a'eliculas!

  print"( ?n?n7o existen peliculas este mes?n !0  /*

 rocedimiento: )istareliculas  )istado de películas del g&nero pasado como entrada

  )ista genero$ título$ "ec#a$ #ora ' entradas vendidas  >i se #an vendido todas$ muestra el mensaPe V4"oro compeltoV*/void 1ipoestion::)istareliculas( 1ipo3ectorelicula vectoreliculas !   %ool #a'eliculas "alse0  s'stem(cls!0

  do   gen 0  print"( ?nenero de la pelicula: !0  scan"( @s$ Gauxenero !0  E#ile (H(Compro%arenero( auxenero$ gen !!!0 /* asamos gen por re"erencia */

  "or (int i0 i+maxeliculas0 iTT!   i" (vectoreliculasAi.genero 1ipoenero(gen!!   Imprimeelicula( vectoreliculasAi$ !0  #a'eliculas true0      i" (H#a'eliculas!

  print"( ?n7o #a' peliculas del genero introducido?n !0    s'stem(pause!0/*  rocedimiento: Imprimeelicula

  Imprime$ en una línea:  &nero  1ítulo  Jec#a programada  Lora programada  7<mero de entradas por vender o V4"oro completoV

  ar6metro:  orden:  - rimer campo: g&nero  O - rimeQr campo: "ec#a0*/void 1ipoestion::Imprimeelicula( 1ipoelicula pelicula$ int orden !

  1ipoC#arenero gen0

  sEitc# (int(pelicula.genero!!   case :  strcp'( gen$Comedia !0  %reaX0

  case O:  strcp'( gen$ Drama !0  %reaX0  case 2:  strcp'( gen$1error !0  %reaX0

  case Q:  strcp'( gen$Yelica !0  %reaX0

    i" (orden !   print"( ?n@s. @s. @2d-@2d-@2d. @2d:@2d #oras. $

  gen$ pelicula.titulo$ pelicula."ec#a.dia$ pelicula."ec#a.mes$

Page 7: cine_cpp

7/23/2019 cine_cpp

http://slidepdf.com/reader/full/cinecpp 7/8

  pelicula."ec#a.anno$ pelicula.#orario.#ora$ pelicula.#orario.minuto!0  else   print"( ?n@2d-@2d-@2d @s. @s. @2d:@2d #oras. $

  pelicula."ec#a.dia$ pelicula."ec#a.mes$  pelicula."ec#a.anno$ pelicula.titulo$ gen$ pelicula.#orario.#ora$ pelicula.#orario.minuto!0    i" ( pelicula.entradas + 2!

  print"( @2d entradas vendidas.?n$ pelicula.entradas !0  else

  print"( 4"oro Completo.?n !0 

/* rocedimiento: 3ender8ntradas

  3ender entradas.  Feali;a las siguientes validaciones:  4l menos #a' una película gra%ada  8l titulo de la pelicula existe  8l n<mero de entradas solicitado est6 disponi%le

*/void 1ipoestion::3ender8ntradas(1ipo3ectorelicula vectoreliculas!   1ipoelicula pelicula0  Iniciali;arelicula( pelicula!0  /*-- Compro%amos 5ue #a'$ al menos$ una pelicula --*/  i" (strcmp( vectoreliculasA.titulo$! !   print"( ?n7o se pueden vender entradas. !0

  print"( ?n7o #a' ninguna pelicula en cartelera?n !0  s'stem(pause!0  return0    s'stem(cls!0  print"( 387D8F 871F4D4>?n !0

  print"( ?n !0  print"( ?n !0  /*-- Compro%amos 5ue exista película con el título introducido --*/  do   print"( 1itulo de la pelicula: !0  scan"( @AB?ns$pelicula.titulo !0

  E#ile (H1itulo8xiste( pelicula$ vectoreliculas !!0  /*-- >i est6n vendidas todas las entradas$ no pide entradas ' sale --*/  i" ( vectoreliculasAauxIndice.entradas 2 !   print"( ?n7o 5uedan entradas para esta pelicula?n !0  s'stem(pause!0  return0

 

  /*-- Compro%amos el n<mero de entradas disponi%les --*/  do   print"( ?n7umero de entradas a vender: !0  ""lus#(stdin!0

  i" (scan"( @d$ Gpelicula.entradas ! !   pelicula.entradas 2O0    E#ile ( HCompro%ar8ntradas(pelicula$ vectoreliculas!!0  vectoreliculasAauxIndice.entradas vectoreliculasAauxIndice.entradas T pelicula.entradas0

/* Junción: 1itulo8xiste  Junción 5ue comprue%a si el título de la película existe

  1rue: asigna a la varia%le glo%al auxIndice la posición en el  vector vectoreliculas de la pelciula %uscada  Jalse: Imprime mensaPe con el error 

*/

Page 8: cine_cpp

7/23/2019 cine_cpp

http://slidepdf.com/reader/full/cinecpp 8/8

 %ool 1ipoestion::1itulo8xiste( 1ipoelicula pelicula$ 1ipo3ectorelicula vectoreliculas!   "or ( int i 0 i + maxeliculas0 iTT!   i" ( strcmp (vectoreliculasAi.titulo$ pelicula.titulo! !

  auxIndice i0  return true0   

  print"( ?n7o #a' ninguna pelicula con ese titulo !0  print"( ?nIntrodu;ca un nuevo titulo?n !0

  return "alse0/* Junción: Compro%ar8ntradas  Comprue%a 5ue el n<mero de entradas solicitadas sea , ' 5ue  est& dispon%le para esa película

  1rue: la operación es correcta  Jalse: Imprime mensaPe con el error */

 %ool 1ipoestion::Compro%ar8ntradas(1ipoelicula pelicula$ 1ipo3ectorelicula vectoreliculas!   int disponi%les 2 - vectoreliculasAauxIndice.entradas0

  i" ((pelicula.entradas + ! ( pelicula.entradas , disponi%les!!   print"( ?n7umero de entradas no disponi%le?n !0  print"( ?nZuedan @2d entradas disponi%les?n$ disponi%les !0  return "alse0    return true0

/*  rocedimiento para comparar dos "ec#as.  1rue: )a primera es posterior a la segunda  */ %ool 1ipoestion::8sosterior( const 1ipoJec#a "O$ const 1ipoJec#a "2!   i" ("O.anno H "2.anno!

  return ("O.anno , "2.anno!0  else i" ("O.mes H "2.mes!   return ("O.mes , "2.mes!0  else   return ("O.dia , "2.dia!0