Advertisement
Guest User

Untitled

a guest
Dec 13th, 2018
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.12 KB | None | 0 0
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include <locale.h>
  3. #include <stdio.h>
  4. #include <windows.h>
  5. #include <cmath>
  6. #include <stdlib.h>
  7. #include <ctype.h>
  8. #include <string.h>
  9. #include <time.h>
  10. using namespace std;
  11.  
  12. typedef struct data {
  13. int ano;
  14. int mes;
  15. int dia;
  16. int hora;
  17. int min;
  18. int segundo;
  19. }DATA;
  20.  
  21. typedef struct utilizadores
  22. {
  23. int ocupado;
  24. int codigoUtilizador;
  25. char nome[100];
  26. char morada[150];
  27. int contacto;
  28. char dataRegisto[20];
  29. char nomeUtilizador[15];
  30. char password[15];
  31. int tipoUser;
  32. int logado;
  33. int tempo_total_utilizacao;
  34. int total_dinheiro_gasto;
  35. }Utilizadores;
  36.  
  37.  
  38. typedef struct computadores
  39. {
  40. int codigoComputador;
  41. int estado;
  42. int tempoUtilizacao;
  43. int total_faturado;
  44. }Computadores;
  45.  
  46. typedef struct sessoes
  47. {
  48. int estado;
  49. int codComputador;
  50. int codUtilizador;
  51. char dataInicio;
  52. int minutosUtilizacao;
  53. int preco;
  54. int pagamento;
  55. }Sessoes;
  56. // Poe computadores livres
  57. void ocupado(Computadores *c, int n) {
  58. for (int i = 0; i < n; i++){
  59. c->codigoComputador = i + 1;
  60. c->estado = 0;
  61. c->tempoUtilizacao = 0;
  62. c->total_faturado = 0;
  63. c++;
  64. }
  65. }
  66. // Poe os utilizadores livres
  67. void ocupadou(Utilizadores *p, int n) {
  68. for (int i = 0; i < n; i++){
  69. p->ocupado = 0;
  70. p->tempo_total_utilizacao = 0;
  71. p->total_dinheiro_gasto = 0;
  72. p++;
  73. }
  74. }
  75.  
  76.  
  77. // Isto vai ser a tabela de preços
  78. void tabela(Sessoes *s, Utilizadores *p, int n) {
  79. float preco;
  80. p->codigoUtilizador = s->codUtilizador;
  81. if (s->minutosUtilizacao < 30)
  82. preco = s->minutosUtilizacao * 0.05;
  83. else if (s->minutosUtilizacao > 30)
  84. preco = 30 * 0.05 + (s->minutosUtilizacao - 30) * 0.025;
  85.  
  86. if (preco < 2)
  87. s->preco = 2;
  88. else s->preco = preco;
  89.  
  90. }
  91. // Regista a data atual
  92. void dataregisto(DATA *h, int n) {
  93. SYSTEMTIME st;
  94. GetSystemTime(&st);
  95. for (int i = 0; i < n; i++){
  96. h->ano = st.wYear;
  97. h->mes = st.wMonth;
  98. h->dia = st.wDay;
  99. h->hora = st.wHour;
  100. h->min = st.wMinute;
  101. h->segundo = st.wSecond;
  102. h++;
  103. }
  104. }
  105. // lista computadores
  106. void listar_computadores(Computadores *c, int n)
  107. {
  108. printf("\n\n LISTA DE COMPUTADORES \n\n");
  109. int i;
  110. for (i = 0; i < n; i++)
  111. {
  112. printf("Código: %d\n", c->codigoComputador);
  113. printf("Estado: %d\n", c->estado);
  114. printf("Faturado: %d\n", c->total_faturado);
  115. printf("Tempo Utilização: %d\n\n", c->tempoUtilizacao);
  116.  
  117. c++;
  118. }
  119. }
  120.  
  121.  
  122.  
  123. //Adicionar Utilizador
  124.  
  125. void inserirUtilizador(Utilizadores *p, data*h , int n)
  126.  
  127. {
  128. int i = 0;
  129. while ((p->ocupado != 0) && (i < n)) {
  130. i++;
  131. p++;
  132. h++;
  133. }
  134. if (i < n){
  135. dataregisto(h, n);
  136. printf("\nInserir novo utilizador no sistema\n\n");
  137.  
  138. fseek(stdin, 0, 2);
  139. printf("\nInsira o nome completo: ");
  140. gets_s(p->nome);
  141.  
  142. //Percorrer todo o vetor para verificar se há utilizadores com nomes iguais (POR FAZER!!!)
  143. fseek(stdin, 0, 2);
  144. printf("\nInsira o nome de utilizador: ");
  145. gets_s(p->nomeUtilizador);
  146.  
  147. fseek(stdin, 0, 2);
  148. printf("\nInsira a morada: ");
  149. gets_s(p->morada);
  150.  
  151. printf("\nInsira o contacto de telefone: ");
  152. scanf("%d", &(p->contacto));
  153.  
  154. fseek(stdin, 0, 2);
  155. printf("\nInsira password: ");
  156. gets_s(p->password);
  157.  
  158. printf("\nUtilizador registado em %d-%d-%d as %d:%d:%d.\n", h->ano, h->mes, h->dia, h->hora, h->min, h->segundo);
  159. p->ocupado = 1;
  160. printf("\nUtilizador registado na posicao %d\n", i + 1);
  161. }
  162. else printf("\n O programa nao tem espaco para mais utilizadores!! \n");
  163. printf("\n Pressiona <enter> para continuar\n");
  164. system("pause");
  165.  
  166. }
  167. // Mostra utilizadores
  168. void listarUtilizador(Utilizadores *p,data *h, int n)
  169. {
  170. int i;
  171. for (i = 0; i < n; i++)
  172. {
  173. if( p->ocupado !=0){
  174. printf("\nO utilizador %s tem os seguintes dados: ", p->nomeUtilizador);
  175. printf("\nNome: %s", p->nome);
  176. printf("\nMorada: %s", p->morada);
  177. printf("\nContacto: %d", p->contacto);
  178. printf("\nData de Registo: %d-%d-%d as %d:%d:%d.\n", h->ano, h->mes, h->dia, h->hora, h->min, h->segundo);
  179. }
  180. p++;
  181. h++;
  182.  
  183. }
  184. }
  185.  
  186. char menu1()
  187. {
  188. char op;
  189. printf("\n#--------------------------#");
  190. printf("\n Fazer Login (1) \n");
  191. printf("\n Criar Conta (2) \n");
  192. printf("\n Sair (3) \n");
  193. printf("\n#--------------------------#");
  194. do {
  195. printf("\nQual a opção? ");
  196. scanf(" %c", &op);
  197. } while (op < '1' || op > '5');
  198. system("cls");
  199. return op;
  200. }
  201.  
  202. char menuAdmin()
  203. {
  204. char op;
  205. printf("\n#--------------------------------------------#");
  206. printf("\n Adicionar Computador (1) \n");
  207. printf("\n Editar Computador (2) \n");
  208. printf("\n Tornar utilizador em Admin (3) \n");
  209. printf("\n Editar utilizador (4) \n");
  210. printf("\n Remover utilizador (5) \n");
  211. printf("\n Sair (0) \n");
  212. printf("\n#--------------------------#");
  213. do {
  214. printf("\nQual a opção? ");
  215. scanf(" %c", &op);
  216.  
  217. } while (op < '0' || op > '5');
  218. system("cls");
  219. return op;
  220. }
  221.  
  222. char menuUser()
  223. {
  224. char op;
  225. printf("\n#--------------------------------------------#");
  226. printf("\n (1) \n");
  227. printf("\n (2) \n");
  228. printf("\n (3) \n");
  229. printf("\n Sair (0) \n");
  230. printf("\n#--------------------------------------------#");
  231. do {
  232. printf("\nQual a opção? ");
  233. scanf(" %c", &op);
  234. } while (op < '1' || op > '6');
  235. system("cls");
  236. return op;
  237. }
  238.  
  239. void menuLogin(Utilizadores *p, int n)
  240. {
  241. int i, cmpStringUser, cmpStringPass;
  242. char nome[15], password[15];
  243. Utilizadores *user = new Utilizadores;
  244. *user = *p;
  245. int nUsers = n;
  246.  
  247. fseek(stdin, 0, 2);
  248. printf("\nInsira o nome de utilizador: ");
  249. gets_s(nome);
  250. fseek(stdin, 0, 2);
  251. printf("\nInsira a password: ");
  252. gets_s(password);
  253.  
  254. for (i = 0; i < n; i++)
  255. {
  256. cmpStringUser = strcmp(nome, p->nomeUtilizador);
  257. cmpStringPass = strcmp(password, p->password);
  258. p++;
  259. if (cmpStringUser != 0 || cmpStringPass != 0)
  260. if (p->tipoUser == 0)
  261. menuAdmin();
  262. else
  263. menuUser();
  264. else
  265. menuLogin(user, nUsers);
  266. }
  267. do {
  268. fseek(stdin, 0, 2);
  269. printf("Insira o nome de utilizador: ");
  270. gets_s(nome);
  271. fseek(stdin, 0, 2);
  272. printf("Insira a password: ");
  273. gets_s(password);
  274.  
  275. for (i = 0; i < n; i++) {
  276.  
  277. p++;
  278. }
  279. } while (cmpStringUser != 0 || cmpStringPass != 0);
  280.  
  281. }
  282.  
  283. void main()
  284. {
  285. setlocale(LC_ALL, ""); //Caracteres acentuados
  286.  
  287. Utilizadores user[10];
  288. int nUsers = 10;
  289.  
  290.  
  291. int nComputadores = 20;
  292. Computadores pc[20];
  293. data h[10];
  294. ocupado(pc, nComputadores);
  295.  
  296.  
  297. char ope;
  298. ocupadou(user, nUsers);
  299.  
  300.  
  301. do {
  302. ope = menu1();
  303.  
  304. switch (ope) {
  305. case '1':
  306. menuLogin(user, nUsers);
  307. break;
  308. case '2':
  309. inserirUtilizador(user, h, nUsers); //Registar-se no sistema
  310. system("cls");
  311. break;
  312. case '3':
  313. break; //Sair do programa
  314. case '4':
  315. listar_computadores(pc, nComputadores);
  316. break;
  317. case '5':
  318. listarUtilizador(user,h, nUsers);//Servirá para o login (nao e suposto)
  319. break;
  320. default:
  321. printf("\nOpção inválida.");
  322. break;
  323. }
  324. } while (ope != '3');
  325. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement