Advertisement
Guest User

Untitled

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