diff --git a/Auto.cs b/Auto.cs index 0a91f35..7ff6897 100644 --- a/Auto.cs +++ b/Auto.cs @@ -2,4 +2,57 @@ namespace concessionaria; class Auto { + readonly string targa, marca, modello; + private readonly int cavalli; + private int prezzo; + private int bollo; + + public Auto(string targa, string marca, string modello, int cavalli, int prezzo) { + this.targa = targa; + this.marca = marca; + this.modello = modello; + this.cavalli = cavalli; + this.prezzo = prezzo; + } + + public void SetPrezzo(int p_prezzo) { + this.prezzo = p_prezzo; + } + public void SetBollo() { + const CAVALLI_MAX = 250; + if (cavalli > CAVALLI_MAX) { + this.bollo = (this.cavalli * 100) + ((this.cavalli - CAVALLI_MAX) * 20); + } + else { + this.bollo = this.cavalli * 100; + } + } + + public string GetTarga() { + return this.targa; + } + public string GetMarca() { + return this.marca; + } + public string GetModello() { + return this.modello; + } + public int GetCavalli() { + return this.cavalli; + } + public int GetPrezzo() { + return this.prezzo; + } + public int GetBollo() { + return this.bollo; + } + + public void StampaDatiAuto() { + Console.WriteLine($"Targa: {this.targa}"); + Console.WriteLine($"Marca: {this.marca}"); + Console.WriteLine($"Modello: {this.modello}"); + Console.WriteLine($"Cavalli: {this.Cavalli}"); + Console.WriteLine($"Prezzo: {this.prezzo}"); + Console.WriteLine($"Bollo: {this.bollo}"); + } } \ No newline at end of file diff --git a/Program.cs b/Program.cs index 3f7c85b..26128fe 100644 --- a/Program.cs +++ b/Program.cs @@ -1,9 +1,144 @@ namespace concessionaria; -class Program -{ - static void Main(string[] args) - { - Console.WriteLine("Hello, World!"); +class Program { + static void Main(string[] args) { + Console.Clear(); + int scelta, dimensione; + Auto[] listaAuto; + do { + Console.WriteLine("Inserire una scelta"); + Console.WriteLine("1. Crea concessionaria"); + Console.WriteLine("2. Stampa dati auto"); + Console.WriteLine("3. Promozione primavera"); + Console.WriteLine("0. Esci"); + Console.Write("Scelta: "): + scelta = Convert.ToInt32(Console.ReadLine()); + + switch (scelta) { + case 0: + break; + case 1: + Console.Clear(); + do { + Console.Write("Quante auto sono presenti? "); + dimensione = Convert.ToInt32(Console.ReadLine()); + if (dimensione <= 0) { + Console.WriteLine("Non è possibile considerare un numero di auto minore o uguale a zero"); + Pausa(); + } + } + while (dimensione <= 0); + + listaAuto = new Auto[dimensione]; + + for (int i = 0; i < dimensione; i++) { + Console.WriteLine($"Inserimento dati auto n. {i + 1}"); + listaAuto[i] = CreaAuto(); + } + Pausa(); + break; + case 2: + Console.Clear(); + Pausa(); + break; + case 3: + Console.Clear(); + Pausa(); + break; + default: + Console.WriteLine("Opzione non valida."); + Pausa(); + break; + } + } } -} + + static void Pausa() { + Console.WriteLine("Premere un tasto per continuare. . ."); + Console.ReadKey(); + Console.Clear(); + } + static Auto CreaAuto() { + string targa, marca, modello; + int cavalli, bollo; + double prezzo; + bool controlloTarga; + Auto auto; + + do { + Console.Write("Inserire la targa: "); + targa = Console.ReadLine(); + controlloTarga = ControlloTarga(targa) + if (!controlloTarga) { + Console.WriteLine("Targa non valida."); + Pausa(); + } + } + while (!controlloTarga); + + Console.Write("Inserire la marca: "); + marca = Console.ReadLine(); + + Console.Write("Inserire il modello: "); + modello = Console.ReadLine(); + + do { + Console.Write("Inserire i cavalli: "); + cavalli = Convert.ToInt32(Console.ReadLine()); + if (cavalli <= 0) { + Console.WriteLine("Numero di cavalli non valido."); + Pausa(); + } + } + while (cavalli <= 0); + + do { + Console.Write("Inserire il prezzo: "); + prezzo = Convert.ToDouble(Console.ReadLine()); + if (prezzo <= 0) { + Console.WriteLine("Prezzo non valido."); + Pausa(); + } + } + while (prezzo <= 0); + + auto = new Auto(targa, marca, modello, cavalli, prezzo); + auto.SetBollo(); + + return auto; + } + + static bool ControlloTarga(string targa) { + //Formato targa accettato: AB123CD + + bool ritorno = true; + const int LUNGHEZZA = 7; + + if (targa.length != LUNGHEZZA) { + ritorno = false; //la targa non è della lunghezza corretta + } + if (ritorno) { + for (int i = 0; i < 2 && ritorno; i++) { + if (!(char.IsLetter(targa[i]))) { + ritorno = false + } + } + if (ritorno) { + for (int i = 2; i < 5 && ritorno; i++) { + if (!(char.IsNumber(targa[i]))) { + ritorno = false + } + } + if (ritorno) { + for (int i = 5; i < 7 && ritorno; i++) { + if (!(char.IsLetter(targa[i]))) { + ritorno = false + } + } + } + } + } + + return ritorno; + } +} \ No newline at end of file diff --git a/obj/Debug/net9.0/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs b/obj/Debug/net9.0/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs new file mode 100644 index 0000000..9e76325 --- /dev/null +++ b/obj/Debug/net9.0/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v9.0", FrameworkDisplayName = ".NET 9.0")] diff --git a/obj/Debug/net9.0/concessionaria.AssemblyInfo.cs b/obj/Debug/net9.0/concessionaria.AssemblyInfo.cs new file mode 100644 index 0000000..08a7d1e --- /dev/null +++ b/obj/Debug/net9.0/concessionaria.AssemblyInfo.cs @@ -0,0 +1,22 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("concessionaria")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+ca4b362789dad1cbc5d9a0db3e554b0bda371265")] +[assembly: System.Reflection.AssemblyProductAttribute("concessionaria")] +[assembly: System.Reflection.AssemblyTitleAttribute("concessionaria")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// Generato dalla classe WriteCodeFragment di MSBuild. + diff --git a/obj/Debug/net9.0/concessionaria.AssemblyInfoInputs.cache b/obj/Debug/net9.0/concessionaria.AssemblyInfoInputs.cache new file mode 100644 index 0000000..2840944 --- /dev/null +++ b/obj/Debug/net9.0/concessionaria.AssemblyInfoInputs.cache @@ -0,0 +1 @@ +fecafa3580f7139cbcf70eca70c2db5701c55070a48f9eac1ef173aaa4e989a8 diff --git a/obj/Debug/net9.0/concessionaria.GeneratedMSBuildEditorConfig.editorconfig b/obj/Debug/net9.0/concessionaria.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 0000000..f8bdb13 --- /dev/null +++ b/obj/Debug/net9.0/concessionaria.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,15 @@ +is_global = true +build_property.TargetFramework = net9.0 +build_property.TargetPlatformMinVersion = +build_property.UsingMicrosoftNETSdkWeb = +build_property.ProjectTypeGuids = +build_property.InvariantGlobalization = +build_property.PlatformNeutralAssembly = +build_property.EnforceExtendedAnalyzerRules = +build_property._SupportedPlatformList = Linux,macOS,Windows +build_property.RootNamespace = concessionaria +build_property.ProjectDir = /home/Verde/git/concessionaria/ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = +build_property.EffectiveAnalysisLevelStyle = 9.0 +build_property.EnableCodeStyleSeverity = diff --git a/obj/Debug/net9.0/concessionaria.GlobalUsings.g.cs b/obj/Debug/net9.0/concessionaria.GlobalUsings.g.cs new file mode 100644 index 0000000..8578f3d --- /dev/null +++ b/obj/Debug/net9.0/concessionaria.GlobalUsings.g.cs @@ -0,0 +1,8 @@ +// +global using global::System; +global using global::System.Collections.Generic; +global using global::System.IO; +global using global::System.Linq; +global using global::System.Net.Http; +global using global::System.Threading; +global using global::System.Threading.Tasks; diff --git a/obj/Debug/net9.0/concessionaria.assets.cache b/obj/Debug/net9.0/concessionaria.assets.cache new file mode 100644 index 0000000..6c3d791 Binary files /dev/null and b/obj/Debug/net9.0/concessionaria.assets.cache differ