School scheduler - 600 points for codes

One from my friends ask me to help him to step over this problem . In the next school year, he must make the classes scheduler ( for all school ) . But because is a titanic work , he ask me to help him .

So ... because I don't have any idea how to do that I wish to find an open source project ( to convert to my friend needs ).

You know : to input the name of teachers , the number of hours, the classes... and to get the course hours program.

600 points for a real help .
Who is Participating?

Improve company productivity with a Business Account.Sign Up

NetminderConnect With a Mentor Commented:
Per recommendation, points refunded and question closed.

Thanks, meikl.

CS Moderator
hmm, thinking
(its just a timeproblem on my side)
its a nice little database-project
it's a HUGE task. Manny needs are requrid like classes don't want too big holes in thier schedule and class x can only be givven on monday... etc.. the quistion is too big in my opinion. you can make a commercial product do.
The 14th Annual Expert Award Winners

The results are in! Meet the top members of our 2017 Expert Awards. Congratulations to all who qualified!

ginsonicAuthor Commented:
In my country the school don't have money for alike stuff. In fact , we don't have enough money for teachers salary :(
>it's a HUGE task
i don't think so,
some tables (classes, teachers, courses, kalendar, ...)
some relationships, some subtables for normalizing,
a frontend, some reports seems not much

(just to say, that my primary
work are database-apps and database-design,
which are much more complicated and really huge)

but nevertheless, until this app will be ready
some weeks are gone, even if i do it

meikl ;-)
ginsonicAuthor Commented:
I increase to 600 points .
ginsonicAuthor Commented:
kretzschmar , I will appreciate if you will involve in this problem . How you know already I'm a 'greenhorn' with database application ( I read now all what I can find about SQL ). In same time I'm just an amateur and not a proffesional .

To stimulate the interest to this topic ( and because I really wish to help my BEST friend - he told me that spend a week to do this schedule) I can offer 1000 ( my last... ) points for this job .

Best regards,
hehe, a week,
guessing your friend didn't done such

well, atleast it depends on what all is needed.

i would do it and it isn't a question of points,
but i have just not enough time,
the only thing i could offer is support

do have any concept on hand or in mind?
(if not, then thats the first step
to check out what is needed, something
alike brainstorming with your customer/friend,
usual the customers knows the result he wants,
but never knows, what all is needed to reach the goal)

meikl ;-)

HI, ginsonic,
To begin with you must describe what we have to take into account when propose you some sort of a solution.
Because this task may be simple and may be difficult -
all depends of the parameters we take into account.
You're from Romania, if I am not mistaken.
What they take account of when tabling syllabus in your country.
I guess you could have a look at these (not done in Delphi though)

(PHP, Perl)

Hi all,

It's interesting task, but it really should be specified in details. Look at three variants:

1. User only enter already prepared (sheduled) data.

2. User enter prepared data but application responsible to inform about conflicts with classrooms and teachers.

3. User enter initial data:  

a)  class room specification: capacity, subject (mathematics, phisics, ,...., any)
b) teacher specification: subject, numbers of hours allowed, weekdays, student groups assignment, etc.
c) students group specification: capacity, first/second half of day...
d) class rooms relative location (it can be located in different buildings)
e) student groups assignment: subjects and numbers of hours
f) subject specification: allow to join few student groups or not, can be doubled in the same day, etc.....

In last case it is really huge task.  Working as buisness analyst, I can suppose that it takes about half of year for one high-qualified Delphi programmer. It is "country wide" project, so, it takes an  additional time and people ressourses (technical writer, tester,...) to build easy distributed, well documented and easy to use application. Can it be done for free even for friend?

ginsonicAuthor Commented:
>Can it be done for free even for friend?
I will try :)

For all ... yes , I must add couple supplimentar informations .

I think that Igor is most close about my friend needs:

A)  class specification: subjects (mathematics, phisics, ,...., any) and numbers of hours

B) teacher specification: name, numbers of hours, weekdays, classes allowed

C) the subjects must be introduced graduate ( by hours and days )
By Hours example : 8-9 - easy subjects ( Sport,painting, music), 9-10 medium( biology,geography), 10-13- hard(maths,physics), 13-14 medium or easy .

By days : Monday : Easy-Medium, TuesdayMmedium,...Medium-Hard...Hard...Hard-Medium...Friday : Medium-Easy .

c) students group specification: first/second half of day...- interesting thing , but not necesary

d) class rooms relative location (it can be located in different buildings) - interesting thing , but not necesary
ginsonicAuthor Commented:
If you find this project interested , we can create a common project and ,at finish , everbody to can sell this in own country - I doubt that I will can sell in mine :)
hi Nick,
it would be better to write something for Oil Comapny or Gold Exploration Company :-)
Having more then 70K lines of code project, I'm really have no time to write something big.
Anyway, if you will have some questions until this project, you are wellcome.

seems igor has the same problem as me :-)
ginsonicAuthor Commented:
OK. When .. if .. I will finish this project, I will put it on my site ;)
good project have to be huge.
in my company we develop simular project for CallCenter's
and for larg school institutes.
Many AI uspect are involved .
Greg RowlandSoftware Designer, SysDBA, WebMaster OwnerCommented:
Having written a scheduler for real estate offices with rotating days, staff requirements etc and also a scheduling program for a large fabricating outfit this is very tempting question you pose.

Like many other contributors I rarely have time to post my own questions, however;

The approach I would take is simple;

Identify absolute constants;
      Number of days.
      Days of week.
      Hours of  day.
      Starting day.
      Ending day.
Also determine if these factors will very for specific classes.

Identify all adjustable/dynamic constants.
      Number of teachers.
      Number of classes.
      Number of students.
      Number of students per class
