Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- void menu();
- struct banda {
- int cod_banda;
- char nome[50], origem[50];
- };
- typedef struct banda Banda;
- struct album {
- int cod_cd;
- int cod_banda2;
- int numero_faixas;
- int ano;
- char titulo[50];
- };
- typedef struct album Album;
- struct musica {
- int cod_musica;
- int cod_cd2;
- char musica[50];
- int duracao, estrelas;
- };
- typedef struct musica Musica;
- Musica M;
- Banda B;
- Album A;
- void cria_banda (){ ///OK
- FILE *arquivo;
- arquivo = fopen("bandas.bin", "ab");
- int n, i;
- printf ("Quantas bandas deseja cadastrar? ");
- scanf ("%d", &n);
- system("cls");
- for(i=0; i<n; i++){
- fflush(stdin);
- printf ("\n\tCodigo da banda: ");
- scanf("%d", &B.cod_banda);
- fflush(stdin);
- printf ("\tNome da banda: ");
- fgets(B.nome, 50, stdin);
- fflush(stdin);
- printf ("\tOrigem: ");
- fgets(B.origem, 50, stdin);
- fflush(stdin);
- fwrite(&B, sizeof(Banda), 1, arquivo);
- }
- fclose(arquivo);
- }
- void cria_banda_album (){ ///OK
- FILE *album, *musica, *banda;
- album = fopen ("albuns.bin", "ab");
- banda = fopen("bandas.bin", "ab");
- musica = fopen ("musicas.bin", "ab");
- int i;
- fflush(stdin);
- printf ("\tCodigo da banda: ");
- scanf("%d", &B.cod_banda);
- fflush(stdin);
- printf ("\tNome da banda: ");
- fgets(B.nome, 50, stdin);
- fflush(stdin);
- printf ("\tOrigem: ");
- fgets(B.origem, 50, stdin);
- fflush(stdin);
- fwrite(&B, sizeof(Banda), 1, banda);
- printf ("\n\n");
- printf ("\tALBUM: \n");
- A.cod_banda2 = B.cod_banda;
- printf ("\tCodigo da banda: %d\n", A.cod_banda2);
- printf ("\tTitulo do album: ");
- fflush(stdin);
- fgets(A.titulo, 50, stdin);
- printf ("\tCodigo do CD: ");
- scanf ("%d", &A.cod_cd);
- printf ("\tNumero de Faixas: ");
- scanf ("%d", &A.numero_faixas);
- printf ("\tAno: ");
- scanf ("%d", &A.ano);
- fwrite(&A, sizeof(Album), 1, album);
- if (A.numero_faixas!=0){
- printf ("\n\tMUSICAS:\n");
- M.cod_cd2 = A.cod_cd;
- printf ("\tCodigo do CD: %d\n\n", M.cod_cd2);
- for (i=0; i<A.numero_faixas; i++){
- fflush(stdin);
- printf ("\tNome da musica: ");
- fgets(M.musica, 50, stdin);
- fflush(stdin);
- printf ("\tCodigo da musica: ");
- scanf ("%d", &M.cod_musica);
- printf ("\tDuracao da musica: ");
- scanf ("%d", &M.duracao);
- printf ("\tClassificacao: ");
- scanf ("%d", &M.estrelas);
- fwrite(&M, sizeof(Musica), 1, musica);
- printf ("\n");
- }
- }
- fclose(banda);
- fclose(album);
- fclose(musica);
- }
- void cria_album (){ ///OK
- FILE *arquivo, *banda, *musica;
- arquivo = fopen("albuns.bin", "ab");
- banda = fopen ("bandas.bin", "rb");
- musica = fopen ("musicas.bin", "ab");
- if (!banda){
- printf ("Arquivo nao encontrado!");
- exit(1);
- }
- char name[50], op;
- int i, num=0, pos=0;
- printf ("Para qual banda deseja criar um album?\n");
- fflush(stdin);
- fgets(name, 50, stdin);
- while (!feof(banda)){
- fread(&B, sizeof(Banda), 1, banda);
- if (strcmp(B.nome, name)==0){
- A.cod_banda2 = B.cod_banda;
- printf ("\tCodigo da banda: %d\n", A.cod_banda2);
- printf ("\tTitulo do album: ");
- fflush(stdin);
- fgets(A.titulo, 50, stdin);
- printf ("\tCodigo do CD: ");
- scanf ("%d", &A.cod_cd);
- printf ("\tNumero de Faixas: ");
- scanf ("%d", &A.numero_faixas);
- printf ("\tAno: ");
- scanf ("%d", &A.ano);
- fwrite(&A, sizeof(Album), 1, arquivo);
- if (A.numero_faixas!=0){
- printf ("\n\tMusicas:\n\n");
- M.cod_cd2 = A.cod_cd;
- printf ("\tCodigo do CD: %d\n\n", M.cod_cd2);
- for (i=0; i<A.numero_faixas; i++){
- fflush(stdin);
- printf ("\tNome da musica: ");
- fgets(M.musica, 50, stdin);
- fflush(stdin);
- printf ("\tCodigo da musica: ");
- scanf ("%d", &M.cod_musica);
- printf ("\tDuracao da musica: ");
- scanf ("%d", &M.duracao);
- printf ("\tClassificacao: ");
- scanf ("%d", &M.estrelas);
- fwrite(&M, sizeof(Musica), 1, musica);
- printf ("\n");
- }
- }
- num=pos+1;
- break;
- }
- pos++;
- }
- if (num==0){
- fflush(stdin);
- printf ("Nao existe tal banda! Deseja cria-la? (S/N) ");
- op=getch();
- system ("cls");
- if (op=='S' || op=='s'){
- fclose(banda);
- cria_banda_album(banda);
- } else {
- menu();
- }
- }
- fclose(arquivo);
- fclose(banda);
- fclose(musica);
- }
- //as funcoes que imprimem os dados sao usadas somente para testes
- void imprime_banda (){ ///OK
- FILE *arquivo;
- arquivo = fopen ("bandas.bin", "rb");
- if (!arquivo){
- printf ("Arquivo nao encontrado!");
- exit(1);
- }
- printf ("\n");
- fread(&B, sizeof(Banda), 1, arquivo);
- while (!feof(arquivo)){
- printf ("\tCodigo da Banda: %d\n", B.cod_banda);
- printf ("\tNome da banda: %s", B.nome);
- printf ("\tOrigem: %s\n", B.origem);
- fread(&B, sizeof(Banda), 1, arquivo);
- }
- fclose(arquivo);
- }
- void imprime_album (){ ///OK
- FILE *arquivo;
- arquivo = fopen("albuns.bin", "rw");
- if (!arquivo){
- printf ("Arquivo nao encontrado!");
- exit(1);
- }
- printf ("\n");
- fread(&A, sizeof(Album), 1, arquivo);
- while (!feof(arquivo)){
- printf ("\tCodigo do CD: %d\n", A.cod_cd);
- printf ("\tCodigo da Banda: %d\n", A.cod_banda2);
- printf ("\tNumero de Faixas: %d\n", A.numero_faixas);
- printf ("\tAno: %d\n", A.ano);
- printf ("\tTitulo do Album: %s\n", A.titulo);
- printf ("\n");
- fread(&A, sizeof(Album), 1, arquivo);
- }
- fclose(arquivo);
- }
- void imprime_musica(){ ///OK
- FILE *arquivo;
- arquivo = fopen("musicas.bin", "rb");
- if (!arquivo){
- printf ("Arquivo nao encontrado!");
- exit(1);
- }
- printf ("\n");
- fread(&M, sizeof(Musica), 1, arquivo);
- while (!feof(arquivo)){
- printf ("\n\tCodigo da Musica: %d\n", M.cod_musica);
- printf ("\tCodigo do CD: %d\n", M.cod_cd2);
- printf ("\tMusica: %s", M.musica);
- printf ("\tDuracao: %d\n", M.duracao);
- printf ("\tClassicacao: %d\n", M.estrelas);
- fread(&M, sizeof(Musica), 1, arquivo);
- }
- fclose(arquivo);
- }
- void album_banda(){ ///OK
- FILE *album, *banda;
- album = fopen ("albuns.bin", "rb");
- banda = fopen ("bandas.bin", "rb");
- int achou=0, pos=0;
- if (!banda || !album){
- printf ("Erro ao abrir o arquivo.");
- exit(1);
- }
- char op;
- char nome[50];
- int cod;
- printf ("De qual banda deseja ver o(s) disco(s)?\n");
- fflush(stdin);
- printf ("Banda ");
- fgets(nome, 50, stdin);
- fflush(stdin);
- printf ("\n");
- fread(&B, sizeof(Banda), 1, banda);
- while (!feof(banda)){
- if (strcmp(B.nome, nome)==0){
- cod = B.cod_banda;
- achou=pos+1;
- break;
- }
- pos++;
- fread(&B, sizeof(Banda), 1, banda);
- }
- if(achou==0){
- printf ("Nao existe tal banda! Deseja cria-la? (S/N) ");
- op = getch();
- if (op=='S' || op=='s'){
- cria_banda_album();
- } else {
- system("cls");
- menu();
- }
- }
- else {
- achou=0;
- pos=0;
- rewind(album);
- fread(&A, sizeof(Album), 1, album);
- while (!feof(album)){
- if (A.cod_banda2==cod){
- printf ("\tCodigo do CD: %d\n", A.cod_cd);
- printf ("\tCodigo da Banda: %d\n", A.cod_banda2);
- printf ("\tNumero de Faixas: %d\n", A.numero_faixas);
- printf ("\tAno: %d\n", A.ano);
- printf ("\tTitulo do Album: %s", A.titulo);
- printf ("\n");
- achou=pos+1;
- }
- pos++;
- fread(&A, sizeof(Album), 1, album);
- }
- if (achou==0){
- printf ("A banda nao tem album! Deseja cria-lo? (S/N) ");
- op=getch();
- if (op=='S' || op=='s'){
- cria_album();
- }else{
- system("cls");
- menu();
- }
- }
- }
- fclose(banda);
- fclose(album);
- }
- void album_ano(){ ///OK
- FILE *album;
- album = fopen ("albuns.bin", "rb");
- int k=0;
- char pesquisa[50], op;
- int achou=0, pos=0;
- if (!album){
- printf ("Erro ao abrir o arquivo.");
- exit(1);
- }
- int ano;
- printf ("Qual o ano do album que deseja ver? \n");
- scanf("%d", &ano);
- printf ("\n");
- fread(&A, sizeof(Album), 1, album);
- while (!feof(album)){
- if (A.ano==ano){
- printf ("\tCodigo do CD: %d\n", A.cod_cd);
- printf ("\tCodigo da Banda: %d\n", A.cod_banda2);
- printf ("\tNumero de Faixas: %d\n", A.numero_faixas);
- printf ("\tAno: %d\n", A.ano);
- printf ("\tTitulo do Album: %s", A.titulo);
- printf ("\n");
- k++;
- achou=pos+1;
- }
- pos++;
- fread(&A, sizeof(Album), 1, album);
- }
- if (achou==0){
- printf("Nao existem albuns correspondente ao ano solicitado... Deseja cria-lo? (S/N) ");
- op=getch();
- if (op=='S' || op=='s'){
- printf ("\n");
- cria_album();
- }else{
- system("cls");
- menu();
- }
- }
- fclose(album);
- album = fopen ("albuns.bin", "rb");
- if (k>1){
- printf ("Mais de um album foi encontrado. De o nome do mesmo: ");
- fflush(stdin);
- fgets(pesquisa, 50, stdin);
- }
- printf ("\n");
- fread(&A, sizeof(Album), 1, album);
- while (!feof(album)){
- if (strcmp(A.titulo, pesquisa)==0){
- printf ("\tCodigo do CD: %d\n", A.cod_cd);
- printf ("\tCodigo da Banda: %d\n", A.cod_banda2);
- printf ("\tNumero de Faixas: %d\n", A.numero_faixas);
- printf ("\tAno: %d\n", A.ano);
- printf ("\tTitulo do Album: %s", A.titulo);
- printf ("\n");
- }
- fread(&A, sizeof(Album), 1, album);
- }
- fclose(album);
- }
- void musica_album(){ ///OK
- FILE *album, *musica;
- album = fopen ("albuns.bin", "rb");
- musica = fopen ("musicas.bin", "rb");
- if (!musica || !album){
- printf ("Erro ao abrir o arquivo.");
- exit(1);
- }
- char titulo[50], op;
- int cod, achou=0, pos=0;
- fflush(stdin);
- printf ("De qual album deseja ver as musicas?\n");
- fgets(titulo, 50, stdin);
- fflush(stdin);
- fread(&A, sizeof(Album), 1, album);
- while (!feof(album)){
- if (strcmp(A.titulo, titulo)==0){
- cod = A.cod_cd;
- achou=pos+1;
- }
- pos++;
- fread(&A, sizeof(Album), 1, album);
- }
- if (achou==0){
- printf ("Album nao existe. Deseja cria-lo? (S/N) ");
- op=getch();
- if (op=='S' || op=='s'){
- cria_album();
- } else {
- menu();
- }
- } else {
- achou=0;
- pos=0;
- rewind(musica);
- fread(&M, sizeof(Musica), 1, musica);
- while (!feof(musica)){
- if (M.cod_cd2==cod){
- printf ("\n\tCodigo da Musica: %d\n", M.cod_musica);
- printf ("\tCodigo do CD: %d\n", M.cod_cd2);
- printf ("\tMusica: %s", M.musica);
- printf ("\tDuracao: %d\n", M.duracao);
- printf ("\tClassicacao: %d\n", M.estrelas);
- achou=pos+1;
- }
- pos++;
- fread(&M, sizeof(Musica), 1, musica);
- }
- if (achou==0){
- printf ("\nAlbum vazio.\n");
- }
- }
- fclose(musica);
- fclose(album);
- }
- void musica_banda (){ //NAO ESTA OK >:(
- FILE *album, *banda, *musica;
- album = fopen ("albuns.bin", "rb");
- banda = fopen ("bandas.bin", "rb");
- musica = fopen ("musicas.bin", "rb");
- if (!banda || !album || !musica){
- printf ("Erro ao abrir o arquivo.");
- exit(1);
- }
- char nome[50];
- int cod_banda, cod_cd;
- fflush(stdin);
- printf ("De qual banda deseja ver as musicas?");
- fgets(nome, 50, stdin);
- fflush(stdin);
- fread(&B, sizeof(Banda), 1, banda);
- while (!feof(banda)){
- if (strcmp(B.nome, nome)==0){
- cod_banda = B.cod_banda;
- }
- fread(&B, sizeof(Banda), 1, banda);
- }
- rewind(album);
- fread(&A, sizeof(Album), 1, album);
- while (!feof(album)){
- if (A.cod_banda2==cod_banda){
- cod_cd=A.cod_cd;
- }
- fread(&A, sizeof(Album), 1, album);
- }
- rewind(musica);
- fread(&M, sizeof(Musica), 1, musica);
- while(!feof(musica)){
- if (M.cod_cd2==cod_cd){
- printf ("\n\tCodigo da Musica: %d\n", M.cod_musica);
- printf ("\tCodigo do CD: %d\n", M.cod_cd2);
- printf ("\tMusica: %s", M.musica);
- printf ("\tDuracao: %d\n", M.duracao);
- printf ("\tClassicacao: %d\n", M.estrelas);
- }
- fread(&M, sizeof(Musica), 1, musica);
- }
- fclose(banda);
- fclose(album);
- fclose(musica);
- }
- void menu (){
- FILE *file;
- int op, i;
- char o;
- printf ("\t\tBEM VINDO AO CADASTRAMENTO DE BANDAS DA\n\t\t\tRADIO ROCK %c ALGORITHM\n\n\n", 38);
- printf ("\t ________________________________________________________\n");
- printf ("\t| |\n");
- printf ("\t| 1 - Cadastro de bandas somente |\n");
- printf ("\t| |\n");
- printf ("\t| 2 - Adicionar album |\n");
- printf ("\t| |\n");
- printf ("\t| 3 - Consultar album por banda |\n");
- printf ("\t| |\n");
- printf ("\t| 4 - Consultar musicas por banda |\n");
- printf ("\t| |\n");
- printf ("\t| 5 - Consultar musicas por album |\n");
- printf ("\t| |\n");
- printf ("\t| 6 - Consultar album por ano de lancamento |\n");
- printf ("\t| |\n");
- printf ("\t| 7 - Imprimir Bandas |\n");
- printf ("\t| |\n");
- printf ("\t| 8 - Imprimir Musicas |\n");
- printf ("\t| |\n");
- printf ("\t| 9 - Imprimir Albuns |\n");
- printf ("\t| |\n");
- printf ("\t| 0 - Sair |\n");
- printf ("\t|________________________________________________________|\n");
- //printf ("\nOpcao: ");
- //scanf ("%d", &op);
- op = getch();
- switch(op){
- case 49: system("cls");
- cria_banda(file);
- fflush(stdin);
- printf ("\n\nDeseja fazer outra operacao? (S/N) ");
- o=getch();
- if (o==('S') || o=='s'){
- system("cls");
- menu();
- } else{
- exit(1);
- }
- case 50: system("cls");
- cria_album(file);
- fflush(stdin);
- printf ("\n\nDeseja fazer outra operacao? (S/N) ");
- o=getch();
- if (o==('S') || o=='s'){
- system("cls");
- menu();
- } else{
- exit(1);
- }
- case 51: system("cls");
- album_banda();
- fflush(stdin);
- printf ("\n\nDeseja fazer outra operacao? (S/N)");
- o=getch();
- if (o==('S') || o=='s'){
- system("cls");
- menu();
- } else
- exit(1);
- case 52: system("cls");
- musica_banda();
- fflush(stdin);
- printf ("\n\nDeseja fazer outra operacao? (S/N)");
- o=getch();
- if (o==('S') || o=='s'){
- system("cls");
- menu();
- } else
- exit(1);
- case 53: system("cls");
- musica_album();
- fflush(stdin);
- printf ("\n\nDeseja fazer outra operacao? (S/N)");
- o=getch();
- if (o==('S') || o=='s'){
- system("cls");
- menu();
- } else
- exit(1);
- case 54: system("cls");
- album_ano();
- fflush(stdin);
- printf ("\n\nDeseja fazer outra operacao? (S/N)");
- o=getch();
- if (o==('S') || o=='s'){
- system("cls");
- menu();
- } else
- exit(1);
- case 55: system("cls");
- imprime_banda();
- fflush(stdin);
- printf ("\n\nDeseja fazer outra operacao? (S/N) ");
- o=getch();
- if (o==('S') || o=='s'){
- system("cls");
- menu();
- } else{
- exit(1);
- }
- case 56: system("cls");
- imprime_musica();
- fflush(stdin);
- printf ("\n\nDeseja fazer outra operacao? (S/N) ");
- o=getch();
- if (o==('S') || o=='s'){
- system("cls");
- menu();
- } else{
- exit(1);
- }
- case 57: system("cls");
- imprime_album();
- fflush(stdin);
- printf ("\n\nDeseja fazer outra operacao? (S/N) ");
- o=getch();
- if (o==('S') || o=='s'){
- system("cls");
- menu();
- } else{
- exit(1);
- }
- case 48:
- system("cls");
- printf ("\n\n\t\t ____________________________________\n");
- printf ("\t\t| |\n");
- printf ("\t\t| VOLTE SEMPRE! |\n");
- printf ("\t\t|____________________________________|\n\n\n");
- exit(1);
- default: printf ("\n\n\tOpcao invalida. Tentar novamente? (S/N) ");
- fflush(stdin);
- o=getch();
- if (o==('S') || o=='s'){
- system("cls");
- menu();
- } else
- exit(1);
- }
- }
- int main (){
- menu();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement