Advertisement
Guest User

Untitled

a guest
Dec 14th, 2018
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.61 KB | None | 0 0
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include <locale.h>
  3. #include <stdio.h>
  4. #include <windows.h>
  5. #include <math.h>
  6. #include <stdlib.h>
  7. #include <ctype.h>
  8. #include <string.h>
  9. #include <time.h>
  10. using namespace std;
  11.  
  12.  
  13.  
  14. typedef struct data {
  15. int ano;
  16. int mes;
  17. int dia;
  18. int hora;
  19. int min;
  20. int segundo;
  21. }DATA;
  22.  
  23. typedef struct utilizadores
  24. {
  25. int ocupado;
  26. int codigoUtilizador;
  27. char nome[100];
  28. char morada[150];
  29. int contacto;
  30. char dataRegisto[20];
  31. char nomeUtilizador[15];
  32. char password[15];
  33. int tipoUser;
  34. int logado;
  35. int tempo_total_utilizacao;
  36. int total_dinheiro_gasto;
  37. }Utilizadores;
  38.  
  39.  
  40. typedef struct computadores
  41. {
  42. int codigoComputador;
  43. int estado;
  44. int tempoUtilizacao;
  45. int total_faturado;
  46. }Computadores;
  47.  
  48. typedef struct sessoes
  49. {
  50. int estado;
  51. int codComputador;
  52. int codUtilizador;
  53. char dataInicio;
  54. int minutosUtilizacao;
  55. int preco;
  56. int pagamento;
  57. }Sessoes;
  58.  
  59. void menuPC(Utilizadores *p, data *h, computadores *c, int n);
  60. void menuAdminUsers(Utilizadores *p, data *h, computadores *c, int n);
  61. void menuAdminPC(Utilizadores *p, data *h, computadores *c, int n);
  62. void menuLogin(Utilizadores *p, data *h, computadores *c, int n);
  63.  
  64. // Poe computadores livres
  65. void ocupado(Computadores *c, int n) {
  66. for (int i = 0; i < n; i++){
  67. c->codigoComputador = i + 1;
  68. c->estado = 0;
  69. c->tempoUtilizacao = 0;
  70. c->total_faturado = 0;
  71. c++;
  72. }
  73. }
  74. // Poe os utilizadores livres
  75. void ocupadou(Utilizadores *p, int n) {
  76. for (int i = 0; i < n; i++){
  77. p->ocupado = 0;
  78. p->tempo_total_utilizacao = 0;
  79. p->total_dinheiro_gasto = 0;
  80. p++;
  81. }
  82. }
  83.  
  84.  
  85. // Isto vai ser a tabela de preços
  86. void tabela(Sessoes *s, Utilizadores *p, int n) {
  87. float preco;
  88. p->codigoUtilizador = s->codUtilizador;
  89. if (s->minutosUtilizacao < 30)
  90. preco = s->minutosUtilizacao * 0.05;
  91. else if (s->minutosUtilizacao > 30)
  92. preco = 30 * 0.05 + (s->minutosUtilizacao - 30) * 0.025;
  93.  
  94. if (preco < 2)
  95. s->preco = 2;
  96. else s->preco = preco;
  97.  
  98. }
  99. // Regista a data atual
  100. void dataregisto(DATA *h, int n) {
  101. SYSTEMTIME st;
  102. GetSystemTime(&st);
  103. for (int i = 0; i < n; i++){
  104. h->ano = st.wYear;
  105. h->mes = st.wMonth;
  106. h->dia = st.wDay;
  107. h->hora = st.wHour;
  108. h->min = st.wMinute;
  109. h->segundo = st.wSecond;
  110. h++;
  111. }
  112. }
  113. // lista computadores
  114. void listar_computadores(Computadores *c, int n)
  115. {
  116. printf("\n\n LISTA DE COMPUTADORES \n\n");
  117. int i;
  118. for (i = 0; i < n; i++)
  119. {
  120. printf("Código: %d\n", c->codigoComputador);
  121. printf("Estado: %d\n", c->estado);
  122. printf("Faturado: %d\n", c->total_faturado);
  123. printf("Tempo Utilização: %d\n\n", c->tempoUtilizacao);
  124.  
  125. c++;
  126. }
  127. }
  128. //Adicionar Utilizador
  129.  
  130. void inserirUtilizador(Utilizadores *p, data*h , int n)
  131.  
  132. {
  133. int i = 0;
  134. while ((p->ocupado != 0) && (i < n)) {
  135. i++;
  136. p++;
  137. h++;
  138. }
  139. if (i < n){
  140. dataregisto(h, n);
  141. printf("\nInserir novo utilizador no sistema\n\n");
  142.  
  143. fseek(stdin, 0, 2);
  144. printf("\nInsira o nome completo: ");
  145. gets_s(p->nome);
  146.  
  147. //Percorrer todo o vetor para verificar se há utilizadores com nomes iguais (POR FAZER!!!)
  148. fseek(stdin, 0, 2);
  149. printf("\nInsira o nome de utilizador: ");
  150. gets_s(p->nomeUtilizador);
  151.  
  152. fseek(stdin, 0, 2);
  153. printf("\nInsira a morada: ");
  154. gets_s(p->morada);
  155.  
  156. printf("\nInsira o contacto de telefone: ");
  157. scanf("%d", &(p->contacto));
  158.  
  159. fseek(stdin, 0, 2);
  160. printf("\nInsira password: ");
  161. gets_s(p->password);
  162.  
  163. printf("\nUtilizador registado em %d-%d-%d as %d:%d:%d.\n", h->ano, h->mes, h->dia, h->hora, h->min, h->segundo);
  164. p->ocupado = 1;
  165. printf("\nUtilizador registado na posicao %d\n", i + 1);
  166. }
  167. else printf("\n O programa nao tem espaco para mais utilizadores!! \n");
  168. printf("\n Pressiona <enter> para continuar\n");
  169. system("pause");
  170.  
  171. }
  172. // Mostra utilizadores
  173. void listarUtilizador(Utilizadores *p,data *h, int n)
  174. {
  175. int i;
  176. for (i = 0; i < n; i++)
  177. {
  178. if( p->ocupado !=0){
  179. printf("\nO utilizador %s tem os seguintes dados: ", p->nomeUtilizador);
  180. printf("\nNome: %s", p->nome);
  181. printf("\nMorada: %s", p->morada);
  182. printf("\nContacto: %d", p->contacto);
  183. printf("\nPassword: %s", p->password);
  184. printf("\nData de Registo: %d-%d-%d as %d:%d:%d.\n", h->ano, h->mes, h->dia, h->hora, h->min, h->segundo);
  185. }
  186. p++;
  187. h++;
  188.  
  189. }
  190. }
  191.  
  192. void editarUser() {
  193. printf("\nFuncao de editar user!");
  194. system("pause");
  195. //POR FAZER!!
  196. }
  197.  
  198. void eliminarUser() {
  199. printf("\nFuncao de eliminar user!");
  200. system("pause");
  201. //POR FAZER!!
  202. }
  203.  
  204. void eliminar_pc() {
  205. printf("\nFuncao de eliminar pc!");
  206. system("pause");
  207. //POR FAZER
  208. }
  209.  
  210. void editar_pc() {
  211. printf("\nFuncao de editar pc!");
  212. system("pause");
  213. //POR FAZER
  214. }
  215.  
  216. void adicionar_pc() {
  217. printf("\nFuncao de adicionar pc!");
  218. system("pause");
  219. //POR FAZER
  220. }
  221.  
  222. void editardados(Utilizadores *p, int n) {
  223. printf("\nFuncao de editar dados!");
  224. system("pause");
  225. //POR FAZER
  226. }
  227.  
  228.  
  229. char menu1()
  230. {
  231. char op;
  232. printf("\n#--------------------------#");
  233. printf("\n Registar (1) \n");
  234. printf("\n Logar (2) \n");
  235. printf("\n Sair (0) \n");
  236. printf("\n#--------------------------#");
  237. do {
  238. printf("\nQual a opção? ");
  239. scanf(" %c", &op);
  240. } while (op < '0' || op > '2');
  241. system("cls");
  242. return op;
  243. }
  244.  
  245. void menuUser(Utilizadores *p, data *h, computadores *c, int n)
  246. {
  247. char op;
  248. printf("\n#--------------------------------------------#");
  249. printf("\n Ir para PC (1) \n");
  250. printf("\n Editar dados (2) \n");
  251. printf("\n Sair (0) \n");
  252. printf("\n#--------------------------------------------#");
  253. do {
  254. printf("\nQual a opção? ");
  255. scanf(" %c", &op);
  256. } while (op < '0' || op > '2');
  257. switch (op) {
  258. case '1':
  259. menuPC(p, h, c, n);
  260. break;
  261. case '2':
  262. editardados(p, n); //POR FAZER
  263. break;
  264. case '0':
  265. menu1();
  266. break;
  267. default:
  268. printf("\nOpção inválida.");
  269. break;
  270. }
  271. system("cls");
  272.  
  273. }
  274.  
  275. void menuPC(Utilizadores *p, data *h, computadores *c, int n) {
  276. char op;
  277. printf("\n#--------------------------------------------#");
  278. printf("\n Cena 1 (1) \n");
  279. printf("\n Cena 2 (2) \n");
  280. printf("\n Sair da sessao (0) \n");
  281. printf("\n#--------------------------------------------#");
  282. do {
  283. printf("\nQual a opção? ");
  284. scanf(" %c", &op);
  285. } while (op < '0' || op > '2');
  286. switch (op) {
  287. case '1':
  288. //VAMOS TENTAR SIMULAR A UTILIZAÇAO DE UM COMPUTADOR
  289. break;
  290. case '2':
  291. //VAMOS TENTAR SIMULAR A UTILIZAÇAO DE UM COMPUTADOR
  292. break;
  293. case '0':
  294. menuUser(p,h,c,n);
  295. break;
  296. default:
  297. printf("\nOpção inválida.");
  298. break;
  299. }
  300. system("cls");
  301.  
  302. }
  303.  
  304. void menuAdmin(Utilizadores *p,data *h,computadores *c, int n)
  305. {
  306. char op;
  307. printf("\n#--------------------------#");
  308. printf("\n USERS (1) \n");
  309. printf("\n PCS (2) \n");
  310. printf("\n Sair (0) \n");
  311. printf("\n#--------------------------#");
  312. do {
  313. printf("\nQual a opção? ");
  314. scanf(" %c", &op);
  315.  
  316. } while (op < '0' || op > '5');
  317. switch (op) {
  318. case '1':
  319. menuAdminUsers(p,h,c,n);
  320. break;
  321. case '2':
  322. menuAdminPC(p,h,c,n);
  323. break;
  324. case '0':
  325. menuLogin(p, h, c, n);
  326. break;
  327. default:
  328. printf("\nOpção inválida.");
  329. break;
  330. }
  331. system("cls");
  332.  
  333. }
  334. void menuAdminUsers(Utilizadores *p, data *h,computadores *c, int n)
  335. {
  336. char op;
  337. printf("\n#--------------------------#");
  338. printf("\n Lista de users (1) \n");
  339. printf("\n Adicionar user (2) \n");
  340. printf("\n Editar user (3) \n");
  341. printf("\n Eliminar user (4) \n");
  342. printf("\n Sair (0) \n");
  343. printf("\n#--------------------------#");
  344. do {
  345. printf("\nQual a opção? ");
  346. scanf(" %c", &op);
  347.  
  348. } while (op < '0' || op > '4');
  349. switch (op) {
  350. case '1':
  351. listarUtilizador(p, h, n);
  352. break;
  353. case '2':
  354. inserirUtilizador(p, h, n);
  355. break;
  356. case '3':
  357. editarUser(); //POR FAZER
  358. case '4':
  359. eliminarUser(); //PORFAZER
  360. break;
  361. case '0':
  362. menuAdmin(p,h,c,n);
  363. default:
  364. printf("\nOpção inválida.");
  365. break;
  366. }
  367. }
  368.  
  369. void menuAdminPC(Utilizadores *p, data *h, computadores *c, int n) {
  370. char op;
  371. printf("\n#--------------------------#");
  372. printf("\n Lista de PCs (1) \n");
  373. printf("\n Adicionar PC (2) \n");
  374. printf("\n Editar PC (3) \n");
  375. printf("\n Eliminar PC (4) \n");
  376. printf("\n Sair (0) \n");
  377. printf("\n#--------------------------#");
  378. do {
  379. printf("\nQual a opção? ");
  380. scanf(" %c", &op);
  381.  
  382. } while (op < '0' || op > '5');
  383. switch (op) {
  384. case '1':
  385. listar_computadores(c,n);
  386. menuAdminPC(p, h, c, n);
  387. break;
  388. case '2':
  389. adicionar_pc(); //POR FAZER
  390. break;
  391. case '3':
  392. editar_pc(); //POR FAZER
  393. break;
  394. case '4':
  395. eliminar_pc(); //POR FAZER
  396. break;
  397. case '0':
  398. menuAdmin(p,h,c,n);
  399. break;
  400. default:
  401. printf("\nOpção inválida.");
  402. break;
  403. }
  404.  
  405. }
  406.  
  407.  
  408.  
  409. void menuLogin(Utilizadores *p, data *h, computadores *c, int n)
  410. {
  411. int i, cmpStringUser, cmpStringPass;
  412. char nome[15], password[15];
  413. Utilizadores *user = new Utilizadores;
  414. *user = *p;
  415. int nUsers = n;
  416.  
  417. fseek(stdin, 0, 2);
  418. printf("\nInsira o nome de utilizador: ");
  419. gets_s(nome);
  420. fseek(stdin, 0, 2);
  421. printf("\nInsira a password: ");
  422. gets_s(password);
  423.  
  424. for (i = 0; i < n; i++)
  425. {
  426. cmpStringUser = strcmp(nome, p->nomeUtilizador);
  427. cmpStringPass = strcmp(password, p->password);
  428. p++;
  429. if (cmpStringUser != 0 || cmpStringPass != 0)
  430. if (p->tipoUser == 0)
  431. menuAdmin(user, h, c, nUsers);
  432. else
  433. menuAdmin(user, h, c, nUsers); //TESTAR
  434. else
  435. menuLogin(user, h, c, nUsers);
  436. }
  437. do {
  438. fseek(stdin, 0, 2);
  439. printf("Insira o nome de utilizador: ");
  440. gets_s(nome);
  441. fseek(stdin, 0, 2);
  442. printf("Insira a password: ");
  443. gets_s(password);
  444.  
  445. for (i = 0; i < n; i++) {
  446.  
  447. p++;
  448. }
  449. } while (cmpStringUser != 0 || cmpStringPass != 0);
  450. menuAdmin(user, h, c, nUsers);
  451. }
  452.  
  453. void main()
  454. {
  455. setlocale(LC_ALL, ""); //Caracteres acentuados
  456.  
  457. Utilizadores user[10];
  458. int nUsers = 10;
  459.  
  460.  
  461. int nComputadores = 20;
  462. Computadores pc[20];
  463. data h[10];
  464. ocupado(pc, nComputadores);
  465.  
  466.  
  467. char ope;
  468. ocupadou(user, nUsers);
  469.  
  470.  
  471. do {
  472. ope = menu1();
  473.  
  474. switch (ope) {
  475. case '1':
  476. inserirUtilizador(user, h, nUsers);
  477. system("cls");
  478. break;
  479. case '2':
  480. menuLogin(user, h, pc, nUsers); //Registar-se no sistema
  481. system("cls");
  482. break;
  483. case '0':
  484. break;
  485. default:
  486. printf("\nOpção inválida.");
  487. break;
  488. }
  489. } while (ope != '0');
  490. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement