Projekt: Raumverwaltung #1

Hi,
über die Winterferien verfolge ich für den Informatik unterricht ein neues Projekt. Und werde darüber hier im Blog berichten.

Näheres zum Projekt im Anhang.

Geplant ist übrigens nicht alles neu zu Programmieren, sondern eher aus bestehenden, etwas neues zu machen. Deshalb wer anregungen hat, was man als Grundlage nutzen könnte, immer her mit den tips…

cu an other time
on an other place

der bagalutenGregor


Projekt: Raumverwaltung
Author : Christopher-Daniel Gregorczyk
Fach : Datenverarbeitung
Klasse : BOS 10
Lehrer : Herr xxxxx

Anwendungsziel:

  • Eine Datenbankgestützte Raumverwaltung, für einen Schulbetrieb mit Mehreren Standorten!
  • Es soll die Möglichkeit bestehen über ein Kalendermodul die gepflegten Räume zu Buchen, diese Buchungen müssen Freigegeben werden.
  • Die Verwaltung der Daten soll über eine Ausgeprägte Zugriffsstruktur, mit unterschiedlichen Rollen geschehen.

Module:

  • Raumkatalog (m)
  • Raumbuchung (m)
  • Kalender (m)
  • ToDo (k)
  • Reminder (o)
  • Userverwaltung (m)
    • Ausbaustuffe max (k)

(m) muss Kreterien (k) kann kreterien (o) optionale kreterien

Eingesetzte Technik:

  • PHP 5
  • MySQL 5

Datenbank Tabellen:

  • Raum
    • RaumNr int – primary key AUTO_INCREMENT
    • Raumkurzbezeichnung Text
    • Standort int – foreign key
    • Ausstattungsart int – foreign key
    • Raumgröße int
    • Sitzplätze Longtext
  • Standort
    • Standort int – primary key AUTO_INCREMENT
    • Beschreibung Longtext
  • Ausstattungsart
    • AusstattungsartID int – primary key AUTO_INCREMENT
    • Ausstattungsart text
    • Beschreibung longtext
    • Kalender
    • KalenderNr int – primary key AUTO_INCREMENT
    • Datum von timestamp
    • Datum bis timestamp
    • User int – foreign key
    • Zweck Text
    • RaumNr int – foreign key
    • RaumInfo longtext
    • AenderungsDatum timestamp
    • Reserviert bool
  • User
    • UserID int – primary key
    • UserAlias text
    • UserPass
  • Gruppen
    • GruppenID int – primary key AUTO_INCREMENT
    • Beschreibung text
  • GruppenZugehoerigkeit
    • GZID int – primary key AUTO_INCREMENT
    • UID int – foreign key
    • GID int – foreign key

Nutzer Rollen:

  • Admin
    • Darf alles, kann alles …
  • SuperUser A
    • Schulleitung
      • Raumbuchungen freigeben
      • Freigaben zurückziehen
      • Zurückgewiesene Freigaben der Abt.Leiter dennoch Freigeben
      • Freigaben der Abt.Leiter zurückweisen
      • Räume Ändern
      • Räume Anzeigen
      • Räume Buchen
      • Eigene Buchungen zurückziehen
      • Kalender Anzeigen
      • Reminder
  • SuperUser B
    • Abteilungsleitung
      • Raumbuchungen der Abteilung freigeben
      • Freigaben zurückziehen
      • Räume der Abteilung Ändern
      • Räume Anzeigen
      • Räume Buchen
      • Eigene Buchungen zurückziehen
      • Kalender Anzeigen
      • Reminder
  • User
    • Lehrer
    • Schulbüro
      • Räume Anzeigen
      • Räume Buchen
      • Eigene Buchungen zurückziehen
      • Kalender Anzeigen
      • Reminder
  • Hausmeister
      • Kalender Anzeigen
      • ToDo Liste Abrufen
      • EMail Reminder
  • Gast
    • Schüler
    • Interessierte
      • Kalender Anzeigen
  1. Moin moin,

    ich empfehle Dir für Autorisierung (Rollen), Datenbankzugriff und Trennung von Benutzungsschnittstelle, Modell und Anwendungslogik (MVC pattern) das Zend Framework: http://framework.zend.com

    Für GUI im Browser ist ExtJS ein hervorragendes Framework (http://www.extjs.com). Frei, so lange man es nicht kommerziell verwendet. Einfach mal bißchen rumschnuppern auf deren Seite – damit kann man sehr tolle Oberflächen zaubern.

    Als Kalender könnte der Google Kalender hinhalten – als IFrame oder so. Da ist dann natürlich die Zugriffssteuerung nicht umsetzbar. Sicherlich gibt es auch eine API, mit der man auf den Kalender zugreifen kann. Das ist natürlich datenschutztechnisch sehr bedenklich, aber zur Illustration reicht es vollkommen.

    Raumkatalog und -buchung sind sehr spezielle Dinge, die solltest Du dann per Hand programmieren.

    In das Zend Framework und ExtJS muss man sich sehr lange reinlesen, dafür ist es anschließend um so effizienter in der Handhabung.

    Just my 2 cents,
    David