On the eve of the graduation parade at Bunker Hill military academy, Cadet Brian Moreland meets privately with the academy commander, retired Brigadier General Harlan Bache, who promotes him to Cadet Major, the highest cadet rank in the academy. The next day General Bache announces that the school's board of trustees has decided to sell the school to real estate developers but that they will remain open for one more year to allow the Seniors to graduate and the remaining cadets to find other schools. This gives many cadets hope that the school can be saved.
A dance is held at the academy after commencement. Local teenagers outside the gates harass some cadets and a brawl breaks out. When General Bache attempts to end the fight, his service pistol is seized by one of the local boys. During the struggle the boy pulls the trigger discharging the weapon, killing anther boy. Although the magazine was removed, a round was still in the chamber. Bache is held responsible and after he is arrested has a heart attack which leaves him in critical condition at the hospital. The board decides to close the school immediately.
Moreland meets with his officers and they unanimously decide to take control of the campus. When the Dean of Students arrives with the local Sheriff to empty the armory, they find that the weapons are already gone. They are confronted by an armed cadre of cadets led by Major Moreland, who demand to meet with General Bache and negotiate with the board of trustees to keep the school open. The Dean and Sheriff are escorted off the academy grounds and armed cadets secure the perimeter.
Meanwhile another group of cadets have been sent to a local food supply warehouse to restock their provisions but one of their trucks breaks down on the way back. As Cadet Captain Dwyer attempts to fix the engine, a group of locals threaten them and surround the truck until hotheaded Cadet Captain David Shawn opens fire with his M16, shooting several bursts into the air. The locals scatter and the cadets abandon the stalled truck, fleeing the scene in the second truck and ramming a police car in the process.
The police surround the campus and a delegation of parents led by Moreland's father arrives but does not change the cadets' minds. To demonstrate to the police and parents that none of the boys are being held against their will, Moreland assembles the cadets and offers them a chance to walk out. All of them choose to stay. The siege grows more tense when the National Guard arrives. The commander, Colonel Kerby, negotiates with Moreland but with no more success.
At the next morning muster the officers report that some cadets have fled the campus. Moreland assembles the entire battalion and again offers cadets the opportunity to leave. Led by Moreland's friend, Lieutenant Edward West, at least half of the remaining cadets drop their weapons and leave. When the electricity and water are turned off, one of the cadets is severely burned as they attempt to restart the school's old gasoline powered generator. They permit an ambulance to enter and take the injured boy to a hospital and afterward, Moreland offers to stand down if the order comes from General Bache. Kerby replies that Bache had died the previous night. The cadets, deeply hurt by Bache's death, hold a military memorial service in his honor.
The next night an M48 Patton tank rolls up to the main gate. One of the younger cadets, on sentry duty, panics and runs out to surrender. He drops his weapon which fires upon hitting the ground. The National Guard return fire and kill another cadet.
The boy's death weakens Moreland's resolve considerably and he decides to end the occupation. He calls all the cadets to muster and orders them to surrender. However, the rebellious Shawn starts shooting and the campus is overrun by the authorities as a firefight ensues. Moreland runs to Shawn's room to stop him, but both young men are killed by suppressing fire and the siege ends abruptly. Moreland's body is carried out of the building by Dwyer.
A montage of scenes from the Academy's proud past flash across the screen in the aftermath.