Alright. Here's a brute-force method.
Say you have 6 teams, named 1, 2, 3, 4, 5 and 6.
All possible opponents for 1 are these:
2, 3, 4, 5 and 6
For 2, excluding already made matchups:
3, 4, 5, 6
For 3 accordingly:
4, 5, 6
4:
5, 6
5:
6
6:
-
Let's encode these pairings and list them. A pairing is encoded with two digits, where digit 1 is the first team's name, and digit 2 is the second team's name. So we end up with the following list:
12, 13, 14, 15, 16, 23, 24, 25, 26, 34, 35, 36, 45, 46, 56
Now we set up the matches by going through the list and picking 5 pairings per day, where each pairing pulls from the pool of pairings where one of the teams is participating. If said team has already been pulled this day, we do not pull and write a - instead.
Edit: Obviously, a pairing is not repeated.
The number of days is n-1, where n is the number of teams.
Day 1:
12, -, 34, -, 56
Day 2:
13, 24, -, -, -
Day 3:
14, 23, -, -, -
Day 4:
15, 26, -, -, -
Day 5:
16, 25, -, -, -
Matchups that haven't been pulled are:
35, 36, 45, 46
Now, we repeat the process with a different list order (we shuffle around the teams starting with 1, then those with 2, and so on). We write down the according solution and see if matchups end up not being picked. If some are not picked, we change the order again. If all matchups are picked, we are done.
Eventually, we end up with this solution:
Day 1:
12, -, 34, -, 56
Day 2:
16, 23, -, 45, -
Day 3:
13, 25, -, 46, -
Day 4:
14, 26, 35, -, -
Day 5:
15, 24, 36, -, -
All matchups have been pulled, each team plays every day.
The problem with this approach is that reordering the list (because the previous setup left matchups out) has to be done much more often with more teams.
You can sort of optimize the process by doing the reordering as soon as you end up with a day that features less than n/2 matchups.