A nurse scheduling algorithm designed to allow a user to create a schedule which satisfies numerous complex working constraints (such as contract hours, night shifts, consecutive working days etc.), as well as providing table GUI for the nurses to clearly see their schedule.