Progetto magazzino con file binari

di il
2 risposte

Progetto magazzino con file binari

Ciao a tutti, mi chiamo Gianluca, da poco mi sono affacciato alla programmazione e sto seguendo dei video tutorial su youtube per imparare a programmare in C++.Come ambiente utilizzo Microsoft Visual Studio 2019.
Ho un problema con un esercizio. Devo progettare un magazzino con l'utilizzo di file binari. Il mio problema è all'origine, ovvero nella creazione del magazzino, quindi del file binario contenente il catalogo dei prodotti. Qui sotto vi posto il codice:

#include <iostream>
#include <fstream>
#include <string>
#define pMax 1000

using namespace std;

void creaMagazzino();

struct prodotto 
{
	string nome;
	string descrizione;
	long codice=0;
	long disponibilità=0;
	long scortaMinima=0; // il minimo che deve essere venduta
	long cancellato=0;
};

int main()
{
	int scelta;
	do {
		system("CLS"); // funzione clear che ad ogni ciclo mi pulisce la console

		cout << "\tMagazzino di Gianluca \t " << endl<<endl; // \t è l'istruzione di tabulazione

		cout << "1 - Crea nuovo magazzino" << endl;
		cout << "2 - Inserisci prodotto  " << endl;
		cout << "3 - Modifica prodotto  " << endl;
		cout << "4 - Cancella prodotto  " << endl;
		cout << "5 - Visualizza magazzino  " << endl;
		cout << "6 - Esci dal programma" << endl;
		cout <<endl<< "Cosa vuoi fare?" << endl;
		cin >> scelta;

		switch (scelta) 
		{
		case 1:
			creaMagazzino();
			break;
		case 2:

			break;
		case 3:

			break;
		case 4:

			break;
		case 5:

			break;
		default:

			break;
		}
	} while (scelta<1&&scelta>6);

	cout << endl << "Grazie per avero usato il magazzino" << endl;
	system("pause");
	return 0;
}

void creaMagazzino()
{
	prodotto p;

	p.nome = "VUOTO";
	p.descrizione = "VUOTO";
	p.codice = -1;
	p.disponibilità = -1;
	p.scortaMinima = -1;

	fstream f;
	
	string nomeMagazzino;
	string estensione ="mag";

	cout << "Nome del magazzino da creare: " << endl;
	cin >> nomeMagazzino;

	string nomeFile=nomeMagazzino+"."+estensione;
	
	f.open(nomeFile, ios::out || ios::binary);

	for (long i = 0; i < pMax; i++)
	{
89		f.seekp(i * sizeof(prodotto),ios::beg);
		f.write((char*)& p, sizeof(prodotto));
	}
	f.close();
	f.clear();
	cout << endl << "File creato correttamente"<<endl;
}
Praticamente non mi crea il file binario nella cartella del progetto. Di errori Visual Studio non me ne segna, ma mi dà un avviso:

Avviso C26451 Overflow aritmetico: verrà usato l'operatore '*' su un valore a 4 byte e verrà eseguito il cast del risultato in un valore a 8 byte. Per evitare l'overflow, eseguire il cast del valore nel tipo più ampio prima di chiamare l'operatore '*' (io.2). Progetto_magazzino,

che si riferisce alla riga 89, ovvero a f.seekp(i*sizeof(prodotto),ios::beg).

Mi dice del cast, ma non ho capito esattamente dove lo devo fare.

So benissimo che è una domanda stupida, ma da ieri sto provando a trovare una soluzione e non ci sono riuscito. Qualcuno può darmi un aiuto? Grazie in anticipo dell'attenzione dell'eventuale risposta.

Gianluca

2 Risposte

  • Re: Progetto magazzino con file binari

    @Meu89: C++ e videocorsi su Youtube stanno come l'impepata di cozze con il tiramisu!

    C++ e' un linguaggio COMPLESSO ANCHE per gli adetti ai lavori.
    E' l'equivalente del camio per trasporti eccezzionali in mano ad uno che sa guidare a malapena il triciclo.

    Se lo fai per hobby, ci sono linguaggi BEN PIU' abbordabili e per nulla meno degni del C++.

    1) Python
    2) se vuoi sbizzarirti con un linguaggio abbastanza nuovo e SINTATTICAMENTE non troppo diverso dal C++, ma QUASI semplice come Python, Julia
    3) se vuoi farti del male, Haskell.

    Poi ci sarebbero i classici C#, Java, Scala, ecc. Ma per ora scartiamoli. E per questo scarta anche 2) e 3)

    Al momento Pyton e' il linguaggio che MEGLIO si adatta ad uno che vuole imparare a programmare SENZA diventare matto con le complessita' dei linguaggi piu' sofisticati, di cui il C++ e' il re
    Ma che dico il re, l'imperatore!
    Ma che dico l'imperatore, il megadominatore galattico

    E con Python ci fai MOOOOOOOLTE cose in piu' e MOOOOOOOOLTO piu' interessanti.

    Visto che non sei ancora stato rovinato , hai ancora tempo per prendere strade piu' "UMANE"


    ASSIOMA: conoscere un linguaggio di programmazione, e magari anche riuscire a scrivere qualche semplice programmino via copia/incolla, NON VUOL DIRE SAPER PROGRAMMARE.
  • Re: Progetto magazzino con file binari

    Ma perché deve scartare C#? Ha Visual Studio...

    Usa C# che ci metti un attimo. Ci sono miliardi di esempi di gestione file, sia sul supporto di Microsoft che nel forum stesso
Devi accedere o registrarti per scrivere nel forum
2 risposte