PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Schuldenprogramm



Th3_Cr4xX
14.04.2010, 13:47
Hi,
hab wieder ein kleines Programm geschrieben. Es hat den Zweck, Zigarettenschulden zu speichern, zu begleichen, und abzurufen. Mein Bruder und ich leihen uns öfters gegenseitig Zigaretten. So werden wir immer darin erinnert xD Falls das jemand braucht kann man ja in Geldschulden ect. umschreiben.


http://www.imagebanana.com/img/9nr432d3/Unbenannt.bmp.png (http://www.imagebanana.com/)

Imports System.IO
Imports System.Text.RegularExpressions

Public Class Form1
Dim d As String
Dim TempString() As String
Dim Zaehler As Integer = 0
Dim FILE_NAME As String = "C:\X.txt"
Dim FILE_NAME_D As String = "C:\D.txt"
Dim FILE_NAME_P As String = "C:\P.txt"
Dim aktZeileD As String, aktIntD As Integer, ZahlenSummeD As Integer
Dim aktZeileP As String, aktIntP As Integer, ZahlenSummeP As Integer



Dim PWD As String = "passwordD"

Dim PWP As String = "passwordP"




Private Sub Speichern_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Speichern.Click


If ComboBox2.Text = "" Then
MsgBox("Fail,wähle einen Schuldner!")
Me.Close()
End If



Dim EnteredD As String = InputBox("NameD")


If EnteredD = PWD Then
MsgBox("Correct", MsgBoxStyle.Information)
Else
MsgBox("Fail", MsgBoxStyle.Critical)
Me.Close()

End If

Dim EnteredP As String = InputBox("NameP")

If EnteredP = PWP Then
MsgBox("Correct", MsgBoxStyle.Information)
Else
MsgBox("Fail", MsgBoxStyle.Critical)
Me.Close()
End If


If System.IO.File.Exists(FILE_NAME) = True Then
Dim objWriter As New System.IO.StreamWriter(FILE_NAME, True)

objWriter.Write(vbNewLine + vbNewLine + "Datum: " + DateTimePicker1.Value.ToString + vbNewLine + "Beschreibung: " + TextBox1.Text + vbNewLine + "Anzahl: " + NumericUpDown1.Value.ToString + vbNewLine + ComboBox2.Text + " ist der Schuldner" + vbNewLine + vbNewLine + "__________________________________________________ _______________")
objWriter.Close()
MsgBox("Saved", MsgBoxStyle.Information)



End If
If System.IO.File.Exists(FILE_NAME_P) = True Then
Dim objWriterP As New System.IO.StreamWriter(FILE_NAME_P, True)

If ComboBox2.Text = "NameP" Then
objWriterP.Write(NumericUpDown1.Value.ToString + vbNewLine)
objWriterP.Close()



End If
End If
If System.IO.File.Exists(FILE_NAME_D) = True Then
Dim objWriterD As New System.IO.StreamWriter(FILE_NAME_D, True)

If ComboBox2.Text = "NameD" Then
objWriterD.Write(NumericUpDown1.Value.ToString + vbNewLine)
objWriterD.Close()



End If
End If
End Sub
Private Sub Abrufen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Abrufen.Click
If ComboBox2.Text = "" Then
MsgBox("Fail, wähle einen zum Abrufen!")
Me.Close()
End If








Dim ZahlenSummeD As Integer
Dim ZahlenSummeP As Integer
Label3.Visible = False




If ComboBox1.Text = "NameD" Then
Dim srD As New System.IO.StreamReader(FILE_NAME_D)
Dim aktZeileD As String, aktIntD As Integer

'Zeilenweise die Datei lesen
While (Not srD.EndOfStream)
'Aktuelle Zeile in die Variable lesen
aktZeileD = srD.ReadLine()

'Prüfen, ob die aktuelle Zeile eine Zahl ist
If (Integer.TryParse(aktZeileD, aktIntD)) Then
'Wenn ja, aufsummieren
ZahlenSummeD += aktIntD
End If
End While
End If

If ComboBox1.Text = "NameP" Then
Dim srP As New System.IO.StreamReader(FILE_NAME_P)
Dim aktZeile As String, aktIntP As Integer

'Zeilenweise die Datei lesen
While (Not srP.EndOfStream)
'Aktuelle Zeile in die Variable lesen
aktZeile = srP.ReadLine()

'Prüfen, ob die aktuelle Zeile eine Zahl ist
If (Integer.TryParse(aktZeile, aktIntP)) Then
'Wenn ja, aufsummieren
ZahlenSummeP += aktIntP
End If
End While
End If



If CheckBox1.Checked Then
Dim Abr As New System.IO.StreamReader(FILE_NAME)
Label3.Text = Abr.ReadToEnd
MsgBox(Label3.Text, MsgBoxStyle.Information)


Else
If ComboBox1.Text = "NameD" Then
MsgBox("NameD schuldet " + ZahlenSummeD.ToString + " Zigarette(n)")

End If
If ComboBox1.Text = "NameP" Then
MsgBox("NameP schuldet " + ZahlenSummeP.ToString + " Zigarette(n)")

