Advertisement
Guest User

Cadastro Banda 2.0 Arquivo

a guest
Mar 1st, 2012
771
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.71 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5.  
  6. struct Registro_Album{
  7. char nome[30];
  8. char tipo[30];
  9. char musicas[5][30];
  10. int ano;
  11. };
  12.  
  13. struct Registro_Banda{
  14. char nome_banda[50];
  15. int data;
  16. int integrantes;
  17. int cod;
  18. int deletado;
  19. };
  20.  
  21.  
  22. struct Registro_Banda Banda;
  23. struct Registro_Album album[3];
  24.  
  25.  
  26. void criar(FILE *arquivo);//Função para criar o arquivo
  27. void inserir(FILE *arquivo);//Função para inserir dados
  28. void exibir(FILE *arquivo);//Função para exibir dados
  29. void pesquisar(FILE *arquivo);//Função para pesquisar dados
  30. void creditos();//Função para informações extras
  31.  
  32. int main(){
  33. int op;
  34. int codigo;
  35. FILE *arquivo;
  36. criar(arquivo);
  37. do{
  38. printf("***********************************\n");
  39. printf("* MENU *\n");
  40. printf("***********************************\n");
  41. printf("* 1 - Cadastrar Banda *\n");
  42. printf("* 2 - Listar Bandas *\n");
  43. printf("* 3 - Pesquisar Banda *\n");
  44. printf("* 4 - Alterar Banda *\n");//falta
  45. printf("* 5 - Remover Bandas *\n");//falta
  46. printf("* 6 - Creditos *\n");
  47. printf("* 7 - Sair *\n");
  48. printf("***********************************\n");
  49. printf("\nDigite sua opcao: ");
  50. scanf("%d",&op);
  51. switch(op){
  52.  
  53. case 1:{
  54. system("cls");
  55. inserir(arquivo);
  56. break;
  57. }
  58.  
  59. case 2:{
  60. system("cls");
  61. exibir(arquivo);
  62. break;
  63. }
  64.  
  65. case 3:{
  66. system("cls");
  67. pesquisar(arquivo);
  68. break;
  69. }
  70.  
  71. case 4:{
  72. arquivo = fopen("Banda.txt","rb");
  73. printf("Digite o codigo do registro: ");
  74. scanf("%d",&codigo);
  75. alterar(arquivo,codigo);
  76. break;
  77. }
  78. case 5:{
  79. //falta
  80. break;}
  81.  
  82. case 6:{
  83. system("cls");
  84. creditos();
  85. break;}
  86. default:
  87. printf("Saindo!\n");
  88. }
  89. }while(op != 7);
  90. system("pause");
  91. }
  92.  
  93. //Função para informações extras
  94. void creditos() {
  95. system("cls");
  96. printf("\n\n\n");
  97. printf("\t***********************************************************\n");
  98. printf("\t# Programa desenvolvido por: Francisco Balbino Neto *\n");
  99. printf("\t# Para mais informacoes acesse o site: www.ifdesenv.com *\n");
  100. printf("\t***********************************************************\n\n\n");
  101. printf("\t\t\tTecle <ENTER> para voltar");
  102. getch();
  103. system("cls");
  104. }
  105.  
  106. //Função para alterar dados
  107. void alterar(FILE *arquivo, int cod)
  108. {
  109.  
  110. struct Registro_Banda Banda;
  111. int achou=0;
  112. int posicao = 0; // inicio do arquivo
  113.  
  114. // usar fseek para ir ao inicio do arquivo para nao correr risco de estar na frente do arquivo que quer alterar
  115. fseek(arquivo, posicao, SEEK_SET);//ou funçao rewind(arquivo)
  116.  
  117. do
  118. {
  119. if (fread(&Banda,sizeof(struct Registro_Banda),1,arquivo) == 0)
  120. break;
  121. if (Banda.cod == cod){
  122. system("cls");
  123. printf("Registro Antigo\n\n");
  124. printf("Codigo............: %d\n",Banda.cod);
  125. printf("Nome: %s\n",Banda.nome_banda);
  126. printf("Data: %d\n",Banda.data);
  127.  
  128. printf("<<<<<Digite o Registro novo>>>>\n\n");
  129. printf("Codigo: ");
  130. scanf("%d",&Banda.cod);
  131. fflush(stdin);
  132. printf("Nome da Banda....: ");
  133. gets(Banda.nome_banda);
  134. printf("Data: ");
  135. scanf("%d",&Banda.data);
  136. fflush(stdin);
  137. Banda.deletado=0;
  138.  
  139. fseek(arquivo, posicao, SEEK_SET);
  140. achou= fwrite(&Banda,sizeof(struct Registro_Banda),1,arquivo) == sizeof(struct Registro_Banda);
  141. break;
  142. }
  143.  
  144. // ajustar posicao em relacao ao inicio do arquivo
  145. posicao = posicao + sizeof(struct Registro_Banda);
  146. } while(1);
  147. if (!achou)
  148. printf("Nome nao encontrado\n");
  149. getch();
  150. system("cls");
  151. }
  152.  
  153. //Função para pesquisar dados
  154. void pesquisar(FILE *arquivo){
  155. char Nomepesquisa[50];
  156. int achou = 1;
  157. fflush(stdin);
  158. if((arquivo = fopen("Banda.txt","rb")) == NULL){
  159. exit(0);
  160. }
  161. printf("\n----------------------------------------------------------\n\n");
  162. printf("Digite o nome da Banda que deseja pesquisar: ");
  163. gets(Nomepesquisa);
  164. printf("\n");
  165.  
  166. rewind(arquivo);
  167. do
  168. {
  169. fread(&Banda,sizeof(struct Registro_Banda),1,arquivo);
  170. if(strcmp(Nomepesquisa,Banda.nome_banda) == 0){
  171. printf("Nome: %s\n",Banda.nome_banda);
  172. printf("Data: %d\n",Banda.data);
  173. printf("Codigo: %d\n",Banda.cod);
  174. achou=0;
  175. printf("\n----------------------------------------------------------\n\n");
  176. printf("\t\t\tTecle <ENTER> para voltar");
  177. getch();
  178. system("cls");
  179. break;
  180. }
  181. }while(!feof(arquivo));
  182. if(achou!=0){
  183. printf("Nome nao encontrado\n");
  184. printf("\n----------------------------------------------------------\n\n");
  185. }
  186. }
  187.  
  188. //Função apara exibir dados
  189. void exibir(FILE *arquivo){
  190. if((arquivo = fopen("Banda.txt","rb")) == NULL){
  191. //exit(0); Função para sair do programa em caso de erro.
  192. printf("Problemas na abertura do arquivo!\n");
  193. printf("\nTecle <ENTER> para voltar!");
  194. getch();
  195. system("cls");
  196. main();
  197.  
  198. }
  199. printf("\n----------------------------------------------------------\n\n");
  200. printf("As Bandas cadastradas sao: \n");
  201. fread(&Banda,sizeof(struct Registro_Banda),1,arquivo);
  202. while(!feof(arquivo)){//Enquanto não chega ao fim do arquivo, lê o aquivo
  203. printf("Nome: %s\n",Banda.nome_banda);
  204. printf("Data: %d\n",Banda.data);
  205. printf("Codigo: %d\n\n",Banda.cod);
  206. fread(&Banda,sizeof(struct Registro_Banda),1,arquivo);
  207. }
  208. printf("\n----------------------------------------------------------\n\n");
  209. printf("Tecle <ENTER> para voltar!");
  210. getch();
  211. system("cls");
  212. }
  213.  
  214. //Função para inserir dados
  215. void inserir(FILE *arquivo){
  216. int tam,i;
  217. printf("Digite a quantidade de bandas que deseja Cadastrar: ");
  218. scanf("%d",&tam);
  219. (struct Banda*) malloc(tam*sizeof(struct Registro_Banda));//Aloca memória para a estrutura
  220. if((arquivo = fopen("Banda.txt","a+")) == NULL){
  221. exit(0);
  222. }
  223. printf("\n----------------------------------------------------------\n\n");
  224. for(i=0; i<tam; i++){
  225. fflush(stdin);
  226. printf("Digite o Nome da Banda: ");
  227. scanf("%s",&Banda.nome_banda);
  228. printf("Digite a data de criação da Banda: ");
  229. scanf("%d",&Banda.data);
  230. printf("Digite o codigo da Banda: ");
  231. scanf("%d",&Banda.cod);
  232. fwrite(&Banda,sizeof(struct Registro_Banda),1,arquivo);//gravadados
  233. printf("\n");
  234. }
  235. fclose(arquivo);
  236. printf("Tecle <ENTER> para voltar!");
  237. getch();
  238. system("cls");
  239. }
  240.  
  241. //Função para criar o arquivo
  242. void criar(FILE *arquivo){
  243. if((arquivo = fopen("Banda.dat","wb")) == NULL){
  244. exit(0);
  245. }
  246. fclose(arquivo);
  247. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement