No way. He is being so disrespectful to you. I would break up with him, without any explanation. Just say it is over. He knows why. Have some dignity girl. Learn now. Never let a guy treat you like that! You will always be in horrible relationships.
Once you realize this, you will find a guy who treats you right (if you let it happen). This will never happen if you stay with a guy who is so mean to you. You are wasting your time on him. Let him go. He will be with someone else and treat her just the same. So what! I would not be hurt by that. I would feel sorry for that girl. Leave him now and do not get back together with him.
I realize that you have been together for quite a while and this might be hard at first (especially because you are young and in school and see him all the time). So, have a plan, have support (have your mom, sister, aunt, grandma, cousin, best friend, anyone and everyone to be on your side), stick to your plan and don't look back. If you get sad or down, call someone from your support group (even if you only have one person in the group).
Get a job or take up a new hobby to meet new guys and make new girlfriends. Find one now. Get busy with yourself and move on from him. If a guy ever cheats on you or calls you names like that, never stick around. It will only get worse (it will always suck) and you will always feel bad inside.
You want to feel good about yourself. You will need to move on and treat yourself right. Be around good friends and be with a guy that likes you and treats you well (takes you out, makes sure you are doing good, calls you all the time, doesn't go out with other girls unless you are there, he takes care about how you feel and likes to do things with you). Good luck! You can do it.