Main Menu

Show posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Show posts Menu

Messages - Volker Dirr

Report a Bug / Re: Incorrect directory name encoding
March 03, 2024, 05:32:32 PM
Yes. Maybe.
How to call that exetuable "uninstall".
Then it just tells you that you need to delete the working directory, the fet directory (but it shouldn't delete it. The human should do it, also because it can't remove itself) and it should ask if the settings should be cleared.
hmm... In fact this is only true for windows. hmm...
Report a Bug / Re: Incorrect directory name encoding
March 03, 2024, 05:20:22 PM
hmm... I think/hope that bug won't happen many times. Qt 5 will be end of life next year.

How about adding an execuatble that do nothing else than clearing the settings (of course it should ask first).

It might help in rare cases or if someone want to uninstall.
Report a Bug / Re: Incorrect directory name encoding
March 03, 2024, 01:31:25 PM
I wonder why there are in fact 2 of that strange directories.
Should be normally only one directory called "fet-results".
Did you replace that name by Cyrillic script? (And please answer Livius questions. They are more important.)
I released a new StElTo version.

You can download the new version here:
Windows 10 or higher:
MacOS 14 or higher for M1, M2, M3:
MacOS 11 or higher for Intel (or ARM):
Linux 64bit:

Get example files here:

Read a short manual:

StElTo changelog:

0.0.1: Main Menu
0.0.2: Prepare languarges
0.0.3: Check for updates
0.0.4: Setup proxy
0.0.5: Setup SQL
0.0.6: Setup basic help menu
0.0.7: Organise internal data
0.0.8: Read basic infromation from kurs42 csv files
0.0.9: Check for incorrect data and minmum lines

0.1.0: Implementing basic algorithm
0.1.1: Algorithm cares about courses
0.1.2: Algorithm cares about students
0.1.3: Algorithm cares about max students
0.1.4: Algorithm cares about min students
0.1.5: Algorithm cares about max higher than the average
0.1.6: Algorithm cares about max lower than the average
0.1.7: It's possible to change the seed

0.2.0: Report added: List of courses (sorted by line)
0.2.1: Report added: List of courses (sorted by subject)
0.2.2: Report added: List of students (sorted by course)
0.2.3: Report added: List of students (sorted by students)
0.2.4: Some more minor statistics added
0.2.5: Some more rare warnings added

0.3.0: Import basic LuPO files
0.3.1: Courses tab added
0.3.2: Subjects tab added
0.3.3: Subjects tab can create new courses
0.3.4: Subjects tab warn about minimum and maximum students
0.3.5: Import tab added. Now it's possible to import different datasets into the SQL database.

0.4.0: Algorithm restarts automatically (in fact there is a bug in my algorithm; i don't know a better solution how to fix it at the moment)
0.4.1: Algorithm cares about maximum of same subjects per line
0.4.2: Algorithm cares about same starting time
0.4.3: Algorithm warns about impossible same starting times (similar teacher)
0.4.4: Algorithm cares about individual maximum of same subjects per line
0.4.5: Algorithm speedup if using maximum of same subjects per line

0.5.0: Algorithm cares about different hours. By default different number of hours will be in different lines.
0.5.1: Max number of lines can be set for each number of hours
0.5.2: New warning about min number of lines (beacuse of students vote)
0.5.3: Subjects with special number of hours can be placed into lines with different number of hours (so mimic the old algorihtm before 0.5.0)
0.5.4: Warning about similar subjects with different number of hours if they might share the same line
0.5.5: Automatic prefix and suffix can be added if you create courses
0.5.6: Improved sorting of results
0.5.7: Changing number of target courses can be done for each subjects manually

0.6.0: It's possible to limit a max number of conflicts (students don't get a course)
0.6.1: Report added: List of conflicts
0.6.2: Report added: List of teachers
0.6.3: Improved import of Kurs42 files (import Schueler.txt)
0.6.4: Votes tab added
0.6.5: Subjects tab and planning tab is seperated
0.6.6: Improved Kurs42 import (care about "LK" and "GK")

0.7.0: Algorithm care about fixed lines of courses
0.7.1: Number of Students (max, min and difference from average) can be modified in hours tab
0.7.2: Number of Students (max, min and difference from average) can be modified in planning tab
0.7.3: Number of Students (max and min) can be modified in courses tab
0.7.4: Improved warnings
0.7.5: It's possible to add or remove votes in the votes tab
0.7.6: It's possible to add comments to datasets
0.7.7: Improved impossible counter

