175 lines
7.3 KiB
C#
175 lines
7.3 KiB
C#
using System.Reflection;
|
|
|
|
namespace dispenser_sapone;
|
|
|
|
class Program {
|
|
static void Main(string[] args) {
|
|
Console.Clear();
|
|
double quantitàErogata, quantitàContenuta, capienza, quantitàRimasta, quantitàRiempimento;
|
|
int scelta, input, i = 0;
|
|
Dispenser[] dispensers;
|
|
bool oggettoEsistente;
|
|
(double, bool) ritornoRiempimento;
|
|
Dispenser elementoRiempimento;
|
|
|
|
Console.Write("Quanti dispenser considerare? ");
|
|
input = Convert.ToInt32(Console.ReadLine());
|
|
dispensers = new Dispenser[input];
|
|
|
|
do {
|
|
Console.WriteLine("Inserire un'opzione:");
|
|
Console.WriteLine("1. Crea dispenser standard");
|
|
Console.WriteLine("2. Crea dispenser custom");
|
|
Console.WriteLine("3. Mostra dispenser");
|
|
Console.WriteLine("4. Erogazione");
|
|
Console.WriteLine("5. Riempimento");
|
|
Console.WriteLine("0. Esci");
|
|
Console.Write("Scelta: ");
|
|
scelta = Convert.ToInt32(Console.ReadLine());
|
|
|
|
switch (scelta) {
|
|
case 0:
|
|
break;
|
|
case 1:
|
|
Console.Clear();
|
|
if (i > dispensers.Length - 1) {
|
|
Console.WriteLine($"Errore: non si possono creare più di {dispensers.Length} dispensers.");
|
|
}
|
|
else {
|
|
dispensers[i] = new Dispenser();
|
|
i++;
|
|
Console.WriteLine("Dispenser standard creato.");
|
|
}
|
|
Pausa();
|
|
break;
|
|
case 2:
|
|
Console.Clear();
|
|
if (i > dispensers.Length - 1) {
|
|
Console.WriteLine($"Errore: non si possono creare più di {dispensers.Length} dispensers.");
|
|
}
|
|
else {
|
|
do {
|
|
Console.Write("Inserire la capienza del dispenser: ");
|
|
capienza = Convert.ToDouble(Console.ReadLine());
|
|
if (capienza <= 0) {
|
|
Console.WriteLine("Errore: la capienza del dispenser non può essere minore o uguale a zero.");
|
|
}
|
|
}
|
|
while (capienza <= 0);
|
|
|
|
do {
|
|
Console.Write("Inserire la quantità erogata dal dispenser: ");
|
|
quantitàErogata = Convert.ToDouble(Console.ReadLine());
|
|
if (quantitàErogata <= 0) {
|
|
Console.WriteLine("Errore: la quantità erogata dal dispenser non può essere minore o uguale a zero.");
|
|
}
|
|
}
|
|
while (quantitàErogata <= 0);
|
|
|
|
do {
|
|
Console.Write("Inserire la quantità contenuta dal dispenser: ");
|
|
quantitàContenuta = Convert.ToDouble(Console.ReadLine());
|
|
if (quantitàContenuta <= 0) {
|
|
Console.WriteLine("Errore: la quantità contenuta dal dispenser non può essere minore o uguale a zero.");
|
|
}
|
|
}
|
|
while (quantitàContenuta <= 0);
|
|
dispensers[i] = new Dispenser(quantitàErogata, quantitàContenuta, capienza);
|
|
i++;
|
|
}
|
|
Pausa();
|
|
break;
|
|
|
|
case 3:
|
|
Console.Clear();
|
|
oggettoEsistente = true;
|
|
for (int j = 0; j < dispensers.Length && oggettoEsistente; j++) {
|
|
if (dispensers[j] == null) {
|
|
oggettoEsistente = false;
|
|
}
|
|
}
|
|
if (!oggettoEsistente) {
|
|
Console.WriteLine("Errore: è necessario creare *tutti* i dispenser prima di mostrarli.");
|
|
}
|
|
else {
|
|
for (int j = 0; j < dispensers.Length; j++) {
|
|
Console.WriteLine($"Dispenser {j + 1}:");
|
|
dispensers[j].StampaDispenser();
|
|
Console.WriteLine();
|
|
}
|
|
}
|
|
Pausa();
|
|
break;
|
|
|
|
case 4:
|
|
Console.Clear();
|
|
quantitàRimasta = SelezionaDispenser(dispensers).Erogazione();
|
|
if (quantitàRimasta == 0) {
|
|
Console.WriteLine("Il dispenser è vuoto.");
|
|
}
|
|
else {
|
|
Console.WriteLine($"Quantità rimasta: {quantitàRimasta}");
|
|
}
|
|
Console.WriteLine("Erogazione effettuata");
|
|
Console.WriteLine();
|
|
Pausa();
|
|
break;
|
|
case 5:
|
|
Console.Clear();
|
|
do {
|
|
Console.Write("Inserire la quantità per riempire il dispenser: ");
|
|
quantitàRiempimento = Convert.ToDouble(Console.ReadLine());
|
|
if (quantitàRiempimento <= 0) {
|
|
Console.WriteLine("Errore: la quantità per riempire il dispenser non può essere minore o uguale a zero.");
|
|
}
|
|
}
|
|
while (quantitàRiempimento <= 0);
|
|
elementoRiempimento = SelezionaDispenser(dispensers);
|
|
ritornoRiempimento = elementoRiempimento.Riempimento(quantitàRiempimento);
|
|
if (ritornoRiempimento.Item2 == true) {
|
|
Console.WriteLine("Il dispenser è pieno.");
|
|
Console.WriteLine($"Sono avanzati {ritornoRiempimento.Item1}ml di sapone");
|
|
}
|
|
else {
|
|
Console.WriteLine($"Quantità corrente: {elementoRiempimento.GetQuantitàContenuta()}");
|
|
}
|
|
Console.WriteLine("Riempimento effettuato.");
|
|
Pausa();
|
|
break;
|
|
|
|
default:
|
|
Console.WriteLine("Opzione non valida.");
|
|
Pausa();
|
|
break;
|
|
}
|
|
|
|
}
|
|
while (scelta != 0);
|
|
}
|
|
static void Pausa() {
|
|
Console.WriteLine("Premere un tasto per continuare. . .");
|
|
Console.ReadKey();
|
|
Console.Clear();
|
|
}
|
|
|
|
static Dispenser SelezionaDispenser(Dispenser[] p_dispensers) {
|
|
int scelta;
|
|
do {
|
|
Console.WriteLine("Quale dispenser selezionare?");
|
|
for (int i = 0; i < p_dispensers.Length; i++) {
|
|
Console.WriteLine($"{i}. Dispenser {i + 1}");
|
|
}
|
|
Console.Write("Scelta: ");
|
|
scelta = Convert.ToInt32(Console.ReadLine());
|
|
if (scelta < 0 || scelta >= p_dispensers.Length) {
|
|
Console.WriteLine("Errore: il dispenser selezionato non esiste.");
|
|
Pausa();
|
|
}
|
|
}
|
|
while (scelta < 0 || scelta >= p_dispensers.Length);
|
|
|
|
return p_dispensers[scelta];
|
|
|
|
}
|
|
}
|