C# :: Aufgabe #206
4 Lösungen

Kilometerrechner mit Erstattungsbetrag
Anfänger - C#
von syneex
- 15.05.2018 um 16:30 Uhr
Guten Tag,
die heutige Aufgabe ist:
einen "Kilometerrechner" zu programmieren, der Die Differenz zwischen Anfangs-, und Endstand eines Tachos ausgeben kann und pro Kilometer dem Fahrer einen gewissen Betrag erstattet.
Design:
Wie im Anhang beigefügt sollen Sie ein Windows Forms Programm erstellen, welches jeweils einem numericupdown Element für den Anfangsstand und den Enstand eines Tachos besitzt. Sie können sich an dem im Screenshot gezeigten Design orientieren.
Funktion:
Im numericupdown1 soll der Anfangsstand und im numericupdown2 der Endstand eingetragen werden. Drückt man auf den Button "Berechnen", bekommt man den Erstattungsbetrag für die gesamte Strecke heraus (fester Satz liegt für diese Aufgabe bei 0.39 Euro pro Kilometer). Drückt man auf "Kilometer anzeigen", werden die gefahrenen Kilometer angezeigt (Die gefahrenen Kilometer zwischen Anfangs-, und Endstand).
Zum Probieren:
Sie könnten versuchen den Erstattungsbetrag pro gefahrenen Kilometer ebenfalls in die Form einzubauen und die Berechnung dann mit diesem eingegebenen Betrag durchführen
Viel Spaß und Viel Erfolg :)
PS: Sorry für die schlechte Qualität meines Screenshots :(
die heutige Aufgabe ist:
einen "Kilometerrechner" zu programmieren, der Die Differenz zwischen Anfangs-, und Endstand eines Tachos ausgeben kann und pro Kilometer dem Fahrer einen gewissen Betrag erstattet.
Design:
Wie im Anhang beigefügt sollen Sie ein Windows Forms Programm erstellen, welches jeweils einem numericupdown Element für den Anfangsstand und den Enstand eines Tachos besitzt. Sie können sich an dem im Screenshot gezeigten Design orientieren.
Funktion:
Im numericupdown1 soll der Anfangsstand und im numericupdown2 der Endstand eingetragen werden. Drückt man auf den Button "Berechnen", bekommt man den Erstattungsbetrag für die gesamte Strecke heraus (fester Satz liegt für diese Aufgabe bei 0.39 Euro pro Kilometer). Drückt man auf "Kilometer anzeigen", werden die gefahrenen Kilometer angezeigt (Die gefahrenen Kilometer zwischen Anfangs-, und Endstand).
Zum Probieren:
Sie könnten versuchen den Erstattungsbetrag pro gefahrenen Kilometer ebenfalls in die Form einzubauen und die Berechnung dann mit diesem eingegebenen Betrag durchführen
Viel Spaß und Viel Erfolg :)
PS: Sorry für die schlechte Qualität meines Screenshots :(
Lösungen:

public partial class Form1 : Form { public Form1() { InitializeComponent(); nud_StartKm.Maximum = 1000000; nud_FinishKm.Maximum = 1000000; nud_Cent.Maximum = 1000000; } //Button zur Berechnung des Erstattungsbetrages private void btn_calc_Money_Click(object sender, EventArgs e) { //Ermitteln der Differenz des Kilometerstandes decimal diff = nud_FinishKm.Value - nud_StartKm.Value; //Berechnen der Erstatteten € decimal result = diff * (nud_Cent.Value / 100); lbl_result.Text = "Du bekommst insgesamt " + result.ToString() + "€ erstattet."; } //Button zur Berechnung der Differenz der Kilometerstände private void btn_calc_km_Click(object sender, EventArgs e) { //Ermitteln der Differenz des Kilometerstandes decimal diff = nud_FinishKm.Value - nud_StartKm.Value; lbl_result.Text = "Du bist insgesamt " + diff.ToString() + " Kilometer gefahren."; } }
Für die Windows Form siehe Bild.
Die Controls:

private System.Windows.Forms.Label label1; private System.Windows.Forms.Label label2; private System.Windows.Forms.Label label3; private System.Windows.Forms.NumericUpDown nud_StartKm; private System.Windows.Forms.NumericUpDown nud_FinishKm; private System.Windows.Forms.NumericUpDown nud_Cent; private System.Windows.Forms.Label label4; private System.Windows.Forms.Button btn_calc_Money; private System.Windows.Forms.Button btn_calc_km; private System.Windows.Forms.Label lbl_result;

using System.Windows; /* Install NuGet Open your Visual Studio. Open your solution/project. Open Tools menu, select Library Package Manager and select Package Manager Console Run the following command "Install-Package Extended.Wpf.Toolkit" */ namespace aufgabe_206 { public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } struct GUI { public int km_start; public int km_end; public int cent_pro_km; } GUI gui_state = new GUI(); void update_gui_state() { gui_state.km_start = (int)this.ud_1.Value; gui_state.km_end = (int)this.ud_2.Value; gui_state.cent_pro_km = (int)this.ud_3.Value; } private void ValueChanged(object sender, RoutedPropertyChangedEventArgs<object> e) { if (!bo_is_loaded) return; update_gui_state(); string erstattung = ((gui_state.km_end - gui_state.km_start) * gui_state.cent_pro_km * 0.01).ToString("n2") + " €"; this.textBlock.Text = erstattung; } bool bo_is_loaded = false; private void Window_Loaded(object sender, RoutedEventArgs e) { bo_is_loaded = true; button_Click(null, null); } private void button_Click(object sender, RoutedEventArgs e) { this.ud_1.Value = this.ud_2.Value; update_gui_state(); ValueChanged(null, null); } } }

