The way to do it on each PC is by using ENUFF from AkronTech. This can limit and control pc and internet usage.
The central way to do this is to deploy a proxy server.
At home I have my network split between the 'kids' network and the 'grown ups' network.
The kids network is behind a Rhinosoft AllegroSurf proxy server. For the kids there is a 'whitelist' of approved sites, and this proxy does all sorts of logging,reporting, etc. This can be configured also to do content filtering, using a 'blacklist'. Allegrosurf can do time-blocking, allocate bandwidth, track usage, etc etc.
There are lots of proxy servers out there, there is the free Linux-based Squid and there are lots of products like AllegroSurf and WinGate which cost about $20-25 per user.
I allocated an old 500mhz PC running windows XP as my Allegrosurf proxy and it works fine. I have two nics in the machine, one on the 'adult' side of the network, and the other one has a lan with a wlan access point for the kids network. Also, this way the kids cant get to my printers, file shares, etc.