Si usas Swing en Java podes hacerlo portable y usar los mismos Widgets en todos los S.O., tampoco tendrias grandes problemas para comunicar los clientes con el servidor a traves de sockets y sino me equivoco se puede utilizar MySQL como base de datos (me imagino que asi te sacas de encima el problema de los reinicios).
Si lo queres hacer en C++, en Windows con su API podes hacer las mejores GUI, si queres que sea portable podes usar esta libreria
http://www.wxwindows.org/, tambien podes usar MySQL (que es gratuito) o cualquier base de datos que se te ocurra, la comunicacion tambien se puede hacer tranquilamente con sockets.