0.8.0: It's possible to enable/disable teachers
0.8.1: It's possible to change the teacher name in the courses tab
0.8.2: Algorithm care about rooms
0.8.3: It's possible to enable/disable rooms
0.8.4: It's possible to change the room name in the courses tab
0.8.5: Benchmarks are available (run x times with reduced output; just to measure speed)
0.8.6: Speedup algorithm
0.8.7: Improved checks, reports and warnings (mainly about rooms)

0.9.0: Algorithm care about subjects that occupy 2 lines
0.9.1: Improved checks, reports and warnings (mainly about occuly 2 lines)
0.9.2: Courses that occupy a second line can also setup a fixed line
0.9.3: Same starting time also works with subjects that occupy 2 lines
0.9.4: It's possible to change the number of hours in the hours tab
0.9.5: Import of Kurs42 improved (Imports Kursbelegung.txt)
0.9.6: Algorithm can care about preferred courses
0.9.7: Interface to change preferred courses
0.9.8: Removed gcc 6.3 compiler warnings

1.0.0: It's possible to limit a max number of conflicts (students doesn't get a desired course)
1.0.1: Report about students that don't get a desired course
1.0.2: Import of Kurs42 improved (Imports Blockplan.txt)
1.0.3: Import of Kurs42 improved (Imports Blockung.txt)
1.0.4: Ask for year (form) name if it is not available
1.0.5: Import year (form) name
1.0.6: Improved checks and reports and warnings

1.1.0: Export students.csv (FET)
1.1.1: Export activities.csv (FET)
1.1.2: Export Blockplan.txt (Kurs42)
1.1.3: Export Kursbelegung.txt (Kurs42)
1.1.4: Export Schienen.txt (Kurs42)
1.1.5: Export Kurse.txt (Kurs42)
1.1.6: Export Fachwahlen.txt (Kurs42)

1.2.0: Import of LuPO supports tags
1.2.1: Import of Kurs42 supports tags
1.2.2: Import of FET supports tags
1.2.3: Tags will coulor the votes tab
1.2.4: Tags can be changed in the special tab
1.2.5: Report course spread
1.2.6: Source cleanups

1.3.0: Speed improvement for data sets with fixed lines
1.3.1: Warn if teachers, rooms or students have got the same fixed line
1.3.2: Improved abort reaction (but still not perfect)
1.3.3: Speed improvement for data sets with min or max students in a course
1.3.4: Speed improvement for data sets with max subject per line
1.3.5: Removed gcc 7.4.0 warnings
1.3.6: Removed cppcheck 1.88 warnings

1.4.0: Export Courses.csv files (StElTo)
1.4.1: Export Elections.csv files (StElTo)
1.4.2: Export Hours.csv files (StElTo)
1.4.3: Export Students.csv files (StElTo)
1.4.4: Export Subjects.csv files (StElTo)
1.4.5: Import Courses.csv files (StElTo)
1.4.6: Import Elections.csv files (StElTo)
1.4.7: Import Hours.csv files (StElTo)
1.4.8: Import Students.csv files (StElTo)
1.4.9: Import Subjects.csv files (StElTo)

1.5.0: Warn if teachers, students or rooms have got the same line
1.5.1: Speed improvement for data sets with same lines
1.5.2: Warn if the course size is too small
1.5.3: It's possible to delete and dublicate a dataset
1.5.4: It's possible to delete, modify and add a student
1.5.5: It's possible to delete, modify and add a subject
1.5.6: Dataset will be checked regularly for dublicates
1.5.7: Added a (sadly incomplete) manual in the home directory

1.6.0: Subjects can force desired courses
1.6.1: Improved checks for empty names
1.6.2: Improved GUI
1.6.3: Prepared source for translation
1.6.4: Students won't get subject with different number of hours if they share the same line
1.6.5: Care about their own number of lines if courses share lines with other hours
1.6.6: Updated the manual
1.6.7: Added a delete all courses push button

1.7.0: Datasets with subject conflicts generate faster than previous release
1.7.1: Tags tab added. Tags can force desired courses now
1.7.2: It's possible to delete, modify and add a tag
1.7.3: It's possible to enable/disable the export
1.7.4: Hours export of Kurs42 files can be modified
1.7.5: Updated the manual

1.8.0: Export lists of conflicts text files (StElTo)
1.8.1: Export list of lines text file (StElTo)
1.8.2: Export list of spread text file (StElTo)
1.8.3: Export lists of courses text files (StElTo)
1.8.4: Export lists of students text files (StElTo)
1.8.5: Export list of teacher text file (StElTo)
1.8.6: Export list of room text file (StElTo)
1.8.7: Export list of checks text file (StElTo)
1.8.8: Export list of conflicts text file (StElTo)

