C# :: Aufgabe #281

4 Lösungen Lösungen öffentlich

Rabatt für Stammkunden

Anfänger - C# von DragStar - 20.03.2020 um 11:46 Uhr
Ein Kassenprogramm verlangt die Eingabe eines Betrags und fragt, ob der Kunde Stammkunde ist. Falls ja, erhält er 5% Rabatt.
Das Programm soll auf die Eingaben "j" und "n", groß und klein geschrieben, reagieren.

Lösungen:

vote_ok
von JKooP (18090 Punkte) - 23.03.2020 um 15:00 Uhr
Quellcode ausblenden C#-Code
using static System.Console;

namespace CS_Aufgabe_281_Rabatt_Stammkunden
{
    class Program
    {
        static void Main()
        {
            const double Discount = 0.05;
            double amount;
            OutputEncoding = System.Text.Encoding.Default;

            while (true)
            {
                Write("Bitte Betrag eingeben: ");
                _ = double.TryParse(ReadLine(), out amount);

                if (amount == 0)
                {
                    WriteLine("Bitte einen gültigen Betrag eingeben!\n");
                    continue;
                }
                break;
            }

            Write("Sind Sie Stammkunde (J/N)? ");

            if (ReadLine().ToUpper()[0] == 'J')
            {
                var discount = amount * Discount;
                amount -= discount;
                WriteLine($"Neuer Betrag: {amount:C} ({discount:C} Rabatt)");
            }
            else
                WriteLine($"Betrag: {amount:C}");

        }
    }
}
vote_ok
von Waldgeist (2310 Punkte) - 24.03.2020 um 16:04 Uhr
Hallo,

ich habe mich mal an eine Lösung als WPF Programm gewagt. Musste erst mal lernen wie ich in C# Checkboxen verwende.
Ich hoffe das ist OK, entspricht ja eigentlich nicht der Aufgabe...

Grüße
Peter aka waldgeist

hier der Code:

Quellcode ausblenden C#-Code
using System;
using System.Windows;

namespace Rabattberechnung
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void berechneButton_Click(object sender, RoutedEventArgs e)
        {
            double preis = Convert.ToDouble(preisbox.Text);

            if ((bool)ckeckStammkunde.IsChecked)
            {
                double rabatt = 0.05 * preis;
                double rabattpreis = 0.95 * preis;

                rabattbox.Text = "Der Kunde erhält: " + rabatt.ToString() + " Euro Rabatt";
                endpreisbox.Text = "Der Preis abzüglich Rabatt beträgt " + rabattpreis.ToString() + " Euro";
            }
            else
            {
                rabattbox.Clear();
                endpreisbox.Text = "Der Kunde erhält keinen Rabatt!";
            }
        }
    }
}



hier der XAML Code für die Oberfläche:

Quellcode ausblenden C#-Code
<Window x:Class="Rabattberechnung.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:Rabattberechnung"
        mc:Ignorable="d"
        Title="#281  Rabatt für Stammkunden" Height="450" Width="800">
    <Grid x:Name="checkStammkunde">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="0*" />
            <ColumnDefinition />
        </Grid.ColumnDefinitions>
        <TextBlock HorizontalAlignment="Left" Height="23" Margin="25,31,0,0" Text="Programm zum Berechnen von Stammkunden - Rabatt" TextWrapping="Wrap" VerticalAlignment="Top" Width="713" Grid.Column="1" />
        <TextBlock HorizontalAlignment="Left" Height="24" Margin="25,87,0,0" Text="Bitte geben Sie den regulären Preis an:" TextWrapping="Wrap" VerticalAlignment="Top" Width="221" Grid.Column="1" />
        <TextBox x:Name="preisbox" HorizontalAlignment="Left" Height="24" Margin="234,87,0,0" Text="0" TextWrapping="Wrap" VerticalAlignment="Top" Width="115" TextAlignment="Right" Grid.Column="1" />
        <TextBlock HorizontalAlignment="Left" Height="25" Margin="25,140,0,0" Text="Ist Kunde ein Stammkunde" TextWrapping="Wrap" VerticalAlignment="Top" Width="208" Grid.Column="1" />
        <CheckBox x:Name="ckeckStammkunde" Content="Ja, Stammkunde" HorizontalAlignment="Left" Height="25" Margin="234,140,0,0" VerticalAlignment="Top" Width="115" Grid.Column="1" />
        <Button x:Name="berechneButton" Content="Berechne Rabatt" HorizontalAlignment="Left" Height="51" Margin="25,184,0,0" VerticalAlignment="Top" Width="356" Grid.Column="1" Click="berechneButton_Click" />
        <TextBox x:Name="rabattbox" HorizontalAlignment="Left" Height="25" Margin="25,266,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="356" Grid.Column="1" />
        <TextBox x:Name="endpreisbox" HorizontalAlignment="Left" Height="25" Margin="25,308,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="356" Grid.Column="1" />
    </Grid>
