The difference between an procedural and an object-oriented approach is how you bind the data and the functions that do something to it together.
Right now you have a very good structure. You have structs that hold the data, and functions that operate on specific data.
What you need to do is turn those structs into classes, and make the procedures and functions that operate on the structs into member functions (or methods) of the class.
Keep in mind that the member functions should generally work only on its own data. So, for example, you have the functions EnterData() and EnterFilter(). The first would make a good method of your TheData class, and the second would make a good method in your TheFilter class.
Your DisplayData() function operates on a number of different structures, but not any of them at the same time. Each of your classes, then, should have a DisplayData() method, which only displays it's own data.
You will have to decide how to use the filter class and the data classes all together. You could:Make a method of the TheFilter class take a TheData object and return a new TheData object.
Make a method of the TheData class take a TheFilter object and filter its own data.
etc.
You will still have to create three separate variables, but instead of assigning them initial (or default) values in main(), have the class constructor initialize the data.
Personally, I would also recommend that you use a vector instead of a newed array, but that is not essential to the assignment and you can save it for later (or not at all).
Hope this helps.