I've read elsewhere that there was a breakout of norovirus on this cruise. However, it's important to note that a ship does not have norovirus -- people do. I know this trip was unpleasant, yet I wouldn't blame the cruise line.
That said, there are some things that cruise lines could do. I know that Carnival already does many of these, as I've seen them myself, such as providing tissues by the inside of the public restroom doors so that one does not have to directly touch the door handle when leaving. I can't comment on this next aspect as it pertains to Carnival as I simply don't recall it one way or the other -- yet, Holland America Line mandates that crew in the buffet serve food to passengers for the first 48 hours rather than having passengers take turns at the tongs. This minimizes the spread of any infection that pax may have brought onboard.
Regarding the mattress -- did the OP mention this to Housekeeping while onboard? It's possible the mattress was turned over (as it was likely to be soiled again) and then replaced for the next cruise?
Carnival closed the pool when the selfish passenger put his/her diapered kid in it. That's a sign that they take passenger safety seriously.
(Please don't get me started on pax behavior -- I'm in agreement when it comes to some -- major, major pet peeve.)