The difference between 还 and 又 is that 又 expresses a feeling like "Again?".
For example, "I ate spaghetti yesterday and today I ate it again!" You can use "我昨天吃了意面，今天又吃了意面!"
In this sentence, 又 means that you want to emphasize that you ate it 'again'. Maybe you want to express that spaghetti is your favorite, or you want to express that you have nothing left in the refrigerator so you just have to eat it again. When you use 又, you always want to let the other person focus that the action is repeated.
But 还 just means "also". There is no special meaning here. In your example, 我买了香蕉、苹果还买了葡萄, you just want to say that you bought banana, apple and grape. There is no relationship between these three fruits and you don't have other meaning for 还.
More specific for your question, you cannot exchange 还 and 又 in your example.
This sentence uses 又 because the fact that the person didn't do well in this exam is already bad news. What's more, he is injured now, which makes this person more unfortunate. You should find that both 没考好 and 撞伤 are negative things. In this sentence, bad things are repeated. We use 又 here because we want to emphasize how unlucky he is in this period of time. 又 deepens the level of unluckiness of this person.
The speaker tries to emphasize that he needs to buy both meat and fish. You didn't specify the background of this sentence. But if he wants to do this buying, you should use 还 here. If he is not willing to buy these, 又 is more appropriate.
I just bought these three fruits. The speaker wants to state this fact and nothing else.
For this sentence, the attitude is positive. We need to study hard and get perfect on exams and we really want to reach these goals. If you want to use 又 here, the background should be "our parents ask us to do these and we think these requirements are impossible to do". And you should replace 不但 with 既 because 既...又 is a word group.
All in all, the usage of 又 and 还 really depends on the background of specific sentence.