Thank you NickFL,
I reckon that using Extrude or Boolean operations can both do the cut and create the interfaces (using the "slide" option in extrude and "substract" in boolean). The problem is when I want to move the cylinder to the desired position inside the cuboid. Yesterday, I created a new plane at the position where the cylinder should be located and it worked. However, if I need to include more cylinders in other positions, I may need to add as many planes as cylinders are required. So the task will become quite repetitive.
Wonder if there is another way to add sub-bodies in specificic positions (not at the centre of the XY plane) inside a main body?