Hallo bei meinem Projekt tritt folgendes auf:
Als erstes Gibt man einen Barcode für einen User ein, dann den für ein Getränk. Der Wert des Getränks wird vom Guthaben abgezogen.
Trinkt der User aber direkt hintereinander 2 oder mehr Getränke, wird zwar angezeigt, dass er 2 oder mehr Getränke getrunken hat aber es wird nur das erste vom Guthaben abgezogen.
Hier einmal das Komplette Projekt mit allen benötigten Dateien:
Anhang anzeigen System.rar
Bin für jede Hilfe dankbar, da er ja im Logfile alles richtig schreibt aber es dann doch nicht macht!
Danke schon mal.
Grüße Thelch
Als erstes Gibt man einen Barcode für einen User ein, dann den für ein Getränk. Der Wert des Getränks wird vom Guthaben abgezogen.
Trinkt der User aber direkt hintereinander 2 oder mehr Getränke, wird zwar angezeigt, dass er 2 oder mehr Getränke getrunken hat aber es wird nur das erste vom Guthaben abgezogen.
Code:
using System;
using System.IO;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;
namespace WindowsFormsApplication1
{
public partial class Getränke : Form
{
public const string FILENAME_LOG = @"e:\\44\\logfile.txt";
public const string FILENAME_USER = @"e:\\44\user.txt";
public const string FILENAME_WERTE = @"e:\\44\werte.txt";
public const string FILENAME_TEMP = @"e:\\44\temp.txt";
public string global_user = "";
public string global_barcode = "";
public string global_guthaben = "";
public string global_wert = "";
public int global_line = 0;
public Getränke()
{
InitializeComponent();
}
private void label2_Click(object sender, EventArgs e)
{
}
private void eingabe_box_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
string searchfor = Convert.ToString(eingabe_box.Text);
string line;
name.Text = searchfor;
if (global_line < 1)
{
global_barcode = "";
global_guthaben = "";
global_user = "";
global_wert = "";
warnung.Visible = false;
}
using (StreamReader tr = new StreamReader(FILENAME_USER))
using (StreamReader bu = new StreamReader(FILENAME_WERTE))
// Wenn kein User eingetragen, wird Barcode auf Zusammengehörigkeit mit einem User geprüft
if (global_user == "")
{
{
while ((line = tr.ReadLine()) != null)
{
global_line++;
string[] splittedString = line.Split('#');
if (splittedString[0] == searchfor)
{
name.Text = splittedString[1];
guthaben_form1.Text = splittedString[2];
global_barcode = splittedString[0];
global_user = splittedString[1];
global_guthaben = splittedString[2];
global_wert = splittedString[2];
using (StreamWriter file = new StreamWriter(FILENAME_LOG, true))
file.WriteLine("{0} hat noch {1}€ Guthaben!", global_user, global_guthaben);
// using (StreamWriter file = new StreamWriter(FILENAME_TEMP))
// file.WriteLine(line);
eingabe_box.Text = "";
double guthaben = Convert.ToDouble(global_guthaben);
// GUthaben kleiner 5€ dann warnung einblenden
if (guthaben < 5)
{
warnung.Visible = true;
}
else
{
warnung.Visible = false;
}
}
}
}
}
// Dem User wird ein Getränk zugewiesen
else if (global_user != "")
{
while ((line = bu.ReadLine()) != null)
{
string[] splittedWerte = line.Split('#');
global_line = 0; // Wenn die Variable am Schleifenende == 0 ist wird der Personen-Barcode gecheckt
// Überprüfen ob der Getränkecode funktioniert.
if (splittedWerte[0] == searchfor)
{
double guthaben = 0;
double wert = 0;
guthaben = Convert.ToDouble(global_guthaben);
wert = Convert.ToDouble(splittedWerte[2]);
guthaben = guthaben + wert;
global_guthaben = Convert.ToString(guthaben);
// Festlegen ob Aufladung oder Abbuchung
using (StreamWriter file = new StreamWriter(FILENAME_LOG, true))
if (wert < 0)
{
file.WriteLine("{0} hat {1} getrunken und noch {2}€ Guthaben", global_user, splittedWerte[1], global_guthaben);
}
else if (wert > 0)
{
file.WriteLine("{0} hat sein Guthaben um {1}€ aufgeladen", global_user, wert);
}
// Änderungen in der Textdatei speichern
StreamReader einfuegen = File.OpenText(FILENAME_USER);
string inhalt = einfuegen.ReadToEnd();
einfuegen.Close();
tr.Close();
string alt = global_barcode + "#" + global_user + "#" + global_wert;
string neu = global_barcode + "#" + global_user + "#" + global_guthaben;
inhalt = inhalt.Replace(alt, neu);
StreamWriter speichern = File.CreateText(FILENAME_USER);
speichern.Write(inhalt);
speichern.Close();
// Ende des Speicherns
eingabe_box.Text = ""; //Textbox wird geleert
name.Text = global_user; // Name anpassen
guthaben_form1.Text = global_guthaben; // Neues Guthaben ausgeben
global_line = 1;
break;
}
}
// Vermeidet das 2. benötigte Enter fals es kein getränkbarcode ist
if (global_line < 1)
{
global_barcode = "";
global_guthaben = "";
global_user = "";
global_wert = "";
//SendKeys.Send("{ENTER}");
while ((line = tr.ReadLine()) != null)
{
global_line++;
string[] splittedString = line.Split('#');
if (splittedString[0] == searchfor)
{
name.Text = splittedString[1];
guthaben_form1.Text = splittedString[2];
global_barcode = splittedString[0];
global_user = splittedString[1];
global_guthaben = splittedString[2];
global_wert = splittedString[2];
using (StreamWriter file = new StreamWriter(FILENAME_LOG, true))
file.WriteLine("{0} hat noch {1}€ Guthaben!", global_user, global_guthaben);
eingabe_box.Text = "";
double guthaben = Convert.ToDouble(global_guthaben);
if (guthaben < 5)
{
warnung.Visible = true;
}
else
{
warnung.Visible = false;
}
}
}
}
}
}
if (!File.Exists(FILENAME_LOG))
{
Console.WriteLine("{0} existiert nicht!", FILENAME_LOG);
}
using (StreamReader sr = File.OpenText(FILENAME_LOG))
{
String ausgabe;
while ((ausgabe = sr.ReadLine()) != null)
{
ausgabeFenster.Text = sr.ReadToEnd();
ausgabeFenster.SelectionStart = ausgabeFenster.Text.Length;
ausgabeFenster.ScrollToCaret();
}
}
}
private void hinzufügenToolStripMenuItem_Click(object sender, EventArgs e)
{
anlage_nutzer frm = new anlage_nutzer();
frm.Show();
}
private void hinzufügenToolStripMenuItem1_Click(object sender, EventArgs e)
{
getraenke_anlegen frm = new getraenke_anlegen();
frm.Show();
}
}
}
Hier einmal das Komplette Projekt mit allen benötigten Dateien:
Anhang anzeigen System.rar
Bin für jede Hilfe dankbar, da er ja im Logfile alles richtig schreibt aber es dann doch nicht macht!
Danke schon mal.
Grüße Thelch