1.9.0 Example generator can generate random names
1.9.1 Example generator can generate compulsory subjects
1.9.2 Example generator can generate strict compulsory optional subjects
1.9.3 Example generator can generate loose compulsory optional subjects
1.9.4 Example generator can generate extra optional subjects
1.9.5 Example generator can generate more realistic votes (not all subjects are popular)
1.9.6 Small speed improvements

2.0.0 Algorithm care about students that are not allowed to be placed into the same course
2.0.1 Small speed improvements
2.0.2 Updated to Qt 5.12.8
2.0.3 Removed gcc 9.3.0 warings
2.0.4 Removed cppcheck 2.0 warnings
2.0.5 Removed Java-Style Iterators
2.0.6 Removed ::fromSet

2.1.0: Seed is by default not static at startup
2.1.1: Updated the manual
2.1.2: bugfix: load random names doesn't work with windows
2.1.3: source clean up: use forward declararion in header files
2.1.4: Export Schueler.txt (Kurs42) (not complete, since some data is missing)
2.1.5: Updated to Qt 5.15.2
2.1.6: removed infer 1.1.0 warnings
2.1.7: added a new icon with higher resolution

2.2.0: Updated to Qt 6.5.0
2.2.1: Removed gcc 11.3.0 warnings
2.2.2: Fixed bug report if you import incorrect StElTo.csv files
2.2.3: added Windows batch files to start with an other style
2.2.4: Replaced size() and move() to geometry(). This avoids problems, if the (virtual)-screen is changed
2.2.5: increased minimum size for a dialog
2.2.6: improved dark mode
2.2.7: updated to Qt 6.5.3 (fixed scroll bar for RTL users)
2.2.8: use std::as_const instead of qAsConst
2.2.9: source clean up: use QFileDevice::NoError

