Skip to content
/ bangbib Public

Bangbib ist ein Programm zur Verwaltung einer Lehrmittelbibliothek an Schulen

License

Notifications You must be signed in to change notification settings

hmt/bangbib

Repository files navigation

Bangbib

Bangbib ist eine einfach App zur Verwaltung einer Lehrmittelbibliothek an Schulen oder sonstigen Einrichtungen.

Eigenschaften

Bangbib bietet folgende Eigenschaften zur Verwaltung:

  • Scannerunterstützung zum Einlesen von Barcodes
  • Buchtitel können als Block importiert werden
  • Nutzer können als Liste ebenfalls im Block importiert werden
  • Nutzer können Angaben zu Lerngruppen und Klassen mitbringen
  • Medien können an einzelne Nutzer verliehen werden
  • Gruppenauseihe, wenn gleiche Medien an mehrere Nutzer im Block verliehen werden
  • Druckansichten für Gruppenausleihe, Einzelnutzer und säumige Nutzer

Hinweis zur Nutzung

Es gibt momentan einen Installer für Windows, Mac und Linux.

Bangbib erstellt eine einfache SQLite-Datenbank im Einstellungsverzeichnis, die auch mit anderen Programmen gelesen werden kann. Diese Datenbank kann man selbstverständlich auch sichern.

Nutzer, müssen immer vollständig importiert werden. Alle Nutzer in der Datenbank, die keine Medien geliehen haben, werden sonst gelöscht. Dies zum Datenschutz der Nutzer, die in der Regel nicht für immer in der Datenbank verbleiben sollten.

Nutzer, die Medien geliehen haben, werden nicht gelöscht.

Gesperrte Nutzer können in der Gruppenleihe keine Bücher leihen.

Scanner

Der Scannerstatus wird oben im Menü angezeigt.

  • <- ist die Rückgabe. Ist das Feld blau, nimmt bangbib Bücher entgegen. Gescannte Medien werden zurückgebucht.
  • -> ist die Ausleihe. Ist das Feld gelb, kann in der aktuellen Ansicht ein Titel verliehen werden.
  • +1 bedeutet, dass Medientitel, die nicht in der Datenbank sind, hinzugefügt werden können.

Bangbib ist sehr pragmatisch im Umgang mit neuen Titeln. Kommt ein unbekannter Barcode vor, fragt Bangbib, was mit dem Barcode passieren soll. Entweder man ordnet den Barcode einem bekannten Titel zu oder erstellt einen neuen Titel. In der Gruppenausleihe fragt Bangbib nur beim ersten Titel nach und geht dann im weiteren Verlauf davon aus, dass alle nachkommenden Titel bis zum Gruppenende den gleichen Titel haben, wenn der Barcode unbekannt ist. Wird ein Titel mit bekanntem Barcode hinzugefügt, der aber nicht dem Titel entspricht, wird ein Fehler gemeldet.

Eine Nutzung ohne Scanner ist möglich, aber unhandlich, da die Barcodeingabe mit Escape gestartet und dann der Barcode von Hand angegeben werden muss. Ein Scanner-Prefix kann in den Einstellungen festgelegt werden.

Drucken

Nach Beendigung der Gruppenausleihe wird automatisch in die Druckansicht gewechselt. Mit Drücken der Taste p wird gedruckt. Die Einstellungen bieten aber auch eine Autodruck-Funktion und die Möglichkeit die Druckausgabe nur digital als PDF in einem Ordner abzulegen.

In der Nutzerübersicht kann man oben im Menü auf den Drucken-Knopf drücken und die Druckansicht wird gezeigt.

Einrichtung der Bibliothek

Nutzer werden am besten aus einer Datenbank generiert. Mit Schild geht z.B. dieser Befehl:

SELECT s.ID, s.Name, s.Vorname, a.Jahr, s.Klasse, ff.FachKrz, f.FachLehrer
  FROM schueler AS s
  LEFT JOIN schuelerlernabschnittsdaten AS a ON (a.Schueler_ID = s.ID AND a.Jahr = s.AktSchuljahr)
  LEFT JOIN schuelerleistungsdaten AS f ON (f.Abschnitt_ID = a.ID)
  LEFT JOIN eigeneschule_faecher AS ff ON (ff.ID = f.Fach_ID)
  WHERE Status = 2 AND Geloescht = "-" AND Gesperrt = "-"
  ORDER BY Klasse, Name ASC

Anschließend noch die Kopfzeile hinzufügen.

Ansonsten bieten die meisten Schulverwaltungsprogramme eine Möglichkeit, CSV-Dateien zu erzeugen. Es ist kein Problem, wenn Schüler mehrfache Einträge haben, da sonst die Kurszugehörigkeit nicht abgebildet werden kann. Wichtig ist dabei eine identische ID in der ersten Spalte.

