Meu professor passou um trabalho para fazer uma gestão de vendas, só que estou com algumas dificuldades,
principalmente na parte de vendas e tirar um dado específico do arquivo, minha ideia foi mover o conteúdo específico
que não quero deletar para um novo arquivo temporario, e depois apagar aquele arquivo onde tem o especifico, depois
alteraria o nome do arquivo novamente para o padrão. Vou disponibilizar o código que já escrevi,
também sou iniciante ainda, caso puder dar uma dica como melhorar é muito bem-vindo.
#include <stdio.h>
#include <stdlib.h>
struct celularCAdastro { //estrutura de cadastro celular
int codigo[50];
char modelo[50];
float valorce[50]
};
struct cliente { //cadastro cliente
char nome[70];
int cpf[70];
};
struct endereco { //cadastro endereço cliente
int numeroCasa[10];
char bairro[50];
char cidade[15];
char estado[2];
int cep[15];
int codclient[10];
};
//Declaração das funções
void CAdastro_Cliente();
void CadastrarCElular ();
void CelularemEstoque ();
void VenderCelular ();
int main()
{
int opcao;
do {
printf("\n---------------- Vendas de celulares --------------------------\n");
printf(" 1: Vender Celular\n");
printf(" 2: Celulares em estoques\n");
printf(" 3: Celular mais vendido\n");
printf(" 4: Historico de um cliente\n");
printf(" 5: Cadastrar Cliente\n");
printf(" 6: Cadastrar Celular\n");
printf(" 7: Sair\n");
printf("\n---------------------------------------------------------------\n");
printf("\nDigite o numero da opcao a realizar: ");
scanf("%d", &opcao);
switch(opcao){
case 1: //Vender Celular
VenderCelular ();
break;
case 2: //Celulares em estoques
CelularemEstoque ();
break;
case 3: //Celular mais vendidos
break;
case 4: //historico de cliente
break;
case 5: //cadastrar cliente
CAdastro_Cliente();
break;
case 6: //cadastrar celular
CadastrarCElular();
break;
case 7: //opção de saida da barra menu
printf("\nObrigado pela escolha!\n");
break;
default: //opção caso pessoa coloque um número invalido
printf("\nOpcao invalida!\n");
getch();
break;
}
}while(opcao != 7);
return 0;
}
//FUNÇÕES
//funcao para cadastro de cliente
void CAdastro_Cliente (){
FILE *cadastrocliente;
cadastrocliente=fopen("cadastrocl.txt", "ab");
char parar;
struct cliente name;
struct endereco pessoa;
if (cadastrocliente==NULL) {
printf("Arquivo com problemas!");
return 1;
} else {
do{
fflush(stdin);
printf("\nNome da pessoa: ");
gets(name.nome);
fflush(stdin);
printf("\nNumero do cpf: ");
gets(name.cpf);
printf("\n-----Informacao do endenreco----\n");
fflush(stdin);
printf("\nEstado(2 letras): ");
gets(pessoa.estado);
fflush(stdin);
printf("\nCidade: ");
gets(pessoa.cidade);
fflush(stdin);
printf("\nBairro: ");
gets(pessoa.bairro);
fflush(stdin);
printf("\nCEP: ");
gets(pessoa.cep);
fflush(stdin);
printf("\nNumero da casa: ");
gets(pessoa.numeroCasa);
srand(time(0)); // inicializa o gerador de números aleatórios com a hora atual
int random_number = rand() % 2000 + 1000; // gera um número aleatório entre 1 e 100
printf("\nCodigo do cliente gerado: %d\n", random_number);
fflush(stdin);
printf("\nDigite o codigo gerado: ");
gets(pessoa.codclient);
fwrite(&name, sizeof(name), 1, cadastrocliente);
fwrite(&pessoa, sizeof(pessoa), 1, cadastrocliente);
printf("\n------ Cadastro Cliente Realizado ------\n");
printf("\nDeseja cadastrar outro cliente (s ou n) : ");
scanf("%c", ¶r);
}while (parar=='s');
fclose(cadastrocliente);
}
}
//função para cadastrar um celular
void CadastrarCElular () {
FILE *cadastrocelular;
char parar2;
cadastrocelular=fopen("cadastrocelular.txt", "ab");
struct celularCAdastro celularCC;
if (cadastrocelular==NULL) {
printf("Arquivo com problemas!");
return 1;
} else {
do{
fflush(stdin);
printf("\nModelo do celular: ");
gets(celularCC.modelo);
fflush(stdin);
printf("\nValor do celular: ");
gets(celularCC.valorce);
fflush(stdin);
printf("\nCodigo do celular: ");
gets(celularCC.codigo);
fwrite(&celularCC, sizeof(celularCC), 1, cadastrocelular);
printf("\n------ Cadastro do Celular Realizado ------\n");
printf("\nDeseja cadastar outro celular?(s ou n) : ");
scanf("%c", ¶r2);
}while (parar2=='s');
fclose(cadastrocelular);
}
}
void CelularemEstoque (){
FILE *cadastrocelular;
struct celularCAdastro celularCC;
cadastrocelular=fopen("cadastrocelular.txt", "rb");
if (cadastrocelular==NULL) {
printf("Arquivo com problemas!");
return 1;
} else {
while(fread((&celularCC), sizeof(celularCC), 1, cadastrocelular)==1){
printf("\n------------------------------------------------");
printf("\nCelular: %s\n", celularCC.modelo);
printf("Valor: %s\n", celularCC.valorce);
printf("Codigo do celular: %s\n", celularCC.codigo);
printf("------------------------------------------------\n\n");
}
}
fclose(cadastrocelular);
getch();
}
void VenderCelular (){
FILE *cadastrocelular;
FILE *arquivoModificado;
struct celularCAdastro cadastro;
int numero;
cadastrocelular=fopen("cadastrocelular.txt", "rb");
arquivoModificado=fopen("arquivotemporario.txt", "ab");
if(cadastrocelular==NULL || arquivoModificado==NULL) {
printf("\nArquivo com problemas!\n");
return 1;
} else {
fflush(stdin);
printf("\nInforme o codigo do celular: ");
scanf("%d", &numero);
while (fread(&cadastro, sizeof (cadastro), 1, cadastrocelular));
if (strcmp(&numero, cadastro.codigo) !=0){
fwrite(&cadastro, sizeof (cadastro), 1, arquivoModificado);
}
}
fclose(cadastrocelular);
fclose(arquivoModificado);
remove("cadastrocelular.txt");
rename("arquivotemporario.txt", "cadastrocelular.txt");
printf("\nOperacao realizada!\n");
getch();
}