</Window>

vote_ok
von charlyP (250 Punkte) - 25.03.2020 um 00:26 Uhr
Quellcode ausblenden C#-Code
using System;

namespace Rabatt
{
    class Program
    {
        static void Main(string[] args)
        {
            Eingabe1:
            double betrag, rabatt = 0;
            int prozent = 5;
            string eingabe, antwort = null;
            bool stammkunde = false;
            
            Console.WriteLine("Bitte Rechnungsbetrag eingeben:");
            eingabe = Console.ReadLine();
            try
            {
                betrag = double.Parse(eingabe);
            }
            catch (FormatException)
            {
                Console.WriteLine("Ungültige Eingabe. Bitte wiederholen.");
                goto Eingabe1;
            }

            if (betrag >= 0)
            {
                Eingabe2: 
                Console.WriteLine("Stammkunde? J/N");
                antwort = Console.ReadLine();

                if (antwort == "j" || antwort == "J")
                {
                    stammkunde = true;
                }
                else if (antwort == "n" || antwort == "N")
                {
                    stammkunde = false;
                }
                else
                {
                    Console.WriteLine("Ungültige Eingabe. Bitte wiederholen.");
                    goto Eingabe2;
                }

                if (stammkunde)
                {
                    rabatt = betrag * prozent / 100;
                }
                else
                {
                    rabatt = 0;
                    Console.WriteLine("Leider kein Rabatt möglich.");
                }

            }
            else
            {
                Console.WriteLine("Ungültige Eingabe. Bitte wiederholen.");
                goto Eingabe1;
            }
          
            Ausgabe:
            Console.WriteLine("Betrag: " + Math.Round(betrag, 2) + " Euro, Stammkunde: " + antwort + " , Rabatt: " + Math.Round(rabatt, 2) + " Euro");
            Console.ReadLine();
            goto Eingabe1;

        }
    }
}
vote_ok
von Spooner (340 Punkte) - 20.04.2020 um 21:46 Uhr
Quellcode ausblenden C#-Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Rabatt_für_Stammkunden
{
    class Program
    {
        static void Main(string[] args)
        {
            double bruttoBetrag;

            Eingabe:
            Console.Write("Eingabe Betrag: ");
            try
            {
                _ = double.TryParse(Console.ReadLine(), out bruttoBetrag);

                if (bruttoBetrag == 0)
                {
                    Console.WriteLine("Ungültige Eingabe");
                    Console.ReadKey();
                    Console.Clear();
                    goto Eingabe;
                }
            }
            catch (FormatException)
            {
                Console.WriteLine("Ungültige Eingabe");
                Console.ReadKey();
                Console.Clear();
                goto Eingabe;
            }

            Console.WriteLine("\nStammkunde? (j/n): ");
            string stammkunde = Console.ReadLine();

            double nettoBetrag;
            
            if(stammkunde == "j" || stammkunde == "J")
            {
                nettoBetrag = Math.Round(bruttoBetrag * 0.95, 2);
                Console.WriteLine($"\nDer Rechnungsbetrag nach Abzug von 5% beträgt: {nettoBetrag:C}");
            }
            else
            {
                nettoBetrag = bruttoBetrag;
                Console.WriteLine($"\nDer Rechnungsbetrag netto beträgt: {nettoBetrag:C}");
            }
            Console.ReadKey();
        }
    }
}