Zum Inhalt springen

[c#]Variablen bekannt machen?!


Empfohlene Beiträge

Geschrieben

nur mal so ne frage du willst ja ein Zeiterfassungsprogramm schreiben, doch soll er nur die Arbeitszeit/Pausezeit erfassen oder soll er alles erfassen jedes kommen/gehen ?

Er soll jedes Kommen/Gehen einzeln erfassen. Die einzelnen Zeiten dann in jeweils seperaten Spalten ausgeben und gleichzeitig jede neue Buchung berechnen. Die derzeit angesammelte Arbeitszeit und die gesammte Pausenzeit des Tages.

Geschrieben
Er soll jedes Kommen/Gehen einzeln erfassen. Die einzelnen Zeiten dann in jeweils seperaten Spalten ausgeben und gleichzeitig jede neue Buchung berechnen. Die derzeit angesammelte Arbeitszeit und die gesammte Pausenzeit des Tages.

Was hat eigentlich das Thema "Kommen/Gehen Zeiten" mit dem Betreff dieses Themas zu tun? Neues Problem / neue Frage = neuer Thread / neues Posting.

Geschrieben
Was hat eigentlich das Thema "Kommen/Gehen Zeiten" mit dem Betreff dieses Themas zu tun? Neues Problem / neue Frage = neuer Thread / neues Posting.

Das Problem resultiert aus dem Lösungsweg des ersten Problems und hängt deswegen mit diesem Thread zusammen.

Ich hab zwar jetzt ne Lösung gefunden, diese ist aber denke ich Code mäßig zu lang als dass ich sie hier posten könnte.

Trotzdem danke für die Hilfe.

Geschrieben

Aus dem Problem am Threadanfang ist ein weitere Problem resultiert. Nur was ist, wenn jemand ein gleiches oder ähnliches Problem zwecks dem DateTime hat? Der findet anhand des Themas keine Bezug zu seinem / Deinem zweiten Problem. Daher neues Thema aufmachen, mit einem Verweis auf Dein vorheriges Problem.

Geschrieben

Ob es nun eine String Variable ist die ich bekannt machen möchte, oder eine DateTime Variable ist doch herzlich egal?

Wenn ich Probleme hätte einen Anker mit meinem kleinen Sportboot zu werfen und hier die Lösung finden würde, würde ich doch auch wieder hier posten, wenn ich das gleiche Problem in größeren Ausmaßen bei einem Hochseetanker hätte, oder?

Wie gesagt, das Problem ist aus meiner Sicht eh erledigt, die Lösung ist allerdings zu lang um sie hier zu posten.

Nur soviel: Mühevolle Kleinstarbeit und Fehleranfälligkeit³ die es jetzt noch ausmerzen werde. Trotzdem danke.

Geschrieben

Klug******erModus an:

Wenn mir jemand sagen könnte, wie ich am besten die einzelnen Kommen + Gehen am besten in verschiedene Variablen abspeichern kann, wäre das für mich ein großer Schritt nach vorne.

Klug******erModus aus:

Hmm...passt nicht ganz zu Deiner letzten Aussage. Aber bitte...

Geschrieben

Dann Entschuldige bitte, wenn ich mich falsch ausgedrückt habe.

Fakt ist, ich sitze ja wohl vor meinem Projekt und weiß, was für ein Problem ich habe.

Btw. ich glaube genau das ist es, was 2K1.inc meinte...

@Mod, kann das bitte jemand Schließen? Denke kaum, dass Diskussionen um des Kaisers Bart irgendjemand etwas bringen.

Geschrieben

Trotzdem wäre ich an der Lösung interessiert :roll:

Man kann diese ja kürzen und mit einem kleinen Kommentar beschreiben. Laut dem Thema geht es ja um die Sichtbarkeit einer / mehrerer Variablen (int, DateTime). Also was möchte mehr :-)

Geschrieben