Eine mögliche CSV-Datei sieht so aus:

id|name|vorname|jahr|klasse|kurs|kurs_lehrer
3475|Meier|Steffi|2020|A19A2|DIFF SPI|DRA
3475|Meier|Steffi|2020|A19A2|MA|HEM
3475|Meier|Steffi|2020|A19A2|AOR|MIF
3475|Meier|Steffi|2020|A19A2|GFP|REE
3475|Meier|Steffi|2020|A19A2|HUS|DUW
3475|Meier|Steffi|2020|A19A2|SPGF|REU
3475|Meier|Steffi|2020|A19A2|RE|STI
3475|Meier|Steffi|2020|A19A2|DEKO|SWJ
3475|Meier|Steffi|2020|A19A2|EN|BOK

Nach dem Import kann anschließend in bangbib nach dem Namen der Schülerin, der Klasse oder dem Kurs gesucht werden, um entweder eine Einzel- oder Gruppenausleihe zu initiieren. Oder auch um einfach die Daten der Schülerin und ihren Leihverlauf zu sehen.

Lehrer können ebenfalls in bangbib importiert werden. Es gibt keinen besonderen Grund, aber es erschien mir praktisch, die Gruppe von Nutzern etwas anders zu behandeln, deswegen läuft der Import zusätzlich und kann aus Schild mit diesem Befehl gelesen werden:

SELECT ID, Nachname, Vorname, (SELECT Schuljahr FROM eigeneschule) AS jahr
FROM k_lehrer
WHERE Sichtbar="+";

Medientitel können massenhaft importiert werden. Dazu jeden Titel auf seine eigene Zeile setzen.

Neue Barcodes müssen nicht vor der Ausleihe dem System bekannt gemacht werden. Es reicht, wenn man dies bei der Erstausleihe erledigt.

Es gibt leider noch keine Funktion, wenn man trotzdem eine Serie von Barcodes mit dem gleichen Titel in Bangbib eingeben möchte, um z.B. in der Einzelausleihe auf das Nennen des Titels zu verzichten. Man kann sich hierbei aber helfen, wenn man mutig ist und einen SQL Befehl ausführen möchte. Dazu die datenbank.sqlite öffnen und folgenden Befehl anpassen und ausführen:

WITH RECURSIVE n(value) AS (
  SELECT 101
  UNION ALL
  SELECT value+1 FROM n
   WHERE value+1<=110
)
insert into medienexemplar (barcode, medienbezeichnung_id) select 'B'||printf('%03d',n.value),8 from n;

In diesem Fall würde das Barcodes von B101 bis B110 für den Medientitel mit der ID 8 erzeugen. Wichtig ist selbstverständlich, dass noch keine Barcodes aus dieser Serie existieren und eine Medienid 8 eingetragen ist.

Mehrere Benutzer

Bangbib ist für die Einzelplatznutzung konzipiert, um den Einrichtungsaufwand möglichst gering zu halten. Die Datenbank ist eine lokale SQLite-Datenbank und eine Netzwerkverbindung ist dementsprechend nicht notwendig. Während diese Festlegung in den meisten Fällen für kleinere Bibliotheken völlig ausreichend ist, hat eine netwerkbasierte Datenbank natürlich den Vorteil, dass man mehrere Clients mit bangbib betreiben könnte. Offiziell wird es das wohl vorerst nicht geben, aber in der Praxis hat sich gezeigt, dass man mit FUSE/sshfs eine durchaus praktikable Lösung zur Verfügung hat. Voraussetzung dafür ist eine Anbindung des regulären bangbib-clients an das Netz, SSH und ein entfernter Rechner, der ebenfalls Netzzugang und FUSE/sshfs installiert hat. Nun kann man per sshfs das Verzeichnis des bangbib-Clients lokal mounten und mit bangbib darauf zugreifen. Dazu muss der Pfad zur Datenbank in den bangbib-Einstellungen angepasst werden. Erste Test waren erfolgreich, bitte Backups machen!

Entwicklung

Bangbib kann auch ohne Installer ausprobiert werden. Dazu wird node benötigt und die für die jeweilige Plattform Entwicklertools, in diesem Fall gcc14 und SQLite-Header, damit die SQLite-Bibliothek kompiliert werden kann. Darüber hinaus noch node und npm. Ist alles soweit vorhanden, geht es so weiter:

git clone https://github.com/hmt/bangbib.git
cd bangbib
npm i
npm run postinstall
npm run dev

Damit wird bangbib gestartet und man kann loslegen.

Lizenz

Bangbib wird unter der MIT-Lizenz veröffentlich.