Guest User

Untitled

a guest
Oct 4th, 2013
35
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. # include <stdio.h>
  2. # include <stdlib.h>
  3. # include <string.h>
  4.  
  5. typedef struct registro{
  6.     char nome[50];
  7.     char CPF[20];
  8.     int flag;
  9.     char endereco[100];
  10. }cliente;
  11.  
  12. typedef struct registro_v{
  13.     char modelo[50];
  14.     float motor;
  15.     char placa[8];
  16.     int ano;
  17.     char cor[15];
  18.     float preco;
  19.     int flag;
  20. }veiculos;
  21.  
  22. typedef struct compra_venda{
  23.     char status[10]; // COMPRA/VENDA
  24.     int codigo;
  25.     int flag;
  26.     char nome_cv[50];
  27.     char CPF_CV[15];
  28.     char endereco_cv[100];
  29.     char modelo_cv[50];
  30.     float motor_cv;
  31.     char placa_cv[8];
  32.     int ano_cv;
  33.     char cor_cv[15];
  34.     float preco_cv;
  35. }nota_fiscal;
  36. //----------------------------Codigo pra usar o malloc---------------------------------------------
  37.  
  38. typedef struct registroAuxiliar{
  39.     char nome[50];
  40.     char CPF[20];
  41.     int flag;
  42.     char endereco[100];
  43. }cliente_Auxiliar;
  44.  
  45. typedef struct registro_v_Auxiliar{
  46.     char modelo[50];
  47.     float motor;
  48.     char placa[8];
  49.     int ano;
  50.     char cor[15];
  51.     float preco;
  52.     int flag;
  53. }veiculos_Auxiliar;
  54.  
  55. typedef struct compra_venda_Auxiliar{
  56.     char status[10]; // COMPRA/VENDA
  57.     int codigo;
  58.     int flag;
  59.     char nome_cv[50];
  60.     char CPF_CV[15];
  61.     char endereco_cv[100];
  62.     char modelo_cv[50];
  63.     float motor_cv;
  64.     char placa_cv[8];
  65.     int ano_cv;
  66.     char cor_cv[15];
  67.     float preco_cv;
  68. }nota_fiscal_Auxiliar;
  69.  
  70. //-------------------------------------------------------------------------------------------------
  71. cliente func[100];
  72. veiculos funv[100];
  73. nota_fiscal funf[100];
  74. cliente_Auxiliar ClienteArquivo[100];
  75. veiculos_Auxiliar VeiculosArquivo[100];
  76. nota_fiscal_Auxiliar NotaArquivo[100];
  77. //----------------------------------------------------------------------------------------
  78. void copiaArquivo(){
  79. FILE *arquivo = fopen("arqcliente.txt", "r+");
  80. fread(&func, sizeof(cliente), 1 ,arquivo);
  81. fseek(arquivo, 0, SEEK_END);
  82. int tamanho = 0;
  83. tamanho = ftell(arquivo);
  84. fseek(arquivo, 0, SEEK_SET);
  85.  
  86. //malloc dependendo da quantidade de objetos
  87. int *ponteiro = malloc(tamanho * sizeof(ClienteArquivo));
  88. if(ponteiro == NULL){
  89.     printf("Nao possui memoria suficiente no sistema\n");
  90. }else{
  91.     ClienteArquivo.nome = func.nome;
  92.     ClienteArquivo.CPF = func.CPF;
  93.     ClienteArquivo.endereco = func.endereco;
  94.     ClienteArquivo.flag = func.flag;
  95. }
  96.  
  97. fclose(arquivo);
  98. //--------------------------------------------------------------------
  99. FILE *ArquivoVeiculos = fopen("arqveiculos.txt", "r+");
  100. fread(&funv, sizeof(veiculos), 1 , ArquivoVeiculos);
  101.  
  102. fseek(ArquivoVeiculos, 0, SEEK_END);
  103. int tamanhoVeiculos = 0;
  104. tamanhoVeiculos = ftell(ArquivoVeiculos);
  105. fseek(ArquivoVeiculos, 0, SEEK_SET);
  106. int *ponteiroVeiculos = malloc(tamanhoVeiculos*sizeof(VeiculosArquivo));
  107. if(ponteiroVeiculos == NULL){
  108.     printf("Memoria insuficiente no sistema\n");
  109. }else{
  110.     VeiculosArquivo.modelo = funv.modelo;
  111.     VeiculosArquivo.motor = funv.motor;
  112.     VeiculosArquivo.placa = funv.placa;
  113.     VeiculosArquivo.ano = funv.ano;
  114.     VeiculosArquivo.cor = funv.cor;
  115.     VeiculosArquivo.preco = funv.preco;
  116.     VeiculosArquivo.flag = funv.flag;
  117. }
  118. fclose(ArquivoVeiculos);
  119. //------------------------------------------------------------------
  120. FILE *ArquivoNota = fopen("arqnotafiscal.txt", "r+");
  121. fread(&funf, sizeof(nota_fiscal),1,ArquivoNota);
  122. fseek(ArquivoNota, 0, SEEK_END);
  123. int tamanhoNota = 0;
  124. tamanhoNota = ftell(ArquivoNota);
  125. fseek(ArquivoNota, 0, SEEK_SET);
  126. int *ponteiroNota = malloc(tamanhoNota*sizeof(NotaArquivo));
  127. if(ponteiroNota == NULL){
  128.     printf("Memoria insuficiente no sistema\n");
  129. }else{
  130.     NotaArquivo.status = funf.status;
  131.     NotaArquivo.codigo = funf.codigo;
  132.     NotaArquivo.flag = funf.flag;
  133.     NotaArquivo.nome_cv = funf.nome_cv;
  134.     NotaArquivo.CPF_CV = funf.CPF_CV;
  135.     NotaArquivo.endereco_cv = funf.endereco_cv;
  136.     NotaArquivo.cor_cv = funf.cor_cv;
  137.     NotaArquivo.modelo_cv = funf.modelo_cv;
  138.     NotaArquivo.motor_cv = funf.motor_cv;
  139.     NotaArquivo.placa_cv = funf.placa_cv;
  140.     NotaArquivo.ano_cv = funf.ano_cv;
  141.     NotaArquivo.preco_cv = funf.preco_cv;
  142. }
  143. fclose(ArquivoNota);
  144. //----------------------------------------------------------------------
  145. }
  146. void CopiaDasStructs(){
  147. FILE *arquivo = fopen("arqcliente.txt", "w+");
  148. fwrite(&ClienteArquivo, sizeof(ClienteArquivo), 1, arquivo);
  149. fclose(arquivo);
  150.  
  151.  
  152. FILE *ArquivoVeiculos = fopen("arqveiculos.txt", "w+");
  153. fwrite(&VeiculosArquivo, sizeof(VeiculosArquivo),1, ArquivoVeiculos);
  154. fclose(ArquivoVeiculos);
  155.  
  156. FILE *ArquivoNota = fopen("arqnotafiscal.txt", "w+");
  157. fwrite(&NotaArquivo, sizeof(NotaArquivo), 1, ArquivoNota);
  158. fclose(ArquivoNota);
  159.  
  160.  
  161.  
  162.  
  163. }
  164.  
  165. /*FUNCAO PRA A LIMPEZA DO BUFFER DO TECLADO*/
  166.  
  167. void flush_in()
  168. {
  169.     int ch;
  170.     while( (ch = fgetc(stdin)) != EOF && ch != '\n' ){}
  171. }
  172.  
  173. /*---------------------cliente------------------------------------------------------------------------------------------------*/
  174.  
  175. /*FUNCAO CADASTRAR cliente*/
  176.  
  177. void cadastrar(FILE *arquivo){
  178.     cliente func, aux;
  179.     long tamanho;
  180.  
  181.  
  182.     if((arquivo = fopen("arqcliente.txt", "r+")) == NULL){
  183.         printf("Erro na Database do Sistema! \nContate o Administrador!\n");
  184.         sleep(500000);
  185.         system("cls");
  186.         exit(0);
  187.     }
  188.     printf("\nNome: ");
  189.     gets(func.nome);
  190.     printf("CPF: ");
  191.     gets(func.CPF);
  192.     printf("Endereco: ");
  193.     gets(func.endereco);
  194.     fseek(arquivo, 0, SEEK_END);
  195.     tamanho = ftell(arquivo);
  196.     fseek(arquivo, 0, SEEK_SET);
  197.     while(ftell(arquivo) != tamanho){
  198.         fread(&aux, sizeof(cliente), 1, arquivo);
  199.         if((strcmp(aux.CPF,func.CPF)== 0)&&(aux.flag == 1)){
  200.             strcpy(aux.CPF,"erro");
  201.             break;
  202.         }
  203.     }
  204.     if(strcmp(aux.CPF,"erro")==0){
  205.         printf("\nCodigo existente! O sistema sera finalizado!\n");
  206.         system("pause");
  207.         exit(0);
  208.     }
  209.     else{
  210.         if(aux.flag == 0){
  211.             fseek(arquivo, -sizeof(cliente), SEEK_CUR);
  212.         }
  213.         else{
  214.             fseek(arquivo, 0, SEEK_END);
  215.         }
  216.         func.flag = 1;
  217.         fwrite(&func, sizeof(cliente), 1, arquivo);
  218.     }
  219.     fclose(arquivo);
  220. }
  221.  
  222.  
  223.  
  224. /*FUNCAO REMOVER cliente*/
  225.  
  226. void remover(FILE *arquivo){
  227.     cliente func;
  228.     char numero[15];
  229.     int achou;
  230.     char op[1];
  231.     long tamanho;
  232.  
  233.     if((arquivo = fopen("arqcliente.txt", "r+")) == NULL){
  234.         printf("Erro na Database do Sistema! \nContate o Administrador!\n");
  235.         sleep(500000);
  236.         system("cls");
  237.         exit(0);
  238.     }
  239.     printf("\nCPF: ");
  240.     gets(numero);
  241.     fseek(arquivo, 0, SEEK_END);
  242.     tamanho = ftell(arquivo);
  243.     fseek(arquivo, 0, SEEK_SET);
  244.     achou = 0;
  245.     while((ftell(arquivo) != tamanho) && (!achou)){
  246.         fread(&func, sizeof(cliente), 1, arquivo);
  247.         if((strcmp(numero,func.CPF)== 0) && (func.flag == 1))
  248.             achou = 1;
  249.         }
  250.         if(achou == 1){
  251.             printf("\n|Cliente|\n\n");
  252.             printf("Nome: %s\n", func.nome);
  253.             printf("CPF: %s\n", func.CPF);
  254.             printf("Endereco: %s\n\n", func.endereco);
  255.             printf("Remover cliente? (S/N): ");
  256.             scanf("%s",&op);
  257.             //flush_in();
  258.             if(strcmp(op,"S")==0){
  259.                 func.flag = 0;
  260.                 fseek(arquivo,-2 -sizeof(cliente), SEEK_CUR);
  261.                 fwrite(&func, sizeof(cliente), 1, arquivo);
  262.             }
  263.         }
  264.     fclose(arquivo);
  265. }
  266.  
  267. /*FUNCAO CONSULTAR CLIENTES*/
  268.  
  269. void consultar(FILE *arquivo){
  270. cliente func;
  271. char numero[15];
  272. int achou;
  273. long tamanho;
  274.  
  275.     if((arquivo = fopen("arqcliente.txt", "a+")) == NULL){
  276.         printf("Erro na Database do Sistema! \nContate o Administrador!\n");
  277.         sleep(500000);
  278.         system("clear");
  279.         exit(0);
  280.     }
  281.     printf("\nCPF: ");
  282.     gets(numero);
  283.     //rewind(arquivo);
  284.     fseek(arquivo, 0, SEEK_END);
  285.     tamanho = ftell(arquivo);
  286.     fseek(arquivo, 0, SEEK_SET);
  287.     achou = 0;
  288.     while((ftell(arquivo) != tamanho) && (!achou)){
  289.         fread(&func, sizeof(cliente), 1, arquivo);
  290.         if((strcmp(func.CPF,numero) == 0) && (func.flag == 1)){
  291.             printf("\n|Cliente|\n\n");
  292.             printf("Nome: %s\n", func.nome);
  293.             printf("CPF: %s\n", func.CPF);
  294.             printf("Endereco: %s\n", func.endereco);
  295.             achou = 1;
  296.         }
  297.     }
  298.     if(!achou){
  299.         printf("\ncliente nao encontado! \n");
  300.     }
  301.     getchar();
  302.     fclose(arquivo);
  303. }
  304.  
  305.  
  306. /*FUNCAO LISTAR cliente CADASTRADOS*/
  307.  
  308. void listar(FILE *arquivo){
  309. cliente func;
  310. long tamanho;
  311. int achou;
  312.  
  313.     if((arquivo = fopen("arqcliente.txt", "a+")) == NULL){
  314.         printf("Erro na Database do Sistema! \nContate o Administrador!\n");
  315.         sleep(500000);
  316.         system("cls");
  317.         exit(0);
  318.     }
  319.     fseek(arquivo, 0, SEEK_END);
  320.     tamanho = ftell(arquivo);
  321.     fseek(arquivo, 0, SEEK_SET);
  322.     achou = 0;
  323.     while(ftell(arquivo) != tamanho){
  324.         fread(&func, sizeof(cliente), 1, arquivo);
  325.         if(func.flag == 1){
  326.             printf("\n|Cliente|\n\n");
  327.             printf("Nome: %s\n", func.nome);
  328.             printf("CPF: %s\n", func.CPF);
  329.             printf("Endereco: %s\n\n", func.endereco);
  330.             achou = 1;
  331.         }
  332.     }
  333.     if(!achou){
  334.         printf("\nNao ha cliente cadastrados!\n");
  335.     }
  336.     getchar();
  337.     fclose(arquivo);
  338. }
  339. /*--------------------------------------------------------------------------------------------------------------------*/
  340.  
  341.  
  342. /*----------VEICULOS--------------------------------------------------------------------------------------------------*/
  343.  
  344. /*FUNCAO CADASTRAR VEICULOS*/
  345.  
  346. void cadastrar_v(FILE *arquivo){
  347. veiculos func, aux;
  348. int verificar=0;
  349. long tamanho;
  350.  
  351.     if((arquivo = fopen("arqveiculos.txt", "r+")) == NULL){
  352.         printf("Erro na Database do Sistema! \nContate o Administrador!\n");
  353.         sleep(500000);
  354.         system("cls");
  355.         exit(0);
  356.     }
  357.     printf("\nModelo: ");
  358.     gets(func.modelo);
  359.     printf("Motorizacao: ");
  360.     scanf("%f",&func.motor);
  361.     getchar();
  362.     printf("Cor: ");
  363.     gets(func.cor);
  364.     printf("Placa: ");
  365.     scanf("%s",&func.placa);
  366.     printf("Ano: ");
  367.     scanf("%d",&func.ano);
  368.     printf("Valor: ");
  369.     scanf("%f",&func.preco);
  370.     fseek(arquivo, 0, SEEK_END);
  371.     tamanho = ftell(arquivo);
  372.     fseek(arquivo, 0, SEEK_SET);
  373.     while(ftell(arquivo) != tamanho){
  374.         fread(&aux, sizeof(veiculos), 1, arquivo);
  375.         if((strcmp(aux.placa,func.placa) == 0) && (aux.flag == 1)){
  376.             verificar = -1;
  377.             break;
  378.         }
  379.     }
  380.     if(verificar == -1){
  381.         printf("\nCodigo existente! Cadastre Novamente! \n");
  382.         getchar();
  383.     }
  384.     else{
  385.         if(aux.flag == 0){
  386.             fseek(arquivo, -sizeof(veiculos), SEEK_CUR);
  387.         }
  388.         else{
  389.             fseek(arquivo, 0, SEEK_END);
  390.         }
  391.         func.flag = 1;
  392.         fwrite(&func, sizeof(veiculos), 1, arquivo);
  393.     }
  394.     getchar();
  395.     fclose(arquivo);
  396. }
  397.  
  398.  
  399.  
  400. /*FUNCAO REMOVER VEICULOS*/
  401.  
  402. void remover_v(FILE *arquivo){
  403. veiculos func;
  404. int achou;
  405. char busca[8];
  406. char op[1];
  407. long tamanho;
  408.  
  409.     if((arquivo = fopen("arqveiculos.txt", "r+")) == NULL){
  410.         printf("Erro na Database do Sistema! \nContate o Administrador!\n");
  411.         sleep(500000);
  412.         system("cls");
  413.         exit(0);
  414.     }
  415.     printf("\nPlaca: ");
  416.     scanf("%s",&busca);
  417.     tamanho = ftell(arquivo);
  418.     fseek(arquivo, 0, SEEK_SET);
  419.     achou = 0;
  420.     while((ftell(arquivo) != tamanho) && (!achou)){
  421.         fread(&func, sizeof(veiculos), 1, arquivo);
  422.         if(((strcmp(busca,func.placa))==0) && (func.flag == 1))
  423.             achou = 1;
  424.     }
  425.     if(achou == 1){
  426.         printf("\n|Veiculo|\n\n");
  427.         printf("Modelo: %s\n", func.modelo);
  428.         printf("Motorizacao: %.1f\t\t", func.motor);
  429.         printf("Cor: %s\n",func.cor);
  430.         printf("Placa: %ld\n", func.placa);
  431.         printf("Ano: %d\n", func.ano);
  432.         printf("Preco: R$%.2f\n\n",func.preco);
  433.         printf("Remover veiculo? (S/N): ");
  434.         scanf("%s", op);
  435.         //flush_in();
  436.         if(toupper(op[0]) == 'S'){
  437.             func.flag = 0;
  438.             fseek(arquivo,-2 -sizeof(veiculos), SEEK_CUR);
  439.             fwrite(&func, sizeof(veiculos), 1, arquivo);
  440.         }
  441.     }
  442.     fclose(arquivo);
  443. }
  444.  
  445.  
  446.  
  447. /*FUNCAO CONSULTAR VEICULOS*/
  448.  
  449. void consultar_v(FILE *arquivo){  /*BUSCA PELO MODELO*/
  450. veiculos func;
  451. int achou;
  452. char busca_m[20];
  453. long tamanho;
  454.  
  455.     if((arquivo = fopen("arqveiculos.txt", "a+")) == NULL){
  456.         printf("Erro na Database do Sistema! \nContate o Administrador!\n");
  457.         sleep(500000);
  458.         system("clear");
  459.         exit(0);
  460.     }
  461.     printf("\nModelo: ");
  462.     gets(busca_m);
  463.     //rewind(arquivo);
  464.     fseek(arquivo, 0, SEEK_END);
  465.     tamanho = ftell(arquivo);
  466.     fseek(arquivo, 0, SEEK_SET);
  467.     achou = 0;
  468.     while(ftell(arquivo) != tamanho){
  469.         fread(&func, sizeof(veiculos), 1, arquivo);
  470.         if((strcmp(func.modelo,busca_m)==0) && (func.flag == 1)){
  471.             printf("\n|Veiculo|\n\n");
  472.             printf("Modelo: %s\n", func.modelo);
  473.             printf("Motorizacao: %.1f\t\t", func.motor);
  474.             printf("Cor: %s\n", func.cor);
  475.             printf("Placa: %s\n", func.placa);
  476.             printf("Ano: %d\n", func.ano);
  477.             printf("Preco: R$%.2f\n\n", func.preco);
  478.             achou = 1;
  479.         }
  480.     }
  481.     if(!achou){
  482.         printf("\n nao encontado! \n");
  483.         getchar();
  484.     }
  485.     getchar();
  486.     fclose(arquivo);
  487. }
  488.  
  489.  
  490. /*FUNCAO LISTAR VEICULOS CADASTRADOS*/
  491.  
  492. void listar_v(FILE *arquivo){
  493. veiculos func;
  494. long tamanho;
  495. int achou;
  496.  
  497.     if((arquivo = fopen("arqveiculos.txt", "a+")) == NULL){
  498.         printf("Erro na Database do Sistema! \nContate o Administrador!\n");
  499.         sleep(500000);
  500.         system("cls");
  501.         exit(0);
  502.     }
  503.     fseek(arquivo, 0, SEEK_END);
  504.     tamanho = ftell(arquivo);
  505.     fseek(arquivo, 0, SEEK_SET);
  506.     achou = 0;
  507.     while(ftell(arquivo) != tamanho){
  508.         fread(&func, sizeof(veiculos), 1, arquivo);
  509.         if(func.flag == 1){
  510.             printf("\n|Veiculo|\n\n");
  511.             printf("Modelo: %s\n", func.modelo);
  512.             printf("Motorizacao: %.1f\t\t", func.motor);
  513.             printf("Cor: %s\n", func.cor);
  514.             printf("Placa: %s\n", func.placa);
  515.             printf("Ano: %d\n", func.ano);
  516.             printf("Preco: R$%.2f\n\n", func.preco);
  517.             achou = 1;
  518.         }
  519.     }
  520.     if(!achou){
  521.         printf("\nNao ha veiculos cadastrados!\n");
  522.     }
  523.     getchar();
  524.     fclose(arquivo);
  525. }
  526.  
  527. /*------------------------------------------------------------------------------------------------------------------------*/
  528.  
  529. /*----------NOTA FISCAL--------------------------------------------------------------------------------------------------*/
  530.  
  531. /*FUNCAO CADASTRAR NOTA FISCAL*/
  532.  
  533. void cadastrar_nota(FILE *arquivo, int status)
  534. {
  535. nota_fiscal funf, aux;
  536. cliente func, aux1;
  537. veiculos funv, aux2;
  538. long tamanho;
  539. int verificar=0;
  540. char op[2];
  541.  
  542.     if((arquivo = fopen("arqnotafiscal.txt", "r+")) == NULL)
  543.     {
  544.         printf("Erro na Database do Sistema! \nContate o Administrador!\n");
  545.         sleep(500000);
  546.         system("cls");
  547.         exit(0);
  548.     }
  549.     fclose(arquivo);
  550.     tamanho = ftell(arquivo);
  551.     printf("O cliente possui cadastro no Sistema (S/N): ");
  552.     gets(op);
  553.     toupper(op);
  554.  
  555.     if(strcmp(op,"N")== 0)  //CLIENTE NAO POSSUI CADASTRO, CADASTRE-O (NAO USAR VOID PARA NAO PERDER AS VARIAVEIS AO FIM DO PROCEDIMENTO);
  556.     {
  557.         if((arquivo = fopen("arqcliente.txt", "r+")) == NULL)
  558.         {
  559.             printf("Erro na Database do Sistema! \nContate o Administrador!\n");
  560.             sleep(500000);
  561.             system("cls");
  562.             exit(0);
  563.         }
  564.         printf("\nNome: ");
  565.         gets(func.nome);
  566.         printf("CPF: ");
  567.         gets(func.CPF);
  568.         printf("Endereco: ");
  569.         gets(func.endereco);
  570.         fseek(arquivo, 0, SEEK_SET);
  571.         while(!feof(arquivo) && (aux1.flag != 0))
  572.         {
  573.             fread(&aux1, sizeof(cliente), 1, arquivo);
  574.             if((aux1.CPF == func.CPF) && (aux1.flag == 1))
  575.             {
  576.                 strcpy(aux1.CPF,"erro");
  577.                 break;
  578.             }
  579.         }
  580.         if(aux1.CPF == "erro")
  581.         {
  582.             printf("\nCodigo existente! Cadastre Novamente! \n");
  583.             getchar();
  584.         }
  585.         else
  586.         {
  587.             if(aux1.flag == 0)
  588.             {
  589.                 fseek(arquivo, -sizeof(cliente), SEEK_CUR);
  590.             }
  591.             else
  592.             {
  593.                 fseek(arquivo, 0, SEEK_END);
  594.             }
  595.             func.flag = 1;
  596.             fwrite(&func, sizeof(cliente), 1, arquivo);
  597.         }
  598.         //armazenar dados do cliente
  599.         fclose(arquivo);
  600.         strcpy(funf.nome_cv,func.nome);
  601.         strcpy(funf.CPF_CV,func.CPF);
  602.         strcpy(funf.endereco_cv,func.endereco);
  603.         //armazenados
  604.     }
  605.  
  606.     else  // CLIENTE POSSUI CADASTRO, MESMO PROCEDIMENTO DO CONSULTAR E/OU REMOVER CLIENTE,
  607.     {
  608.         // POREM AO INVES DE REMOVER OU  CONSULTAR, USARA OS PARAMETROS PARA O ARMAZENAMENTO
  609.         char numero[20];
  610.         int achou;
  611.         char op2[1];
  612.  
  613.         if((arquivo = fopen("arqcliente.txt", "r+")) == NULL)
  614.         {
  615.             printf("Erro na Database do Sistema! \nContate o Administrador!\n");
  616.             sleep(500000);
  617.             system("cls");
  618.             exit(0);
  619.         }
  620.         printf("\nCPF: ");
  621.         gets(numero);
  622.         fseek(arquivo, 0, SEEK_SET);
  623.         achou = 0;
  624.         while(!achou)
  625.         {
  626.             fread(&func, sizeof(cliente), 1, arquivo);
  627.             if((strcmp(numero,func.CPF)== 0) && (func.flag == 1))
  628.                 achou = 1;
  629.         }
  630.         if(achou == 1)
  631.         {
  632.             printf("\n|Cliente|\n\n");
  633.             printf("Nome: %s\n", func.nome);
  634.             printf("CPF: %s\n", func.CPF);
  635.             printf("Endereco: %s\n\n", func.endereco);
  636.             printf("Este eh o cliente? (S/N): ");
  637.             scanf("%s",&op2);
  638.             //flush_in();
  639.             if(toupper(op2[0]) == 'S')
  640.             {
  641.                 strcpy(funf.nome_cv,func.nome);
  642.                 strcpy(funf.CPF_CV,func.CPF);
  643.                 strcpy(funf.endereco_cv,func.endereco);
  644.             }
  645.         }
  646.         else
  647.         {
  648.             printf("CPF nao encontrado! Erro durante o processo, o prograa sera finalizado!\n\n");
  649.             system("pause");
  650.             exit(0);
  651.         }
  652.         fclose(arquivo);
  653.  
  654.     }
  655.     //CONSULTAR VEICULO NO ESTOQUE (CONSULTA PARA VENDA E CADASTRO PARA COMPRA)
  656.  
  657.     if(status == 0)
  658.     {
  659.         int verificar=0;
  660.         if((arquivo = fopen("arqveiculos.txt", "r+")) == NULL)
  661.         {
  662.             printf("Erro na Database do Sistema! \nContate o Administrador!\n");
  663.             sleep(500000);
  664.             system("cls");
  665.             exit(0);
  666.         }
  667.         getchar();
  668.         printf("Modelo: ");
  669.         gets(funv.modelo);
  670.         printf("Motorizacao: ");
  671.         scanf("%f",&funv.motor);
  672.         getchar();
  673.         printf("Cor: ");
  674.         gets(funv.cor);
  675.         printf("Placa: ");
  676.         scanf("%s",&funv.placa);
  677.         printf("Ano: ");
  678.         scanf("%d",&funv.ano);
  679.         printf("Valor: ");
  680.         scanf("%f",&funv.preco);
  681.         fseek(arquivo, 0, SEEK_SET);
  682.         while(!feof(arquivo) && (aux2.flag != 0))
  683.         {
  684.             fread(&aux2, sizeof(veiculos), 1, arquivo);
  685.             if((aux2.placa == funv.placa) && (aux2.flag == 1))
  686.             {
  687.                 verificar = -1;
  688.                 break;
  689.             }
  690.         }
  691.         if(verificar == -1)
  692.         {
  693.             printf("\nCodigo existente! Cadastre Novamente! \n");
  694.             getchar();
  695.         }
  696.         else
  697.         {
  698.             if(aux2.flag == 0)
  699.             {
  700.                 fseek(arquivo, -sizeof(veiculos), SEEK_CUR);
  701.             }
  702.             else
  703.             {
  704.                 fseek(arquivo, 0, SEEK_END);
  705.             }
  706.             funv.flag = 1;
  707.             //CADASTRO COM SUCESSO, PASSAR OS DADOS DO CADASTRO PARA A STRUCT DA NOTA FISCAL
  708.             fwrite(&funv, sizeof(veiculos), 1, arquivo);
  709.         }
  710.         fclose(arquivo);
  711.  
  712.         fopen("arqnotafiscal.txt", "a+");
  713.         printf("Codigo da transacao: ");
  714.         scanf("%d",&funf.codigo);
  715.         strcpy(funf.modelo_cv,funv.modelo);
  716.  
  717.         strcpy(funf.status,"Compra");
  718.  
  719.         funf.ano_cv = funv.ano;
  720.         funf.flag = 1;
  721.         strcpy(funf.cor_cv,funv.cor);
  722.         funf.motor_cv = funv.motor;
  723.         strcpy(funf.placa_cv,funv.placa);
  724.         funf.preco_cv = funv.preco;
  725.         fwrite(&funf, sizeof(nota_fiscal), 1, arquivo);
  726.         fclose(arquivo);
  727.     }
  728.  
  729.  
  730.  
  731.     else if(status == 1)  //SE FOR VENDER, VAMOS RETIRAR DO NOSSO ESTOQUE E PEGAREMOS OS PARAMETROS PRA NOTA FISCAL
  732.     {
  733.         int achou2;
  734.         char busca[8];
  735.         char op3[1];
  736.  
  737.         if((arquivo = fopen("arqveiculos.txt", "r+")) == NULL)
  738.         {
  739.             printf("Erro na Database do Sistema! \nContate o Administrador!\n");
  740.             sleep(500000);
  741.             system("cls");
  742.             exit(0);
  743.         }
  744.         int achou;
  745.         printf("\nPlaca: ");
  746.         scanf("%s",&busca);
  747.         fseek(arquivo, 0, SEEK_SET);
  748.         achou = 0;
  749.         while((!feof(arquivo)) && (!achou))
  750.         {
  751.             fread(&funv, sizeof(veiculos), 1, arquivo);
  752.             if(((strcmp(busca,funv.placa))==0) && (func.flag == 1))
  753.                 achou = 1;
  754.         }
  755.         if(achou == 1)
  756.         {
  757.             printf("\n|Veiculo|\n\n");
  758.             printf("Modelo: %s\n", funv.modelo);
  759.             printf("Motorizacao: %.1f\t\t", funv.motor);
  760.             printf("Cor: %s\n",funv.cor);
  761.             printf("Placa: %ld\n", funv.placa);
  762.             printf("Ano: %d\n", funv.ano);
  763.             printf("Preco: R$%.2f\n\n",funv.preco);
  764.             printf("Veiculo a ser vendido? (S/N): ");
  765.             scanf("%s", op);
  766. //flush_in();
  767.             if(strcmp(toupper(op),"S") == 0)
  768.             {
  769.                 funv.flag = 0;
  770.                 fseek(arquivo, -sizeof(veiculos), SEEK_CUR);
  771.                 fwrite(&funv, sizeof(veiculos), 1, arquivo);
  772.             }
  773.         }
  774.         fclose(arquivo);
  775.         fopen("arqnotafiscal.txt", "a+");
  776.         strcpy(funf.modelo_cv,funv.modelo);
  777.         strcpy(funf.status,"Venda");
  778.         printf("Codigo da transacao: ");
  779.         scanf("%d",&funf.codigo);
  780.         funf.ano_cv = funv.ano;
  781.         funf.flag = 1;
  782.         strcpy(funf.cor_cv,funv.cor);
  783.         funf.motor_cv = funv.motor;
  784.         strcpy(funf.placa_cv,funv.placa);
  785.         funf.preco_cv = funv.preco;
  786.         fwrite(&funf, sizeof(nota_fiscal), 1, arquivo);
  787.         fclose(arquivo);
  788.     }
  789. }
  790.  
  791.  
  792.  
  793.  
  794.  
  795. /*FUNCAO CONSULTAR NOTA FISCAL*/
  796.  
  797. void consultar_nota(FILE *arquivo){  /*BUSCA PELO CODIGO DA TRANSAÇÃO*/
  798. nota_fiscal func;
  799. int achou;
  800. int busca_cod;
  801. long tamanho;
  802.  
  803.     if((arquivo = fopen("arqnotafiscal.txt", "a+")) == NULL){
  804.         printf("Erro na Database do Sistema! \nContate o Administrador!\n");
  805.         sleep(500000);
  806.         system("clear");
  807.         exit(0);
  808.     }
  809.     printf("\nCodigo da transacao: ");
  810.     scanf("%d",&busca_cod);
  811.     //rewind(arquivo);
  812.     fseek(arquivo, 0, SEEK_END);
  813.     tamanho = ftell(arquivo);
  814.     fseek(arquivo, 0, SEEK_SET);
  815.     achou = 0;
  816.     while((ftell(arquivo) != tamanho) && (!achou)){
  817.         fread(&func, sizeof(nota_fiscal), 1, arquivo);
  818.         if((busca_cod == func.codigo) && (func.flag == 1)){
  819.             printf("\n|   Nota fiscal de %s   |\n",func.status);
  820.             printf("\t CPF: %d\n",func.CPF_CV);
  821.             printf("\tNome do cliente:  %s\n",func.nome_cv);
  822.             printf("\tEndereco: %s\n\n",func.endereco_cv);
  823.             printf("\tModelo do veiculo: %s\n",func.modelo_cv);
  824.             printf("\tMotorizacao: %.1f \tCor: %s\n",func.motor_cv,func.cor_cv);
  825.             printf("\tPlaca: %s \tAno: %d\n",func.placa_cv, func.ano_cv);
  826.             printf("\tPreco: R$%.2f\n\n",func.preco_cv);
  827.             achou = 1;
  828.             getchar();
  829.         }
  830.     }
  831.     if(!achou){
  832.         printf("\n nao encontado! \n");
  833.         getchar();
  834.     }
  835.     getchar();
  836.     fclose(arquivo);
  837. }
  838.  
  839. /*FUNCAO EMIÇÃO DE NOTA FISCAL*/
  840.  
  841. void emitir_nota(FILE *arquivo){
  842.  nota_fiscal func;
  843.  
  844. int achou;
  845. int busca_cod;
  846. long tamanho;
  847.  
  848.     if((arquivo = fopen("arqnotafiscal.txt", "a+")) == NULL){
  849.         printf("Erro na Database do Sistema! \nContate o Administrador!\n");
  850.         sleep(500000);
  851.         system("clear");
  852.         exit(0);
  853.     }
  854.     printf("\nCodigo da transacao: ");
  855.     scanf("%d",&busca_cod);
  856.     //rewind(arquivo);
  857.     fseek(arquivo, 0, SEEK_END);
  858.     tamanho = ftell(arquivo);
  859.     fseek(arquivo, 0, SEEK_SET);
  860.     achou = 0;
  861.     while((ftell(arquivo) != tamanho) && (!achou)){
  862.         fread(&func, sizeof(nota_fiscal), 1, arquivo);
  863.         if((busca_cod == func.codigo) && (func.flag == 1)){
  864.             printf("\n|   Nota fiscal de %s   |\n",func.status);
  865.             printf("\t CPF: %d\n",func.CPF_CV);
  866.             printf("\tNome do cliente:  %s\n",func.nome_cv);
  867.             printf("\tEndereco: %s\n\n",func.endereco_cv);
  868.             printf("\tModelo do veiculo: %s\n",func.modelo_cv);
  869.             printf("\tMotorizacao: %.1f \tCor: %s\n",func.motor_cv,func.cor_cv);
  870.             printf("\tPlaca: %s \tAno: %d\n",func.placa_cv, func.ano_cv);
  871.             printf("\tPreco: R$%.2f\n\n",func.preco_cv);
  872.             achou = 1;
  873.             char opcaoimp[1];
  874.             printf("Esta eh a nota desejada para a impressao? (S/N): ");
  875.             gets(opcaoimp);
  876.             if(strcmp(opcaoimp,"N")== 0){
  877.                 printf("Nota encontrada nao condiz com a nota em desejo do cliente\n o programa sera finalizado!");
  878.                 system("pause");
  879.                 exit(0);
  880.             }
  881.             getchar();
  882.         }
  883.     }
  884.     if(!achou){
  885.         printf("\n nao encontado! \n");
  886.         getchar();
  887.     }
  888.     fclose(arquivo);
  889.  
  890.     char nome_arq[30]="nota_cod_";
  891.     char nome_arq2[10];
  892.     itoa(busca_cod,nome_arq2,10);
  893.     strcat(nome_arq,nome_arq2);
  894.     strcat(nome_arq,".txt");
  895.  
  896.     fopen(nome_arq, "w");
  897.     fprintf(arquivo,"         Nota Fiscal de %s         \n",func.status);
  898.     fprintf(arquivo,"\n Nome do cliente: %s \n",func.nome_cv);
  899.     fprintf(arquivo," CPF: %d \n Endereco: %s \n",func.CPF_CV,func.endereco_cv);
  900.     fprintf(arquivo,"\n Modelo: %s\n", func.modelo_cv);
  901.     fprintf(arquivo," Motor: %.2f \t Cor: %s \n",func.motor_cv,func.cor_cv);
  902.     fprintf(arquivo," Placa: %s \t Ano: %d\n",func.placa_cv, func.ano_cv);
  903.     fprintf(arquivo," Valor: %.2f",func.preco_cv);
  904.     fclose(arquivo);
  905.  
  906.     system("pause");
  907.  
  908. }
  909.  
  910.  
  911. /*FUNCAO LISTAR NOTAS FISCAIS CADASTRADAS*/
  912. void listar_nota(FILE *arquivo){
  913. nota_fiscal funf;
  914. int codigo_compra;
  915. long tamanho;
  916. int achou;
  917.  
  918.     if((arquivo = fopen("arqnotafiscal.txt", "a+")) == NULL){
  919.         printf("Erro na Database do Sistema! \nContate o Administrador!\n");
  920.         sleep(500000);
  921.         system("cls");
  922.         exit(0);
  923.     }
  924.     fseek(arquivo, 0, SEEK_END);
  925.     tamanho = ftell(arquivo);
  926.     fseek(arquivo, 0, SEEK_SET);
  927.     achou = 0;
  928.     while(ftell(arquivo) != tamanho){
  929.         fread(&funf, sizeof(nota_fiscal), 1, arquivo);
  930.         if(funf.flag == 1){
  931.             printf("\n|Nota Fiscal %s|\n\n",funf.status);
  932.             printf("Nome: %s\n", funf.nome_cv);
  933.             printf("CPF: %d\n", funf.CPF_CV);
  934.             printf("Endereco: %s\n", funf.endereco_cv);
  935.             printf("Modelo: %s\n", funf.modelo_cv);
  936.             printf("Motor: %.1f\n", funf.motor_cv);
  937.             printf("Placa: %s\n", funf.placa_cv);
  938.             printf("Ano: %d\n", funf.ano_cv);
  939.             printf("Cor: %s\n", funf.cor_cv);
  940.             printf("Preco: R$%.2f\n", funf.preco_cv);
  941.             printf("Codigo da transacao: %d\n", funf.codigo);
  942.             achou = 1;
  943.         }
  944.     }
  945.     if(!achou){
  946.         printf("\nNao ha nota fiscal cadastradas!\n");
  947.     }
  948.     getchar();
  949.     fclose(arquivo);
  950. }
  951.  
  952. /*-------------------------------------------------------------------------------------------------------------*/
  953.  
  954.  
  955. /*FUNCAO PRINCIPAL*/
  956.  
  957. int main(){
  958. copiaArquivo();
  959. int op;
  960. int opcao;
  961. FILE *arquivo;
  962.  
  963. fopen("arqcliente.txt", "a");
  964. fopen("arqveiculos.txt", "a");
  965. fopen("arqnotafiscal.txt", "a");
  966.  
  967.     do{
  968.         system("cls");
  969.         printf("\t\t\tGIF Automoveis\n");
  970.         printf("\n |---------------------------------|\n");
  971.         printf(" |              MENU               |\n");
  972.         printf(" |                                 |\n");
  973.         printf(" | 1. Cadastramento de Clientes    |\n");
  974.         printf(" | 2. Cadastramento de Veiculos    |\n");
  975.         printf(" | 3. Sistema de Compra e Venda    |\n");
  976.         printf(" | 0. Sair                         |\n");
  977.         printf(" |---------------------------------|\n\n: ");
  978.         scanf("%d",&opcao);
  979.  
  980.         switch (opcao){
  981.             case 1:
  982.                 do{
  983.                     system("cls");
  984.                     printf("\t\t\tGIF Automoveis\n");
  985.                     printf("\n |---------------------------------|\n");
  986.                     printf(" | SISTEMA DE CADASTRO DE CLIENTES |\n");
  987.                     printf(" |                                 |\n");
  988.                     printf(" | 1. Cadastra                     |\n");
  989.                     printf(" | 2. Remove                       |\n");
  990.                     printf(" | 3. Consulta                     |\n");
  991.                     printf(" | 4. Listar                       |\n");
  992.                     printf(" | 0. Voltar                       |\n");
  993.                     printf(" |---------------------------------|\n\n: ");
  994.                     printf("OPCAO: ");
  995.                     scanf("%d",&op);
  996.                     flush_in();
  997.                     switch(op){
  998.                         case 1:{
  999.                             cadastrar(arquivo);
  1000.                         }break;
  1001.  
  1002.                         case 2:{
  1003.                             remover(arquivo);
  1004.                         }break;
  1005.  
  1006.                         case 3:{
  1007.                             consultar(arquivo);
  1008.                         }break;
  1009.  
  1010.                         case 4:{
  1011.                             listar(arquivo);
  1012.                         }break;
  1013.                     }
  1014.                     //fclose(arquivo);
  1015.                 }while(op!=0);
  1016.             break;
  1017.  
  1018.             case 2:
  1019.                 do{
  1020.                     system("cls");
  1021.                     printf("\t\t\tGIF Automoveis\n");
  1022.                     printf("\n |---------------------------------|\n");
  1023.                     printf(" | SISTEMA DE CADASTRO DE VEICULOS |\n");
  1024.                     printf(" |                                 |\n");
  1025.                     printf(" | 1. Cadastra                     |\n");
  1026.                     printf(" | 2. Remove                       |\n");
  1027.                     printf(" | 3. Consulta                     |\n");
  1028.                     printf(" | 4. Listar                       |\n");
  1029.                     printf(" | 0. Voltar                       |\n");
  1030.                     printf(" |---------------------------------|\n\n: ");
  1031.                     printf("OPCAO: ");
  1032.                     scanf("%d",&op);
  1033.                     flush_in();
  1034.                     switch(op){
  1035.                         case 1:{
  1036.                             cadastrar_v(arquivo);
  1037.                         }break;
  1038.  
  1039.                         case 2:{
  1040.                             remover_v(arquivo);
  1041.                         }break;
  1042.  
  1043.                         case 3:{
  1044.                             consultar_v(arquivo);
  1045.                         }break;
  1046.  
  1047.                         case 4:{
  1048.                             listar_v(arquivo);
  1049.                         }break;
  1050.  
  1051.                     }
  1052.                     //fclose(arquivo);
  1053.                 }while(op != 0);
  1054.             break;
  1055.  
  1056.             case 3:
  1057.                 do{
  1058.                     system("cls");
  1059.                     printf("\t\t\tGIF Automoveis\n");
  1060.                     printf("\n |---------------------------------|\n");
  1061.                     printf(" |    SISTEMA DE COMPRA E VENDA    |\n");
  1062.                     printf(" |                                 |\n");
  1063.                     printf(" | 1. Cadastro Compra              |\n");
  1064.                     printf(" | 2. Cadastro Venda               |\n");
  1065.                     printf(" | 3. Consulta                     |\n");
  1066.                     printf(" | 4. Emissao                      |\n");
  1067.                     printf(" | 5. Listar                       |\n");
  1068.                     printf(" | 0. Voltar                       |\n");
  1069.                     printf(" |---------------------------------|\n\n: ");
  1070.                     printf("OPCAO: ");
  1071.                     scanf("%d",&op);
  1072.                     flush_in();
  1073.                     switch(op){
  1074.                         case 1:{
  1075.                             cadastrar_nota(arquivo,0);
  1076.                         }break;
  1077.  
  1078.                         case 2:{
  1079.                             cadastrar_nota(arquivo,1);
  1080.                         }break;
  1081.  
  1082.                         case 3:{
  1083.                             consultar_nota(arquivo);
  1084.                         }break;
  1085.  
  1086.                         case 4:{
  1087.                             emitir_nota(arquivo);
  1088.                         }break;
  1089.  
  1090.                         case 5:{
  1091.                             listar_nota(arquivo);
  1092.                         }break;
  1093.  
  1094.                     }
  1095.                     //fclose(arquivo);
  1096.                 }while(op != 0);
  1097.             break;
  1098.             case 0:
  1099.                 CopiaDasStructs();
  1100.             break;
  1101.  
  1102.         }                   //FIM SWITCH
  1103.     }while(opcao != 0);
  1104.  
  1105. return 0;
  1106. }
RAW Paste Data