Entwickler-Ecke
Sonstiges (Delphi) - PC-Konfigurator programmieren - Brauche Hilfe und Vorschläge
KoPhi - Mo 20.02.06 19:25
Titel: PC-Konfigurator programmieren - Brauche Hilfe und Vorschläge
Hallo Leute,
bin neu hier im Forum und auch noch ein "DelphiNoob"....
Ich möchte aber gerne ein PC-Konfigurator erstellen...die Art, wie es funktionieren soll habe ich auch schon im Kopf.
Ich weiß bloß nicht wie ich "programmieren" soll...*hört sich jetzt etwas doof an* ich erkläre es einfach mal:
--------------------------------------------------
Der Konfigurator greift auf folgende Artikel zurück:
4 AMD CPU's
3 Mainboards AMD
1 Intel CPU
1 Mainboard Intel
3 Grafikkarten
3 RAM's
4 Festplatten
3 Netzteile
3 Gehäuse
----
Folgendermaßen soll das Programm ablaufen:
Der User gibt sein max. Budget ein z.b 800€
Und dann muss er einige Fragen beantworten:
Wie groß sollte die Festplatte sein? Normal, Groß, Sehr groß
Encodieren Sie Videos? Ja, Nein
Spielen Sie Spiele? High, Middle, Low
Soll der Rechner leise sein? Ja, Nein
Wie groß das Gehäuse? Klein, Groß, Mittel
und noch einige mehr...
----
Danach wird ihm eine Konfiguration, die am besten zu seinem Verhalten passt, aufgestellt.
Wie in einem Warenkorb mit Bilder usw....
----
Beispiel:
Der User sagt 800€ und will eine große Festplatte und Spiele auf Mittel spielen und auch Videos Encodieren...
Das heißt INTEL CPU +MB + viel RAM + große HDD + Mittel Graka
Das heißt der Konfigurator muss bei den anderen Sachen (Gehäuse, NT usw) sparen...
sonst kommt er mit dem Preis ja nicht hin....
-----
Er muss also verschiedene Kombis durchgehen bis er in etwa an den Preis rankommt....
-----------------------------------------------------
Ich habe bloß keine Ahnung, wie ich programmieren soll.
Also nach welchen Klassen, Schlüsselwörtern er gehen muss usw
Ich hoffe, ihr könnt mir helfen.
Sorry wegen dem langen Text...
Danke im Voraus
Gruß KoPhi
Moderiert von
Christian S.: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Mo 20.02.2006 um 18:28
Marco D. - Mo 20.02.06 19:32
Erstmal brauchst du eine Sammlung von Infos über die verschiedenen Produkte (Preis, Lautstärke der Hardware etc.) Soll man auch genau angeben, welche Marke der HD zum Beispiel oder nur allgemein wieviel GB?
KoPhi - Mo 20.02.06 19:44
Natürlich werden am Ende auch richtige Produktnamen mit den einzelnen Eigenschaften aufgezeigt aber das kommt ja erst nachher bei der Ausgabe als Konfiguration.
Ich muss erstmal das Problem gelöst bekommen, wie ich die Konfiguration berechnen lassen kann...
Gruß
Marco D. - Mo 20.02.06 19:47
Ich stell mir das so vor: Du speicherst die Angaben des Benutzers in Variablen (logisch! ;) ) und dann addierst du nacheinander, was das ganze kosten würde. Nun einfach gucken, was der Benutzer ausgeben will und du hast die Antwort.
Oder rede ich hier am Thema vorbei? :gruebel:
Narses - Mo 20.02.06 19:49
Moin und :welcome: im Forum!
Programmierst du schon länger oder bist du eher "Einsteiger"? :wink:
Was du da machen willst, ist für einen Anfänger nicht so ganz einfach, da es eine geschickte Planung der Datenstruktur vorausetzt, um sich einfach programmieren zu lassen.
Sieht für mich nach einem Prioritäten-Liste-Ansatz aus: Du stellst eine Liste mit Dingen und ihrer "Wichtigkeit" auf, je "unwichtiger" ein Ding, desto eher wird es aus "Kostengründen" ersetzt. Diese Liste gehst du von "wichtig" nach "unwichtig" durch, um das optimale Gerät rauszufinden und von "unwichtig" nach "wichtig", bis das Budget passt. Fertig. :wink:
cu
Narses
KoPhi - Mo 20.02.06 19:54
Progammiere seit ca. einem halben Jahr...aber natürlich nicht tagtäglich und mehrere Stunden...^^
Wenn du mir anhand eines Beispielcodes oder ähnlichem diese Prioritäten-Struktur zeigen könntest,
wäre ich schonmal ein ganzen Stück weiter...
Hat einer von euch auch (aktuelle) Hardwarekenntnise?
Sonst könnte ich die Produkte mal aufschreiben und dann seht ihr ja selber (wenn ihr denn Ahnung habt) wie das ungefähr sein soll und welche Abstände (Leistung) es zwischen den Produkten gibt.
Gruß
Narses - Mo 20.02.06 20:08
Moin!
Frei nach der Nase "filosofiert" (ahhrg, schreibt man das wirklich so... ?!): :wink:
- Eine StringListe "Vorrat", in den .Strings[] die Namen der Sachen, in den .Objects[] die Kosten in EUR als Typecast auf TObject rsp. Integer
- Ein Feld "Matrix", dass die Indizes der Dinge aus "Vorrat" logisch zuordnungsfähig macht (was passt zu was, was ist "besser" als was anderes, was ist für einen Rechner nötig, usw.)
- Eine StringListe "Auswahl", in die du Dinge aus "Vorrat" einstellst (gleiche Bedeutung der Objects), aber Dinge mit kleinerem Listenindex sind "wichtiger", als Dinge mit größerem Index in der SL. :arrow: das ist der Konfigurationsvorgang
- Eine Schleife, die diese Liste von Hinten nach Vorne durchläuft und die Summe berechnet, gegebenenfalls Dinge von hinten "abwertet" oder "entfernt", bis das Budget passt.
- Ein CrossCheck am Ende, ob das noch ein kompletter Rechner ist: wenn ja, OK, wenn nein: Budget passt nicht.
Wenn du noch mehr "Hilfe" brauchst, dann solltest du zuerst mal ein paar Anfänger-Tuts machen; läuft ja praktisch sonst darauf hinaus, dir das Prog zu schreiben... :wink:
cu
Narses
KoPhi - Mo 20.02.06 20:15
Ok, danke schonmal....
Auf wie lang schätzt du denn den ganzen Code....mit obiger Artikelliste. (muss mir ja ein Bild vom Grauen machen) :wink:
Gruß
Narses - Mo 20.02.06 20:19
Moin!
Du hast ja Fragen... :wink:
Na, ein paar hundert Zeilen werden dass schon sein (incl. der Konstanten-Listen; vielleicht bietet sich da auch eine INI-Datei an :arrow: besser zu Pflegen, wenn sich die Sachen ändern).
cu
Narses
KoPhi - Mo 20.02.06 20:26
Ach du Sch**ße....
Es ist nämlich ein Schulprojekt....und ich habe mir bist jetzt nur den Kopf zerbrochen wie ich das programmieren könnte.
Und nun ist zu spät noch ein anderes Projekt ->auszudenken->planen->programmieren...
Denn wenn ich das schon sehe, was du aufgeschrieben hast, "raucht" der Kopf....
Und dann noch die "längen"Angabe.... :D
Was soll ich denn jetzt machen...gibt es "abgespecktere" Varianten von meiner Idee?
Oder ähnliche Konfiguratoren, wo ich mir den Code etwas "ansehen" kann...?
Gruß
Narses - Mo 20.02.06 20:33
Moin!
KoPhi hat folgendes geschrieben: |
Es ist nämlich ein Schulprojekt....und ich habe mir bist jetzt nur den Kopf zerbrochen wie ich das programmieren könnte.
Und nun ist zu spät noch ein anderes Projekt ->auszudenken->planen->programmieren... |
Schüler... :roll: immer das Gleiche... :mahn: :wink:
KoPhi hat folgendes geschrieben: |
Was soll ich denn jetzt machen... |
Dich rechtzeitig mit Hausaufgaben beschäftigen, zum Beispiel :!:
KoPhi hat folgendes geschrieben: |
gibt es "abgespecktere" Varianten von meiner Idee? |
Also wenigstens das solltest du jetzt aber mal selbst überlegen, findest du nicht?
Trotz Standpauke, wir helfen hier grundsätzlich gerne; aber jetzt ist es spätestens Zeit, mal selber mit dem Denken anzufangen. Also, deine Vorschläge... !?
cu
Narses
Marco D. - Mo 20.02.06 20:33
KoPhi hat folgendes geschrieben: |
Was soll ich denn jetzt machen...gibt es "abgespecktere" Varianten von meiner Idee?
|
Was habt ihr denn für eine Aufgabenstellung bekommen? Es heißt doch wohl nicht "Ey Leute, programmiert mal was zur nächsten Woche!" Wenn du das Prinzip soweit änderst, dass du den Benutzer sein Budget eingeben lässt, und dann guckst, was er haben will und sagst ihm, ob das Geld ausreicht. Du könntest das soweit auch machen, dass du ihm vorschlägst "512 MB sind zuviel. Aber für ihr Geld bekommen sie das gewünschte Paket nur mit 256 MB" oder so. Was meinst du?
KoPhi - Mo 20.02.06 20:47
Es sind in dem Sinne keine Hausaufgaben....^^
Wir haben die Aufgabe vor einer Woche bekommen und habe jetzt noch knapp 3 Wochen Zeit.
"Jeder kann ein "Spiel", "nützliches Programm" oder "Tests (IQ, Liebes usw)" programmieren."
Jedem ist überlassen, was er programmmieren möchte.
Alles ist möglich...
Und ich hatte eben die Idee mit dem PC-Konfigurator!
Habe mich eben die letzte Woche mit herausfinden und recherchieren von Art und Weise der Programmierung/Planung beschäftigt.
Ich programmiere eben erst ein halbes Jahr und wollte aber ein etwas aufwändigeres Projekt herstellen.
Das es nun so "aufwändig" ist...hätte ich nicht gedacht.
@ Koller
Ja, das ist auch eine Möglichkeit. Ich brauche dann bloß noch mehr Artikel damit ich etwas zum runtersteigern habe...
Ich werde mal versuchen..
Gruß
Marco D. - Mo 20.02.06 20:49
Kauf dir doch ne PC-Welt. Dort sind ne Menge Listen mit aktueller Hardware+Preisen.
KoPhi - Mo 20.02.06 21:02
@ Koller
Mit der Hardware habe ich kein Problem.
Ich weiß welche Hardware zu welchem Anwender passt und welche Hardware gerade aktuell -> und gut bzw. Preis/Leistung hat
@ Narses
Ich werde es mir mal angucken!
Auch wenn der Lehrer hier reingucken würde, ich denke das wäre kein Problem, denn bei dem Stoff, den du angesprochen hast sind wir noch lange nicht.
Gruß
KoPhi - Di 28.02.06 21:21
Hi,
da bin ich wieder :wink:
Das Programm habe ich nun geschrieben....es fehlt mir nur noch die Ausgabe und einige Kleinigkeiten bzw. "Schmankerl" ^^
1. Wie gebe ich Text in der ComboBox aus?
2. Wie programmiere ich die ProgressBar
3. Was gibt es sonst noch für "Features" von Delphi die man einbauen könnte (sollte für ein PC-Konfigurator schon passen)?
Gruß
AXMD - Di 28.02.06 21:23
Bitte pro Topic nur eine Frage. Die Forensuche ist manchmal auch sehr hilfreich.
AXMD
KoPhi - Di 28.02.06 21:29
Hi AXMD,
es gehört doch zum Topic dazu!? (PC-Konfigurator programmieren - Vorschläge und Hilfe)
Zu meinem Hauptproblem "ComboBox Ausgabe" habe ich hier nichts gefunden...
Oder ich verwende die falschen Schlüsselwörter...?!
Gruß KoPhi
Narses - Di 28.02.06 22:44
Moin!
KoPhi hat folgendes geschrieben: |
Zu meinem Hauptproblem "ComboBox Ausgabe" habe ich hier nichts gefunden... |
Das wundert minch auch nicht, weil ich mir nur schwer vorstellen kann, was du damit meinst... :gruebel:
Vielleicht mal ein Beispiel? Und wenn ich ehrlich bin, würde mich auch mal der Code und dein Ansatz interessieren (nachdem ich dir Tipps dazu gegeben habe)... magste mal zeigen? :wink:
cu
Narses
KoPhi - Di 28.02.06 23:16
Hi Narses,
schön dich wieder zu sehen :D
Ich möchte gerne meine Ausgabe der Konfiguration in mehreren ComboBoxen haben. Also nicht Editfeldern oder Label sondern in ComboBox. Da Teile der Konfiguration später auch Updates haben (z.B Grafikkarte xxxx für 100€ UPDATE Grafikkarte yyyy für 150€). Und ich möchte eben das die optische Ausgabe der Daten in ComboBoxen erfolgt.
Im mom kann ich den Code leider nicht zeigen...da er auf dem anderen Rechner ist.
Er ist auch etwas abgewandelt worden. :lol:
Habe die Preisbegrenzung herausgenommen....so lässt es sich gleich etwas einfacher proggen..
Im Grunde besteht er jetzt aus vielen verzweigten IF-'s
Gruß
Narses - Di 28.02.06 23:22
Moin!
KoPhi hat folgendes geschrieben: |
ich möchte eben das die optische Ausgabe der Daten in ComboBoxen erfolgt. |
Du könntest die entsprechende ComboBox (also z.B. für Grafikkarte) mit allen möglichen Werten füllen und dann den ItemIndex setzen, um das gewählte Objekt anzuzeigen. Das sollte es doch tun.
KoPhi hat folgendes geschrieben: |
Im mom kann ich den Code leider nicht zeigen... |
Schade, machste noch? :wink:
KoPhi hat folgendes geschrieben: |
Habe die Preisbegrenzung herausgenommen....so lässt es sich gleich etwas einfacher proggen.. |
Tja, das hatte ich mir schon fast gedacht. :D Ehrlich gesagt wird das den Lehrer sicher nicht freuen, da das eigentlich der "Witz" bei so einer Aufgabe ist... :|
cu
Narses
PS: Wann ist denn Abgabetermin? :wink:
KoPhi - Di 28.02.06 23:31
Hi,
ich wollte die ComboBox nur nehmen, weil sie schöner aussieht als Edit und Label...^^ (gibt es Alternativen?)
Naja, der Lehrer konnte mir auch nicht so recht eine Antwort auf das Vorhaben geben....er wollte auch einige Sachen eingrenzen also "einfache Abfrage nur"...
Naja...Programme wie Testfragen mit Radiobuttons ...sind ja auch nichts besonderes...deshalb denke ich wird es kein Problem sein...
Ich werde das Programm noch etwas "ergonomischer" gestalten und einige Features reinbauen (nach den ich hier ja gefragt hatte)...dazu gutes Layout und verständliche Texte....und es sollte reichen...
Termin ist noch etwas hin....
Gruß
Narses - Di 28.02.06 23:38
Moin!
KoPhi hat folgendes geschrieben: |
ich wollte die ComboBox nur nehmen, weil sie schöner aussieht als Edit und Label...^^ (gibt es Alternativen?) |
Es gibt fast immer Alternativen; aber ich denke auch, dass die ComboBoxen hier durchaus Sinn machen, so hat man die ausgewählte Konfig auf einen Blick und kann ggfs. noch was manuell "nachbessern". In diesem Zusammenhang: also das Minimum sollte aber ein aktuell berechneter Preis aus den ComboBox-Auswahlen sein! :wink:
KoPhi hat folgendes geschrieben: |
Naja, der Lehrer konnte mir auch nicht so recht eine Antwort auf das Vorhaben geben....er wollte auch einige Sachen eingrenzen also "einfache Abfrage nur"... |
Der Lehrer wollte dir also sagen: "mach dir mal ein paar Gedanken, was du tun willst", quasi so, also wollte er sehen, ob du auch ein bischen mitdenken kannst/willst/möchtest... ? :D Wie untypisch für so eine Aufgabe... :wink:
KoPhi hat folgendes geschrieben: |
Naja...Programme wie Testfragen mit Radiobuttons ...sind ja auch nichts besonderes...deshalb denke ich wird es kein Problem sein... |
Genau deshalb würde ich sagen, ist dein "Trumpf" eher mager ausgefallen... :gruebel: Oder?
KoPhi hat folgendes geschrieben: |
Termin ist noch etwas hin.... |
Sag dochmal ein Datum! :D
cu
Narses
KoPhi - Di 28.02.06 23:47
Die Aufgabe habe ja immer noch ich mir selber ausgedacht.
Und ein Trumpf kann man immer nur haben, solange man ihn "beherrscht" und ich bin eben in der Programmierung nicht soweit.
Vorher denkt man immer...."alles ist leicht"... :lol:
Was willst du mit dem Datum? Mir nachspionieren? :lol: (ich weiß es im Mom echt nicht)
Du könntest mir ja noch ein paar Tipps geben, womit ich das Programm etwas "tunen" kann....(so steigt die Chance eines Trumpfes) ^^
Gruß
Narses - Di 28.02.06 23:57
Moin!
KoPhi hat folgendes geschrieben: |
Die Aufgabe habe ja immer noch ich mir selber ausgedacht. |
Ich sehe aber folgende "Unschönheit" dabei: du hast dir ein Ziel gesetzt, es aber nicht erreicht... :wink:
KoPhi hat folgendes geschrieben: |
Und ein Trumpf kann man immer nur haben, solange man ihn "beherrscht" und ich bin eben in der Programmierung nicht soweit. |
Wahrhaftig weise Erkenntnis! :wink: (Sag mal, in welcher Klasse bist du eigentlich?)
KoPhi hat folgendes geschrieben: |
Was willst du mit dem Datum? Mir nachspionieren? :lol: (ich weiß es im Mom echt nicht) |
Nein :lol:, was hätte ich davon; ich will nur nicht "vorschnell" helfen... :mrgreen:
KoPhi hat folgendes geschrieben: |
Du könntest mir ja noch ein paar Tipps geben, womit ich das Programm etwas "tunen" kann....(so steigt die Chance eines Trumpfes) |
Tja, ohne das Prog mal gesehen zu haben, ist das aber schwer. Also, zeig her, dann sehen wir weiter. :wink:
cu
Narses
Delete - Mi 01.03.06 00:05
tja, knapp 20 minuten um den code für den konfigurator zu schreiben. fertig bis auf ein paar kleinigkeiten. ich bin begeistert.
möchtest du uns nicht mal den genialen code zeigen? würd mich echt interessieren.
PS: und ich wollt dir grad vorschlagen das ganze in prolog zu machen....., das hat sich jetzt wohl erübrigt.
Narses - Mi 01.03.06 02:53
Moin!
Naja, soo schwer ist das ganze nun auch wieder nicht; sicher, dass du eine Optimierung nicht doch vielleicht hinkriegst? :wink:
Konnte mir einfach nicht vorstellen, dass das so schwer sein soll und hab deshalb mal ein kleines Testproggi draus gemacht: ist im Anhang (wenn der Anhang nicht da sein sollte, Seite ggfs. mehrfach neuladen, ist ein Bug in der aktuellen Forensoftware) zum Ausprobieren fertig übersetzt.
Damit ich nicht deine Hausaufgaben mache, werde ich den kompletten Quelltext des Projektes erst nach dem 20.03. hier reinstellen... :|
Da ich dir aber nicht vorführen will, dass ich sowas kann (davon hast du ja nix :rofl:), hier die entscheidende Prozedur (die dir zwar so auch nix nutzt, aber zumindest der MiniMax-Algo sollte sich erkennen lassen; das sind 3 Schleifen, wobei eine davon schon wieder eine Optimierung ist, das ist nicht schwer; der "Trick" liegt einfach in der geschickten Datenhaltung, wie ich schonmal anmerkte):
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55:
| procedure TForm1.BtnCalcClick(Sender: TObject); var Soll,i,j: Integer;
function Prio2Kat(const PrioIndex: Integer): Integer; begin Result := Integer(Prio.Items.Objects[PrioIndex]); end;
procedure ResetKat(const Index: Integer); begin Kat[Prio2Kat(Index)].ItemIndex := 0; KatChange(Self); end;
procedure Optimize(const Index: Integer); var ikat: Integer; begin ResetKat(Index); ikat := Prio2Kat(Index); Log.Lines.Add('Optimiere Kategorie '+Werte[ikat].Symbol); while ( (Kat[ikat].ItemIndex < Kat[ikat].Items.Count-1) and (SelValue > Soll) ) do begin Kat[ikat].ItemIndex := Kat[ikat].ItemIndex +1; KatChange(Self); Log.Lines.Add(' '+KatA.Text+','+KatB.Text+','+KatC.Text+' Wert: '+Current.Text); end; end;
begin Log.Clear; Soll := StrToIntDef(Budget.Text,500); Budget.Text := IntToStr(Soll); for i := 0 to 2 do ResetKat(i); Log.Lines.Add('Maximalauswahl getroffen, Wert: '+Current.Text); for i := 2 downto 0 do begin Optimize(i); if (SelValue < Soll) then begin Log.Lines.Add('Soll unterschritten, mögliche Aufwertung prüfen:'); for j := i+1 to 2 do Optimize(j); end; end; if (SelValue > Soll) then Log.Lines.Add('Budget reicht nicht aus!'); end; |
Vielleicht motiviert das ja noch ein bischen. Falls du also doch noch mal an die Optimierung gehen willst, kannst du ja ruhig weiter hier Fragen, wenn dein Code nicht klappen sollte. :wink:
cu
Narses
//EDIT: Ich seh grade, dass sich die Unterkategorie-Optimierung noch verbessern ließe, wenn man bei allen bis auf die aktuell untergeordnete Kategorie zuerst das Minimum auswählt und nicht bei der letzten Auswahl belässt (was aber in der Praxis kaum eine Rolle spielen dürfte, theoretisch aber einen Unterschied machen könnte).
Narses - Mi 22.03.06 00:44
Moin!
Hier also der Quelltext der obigen Anwendung, wie angekündigt.
cu
Narses
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!