For designing a workout routine, Jeff Cavaliere recently made an excellent video on his YouTube channel (Athlean-X). I won't link it here in case it's against the rules but you can find it easily enough.
Personally, I wouldn't be doing shoulders on a chest day because there is too much overlap and you will struggle to work them both effectively. If you can really train 5-6 times a week, a typical routine is this:
- Monday: chest
- Tuesday: back
- Wednesday: legs (push)
- Thursday: shoulders
- Friday: arms
- Saturday: legs (pull)
- Sunday: rest
Work cardio into the end of 2 or 3 of the workouts if you want/need it (avoid leg days), and abs can likewise be added onto 2 or 3 workouts instead of dedicating an entire session.
Always start with the biggest compound exercises first, then move on to isolation movements towards the end of the workout. For example, on chest day, start with bench press (bar or dumbbell), maybe a mix of flat/incline/decline. Then something like cable chest flyes (single or double arm), dumbbell pullovers etc.
If you want to increase your bodyweight, try to switch from having 3 main meals a day to having 6 smaller meals (to get a more consistent calorie intake). Try to increase your carb and protein intake and keep fats to a moderate level. e.g. more rice/potato, meat or other protein-rich foods, and stick to healthier unsaturated fats (nuts etc.)
I struggle to gain weight as well, so you may find you have to force yourself to eat even when you aren't hungry, so treat it as a routine like your weight sessions, rather than just eating when you feel like it. As long as what you're eating is healthy and you keep up the training, your weight should start to rise. Obviously if you do lots of cardio then this will offset some of the weight increase, so just find a balance you are happy with.