196 lines
8.0 KiB
C#
196 lines
8.0 KiB
C#
namespace biblioteca;
|
|
|
|
class Program {
|
|
static void Main(string[] args) {
|
|
Console.Clear();
|
|
const int MAX_LIBRI = 2;
|
|
int scelta, libroSelezionato = -1;
|
|
Libro[] biblioteca = new Libro[MAX_LIBRI];
|
|
bool oggettoEsistente, nomeEsistente, casaEditriceEsistente;
|
|
string casaEditrice, nome;
|
|
|
|
do {
|
|
Console.WriteLine("Inserire un'opzione:");
|
|
Console.WriteLine("1. Crea biblioteca");
|
|
Console.WriteLine("2. Mostra biblioteca");
|
|
Console.WriteLine("3. Mostra libro");
|
|
Console.WriteLine("4. Applica sconto");
|
|
Console.WriteLine("5. Pulisci schermo");
|
|
Console.WriteLine("0. Esci");
|
|
Console.Write("Scelta: ");
|
|
scelta = Convert.ToInt32(Console.ReadLine());
|
|
|
|
switch (scelta) {
|
|
case 0:
|
|
break;
|
|
case 1:
|
|
CreaBiblioteca(biblioteca);
|
|
Pausa();
|
|
break;
|
|
case 2:
|
|
oggettoEsistente = true;
|
|
for (int i = 0; i < biblioteca.Length && oggettoEsistente; i++) {
|
|
if (biblioteca[i] == null) {
|
|
oggettoEsistente = false;
|
|
}
|
|
}
|
|
if (!oggettoEsistente) {
|
|
Console.WriteLine("Errore: è necessario creare la biblioteca prima di mostrarla.");
|
|
}
|
|
else {
|
|
for (int i = 0; i < biblioteca.Length; i++) {
|
|
Console.WriteLine($"Libro {i + 1}:");
|
|
biblioteca[i].StampaLibro();
|
|
Console.WriteLine();
|
|
}
|
|
}
|
|
Pausa();
|
|
break;
|
|
case 3:
|
|
oggettoEsistente = true;
|
|
for (int i = 0; i < biblioteca.Length && oggettoEsistente; i++) {
|
|
if (biblioteca[i] == null) {
|
|
oggettoEsistente = false;
|
|
}
|
|
}
|
|
if (!oggettoEsistente) {
|
|
Console.WriteLine("Errore: è necessario creare la biblioteca prima di mostrare un libro.");
|
|
}
|
|
else {
|
|
do {
|
|
Console.WriteLine("Scegliere il numero di scaffale:");
|
|
for (int i = 0; i < biblioteca.Length; i++) {
|
|
Console.WriteLine($"{i}");
|
|
}
|
|
Console.Write("Scelta: ");
|
|
scelta = Convert.ToInt32(Console.ReadLine());
|
|
if (scelta < 0 || scelta > biblioteca.Length) {
|
|
Console.WriteLine("Numero di scaffale non valido.");
|
|
Pausa();
|
|
}
|
|
}
|
|
while (scelta < 0 || scelta > biblioteca.Length);
|
|
biblioteca[scelta].StampaLibro();
|
|
scelta = int.MaxValue;
|
|
}
|
|
Pausa();
|
|
break;
|
|
case 4:
|
|
oggettoEsistente = true;
|
|
for (int i = 0; i < biblioteca.Length && oggettoEsistente; i++) {
|
|
if (biblioteca[i] == null) {
|
|
oggettoEsistente = false;
|
|
}
|
|
}
|
|
if (!oggettoEsistente) {
|
|
Console.WriteLine("Errore: è necessario creare la biblioteca prima di applicare lo sconto ad un libro.");
|
|
}
|
|
else {
|
|
Console.WriteLine("Scegliere un nome:");
|
|
for (int i = 0; i < biblioteca.Length; i++) {
|
|
Console.WriteLine($"{biblioteca[i].GetNome()}");
|
|
}
|
|
Console.Write("Nome: ");
|
|
nome = Console.ReadLine();
|
|
|
|
Console.WriteLine("Scegliere una casa editrice:");
|
|
for (int i = 0; i < biblioteca.Length; i++) {
|
|
Console.WriteLine($"{biblioteca[i].GetCasaEditrice()}");
|
|
}
|
|
Console.Write("Casa editrice: ");
|
|
casaEditrice = Console.ReadLine();
|
|
|
|
nomeEsistente = false;
|
|
casaEditriceEsistente = false;
|
|
|
|
for (int i = 0; i < biblioteca.Length && !nomeEsistente && !casaEditriceEsistente; i++) {
|
|
nomeEsistente = biblioteca[i].GetNome() == nome;
|
|
casaEditriceEsistente = biblioteca[i].GetCasaEditrice() == casaEditrice;
|
|
libroSelezionato = i;
|
|
}
|
|
if (!nomeEsistente || !casaEditriceEsistente) {
|
|
Console.WriteLine($"Nessun libro di nome {nome} di casa editrice {casaEditrice} esistente.");
|
|
}
|
|
else {
|
|
biblioteca[libroSelezionato].ApplicaSconto();
|
|
Console.WriteLine("Sconto applicato.");
|
|
}
|
|
}
|
|
Pausa();
|
|
break;
|
|
case 5:
|
|
Console.Clear();
|
|
break;
|
|
default:
|
|
Console.WriteLine("Opzione non valida.");
|
|
Pausa();
|
|
break;
|
|
}
|
|
|
|
}
|
|
while (scelta != 0);
|
|
|
|
}
|
|
|
|
static void Pausa() {
|
|
Console.WriteLine("Premere un tasto per continuare. . .");
|
|
Console.ReadKey();
|
|
}
|
|
|
|
static void CreaBiblioteca(Libro[] p_biblioteca) {
|
|
string nome;
|
|
double prezzo;
|
|
int numeroScaffale;
|
|
int numeroPagine;
|
|
string casaEditrice;
|
|
|
|
for (int i = 0; i < p_biblioteca.Length; i++) {
|
|
Console.Write("Inserire il titolo del libro: ");
|
|
nome = Console.ReadLine();
|
|
|
|
do {
|
|
Console.Write("Inserire il prezzo del libro: ");
|
|
prezzo = Convert.ToDouble(Console.ReadLine());
|
|
if (prezzo <= 0) {
|
|
Console.WriteLine("Errore: il prezzo non può essere minore o uguale a zero.");
|
|
Pausa();
|
|
}
|
|
}
|
|
while (prezzo <= 0);
|
|
|
|
do {
|
|
Console.Write("Inserire il numero di pagine del libro: ");
|
|
numeroPagine = Convert.ToInt32(Console.ReadLine());
|
|
if (numeroPagine <= 0) {
|
|
Console.WriteLine("Errore: il numero di pagine non può essere minore o uguale a zero.");
|
|
Pausa();
|
|
}
|
|
}
|
|
while (numeroPagine <= 0);
|
|
|
|
Console.Write("Inserire la casa editrice: ");
|
|
casaEditrice = Console.ReadLine();
|
|
|
|
do {
|
|
Console.WriteLine("Scegliere il numero di scaffale:");
|
|
for (int j = 0; j < p_biblioteca.Length; j++) {
|
|
Console.WriteLine($"{j}");
|
|
}
|
|
Console.Write("Scelta: ");
|
|
numeroScaffale = Convert.ToInt32(Console.ReadLine());
|
|
if (numeroScaffale < 0 || numeroScaffale > p_biblioteca.Length) {
|
|
Console.WriteLine("Numero di scaffale non valido.");
|
|
Pausa();
|
|
}
|
|
if (p_biblioteca[numeroScaffale] != null) {
|
|
Console.WriteLine("Scaffale occupato, sceglierne un altro.");
|
|
Pausa();
|
|
}
|
|
}
|
|
while (numeroScaffale < 0 || numeroScaffale > p_biblioteca.Length || p_biblioteca[numeroScaffale] != null);
|
|
|
|
p_biblioteca[numeroScaffale] = new Libro(nome, prezzo, Convert.ToString(numeroScaffale), Convert.ToString(numeroPagine), casaEditrice);
|
|
}
|
|
}
|
|
}
|