Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <locale.h>
- #include <math.h>
- #include <ctype.h>
- #include <time.h>
- #include <string.h>
- #define MAX 20
- /*------------------------------------------- ESTRUTURAS -------------------------------------------*/
- typedef struct
- {
- int dia, mes, ano;
- }t_data;
- typedef struct
- {
- char marca[20], modelo[30], matricula[9], estado;
- int cilindrada, combustivel;
- float preco;
- t_data dataPM;
- }automovel;
- typedef struct
- {
- char nome[100], morada[500];
- int cc,nif, telefone, id;
- }cliente;
- typedef struct
- {
- char auto_matricula[10];
- int id_cliente, id_venda;
- float v_preco;
- t_data dataVenda;
- }venda;
- /*------------------------------------------- FUNÇÕES - DECLARAÇÃO -------------------------------------------*/
- void enviarFicheiroCliente(int i, cliente v_cliente[]);
- int carregarDadosCliente(cliente v_cliente[]);
- void enviarFicheiroAutomovel(int j, automovel v_auto[]);
- int carregarDadosAutomovel(automovel v_auto[]);
- void enviarFicheiroVenda(int n, venda v_venda[]);
- int carregarDadosVenda(venda v_venda[]);
- char menu();
- char menuAuto();
- char menuCliente();
- char menuVenda();
- int F_automovel();
- int F_Cliente(int i, cliente v_cliente[]);
- int F_venda(int n, int j, venda v_venda[], automovel v_auto[], cliente v_cliente[]);
- int inserir_cliente(int i,cliente v_cliente[]);
- int inserir_auto(int j, automovel v_automovel[]);
- int inserir_venda(int n, int j, venda v_venda[], automovel v_auto[], cliente v_cliente[]);
- void totalFaturado(int n, venda v_venda[]);
- void vendasMes(int n, venda v_venda[]);
- void vendaMaisAlta(int n, venda v_venda[]);
- void vendaMaisBaixa(int n, venda v_venda[]);
- void percCombustivel(int n, int j, venda v_venda[], automovel v_auto[]);
- void vendasCliente(int n, venda v_venda[]);
- void listar_Cliente(int i,cliente v_cliente[]);
- void listar_Auto(int j,automovel v_auto[]);
- void pesquisar_cliente(cliente v_cliente[], int i);
- void pesquisarAuto(int j, automovel v_auto[]);
- void editar_cliente(cliente v_cliente[]);
- void editarAuto(automovel v_auto[], int j);
- int validarCliente(int i,cliente v_cliente[]);
- int validar(int id, cliente v_cliente[], int i);
- int validarAuto(int j, automovel v_auto[], char matri[9]);
- int validar2(char matri[9], automovel v_auto[], int j);
- int validar3(int n, venda v_venda[], float num);
- int eliminarAuto(int j, automovel v_auto[]);
- int validarMatricula(char matri[9]);
- /*------------------------------------------- MAIN -------------------------------------------*/
- int main()
- {
- setlocale(LC_ALL, "Portuguese");
- int Ccliente=0;
- int Cauto=0;
- int Cvenda=0;
- cliente v_cliente[MAX];
- automovel v_auto[MAX];
- venda v_venda[MAX];
- char op;
- Ccliente = carregarDadosCliente(v_cliente);
- Cauto = carregarDadosAutomovel(v_auto);
- Cvenda = carregarDadosVenda(v_venda);
- do
- {
- system("cls");
- op=menu();
- switch(op)
- {
- case 'A':
- Cauto = F_automovel(Cauto, v_auto);
- break;
- case 'C':
- Ccliente = F_Cliente(Ccliente, v_cliente);
- break;
- case 'V':
- Cvenda = F_venda(Cvenda, Cauto, v_venda, v_auto, v_cliente);
- break;
- case'S':
- break;
- default:
- printf("Opcao invalida!");
- getch();
- main();
- break;
- }
- }while(op!='S');
- enviarFicheiroCliente(Ccliente,v_cliente);
- enviarFicheiroAutomovel(Cauto, v_auto);
- enviarFicheiroVenda(Cvenda, v_venda);
- }
- /*------------------------------------------- MENUS! -------------------------------------------*/
- char menu()
- {
- char op;
- printf("\t\t+--------------------------------------------+\n");
- printf("\t\t| A - Gestao de Automoveis |\n");
- printf("\t\t| C - Gestao de Clientes |\n");
- printf("\t\t| V - Gestao de Vendas |\n");
- printf("\t\t| |\n");
- printf("\t\t| S - Sair |\n");
- printf("\t\t+--------------------------------------------+\n\n");
- printf("\tSelecione a opcao:");
- fflush(stdin);
- scanf("%c", &op);
- op=toupper(op);
- return op;
- }
- char menuAuto()
- {
- char opAuto;
- printf("\t\t+--------------------------------------------+\n");
- printf("\t\t| I - Inserir Automovel |\n");
- printf("\t\t| E - Editar Automovel |\n");
- printf("\t\t| A - Eliminar Automovel |\n");
- printf("\t\t| T - Consultar Todos os Automoveis |\n");
- printf("\t\t| P - Pesquisar Automovel (matricula) |\n");
- printf("\t\t| |\n");
- printf("\t\t| V - Voltar ao Menu Principal |\n");
- printf("\t\t+--------------------------------------------+\n\n");
- printf("\tSelecione a opcao:");
- fflush(stdin);
- scanf("%c", &opAuto);
- opAuto=toupper(opAuto);
- return opAuto;
- }
- char menuCliente()
- {
- char opCliente;
- printf("\t\t+--------------------------------------------+\n");
- printf("\t\t| I - Inserir Cliente |\n");
- printf("\t\t| E - Editar Cliente |\n");
- printf("\t\t| L - Consultar Todos os Clientes |\n");
- printf("\t\t| P - Pesquisar Cliente (NIF) |\n");
- printf("\t\t| |\n");
- printf("\t\t| V - Voltar ao Menu Principal |\n");
- printf("\t\t+--------------------------------------------+\n\n");
- printf("\tSelecione a opcao:");
- fflush(stdin);
- scanf("%c", &opCliente);
- opCliente=toupper(opCliente);
- return opCliente;
- }
- char menuVenda()
- {
- char opVenda;
- printf("\t+-----------------------------------------------------------------+\n");
- printf("\t| I - Inserir Venda |\n");
- printf("\t| T - Total Faturado |\n");
- printf("\t| M - Vendas por Mes |\n");
- printf("\t| A - Venda mais Alta |\n");
- printf("\t| B - Venda mais Baixa |\n");
- printf("\t| P - Percentagem de Vendas por Combustivel |\n");
- printf("\t| C - Vendas de um Cliente (numero de identificacao fiscal) |\n");
- printf("\t| |\n");
- printf("\t| V - Voltar ao Menu Principal |\n");
- printf("\t+-----------------------------------------------------------------+\n\n");
- printf("\tSelecione a opcao:");
- fflush(stdin);
- scanf("%c", &opVenda);
- opVenda=toupper(opVenda);
- return opVenda;
- }
- /*--------------------------------------------------------------------------------------------------*/
- /*---------------------------------Guardar e Carregar ficheiros-------------------------------------*/
- /*--------------------------------------------------------------------------------------------------*/
- void enviarFicheiroCliente(int i, cliente v_cliente[])
- {
- int q;
- FILE *out;
- /* abre o ficheiro resultados.txt para escrita e associa-o a out */
- out = fopen("Cliente.txt", "w");
- if( out == NULL )
- {
- printf("ERRO: nгo consigo abrir o ficheiro Cliente.txt\n");
- exit(1);
- }
- fprintf(out, "%d\n", i);
- for(q=0; q<i;q++)
- {
- fprintf(out,"%d\n", v_cliente[q].id );
- fprintf(out,"%s\n", v_cliente[q].nome );
- fprintf(out,"%s\n", v_cliente[q].morada);
- fprintf(out,"%d\n", v_cliente[q].cc);
- fprintf(out,"%d\n", v_cliente[q].nif);
- fprintf(out,"%d\n\n", v_cliente[q].telefone);
- }
- fclose( out );
- }
- int carregarDadosCliente(cliente v_cliente[])
- {
- int i=0,q;
- FILE *in;
- /* abre o ficheiro resultados.txt para escrita e associa-o a out */
- in = fopen("Cliente.txt", "r");
- if( in == NULL )
- {
- printf("ERRO: nao consigo abrir o ficheiro Cliente.txt\n");
- exit(1);
- }
- fscanf(in, "%d\n", &i);
- printf("%d", i);
- for(q=0; q<i;q++)
- {
- fscanf(in,"%d\n", &v_cliente[q].id );
- fscanf(in,"%s\n", v_cliente[q].nome );
- fscanf(in,"%s\n", v_cliente[q].morada);
- fscanf(in,"%d\n", &v_cliente[q].cc);
- fscanf(in,"%d\n", &v_cliente[q].nif);
- fscanf(in,"%d\n\n", &v_cliente[q].telefone);
- }
- fclose( in );
- return i;
- }
- void enviarFicheiroAutomovel(int j, automovel v_auto[])
- {
- int run_list;
- int q;
- FILE *out;
- /* abre o ficheiro resultados.txt para escrita e associa-o a out */
- out = fopen("Automovel.txt", "w");
- if( out == NULL )
- {
- printf("ERRO: não consigo abrir o ficheiro Automovel.txt\n");
- exit(1);
- }
- fprintf(out, "%d\n", j);
- for(q=0; q<j;q++)
- {
- fprintf(out,"%s\n", v_auto[q].matricula );
- fprintf(out,"%s\n", v_auto[q].marca );
- fprintf(out,"%s\n", v_auto[q].modelo);
- fprintf(out,"%d\n", v_auto[q].cilindrada);
- fprintf(out,"%d\n", v_auto[q].combustivel);
- fprintf(out,"%c\n", v_auto[q].estado);
- fprintf(out,"%d\n", v_auto[q].dataPM.dia);
- fprintf(out,"%d\n", v_auto[q].dataPM.mes);
- fprintf(out,"%d\n", v_auto[q].dataPM.ano);
- fprintf(out,"%f\n", v_auto[q].preco);
- }
- fclose( out );
- }
- int carregarDadosAutomovel(automovel v_auto[])
- {
- int k=0,q;
- FILE *in;
- /* abre o ficheiro resultados.txt para escrita e associa-o a out */
- in = fopen("Automovel.txt", "r");
- if( in == NULL )
- {
- printf("ERRO: não consigo abrir o ficheiro Automovel.txt\n");
- exit(1);
- }
- fscanf(in, "%d\n", &k);
- for(q=0; q<k;q++)
- {
- fscanf(in,"%s\n", v_auto[q].matricula );
- fscanf(in,"%s\n", v_auto[q].marca );
- fscanf(in,"%s\n", v_auto[q].modelo);
- fscanf(in,"%d\n", &v_auto[q].cilindrada);
- fscanf(in,"%d\n", &v_auto[q].combustivel);
- fscanf(in,"%c\n", &v_auto[q].estado);
- fscanf(in,"%d\n", &v_auto[q].dataPM.dia);
- fscanf(in,"%d\n", &v_auto[q].dataPM.mes);
- fscanf(in,"%d\n", &v_auto[q].dataPM.ano);
- fscanf(in,"%f\n", &v_auto[q].preco);
- }
- fclose( in );
- return k;
- }
- void enviarFicheiroVenda(int n, venda v_venda[])
- {
- int run_list;
- int q;
- FILE *out;
- /* abre o ficheiro resultados.txt para escrita e associa-o a out */
- out = fopen("Venda.txt", "w");
- if( out == NULL )
- {
- printf("ERRO: não consigo abrir o ficheiro Venda.txt\n");
- exit(1);
- }
- fprintf(out, "%d\n", n);
- for(q=0; q<n;q++)
- {
- fprintf(out,"%s\n", v_venda[q].auto_matricula);
- fprintf(out,"%d\n", v_venda[q].id_cliente);
- fprintf(out,"%d\n", v_venda[q].dataVenda.dia);
- fprintf(out,"%d\n", v_venda[q].dataVenda.mes);
- fprintf(out,"%d\n", v_venda[q].dataVenda.ano);
- fprintf(out,"%f\n", v_venda[q].v_preco);
- }
- fclose( out );
- }
- int carregarDadosVenda(venda v_venda[])
- {
- int k=0,q;
- FILE *in;
- /* abre o ficheiro resultados.txt para escrita e associa-o a out */
- in = fopen("Venda.txt", "r");
- if( in == NULL )
- {
- printf("ERRO: não consigo abrir o ficheiro Venda.txt\n");
- exit(1);
- }
- fscanf(in, "%d\n", &k);
- for(q=0; q<k;q++)
- {
- fscanf(in,"%s\n", v_venda[q].auto_matricula);
- fscanf(in,"%d\n", v_venda[q].id_cliente);
- fscanf(in,"%d\n", v_venda[q].dataVenda.dia);
- fscanf(in,"%d\n", v_venda[q].dataVenda.mes);
- fscanf(in,"%d\n", v_venda[q].dataVenda.ano);
- fscanf(in,"%f\n", v_venda[q].v_preco);
- }
- fclose( in );
- return k;
- }
- /*------------------------------------------- FUNÇOES! -------------------------------------------*/
- int F_automovel(int j, automovel v_auto[])
- {
- char op;
- do
- {
- system("cls");
- op=menuAuto();
- switch(op)
- {
- case 'I':
- j=inserir_auto(j, v_auto);
- break;
- case 'E':
- editarAuto(v_auto, j);
- break;
- case 'A':
- eliminarAuto(j, v_auto);
- break;
- case 'T':
- listar_Auto(j, v_auto);
- break;
- case 'P':
- pesquisarAuto(j, v_auto);
- break;
- case 'V':
- break;
- default:
- printf("Opcao invalida! Tente outra vez.");
- getch();
- break;
- }
- }while(op!='V');
- return j;
- }
- int F_Cliente(int i,cliente v_cliente[])
- {
- char op;
- do
- {
- system("cls");
- op=menuCliente();
- switch(op)
- {
- case 'I':
- i=inserir_cliente(i,v_cliente);
- break;
- case 'E':
- editar_cliente(v_cliente);
- break;
- case 'L':
- listar_Cliente(i,v_cliente);
- break;
- case 'P':
- pesquisar_cliente(v_cliente, i);
- break;
- case 'V':
- break;
- default:
- F_Cliente( i,v_cliente);
- }
- }while(op!='V');
- return i;
- }
- int F_venda(int n, int j, venda v_venda[], automovel v_auto[], cliente v_cliente[])
- {
- char op;
- do
- {
- system("cls");
- op = menuVenda();
- switch(op)
- {
- case 'I':
- n = inserir_venda(n, j, v_venda, v_auto, v_cliente);
- break;
- case 'T':
- totalFaturado(n, v_venda);
- break;
- case 'M':
- vendasMes(n, v_venda);
- break;
- case 'A':
- vendaMaisAlta(n, v_venda);
- break;
- case 'B':
- vendaMaisBaixa(n, v_venda);
- break;
- case 'P':
- percCombustivel(n, j, v_venda, v_auto);
- break;
- case 'C':
- vendasCliente(n, v_venda);
- break;
- }
- }while(op != 'V');
- return n;
- }
- /*------------------------------------------- FUNÇOES! - INSERIR! -------------------------------------------*/
- int inserir_cliente(int i,cliente v_cliente[])
- {
- char op, str[15];
- int val,ndigitos;
- do
- {
- system("cls");
- v_cliente[i].id= i+1;
- do
- {
- printf("\n Nome Do cliente:");
- scanf("%s", v_cliente[i].nome );
- val=validarCliente(i, v_cliente);
- }while(val!=1);
- printf("\n Morada Do cliente:");
- scanf("%s", v_cliente[i].morada);
- do{
- printf("\n Cartão de Cidadão Do cliente:");
- scanf("%d", &v_cliente[i].cc);
- sprintf(str, "%d", v_cliente[i].cc);
- ndigitos=strlen(str);
- if (ndigitos<9 || ndigitos>9)
- {
- printf("\nCartão de Cidadão Inválido, insira novamente");
- }
- }while(ndigitos<9 || ndigitos>9);
- printf("\n NIF Do cliente:");
- scanf("%d", &v_cliente[i].nif);
- do{
- printf("NIF não válido, insira novamente.");
- scanf("%d", &v_cliente[i].nif);
- sprintf(str, "%d", v_cliente[i].nif);
- ndigitos=strlen(str);
- if (ndigitos<9 || ndigitos>9)
- {
- printf("\nNIF Inválido, insira novamente");
- }
- }while(ndigitos<9 || ndigitos>9);
- do{
- printf("\n Telefone Do cliente:");
- scanf("%d", &v_cliente[i].telefone);
- sprintf(str, "%d", v_cliente[i].telefone);
- ndigitos=strlen(str);
- if (ndigitos<9 || ndigitos>9)
- {
- printf("\nTelefone Inválido, insira novamente");
- }
- }while(ndigitos<9 || ndigitos>9);
- printf("\nPrentede continuar ( Y / N ):");
- fflush(stdin);
- scanf("%c", &op);
- op=toupper(op);
- (i)++;
- }while(op!='N');
- return i;
- }
- int inserir_auto(int j,automovel v_auto[]) // funcao para a insercao de automoveis
- {
- // declaracao de variaveis locais
- char estate, matri[9];
- int type;
- int day, mon, year;
- int val = 0;
- int val_matri = 0;
- // inicio da insercao do automovel
- fflush(stdin);
- system("cls");
- // pedido e validacao da matricula
- do
- {
- printf("\n Matricula (AA-00-00): ");
- fflush(stdin);
- scanf("%s", matri);
- val_matri = validarMatricula(matri);
- // validacao do formato da matricula
- do
- {
- if(val_matri == 1)
- {
- strcpy(v_auto[j].matricula, matri);
- }else{
- printf("\n A matricula introduzida nao corresponde ao formato pedido.\n");
- printf("\n Introduza novamente a matricula: ");
- }
- }while(val_matri != 1);
- // verificacao da existencia de automoveis introduzidos no ficheiro
- // senao existisse nenhum, o programa ficava preso no pedido da matricula
- if(j == 0)
- {
- break;
- }else{
- val = validarAuto(j, v_auto, matri);
- }
- }while(val != 1);
- // insercao da marca
- printf("\n Marca: ");
- scanf("%s", v_auto[j].marca);
- // insercao do modelo
- printf("\n Modelo: ");
- scanf("%s", v_auto[j].modelo);
- // insercao da cilindrada
- printf("\n Cilindrada: ");
- scanf("%d", &v_auto[j].cilindrada);
- // insercao e validacao do tipo de combustivel
- do
- {
- printf("\n Tipo de Combustivel: ");
- printf("\n (1 - Gasolina)");
- printf("\n (2 - Gasoleo)");
- printf("\n (3 - GPL)");
- printf("\n (4 - Electricidade)");
- printf("\n -> Opcao: ");
- scanf("%d", &type);
- if(type < 1 || type > 4)
- {
- printf("\n\n Tipo de combustivel invalido! Insira outra vez.\n\n");
- }
- }while(type < 1 || type > 4);
- v_auto[j].combustivel = type;
- // insercao e validacao do estado do automovel
- do
- {
- printf("\n Estado (V - Vendido/D - Disponivel): ");
- fflush(stdin);
- scanf("%c", &estate);
- estate = toupper(estate);
- // mensagem de erro do estado
- if(estate!='V' && estate!='D')
- {
- printf("\n Estado invalido. Tente outra vez.\n");
- }
- }while(estate != 'V' && estate != 'D');
- v_auto[j].estado = estate;
- // insercao e validacao da data da primeira matricula do automovel
- printf("\n Data Primeira Matricula (DD-MM-YYYY): ");
- do
- {
- printf("\n \tDia: ");
- scanf("%d", &day);
- if(day<1 || day>31)
- {
- printf("\n Dia invalido, insira outra vez.");
- }
- }while(day<1 || day>31);
- v_auto[j].dataPM.dia=day;
- do
- {
- printf("\n \tMes: ");
- scanf("%d", &mon);
- if(mon<1 || mon>12)
- {
- printf("\n Mes invalido, insira outra vez.");
- }
- }while(mon<1 || mon>12);
- v_auto[j].dataPM.mes=mon;
- do
- {
- printf("\n \tAno: ");
- scanf("%d", &year);
- if(year<1900 || year>2015)
- {
- printf("\n Ano invalido, insira outra vez.");
- }
- }while(year<1900 || year>2015);
- v_auto[j].dataPM.ano=year;
- // insercao do preco do automovel
- printf("\n Preco: ");
- scanf("%f", &v_auto[j].preco);
- (j)++;
- return j;
- }
- int inserir_venda(int n, int j, venda v_venda[], automovel v_auto[], cliente v_cliente[])
- {
- char matri[10], str[15];
- int day, mon, year;
- int valMatri = 0, valCliente = 0;
- int val_matri = 0;
- int nif_cliente, ndigitos;
- system("cls");
- v_venda[n].id_venda = n + 1;
- printf("\n Introduza a data em que a venda foi efectuada: \n");
- do
- {
- printf("\n \tDia: ");
- scanf("%d", &day);
- if(day<1 || day>31)
- {
- printf("\n Dia invalido, insira outra vez.");
- }
- }while(day<1 || day>31);
- v_venda[n].dataVenda.dia=day;
- do
- {
- printf("\n \tMes: ");
- scanf("%d", &mon);
- if(mon<1 || mon>12)
- {
- printf("\n Mes invalido, insira outra vez.");
- }
- }while(mon<1 || mon>12);
- v_venda[n].dataVenda.mes=mon;
- do
- {
- printf("\n \tAno: ");
- scanf("%d", &year);
- if(year<1900 || year>2015)
- {
- printf("\n Ano invalido, insira outra vez.");
- }
- }while(year<1900 || year>2015);
- v_venda[n].dataVenda.ano=year;
- printf("\n Introduza a matricula(AA-00-00) do automovel que quer adicionar a venda: \n ");
- fflush(stdin);
- scanf("%s", matri);
- val_matri = validarMatricula(matri);
- // validacao do formato da matricula
- do
- {
- if(val_matri == 1)
- {
- strcpy(v_venda[n].auto_matricula, matri);
- break;
- }else{
- printf("\n A matricula introduzida nao corresponde ao formato pedido.\n");
- printf("\n Introduza novamente a matricula: ");
- scanf("%s", matri);
- val_matri = validarMatricula(matri);
- }
- }while(val_matri != 1);
- int c;
- for(c = 0; c < j; c++)
- {
- if(strcmp(v_auto[c].matricula, matri) == 0)
- {
- if(v_auto[c].estado == 'V')
- {
- printf("\n Este veiculo ja nao esta disponivel para venda! Tente outro veiculo.\n");
- printf("\n Introduza a matricula: ");
- scanf("%s", matri);
- val_matri = validarMatricula(matri);
- }else{
- printf("O veiculo com a matricula %s foi adicionado com sucesso", matri);
- v_auto[c].estado = 'V';
- break;
- }
- }else{
- printf("\n A matricula introduzida nao existe! Tente outra vez.\n");
- }
- }
- printf("\n NIF do cliente a adicionar a venda: ");
- scanf("%d", &nif_cliente);
- do
- {
- printf("\n NIF invalido, insira novamente.");
- scanf("%d", &nif_cliente);
- sprintf(str, "%d", nif_cliente);
- ndigitos=strlen(str);
- if (ndigitos<9 || ndigitos>9)
- {
- printf("\n NIF inválido, insira novamente");
- }
- }while(ndigitos<9 || ndigitos>9);
- v_venda[n].id_cliente = nif_cliente;
- printf("\n Preco final: ");
- scanf("%f", &v_venda[n].v_preco);
- printf("\n\n Venda concluida com sucesso!\n\n");
- getch();
- (n)++;
- return n;
- }
- void totalFaturado(int n, venda v_venda[])
- {
- int i, j;
- float total_faturado = 0;
- system("cls");
- printf("\n Numero total de vendas: %d", n);
- for(j = 0; j < n; j++)
- {
- total_faturado = total_faturado + v_venda[j].v_preco;
- }
- printf("\n Total faturado: %.2f", total_faturado);
- printf("\n\n Continuar . . . ");
- getch();
- }
- void vendasMes(int n, venda v_venda[])
- {
- int mes, i;
- float total = 0;
- system("cls");
- printf("Introduza o mes: ");
- scanf("%d", &mes);
- for(i = 0; i < n; i++)
- {
- if(v_venda[i].dataVenda.mes == mes)
- {
- total = total + v_venda[i].v_preco;
- }
- }
- if(total == 0)
- {
- printf("\n Nao foram efectuadas vendas no mes %d.", mes);
- }else{
- printf("\n O total facturado no mes %d foi: %.2f", mes, total);
- }
- getch();
- }
- void vendaMaisAlta(int n, venda v_venda[])
- {
- int i, pos;
- float num;
- system("cls");
- for(i = 0; i < n; i++)
- {
- if(num < v_venda[i].v_preco)
- {
- num = v_venda[i].v_preco;
- }
- }
- pos = validar3(n, v_venda, num);
- if(pos != - 1)
- {
- printf("\n ID venda: ", v_venda[pos].id_venda);
- printf("\n Data da venda: ");
- printf("\n -> Dia: ", v_venda[pos].dataVenda.dia);
- printf("\n -> Mes: ", v_venda[pos].dataVenda.mes);
- printf("\n -> Ano: ", v_venda[pos].dataVenda.ano);
- printf("\n Matricula do automovel: ", v_venda[pos].auto_matricula);
- printf("\n NIF do cliente: ", v_venda[pos].id_cliente);
- printf("\n Preco final: ", v_venda[pos].v_preco);
- }else{
- printf("\n Nao existem vendas!");
- }
- getch();
- }
- void vendaMaisBaixa(int n, venda v_venda[])
- {
- int i, pos;
- float num;
- system("cls");
- for(i = 0; i < n; i++)
- {
- if(num > v_venda[i].v_preco)
- {
- num = v_venda[i].v_preco;
- }
- }
- pos = validar3(n, v_venda, num);
- if(pos != - 1)
- {
- printf("\n ID venda: ", v_venda[pos].id_venda);
- printf("\n Data da venda: ");
- printf("\n -> Dia: ", v_venda[pos].dataVenda.dia);
- printf("\n -> Mes: ", v_venda[pos].dataVenda.mes);
- printf("\n -> Ano: ", v_venda[pos].dataVenda.ano);
- printf("\n Matricula do automovel: ", v_venda[pos].auto_matricula);
- printf("\n NIF do cliente: ", v_venda[pos].id_cliente);
- printf("\n Preco final: ", v_venda[pos].v_preco);
- }else{
- printf("\n Nao existem vendas!");
- }
- getch();
- }
- void percCombustivel(int n, int j, venda v_venda[], automovel v_auto[])
- {
- int i, total;
- float n1 = 0, n2 = 0, n3 = 0, n4 = 0;
- system("cls");
- for(i = 0; i < j; i++)
- {
- if(strcmp(v_auto[i].matricula, v_venda[i].auto_matricula) == 0)
- {
- if(v_auto[i].combustivel == 1)
- {
- n1 = n1 + 1;
- }else if(v_auto[i].combustivel == 2)
- {
- n2 = n2 + 1;
- }else if(v_auto[i].combustivel == 3)
- {
- n3 = n3 + 1;
- }else if(v_auto[i].combustivel == 4)
- {
- n4 = n4 + 1;
- }
- }else{
- printf("\n Nao existem vendas!");
- break;
- }
- }
- printf("\n Gasolina: %.2f \n", (n1 / n) * 100);
- printf("\n Gasoleo: %.2f \n", (n2 / n) * 100);
- printf("\n GPL: %.2f \n", (n3 / n) * 100);
- printf("\n Electricidade: %.2f \n", (n4 / n) * 100);
- getch();
- }
- void vendasCliente(int n, venda v_venda[])
- {
- int i, nif;
- system("cls");
- printf("Introduza o NIF do cliente: ");
- scanf("%d", &nif);
- for(i = 0; i < n; i++)
- {
- if(v_venda[i].id_cliente == nif)
- {
- printf("\n ID venda: ", v_venda[i].id_venda);
- printf("\n Data da venda: ");
- printf("\n -> Dia: ", v_venda[i].dataVenda.dia);
- printf("\n -> Mes: ", v_venda[i].dataVenda.mes);
- printf("\n -> Ano: ", v_venda[i].dataVenda.ano);
- printf("\n Matricula do automovel: ", v_venda[i].auto_matricula);
- printf("\n NIF do cliente: ", v_venda[i].id_cliente);
- printf("\n Preco final: ", v_venda[i].v_preco);
- break;
- }else{
- printf("\n NIF invalido ou cliente nao pertence a nenhuma venda.", nif);
- break;
- }
- }
- getch();
- }
- /*------------------------------------------- FUNÇOES! - VALIDAR! -------------------------------------------*/
- int validarCliente(int i,cliente v_cliente[])
- {
- int j;
- for(j=0;j<i;j++)
- {
- if(strcmp(v_cliente[i].nome,v_cliente[j].nome) == 0)
- {
- printf("\nNome do cliente ja se encontra no programa!\n\n Introduza um nome diferente\n ");
- return 0;
- }else{
- return 1;
- }
- }
- }
- int validarAuto(int j, automovel v_auto[], char matri[9])
- {
- int a;
- for(a = 0; a < j; a++)
- {
- if(strcmp(v_auto[a].matricula, matri) == 0)
- {
- printf("\n A matricula ja se encontra inserida! Introduza uma matricula diferente\n\n ");
- return 0;
- }else{
- return 1;
- }
- }
- }
- int validar(int id, cliente v_cliente[], int i)
- {
- int q, posicao = -1;
- for(q=0; q<i; q++)
- {
- if(id==v_cliente[q].nif)
- {
- posicao=q;
- q=i;
- }
- }
- return posicao;
- }
- int validar2(char matri[9], automovel v_auto[], int j)
- {
- int a, posicao = - 1;
- for(a = 0; a < j; a++)
- {
- if(strcmp(v_auto[a].matricula, matri) == 0)
- {
- posicao = a;
- break;
- }
- }
- return posicao;
- }
- int validar3(int n, venda v_venda[], float num)
- {
- int a, posicao = - 1;
- for(a = 0; a < n; a++)
- {
- if(v_venda[a].v_preco == num)
- {
- posicao = a;
- break;
- }
- }
- return posicao;
- }
- int validarMatricula(char matri[9])
- {
- int i, count, ver;
- if(matri[2] == '-')
- {
- if(matri[5] == '-')
- {
- for(i = 0; i < strlen(matri); i++)
- {
- if(isalpha(matri[i]))
- {
- count++;
- if(isalpha(matri[i + 1]))
- {
- count++;
- i++;
- }else{
- ver = 0;
- }
- }
- }
- if(count == 0 || count > 2)
- {
- ver = 1;
- }
- }else{
- ver = 0;
- }
- }else{
- ver = 0;
- }
- return ver;
- }
- /*------------------------------------------- FUNÇOES! - LISTAR! -------------------------------------------*/
- void listar_Cliente(int i,cliente v_cliente[])
- {
- system("cls");
- int kappa;
- for (kappa=0; kappa<i; kappa++)
- {
- printf("\n ----------------- ID DE CLIENTE: %d -----------------",v_cliente[kappa].id);
- printf("\n Nome Do cliente: %s",v_cliente[kappa].nome);
- printf("\n Morada Do cliente: %s",v_cliente[kappa].morada);
- printf("\n Cartão de Cidadão Do cliente: %d", v_cliente[kappa].cc);
- printf("\n NIF Do cliente: %d",v_cliente[kappa].nif);
- printf("\n Telefone Do cliente: %d\n\n",v_cliente[kappa].telefone);
- }
- printf("\n\n\n Continuar . . . ");
- getch();
- }
- void listar_Auto(int j,automovel v_auto[])
- {
- system("cls");
- int run_list;
- for (run_list = 0; run_list < j; run_list++)
- {
- printf("\n ----------------- Matricula: %s -----------------\n", v_auto[run_list].matricula);
- printf("\n Marca: %s",v_auto[run_list].marca);
- printf("\n Modelo: %s",v_auto[run_list].modelo);
- printf("\n Cilindrada: %d", v_auto[run_list].cilindrada);
- if(v_auto[run_list].combustivel == 1){
- printf("\n Combustivel: Gasolina\n");
- }else if(v_auto[run_list].combustivel == 2){
- printf("\n Combustivel: Gasoleo\n");
- }else if(v_auto[run_list].combustivel == 3){
- printf("\n Combustivel: GPL\n");
- }else{
- printf("\n Combustivel: Electricidade\n");
- }
- if(v_auto[run_list].estado == 'V')
- {
- printf("\n Estado: Vendido\n");
- }else{
- printf("\n Estado: Disponivel\n");
- }
- printf("\n Data Primeira Matricula: \n");
- printf("\n -> Dia: %d\n", v_auto[run_list].dataPM.dia);
- printf("\n -> Mes: %d\n", v_auto[run_list].dataPM.mes);
- printf("\n -> Ano: %d\n", v_auto[run_list].dataPM.ano);
- printf("\n Preco: %.2f\n\n\n\n",v_auto[run_list].preco);
- }
- printf("\n\n\n Continuar . . . ");
- getch();
- }
- /*------------------------------------------- FUNÇOES! - EDITAR! -------------------------------------------*/
- void editar_cliente(cliente v_cliente[])
- {
- system("cls");
- int id;
- char op;
- do
- {
- printf("Introduza o id do cliente:");
- scanf("%d", &id);
- id=id-1;
- printf("Prentede editar este cliente: \n\n");
- printf("Nome: %s \nCartao de cidadao: %d\n\n ", v_cliente[id].nome, v_cliente[id].cc);
- printf("(Y)es or (N)o: ");
- fflush(stdin);
- scanf("%c", &op);
- op=toupper(op);
- }while(op!='Y');
- printf("\n Nome Do cliente:");
- scanf("%s", v_cliente[id].nome );
- printf("\n Morada Do cliente:");
- scanf("%s", v_cliente[id].morada);
- printf("\n Cartão de Cidadão Do cliente:");
- scanf("%d", &v_cliente[id].cc);
- printf("\n NIF Do cliente:");
- scanf("%d", &v_cliente[id].nif);
- printf("\n Telefone Do cliente:");
- scanf("%d", &v_cliente[id].telefone);
- }
- void editarAuto(automovel v_auto[], int j)
- {
- system("cls");
- char op, matri[9], estate;
- int pos = - 1, val = 0, u = - 1;
- int day, mon, year;
- int type = 0, val_matri = 0;
- do
- {
- do
- {
- printf("Introduza a matricula:");
- scanf("%s", matri);
- pos = validar2(matri, v_auto, j);
- if(pos == u)
- {
- printf("\n\n O veiculo com a matricula %s nao existe.\n\n", matri);
- }else{
- u = u + 1;
- }
- }while(u == - 1);
- printf("Prentede editar o veiculo com a matricula: %s\n\n", v_auto[pos].matricula);
- printf("(S)im ou (N)ao: ");
- fflush(stdin);
- scanf("%c", &op);
- op=toupper(op);
- }while(op!='S');
- do
- {
- printf("Introduza os novos dados: ");
- printf("\n Matricula: ");
- scanf("%s", matri );
- val = validarAuto(j, v_auto, matri);
- do
- {
- if(val_matri == 1)
- {
- strcpy(v_auto[j].matricula, matri);
- }else{
- printf("\n A matricula introduzida nao corresponde ao formato pedido.\n");
- printf("\n Introduza novamente a matricula: ");
- }
- }while(val_matri != 1);
- }while(val != 1);
- strcpy(v_auto[pos].matricula, matri);
- printf("\n Marca: ");
- scanf("%s", v_auto[pos].marca);
- printf("\n Modelo: ");
- scanf("%s", v_auto[pos].modelo);
- printf("\n Cilindrada: ");
- scanf("%d", &v_auto[pos].cilindrada);
- // insercao do tipo de combustivel
- do
- {
- printf("\n Tipo de Combustivel: ");
- printf("\n (1 - Gasolina)");
- printf("\n (2 - Gasoleo)");
- printf("\n (3 - GPL)");
- printf("\n (4 - Electricidade)");
- printf("\n -> Opcao: ");
- scanf("%d", &type);
- if(type < 1 || type > 4)
- {
- printf("\n\n Tipo de combustivel invalido! Insira outra vez.\n\n");
- }
- }while(type < 1 || type > 4);
- v_auto[pos].combustivel = type;
- // insercao e validacao do estado do automovel
- do
- {
- printf("\n Estado (V - Vendido/D - Disponivel): ");
- fflush(stdin);
- scanf("%c", &estate);
- estate = toupper(estate);
- // mensagem de erro do estado
- if(estate!='V' && estate!='D')
- {
- printf("\n Estado invalido. Tente outra vez.\n");
- }
- }while(estate != 'V' && estate != 'D');
- v_auto[pos].estado = estate;
- printf("\n Data Primeira Matricula (DD-MM-YYYY): ");
- do
- {
- printf("\n \tDia: ");
- scanf("%d", &day);
- if(day<1 && day>31)
- {
- printf("\n Dia invalido, insira outra vez.");
- }
- }while(day<1 && day>31);
- v_auto[pos].dataPM.dia=day;
- do
- {
- printf("\n \tMes: ");
- scanf("%d", &mon);
- if(mon<1 && mon>12)
- {
- printf("\n Mes invalido, insira outra vez.");
- }
- }while(mon<1 && mon>12);
- v_auto[pos].dataPM.mes=mon;
- do
- {
- printf("\n \tAno: ");
- scanf("%d", &year);
- if(year<1900 && year>2015)
- {
- printf("\n Ano invalido, insira outra vez.");
- }
- }while(year<1900 && year>2015);
- v_auto[pos].dataPM.ano=year;
- printf("\n Preco: ");
- scanf("%f", &v_auto[pos].preco);
- printf("\n\n Automovel editado com sucesso!\n\n");
- printf(" Continuar . . . ");
- getch();
- }
- /*------------------------------------------- FUNÇOES! - PESQUISAR! -------------------------------------------*/
- void pesquisar_cliente(cliente v_cliente[], int i)
- {
- system("cls");
- int id,pos, u;
- printf("Introduza o NIF do cliente:");
- scanf("%d", &id);
- pos=validar(id,v_cliente, i);
- if(pos!=-1)
- {
- printf("\n ----------------- ID DE CLIENTE: %d -----------------",v_cliente[pos].id);
- printf("\n Nome Do cliente: %s",v_cliente[pos].nome);
- printf("\n Morada Do cliente: %s",v_cliente[pos].morada);
- printf("\n Cartão de Cidadão Do cliente: %d", v_cliente[pos].cc);
- printf("\n NIF Do cliente: %d",v_cliente[pos].nif);
- printf("\n Telefone Do cliente: %d\n\n",v_cliente[pos].telefone);
- }else{printf("Nao foi encontrada nenhum cliente");}
- getch();
- }
- void pesquisarAuto(int j, automovel v_auto[])
- {
- system("cls");
- int pos = - 1;
- char matri[9];
- printf("Introduza a matricula: ");
- fflush(stdin);
- scanf("%s", matri);
- pos = validar2(matri, v_auto, j);
- if(pos != - 1)
- {
- printf("\n ----------------- Matricula: %s -----------------\n", v_auto[pos].matricula);
- printf("\n Marca: %s",v_auto[pos].marca);
- printf("\n Modelo: %s",v_auto[pos].modelo);
- printf("\n Cilindrada: %d", v_auto[pos].cilindrada);
- if(v_auto[pos].combustivel == 1){
- printf("\n Combustivel: Gasolina\n");
- }else if(v_auto[pos].combustivel == 2){
- printf("\n Combustivel: Gasoleo\n");
- }else if(v_auto[pos].combustivel == 3){
- printf("\n Combustivel: GPL\n");
- }else{
- printf("\n Combustivel: Electricidade\n");
- }
- if(v_auto[pos].estado == 'V')
- {
- printf("\n Estado: Vendido\n");
- }else{
- printf("\n Estado: Disponivel\n");
- }
- printf("\n Data Primeira Matricula: \n");
- printf("\n Dia: %d\n", v_auto[pos].dataPM.dia);
- printf("\n Mes: %d\n", v_auto[pos].dataPM.mes);
- printf("\n Ano: %d\n", v_auto[pos].dataPM.ano);
- printf("\n Preco: %.2f\n", v_auto[pos].preco);
- }else{
- printf("Nao foi encontrado nenhum automovel com a matricula indicada.");
- }
- getch();
- }
- /*------------------------------------------- FUNÇOES! - ELIMINAR! -------------------------------------------*/
- int eliminarAuto(int j, automovel v_auto[])
- {
- char op, matri[9];
- int pos = - 1, val = 0, u = - 1;
- do
- {
- do
- {
- system("cls");
- printf("\n Introduza a matricula: ");
- scanf("%s", matri);
- pos = validar2(matri, v_auto, j);
- if(pos == u)
- {
- printf("\n\n Veiculo com a matricula %s nao existe.\n\n", matri);
- }else{
- u = u + 1;
- }
- }while(u == - 1);
- printf("\n Prentede eliminar o veiculo com a matricula: %s\n", matri);
- printf("\n (S)im ou (N)ao: ");
- fflush(stdin);
- scanf("%c", &op);
- op=toupper(op);
- }while(op!='S');
- int i = 0;
- for(i = pos; i < j; i++)
- {
- v_auto[i] = v_auto[i + 1];
- }
- j--;
- return j;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement