We found a pretty effective way of dealing with our teenager when she was a senior: one week at a time.
Our school has a "grade and attitude check" that the student carries to all their teachers, who fill it out and send it home with the student. We did this every Friday. If it was all OK, she got her weekend activities. If there were any zeros or attitude problems, she lost her weekend. Then it started all over on Monday.
It worked really well because she just had to get through one week at a time and if she lost a weekend, it reminded her to behave the next week. This worked a lot better than grounding her indefinitely; at some point they stop caring if it goes on to long.
The key is to find what matters to her. The great thing about this system is they get a fresh start every week, so it doesn't drag on into this long thing that makes them give up.
You have to stress that it is HER decision if she loses a weekend, not yours. You give her the rules and consequences, then she chooses which option she wants for that week. Don't let her turn it into you being mean. SHE decides.
Also, look on-line for a program called Smart Discipline. We used their system when she was younger, but it will work for any age and is more geared toward behavior at home as opposed to the grade and attitude at school.
Smart Discipline takes the guesswork out of the consequences. You lay the rules and consequences out very clearly and they choose how to behave. If they lose a priveledge, it's their decision, not yours. It takes the fight out of it; you just point to the chart.
Good luck!