Here you could even identify the teachers preferences for hours they like to work, day classes, night classes etc
Labs study halls and other miscellaneous functions of the teaching staff could also be taken into account.

Gee wiz, you could even setup the student database with a detail table that would store when they registered for a given class and weather they where the first to signup or the last. This way you could be sure classes where filled on a first come first serve basis.

Once you have identified and all of the items Fields, then group them into Tables that make sense for example;

Student Table
      Student ID
      First Name
      Last Name
      Student Class Detail Table
            Class ID

Teacher Table
      Teacher ID
      First Name
      Last Name

Class Table
      Class ID
      TeacherID(s) // If this requires more than one it would require a detail table
      Max students
      Min Students
      Start Date
      End Date

Once you have all of this information organized then the real fun begins,! You have to develop algorithms to divine the desired results.  While challenging its really quite fun.

Dont worry about starting with complete data, once you have the tables designed input a few classes, a few teachers etc the start working thought the logic.

Pretend you are sitting down to do the schedule by hand, ONE STEP AT A TIME
Before long you will start to see how the logic can be reduced/drilled do with staments like


      If then

Until (eof)

For example in my shop scheduling program; this info comes from employee table
      How many welders do I have?
      How many helpers do I have? etc.
      How many of each type of worker works overtime?
      How many of each type of worker works weekends?

Then                  // this info comes from Work orders and Estimates
      How many jobs are there?
      Start date?
      End date?
      Work weekends?
      Work overtime?
      How many hours where bid for each type of labor?
      How many hours have already been work on h job by labor type, etc...

Once all these variables are loaded up then drill down begins and it was a real dozy. I broke each decision in to a logical procedure or function.

Just make sure the logic is linier, another words;
      Decision 1
      Decision 2
      Decision 3

      If Decision 1 then
            Decision 2
            Decission 3
      Other wise
            Decision 4      // This kind of code would make you crazy

Another thing that works great;

Create a form with a TpageControl on it, add a tab for each master table with that tables natural detail table on it "These can be used to populate your tables with sample data, which will also reveal many things about you design.
Then add a couple of tabs with TStringGrids on them.

Then starting with the first Decision drop a button and write the code for that series of logic, storing the results in the StringGrid(s) so you can readily examine the results FAST.

Continue until all of the logic has been reduced to Decision1  DecissionX. Then you can drop the buttons and organize your finished functions and producers. Use meaning full names, write lots of comments as you go so you can readily remember what the thought was when the code was authored.

    procedure myInitArrays; // and String grids
    procedure CreateRosterCountTrades; // Get the workers information
    procedure GetEstimateSummaryData;
    procedure GetActualHoursCalcRemaining;
    procedure CountWeekendDays;
    procedure CalcWorkDaysLessWeekends;
    procedure CalcHoursPerDay;
    procedure DistributeHoursAcrossTimeLine;
    procedure TallyLabor;

Hope this helps.


Greg Rowland
Greg RowlandSoftware Designer, SysDBA, WebMaster OwnerCommented:
I should also add that; in my case the application opens with a query for all Open Jobs in Progress, then processes each job in turn to a line on the grid with procedures 2-8. Then # #9 “procedure TallyLabor;” Totals up our labor committed for each type of labor and each day.

The program also allows the user to specify the start date and end dates so we schedule into the infinite future. Each labor type can be included or excluded from the schedule individually for each job so we can see how the schedule is affected, even by jobs that have not yet been contracted.


Look at this School Scheduel program

This is a shareware program (50$) :), but possible you'll find in it something interesting
ginsonicAuthor Commented:
Thanks lottol, but I don't know russian ( not enough to understand the documentation ).
ginsonicAuthor Commented:
I thinking to use an unique ID for each teacher that contain all needed infos . Alike :

H-23-16 where:
1. A is the difficulty of the matter : H-hard,M-medium,E-easy;
2. 23 is the teacher number ( from teachers list );
3. 16 is the subject number ( from matters list );

For each class to create an array with 7 columns ( 7 days ) and 10 rows ( max 10 hours class ).

The teachers IDs will be stored into class array ( of course with couple conditions ).

What do you say about this idea ?


P.S. I will upload the project ( source code ) to my site for interested people ( for study , correct it , or cooperation ).
ginsonicAuthor Commented:
kretzschmar , can you help me ? The time isn't a problem ( I need to finish this untill August or the beggining of September ).
Or if don't have time ( but maybe couple minutes :P ) can you direct me through this area ?

"some tables (classes, teachers, courses, kalendar, ...)
some relationships, some subtables for normalizing,
a frontend, some reports seems not much"

I don't need a complex program . For my friend need I created just next two tables :

Teachers table with name,subject,level subject,classes and the total hours by week .
Classes table with class ID, subject, and subject hours by week .


thinking . . . i let you know this evening

what about the other suggestions above?
(i guessed there were some of interest)
ginsonicAuthor Commented:
I need more help :( How I say already, need some codes .
Hope to have an answer that will make me happy :)

Best regards,
ginsonicAuthor Commented:
I started today the project , two weeks of holidays :) .
At you can find the full project and used components .

Every day I will upload the last version . If interested wait your support .
ginsonicAuthor Commented:
ginsonicAuthor Commented:
Finish the easy part :P
ginsonicAuthor Commented:
Proposed deletion rejected. There's too much information here.

EXPERTS: Please let me know how this question should be resolved.

CS Moderator
ginsonicAuthor Commented:
Netminder read this part from my question:

So ... because I don't have any idea how to do that I wish to find an open source project ( to convert to my friend needs ).

refund points to ginsonic,
reduce points of this q to 0 and
paq this q

if possible

meikl ;-)
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.