I'm sorry you and your family are struggling with this. It sounds like she wants to be treated as adult, but doesn't really have a clue about what being an adult means.
I agree 100% with Kelly M.: If you try to force her, like a child, to obey rules, she will probably leave (or it will escalate to you kicking her out) and she'll probably live with the boyfriend; best case here would be that she does graduate but your relationship with her is ruined for years or perhaps forever. Worse case is that the bad influences take over, and she doesn't graduate, and it's a tailspin from here into a really really hard life, perhaps crime/drugs involved.
So, I think the best thing to do is call a truce, and call a family meeting. Start by talking (use "I" phrases, and I fell--definitely read up on non-violent communication before the meeting). Let her know that you and she both want to see her go on to a good and fun and successful adult life, but she's not quite there yet (be careful how you phrase this). Tell her that if she wants to be treated as an adult, that is all well and good, and that you want to respect her choices, but that there are still house rules. #1--Physical or verbal violence is completely unacceptable; if it happens again, esp the physical, as an adult, you will have to call the police and/or kick her out because true adults do not resort to violence to try solve their problems. Then, sit down and ask her what she wants--hear her and don't judge. If she wants more time with the bf, then provide it--supervised--at your home (and talk to her about the safe sex--offer condoms or pay for the pill bec. it's better than pregnancy at this point).
See if you can come to some compromise (and hopefully encourage her to get counseling/anger management help). But let her know that you will not tolerate the violence and she is out the door, cut off, if it happens again.
I would also suggest perhaps talking to her counselor at school to see if they see anything or if there's any suggestion they have (no doubt they have seen this kind of thing before and might have more tools in their toolbox for this).