Personaleinsatz-Programm

  • VB.NET

Es gibt 16 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Personaleinsatz-Programm

    Moin Moin leute!!

    AAAlso ich bin momentan etwas überfordert.

    Ich möchte ein Personaleinsatz-Programm für eine Schule erstellen:

    Angaben:
    5 Klassen (2 Oberstufen, 3 Unterstufen) mit jeweils 31 Wochenstunden
    3 EDV Räume, 2 allgemeine Räume und eine Sporthalle
    1. bis 8. Stunde maximal pro Tag.
    7 Lehrer mit 24 Wochenstunden (+-2)
    Jeder Lehrer kann mindestens 2 Fächer unterrichten

    Ich möchte das Programm vorwiegend mit Microsoft Visual Basic 2008 Express Edition schreiben und dabei Daten aus einer Datenbank (Access 2003) auslesen.

    Das Programm soll in einem optisch vorgefertigten Stundenplan bei jeder Doppelstunde Lehrerdaten und Klassendaten auslesen und dann der Klasse einen Lehrer und ein Unterrichtsfach zuordnen und dabei folgende Faktoren berücksichtigen:
    Jeder Lehrer kann in einer Doppelstunde nur in einer Klasse unterrichten.
    Der Raum darf nicht doppelt belegt sein.
    Der Lehrer muss noch genug Wochenstunden zur Verfügung haben.
    Die Klasse muss noch genug Wochenstunden haben.
    Es muss berücksichtigt werden, ob ein EDV Raum oder die Sporthalle benötigt wird.

    Bisher hab ich in Access 4 Entitäten/Tabellen (Lehrer, Klasse, Raum, Fach) und die Beziehungen untereinander erstellt.
    In VB hab ich die Optik erstellt und mein erster Versuch des Verknüpfen der Datenbank mit VB hat mit Einfügen einer Tabelle in DataGridView auf meiner Form geendet.

    Wie schaffe ich es, dass er erstmal beim Eintragen eines Lehrers mit Fach aus der Datenbank herausliest, ob der Lehrer genug Stunden noch zur Verfügung hat und ob er das Fach unterrichtet.

    VIELEN DANK im Voraus!

    Mit freundlichen Grüßen
    ich verstehe nich ganz was du meinst :P sry

    also ich hab eine Datenbank mit 4 tabellen
    Tabelle Lehrer:
    Primärschlüssel: Lehrer_ID
    weitere: Name, Vorname, Adresse, PLZ, Ort, Unterrichtsfach 1, Unterrichtsfach 2, Sollstunden

    Tabelle Fach:
    Primärschlüssel: Fach_ID
    weitere: Bezeichnung, Stunden pro Woche, Lehrer, Raum

    Tabelle Klassen:
    Primärschlüssel: Klassen_ID
    weitere: Bezeichnung, Ober-/Unterstufe, Wochenstunden, Schüleranzahl

    Tabelle Raum:
    Primärschlüssel: Raum_ID
    weitere: Bezeichnung, Belegt, EDV

    thx
    zunächstmal scheinst du sehr richtig an die Sache ranzugehen: nämlich ohne Code, und erstmal konzipieren.

    Auch wesentliche Entitäten hast du bereits erfasst: Lehrer, Raum, Fach, Klasse

    Nun gehts drum, die in richtiger Weise einander zuzuordnen, sodass ein Datenmodell entsteht, was die Wirklichkeit richtig abbildet.
    Inne Datenbänkerei kennt man 2 Arten von Relation, nämlich die 1:n-Relation und die m:n-Relation.

    Dabei ist die m:n-Relation eiglich nur die Kurzbezeichnung zweier 1:n-Relationen, die auf eine gemeinsame untergeordnete Tabelle verweisen.

    Jo, guggemol die relationale GrundIdee, und lass mich wissen, ob verstanden, und ob das ühaupt neu für dich ist, weil so ganz datenmodelliermäßig unbeleckt scheinst du mir garnet zu sein :thumbsup:

    Anneres Thema: Lass erstmal die Finger vonne Datenbank.
    In .Net entwickelst du ein Datenmodell viel schneller und flexibler, wenn du DB-Programmierung ohne Datenbank betreibst.
    Das Datenmodell kannst du direkt im typDataset konzipieren, und .Net generiert dir gleich die Klassen daraus, und - wie das Tut zeigt - das Zeug kannste sogar auch gleich laden und speichern.
    Und im Designer kannst du datengebundene Oberflächen zusammenklicksen, sodass du in kürzester Zeit und mit annähernd null Code schoma eine funktional korrekte Anwendung erhälst (sieht üblicherweise sch... aus, aber Optik pimpen kann man ohne Ende ;))

    gugge vlt auch "DatasetOnly" auf Movie-Tuts
    Erst einmal Danke!

    Die Relationen 1:n und n:m sind mir bekannt. Z.B. braucht man für jede n:m eine weitere Tabelle. Wobei es doch auch 1:1 beziehungen gibt.

    Naja hätte nur einen Pluspunkt gegeben wenn ich es mit Access schaffe aber ich gucke mir ma das DB-Programmieren ohne Datenbank an.
    die Access-DB kannst du später noch hinterlegen - nur die Entwicklung geht wirklich schneller, wenn du das hintanstellst.
    Biste fertig - haste noch Zeit, kannste DB dranklatschen, wenns dich glücklich macht.

    Tatsächlich ist das bei dem klein Datenaufkommen aber nicht wirklich nötig.

    Zum Datenmodell: Was bei deinem Modell glaub fehlt ist eine Entität "UnterrichtsStunde".

    Eine UnterrichtsStunde würde über ForeignKeys eine Stunde mit einem Raum mit einem Lehrer mit einer Klasse zusammenbringen.

    Jeder Raum hat einen festen Satz Unterrichtsstunden pro Tag, oder Woche oderso, und deine Anwendung muß gucken, dass von den anneren Entitäten da jeweils auf eine Instanz verwiesen wird.

    Weil eine Unterrichtsstunde ohne Raum gehtnicht, ohne Lehrer geht nicht, ohne Klasse geht nicht.

    Na, iwie so in die Richtung - kann man vmtl. auch anners konzipieren, und ich hab das auch noch nicht fixnfertig ausgedacht.
    sieht prinzipiell gut aus, findich.

    Nur dass du immer noch die DB dahinter hast, das wird dir gewaltig Ärger machen.

    Etwa wieso ist "Bezeichnung" PrimKey, statt der ID?

    Und ich empfehle dringend mein Benamungs-Schema für DB-Entitäten
    Wenn das feste Regeln sind, dann versteht man so Screenies leichter, und die CodeNamen werden auch verständlicher generiert, und also wird der Code lesbarer.

    also mein Schema ganz sorgfältig studieren:
    Entitäten (Tabellen) Singular benennen, Primkey="ID", ForeignKey="ParentID", keine Interpunktion, keine Umlaute.
    Und alle Relationen mit DeleteRule.Cascade, UpdateRule.Cascade, AcceptRule.None.

    Da wäre also gleichma eine ganze Menge umzubauen, obwohl die Struktur glaub schoma hinhauen könnte.
    (Und mit der DB im Background kriegste da ziemlich schnell'n Vogel)
    Naja - mach die IDs einheitlich als Integer - was sonst?

    Obwohl vlt. kann man auch die Namen als Primkeys nehmen, aber ich würde auch da mein Schema anwenden: Primkeys=ID, dann gibts halt einen Lehrer mit der ID "W.Müller", das ist ja auch korrekt.
    Weil "W.Müller" ist eindeutig, und ist aber weder Vor- noch Nach-Name.

    Die Namen (IDs) von Fächern, Klassen und Räumen erfüllen ja ebenfalls das Eindeutigkeits-Kriterium - also ich hab noch nie so gearbeitet, aber könnte glaub möglich sein.
    Schade. Das Konzept hätte getaugt, und sogar das Datenmodell war eiglich fertig - wenn auch mit für mich ungewohnten PrimKeys.
    Aber bis morgen kriegt man da nix mehr zustande.
    Naja - wenn du begabt bist, kannst du DatasetOnly noch was reißen, also dass du ein TabControl machst, und 5 DatagridViews, je an eine Tabelle gebunden.
    Dazu halt ein Datei-Menü mit Load und Save.
    Dann kannst du schoma Lehrer, Räume, Klassen, Fächer anlegen - mit den Unterrichtsstunden müsstest du dir erarbeiten, wie man eine ComboboxDatagridViewColumn einrichtet - ist in vier Views erläutert - kannste auch hier nochmal nachfragen, aber ich hänge erst wieder ab ca. 22.00 wieder vor der Kiste.

    Jedenfalls wäre es schon möglich, basierend auf der Lade/Speicher-Funktionalität von DB-Programmierung ohne Datenbank bis morgen noch iwas zusammenzukloppen, was Daten schoma in strukturierter Weise erheben kann - auch wenns überhaupt nicht wie ein Stundenplan aussieht.