I suppose there are several ways to do this, including using an eSQL query to get the latest date of a salary, but my preferred method is this:
Salaries should be in a separate table, which should include the date they begin and end on (So Salary X started Jan 1, ended May 31)(let's call this Salary). From what you wrote above, a monthly salary would make the most sense here, if your pay period is monthly. Yearly salary is 6 months at Salary X and 6 months at Salary Y, or maybe 3 months at X, 6 at Y, 3 at Z, or maybe 12 at Z.
In the other table, the one your colleagues are typing into (let's call this Working), have a date field; Have Working::Date >= Salary::BeginDate AND Working::Date <= Salary::EndDate. Then you can look up the salary for the given date.
Now you have to decide exactly what kind of answer your customers want, or make it flexible enough that they can define what they want. You need at least two inputs from your customer: Monthly or Yearly, and Starting date. Let's say that the answer is yearly, starting from March 1, 2015. You could easily write a script that contains a loop, setting Date to March 1, get that month's salary and add it to a variable; setting Date to April 1, get that month's salary and add it to the variable, etc, to Feb 1 2016. Then you output that salary information to the customer, either by setting a field or by using a Custom Dialog.