<Window x:Class="aufgabe_206.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:aufgabe_206" xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit" mc:Ignorable="d" Title="Kilometerrechner mit Erstattungsbetrag" Height="200" Width="725" FontFamily="Courier New" FontWeight="Bold" Background="{DynamicResource {x:Static SystemColors.ActiveCaptionBrushKey}}" BorderThickness="5" BorderBrush="Blue" WindowStartupLocation="CenterScreen" ResizeMode="CanMinimize" Loaded="Window_Loaded"> <Grid> <Grid.RowDefinitions> <RowDefinition Height="60"/> <RowDefinition Height="1*"/> </Grid.RowDefinitions> <StackPanel Margin="10,20,10,0" Orientation="Horizontal"> <Label x:Name="lb_1" Content="km-START" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="10,0,0,0"/> <xctk:IntegerUpDown x:Name="ud_1" Width="75" Margin="10,0,0,0" Value="5000" Background="{DynamicResource {x:Static SystemColors.InfoBrushKey}}" ValueChanged="ValueChanged" BorderThickness="5"/> <Label x:Name="lb_2" Content=" km-STOP" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="10,0,0,0"/> <xctk:IntegerUpDown x:Name="ud_2" Width="75" Margin="10,0,0,0" Value="5000" Background="{DynamicResource {x:Static SystemColors.InfoBrushKey}}" ValueChanged="ValueChanged" BorderThickness="5"/> <Label x:Name="lb_3" Content=" CENT/km" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="10,0,0,0"/> <xctk:IntegerUpDown x:Name="ud_3" Width="75" Margin="10,0,0,0" Value="39" Background="{DynamicResource {x:Static SystemColors.InfoBrushKey}}" ValueChanged="ValueChanged" BorderThickness="5"/> <Button x:Name="button" Content=" take END -> START " Margin="10,0,0,0" Click="button_Click"/> </StackPanel> <TextBlock x:Name="textBlock" Margin="0" Grid.Row="1" TextWrapping="Wrap" FontSize="72" HorizontalAlignment="Center" VerticalAlignment="Center" Foreground="Blue"/> </Grid> </Window>

// Ist zwar in der Console aber vom Prinzip her das selbe. // statt Console.WriteLine muss man halt txt_GefahreneKm.Text = txt_neueKM.Text - txt_alteKM. txt_Erstattung.Text = (txt_neueKM.Text - txt_alteKM)*0.39 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace kmStand { class Program { static void Main(string[] args) { Console.WriteLine("AlteKM: "); int altKm = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("NeueKM: "); int neueKM = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("Gefahrene KM: " + (neueKM - altKm)); Console.WriteLine("Erstattung: " + ((neueKM - altKm) * 0.39) + "Euro"); Console.ReadKey(); } } }

namespace _206Kilometerrechner { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void btnBerechnen_Click(object sender, EventArgs e) { int differenz = Convert.ToInt32(numUpDownEnde.Value) - Convert.ToInt32(numUpDownAnfang.Value); double betrag = Convert.ToDouble(tbCent.Text) * differenz; MessageBox.Show("Gefahrene Kilometer: " + differenz + " Km\nErstattungbetrag: " + betrag + " €", "Ergebnis", MessageBoxButtons.OK); } } }
Form1.Designer:

private System.Windows.Forms.Label label1; private System.Windows.Forms.Label label2; private System.Windows.Forms.Label label3; private System.Windows.Forms.NumericUpDown numUpDownAnfang; private System.Windows.Forms.NumericUpDown numUpDownEnde; private System.Windows.Forms.TextBox tbCent; private System.Windows.Forms.Button btnBerechnen;