As you already thought, an array is the way to go imo.
You can even so so far as to implement it in your character stats array.
each character has it's own x of the array.
so x = 0 is Cloud, x = 1 is Tifa and so on. An on some y (partyy) they have information like: is in party if it is 1, and is not in party if 0. And on some other y (othery) you could save the menu position.
When populating your menu you can do:
for every X AND system compare array.at(array.curx, partyy) = 1:
display character X at slot array.at(array.curx, partyy)
Other operations like assigning new positions won't be hard either, just a bit of typing of course, as usual with arrays.