End If
End If
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If ComboBox2.Text = "" Then
MsgBox("Fail,wähle einen zum Begleicher!")
Me.Close()
End If



Dim EnteredD As String = InputBox("NameD")


If EnteredD = PWD Then
MsgBox("Correct", MsgBoxStyle.Information)
Else
MsgBox("Fail", MsgBoxStyle.Critical)
Me.Close()

End If

Dim EnteredP As String = InputBox("NameP")

If EnteredP = PWP Then
MsgBox("Correct", MsgBoxStyle.Information)
Else
MsgBox("Fail", MsgBoxStyle.Critical)
Me.Close()
End If







If ComboBox3.Text = "NameD" Then
Dim objWriterD As New System.IO.StreamWriter(FILE_NAME_D, True)
objWriterD.Write(vbNewLine + "-" + NumericUpDown2.Value.ToString)
objWriterD.Close()
MsgBox("Es wurden " + NumericUpDown2.Value.ToString + " Zigarette(n) beglichen", MsgBoxStyle.Information)
End If



If ComboBox3.Text = "NameP" Then
Dim objWriterP As New System.IO.StreamWriter(FILE_NAME_P, True)
objWriterP.Write(vbNewLine + "-" + NumericUpDown2.Value.ToString)
objWriterP.Close()
MsgBox("Es wurden " + NumericUpDown2.Value.ToString + " Zigarette(n) beglichen", MsgBoxStyle.Information)
End If




If ComboBox3.Text = "NameD" Then
Dim schD As New System.IO.StreamWriter(FILE_NAME, True)
schD.Write(vbNewLine + vbNewLine + "Datum: " + DateTimePicker1.Value.ToString + vbNewLine + "NameD hat " + NumericUpDown2.Value.ToString + " Zigarette(n) beglichen" + vbNewLine + vbNewLine + "__________________________________________________ _______________")
schD.Close()
End If
If ComboBox3.Text = "NameP" Then
Dim schP As New System.IO.StreamWriter(FILE_NAME, True)
schP.Write(vbNewLine + vbNewLine + "Datum: " + DateTimePicker1.Value.ToString + vbNewLine + "NameP hat " + NumericUpDown2.Value.ToString + " Zigarette(n) beglichen" + vbNewLine + vbNewLine + "__________________________________________________ _______________")
schP.Close()
End If
End Sub
End Class

aL1ien
14.04.2010, 14:42
Der Code ist absolut mies.
- Nichts aussagende Variablennamen
- Viele Codeleichen
- Schlecht formatiert
- Rechtschreibfehler
- Alles in eine Funktion gepackt
- z.T. überflüssige Codezeilen
- Unübersichtlicher Code
- Controls wurden nicht benannt
- Mal englisch / mal deutsch
- Keine Konsistenz
- Filenames wurden hart kodiert
...
...
...
gäbe da noch etliches zu verbessern. Schau' dir doch mal einen Leitfaden zur Codeformatierung / wartbarkeit an.
und jetzt dein grösster Fehler:
Du hast es in VB geschrieben ;).

Und solch eine Person schreibt "Skills: ... ... ... VB.NET" -.-'

Warum denkt jeder, dass es "cool" wäre, dass das Programm so kryptisch als möglich aussieht? Nennt doch die Variablen richtig. Ich wette mit dir, dass, wenn du den code nach einem Monat anschaust, du den Code nicht mehr verstehen wirst, geschweige denn, du es erweitern könntest (Stichwort: wartbarkeit).

Th3_Cr4xX
14.04.2010, 14:48
Das Programm tut was es soll und erleichtert mir das Leben, was willst du mehr ?
Wenn du die Variabelnamen nicht verstehst musst du deren Funktion betrachten und dann darfst du dir eigene Namen ausdenken.
Also deine Kritik ist wirklich sehr oberflächlich aber ja der Code ist dahingeschmissen nicht gegliedert usw. aber war ja auch für mich selbst geplant und nicht für die Augen anderer.

snowbase
14.04.2010, 15:15
Der Code ist absolut mies.
- Nichts aussagende Variablennamen
- Viele Codeleichen
- Schlecht formatiert
- Rechtschreibfehler
- Alles in eine Funktion gepackt
- z.T. überflüssige Codezeilen
- Unübersichtlicher Code
- Controls wurden nicht benannt
- Mal englisch / mal deutsch
- Keine Konsistenz
- Filenames wurden hart kodiert
...
...
...
gäbe da noch etliches zu verbessern. Schau' dir doch mal einen Leitfaden zur Codeformatierung / wartbarkeit an.
und jetzt dein grösster Fehler:
Du hast es in VB geschrieben ;).

Und solch eine Person schreibt "Skills: ... ... ... VB.NET" -.-'

Warum denkt jeder, dass es "cool" wäre, dass das Programm so kryptisch als möglich aussieht? Nennt doch die Variablen richtig. Ich wette mit dir, dass, wenn du den code nach einem Monat anschaust, du den Code nicht mehr verstehen wirst, geschweige denn, du es erweitern könntest (Stichwort: wartbarkeit).

