printf("INSIRA O CODIGO DO FORNECEDOR:\n");
fflush(stdin);
gets(XYZ);
iXYZ = VerifForn(arq, arquivo,atoi(XYZ));
while(iXYZ==1){
printf("==já CRIADO==\n");
printf("INSIRA O CODIGO DO FORNECEDOR: ");
gets(XYZ);
iXYZ = VerifForn(arq, arquivo,XYZ);
fflush(stdin);
}
sXYZ.cod = atoi(XYZ);
printf("INSIRA O NOME DO FORNECEDOR: \n");
gets(sXYZ.fornecedor);
fflush(stdin);
sXYZ.val_forn=0;
fseek(arq,0,SEEK_END);
fwrite(&sXYZ, sizeof(struct loja), 1, arq);
}
else{
struct Comp_forn sXYZ;
printf("INSIRA O CODIGO DO FORNECEDOR: \n");
fflush(stdin);
gets(XYZ);
iXYZ = VerifForn(arq, arquivo,XYZ);
while(iXYZ==0){
printf("==já CRIADO==\n");
printf("INSIRA O CODIGO DO FORNECEDOR:\n");
fflush(stdin);
gets(XYZ);
iXYZ = VerifForn(arq, arquivo,XYZ);
}
sXYZ.cod=atoi(XYZ);
fflush(stdin);
printf("INSIRA O CODIGO DO PRODUTO: \n");
gets(XYZ);
sXYZ.cod_prod = atoi(XYZ);
fflush(stdin);
printf("INSIRA O NOME DO PRODUTO: \n");
gets(sXYZ.nome_prod);
fflush(stdin);
printf("INSIRA O preço DO PRODUTO:\n");
scanf("%.2f", &sXYZ.val_unit);
fflush(stdin);
printf("INSIRA A QUANTIDADE COMPRADA DO PRODUTO: \n");
scanf("%i", &sXYZ.quantidade);
fflush(stdin);
printf("NOVO NOME DO PRODUTO:\n");
fflush(stdin);
scanf("%s", &insertdados.nome_prod);
printf("NOVO VALOR (und):\n");
fflush(stdin);
scanf("%s", &insertdados.val_unit);
printf("NOVA QUANTIDADE DE COMPRA:\n");
fflush(stdin);
scanf("%s", &insertdados.quantidade);
Pergunta
chrisbremm
Ao Inserir a mercadoria, programa acusa que já existe. Não estou achando o problema, alguém consegue?
// Christiano Bremm - 37301
#include <ctype.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
struct loja
{
int cod;
char fornecedor[20];
float val_forn;
};
struct Comp_forn
{
int cod;
int cod_prod;
char nome_prod[20];
float val_unit;
int quantidade;
};
int VerifForn(FILE *arq, char arquivo[100],int cod);
void inserir (FILE *arq, char arquivo[100],int alt);
void verificarF(FILE *arq,char arquivo[100]);
void consultar (FILE *arq, char arquivo[100], int alt);
void apagar(FILE *arq, char arquivo[100], int alt);
void alterar(FILE *arq, char arquivo[100], int alt);
int main()
{ int A;
int B;
char C;
char fornecedor_arq[100] = "fornecedores.txt";
char compra_arq[100] = "compras.txt";
struct loja fornec;
struct Comp_forn compras;
FILE *arquivo_fornecedor, *arquivo_compras;
verificarF(arquivo_fornecedor, fornecedor_arq);
verificarF(arquivo_compras, compra_arq);
do{
system("cls");
printf("=======LOJA DE CHOCOLATE======= \n");
printf("(1) - INSERIR INFORMACOES\n");
printf("(2) - MODIFICAR INFORMACOES\n");
printf("(3) - CONSULTAR INFORMACOES\n");
printf("(4) - APAGAR INFORMACOES \n");
printf("(0) - SAIR\n\n");
printf("OPCAO DESEJADA : ");
fflush(stdin);
C=tolower(getchar());
system("cls");
switch (C) {
case 49:
printf("==INSERIR==\n");
printf("1-FORNECEDOR \n2-MERCADORIAS\n3-SAIR\nOPCAO: ");
scanf("%i",&A);
while(A==1 || A==2){
if (A==1)
inserir(arquivo_fornecedor, fornecedor_arq,A);
else
inserir(arquivo_compras, compra_arq,A);
system("cls");
printf("==INSERIR==\n");
printf("1-FORNECEDOR \n2-MERCADORIAS\n3-SAIR\nOPCAO: ");
scanf("%i",&A);
}
break;
case 51:
printf("==CONSULTAR==\n");
printf("1-FORNECEDOR \n2-MERCADORIAS\n3-SAIR\nOPCAO: ");
scanf("%d",&A);
while(A==1 || A==2){
if (A == 1)
consultar(arquivo_fornecedor, fornecedor_arq,A);
else
consultar(arquivo_compras, compra_arq,A);
system("cls");
printf("==CONSULTAR==\n");
printf("1-FORNECEDOR \n2-MERCADORIAS\n3-SAIR\nOPCAO: ");
scanf("%d",&A);
}
break;
case 50:
printf("==MODIFICAR==\n");
printf("1-FORNECEDOR \n2-MERCADORIAS\n3-SAIR\nOPCAO: ");
scanf("%d",&A);
while(A==1 || A==2){
if (A == 1)
alterar(arquivo_fornecedor, fornecedor_arq,A);
else
alterar(arquivo_compras, compra_arq,A);
system("cls");
printf("==MODIFICAR==\n");
printf("1-FORNECEDOR \n2-MERCADORIAS\n3-SAIR\nOPCAO: ");
scanf("%d",&A);
}
break;
case 52:
printf("==APAGAR==\n");
printf("1-FORNECEDOR \n2-MERCADORIAS\n3-SAIR\nOPCAO: ");
scanf("%d",&A);
while(A==1 || A==2){
if (A == 1)
APAGAR(arquivo_fornecedor, fornecedor_arq,A);
else
APAGAR(arquivo_compras, compra_arq,A);
system("cls");
printf("==APAGAR==\n");
printf("1-FORNECEDOR \n2-MERCADORIAS\n3-SAIR\nOPCAO: ");
scanf("%d",&A);
}
break;
case 48:
exit(1);
default:
printf("==OPCAO INVALIDA==\n");
getch();
break;
}
} while (C != 48);
return 0;
}
void verificarF(FILE *arq, char arquivo[100]){
arq = fopen(arquivo, "rb+");
if(arq == NULL){
arq = fopen(arquivo,"wb+");
if(arq == NULL){
printf("==ARQUIVO COM PROBLEMA NA CRIACAO OU ABERTURA==\n");
exit(1);
}
}
}
void inserir(FILE *arq, char arquivo[100],int alt)
{
arq = fopen(arquivo, "rb+");
char XYZ[25];
int iXYZ;
if (alt == 1){
struct loja sXYZ;
printf("INSIRA O CODIGO DO FORNECEDOR:\n");
fflush(stdin);
gets(XYZ);
iXYZ = VerifForn(arq, arquivo,atoi(XYZ));
while(iXYZ==1){
printf("==já CRIADO==\n");
printf("INSIRA O CODIGO DO FORNECEDOR: ");
gets(XYZ);
iXYZ = VerifForn(arq, arquivo,XYZ);
fflush(stdin);
}
sXYZ.cod = atoi(XYZ);
printf("INSIRA O NOME DO FORNECEDOR: \n");
gets(sXYZ.fornecedor);
fflush(stdin);
sXYZ.val_forn=0;
fseek(arq,0,SEEK_END);
fwrite(&sXYZ, sizeof(struct loja), 1, arq);
}
else{
struct Comp_forn sXYZ;
printf("INSIRA O CODIGO DO FORNECEDOR: \n");
fflush(stdin);
gets(XYZ);
iXYZ = VerifForn(arq, arquivo,XYZ);
while(iXYZ==0){
printf("==já CRIADO==\n");
printf("INSIRA O CODIGO DO FORNECEDOR:\n");
fflush(stdin);
gets(XYZ);
iXYZ = VerifForn(arq, arquivo,XYZ);
}
sXYZ.cod=atoi(XYZ);
fflush(stdin);
printf("INSIRA O CODIGO DO PRODUTO: \n");
gets(XYZ);
sXYZ.cod_prod = atoi(XYZ);
fflush(stdin);
printf("INSIRA O NOME DO PRODUTO: \n");
gets(sXYZ.nome_prod);
fflush(stdin);
printf("INSIRA O preço DO PRODUTO:\n");
scanf("%.2f", &sXYZ.val_unit);
fflush(stdin);
printf("INSIRA A QUANTIDADE COMPRADA DO PRODUTO: \n");
scanf("%i", &sXYZ.quantidade);
fflush(stdin);
fseek(arq,0,SEEK_END);
fwrite(&sXYZ,sizeof(struct Comp_forn),1, arq);
}
fclose(arq);
printf("REGISTRO EXECUTADO! PRESSIONE ENTER PARA PROSSEGUIR\n");
getch();
system("cls");
}
void consultar (FILE *arq, char arquivo[100], int alt)
{
if (alt == 1){
struct loja fornecedor;
int cod, ok = 0;
char XYZ[25];
fflush(stdin);
arq = fopen(arquivo, "rb+");
printf("INSIRA O CODIGO DO FORNECEDOR\n");
fflush(stdin);
gets(XYZ);
cod = atoi(XYZ);
rewind(arq);
while(!feof(arq) && ok==0){
fread(&fornecedor, sizeof(struct loja), 1, arq);
if(fornecedor.cod == cod) {
printf("NOME DO FORNECEDOR: %s\n", fornecedor.fornecedor);
ok = 1;
}
}
if (ok == 0){
printf("NADA ENCONTRADO!\n");
}
} else {
struct Comp_forn compras;
int cod, ok = 0;
char XYZ[25];
fflush(stdin);
arq = fopen(arquivo, "rb+");
printf("INFORME O CODIGO DO PRODUTO: \n");
fflush(stdin);
gets(XYZ);
cod = atoi(XYZ);
rewind(arq);
while(!feof(arq) && ok==0){
fread(&compras, sizeof(struct Comp_forn), 1, arq);
if(compras.cod_prod == cod) {
printf("CODIGO DO FORNECEDOR: %i \n", compras.cod);
printf("CODIGO DO PRODUTO: %i \n", compras.cod_prod);
printf("NOME DO PRODUTO: %s \n", compras.nome_prod);
printf("QUANTIDADE COMPRADA: %i \n", compras.quantidade);
printf("VALOR (und): %.2f \n", compras.val_unit);
ok = 1;
}
}
if (ok == 0){
printf("NADA ENCONTRADO\n");
}
}
fclose(arq);
printf("PRESSIONE ENTER\n");
getch();
}
void APAGAR(FILE *arq, char arquivo[100], int alt)
{
if (alt == 1){
struct loja fornecedor;
int cod, ok = 0, stop = -1;
char XYZ[25];
fflush(stdin);
arq = fopen(arquivo, "rb+");
printf("INFORME O CODIGO DO FORNECEDOR: \n");
fflush(stdin);
gets(XYZ);
cod = atoi(XYZ);
rewind(arq);
while(!feof(arq) && ok == 0){
stop++;
fread(&fornecedor, sizeof(struct loja), 1, arq);
if(fornecedor.cod == cod) {
printf("NOME DO FORNECEDOR: %s \n", fornecedor.fornecedor);
ok = 1;
}
}
if (ok != 0){
int escolha;
printf("DESEJA APAGAR FORNECEDOR? %s (SIM = 1, não = 0)?", fornecedor.fornecedor);
fflush(stdin);
scanf("%i", &escolha);
if (escolha == 1){
fornecedor.cod = 999;
fseek(arq, sizeof(struct loja) *stop, SEEK_SET);
fwrite(&fornecedor,sizeof(struct loja),1, arq);
printf("==REGISTRO APAGADO==\n");
}
} else {
printf("==NADA ENCONTRADO==\n");
}
} else {
struct Comp_forn compras;
int cod, ok = 0, stop = -1;
char XYZ[25];
fflush(stdin);
arq = fopen(arquivo, "rb+");
printf("INFORME O CODIGO DO PRODUTO:\n");
fflush(stdin);
gets(XYZ);
cod = atoi(XYZ);
rewind(arq);
while(!feof(arq) && ok==0){
stop++;
fread(&compras, sizeof(struct Comp_forn), 1, arq);
if(compras.cod_prod == cod) {
ok = 1;
}
}
if (ok != 0){
int escolha;
printf("APAGAR PRODUTO? %s (SIM = 1, não = 0)?", compras.nome_prod);
fflush(stdin);
scanf("%i", &escolha);
if (escolha == 1){
compras.cod_prod = 999;
compras.cod = 999;
fseek(arq, sizeof(struct Comp_forn) *stop, SEEK_SET);
fwrite(&compras,sizeof(struct Comp_forn),1, arq);
printf("==REGISTRO EXCLUIDO==\n");
}
} else {
printf("==NADA ENCONTRADO==\n");
}
}
fclose(arq);
printf("TECLE ENTER\n");
getch();
}
void alterar(FILE *arq, char arquivo[100], int alt)
{
if (alt == 1){
struct loja fornecedor;
int cod, ok = 0, stop = -1;
char XYZ[25];
fflush(stdin);
arq = fopen(arquivo, "rb+");
printf("INFORME O CODIGO DO FORNECEDOR: \n");
fflush(stdin);
gets(XYZ);
cod = atoi(XYZ);
rewind(arq);
while(!feof(arq) && ok==0){
stop++;
fread(&fornecedor, sizeof(struct loja), 1, arq);
if(fornecedor.cod == cod) {
printf("NOME DO FORNECEDOR: %s \n", fornecedor.fornecedor);
ok = 1;
}
}
if (ok != 0){
struct loja insertdados;
insertdados.cod = fornecedor.cod;
insertdados.val_forn = fornecedor.val_forn;
printf("INSIRA NOVO NOME: \n");
fflush(stdin);
scanf("%s", &insertdados.fornecedor);
fseek(arq, sizeof(struct loja) *stop, SEEK_SET);
fwrite(&insertdados, sizeof(struct loja),1, arq);
printf("==INFORMACOES ALTERADAS==\n");
} else {
printf("==NADA ENCONTRADO==\n");
}
} else {
struct Comp_forn compras;
int cod, ok = 0, stop = -1;
char XYZ[25];
fflush(stdin);
arq = fopen(arquivo, "rb+");
printf("INSIRA O CODIGO DO PRODUTO:\n");
fflush(stdin);
gets(XYZ);
cod = atoi(XYZ);
rewind(arq);
while(!feof(arq) && ok==0){
stop++;
fread(&compras, sizeof(struct Comp_forn), 1, arq);
if(compras.cod_prod == cod) {
ok = 1;
}
}
if (ok != 0){
struct Comp_forn insertdados;
insertdados.cod = compras.cod;
insertdados.cod_prod = compras.cod_prod;
printf("NOVO NOME DO PRODUTO:\n");
fflush(stdin);
scanf("%s", &insertdados.nome_prod);
printf("NOVO VALOR (und):\n");
fflush(stdin);
scanf("%s", &insertdados.val_unit);
printf("NOVA QUANTIDADE DE COMPRA:\n");
fflush(stdin);
scanf("%s", &insertdados.quantidade);
fseek(arq, sizeof(struct Comp_forn) *stop, SEEK_SET);
fwrite(&insertdados, sizeof(struct Comp_forn),1, arq);
printf("==INFORMACOES ALTERADAS==\n");
} else {
printf("==NADA ENCONTRADO==\n");
}
}
fclose(arq);
printf("==PRESSIONE ENTER==\n");
getch();
}
struct loja fornecedor;
int VerifForn(FILE *arq, char arquivo[100],int cod){
int ok = 0;
rewind(arq);
while(!feof(arq) && ok==0){
fread(&fornecedor, sizeof(struct loja), 1, arq);
if(fornecedor.cod == cod) {
ok = 1;
}
}
return(ok);
}
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.