A script can perform a find for all records.
A script can then either loop through them and use set field to update the fields as needed or a Replace Field Contents step can update them in one batch.
Both options should be IWP compatible as long as you use the "no dialog" option for Replace Field Contents.
Ps. You might consider using a StudentID number instead of the student's name and linking to a table of students by that ID instead of by name. Student names are neither unique nor unchanging so you can encounter issues when using names like this.
There are around 100 fields on the database that could have "selected" in them do I have to search them all individually, or can I search them all at once?
We do use customer numbers, but that just inserts the name from another database, which then gets inserted into the "selected" fields.
You can generate a series of find requests--each specifying a different 'select' field and then perform a single find Or you can loop the process find all records where field 1 is selected, Replace field contents, repeat for fields 2, 3, etc--but needing to select and search 'around 100 fields' for this kind of replace sounds like a less than optimum design for the data in your database.
Also, are the fields that you are updating all in one record or a found set of many records?
Now that I re-read your original post:
we could be making multiple bookings for each student with different instructors and aircraft on the one record
You really need to alter that design so that each "booking" is a separate record with links to student, instructor and aircraft tables. Whether you use IWP or FileMaker, the resulting design is much easier to work with and much more flexible.