Стек, конечно, можно делать и на массиве, но обычно его делают на списке.
Для самого стека обычно хватает 1-2 структур/классов: Класс стека и класс узла стека.
Для остальных можете придумать произвольную простейшую иерархию наследования, что бы объекты этих классов можно было укладывать в стек по ссылке/указателю на базовый класс.
Модули это файлы:
1. основной код - сюда запихнете main(), возможно какие-нибудь вспомогательные функции.
2. и 3. стандартное разбиение С++ классов на заголовок (.h) и реализацию (.cpp).
Т.к. классов не менее 5, то и заголовков и реализаций по уму делать на каждый класс, но в вашем случае можно все сложить в 2 файла. Хотя я бы сам стек выделил в отдельные "модули".