2.3.0: MacOS and Linux versions are available now
*2.3.1: Import GPU015.txt files from gp-Untis (Beta only at the moment. Must be improved.)
March 02, 2024, 05:55:00 PM
Maybe it is easier to answer if you tell us what you want to do with that list.
Since maybe one of the statistics (see for example FET -> Statistics -> Print)
or maybe only exporting the activities.csv is fine.
Get Help / Re: Centralized Exam
February 29, 2024, 04:56:25 PM
About final exams. It depend a bit on the needs. But if your exams just need a table to write then it might be easy. At my school it is every very easy, since it is also always the same subject at the same time. So we just use all rooms in a quite floor (so a floor away from the play ground) and just wit on the door "Students with name A... to Ca..", "Students with name Cb... to Es...", ... since all students write the same exams at the same time. Very easy to plan without a computer.
I know other school with different subjects at the same time, But there it is also easy to plan without a computer. As long as all students write exactly at the same time and only need a table and a chair, then planning is very easy just with pen and paper. In this case they just write on the door "Biology", "Chemistry with Name G...", ...
We enter the planning results into the substitution planning software TiTiTo. So that can be done manually in just a minute.
Only if the students have the exams at different times (for example because the exam is not with pen and paper, since each single student has an oral examination, then you can do it that way. But in that case it is on the other side easy with FET again, since there is always just a single student per room.
Sadly there was a critical bug in TiTiTo 8.4.9 for Windows users.
Please download the new version here:
Windows 10 or higher:
MacOS 14 or higher for M1, M2, M3:
MacOS 11 or higher for Intel (or ARM):
Linux 64bit:
I fixed the bug. Please get the new version:
Windows 10 or higher:
I will try to locate the bug. Windows user: Please stay at the previous version:
Windows 10 or higher:
I released a new TiTiTo version.

Many thanks to Benahmed Abdelkrim, Siniša Vujčić and Liviu Lalescu. They updated the Arabic/Arabic-Algeria, Bosnian/Croatian/Serbian and Romanian translation.

You can download the new version here:
Windows 10 or higher:
MacOS 14 or higher for M1, M2, M3:
MacOS 11 or higher for Intel (or ARM):
Linux 64bit:

8.0.0: - updated to Qt 6.5
8.0.1: - updated to GCC 11.3.0
8.0.2: - add icon if it is the last activity in the room on that day (timetables and substitution tables)
8.0.3: - improved warnings
8.0.4: - last room usage is now configurable
8.0.5: - optional skip marking last room usage, if it is the last hour
8.0.6: - updated the translations
8.0.7: - replaced size() and move() to geometry(). This avoids problems, if the (virtual)-screen is changed
8.0.8: - increased minimum size for some dialogs

8.1.0: - delete, copy and paste supervision
8.1.1: - improved warnings
8.1.2: - added Windows batch files to start with another style
8.1.3: - slightly improved the dark mode (still not perfect, but some words and numbers are not invisible anymore)
8.1.4: - optional don't mark last room usage if it is a supervision activity
8.1.5: - optional don't mark last room usage if it is at a supervision hour
8.1.6: - updated to Qt 6.5.3 (fixed scroll bar for RTL users)

8.2.0: - gp-Untis GPU014 CSV substitution file can be optionally exported (useful for digital class books)
8.2.1: - Untis CSV export can skip supervision
8.2.2: - Untis CSV export can skip export activities without students
8.2.3: - Untis CSV export can split activities with more than 2 students (this is not supported by all 3rd party tools)
8.2.4: - improved dark mode some more by selecting colors in the settings (it's possible to invert colors of drawings now)
8.2.5: - changing the size values in the supervision planing dialog immediately changes the drawing
8.2.6: - 'Publish at Startup' includes now not only the start up of the software, but also the start up of a new day
8.2.7: - updated the translations

8.3.0: - rewrote the printing source
8.3.1: - minor bug fix: The first alternative icon for a last activity won't be overwritten anymore by the current icon
8.3.2: - source clean up (use std::as_const instead of qAsConst)
8.3.3: - Hyperlinks can now be copied and/or opened in an external web browser
8.3.4: - gp-Untis GPU014 CSV file optionaly includes private, general, teachers and/or students comments
8.3.5: - source clean up (using QFileDevice::NoError)
8.3.6: - improved warnings
8.3.7: - small bug fix while saving Untis dialog settings
8.3.8: - bug fix in the teacher statistics (it failed if there were more teachers than subgroups)

8.4.0: - print and export buildings tables
8.4.1: - rooms statistics in TiTiTo -> Statistics -> Rooms Activities
8.4.2: - rooms statistics in TiTiTo -> Timetables -> Export and Print
8.4.3: - source clean up (removed most SIGNAL(stateChanged(int)) )
8.4.4: - export to Willi doesn't crash anymore if there are activities without a subject
8.4.5: - rewrote the move forward algorithm (bug fix if SQL is limited to a max depth of 1000)
8.4.6: - rewrote the view and schedule students dialog (bug fix if SQL is limited to a max depth of 1000)
8.4.7: - rewrote the students ical export (bug fix if SQL is limited to a max depth of 1000)
8.4.8: - improved the validation of the database
8.4.9: - updated the translations
Quote from: ogursoy on February 15, 2024, 10:22:03 AMStudy programs have curricula which defines the courses to be taken in which semester and courses that are electives which can be taken in any semester. Some courses could be elective for some student groups and at the same time required for other student groups.

I fear this part is the main problem.
You should add only required courses and solve the timetable first.
I bet you have so many combinations that there will be always a conflict somewhere if a few groups are allowed to select it in any semester.
In fact it is only possible to solve if you ask the students if they want to select it this time. I remember my time at university: The timetable maker never asked if we want to select the optional/select able activities. So you wasn't able to know if there might be a conflict or not. He just randomly place the activity and tried to avoid conflicts without knowing if there is a conflict or if it is a conflict for just a single student ot if it is a conflict for 200 students.
In my opinion the correct way is asking the students if they want to select it this year and they try to care about it, if many students selected it. And in my opinion that should be done already before generating the timetable by doing the course planning like many secondary and high schools do it.
hmmm.... I must admit that i don't fully understand this request and what exactly you are doing. Maybe explain more detailed with an example.
Maybe also watch TiTiTo. You can move activities there easier and the students can also overlap, if you check the flag "students collision".
Depending on your data set you might improve that by already choosing a few students set or teacher and give him only one variant. So the building is already fixed for him. Maybe do that with the youngest students or with the oldest teacher.
Suggestions / Re: HTML files
February 14, 2024, 04:15:32 PM
Instead of generating 100 versions and searching for the version with the lowest number of conflicts it might be much easier and faster to increase the weights and generate less timetables, but by that better timetables.
Suggestions / Re: Multiple Tags in Constrains
February 14, 2024, 04:12:48 PM
You can add multiple tags already today. It is always AND (not OR).