![]() |
Bibliotheksverwaltung
Hey Leute...
Ich sitze total in der Patsche. Erstmal was ich machen soll : Ich soll eine Art Bibliotheksverwaltung mit Delphi programmieren,dazu soll ich iwie ein Stringgrid nutzen und die Buttons die man normalerweise macht ins Mainmenu hauen :shock: Ja.... ähm iwie mit Auto, ISBN, Buchtitel dann ausgeliehen oder nicht und wer aus welcher Klasse es ausgeliehen hat :shock: OMG! Jetzt war ich letzte Woche krank, als das erklärt wurde und muss das Mittwoch abgeben :pale: Ich habe das Programm schon gemacht, aber mit nem Memo und das soll so nicht sein... könnt ihr mir in irgendeiner Art und Weise helfen? Bin total fertig weil ich rein gar nichts mehr verstehe und auch nicht mit den Stringgrids klarkomme...soll ja auch alles noch gespeichert weden und geladen und so... versteht ihr mein Problem?? LG, Susi |
Re: Bibliotheksverwaltung
Zeig doch mal, was Du bisher hast.
Dann können wird Dir gerne erklären, was Du umstellen mußt. Sonst sieht das hier doch zu sehr nach Hausaufgaben machen aus und dabei helfen wir zwar gerne, machen mußt Du sie aber selber ;-) |
Re: Bibliotheksverwaltung
okay, dann ist hier der Quelltext...
Delphi-Quellcode:
nit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Menus, StdCtrls; const max=100; type Bibo=record Buchtitel:string[20]; ISBN:byte; Autor:string[20]; Name:string[20]; Vorname:string[20]; Klasse:string[20]; ausgeliehen:boolean; end; f=array[1..max] of Bibo; TBibliothekshilfe = class(TForm) MainMenu1: TMainMenu; Datei1: TMenuItem; Speichern1: TMenuItem; Laden1: TMenuItem; Lschen1: TMenuItem; Beenden1: TMenuItem; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Edit4: TEdit; Edit5: TEdit; Edit6: TEdit; Label7: TLabel; Label8: TLabel; Label9: TLabel; Edit7: TEdit; Edit8: TEdit; Edit9: TEdit; RadioButton1: TRadioButton; RadioButton2: TRadioButton; Label11: TLabel; Button1: TButton; Button2: TButton; Button3: TButton; ListBox1: TListBox; Eintragndern1: TMenuItem; Button4: TButton; procedure Button4Click(Sender: TObject); procedure Eintragndern1Click(Sender: TObject); procedure ListBox1Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Beenden1Click(Sender: TObject); procedure Speichern1Click(Sender: TObject); procedure Laden1Click(Sender: TObject); procedure Lschen1Click(Sender: TObject); procedure FormActivate(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Bibliothekshilfe: TBibliothekshilfe; implementation var Feld:f; i:integer; {$R *.dfm} procedure TBibliothekshilfe.Beenden1Click(Sender: TObject); begin close; end; procedure Speichern(sp:f); var x:integer; datei:file of Bibo; begin assignfile(datei,'C:\Bibo.txt'); rewrite(datei); For x:=1 to i do write(datei,Feld[x]); closefile(datei); end; procedure TBibliothekshilfe.Speichern1Click(Sender: TObject); var x:integer; astring:string; begin i:=i+1; Feld[i].Buchtitel:=edit1.Text; Feld[i].ISBN:=StrToInt(edit2.Text); Feld[i].Autor:=edit3.Text; Feld[i].Name:=edit4.Text; Feld[i].Vorname:=edit5.Text; Feld[i].Klasse:=edit6.Text; Feld[i].ausgeliehen:=radiobutton1.Checked; Speichern(Feld); Listbox1.Items.clear; for x:=1 to i do begin astring:='Buch "'+Feld[x].Buchtitel+'" (ISBN: '+inttostr(Feld[x].ISBN)+') ist '; if Feld[x].ausgeliehen then astring:=astring+'ausgeliehen an '+Feld[x].vorname+' '+Feld[x].name+'.' else astring:= astring+' nicht ausgeliehen.'; listbox1.Items.add(astring); end; end; procedure Laden(var la:f); var datei:file of Bibo; begin i:=0; assignfile(datei,'C:\Bibo.txt'); reset(datei); WHILE not EOF(datei) DO begin i:=i+1; read(datei,la[i]); end; closefile(datei); end; procedure TBibliothekshilfe.Laden1Click(Sender: TObject); var x:integer;astring:string; begin Laden(Feld); listbox1.Items.Clear; For x:=1 to i DO begin astring:='Buch "'+Feld[x].Buchtitel+'" (ISBN: '+inttostr(Feld[x].ISBN)+') ist '; if Feld[x].ausgeliehen then astring:=astring+'ausgeliehen an '+Feld[x].vorname+' '+Feld[x].name+'.' else astring:= astring+' nicht ausgeliehen.'; listbox1.Items.add(astring); end; end; procedure TBibliothekshilfe.Lschen1Click(Sender: TObject); begin edit1.Clear; edit2.Clear; edit3.Clear; edit4.Clear; edit5.Clear; edit6.Clear; listbox1.items.clear; end; procedure TBibliothekshilfe.FormActivate(Sender: TObject); begin edit1.Clear; edit2.Clear; edit3.Clear; edit4.Clear; edit5.Clear; edit6.Clear; listbox1.Items.clear; end; procedure TBibliothekshilfe.FormCreate(Sender: TObject); begin i:=0; end; procedure TBibliothekshilfe.Button1Click(Sender: TObject); var x:integer; begin for x:=1 to length(feld) do if uppercase(Feld[x].Buchtitel)=uppercase(edit7.text) then begin showmessage('Das Buch mit dem Titel '+Feld[x].Buchtitel+' wurde gefunden!'); if Feld[x].ausgeliehen then showmessage('Es ist momentan an den Schüler '+Feld[x].Vorname+' '+feld[x].name+ ' ausgeliehen.') else showmessage('Es ist momentan nicht ausgeliehen!'); end; end; procedure TBibliothekshilfe.Button2Click(Sender: TObject); var x:integer; begin for x:=1 to length(feld) do if (Feld[x].ISBN)=strtoint(edit8.text) then begin showmessage('Das Buch mit dem Titel '+Feld[x].Buchtitel+' und der ISBN '+ inttostr(Feld[x].isbn)+' wurde gefunden!'); if Feld[x].ausgeliehen then showmessage('Es ist momentan an den Schüler '+Feld[x].Vorname+' '+feld[x].name+ ' ausgeliehen.') else showmessage('Es ist momentan nicht ausgeliehen!'); end; end; procedure TBibliothekshilfe.Button3Click(Sender: TObject); var x:integer; begin for x:=1 to length(feld) do if uppercase(Feld[x].autor)=uppercase(edit9.text) then begin showmessage('Das Buch mit dem Autor '+Feld[x].autor+' und der ISBN '+ inttostr(Feld[x].isbn)+' wurde gefunden!'); if Feld[x].ausgeliehen then showmessage('Es ist momentan an den Schüler '+Feld[x].Vorname+' '+feld[x].name+ ' ausgeliehen.') else showmessage('Es ist momentan nicht ausgeliehen!'); end; end; procedure TBibliothekshilfe.ListBox1Click(Sender: TObject); begin edit1.Text:=Feld[Listbox1.itemindex+1].Buchtitel; edit2.Text:=inttostr(Feld[Listbox1.itemindex+1].ISBN); edit3.text:=Feld[Listbox1.itemindex+1].Autor; edit4.text:=Feld[Listbox1.itemindex+1].name; edit5.text:=Feld[Listbox1.itemindex+1].vorname; edit6.text:=Feld[Listbox1.itemindex+1].klasse; Radiobutton1.Checked:=Feld[Listbox1.itemindex+1].ausgeliehen; Radiobutton2.Checked:=not Radiobutton1.Checked; end; procedure TBibliothekshilfe.Eintragndern1Click(Sender: TObject); var x:integer; astring:string; begin if listbox1.itemindex<0 then exit; if messagedlg('Der in der Listbox angeklickte Eintrag wird mit den neu eingegebenen Daten überschrieben. Soll ich fortfahren?',mtconfirmation,[mbyes,mbno],0)=mryes then begin Feld[Listbox1.itemindex+1].Buchtitel:=edit1.text; Feld[Listbox1.itemindex+1].ISBN:=strtoint(edit2.text); Feld[Listbox1.itemindex+1].Autor:=edit3.text; Feld[Listbox1.ItemIndex+1].name:=edit4.text; Feld[Listbox1.itemindex+1].vorname:=edit5.text; Feld[Listbox1.itemindex+1].klasse:=edit6.text; Feld[listbox1.itemindex+1].ausgeliehen:=radiobutton1.checked; Speichern(Feld); Listbox1.Items.clear; for x:=1 to i do begin astring:='Buch "'+Feld[x].Buchtitel+'" (ISBN: '+inttostr(Feld[x].ISBN)+') ist '; if Feld[x].ausgeliehen then astring:=astring+'ausgeliehen an '+Feld[x].vorname+' '+Feld[x].name+'.' else astring:= astring+' nicht ausgeliehen.'; listbox1.Items.add(astring); end; end; end; procedure TBibliothekshilfe.Button4Click(Sender: TObject); var x,y,z:integer; max:byte; dummy:bibo; astring:string; begin max:=0; for x:= 1 to i do begin z:=0; max:=0; for y:=x to i do if max<Feld[y].isbn then begin max:=Feld[y].isbn; z:=y; end; if z>0 then begin dummy:=Feld[x]; Feld[x]:=Feld[z]; Feld[z]:=dummy; end; end; Listbox1.Items.clear; for x:=1 to i do begin astring:='Buch "'+Feld[x].Buchtitel+'" (ISBN: '+inttostr(Feld[x].ISBN)+') ist '; if Feld[x].ausgeliehen then astring:=astring+'ausgeliehen an '+Feld[x].vorname+' '+Feld[x].name+'.' else astring:= astring+' nicht ausgeliehen.'; listbox1.Items.add(astring); end; end; end. |
Re: Bibliotheksverwaltung
häng bitte mal das ganze projekt gepackt an, sodass man es direkt in Delphi aufmachen kann. Danke!
|
Re: Bibliotheksverwaltung
Liste der Anhänge anzeigen (Anzahl: 1)
achso, sry...
|
Re: Bibliotheksverwaltung
hmm Leute...habt ihr jetzt iwie ne Lösung parat?? :gruebel:
|
Re: Bibliotheksverwaltung
Also du musst statt der Listbox einfach eine TStringGrid in die Form einfügen ( Such einfach mal, falls du sie noch nicht gefunden hast). Dann würde ich dort einfach umändern bei den Eigenschaften:
ColCount : 6 --> da du ja 6 Spalten brauchst FixedRows: 0 --> würde nur eine Fixierte Reihe nehmen in der du alle einteilungen titels. Dann würde ich in der FormCreate- Procedure dies ändern:
Delphi-Quellcode:
Dies bewirkt, dass du in die angegebenen Zeilen der StringGrid die jeweilgen Strings schreibst. Schau es dir dann einfach mal an.
procedure TBibliothekshilfe.FormCreate(Sender: TObject);
begin i:=0; StringGrid1.Cells[0,0] := 'Buchtitel'; StringGrid1.Cells[1,0] := 'ISBN'; StringGrid1.Cells[2,0] := 'Autor'; StringGrid1.Cells[3,0] := 'Name'; StringGrid1.Cells[4,0] := 'Vorname'; StringGrid1.Cells[5,0] := 'Klasse'; end; Dann musst du bei der Eingabe statt dem Eintragen in Listbox, die Daten in die StringGrid übergeben. Du siehst ja oben, wie ich es gemacht hast und so musst du es auch einfach machen (nur statt der 0 eine Variable einsetzen, da du ja immer in eine neue Zeile schreiben möchtest). Wichtig: Denke auch daran, dass irgendwann alle Reihen voll sind, also musst du immer am Anfang des Eintragens der Daten die Reihen der StringGrid erhöhen ( StringGrid1.ColCount := StringGrid1.ColCount +1; ) Hoffe ich hab soweit alles gut beschrieben, den Rest dürfest du so schaffen. Wenn du noch fragen hast bzw dir etwas unklar ist, dann sag bescheid. |
Re: Bibliotheksverwaltung
ja ich hab noch so einige Fragen...
ich hab was vergessen und zwar soll bei [0,0] eine laufende Nummer oder sowas rein, ich glaube, dass muss ich iwie mit ner Schleife machen...aber wie?? und wie meinst das mit der variablen? |
Re: Bibliotheksverwaltung
Wie meinst du das mit der laufenden Nummer?
Das dann in der ersten Spalte einfach eine fortlaufende Nummerierung ist. Also dann in der StringGrid: (die Trennstriche stehen für die trennung der Zellen) 1 | Buchname1 | ISBN... | ... 2 | Buchname2 | ISBN... | 3 | Buchname3 | ISBN... | 4 | Buchname4 | ISBN... | 5 | Buchname5 | ISBN... | 6 | Buchname6 | ISBN... | 7 | Buchname7 | ISBN... | Dann kannst du das in der Formcreate auch einfach weglassen. Dann musst du bei der Eingabe immer schreiben:
Delphi-Quellcode:
--> Die fortlaufende Nummer
StringGrid1.Cells[0,X] := X + 1;
Delphi-Quellcode:
--> Das ist dann der Buchtitel
StringGrid1.Cells[1,X] := Feld[X].Buchtitel;
usw. (Das X ist eine Variable des Typs Integer, so wie du sie bei dir schon hast) |
Re: Bibliotheksverwaltung
Sry aber ich versteh nur Bahnhof :pale:
die Theorie kapier ich ja, ich weiß, wie du es meinst, aber ich kann es absolut nicht umstzen :( |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:44 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz