Advertisement
Guest User

Cadastro Banda 2.0

a guest
Mar 1st, 2012
713
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.86 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# Instituto Federal do Sul de Minas - Campus Muzambinho *\n");
  99. printf("\t#\tCiencia da Computacao 2o.Periodo *\n");
  100. printf("\t# Programa desenvolvido por: Francisco Balbino Neto *\n");
  101. printf("\t# Para mais informacoes acesse o site: www.ifdesenv.com *\n");
  102. printf("\t***********************************************************\n\n\n");
  103. printf("\t\t\tTecle <ENTER> para voltar");
  104. getch();
  105. system("cls");
  106. }
  107.  
  108. //Função para alterar dados
  109. void alterar(FILE *arquivo, int cod)
  110. {
  111.  
  112. struct Registro_Banda Banda;
  113. int achou=0;
  114. int posicao = 0; // inicio do arquivo
  115.  
  116. // usar fseek para ir ao inicio do arquivo para nao correr risco de estar na frente do arquivo que quer alterar
  117. fseek(arquivo, posicao, SEEK_SET);//ou funçao rewind(arquivo)
  118.  
  119. do
  120. {
  121. if (fread(&Banda,sizeof(struct Registro_Banda),1,arquivo) == 0)
  122. break;
  123. if (Banda.cod == cod){
  124. system("cls");
  125. printf("Registro Antigo\n\n");
  126. printf("Codigo............: %d\n",Banda.cod);
  127. printf("Nome: %s\n",Banda.nome_banda);
  128. printf("Data: %d\n",Banda.data);
  129.  
  130. printf("<<<<<Digite o Registro novo>>>>\n\n");
  131. printf("Codigo: ");
  132. scanf("%d",&Banda.cod);
  133. fflush(stdin);
  134. printf("Nome da Banda....: ");
  135. gets(Banda.nome_banda);
  136. printf("Data: ");
  137. scanf("%d",&Banda.data);
  138. fflush(stdin);
  139. Banda.deletado=0;
  140.  
  141. fseek(arquivo, posicao, SEEK_SET);
  142. achou= fwrite(&Banda,sizeof(struct Registro_Banda),1,arquivo) == sizeof(struct Registro_Banda);
  143. break;
  144. }
  145.  
  146. // ajustar posicao em relacao ao inicio do arquivo
  147. posicao = posicao + sizeof(struct Registro_Banda);
  148. } while(1);
  149. if (!achou)
  150. printf("Nome nao encontrado\n");
  151. getch();
  152. system("cls");
  153. }
  154.  
  155. //Função para pesquisar dados
  156. void pesquisar(FILE *arquivo){
  157. char Nomepesquisa[50];
  158. int achou = 1;
  159. fflush(stdin);
  160. if((arquivo = fopen("Banda.txt","rb")) == NULL){
  161. exit(0);
  162. }
  163. printf("\n----------------------------------------------------------\n\n");
  164. printf("Digite o nome da Banda que deseja pesquisar: ");
  165. gets(Nomepesquisa);
  166. printf("\n");
  167.  
  168. rewind(arquivo);
  169. do
  170. {
  171. fread(&Banda,sizeof(struct Registro_Banda),1,arquivo);
  172. if(strcmp(Nomepesquisa,Banda.nome_banda) == 0){
  173. printf("Nome: %s\n",Banda.nome_banda);
  174. printf("Data: %d\n",Banda.data);
  175. printf("Codigo: %d\n",Banda.cod);
  176. achou=0;
  177. printf("\n----------------------------------------------------------\n\n");
  178. printf("\t\t\tTecle <ENTER> para voltar");
  179. getch();
  180. system("cls");
  181. break;
  182. }
  183. }while(!feof(arquivo));
  184. if(achou!=0){
  185. printf("Nome nao encontrado\n");
  186. printf("\n----------------------------------------------------------\n\n");
  187. }
  188. }
  189.  
  190. //Função apara exibir dados
  191. void exibir(FILE *arquivo){
  192. if((arquivo = fopen("Banda.txt","rb")) == NULL){
  193. //exit(0); Função para sair do programa em caso de erro.
  194. printf("Problemas na abertura do arquivo!\n");
  195. printf("\nTecle <ENTER> para voltar!");
  196. getch();
  197. system("cls");
  198. main();
  199.  
  200. }
  201. printf("\n----------------------------------------------------------\n\n");
  202. printf("As Bandas cadastradas sao: \n");
  203. fread(&Banda,sizeof(struct Registro_Banda),1,arquivo);
  204. while(!feof(arquivo)){//Enquanto não chega ao fim do arquivo, lê o aquivo
  205. printf("Nome: %s\n",Banda.nome_banda);
  206. printf("Data: %d\n",Banda.data);
  207. printf("Codigo: %d\n\n",Banda.cod);
  208. fread(&Banda,sizeof(struct Registro_Banda),1,arquivo);
  209. }
  210. printf("\n----------------------------------------------------------\n\n");
  211. printf("Tecle <ENTER> para voltar!");
  212. getch();
  213. system("cls");
  214. }
  215.  
  216. //Função para inserir dados
  217. void inserir(FILE *arquivo){
  218. int tam,i;
  219. printf("Digite a quantidade de bandas que deseja Cadastrar: ");
  220. scanf("%d",&tam);
  221. (struct Banda*) malloc(tam*sizeof(struct Registro_Banda));//Aloca memória para a estrutura
  222. if((arquivo = fopen("Banda.txt","a+")) == NULL){
  223. exit(0);
  224. }
  225. printf("\n----------------------------------------------------------\n\n");
  226. for(i=0; i<tam; i++){
  227. fflush(stdin);
  228. printf("Digite o Nome da Banda: ");
  229. scanf("%s",&Banda.nome_banda);
  230. printf("Digite a data de criação da Banda: ");
  231. scanf("%d",&Banda.data);
  232. printf("Digite o codigo da Banda: ");
  233. scanf("%d",&Banda.cod);
  234. fwrite(&Banda,sizeof(struct Registro_Banda),1,arquivo);//gravadados
  235. printf("\n");
  236. }
  237. fclose(arquivo);
  238. printf("Tecle <ENTER> para voltar!");
  239. getch();
  240. system("cls");
  241. }
  242.  
  243. //Função para criar o arquivo
  244. void criar(FILE *arquivo){
  245. if((arquivo = fopen("Banda.dat","wb")) == NULL){
  246. exit(0);
  247. }
  248. fclose(arquivo);
  249. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement