Soviel ich weiß gibt es gar keinen effizienten Algorithmus zur Lösung von diesem Problem, so wie ich das mal gehört habe, läuft das in exponentieller zeit, alles was man da machen kann ist im grunde ausprobieren...
Wenn du schon so etwas übles anfängst, dann solltest du aber wirklich nicht an erster stelle an irgendwelche kleinigkeiten wie "schüler", "datenbanken" und "textdateien" denken, daran wirds wohl nicht scheitern, wenn du einen gut optimierten algorithmus vorschlägst...
Und wenn du schon einen halbwegs ordentlichen Algorithmus hast, dann wärs auch verschwenderisch, sich auf Planung von irgendwelchen nachprüfungen zu beschränken. Bei Kiddies in Kindergärten, Kartons in Lagerhallen, Verhörspezialisten in Folterkammern, Schiffen in Werften, Nutten im Bordell, Kranken in Operationssälen usw. wäre der Algorithmus genauso anwendbar...
mach dir also erstmal keinen Kopf um die hübsche Verpackung (textdateien, datenbanken, gui und der ganze quatsch) und beschäftige dich mal mit dem Kern des Problems