Wegen solchen Leuten bin ich nur noch sehr selten in Fh online so Besserwisser omg ey ich hasse es

Wo ist das Problem wenn es für dich unübersichtlich erscheint Pech er muss doch damit klar kommen und wenn du den Code benutzen willst und ihn kacke findest dann benutze den einfach nicht oder schreib den um


Ich sag einfach ma is ne gute Idee
Ich kenn es ich leih mir au mal öfter kippen oder verleih welche an meine Bros :D

psyborg
14.04.2010, 15:28
naja ich finde die idee gut, aber für zigaretten ists doch lächerlich.

in der familie ist das ein geben und nehmen, wenn man sich da alles aufschreibt und abgleicht ist das doch irre!

für richtige geld schulden wär ein programm gut.
wer mir wieviel schuldet und bis wann ich das zurück haben sollte...
ev noch mit smtp email service um automatisch erinnerungen oder mahnungen anzuschicken... :)

krypt0n
14.04.2010, 15:59
Wenn du die Variabelnamen nicht verstehst musst du deren Funktion betrachten und dann darfst du dir eigene Namen ausdenken.
Also deine Kritik ist wirklich sehr oberflächlich aber ja der Code ist dahingeschmissen nicht gegliedert usw. aber war ja auch für mich selbst geplant und nicht für die Augen anderer.
Glaub mir: Gewöhn dir von Anfang an an, möglichst übersichtlich und durchdacht zu coden. Bei grösseren Projekten oder sogar im Beruf wirst du diesem Rat nochmals dankbar sein und dich fragen, wieso du früher nicht einfach etwas mehr Zeit aufgewendet hast, um später den Code auch noch zu verstehen. Es zahlt sich zu 100% aus!


Wegen solchen Leuten bin ich nur noch sehr selten in Fh online so Besserwisser omg ey ich hasse es

Wenn man nicht einmal objektive und konstruktive Kritik an dem Quellcode erhält, wie soll man sich dann weiterentwickeln? Der User ist keineswegs besserwisserisch, sondern er versucht eher dem Threadstarter zu zeigen, was er bei seinem nächsten Programm besser machen kann.

aL1ien
14.04.2010, 16:02
Das Programm tut was es soll und erleichtert mir das Leben, was willst du mehr ?
Wenn du die Variabelnamen nicht verstehst musst du deren Funktion betrachten und dann darfst du dir eigene Namen ausdenken.
Also deine Kritik ist wirklich sehr oberflächlich aber ja der Code ist dahingeschmissen nicht gegliedert usw. aber war ja auch für mich selbst geplant und nicht für die Augen anderer.
Wessen Funktionen? Ich sehe keine. Warum ist meine Kritik "oberflächlich"? Es ist also NUR für dich selbst. Warum stellst du ihn dann in ein FORUM mit dem CODE, dass es JEDER sehen kann?

Wir hatten bei uns in der Firma viele Leute wie dich. Etwas dahin geschludert, hauptsach es funktionierte. Leider haben sie nicht daran gedacht, dass auch andere Leute damit arbeiten müssen. Die Wartungszeit / Entwicklungszeit hat sich dabei enorm erhört. Zudem hast DU ja geschrieben, dass man ihn für andere Zwecke anpassen darf. Nur wie soll man das machen, wenn man sich erstmal 1h in den Code einleses / debuggen muss, bis man ihn versteht? Dann schreibt man es in der Zeit lieber neu, dafür sauber.

@Snowbase: Ein Forum ist für Kritik, Hilfestellungen etc. da. Was wäre ein Forum, wenn man leute nicht verbessern darf? Schliesslich besucht man ein Forum um zu LERNEN. Ohne Kritik wird man nunmal nicht besser.

Ach ja, eventuell kam es bei meinem Post nicht richtig rüber. Ich will dich nicht fertig machen oder blosstellen. Ich wollte dir lediglich helfen.

Slawa
14.04.2010, 16:02
Ja klar, eigentlich kann ich das Programm gebrauchen, jetzt ist das auch nicht so wichtig, obs gute Struktur hat oder nicht, aber für die Zukunft: einfach mal sauber arbeiten, wenn du größere Projekte schreibst wie z.B. Stealer oder sonst was, dan wird es etwas schwierig alles durchzuschauen.

Also gute Arbeit!

Gruß

Slawa

Th3_Cr4xX
14.04.2010, 16:15
Das weiß ich zu schätzen alien. Hab einfach auf die schnelle das Ding gebaut. Wenn ich Projekte anfange achte ich sicherlich auf die Gliederung und packe auch Comments hinzu. Aber bei dem kleinen Teil hab ich mir da keine Gedanken gemacht und werde das auch nicht, da ich sicher nichts großes erweitern werden. Denn wie gesagt ist das eigentlich nur für private Zwecke, eine einmalige Sache. Ich dachte vllt brauch das jemand und habs hier reingepostet.


Wessen Funktionen? Ich sehe keine. Na du siehst ja dass ich NameA und NameB immer habe bzw. P und D. Wenn ich dann einen Streamreader reinpacke namens srD kannst du dir doch denken dass das der Streamreader ist, der NameD ausliest.[QUOTE]