This should have been a comment, but I fear it's too big for comment field.
A major part of the design can be the speaker, so you should pay considerable attention to that.
There are several options you could use and the best depends on the type of sound you want to achieve.
I'll first talk about the easiest option to set up. That would be a self-oscillating buzzer. In this question I got some nice answers on how to connect one to an AVR microcontroller (of same family as ones used in Arduino). The downside of this is that the buzzer produces only one frequency and all you can do is turn it on or off. On the other hand for a simple alarm, it should probably be good enough. The plus side is alto that you can only turn it on or off. This makes it very easy to program the microcontroller. The buzzer shouldn't be too expensive. The price will of course depend on the size and power, but for this type of application, 2€ or 3€ would be more than enough for the speaker and the transistor needed to drive it.
The second option is to use a piezoelectric sound source. The downside of them is that you must create your own driving circuit for the speaker. You could make an oscillator or you could use the Arduino to create square waves and then using a transistor and a resistor drive the sound source. I don't know how much this would cost.
Another option is to use a real speaker. The easiest way to do this is to get a cheap amplifier chip and connect it to the speaker. You'd also need electronics for the amplifier (but that could be just a couple capacitors for some amplifiers). Another problem is that you'd need to use the Arduino to generate audio signal which will drive the amplifier, making the programming a bit more complicated. A positive side is that you can (with right amplifier choice) easily control volume. expect high price. The speaker could easily cost couple of Euros and so could the amplifier.