Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Bibliotheksverwaltung (https://www.delphipraxis.net/145897-bibliotheksverwaltung.html)

funkuchn 10. Jan 2010 15:26


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

TBx 10. Jan 2010 15:32

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 ;-)

funkuchn 10. Jan 2010 15:39

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.

TBx 10. Jan 2010 15:41

Re: Bibliotheksverwaltung
 
häng bitte mal das ganze projekt gepackt an, sodass man es direkt in Delphi aufmachen kann. Danke!

funkuchn 10. Jan 2010 15:43

Re: Bibliotheksverwaltung
 
Liste der Anhänge anzeigen (Anzahl: 1)
achso, sry...

funkuchn 10. Jan 2010 16:23

Re: Bibliotheksverwaltung
 
hmm Leute...habt ihr jetzt iwie ne Lösung parat?? :gruebel:

PPaB 10. Jan 2010 16:29

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:
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;
Dies bewirkt, dass du in die angegebenen Zeilen der StringGrid die jeweilgen Strings schreibst. Schau es dir dann einfach mal an.

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.

funkuchn 10. Jan 2010 16:34

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?

PPaB 10. Jan 2010 16:51

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:
StringGrid1.Cells[0,X] := X + 1;
--> Die fortlaufende Nummer
Delphi-Quellcode:
StringGrid1.Cells[1,X] := Feld[X].Buchtitel;
--> Das ist dann der Buchtitel

usw. (Das X ist eine Variable des Typs Integer, so wie du sie bei dir schon hast)

funkuchn 10. Jan 2010 16:56

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 13:51 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz