If it is within the rules of this assignment to use a desktop PC as your controller, then C++ is fine. For that matter, even if you use a small microprocessor like 8085 or even PIC or AVR series, it is still OK to use C++ because usually you can find a compiler for the target uP. Usually the uP is chosen based on
- how many inputs and outputs and what type (ie. binary logic, A/D, D/A)
- what internal processes will be needed (timer? DSP?)
- what speed will be needed to execute your code in "real time"
- do you need a RTOS for the project (Real Time Operating System) or not?
- how much memory is needed to house the program code and variables and stack storage
The main thing you must do now is define in more detail what it means to say "control the signal of a railway crossing." You must define the devices that are being controlled, and you must define the inputs to the system, like train sensors for example. Once you have the inputs and outputs defined, you must design the logical flow of your program to do what is needed.
Once you have flow charted your program (or coded it in some sort of plain language psuedo-code) you must estimate what kind of subprograms you will need. For example, will you need floating point arithmetic? Or serial port protocol support?
You can also estimate how much time is available for the major input to output delays and this helps you guess the speed of the uP.