Advertisement
Guest User

wutinthewuts

a guest
Oct 22nd, 2016
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.51 KB | None | 0 0
  1. /*
  2. * Aluguer.h
  3. *
  4. * Created on: 22/10/2016
  5. * Author: angrydodo
  6. */
  7.  
  8. #include <iostream>
  9. #include <string>
  10. #include <vector>
  11.  
  12. using namespace std;
  13.  
  14.  
  15. /*
  16. A FAZER:
  17.  
  18. 1 - Implementar uma classe Data com os respetivos operadores, para conseguir extrair de uma string uma data utilizabel,
  19. lidar com uma data invalida, e ter operadores de menor e igual para compararmos datas e facilitar a averiguacao
  20. da validade de um aluguer.
  21.  
  22. 2 - No menu, tem que haver dois tipos de acessos, um de fornecedor e outro de clientes. O Fornecedor serve para adicionar
  23. alugueres, o de clientes para pesquisar e reservar possibilidades de acordo com os alugueres disponiveis
  24.  
  25. 3 - Classes que faltam do aluguer
  26.  
  27. 4 - Criar uma classe mãe de Clientes, com duas derivadas. Uma para clientes registados(com pontos) outra para esporádicos.
  28.  
  29. 5 - Criar uma classe de Fornecedores, que tem um vetor de alugueres, e informacao. Mais concretamente:
  30. " Quando um fornecedor se regista no sistema, deve incluir os seus dados (nome, NIF, morada), e a lista de ofertas
  31. que deseja disponibilizar, com as respectivas características"
  32.  
  33. 6 - Criar uma classe Empresa, que possui um vetor de clientes e outro de fornecedores. Esta vai ser a que engloba tudo,
  34. e que vai dirigir tudo.
  35.  
  36. 7 - Panisguices incrivelmente bonitas!
  37.  
  38. */
  39.  
  40.  
  41.  
  42. // MUITO IMPORTANTE ESTE CICLO. Isto vai detetar input invalido e pergunta caso queira repetir este ciclo.
  43. // SEMPRE que existir a possibilidade do senhor merdar, chamem esta função, ela vai ajudar :)
  44.  
  45. bool inputInvalido()
  46. {
  47. bool b = true;
  48. while (b)
  49. {
  50. string x;
  51. cin.clear();
  52. cin.ignore(10000);
  53. cout << "Input Invalido. Quer tentar outra vez? (s/n)"
  54. if (x == "sim" || x == "s")
  55. return true;
  56. else if (x == "nao" || x == "não" || x == "n")
  57. return false;
  58. else
  59. continue;
  60. }
  61. }
  62.  
  63.  
  64.  
  65. class Data
  66. {
  67. // cenas, ma man
  68. };
  69.  
  70. class Aluguer
  71. {
  72. protected:
  73.  
  74. // Todas estas variaveis sao comuns a todos os alugueres, por isso é que as ponho aqui
  75.  
  76. string cidade; // Pretty obvious, I guess
  77. Data dataInicio, dataFim; // Será melhor pormos a data como float ou whatevs? Acho melhor
  78. // assim por causa da extracao de um istream;
  79. // Outra cena, é dataInicio e fim porque o fornecedor tem de explicitar
  80. // quais sao as datas em que o aluguer esta disponivel;
  81.  
  82. string tipoEstadia; // Estas duas trabalham juntas, porque o fornecedor tem de dizer quanto
  83. int duracaoEstadia; // tempo uma pessoa pode ter um determinado aluguer, funcionando do género
  84. // "A duração do aluguer será em noites, semanas, ou meses?" , extrai para o tipoEstadia
  85. // "Quantos noites/semanas/meses serão? " texto varia com tipoEstadia, extrai para duracaoEstadia
  86.  
  87. int numOcupantes; // O numero de pessoas que vai para um determinado aluguer, (quarto duplo, triplo, etc...)
  88.  
  89. public:
  90. Aluguer(string c,Data dataI, Data dataF, string tipo, int d, int n);
  91.  
  92. virtual void getNome(){} // getNome do Hotel, nao faz sentido as outras classes terem nomes
  93. virtual int getNumOcupantes(){}
  94. Data getDataInicio() {return dataInicio;}
  95. Data getDataFim() {return dataFim;}
  96. int getDuracao() {return duracaoEstadia;}
  97.  
  98. };
  99.  
  100. Aluguer::Aluguer(string c, Data dataI, Data dataF, string tipo, int d, int n)
  101. {
  102. cidade = c;dataInicio = dataI; dataFim = dataF; tipoEstadia = tipo; duracaoEstadia = d; numOcupantes = n;
  103. }
  104.  
  105. class Hotel : public Aluguer
  106. {
  107. string nomeHotel; // Podera ser utilizado para, apos fazer sort ao vetor de aluguer, fazer display bonito
  108. int numOcupantes; // Definido pelo tipo de aluguer que é
  109. string tipo; // Tipo de Quarto que quer
  110. float preco;
  111. public:
  112. Hotel(){}
  113. Hotel(string c, Data dataI, Data dataF, string tipo, int d, float p, string t, int n);
  114. string getTipo() { return tipo; }
  115.  
  116. string getNome() {return nomeHotel;}
  117. float getPreco(){return preco;}
  118. Hotel constroiHotel(); // Pressupostamente constroi um hotel, mas ainda tenho que pensar como implementar isto
  119. };
  120.  
  121.  
  122. Hotel::Hotel(string c, Data dataI, Data dataF, string tipo, int d, float p, string t, int n) : Aluguer(c, dataI, dataF, tipo, d, n)
  123. {
  124. this->tipo = t;
  125. preco = p;
  126. }
  127.  
  128. /* NAO FUNCIONA BEM, TENHO QUE PENSAR MELHOR NESTA MERDA
  129.  
  130. Hotel Hotel::constroiHotel() // Feito para fornecedores, clientes nao escolhem nada daqui
  131. {
  132.  
  133. Hotel h();
  134.  
  135. string x;
  136. int n;
  137. float f;
  138. bool isIn = true; // Este boleano é só um sistema que usei para implementar uma deteção de erro, com possibilidade de repetição
  139. while (isIn)
  140. {
  141.  
  142.  
  143. cout << "Qual é a cidade onde pretende disponibilizar o aluguer?\n\n";
  144. cin >> x;
  145. this->cidade = x;
  146. cout << "\nQual o tipo de quarto que pretende disponibilizar? As hipóteses são:" << endl;
  147. cout << "1 - Quarto Simples\n2 - Quarto Duplo\n3 - Quarto Duplo com cama adicional\n4 - Quarto Triplo"<< endl;
  148. // pode levar mais panisguices aqui malta
  149.  
  150. if (n == 1)
  151. numOcupantes = 1;
  152. else if (n == 2)
  153. numOcupantes = 2;
  154. else if (n == 3)
  155. numOcupantes = 3;
  156. else if (n == 4)
  157. numOcupantes = 3;
  158. else if (inputInvalido() == true)
  159. continue;
  160. else // TEM QUE AQUI VOLTAR AO MENU INICIAL, PARA CONTINUAR A FAZER FUNCOES
  161. {
  162. isIn = false;
  163. return h; // retorna hotel vazio;
  164. break;
  165. }
  166. }
  167. isIn= true;
  168.  
  169. while (isIn)
  170. {
  171. cout << "\nQual o preço que pretende cobrar pelo quarto?\n";
  172. cin >> f;
  173. if (inputInvalido() == false)
  174. continue;
  175. else
  176. {
  177. this->preco = f;
  178. isIn = false;
  179. break;
  180. }
  181. }
  182. }
  183. */
  184.  
  185. // O RESTO DAS CLASSES
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement