A 555 timer is totally inappropriate here. You want to trigger events at specific points in real time, and it sounds like you want this to run for days on end. A 555 timer simply doesn't have the accuracy required. Not even close.
Do the math. A 555 timer clock is derived from the values of a resistance and a capacitance. Typical resistors are good for 1% and capacitors for 10%, resulting in overall 11% accuracy.
Let's say you spend a lot of money and manage to get 2% accuracy overall. It should be obvious that this is still grossly inadequate. 2% error means 1.2 minutes drift each hour. If you started the timer at 10:00, then it would be off by 9 minutes by your last bell at 17:30. By the 10:45 bell the next morning, it would be off by 30 minutes. That would clearly make the device useless.
So how should this be done? Use a crystal for the timing component. Fortunately, accurate crystals for this purpose are readily and cheaply available due to the high volumes of the wristwatch industry. You can get 32.768 kHz crystals that are good to a few PPM (parts per million, 106). At 10 PPM, the error is less than half a minute/month, or less than a second per day. That should be acceptable for a class project.
You also need some logic that tracks the date and time of day. There are chips called real time clocks that do this, and that can even drive a 32.768 crystal directly.
However, you still need some additional logic anyway. All you really need is a small microcontroller. Most are also capable of driving a 32.768 kHz crystal and running from that directly, while drawing very little power. Just about any of the Microchip 16F parts with the "ELP" (extra low power) feature would be appropriate here, for example.
You can implement the real time clock function in firmware, then add your own logic of when to activate a bell and for how long.
Some microcontrollers even have real time clock hardware built in. This does the date and time of day generation from just a clock oscillator, and can usually trigger events tied to time of day. This is certainly not required, but it eliminates the need to implement this logic in firmware.