Advertisement
leo1553

Trab Jao

Dec 4th, 2017
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.55 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. //Construir um controle de hospedagem de um hotel controlando os quartos disponíveis,
  6. //os quartos ocupados, os hóspedes do hotel e os funcionários.Todas as informações
  7. //deverão ser manipuladas utilizando as estruturas de dados ministradas e deverão ser
  8. //gravadas em arquivos txt. *Obs: Cada lista de dados em um arquivo separado
  9.  
  10. //Estrutudas de Dados
  11.  
  12. typedef struct hotel_hospede {
  13. char nome[100];
  14. char cpf[30];
  15. } Hospede;
  16.  
  17. typedef struct hotel_quarto {
  18. int numero;
  19. Hospede hospede;
  20. } Quarto;
  21.  
  22. typedef struct hotel_funcionario {
  23. char nome[100];
  24. char cpf[30];
  25. char telefone[30];
  26. int salario;
  27. int idade;
  28. } Funcionario;
  29.  
  30. //Estruturas de Lista
  31.  
  32. typedef struct no_hospede {
  33. struct no_hospede* prox;
  34. Hospede info;
  35. } NoHospede;
  36.  
  37. typedef struct no_quarto {
  38. struct no_quarto* prox;
  39. Quarto info;
  40. } NoQuarto;
  41.  
  42. typedef struct no_funcionario {
  43. struct no_funcionario* prox;
  44. Funcionario info;
  45. } NoFuncionario;
  46.  
  47. //Variaveis Globais
  48.  
  49. NoHospede* hospedes = NULL;
  50. NoQuarto* quartos = NULL;
  51. NoFuncionario* funcionarios = NULL;
  52.  
  53. //Adicionar a Lista
  54.  
  55. NoHospede* addHospede() {
  56. NoHospede* hospede = (NoHospede*)malloc(sizeof(NoHospede));
  57. hospede->prox = NULL;
  58.  
  59. if(hospedes == NULL) {
  60. hospedes = hospede;
  61. }
  62. else {
  63. NoHospede* atual = hospedes;
  64. while(atual->prox != NULL)
  65. atual = atual->prox;
  66.  
  67. atual->prox = hospede;
  68. }
  69.  
  70. return hospede;
  71. }
  72.  
  73. NoQuarto* addQuarto() {
  74. NoQuarto* quarto = (NoQuarto*)malloc(sizeof(NoQuarto));
  75. quarto->prox = NULL;
  76.  
  77. if(quartos == NULL) {
  78. quartos = quarto;
  79. }
  80. else {
  81. NoQuarto* atual = quartos;
  82. while(atual->prox != NULL)
  83. atual = atual->prox;
  84.  
  85. atual->prox = quarto;
  86. }
  87.  
  88. return quarto;
  89. }
  90.  
  91. NoFuncionario* addFuncionario() {
  92. NoFuncionario* funcionario = (NoFuncionario*)malloc(sizeof(NoFuncionario));
  93. funcionario->prox = NULL;
  94.  
  95. if(funcionarios == NULL) {
  96. funcionarios = funcionario;
  97. }
  98. else {
  99. NoFuncionario* atual = funcionarios;
  100. while(atual->prox != NULL)
  101. atual = atual->prox;
  102.  
  103. atual->prox = funcionario;
  104. }
  105.  
  106. return funcionario;
  107. }
  108.  
  109. //Remover da Lista
  110.  
  111. int removerHospede(NoHospede* hospede) {
  112. if(hospedes == NULL)
  113. return 0;
  114. if(hospedes->prox == NULL) {
  115. if(hospedes == hospede) {
  116. free(hospedes);
  117. hospedes = NULL;
  118. return 1;
  119. }
  120. return 0;
  121. }
  122.  
  123. NoHospede* passado = hospedes->prox;
  124. NoHospede* atual = hospedes->prox->prox;
  125. while(atual != NULL) {
  126. if(atual == hospede) {
  127. passado->prox = atual->prox;
  128. free(atual);
  129. return 1;
  130. }
  131. }
  132. return 0;
  133. }
  134.  
  135. int removerQuarto(NoQuarto* quarto) {
  136. if(quartos == NULL)
  137. return 0;
  138. if(quartos->prox == NULL) {
  139. if(quartos == quarto) {
  140. free(quartos);
  141. quartos = NULL;
  142. return 1;
  143. }
  144. return 0;
  145. }
  146.  
  147. NoQuarto* passado = quartos->prox;
  148. NoQuarto* atual = quartos->prox->prox;
  149. while(atual != NULL) {
  150. if(atual == quarto) {
  151. passado->prox = atual->prox;
  152. free(atual);
  153. return 1;
  154. }
  155. }
  156. return 0;
  157. }
  158.  
  159. int removerFuncionario(NoFuncionario* funcionario) {
  160. if(funcionarios == NULL)
  161. return 0;
  162. if(funcionarios->prox == NULL) {
  163. if(funcionarios == funcionario) {
  164. free(funcionarios);
  165. funcionarios = NULL;
  166. return 1;
  167. }
  168. return 0;
  169. }
  170.  
  171. NoFuncionario* passado = funcionarios->prox;
  172. NoFuncionario* atual = funcionarios->prox->prox;
  173. while(atual != NULL) {
  174. if(atual == funcionario) {
  175. passado->prox = atual->prox;
  176. free(atual);
  177. return 1;
  178. }
  179. }
  180. return 0;
  181. }
  182.  
  183. //Localizar na Lista
  184.  
  185. NoHospede* localizarHospede(char nome[100]) {
  186. NoHospede* atual;
  187. for(atual = hospedes; atual != NULL; atual = atual->prox) {
  188. if(strcmp(atual->info.nome, nome) == 0) {
  189. return atual;
  190. }
  191. }
  192. return NULL;
  193. }
  194.  
  195. NoQuarto* localizarQuarto(int numero) {
  196. NoQuarto* atual;
  197. for(atual = quartos; atual != NULL; atual = atual->prox) {
  198. if(atual->info.numero == numero) {
  199. return atual;
  200. }
  201. }
  202. return NULL;
  203. }
  204.  
  205. NoFuncionario* localizarFuncionario(char nome[100]) {
  206. NoFuncionario* atual;
  207. for(atual = funcionarios; atual != NULL; atual = atual->prox) {
  208. if(strcmp(atual->info.nome, nome) == 0) {
  209. return atual;
  210. }
  211. }
  212. return NULL;
  213. }
  214.  
  215. //Ler entrada do Usuario
  216.  
  217. void lerQuarto() {
  218. NoQuarto* quarto = addQuarto();
  219.  
  220. printf("\nInsira o numero do quarto: ");
  221. scanf("%d", &quarto->info.numero);
  222. sprintf(quarto->info.hospede.nome, "Nenhum");
  223. sprintf(quarto->info.hospede.cpf, "000.000.000-00");
  224.  
  225. printf("\nQuarto adicionado com sucesso.\n");
  226. }
  227.  
  228. void lerHospede() {
  229. NoHospede* hospede = addHospede();
  230.  
  231. printf("\nInsira o nome do hospede: ");
  232. scanf(" %[^\n]s", hospede->info.nome);
  233. printf("Insira o CPF do hospede: ");
  234. scanf(" %[^\n]s", hospede->info.cpf);
  235.  
  236. printf("\nHospede adicionado com sucesso.\n");
  237. }
  238.  
  239. void lerFuncionario() {
  240. NoFuncionario* funcionario = addFuncionario();
  241.  
  242. printf("\nInsira o nome do funcionario: ");
  243. scanf(" %[^\n]s", funcionario->info.nome);
  244. printf("Insira o CPF do funcionario: ");
  245. scanf(" %[^\n]s", funcionario->info.cpf);
  246. printf("Insira o telefone do funcionario: ");
  247. scanf(" %[^\n]s", funcionario->info.telefone);
  248. printf("Insira o salario do funcionario: ");
  249. scanf("%d", &funcionario->info.salario);
  250. printf("Insira a idade do funcionario: ");
  251. scanf("%d", &funcionario->info.idade);
  252.  
  253. printf("\nFuncionario adicionado com sucesso.\n");
  254. }
  255.  
  256. //Apagar dados vindo do Usuario
  257.  
  258. void apagarQuarto() {
  259. int num;
  260.  
  261. printf("\nInsira o numero do quarto: ");
  262. scanf("%d", &num);
  263.  
  264. NoQuarto* quarto = localizarQuarto(num);
  265. if(quarto != NULL) {
  266. removerQuarto(quarto);
  267. printf("\nQuarto removido com sucesso.\n");
  268. }
  269. else
  270. printf("\nQuarto nao localizado.\n");
  271. }
  272.  
  273. void apagarHospede() {
  274. char str[100];
  275.  
  276. printf("\nInsira o nome do hospede: ");
  277. scanf(" %[^\n]s", str);
  278.  
  279. NoHospede* hospede = localizarHospede(str);
  280. if(hospede != NULL) {
  281. removerHospede(hospede);
  282. printf("\nHospede removido com sucesso.\n");
  283. }
  284. else
  285. printf("\nHospede nao localizado.\n");
  286. }
  287.  
  288. void apagarFuncionario() {
  289. char str[100];
  290.  
  291. printf("\nInsira o nome do funcionario: ");
  292. scanf(" %[^\n]s", str);
  293.  
  294. NoFuncionario* funcionario = localizarFuncionario(str);
  295. if(funcionario != NULL) {
  296. removerFuncionario(funcionario);
  297. printf("\nFuncionario removido com sucesso.\n");
  298. }
  299. else
  300. printf("\nFuncionario nao localizado.\n");
  301. }
  302.  
  303. //Mostrar dado ao Usuario
  304.  
  305. void mostrarQuarto() {
  306. int num;
  307. printf("\nInsira o numero do quarto: ");
  308. scanf("%d", &num);
  309.  
  310. NoQuarto* quarto = localizarQuarto(num);
  311. if(quarto != NULL)
  312. printf("\nNumero: %d\nHospede: %s\n\n", quarto->info.numero, quarto->info.hospede.nome);
  313. else
  314. printf("\nQuarto nao localizado.\n");
  315. }
  316.  
  317. void mostrarHospede() {
  318. char str[100];
  319. printf("\nInsira o nome do hospede: ");
  320. scanf(" %[^\n]s", str);
  321.  
  322. NoHospede* hospede = localizarHospede(str);
  323. if(hospede != NULL)
  324. printf("\nNome: %s\nCPF: %s\n\n", hospede->info.nome, hospede->info.cpf);
  325. else
  326. printf("\nHospede nao localizado.\n");
  327. }
  328.  
  329. void mostrarFuncionario() {
  330. char str[100];
  331. printf("\nInsira o nome do funcionario: ");
  332. scanf(" %[^\n]s", str);
  333.  
  334. NoFuncionario* funcionario = localizarFuncionario(str);
  335. if(funcionario != NULL)
  336. printf("\nNome: %s\nCPF: %s\nTelefone: %s\nSalario: %d\nIdade: %d\n\n", funcionario->info.nome, funcionario->info.cpf, funcionario->info.telefone, funcionario->info.salario, funcionario->info.idade);
  337. else
  338. printf("\nFuncionario nao localizado.\n");
  339. }
  340.  
  341. //Hospedar hospede a um quarto
  342.  
  343. void hospedarCliente() {
  344. if(quartos == NULL) {
  345. printf("\nNao ha quartos cadastrados.\n");
  346. return;
  347. }
  348. else if(hospedes == NULL) {
  349. printf("\nNao ha hospedes cadastrados.\n");
  350. return;
  351. }
  352.  
  353. int num;
  354. char str[100];
  355.  
  356. printf("\nInsira o numero do quarto: ");
  357. scanf("%d", &num);
  358. printf("Insira o nome do hospede: ");
  359. scanf(" %[^\n]s", str);
  360.  
  361. NoQuarto* quarto = localizarQuarto(num);
  362. NoHospede* hospede = localizarHospede(str);
  363.  
  364. if(quarto == NULL) {
  365. printf("\nQuarto nao localizado.\n");
  366. return;
  367. }
  368. else if(hospede == NULL) {
  369. printf("\nHospede nao localizado.\n");
  370. return;
  371. }
  372.  
  373. quarto->info.hospede = hospede->info;
  374. printf("\nO cliente (%s) foi hospedado no quarto %d com sucesso.\n", quarto->info.hospede.nome, quarto->info.numero);
  375. }
  376.  
  377. //Salvar dados
  378.  
  379. void salvarDados() {
  380. FILE* file = fopen("hospedes.txt", "w");
  381. NoHospede* atualH;
  382. for(atualH = hospedes; atualH != NULL; atualH = atualH->prox) {
  383. fprintf(file, "Nome: %s\n", atualH->info.nome);
  384. fprintf(file, "CPF: %s\n", atualH->info.cpf);
  385. fprintf(file, "\n");
  386. }
  387. atualH = NULL;
  388. fclose(file);
  389.  
  390. file = fopen("quartos.txt", "w");
  391. NoQuarto* atualQ;
  392. for(atualQ = quartos; atualQ != NULL; atualQ = atualQ->prox) {
  393. fprintf(file, "Numero: %d\n", atualQ->info.numero);
  394. fprintf(file, "Hospede: %s\n", atualQ->info.hospede.nome);
  395. fprintf(file, "\n");
  396. }
  397. atualQ = NULL;
  398. fclose(file);
  399.  
  400. file = fopen("funcionarios.txt", "w");
  401. NoFuncionario* atualF;
  402. for(atualF = funcionarios; atualF != NULL; atualF = atualF->prox) {
  403. fprintf(file, "Nome: %s\n", atualF->info.nome);
  404. fprintf(file, "CPF: %s\n", atualF->info.cpf);
  405. fprintf(file, "Telefone: %s\n", atualF->info.telefone);
  406. fprintf(file, "Salario: %d\n", atualF->info.salario);
  407. fprintf(file, "Idade: %d\n", atualF->info.idade);
  408. fprintf(file, "\n");
  409. }
  410. atualF = NULL;
  411. fclose(file);
  412. }
  413.  
  414. //Menus
  415.  
  416. void menuQuartos() {
  417. int op = -1;
  418. Quarto quarto;
  419. while(op != 0) {
  420. system("cls");
  421. printf(".----<: Quartos :>----.\n");
  422. printf("1. Adicionar Quarto\n");
  423. printf("2. Remover Quarto\n");
  424. printf("3. Localizar Quarto\n");
  425. printf("0. Voltar\n");
  426. scanf("%d", &op);
  427.  
  428. switch(op) {
  429. case 1:
  430. lerQuarto();
  431. break;
  432. case 2:
  433. apagarQuarto();
  434. break;
  435. case 3:
  436. mostrarQuarto();
  437. break;
  438. case 0:
  439. continue;
  440. default:
  441. continue;
  442. }
  443. system("pause");
  444. }
  445. }
  446.  
  447. void menuHospedes() {
  448. int op = -1;
  449. Hospede hospede;
  450. while(op != 0) {
  451. system("cls");
  452. printf(".----<: Hospedes :>----.\n");
  453. printf("1. Adicionar Hospede\n");
  454. printf("2. Remover Hospede\n");
  455. printf("3. Localizar Hospede\n");
  456. printf("0. Voltar\n");
  457. scanf("%d", &op);
  458.  
  459. switch(op) {
  460. case 1:
  461. lerHospede();
  462. break;
  463. case 2:
  464. apagarHospede();
  465. break;
  466. case 3:
  467. mostrarHospede();
  468. break;
  469. case 0:
  470. continue;
  471. default:
  472. continue;
  473. }
  474. system("pause");
  475. }
  476. }
  477.  
  478. void menuFuncionarios() {
  479. int op = -1;
  480. Funcionario funcionario;
  481. while(op != 0) {
  482. system("cls");
  483. printf(".----<: Funcionarios :>----.\n");
  484. printf("1. Adicionar Funcionario\n");
  485. printf("2. Remover Funcionario\n");
  486. printf("3. Localizar Funcionario\n");
  487. printf("0. Voltar\n");
  488. scanf("%d", &op);
  489.  
  490. switch(op) {
  491. case 1:
  492. lerFuncionario();
  493. break;
  494. case 2:
  495. apagarFuncionario();
  496. break;
  497. case 3:
  498. mostrarFuncionario();
  499. break;
  500. case 0:
  501. continue;
  502. default:
  503. continue;
  504. }
  505.  
  506. system("pause");
  507. }
  508. }
  509.  
  510. void menuPrincipal() {
  511. int op;
  512. while(1) {
  513. system("cls");
  514. printf(".----<: Controle de Hospedagem :>----.\n");
  515. printf("1. Acessar Quartos\n");
  516. printf("2. Acessar Hospedes\n");
  517. printf("3. Acessar Funcionarios\n");
  518. printf("4. Hospedar Cliente\n");
  519. printf("0. Sair\n");
  520. scanf("%d", &op);
  521.  
  522. switch(op) {
  523. case 1:
  524. menuQuartos();
  525. break;
  526. case 2:
  527. menuHospedes();
  528. break;
  529. case 3:
  530. menuFuncionarios();
  531. break;
  532. case 4:
  533. hospedarCliente();
  534. system("pause");
  535. break;
  536. case 0:
  537. return;
  538. default:
  539. continue;
  540. }
  541.  
  542. salvarDados();
  543. }
  544. }
  545.  
  546. //Principal
  547.  
  548. int main() {
  549. menuPrincipal();
  550. return 0;
  551. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement