Estou a completar um programa de cinema de gerenciamento, pois nao tenho a minima ideia de aderir um sub menu na venda do ingresso contendo o menu de estudante, aposentados, normal e um para estudantes a 100% de desconto, so falta isso, e esta travando no fechamento do dia, e tambem nesse fechamento do dia, preciso colocar a gestao do caixa ou seja o total de vendas e o valor adquirido, preciso muito de ajuda pois a apresentação desse trabalho vai me ajudar a fechar o semestre, e a apresentação e dia 02-12-2016, peço a compreensão de todos para que possam me ajudar, o codigo e este:
#include<stdlib.h>
#include<stdio.h>
#include<conio.h>
#include<string.h>
struct venda
{
int cod_venda;
int horario;
int filme;
int cadeira;
}venda[100];
struct sala
{
//int cod_sala;
int filme;
char cadeiras[60][5];
}sala[5];
struct filme
{
//int cod_filme;
char nomefilme[100];
int hora[6];
int min[6];
int categoria;
int sala;
}filme[5];
/* *******************************************
************* MAIN ***********
*******************************************
*/
void cad_filmes();
void tela();
void menu();
void printa_sala(int,int);
void lista_filmes();
void gravabd();
void carregabd();
void vende_ticket();
void cad_venda(int,int,int);
void emite_ticket();
void reset_variaveis();
void reset_salas();
void printa_vendas();
int main()
{
reset_variaveis();
carregabd();
menu();
system("pause");
return 0;
}
/* *******************************************
************* TELA ***********
*******************************************
*/
void tela()
{
// variaveis necessarias para os espacamentos do menu
int i,j;
//limpa tela
system("cls");
printf("\n\n\n\n\t\t\t\t\t\tPROJETO INTEGRADO MULTIDISCIPLINAR II\n\n");
printf("\t\t\t\t\t\tProjeto: CINEMA PARA TODOS!!\n");
}
/* *******************************************
************* PRINTA MENU ***********
*******************************************
*/
//funcao que imprime o menu e valida a seleção do menu
void menu()
{
int opcao;
//laco de verificao
do
{
//chama a funcao tela
tela();
//printa as opcoes do menu
printf("\n\n\n\n\t\t\t\t\t\tDIGITE A OPCAO DESEJADA: ");
printf("\n\t\t\t\t\t\t1) CADASTRO DE FILMES.\n");
printf("\t\t\t\t\t\t2) LISTA OS FILMES EM CARTAZ.\n");
printf("\t\t\t\t\t\t3) VENDA DE INGRESSOS.\n");
printf("\t\t\t\t\t\t4) FECHAMENTO DO DIA.\n");
printf("\t\t\t\t\t\t5) LIMPA CADEIRAS.\n");
printf("\t\t\t\t\t\t6) ");
printf("SAIR.\n\n\n\n");
//Integrantes do grupo do pim
printf("\n\n\n\nIntegrantes:\n");
printf("Renato Rebizzi Neto\nVitor Munis da Silva\nMatheus Goncalves Dias\n");
printf("Hemrique Deusdara de Oliveira\nLuccas Souza Santos\nClaudemir do Nascimento Junior");
fflush(stdin);
scanf("%d",&opcao);
//verifica a entrada
if ( opcao != 1 && opcao !=2 && opcao != 3 && opcao != 4 && opcao != 5 && opcao != 6)
{
//chama a funcao tela
tela();
//imprime o erro
printf ("OPCAO INVALIDA DIGITE NOVAMENTE!!");
system("pause");
}
}while( opcao != 1 && opcao !=2 && opcao != 3 && opcao != 4 && opcao != 5 && opcao != 6);
switch(opcao)
{
case 1:
{
tela();
cad_filmes();
break;
}
case 2:
{
tela();
lista_filmes();
menu();
break;
}
case 3:
{
tela();
vende_ticket();
break;
}
case 4:
{
printa_vendas();
break;
}
case 5:
{
reset_salas();
break;
}
case 6:
{
printf("\n\n\n\n ");
exit;
break;
}
}
}
/* *******************************************
************* PRINTA SALA ***********
*******************************************
*/
//função que imprime a sala escolhida
void printa_sala(int opcao_sala, int opcao_hora)
{
int l,c,cont=0;
printf("\n\n");
for(l=0;l<6;l++)
{
printf("\t\t");
for(c=0;c<10;c++)
{
if(cont<60)
{
printf("|");
printf("%c",sala[opcao_sala].cadeiras[cont][opcao_hora]);
printf("| ");
++cont;
}
}
printf("\n");
printf("\t\t ");
for(c=0;c<10;c++)
{
printf("%d%d ",l,c);
printf(" ");
}
printf("\n\n");
}
}
/* *******************************************
************* CAD FILMES ***********
*******************************************
*/
void cad_filmes()
{
int opcao=1,cont,hora,minuto,opsala;
char nome[100];
lista_filmes();
tela();
do//laco validador
{
printf("Qual filme voce deseja cadastrar ou alterar:\n(6 para sair) ");//laco de escolha
fflush(stdin);
scanf("%d",&opcao);
opcao--;
fflush(stdin);
if(opcao!=0 && opcao!=1 && opcao!=2 && opcao!=3 && opcao!=4 && opcao!=5)
{
printf("\nOpcao invalida digite novamente");// em caso de erro
}
}while(opcao!=0 && opcao!=1 && opcao!=2 && opcao!=3 && opcao!=4 && opcao!=5);
switch (opcao)
{
case (5):
{
menu();//saida
break;
}
default:
{
printf("\n Digite o nome do filme: ");
gets(filme[opcao].nomefilme);
fflush(stdin);
printf("Digite os horario do filme do filme\n");
for(cont=0;cont<5;cont++)
{
printf("Digite o %d horario: ",cont+1); //horario escolhido
scanf("%d:%d",&filme[opcao].hora[cont],&filme[opcao].min[cont]);
fflush(stdin);
}
do // valida a escolha da sala
{
printf("Digite a sala do filme\n"); // escolhe a sala
scanf("%d",&filme[opcao].sala);
filme[opcao].sala=filme[opcao].sala-1;
fflush(stdin);
if(filme[opcao].sala !=0 && filme[opcao].sala !=1 && filme[opcao].sala !=2 && filme[opcao].sala !=3 && filme[opcao].sala !=4)
{
printf("\nOpcao invalida digite novamente");
}
}while(filme[opcao].sala!=0 && filme[opcao].sala!=1 && filme[opcao].sala!=2 && filme[opcao].sala!=3 && filme[opcao].sala!=4);
printf("Filme cadastrador com suscesso!!\n");
getch();
gravabd();
menu();//vai para o menu
break;
}
}
}
/* *******************************************
************* GRAVA BD ***********
*******************************************
*/
void gravabd()
{
FILE *gravasala;
FILE *gravavenda;
FILE *gravafilme;
int cont;
gravasala=fopen("sala.bd","w");
if(gravasala==NULL)
{
printf("ERRO NA ABERTURA DO ARQUIVO SALA.BD!!");
fflush(stdin);
getch();
menu();
}
else
{
for(cont=0;cont<5;cont++)
{
fwrite(&sala[cont],sizeof(struct sala),1,gravasala);
}
fclose(gravasala);
}
gravavenda=fopen("venda.bd","w");
if(gravasala==NULL)
{
printf("ERRO NA ABERTURA DO ARQUIVO VENDA.BD!!");
fflush(stdin);
getch();
menu();
}
else
{
for(cont=0;cont<100;cont++)
{
fwrite(&venda[cont],sizeof(struct sala),1,gravavenda);
}
fclose(gravavenda);
}
gravafilme=fopen("filme.bd","w");
if(gravasala==NULL)
{
printf("ERRO NA ABERTURA DO ARQUIVO FILME.BD!!");
fflush(stdin);
getch();
menu();
}
else
{
for(cont=0;cont<5;cont++)
{
fwrite(&filme[cont],sizeof(struct sala),1,gravafilme);
}
fclose(gravafilme);
}
}
/* *******************************************
************* CARREGA BD ***********
*******************************************
*/
void carregabd()
{
FILE *lesala;
FILE *levenda;
FILE *lefilme;
int cont;
//
lesala=fopen("sala.bd","r");
if(lesala==NULL)
{
menu();
}
else
{
for(cont=0;cont<5;cont++)
{
fread(&sala[cont],sizeof (struct sala),1,lesala);
}
fclose(lesala);
}
levenda=fopen("venda.bd","r");
if(lesala==NULL)
{
menu();
}
else
{
for(cont=0;cont<100;cont++)
{
fread(&venda[cont],sizeof (struct sala),1,levenda);
}
fclose(levenda);
}
lefilme=fopen("filme.bd","r");
if(lesala==NULL)
{
menu();
}
else
{
for(cont=0;cont<5;cont++)
{
fread(&filme[cont],sizeof (struct sala),1,lefilme);
}
fclose(lefilme);
}
}
/* *******************************************
************* LISTA FILMES ***********
*******************************************
*/
void lista_filmes()
{
int cont,cont2;
for(cont=0;cont<5;cont++)
{
printf("\nFILME %d:",cont+1);
printf(" %s",filme[cont].nomefilme);
printf("\nHORARIOS:");
for(cont2=0;cont2<5;cont2++)
{
printf(" %d:%d",filme[cont].hora[cont2],filme[cont].min[cont2]);
}
printf("\nSala: %d\n",filme[cont].sala+1);
}
printf("\n");
system("pause");
}
/* *******************************************
************* VENDE TICKET ***********
*******************************************
*/
void vende_ticket()
{
int opcao,opcao_hora,opcao_cadeira,cont;
lista_filmes();
tela();
do//laco validador do filme
{
//escolha do filme para venda do ticket
printf("Selecione o filme?\n(6 para sair) ");//laco de escolha
fflush(stdin);
scanf("%d",&opcao);
opcao--;
fflush(stdin);
if(opcao!=0 && opcao!=1 && opcao!=2 && opcao!=3 && opcao!=4 && opcao!=5)
{
printf("\nOpcao invalida digite novamente");// em caso de erro
}
}while(opcao!=0 && opcao!=1 && opcao!=2 && opcao!=3 && opcao!=4 && opcao!=5);
if(opcao==5)
{
menu();
}
else // mostra o horarios dos filmes para escolha do cliente
{
printf("\nFILME: %s",filme[opcao].nomefilme);
printf("\n\nOPCOES DE HORARIO:\n\n");
for(cont=0;cont<5;cont++)
{
printf("%d)%d:%d\t\t",cont+1,filme[opcao].hora[cont],filme[opcao].min[cont]);
}
do//laco validador do horario
{
//escolha do filme para venda do ticket
printf("\n\nDigite o horario escolhido:");//laco de escolha
fflush(stdin);
scanf("%d",&opcao_hora);
opcao_hora--;
fflush(stdin);
if(opcao_hora!=0 && opcao_hora!=1 && opcao_hora!=2 && opcao_hora!=3 && opcao_hora!=4)
{
printf("\nOpcao invalida digite novamente");// em caso de erro
}
}while(opcao_hora!=0 && opcao_hora!=1 && opcao_hora!=2 && opcao_hora!=3 && opcao_hora!=4);
//chama a funcao printa sala para a escolha do lugar
do
{
printa_sala(filme[opcao].sala,opcao_hora);
printf("\nDigite a cadeira escolhida: ");
scanf("%d",&opcao_cadeira);
if(sala[filme[opcao].sala].cadeiras[opcao_cadeira][opcao_hora]=='X')
{
printf("\nCADEIRA OCUPADA!!!!");
}
}while(sala[filme[opcao].sala].cadeiras[opcao_cadeira][opcao_hora]=='X');
sala[filme[opcao].sala].cadeiras[opcao_cadeira][opcao_hora]='X'; // prenche a cadeira escolhida
cad_venda(opcao,opcao_hora,opcao_cadeira);
gravabd();
menu();
}
}
/* *******************************************
************* CAD VENDA ***********
*******************************************
*/
void cad_venda(int opcao_fil, int opcao_hor, int opcao_cad)
{
int cont=0,ult_venda,link=0;
// ler no arquivo ultimo codigo da venda
do
{
if(venda[cont].cod_venda==0)
{
ult_venda=cont;
++link;
}
cont++;
}while(link==0);
link;
venda[ult_venda].cod_venda=ult_venda+1; //gera o incremento da venda
venda[ult_venda].horario=opcao_hor;
venda[ult_venda].filme=opcao_fil;
venda[ult_venda].cadeira=opcao_cad;
emite_ticket(ult_venda);
}
/* *******************************************
************* emite ticket ***********
*******************************************
*/
void emite_ticket(int opcao_venda)
{
FILE *ticket;
//imprime na tela
printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\t\t\t\t\t******************************\n");
printf("\t\t\t\t\t\t************TICKET************\n");
printf("\t\t\t\t\t\t******************************\n");
printf("\n\n");
printf("\t\t\t\t\t\tFILME: %s\n\n",filme[venda[opcao_venda].filme].nomefilme);
printf("\t\t\t\t\t\tHORARIO: %d:%d\n",filme[venda[opcao_venda].filme].hora[venda[opcao_venda].horario],filme[venda[opcao_venda].filme].min[venda[opcao_venda].horario]);
printf("\t\t\t\t\t\tSALA: %d\n",filme[venda[opcao_venda].filme].sala+1);
printf("\t\t\t\t\t\tCADEIRA: %d\n\n",venda[opcao_venda].cadeira);
printf("\t\t\t\t\t\t******************************\n");
// gera o ticket para impressão
ticket=fopen("ticket.txt","w");
if(ticket==NULL)
{
menu();
}
else
{
//fprintf(ticket,"******************************\n");
fprintf(ticket," TICKET \n");
//fprintf(ticket,"******************************\n");
fprintf(ticket,"______________________________\n");
fprintf(ticket,"\n\n");
fprintf(ticket,"FILME: %s\n\n",filme[venda[opcao_venda].filme].nomefilme);
fprintf(ticket,"HORARIO: %d:%d\n\n",filme[venda[opcao_venda].filme].hora[venda[opcao_venda].horario],filme[venda[opcao_venda].filme].min[venda[opcao_venda].horario]);
fprintf(ticket,"CADEIRA: %d\n\n",venda[opcao_venda].cadeira);
//fprintf(ticket,"******************************\n");
//system("print ticket.txt");
fclose(ticket);
}
system("pause");
}
/* *******************************************
************* reset variaveis ***********
*******************************************
*/
void reset_variaveis()
{
int cont,cont2,cont3;
for(cont=0;cont<100;cont++)
{
venda[cont].cod_venda=0;
}
for(cont=0;cont<5;cont++)
{
for(cont2=0;cont2<5;cont2++)
{
for(cont3=0;cont3<60;cont3++)
{
sala[cont].cadeiras[cont3][cont2]=' ';
}
}
}
}
/* *******************************************
************* reset salas ***********
*******************************************
*/
void reset_salas()
{
int opcao,cont,cont2,cont3;
do
{
tela();
printf("DESEJA REALMENTE LIMPAR TODOS OS LUGARES OCUPADOS?\n1)SIM\n2)NAO");
fflush(stdin);
scanf("%d",&opcao);
if(opcao!=1 && opcao!=2)
{
printf("OPCAO INVALIDA DIGITE NOVAMENTE!!\n\n");
system("pause");
}
}
while(opcao!=1 && opcao!=2);
if(opcao==1)
{
for(cont=0;cont<100;cont++)
{
//venda[cont].cod_venda=0;
}
for(cont=0;cont<5;cont++)
{
for(cont2=0;cont2<5;cont2++)
{
for(cont3=0;cont3<60;cont3++)
{
sala[cont].cadeiras[cont3][cont2]=' ';
}
}
menu();
}
}
else
{
menu();
}
}
/* *******************************************
************* reset salas ***********
*******************************************
*/
void printa_vendas()
{
int cont=0,link=0;
tela();
if(venda[cont].cod_venda!=0)
{
printf("\nVENDA NR:%d\n",cont+1);
printf("FILME: %s\n",filme[venda[cont].filme].nomefilme);
printf("SALA: %d\n",filme[venda[cont].filme].sala+1);
printf("CADEIRA: %d\n",venda[cont].cadeira);
printf("_________________________________\n");
cont++;
}
else
{
++link;
}
while(link==0);
gravabd();
system("pause");
menu();
}
↧