Bsp. GehenBuchung:

 private void btnGehen_Click(object sender, EventArgs e)

        {

            Counter++;


            if (Counter % 2 == 1)

            {

                MessageBox.Show("Gehen bereits gebucht!");

                Counter--;

            }

            else

            {

                if (cbZeit.Checked)

                {

                    string Gehen = txtGehen.Text;

                    Gehen = Gehen.Replace(".", ":");

                    Gehen = Gehen.Replace(",", ":");

                    DateTime GehenZ;

                    if (DateTime.TryParseExact(Gehen, format, CultureInfo.InvariantCulture,

                        DateTimeStyles.None, out GehenZ))

                    {

                            MessageBox.Show("Manuelle Buchung gespeichert"); 

                            GehenZs[bi] = Gehen;

                            bi++;

                    }

                    else

                    {

                        MessageBox.Show("Ungültiges Zeitformat!");

                    }

                }

                else

                {

                    string Gehen2 = DateTime.Now.ToShortTimeString();

                    GehenZs[bi] = Gehen2;

                    bi++;

                }

            }

        }

Sieht beim Kommen Button quasi gleich aus. Verarbeitung:

//Zeitspannen für Arbeitszeit und Pausenzeitberechnung

            int r = 0;

            DateTime KO = DateTime.Parse(KommenZs[r]);

            DateTime  Ge1 = DateTime.Parse(GehenZs[r]);


            DateTime KO2 = new DateTime();

            DateTime KO3 = new DateTime();

            DateTime KO4 = new DateTime();


            DateTime Ge2 = new DateTime();

            DateTime Ge3 = new DateTime();

            DateTime Ge4 = new DateTime();

            DateTime Tester = new DateTime();


            TS1 = Ge1 - KO;

            string Arbeit1 = TS1.ToString();

            txtArbeitszeit.Text = Arbeit1;

            r++;


            //Arbeitszeit

            if (KommenZs[r] != null && GehenZs[r] != null)

            {

                KO2 = DateTime.Parse(KommenZs[r]);

                Ge2 = DateTime.Parse(GehenZs[r]);


                TS2 = Ge2 - KO2;

                string Arbeit2 = TS2.ToString();

                TimeSpan Zwischenergebnis = TS2 + TS1;

                txtArbeitszeit.Text = Zwischenergebnis.ToString();

                r++;

            }

            if (KommenZs[r] != null && GehenZs[r] != null)

            {

                 KO3 = DateTime.Parse(KommenZs[r]);

                 Ge3 = DateTime.Parse(GehenZs[r]);


                TS3 = Ge3 - KO3;

                string Arbeit2 = TS3.ToString();

                TimeSpan Zwischenergebnis2 = TS3 + TS2 + TS1;

                txtArbeitszeit.Text = Zwischenergebnis2.ToString();

                r++;

            }

            if (KommenZs[r] != null && GehenZs[r] != null)

            {

                 KO4 = DateTime.Parse(KommenZs[r]);

                 Ge4 = DateTime.Parse(GehenZs[r]);


                TS3 = Ge4 - KO4;

                string Arbeit3 = TS4.ToString();

                TimeSpan Zwischenergebnis3 = TS4 + TS3 + TS2 + TS1;

                txtArbeitszeit.Text = Zwischenergebnis3.ToString();

                r++;

            }


            //PausenZeit

            int p = 0;

            if (KO2 > Tester)

            {

            TS5 =KO2 - Ge1  ;

            TimeSpan Zwischenergebnis4 = TS5;

            txtPausenzeit.Text = Zwischenergebnis4.ToString();

            p++;


            if (GehenZs[p] != null && KO3 > Tester)

            {


                TS6 = KO3 - Ge2;

                TimeSpan Zwischenergebnis5 = TS6 + TS5;

                txtPausenzeit.Text = Zwischenergebnis5.ToString();

                p++;

            }

            if (GehenZs[p] != null && KO4 > Tester)

            {

                TS7 = KO4 - Ge3;

                TimeSpan Zwischenergebnis6 = TS7 + TS6 + TS5;

                txtPausenzeit.Text = Zwischenergebnis6.ToString();

                p++;

            }

Ausgabe:

//Ausgabe an TXT Datei


                int ZN = 1;

                string Prüfung;

                while ((Prüfung = NewTime.ReadLine(@"C:\WinZeitLog.txt", ZN)) != "")

                {

                    ZN++;

                }


                NewTime.WriteLine(@"C:\WinZeitLog.txt", ZN, "Kommen" + ": " + KO.ToShortTimeString()  + " Gehen" + ": " + Ge1.ToShortTimeString().PadLeft(2,pad) +  " Arbeitszeit: " + (Ge1 - KO), false);

                ZN++;

                NewTime.WriteLine(@"C:\WinZeitLog.txt", ZN, "Kommen" + ": " + KO2.ToShortTimeString() + " Gehen" + ": " + Ge2.ToShortTimeString().PadLeft(2, pad) + " Arbeitszeit: " + (Ge2 - KO2), false);

                ZN++;

                NewTime.WriteLine(@"C:\WinZeitLog.txt", ZN, "Kommen" + ": " + KO3.ToShortTimeString() + " Gehen" + ": " + Ge3.ToShortTimeString().PadLeft(2, pad) + " Arbeitszeit: " + (Ge3 - KO3), false);

                ZN++;

                NewTime.WriteLine(@"C:\WinZeitLog.txt", ZN, "Kommen" + ": " + KO4.ToShortTimeString() + " Gehen" + ": " + Ge4.ToShortTimeString().PadLeft(2, pad) + " Arbeitszeit: " + (Ge4 - KO4).ToString().PadLeft(2, pad), false);

                ZN++;

                NewTime.WriteLine(@"C:\WinZeitLog.txt", ZN, "Gesamte Arbeitszeit: " + (TS1 + TS2 + TS3 + TS4) + " Gesamte Pausenzeit: " + (TS7 + TS6 + TS5), false);

                ZN++;

                NewTime.WriteLine(@"C:\WinZeitLog.txt", ZN, "------- ENDE DES TAGES -------", false);

Sicher keine Musterlösung, aber es funktioniert.

Hab allerdings noch n Rechenfehler drinn, den ich gerade suche.

Geschrieben

//Arbeitszeit
if (KommenZs[r] != null && GehenZs[r] != null)
{
KO2 = DateTime.Parse(KommenZs[r]);
Ge2 = DateTime.Parse(GehenZs[r]);

TS2 = Ge2 - KO2;
string Arbeit2 = TS2.ToString();
TimeSpan Zwischenergebnis = TS2 + TS1;
txtArbeitszeit.Text = Zwischenergebnis.ToString();
r++;
}
if (KommenZs[r] != null && GehenZs[r] != null)
{
KO3 = DateTime.Parse(KommenZs[r]);
Ge3 = DateTime.Parse(GehenZs[r]);

TS3 = Ge3 - KO3;
string Arbeit2 = TS3.ToString();
TimeSpan Zwischenergebnis2 = TS3 + TS2 + TS1;
txtArbeitszeit.Text = Zwischenergebnis2.ToString();
r++;
}
if (KommenZs[r] != null && GehenZs[r] != null)
{
KO4 = DateTime.Parse(KommenZs[r]);
Ge4 = DateTime.Parse(GehenZs[r]);

TS3 = Ge4 - KO4;
string Arbeit3 = TS4.ToString();
TimeSpan Zwischenergebnis3 = TS4 + TS3 + TS2 + TS1;
txtArbeitszeit.Text = Zwischenergebnis3.ToString();
r++;
}[/code] Dreimal der gleiche Code. Schleife?
[code]
NewTime.WriteLine(@"C:\WinZeitLog.txt", ZN, "Kommen" + ": " + KO.ToShortTimeString() + " Gehen" + ": " + Ge1.ToShortTimeString().PadLeft(2,pad) + " Arbeitszeit: " + (Ge1 - KO), false);
ZN++;
NewTime.WriteLine(@"C:\WinZeitLog.txt", ZN, "Kommen" + ": " + KO2.ToShortTimeString() + " Gehen" + ": " + Ge2.ToShortTimeString().PadLeft(2, pad) + " Arbeitszeit: " + (Ge2 - KO2), false);
ZN++;
NewTime.WriteLine(@"C:\WinZeitLog.txt", ZN, "Kommen" + ": " + KO3.ToShortTimeString() + " Gehen" + ": " + Ge3.ToShortTimeString().PadLeft(2, pad) + " Arbeitszeit: " + (Ge3 - KO3), false);
ZN++;
NewTime.WriteLine(@"C:\WinZeitLog.txt", ZN, "Kommen" + ": " + KO4.ToShortTimeString() + " Gehen" + ": " + Ge4.ToShortTimeString().PadLeft(2, pad) + " Arbeitszeit: " + (Ge4 - KO4).ToString().PadLeft(2, pad), false);
ZN++;
NewTime.WriteLine(@"C:\WinZeitLog.txt", ZN, "Gesamte Arbeitszeit: " + (TS1 + TS2 + TS3 + TS4) + " Gesamte Pausenzeit: " + (TS7 + TS6 + TS5), false);
ZN++;

Auch hier: Schleife? Copy&Paste-Programmierung solltest du dir ganz dringend abgewöhnen. Oder dich schon mal damit abfinden, dass du jeden Fehler n-mal fixen musst.

Mit "funktioniert" solltest du dich nicht zufrieden geben.

Geschrieben

ich würd gern ne schleife draus machen, jedoch wüsste ich nicht, wie ich die Variablen in der Schleife jedesmal so ändere, dass ich auch die richtigen Werte kriege.

ich möchte ja für jeden wert einen eigenen string haben.

Geschrieben
ich würd gern ne schleife draus machen, jedoch wüsste ich nicht, wie ich die Variablen in der Schleife jedesmal so ändere, dass ich auch die richtigen Werte kriege.

ich möchte ja für jeden wert einen eigenen string haben.

hmm könntest du mal plx die ganze Aufgabenstellung posten ? o.O

was es können muss etc...

Geschrieben

Es soll jede Kommen und Gehen Buchung erfassen, die Zeitspanne zwischen den einzelnen Buchungen messen und einzeln wiedergeben + die Zeitspannen zusammen zählen und dann als Arbeits bzw. Pausenzeit seperat wiedergeben.

Die einzelnen Pausen werden dann in einem Textfile ausgegeben.

So sieht die Ausgabe bisher aus:

Sitzungsdatum: 27:09:2010 13:49:07

Kommen: 07:00 Gehen: 09:00 Arbeitszeit: 02:00:00

Kommen: 09:15 Gehen: 12:00 Arbeitszeit: 02:45:00

Kommen: 12:30 Gehen: 15:00 Arbeitszeit: 02:30:00

Kommen: 15:15 Gehen: 16:45 Arbeitszeit: 01:30:00

Gesamte Arbeitszeit: 08:45:00 Gesamte Pausenzeit: 01:00:00

------- ENDE DES TAGES -------

Geschrieben
Es soll jede Kommen und Gehen Buchung erfassen, die Zeitspanne zwischen den einzelnen Buchungen messen und einzeln wiedergeben + die Zeitspannen zusammen zählen und dann als Arbeits bzw. Pausenzeit seperat wiedergeben.

Die einzelnen Pausen werden dann in einem Textfile ausgegeben.

So sieht die Ausgabe bisher aus:

Also für jeden Mitarbeiter wird dann täglich eine File angelegt... wird dann morgn wieder ne neue file angelegt oder in der altn weiter geschrieben ?

Geschrieben

Derzeit wird in die Alte rein geschrieben, sprich drunter.

Daher bekommt das Programm dann auch den Benutzernamen, der derzeit aber noch total irrelevant ist.

Edit: Das Programm ist nicht wirklich für den realen Einsatz geplant, sondern mehr als Übung.

Ansonsten: Ja für jeden Benutzer eine File.

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...