Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # include <stdio.h>
- # include <stdlib.h>
- # include <string.h>
- typedef struct registro{
- char nome[50];
- char CPF[20];
- int flag;
- char endereco[100];
- }cliente;
- typedef struct registro_v{
- char modelo[50];
- float motor;
- char placa[8];
- int ano;
- char cor[15];
- float preco;
- int flag;
- }veiculos;
- typedef struct compra_venda{
- char status[10]; // COMPRA/VENDA
- int codigo;
- int flag;
- char nome_cv[50];
- char CPF_CV[15];
- char endereco_cv[100];
- char modelo_cv[50];
- float motor_cv;
- char placa_cv[8];
- int ano_cv;
- char cor_cv[15];
- float preco_cv;
- }nota_fiscal;
- //----------------------------Codigo pra usar o malloc---------------------------------------------
- typedef struct registroAuxiliar{
- char nome[50];
- char CPF[20];
- int flag;
- char endereco[100];
- }cliente_Auxiliar;
- typedef struct registro_v_Auxiliar{
- char modelo[50];
- float motor;
- char placa[8];
- int ano;
- char cor[15];
- float preco;
- int flag;
- }veiculos_Auxiliar;
- typedef struct compra_venda_Auxiliar{
- char status[10]; // COMPRA/VENDA
- int codigo;
- int flag;
- char nome_cv[50];
- char CPF_CV[15];
- char endereco_cv[100];
- char modelo_cv[50];
- float motor_cv;
- char placa_cv[8];
- int ano_cv;
- char cor_cv[15];
- float preco_cv;
- }nota_fiscal_Auxiliar;
- //-------------------------------------------------------------------------------------------------
- cliente func[100];
- veiculos funv[100];
- nota_fiscal funf[100];
- cliente_Auxiliar ClienteArquivo[100];
- veiculos_Auxiliar VeiculosArquivo[100];
- nota_fiscal_Auxiliar NotaArquivo[100];
- //----------------------------------------------------------------------------------------
- void copiaArquivo(){
- FILE *arquivo = fopen("arqcliente.txt", "r+");
- fread(&func, sizeof(cliente), 1 ,arquivo);
- fseek(arquivo, 0, SEEK_END);
- int tamanho = 0;
- tamanho = ftell(arquivo);
- fseek(arquivo, 0, SEEK_SET);
- //malloc dependendo da quantidade de objetos
- int *ponteiro = malloc(tamanho * sizeof(ClienteArquivo));
- if(ponteiro == NULL){
- printf("Nao possui memoria suficiente no sistema\n");
- }else{
- ClienteArquivo.nome = func.nome;
- ClienteArquivo.CPF = func.CPF;
- ClienteArquivo.endereco = func.endereco;
- ClienteArquivo.flag = func.flag;
- }
- fclose(arquivo);
- //--------------------------------------------------------------------
- FILE *ArquivoVeiculos = fopen("arqveiculos.txt", "r+");
- fread(&funv, sizeof(veiculos), 1 , ArquivoVeiculos);
- fseek(ArquivoVeiculos, 0, SEEK_END);
- int tamanhoVeiculos = 0;
- tamanhoVeiculos = ftell(ArquivoVeiculos);
- fseek(ArquivoVeiculos, 0, SEEK_SET);
- int *ponteiroVeiculos = malloc(tamanhoVeiculos*sizeof(VeiculosArquivo));
- if(ponteiroVeiculos == NULL){
- printf("Memoria insuficiente no sistema\n");
- }else{
- VeiculosArquivo.modelo = funv.modelo;
- VeiculosArquivo.motor = funv.motor;
- VeiculosArquivo.placa = funv.placa;
- VeiculosArquivo.ano = funv.ano;
- VeiculosArquivo.cor = funv.cor;
- VeiculosArquivo.preco = funv.preco;
- VeiculosArquivo.flag = funv.flag;
- }
- fclose(ArquivoVeiculos);
- //------------------------------------------------------------------
- FILE *ArquivoNota = fopen("arqnotafiscal.txt", "r+");
- fread(&funf, sizeof(nota_fiscal),1,ArquivoNota);
- fseek(ArquivoNota, 0, SEEK_END);
- int tamanhoNota = 0;
- tamanhoNota = ftell(ArquivoNota);
- fseek(ArquivoNota, 0, SEEK_SET);
- int *ponteiroNota = malloc(tamanhoNota*sizeof(NotaArquivo));
- if(ponteiroNota == NULL){
- printf("Memoria insuficiente no sistema\n");
- }else{
- NotaArquivo.status = funf.status;
- NotaArquivo.codigo = funf.codigo;
- NotaArquivo.flag = funf.flag;
- NotaArquivo.nome_cv = funf.nome_cv;
- NotaArquivo.CPF_CV = funf.CPF_CV;
- NotaArquivo.endereco_cv = funf.endereco_cv;
- NotaArquivo.cor_cv = funf.cor_cv;
- NotaArquivo.modelo_cv = funf.modelo_cv;
- NotaArquivo.motor_cv = funf.motor_cv;
- NotaArquivo.placa_cv = funf.placa_cv;
- NotaArquivo.ano_cv = funf.ano_cv;
- NotaArquivo.preco_cv = funf.preco_cv;
- }
- fclose(ArquivoNota);
- //----------------------------------------------------------------------
- }
- void CopiaDasStructs(){
- FILE *arquivo = fopen("arqcliente.txt", "w+");
- fwrite(&ClienteArquivo, sizeof(ClienteArquivo), 1, arquivo);
- fclose(arquivo);
- FILE *ArquivoVeiculos = fopen("arqveiculos.txt", "w+");
- fwrite(&VeiculosArquivo, sizeof(VeiculosArquivo),1, ArquivoVeiculos);
- fclose(ArquivoVeiculos);
- FILE *ArquivoNota = fopen("arqnotafiscal.txt", "w+");
- fwrite(&NotaArquivo, sizeof(NotaArquivo), 1, ArquivoNota);
- fclose(ArquivoNota);
- }
- /*FUNCAO PRA A LIMPEZA DO BUFFER DO TECLADO*/
- void flush_in()
- {
- int ch;
- while( (ch = fgetc(stdin)) != EOF && ch != '\n' ){}
- }
- /*---------------------cliente------------------------------------------------------------------------------------------------*/
- /*FUNCAO CADASTRAR cliente*/
- void cadastrar(FILE *arquivo){
- cliente func, aux;
- long tamanho;
- if((arquivo = fopen("arqcliente.txt", "r+")) == NULL){
- printf("Erro na Database do Sistema! \nContate o Administrador!\n");
- sleep(500000);
- system("cls");
- exit(0);
- }
- printf("\nNome: ");
- gets(func.nome);
- printf("CPF: ");
- gets(func.CPF);
- printf("Endereco: ");
- gets(func.endereco);
- fseek(arquivo, 0, SEEK_END);
- tamanho = ftell(arquivo);
- fseek(arquivo, 0, SEEK_SET);
- while(ftell(arquivo) != tamanho){
- fread(&aux, sizeof(cliente), 1, arquivo);
- if((strcmp(aux.CPF,func.CPF)== 0)&&(aux.flag == 1)){
- strcpy(aux.CPF,"erro");
- break;
- }
- }
- if(strcmp(aux.CPF,"erro")==0){
- printf("\nCodigo existente! O sistema sera finalizado!\n");
- system("pause");
- exit(0);
- }
- else{
- if(aux.flag == 0){
- fseek(arquivo, -sizeof(cliente), SEEK_CUR);
- }
- else{
- fseek(arquivo, 0, SEEK_END);
- }
- func.flag = 1;
- fwrite(&func, sizeof(cliente), 1, arquivo);
- }
- fclose(arquivo);
- }
- /*FUNCAO REMOVER cliente*/
- void remover(FILE *arquivo){
- cliente func;
- char numero[15];
- int achou;
- char op[1];
- long tamanho;
- if((arquivo = fopen("arqcliente.txt", "r+")) == NULL){
- printf("Erro na Database do Sistema! \nContate o Administrador!\n");
- sleep(500000);
- system("cls");
- exit(0);
- }
- printf("\nCPF: ");
- gets(numero);
- fseek(arquivo, 0, SEEK_END);
- tamanho = ftell(arquivo);
- fseek(arquivo, 0, SEEK_SET);
- achou = 0;
- while((ftell(arquivo) != tamanho) && (!achou)){
- fread(&func, sizeof(cliente), 1, arquivo);
- if((strcmp(numero,func.CPF)== 0) && (func.flag == 1))
- achou = 1;
- }
- if(achou == 1){
- printf("\n|Cliente|\n\n");
- printf("Nome: %s\n", func.nome);
- printf("CPF: %s\n", func.CPF);
- printf("Endereco: %s\n\n", func.endereco);
- printf("Remover cliente? (S/N): ");
- scanf("%s",&op);
- //flush_in();
- if(strcmp(op,"S")==0){
- func.flag = 0;
- fseek(arquivo,-2 -sizeof(cliente), SEEK_CUR);
- fwrite(&func, sizeof(cliente), 1, arquivo);
- }
- }
- fclose(arquivo);
- }
- /*FUNCAO CONSULTAR CLIENTES*/
- void consultar(FILE *arquivo){
- cliente func;
- char numero[15];
- int achou;
- long tamanho;
- if((arquivo = fopen("arqcliente.txt", "a+")) == NULL){
- printf("Erro na Database do Sistema! \nContate o Administrador!\n");
- sleep(500000);
- system("clear");
- exit(0);
- }
- printf("\nCPF: ");
- gets(numero);
- //rewind(arquivo);
- fseek(arquivo, 0, SEEK_END);
- tamanho = ftell(arquivo);
- fseek(arquivo, 0, SEEK_SET);
- achou = 0;
- while((ftell(arquivo) != tamanho) && (!achou)){
- fread(&func, sizeof(cliente), 1, arquivo);
- if((strcmp(func.CPF,numero) == 0) && (func.flag == 1)){
- printf("\n|Cliente|\n\n");
- printf("Nome: %s\n", func.nome);
- printf("CPF: %s\n", func.CPF);
- printf("Endereco: %s\n", func.endereco);
- achou = 1;
- }
- }
- if(!achou){
- printf("\ncliente nao encontado! \n");
- }
- getchar();
- fclose(arquivo);
- }
- /*FUNCAO LISTAR cliente CADASTRADOS*/
- void listar(FILE *arquivo){
- cliente func;
- long tamanho;
- int achou;
- if((arquivo = fopen("arqcliente.txt", "a+")) == NULL){
- printf("Erro na Database do Sistema! \nContate o Administrador!\n");
- sleep(500000);
- system("cls");
- exit(0);
- }
- fseek(arquivo, 0, SEEK_END);
- tamanho = ftell(arquivo);
- fseek(arquivo, 0, SEEK_SET);
- achou = 0;
- while(ftell(arquivo) != tamanho){
- fread(&func, sizeof(cliente), 1, arquivo);
- if(func.flag == 1){
- printf("\n|Cliente|\n\n");
- printf("Nome: %s\n", func.nome);
- printf("CPF: %s\n", func.CPF);
- printf("Endereco: %s\n\n", func.endereco);
- achou = 1;
- }
- }
- if(!achou){
- printf("\nNao ha cliente cadastrados!\n");
- }
- getchar();
- fclose(arquivo);
- }
- /*--------------------------------------------------------------------------------------------------------------------*/
- /*----------VEICULOS--------------------------------------------------------------------------------------------------*/
- /*FUNCAO CADASTRAR VEICULOS*/
- void cadastrar_v(FILE *arquivo){
- veiculos func, aux;
- int verificar=0;
- long tamanho;
- if((arquivo = fopen("arqveiculos.txt", "r+")) == NULL){
- printf("Erro na Database do Sistema! \nContate o Administrador!\n");
- sleep(500000);
- system("cls");
- exit(0);
- }
- printf("\nModelo: ");
- gets(func.modelo);
- printf("Motorizacao: ");
- scanf("%f",&func.motor);
- getchar();
- printf("Cor: ");
- gets(func.cor);
- printf("Placa: ");
- scanf("%s",&func.placa);
- printf("Ano: ");
- scanf("%d",&func.ano);
- printf("Valor: ");
- scanf("%f",&func.preco);
- fseek(arquivo, 0, SEEK_END);
- tamanho = ftell(arquivo);
- fseek(arquivo, 0, SEEK_SET);
- while(ftell(arquivo) != tamanho){
- fread(&aux, sizeof(veiculos), 1, arquivo);
- if((strcmp(aux.placa,func.placa) == 0) && (aux.flag == 1)){
- verificar = -1;
- break;
- }
- }
- if(verificar == -1){
- printf("\nCodigo existente! Cadastre Novamente! \n");
- getchar();
- }
- else{
- if(aux.flag == 0){
- fseek(arquivo, -sizeof(veiculos), SEEK_CUR);
- }
- else{
- fseek(arquivo, 0, SEEK_END);
- }
- func.flag = 1;
- fwrite(&func, sizeof(veiculos), 1, arquivo);
- }
- getchar();
- fclose(arquivo);
- }
- /*FUNCAO REMOVER VEICULOS*/
- void remover_v(FILE *arquivo){
- veiculos func;
- int achou;
- char busca[8];
- char op[1];
- long tamanho;
- if((arquivo = fopen("arqveiculos.txt", "r+")) == NULL){
- printf("Erro na Database do Sistema! \nContate o Administrador!\n");
- sleep(500000);
- system("cls");
- exit(0);
- }
- printf("\nPlaca: ");
- scanf("%s",&busca);
- tamanho = ftell(arquivo);
- fseek(arquivo, 0, SEEK_SET);
- achou = 0;
- while((ftell(arquivo) != tamanho) && (!achou)){
- fread(&func, sizeof(veiculos), 1, arquivo);
- if(((strcmp(busca,func.placa))==0) && (func.flag == 1))
- achou = 1;
- }
- if(achou == 1){
- printf("\n|Veiculo|\n\n");
- printf("Modelo: %s\n", func.modelo);
- printf("Motorizacao: %.1f\t\t", func.motor);
- printf("Cor: %s\n",func.cor);
- printf("Placa: %ld\n", func.placa);
- printf("Ano: %d\n", func.ano);
- printf("Preco: R$%.2f\n\n",func.preco);
- printf("Remover veiculo? (S/N): ");
- scanf("%s", op);
- //flush_in();
- if(toupper(op[0]) == 'S'){
- func.flag = 0;
- fseek(arquivo,-2 -sizeof(veiculos), SEEK_CUR);
- fwrite(&func, sizeof(veiculos), 1, arquivo);
- }
- }
- fclose(arquivo);
- }
- /*FUNCAO CONSULTAR VEICULOS*/
- void consultar_v(FILE *arquivo){ /*BUSCA PELO MODELO*/
- veiculos func;
- int achou;
- char busca_m[20];
- long tamanho;
- if((arquivo = fopen("arqveiculos.txt", "a+")) == NULL){
- printf("Erro na Database do Sistema! \nContate o Administrador!\n");
- sleep(500000);
- system("clear");
- exit(0);
- }
- printf("\nModelo: ");
- gets(busca_m);
- //rewind(arquivo);
- fseek(arquivo, 0, SEEK_END);
- tamanho = ftell(arquivo);
- fseek(arquivo, 0, SEEK_SET);
- achou = 0;
- while(ftell(arquivo) != tamanho){
- fread(&func, sizeof(veiculos), 1, arquivo);
- if((strcmp(func.modelo,busca_m)==0) && (func.flag == 1)){
- printf("\n|Veiculo|\n\n");
- printf("Modelo: %s\n", func.modelo);
- printf("Motorizacao: %.1f\t\t", func.motor);
- printf("Cor: %s\n", func.cor);
- printf("Placa: %s\n", func.placa);
- printf("Ano: %d\n", func.ano);
- printf("Preco: R$%.2f\n\n", func.preco);
- achou = 1;
- }
- }
- if(!achou){
- printf("\n nao encontado! \n");
- getchar();
- }
- getchar();
- fclose(arquivo);
- }
- /*FUNCAO LISTAR VEICULOS CADASTRADOS*/
- void listar_v(FILE *arquivo){
- veiculos func;
- long tamanho;
- int achou;
- if((arquivo = fopen("arqveiculos.txt", "a+")) == NULL){
- printf("Erro na Database do Sistema! \nContate o Administrador!\n");
- sleep(500000);
- system("cls");
- exit(0);
- }
- fseek(arquivo, 0, SEEK_END);
- tamanho = ftell(arquivo);
- fseek(arquivo, 0, SEEK_SET);
- achou = 0;
- while(ftell(arquivo) != tamanho){
- fread(&func, sizeof(veiculos), 1, arquivo);
- if(func.flag == 1){
- printf("\n|Veiculo|\n\n");
- printf("Modelo: %s\n", func.modelo);
- printf("Motorizacao: %.1f\t\t", func.motor);
- printf("Cor: %s\n", func.cor);
- printf("Placa: %s\n", func.placa);
- printf("Ano: %d\n", func.ano);
- printf("Preco: R$%.2f\n\n", func.preco);
- achou = 1;
- }
- }
- if(!achou){
- printf("\nNao ha veiculos cadastrados!\n");
- }
- getchar();
- fclose(arquivo);
- }
- /*------------------------------------------------------------------------------------------------------------------------*/
- /*----------NOTA FISCAL--------------------------------------------------------------------------------------------------*/
- /*FUNCAO CADASTRAR NOTA FISCAL*/
- void cadastrar_nota(FILE *arquivo, int status)
- {
- nota_fiscal funf, aux;
- cliente func, aux1;
- veiculos funv, aux2;
- long tamanho;
- int verificar=0;
- char op[2];
- if((arquivo = fopen("arqnotafiscal.txt", "r+")) == NULL)
- {
- printf("Erro na Database do Sistema! \nContate o Administrador!\n");
- sleep(500000);
- system("cls");
- exit(0);
- }
- fclose(arquivo);
- tamanho = ftell(arquivo);
- printf("O cliente possui cadastro no Sistema (S/N): ");
- gets(op);
- toupper(op);
- if(strcmp(op,"N")== 0) //CLIENTE NAO POSSUI CADASTRO, CADASTRE-O (NAO USAR VOID PARA NAO PERDER AS VARIAVEIS AO FIM DO PROCEDIMENTO);
- {
- if((arquivo = fopen("arqcliente.txt", "r+")) == NULL)
- {
- printf("Erro na Database do Sistema! \nContate o Administrador!\n");
- sleep(500000);
- system("cls");
- exit(0);
- }
- printf("\nNome: ");
- gets(func.nome);
- printf("CPF: ");
- gets(func.CPF);
- printf("Endereco: ");
- gets(func.endereco);
- fseek(arquivo, 0, SEEK_SET);
- while(!feof(arquivo) && (aux1.flag != 0))
- {
- fread(&aux1, sizeof(cliente), 1, arquivo);
- if((aux1.CPF == func.CPF) && (aux1.flag == 1))
- {
- strcpy(aux1.CPF,"erro");
- break;
- }
- }
- if(aux1.CPF == "erro")
- {
- printf("\nCodigo existente! Cadastre Novamente! \n");
- getchar();
- }
- else
- {
- if(aux1.flag == 0)
- {
- fseek(arquivo, -sizeof(cliente), SEEK_CUR);
- }
- else
- {
- fseek(arquivo, 0, SEEK_END);
- }
- func.flag = 1;
- fwrite(&func, sizeof(cliente), 1, arquivo);
- }
- //armazenar dados do cliente
- fclose(arquivo);
- strcpy(funf.nome_cv,func.nome);
- strcpy(funf.CPF_CV,func.CPF);
- strcpy(funf.endereco_cv,func.endereco);
- //armazenados
- }
- else // CLIENTE POSSUI CADASTRO, MESMO PROCEDIMENTO DO CONSULTAR E/OU REMOVER CLIENTE,
- {
- // POREM AO INVES DE REMOVER OU CONSULTAR, USARA OS PARAMETROS PARA O ARMAZENAMENTO
- char numero[20];
- int achou;
- char op2[1];
- if((arquivo = fopen("arqcliente.txt", "r+")) == NULL)
- {
- printf("Erro na Database do Sistema! \nContate o Administrador!\n");
- sleep(500000);
- system("cls");
- exit(0);
- }
- printf("\nCPF: ");
- gets(numero);
- fseek(arquivo, 0, SEEK_SET);
- achou = 0;
- while(!achou)
- {
- fread(&func, sizeof(cliente), 1, arquivo);
- if((strcmp(numero,func.CPF)== 0) && (func.flag == 1))
- achou = 1;
- }
- if(achou == 1)
- {
- printf("\n|Cliente|\n\n");
- printf("Nome: %s\n", func.nome);
- printf("CPF: %s\n", func.CPF);
- printf("Endereco: %s\n\n", func.endereco);
- printf("Este eh o cliente? (S/N): ");
- scanf("%s",&op2);
- //flush_in();
- if(toupper(op2[0]) == 'S')
- {
- strcpy(funf.nome_cv,func.nome);
- strcpy(funf.CPF_CV,func.CPF);
- strcpy(funf.endereco_cv,func.endereco);
- }
- }
- else
- {
- printf("CPF nao encontrado! Erro durante o processo, o prograa sera finalizado!\n\n");
- system("pause");
- exit(0);
- }
- fclose(arquivo);
- }
- //CONSULTAR VEICULO NO ESTOQUE (CONSULTA PARA VENDA E CADASTRO PARA COMPRA)
- if(status == 0)
- {
- int verificar=0;
- if((arquivo = fopen("arqveiculos.txt", "r+")) == NULL)
- {
- printf("Erro na Database do Sistema! \nContate o Administrador!\n");
- sleep(500000);
- system("cls");
- exit(0);
- }
- getchar();
- printf("Modelo: ");
- gets(funv.modelo);
- printf("Motorizacao: ");
- scanf("%f",&funv.motor);
- getchar();
- printf("Cor: ");
- gets(funv.cor);
- printf("Placa: ");
- scanf("%s",&funv.placa);
- printf("Ano: ");
- scanf("%d",&funv.ano);
- printf("Valor: ");
- scanf("%f",&funv.preco);
- fseek(arquivo, 0, SEEK_SET);
- while(!feof(arquivo) && (aux2.flag != 0))
- {
- fread(&aux2, sizeof(veiculos), 1, arquivo);
- if((aux2.placa == funv.placa) && (aux2.flag == 1))
- {
- verificar = -1;
- break;
- }
- }
- if(verificar == -1)
- {
- printf("\nCodigo existente! Cadastre Novamente! \n");
- getchar();
- }
- else
- {
- if(aux2.flag == 0)
- {
- fseek(arquivo, -sizeof(veiculos), SEEK_CUR);
- }
- else
- {
- fseek(arquivo, 0, SEEK_END);
- }
- funv.flag = 1;
- //CADASTRO COM SUCESSO, PASSAR OS DADOS DO CADASTRO PARA A STRUCT DA NOTA FISCAL
- fwrite(&funv, sizeof(veiculos), 1, arquivo);
- }
- fclose(arquivo);
- fopen("arqnotafiscal.txt", "a+");
- printf("Codigo da transacao: ");
- scanf("%d",&funf.codigo);
- strcpy(funf.modelo_cv,funv.modelo);
- strcpy(funf.status,"Compra");
- funf.ano_cv = funv.ano;
- funf.flag = 1;
- strcpy(funf.cor_cv,funv.cor);
- funf.motor_cv = funv.motor;
- strcpy(funf.placa_cv,funv.placa);
- funf.preco_cv = funv.preco;
- fwrite(&funf, sizeof(nota_fiscal), 1, arquivo);
- fclose(arquivo);
- }
- else if(status == 1) //SE FOR VENDER, VAMOS RETIRAR DO NOSSO ESTOQUE E PEGAREMOS OS PARAMETROS PRA NOTA FISCAL
- {
- int achou2;
- char busca[8];
- char op3[1];
- if((arquivo = fopen("arqveiculos.txt", "r+")) == NULL)
- {
- printf("Erro na Database do Sistema! \nContate o Administrador!\n");
- sleep(500000);
- system("cls");
- exit(0);
- }
- int achou;
- printf("\nPlaca: ");
- scanf("%s",&busca);
- fseek(arquivo, 0, SEEK_SET);
- achou = 0;
- while((!feof(arquivo)) && (!achou))
- {
- fread(&funv, sizeof(veiculos), 1, arquivo);
- if(((strcmp(busca,funv.placa))==0) && (func.flag == 1))
- achou = 1;
- }
- if(achou == 1)
- {
- printf("\n|Veiculo|\n\n");
- printf("Modelo: %s\n", funv.modelo);
- printf("Motorizacao: %.1f\t\t", funv.motor);
- printf("Cor: %s\n",funv.cor);
- printf("Placa: %ld\n", funv.placa);
- printf("Ano: %d\n", funv.ano);
- printf("Preco: R$%.2f\n\n",funv.preco);
- printf("Veiculo a ser vendido? (S/N): ");
- scanf("%s", op);
- //flush_in();
- if(strcmp(toupper(op),"S") == 0)
- {
- funv.flag = 0;
- fseek(arquivo, -sizeof(veiculos), SEEK_CUR);
- fwrite(&funv, sizeof(veiculos), 1, arquivo);
- }
- }
- fclose(arquivo);
- fopen("arqnotafiscal.txt", "a+");
- strcpy(funf.modelo_cv,funv.modelo);
- strcpy(funf.status,"Venda");
- printf("Codigo da transacao: ");
- scanf("%d",&funf.codigo);
- funf.ano_cv = funv.ano;
- funf.flag = 1;
- strcpy(funf.cor_cv,funv.cor);
- funf.motor_cv = funv.motor;
- strcpy(funf.placa_cv,funv.placa);
- funf.preco_cv = funv.preco;
- fwrite(&funf, sizeof(nota_fiscal), 1, arquivo);
- fclose(arquivo);
- }
- }
- /*FUNCAO CONSULTAR NOTA FISCAL*/
- void consultar_nota(FILE *arquivo){ /*BUSCA PELO CODIGO DA TRANSAÇÃO*/
- nota_fiscal func;
- int achou;
- int busca_cod;
- long tamanho;
- if((arquivo = fopen("arqnotafiscal.txt", "a+")) == NULL){
- printf("Erro na Database do Sistema! \nContate o Administrador!\n");
- sleep(500000);
- system("clear");
- exit(0);
- }
- printf("\nCodigo da transacao: ");
- scanf("%d",&busca_cod);
- //rewind(arquivo);
- fseek(arquivo, 0, SEEK_END);
- tamanho = ftell(arquivo);
- fseek(arquivo, 0, SEEK_SET);
- achou = 0;
- while((ftell(arquivo) != tamanho) && (!achou)){
- fread(&func, sizeof(nota_fiscal), 1, arquivo);
- if((busca_cod == func.codigo) && (func.flag == 1)){
- printf("\n| Nota fiscal de %s |\n",func.status);
- printf("\t CPF: %d\n",func.CPF_CV);
- printf("\tNome do cliente: %s\n",func.nome_cv);
- printf("\tEndereco: %s\n\n",func.endereco_cv);
- printf("\tModelo do veiculo: %s\n",func.modelo_cv);
- printf("\tMotorizacao: %.1f \tCor: %s\n",func.motor_cv,func.cor_cv);
- printf("\tPlaca: %s \tAno: %d\n",func.placa_cv, func.ano_cv);
- printf("\tPreco: R$%.2f\n\n",func.preco_cv);
- achou = 1;
- getchar();
- }
- }
- if(!achou){
- printf("\n nao encontado! \n");
- getchar();
- }
- getchar();
- fclose(arquivo);
- }
- /*FUNCAO EMIÇÃO DE NOTA FISCAL*/
- void emitir_nota(FILE *arquivo){
- nota_fiscal func;
- int achou;
- int busca_cod;
- long tamanho;
- if((arquivo = fopen("arqnotafiscal.txt", "a+")) == NULL){
- printf("Erro na Database do Sistema! \nContate o Administrador!\n");
- sleep(500000);
- system("clear");
- exit(0);
- }
- printf("\nCodigo da transacao: ");
- scanf("%d",&busca_cod);
- //rewind(arquivo);
- fseek(arquivo, 0, SEEK_END);
- tamanho = ftell(arquivo);
- fseek(arquivo, 0, SEEK_SET);
- achou = 0;
- while((ftell(arquivo) != tamanho) && (!achou)){
- fread(&func, sizeof(nota_fiscal), 1, arquivo);
- if((busca_cod == func.codigo) && (func.flag == 1)){
- printf("\n| Nota fiscal de %s |\n",func.status);
- printf("\t CPF: %d\n",func.CPF_CV);
- printf("\tNome do cliente: %s\n",func.nome_cv);
- printf("\tEndereco: %s\n\n",func.endereco_cv);
- printf("\tModelo do veiculo: %s\n",func.modelo_cv);
- printf("\tMotorizacao: %.1f \tCor: %s\n",func.motor_cv,func.cor_cv);
- printf("\tPlaca: %s \tAno: %d\n",func.placa_cv, func.ano_cv);
- printf("\tPreco: R$%.2f\n\n",func.preco_cv);
- achou = 1;
- char opcaoimp[1];
- printf("Esta eh a nota desejada para a impressao? (S/N): ");
- gets(opcaoimp);
- if(strcmp(opcaoimp,"N")== 0){
- printf("Nota encontrada nao condiz com a nota em desejo do cliente\n o programa sera finalizado!");
- system("pause");
- exit(0);
- }
- getchar();
- }
- }
- if(!achou){
- printf("\n nao encontado! \n");
- getchar();
- }
- fclose(arquivo);
- char nome_arq[30]="nota_cod_";
- char nome_arq2[10];
- itoa(busca_cod,nome_arq2,10);
- strcat(nome_arq,nome_arq2);
- strcat(nome_arq,".txt");
- fopen(nome_arq, "w");
- fprintf(arquivo," Nota Fiscal de %s \n",func.status);
- fprintf(arquivo,"\n Nome do cliente: %s \n",func.nome_cv);
- fprintf(arquivo," CPF: %d \n Endereco: %s \n",func.CPF_CV,func.endereco_cv);
- fprintf(arquivo,"\n Modelo: %s\n", func.modelo_cv);
- fprintf(arquivo," Motor: %.2f \t Cor: %s \n",func.motor_cv,func.cor_cv);
- fprintf(arquivo," Placa: %s \t Ano: %d\n",func.placa_cv, func.ano_cv);
- fprintf(arquivo," Valor: %.2f",func.preco_cv);
- fclose(arquivo);
- system("pause");
- }
- /*FUNCAO LISTAR NOTAS FISCAIS CADASTRADAS*/
- void listar_nota(FILE *arquivo){
- nota_fiscal funf;
- int codigo_compra;
- long tamanho;
- int achou;
- if((arquivo = fopen("arqnotafiscal.txt", "a+")) == NULL){
- printf("Erro na Database do Sistema! \nContate o Administrador!\n");
- sleep(500000);
- system("cls");
- exit(0);
- }
- fseek(arquivo, 0, SEEK_END);
- tamanho = ftell(arquivo);
- fseek(arquivo, 0, SEEK_SET);
- achou = 0;
- while(ftell(arquivo) != tamanho){
- fread(&funf, sizeof(nota_fiscal), 1, arquivo);
- if(funf.flag == 1){
- printf("\n|Nota Fiscal %s|\n\n",funf.status);
- printf("Nome: %s\n", funf.nome_cv);
- printf("CPF: %d\n", funf.CPF_CV);
- printf("Endereco: %s\n", funf.endereco_cv);
- printf("Modelo: %s\n", funf.modelo_cv);
- printf("Motor: %.1f\n", funf.motor_cv);
- printf("Placa: %s\n", funf.placa_cv);
- printf("Ano: %d\n", funf.ano_cv);
- printf("Cor: %s\n", funf.cor_cv);
- printf("Preco: R$%.2f\n", funf.preco_cv);
- printf("Codigo da transacao: %d\n", funf.codigo);
- achou = 1;
- }
- }
- if(!achou){
- printf("\nNao ha nota fiscal cadastradas!\n");
- }
- getchar();
- fclose(arquivo);
- }
- /*-------------------------------------------------------------------------------------------------------------*/
- /*FUNCAO PRINCIPAL*/
- int main(){
- copiaArquivo();
- int op;
- int opcao;
- FILE *arquivo;
- fopen("arqcliente.txt", "a");
- fopen("arqveiculos.txt", "a");
- fopen("arqnotafiscal.txt", "a");
- do{
- system("cls");
- printf("\t\t\tGIF Automoveis\n");
- printf("\n |---------------------------------|\n");
- printf(" | MENU |\n");
- printf(" | |\n");
- printf(" | 1. Cadastramento de Clientes |\n");
- printf(" | 2. Cadastramento de Veiculos |\n");
- printf(" | 3. Sistema de Compra e Venda |\n");
- printf(" | 0. Sair |\n");
- printf(" |---------------------------------|\n\n: ");
- scanf("%d",&opcao);
- switch (opcao){
- case 1:
- do{
- system("cls");
- printf("\t\t\tGIF Automoveis\n");
- printf("\n |---------------------------------|\n");
- printf(" | SISTEMA DE CADASTRO DE CLIENTES |\n");
- printf(" | |\n");
- printf(" | 1. Cadastra |\n");
- printf(" | 2. Remove |\n");
- printf(" | 3. Consulta |\n");
- printf(" | 4. Listar |\n");
- printf(" | 0. Voltar |\n");
- printf(" |---------------------------------|\n\n: ");
- printf("OPCAO: ");
- scanf("%d",&op);
- flush_in();
- switch(op){
- case 1:{
- cadastrar(arquivo);
- }break;
- case 2:{
- remover(arquivo);
- }break;
- case 3:{
- consultar(arquivo);
- }break;
- case 4:{
- listar(arquivo);
- }break;
- }
- //fclose(arquivo);
- }while(op!=0);
- break;
- case 2:
- do{
- system("cls");
- printf("\t\t\tGIF Automoveis\n");
- printf("\n |---------------------------------|\n");
- printf(" | SISTEMA DE CADASTRO DE VEICULOS |\n");
- printf(" | |\n");
- printf(" | 1. Cadastra |\n");
- printf(" | 2. Remove |\n");
- printf(" | 3. Consulta |\n");
- printf(" | 4. Listar |\n");
- printf(" | 0. Voltar |\n");
- printf(" |---------------------------------|\n\n: ");
- printf("OPCAO: ");
- scanf("%d",&op);
- flush_in();
- switch(op){
- case 1:{
- cadastrar_v(arquivo);
- }break;
- case 2:{
- remover_v(arquivo);
- }break;
- case 3:{
- consultar_v(arquivo);
- }break;
- case 4:{
- listar_v(arquivo);
- }break;
- }
- //fclose(arquivo);
- }while(op != 0);
- break;
- case 3:
- do{
- system("cls");
- printf("\t\t\tGIF Automoveis\n");
- printf("\n |---------------------------------|\n");
- printf(" | SISTEMA DE COMPRA E VENDA |\n");
- printf(" | |\n");
- printf(" | 1. Cadastro Compra |\n");
- printf(" | 2. Cadastro Venda |\n");
- printf(" | 3. Consulta |\n");
- printf(" | 4. Emissao |\n");
- printf(" | 5. Listar |\n");
- printf(" | 0. Voltar |\n");
- printf(" |---------------------------------|\n\n: ");
- printf("OPCAO: ");
- scanf("%d",&op);
- flush_in();
- switch(op){
- case 1:{
- cadastrar_nota(arquivo,0);
- }break;
- case 2:{
- cadastrar_nota(arquivo,1);
- }break;
- case 3:{
- consultar_nota(arquivo);
- }break;
- case 4:{
- emitir_nota(arquivo);
- }break;
- case 5:{
- listar_nota(arquivo);
- }break;
- }
- //fclose(arquivo);
- }while(op != 0);
- break;
- case 0:
- CopiaDasStructs();
- break;
- } //FIM SWITCH
- }while(opcao != 0);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement