There are probably plugins out there, but the simplest way to do this would to pretty much build your own function to handle this.
So for example, instead of having the default add to cart button, you could either add your own or write some JavaScript that fires an AJAX request. That request would then add the relevant items to the cart programatically. On completion you could take the user to the cart page. So something like this, note that this is a very rough not tested example, there is a lot of info out there on how to do this
Fired on add to cart
addToCart: function(e) {
e.preventDefault();
var item_id = $(e.target).data('something');
$.ajax({
url: ajaxurl,
type: "POST",
data: {
'action': 'add_to_cart',
'item_id': item_id
},
success:function(data) {
// send to cart
}
});
}
In your functions.php file (or better in a separate functions-ajax.php file)
<?php
function customAddToCart(){
global $woocommerce;
// you should do some checking against the values sent over along with a nonce
// then do something with the item id you sent over and add products to the cart as required, so for example:
if($_POST['item_id'] == "98765") {
$woocommerce->cart->add_to_cart(10,5); // 5 adult tickets
$woocommerce->cart->add_to_cart(4,2); // 2 child tickets
$woocommerce->cart->add_to_cart(11); // 1 senior tickets
}
// obviously needs more logic and that
echo "1";
die();
}
add_action('wp_ajax_add_to_cart', 'customAddToCart');
add_action('wp_ajax_nopriv_add_to_cart', 'customAddToCart');