Advertisement
Guest User

Untitled

a guest
Dec 6th, 2016
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.16 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. typedef struct Contato
  5. {
  6. int id;
  7. char nome[50];
  8. int ano;
  9. int mes;
  10. int dia;
  11. char t_movel[12];
  12. char t_fixo[11];
  13. char email[100];
  14. } CONTATO_T;
  15.  
  16.  
  17. char readchar()
  18. {
  19. char c;
  20. do
  21. {
  22. c = getchar();
  23. }
  24. while (c == '\n');
  25. return(c);
  26. }
  27.  
  28. void imprimir_agenda(FILE *pFile)
  29. {
  30. CONTATO_T c;
  31. int conta_registro = 0;
  32.  
  33. while (fscanf(pFile,"%d %s %d %d %d %s %s %s", &c.id,c.nome,&c.dia,&c.mes,&c.ano,c.email,c.t_movel,c.t_fixo)!= EOF)
  34. {
  35. printf("\n\nContato [%d]\nNome: %s\nNascimento: %02d\\%02d\\%04d\nEmail: %s\nMovel: %s\t Fixo: %s", c.id,c.nome,c.dia,c.mes,c.ano,c.email,c.t_movel,c.t_fixo);
  36. conta_registro++;
  37. }
  38.  
  39. if (conta_registro ==0)
  40. printf("\nAGENDA VAZIA\n");
  41. }
  42.  
  43. void inserir_contato(FILE *pFile)
  44. {
  45. CONTATO_T c;
  46. int last_id = -1;
  47. last_id = getLastID(pFile);
  48. c.id = last_id +1;
  49. printf("Entre o Contato [%d]",c.id);
  50. printf("\nNome: ");
  51. scanf("%s",c.nome);
  52. printf("Nascimento dia mes ano: ");
  53. scanf("%d %d %d",&c.dia, &c.mes, &c.ano);
  54. printf("Email: ");
  55. scanf("%s",c.email);
  56. printf("Movel(11) e fixo(10): ");
  57. scanf("%s %s",c.t_movel,c.t_fixo);
  58. fprintf(pFile,"\n%d %s %d %d %d %s %s %s", c.id,c.nome,c.dia,c.mes,c.ano,c.email,c.t_movel,c.t_fixo);
  59. }
  60.  
  61. int getLastID(FILE *pFile)
  62. {
  63. CONTATO_T c;
  64. int id = -1;
  65. fseek( pFile, 0, SEEK_SET );
  66. while (fscanf(pFile,"%d %s %d %d %d %s %s %s", &c.id,c.nome,&c.dia,&c.mes,&c.ano,c.email,c.t_movel,c.t_fixo)!= EOF)
  67. {
  68. id = c.id;
  69. }
  70. return id;
  71. }
  72.  
  73. void excluir_contato(FILE *pFile)
  74. {
  75. int id;
  76. int encontrou = 0;
  77. FILE *newFile = fopen("temp.dat","w+");
  78. CONTATO_T c;
  79. printf("Informe o id do contato a ser excluido: ");
  80. scanf("%d", &id);
  81. fseek( pFile, 0, SEEK_SET );
  82. while (fscanf(pFile,"%d %s %d %d %d %s %s %s", &c.id,c.nome,&c.dia,&c.mes,&c.ano,c.email,c.t_movel,c.t_fixo)!= EOF)
  83. {
  84. if(c.id != id)
  85. {
  86. fprintf(newFile,"%d %s %d %d %d %s %s %s\n", c.id,c.nome,c.dia,c.mes,c.ano,c.email,c.t_movel,c.t_fixo);
  87. }
  88. else
  89. {
  90. encontrou = 1;
  91. }
  92. }
  93. fclose(newFile);
  94. if (encontrou)
  95. {
  96. fclose(pFile);
  97. if (remove("agenda.dat")==0)
  98. if (rename("temp.dat","agenda.dat")!=0)
  99. {
  100. printf("PROBLEMAS NA GRAVACAO DO ARQUIVO");
  101. }
  102. pFile = fopen("agenda.dat", "r+");
  103. printf("REGISTRO APAGADO COM SUCESSO");
  104. }
  105. else
  106. {
  107. printf("REGISTRO NAO ENCONTRADO");
  108. }
  109. }
  110.  
  111. void editar_contato(FILE * pFile)
  112. {
  113. int id;
  114. int encontrou = 0;
  115. FILE *newFile = fopen("temp.dat","w+");
  116. CONTATO_T c;
  117. printf("Informe o id do contato a ser editado: ");
  118. scanf("%d", &id);
  119. fseek( pFile, 0, SEEK_SET );
  120. while (fscanf(pFile,"%d %s %d %d %d %s %s %s", &c.id,c.nome,&c.dia,&c.mes,&c.ano,c.email,c.t_movel,c.t_fixo)!= EOF)
  121. {
  122. if(c.id != id)
  123. {
  124. fprintf(newFile,"%d %s %d %d %d %s %s %s\n", c.id,c.nome,c.dia,c.mes,c.ano,c.email,c.t_movel,c.t_fixo);
  125. }
  126. else
  127. {
  128. printf("\nNome: %s\nForneca o novo nome: ", c.nome);
  129. scanf("%s",c.nome);
  130. printf("Nascimento dia mes ano: %02d %02d %04d\nForneca dia mes ano: ",c.dia, c.mes, c.ano);
  131. scanf("%d %d %d",&c.dia, &c.mes, &c.ano);
  132. printf("Email: %s\n Forneca email: ", c.email);
  133. scanf("%s",c.email);
  134. printf("Movel(11) %s fixo(10): %s\nForneca Movel(11) e fixo(10): ",c.t_movel,c.t_fixo );
  135. scanf("%s %s",c.t_movel,c.t_fixo);
  136. fprintf(newFile,"%d %s %d %d %d %s %s %s\n", c.id,c.nome,c.dia,c.mes,c.ano,c.email,c.t_movel,c.t_fixo);
  137. encontrou = 1;
  138. }
  139. }
  140. fclose(newFile);
  141. if (encontrou)
  142. {
  143. fclose(pFile);
  144. if (remove("agenda.dat")==0)
  145. if (rename("temp.dat","agenda.dat")!=0)
  146. {
  147. printf("PROBLEMAS NA GRAVACAO DO ARQUIVO");
  148. }
  149. pFile = fopen("agenda.dat", "r+");
  150. printf("REGISTRO ALTERADO COM SUCESSO");
  151. }
  152. else
  153. {
  154. printf("CONTATO NAO ENCONTRADO");
  155. }
  156. }
  157.  
  158. /// A SUA MUDANCA DEVE SE CONCENTRAR EXCLUVIVAMENTE A ESTA FUNCAO !!!
  159. void adicionar_digito9_ao_telefone(FILE * pFile)
  160. {
  161.  
  162. }
  163.  
  164. int main()
  165. {
  166. int opcao = 0;
  167. FILE * pFileAgenda;
  168.  
  169. while (1)
  170. {
  171. printf("\n\n");
  172. printf("\n\nMENU DE OPERACOES NA AGENDA\n\n");
  173. printf("(1) Imprimir agenda\t\t(2) Inserir contato\n\n");
  174. printf("(3) Excluir contato\t\t(4) Editar contato\n\n");
  175. printf("(5) Adicionar digito 9\t\t(6) Sair do programa\n\n\n");
  176.  
  177. pFileAgenda = fopen("agenda.dat", "r+");
  178. if (pFileAgenda == NULL)
  179. {
  180. pFileAgenda = fopen("agenda.dat", "w+");
  181. if (pFileAgenda == NULL)
  182. {
  183. printf("Problemas com a abertura do arquivo de dados da agenda");
  184. exit(0);
  185. }
  186. }
  187.  
  188. do
  189. {
  190. printf("Digite a opcao desejada: ");
  191. opcao = readchar();
  192. if (feof(stdin)) break;
  193. }
  194. while (opcao < '1' || opcao > '6');
  195.  
  196. if (feof(stdin))
  197. {
  198. printf("EOF encontrado. Saindo ...\n\n\n");
  199. break;
  200. }
  201.  
  202. switch (opcao)
  203. {
  204. case '1':
  205. imprimir_agenda(pFileAgenda);
  206. break;
  207. case '2':
  208. inserir_contato(pFileAgenda);
  209. break;
  210. case '3':
  211. excluir_contato(pFileAgenda);
  212. break;
  213. case '4':
  214. editar_contato(pFileAgenda);
  215. break;
  216. case '5':
  217. adicionar_digito9_ao_telefone(pFileAgenda);
  218. break;
  219. case '6':
  220. break;
  221. default:
  222. break;
  223. }
  224.  
  225. if (opcao == '6')
  226. {
  227. printf("O usuario pediu para sair do programa. Saindo ...\n\n\n");
  228. break;
  229. }
  230. fclose(pFileAgenda);
  231. }
  232.  
  233. exit(0);
  234. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement