For some reason when I input the value 1 is just loops back to the beginning of shop loop rather then continuing on the program. When I use cin >> shop_loop though, it works perfectly.
getch stands for get character. So when you enter 1, shop_pick becomes '1' which has the integer value of 49. You could either use getch()-'0'; or surround your digits with single quotes.
Rather than using getch(), use the <istringstream> class exactly as you have on line 66, and convert it to an integer before you enter the switch statement.