first commit
This commit is contained in:
422
CS1322/p4/AircraftCarrier.java
Normal file
422
CS1322/p4/AircraftCarrier.java
Normal file
@@ -0,0 +1,422 @@
|
||||
/**
|
||||
* <PRE>
|
||||
* AircraftCarrier.java
|
||||
*
|
||||
* Revisions: 1.0 Oct. 18, 2002
|
||||
* Created the AircraftCarrier class
|
||||
* 1.1 Oct. 27, 2002
|
||||
* Compiled, Finished, Commented
|
||||
* 1.2 Oct. 28,2002
|
||||
* Whoever writes these stupid .nfo's needs to be more specific
|
||||
* added recode to fix the way launchLog.txt is written
|
||||
*
|
||||
*
|
||||
* </PRE>
|
||||
*
|
||||
* Collaboration Statement:
|
||||
* I worked on the homework assignment alone, using only
|
||||
* course materials.
|
||||
*
|
||||
* Created with JCreatorLE, some indents are off when viewed through notepad
|
||||
* or EMACS
|
||||
*
|
||||
* @author <A HREF="mailto:gtg184g@mail.gatech.edu">Jose Manuel Caban</A>
|
||||
* @version Version 1.1, Oct. 27, 2002
|
||||
*/
|
||||
|
||||
import java.io.*;
|
||||
import java.util.*;
|
||||
|
||||
public class AircraftCarrier {
|
||||
|
||||
private final String FILE_NAME = "aircraftFile.txt";
|
||||
private BST aircraftBST;
|
||||
private boolean StrikePackageReady;
|
||||
private static final String MENU = (
|
||||
"1) Create New Strike Package\n"+
|
||||
"2) Find Aircraft\n"+
|
||||
"3) Throw Aircraft Overboard\n"+
|
||||
"4) Print Strike Package to file\n"+
|
||||
"5) Launch Aircraft\n"+
|
||||
"6) Quit\n");
|
||||
|
||||
private BufferedReader KB_IN=
|
||||
new BufferedReader(new InputStreamReader(System.in));
|
||||
|
||||
private Heap launchQueue; //holds the aircraft ordered by LaunchPriority
|
||||
|
||||
//change to false to remove prettiness of console
|
||||
private static final boolean bPretty = true;
|
||||
|
||||
////////////////
|
||||
//Constructors//
|
||||
////////////////
|
||||
|
||||
/**
|
||||
*Default Constructor
|
||||
*starts menu
|
||||
*/
|
||||
public AircraftCarrier(){
|
||||
aircraftBST = new BST();
|
||||
StrikePackageReady = false;
|
||||
doMenu();
|
||||
}
|
||||
|
||||
///////////
|
||||
//Methods//
|
||||
///////////
|
||||
|
||||
/**
|
||||
*Read Input
|
||||
*/
|
||||
private String readLine(){
|
||||
String KB_INPUT ="";
|
||||
|
||||
try{
|
||||
KB_INPUT = KB_IN.readLine();
|
||||
}
|
||||
catch(IOException ioe){
|
||||
System.err.println("IOException in readLine()");
|
||||
}
|
||||
|
||||
return KB_INPUT;
|
||||
|
||||
}//end readText(String,int)
|
||||
|
||||
/**
|
||||
*Prompt user for Aircraft and then output its specifics
|
||||
*/
|
||||
public void findAircraft(){
|
||||
|
||||
if(!StrikePackageReady){
|
||||
System.out.println("Strike Package not Ready");
|
||||
return;
|
||||
}
|
||||
|
||||
String KB_INPUT;
|
||||
|
||||
System.out.println("Please enter the a plane to search for: ");
|
||||
KB_INPUT = readLine();
|
||||
|
||||
Aircraft craft = new Aircraft(KB_INPUT);
|
||||
|
||||
if(aircraftBST.find(craft) == null){
|
||||
System.out.println("No Aircraft Found");
|
||||
}
|
||||
else{
|
||||
System.out.println(aircraftBST.find(craft));
|
||||
}
|
||||
}//end findAircraft()
|
||||
|
||||
/**
|
||||
*Throws a given aircraft overboard
|
||||
*/
|
||||
private void throwAircraftOverboard(){
|
||||
//On a side note, did you guys consult the Navy about this program?
|
||||
//I really don't think it behooves the Navy to throw their aircraft
|
||||
//overboard
|
||||
//but I could be going out on a limb here too
|
||||
String KB_INPUT;
|
||||
|
||||
if(!StrikePackageReady){
|
||||
System.out.println("Strike Package not Ready");
|
||||
return;
|
||||
}
|
||||
|
||||
System.out.println("Please enter the a plane to throw overboard: ");
|
||||
KB_INPUT = readLine();
|
||||
|
||||
Comparable temp = aircraftBST.remove(new Aircraft(KB_INPUT));
|
||||
|
||||
if(temp == null){
|
||||
System.out.println("No removal made");
|
||||
}
|
||||
else{
|
||||
System.out.println((Aircraft)temp);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*Reads the aircraft from file and adds them to the program
|
||||
*/
|
||||
private void createNewStrikePackage(){
|
||||
BufferedReader br;
|
||||
try{
|
||||
br = new BufferedReader(new FileReader(FILE_NAME));
|
||||
}
|
||||
catch(FileNotFoundException fnfe){
|
||||
System.err.println(FILE_NAME + " not found");
|
||||
return;
|
||||
}
|
||||
catch(Exception e){
|
||||
System.err.println(e);
|
||||
return;
|
||||
}
|
||||
|
||||
String aircraft = "";
|
||||
try{
|
||||
boolean bDone = false;
|
||||
while(!bDone){
|
||||
String temp = br.readLine();
|
||||
|
||||
if(temp == null){
|
||||
bDone = true;
|
||||
}
|
||||
else{
|
||||
aircraft+=" "+temp;
|
||||
}
|
||||
}
|
||||
/*aircraft += br.readLine() while <- br.readLine() != null*/
|
||||
}
|
||||
catch(IOException ioe){
|
||||
System.err.println(ioe);
|
||||
return;
|
||||
}
|
||||
|
||||
StringTokenizer st = new StringTokenizer(aircraft);
|
||||
while(st.hasMoreTokens()){
|
||||
aircraftBST.add(new Aircraft(
|
||||
st.nextToken(),
|
||||
st.nextToken(),
|
||||
st.nextToken(),
|
||||
Integer.parseInt(st.nextToken())
|
||||
));
|
||||
}
|
||||
try{
|
||||
br.close();
|
||||
}
|
||||
catch(IOException ioe){
|
||||
System.err.println(ioe);
|
||||
return;
|
||||
}
|
||||
|
||||
StrikePackageReady = true;
|
||||
}//end createNewStrikePackage()
|
||||
|
||||
/**
|
||||
*Writes the current aircraft to file
|
||||
*/
|
||||
private void printStrikePackage(){
|
||||
FileWriter fw;
|
||||
PrintWriter pw;
|
||||
|
||||
//init fw
|
||||
try{
|
||||
fw = new FileWriter("strikePackage.txt");
|
||||
}
|
||||
catch(FileNotFoundException fnfe){
|
||||
System.err.println(fnfe);
|
||||
return;
|
||||
}
|
||||
catch(IOException ioe){
|
||||
System.err.println(ioe);
|
||||
return;
|
||||
}
|
||||
|
||||
//init pw
|
||||
pw = new PrintWriter(fw);
|
||||
|
||||
|
||||
aircraftBST.writeAircraft(aircraftBST,pw);
|
||||
|
||||
try{
|
||||
pw.flush();
|
||||
fw.close();
|
||||
}
|
||||
catch(IOException ioe){
|
||||
System.err.println(ioe);
|
||||
}
|
||||
}//end printStrikePackage()
|
||||
|
||||
/*************************************************************/
|
||||
|
||||
/***************/
|
||||
//Phase 5 stuff//
|
||||
/***************/
|
||||
|
||||
//private Heap launchQueue //restated for coherency
|
||||
|
||||
/**
|
||||
*writes the aircraft to launchLog.txt and sends them off to battle
|
||||
*/
|
||||
private void launchAircraft(){
|
||||
launchQueue = new Heap();
|
||||
|
||||
aircraftBST.createLaunchQueue(aircraftBST,launchQueue);
|
||||
aircraftBST = null;
|
||||
|
||||
FileWriter fw;
|
||||
PrintWriter pw;
|
||||
|
||||
//init fw
|
||||
try{
|
||||
fw = new FileWriter("launchLog.txt");
|
||||
}
|
||||
catch(FileNotFoundException fnfe){
|
||||
System.err.println(fnfe);
|
||||
return;
|
||||
}
|
||||
catch(IOException ioe){
|
||||
System.err.println(ioe);
|
||||
return;
|
||||
}
|
||||
|
||||
//init pw
|
||||
pw = new PrintWriter(fw);
|
||||
|
||||
while(!launchQueue.isEmpty()){
|
||||
Aircraft temp = (Aircraft)(((BSTNode)launchQueue.remove()).getData());
|
||||
|
||||
//old code for the printing of file
|
||||
/*String strTemp = temp.getModel() + " " + temp.getNickname() + " " +
|
||||
temp.getRole() + " " + temp.getLaunchPriority();
|
||||
pw.println(strTemp);*/
|
||||
|
||||
//new code
|
||||
pw.println(temp);
|
||||
|
||||
/*
|
||||
to be honest, I feel the way I did this, the old code, makes more
|
||||
sense than writing "An Aircraft of type blah balh blah" to a file
|
||||
you can reload the file just as easily as aircraftFile.txt.
|
||||
For future TA meetings, please bring up the fact that its annoying
|
||||
to rely on the newgroups (not .announce, the other ones) to find
|
||||
things that should be clear in the instructions to begin with.*/
|
||||
}
|
||||
|
||||
try{
|
||||
pw.flush();
|
||||
fw.close();
|
||||
}
|
||||
catch(IOException ioe){
|
||||
System.err.println(ioe);
|
||||
}
|
||||
StrikePackageReady = false;
|
||||
}//end launchAircraft()
|
||||
|
||||
/**
|
||||
*Writes a menu to screen that runs until the user chooses to quit
|
||||
*/
|
||||
private void doMenu(){
|
||||
boolean quit = false;
|
||||
do{
|
||||
System.out.println(MENU);
|
||||
try{
|
||||
|
||||
int temp = Integer.parseInt(readLine());
|
||||
switch(temp){
|
||||
case 1:
|
||||
if(bPretty){
|
||||
System.out.println("\n\n\n\n/************************");
|
||||
System.out.println(" * Creating new StikePackage...");
|
||||
}
|
||||
createNewStrikePackage();
|
||||
if(bPretty){
|
||||
System.out.println(" * Done.\n\n");
|
||||
}
|
||||
break;
|
||||
|
||||
case 2:
|
||||
if(bPretty){
|
||||
System.out.println("\n\n\n\n/************************");
|
||||
System.out.println(" * Find Aircraft v1.1:");
|
||||
}
|
||||
findAircraft();
|
||||
if(bPretty){
|
||||
System.out.println(" * Done.\n\n");
|
||||
}
|
||||
break;
|
||||
|
||||
case 3:
|
||||
if(bPretty){
|
||||
System.out.println("\n\n\n\n/************************");
|
||||
System.out.println(" * Throw Aircraft Overboard v1.1:");
|
||||
}
|
||||
throwAircraftOverboard();
|
||||
if(bPretty){
|
||||
System.out.println(" * Done.\n\n");
|
||||
}
|
||||
break;
|
||||
|
||||
case 4:
|
||||
if(bPretty){
|
||||
System.out.println("\n\n\n\n/************************");
|
||||
System.out.println(" * Writing StikePackage to File...");
|
||||
}
|
||||
printStrikePackage();
|
||||
if(bPretty){
|
||||
System.out.println(" * Done.\n\n");
|
||||
}
|
||||
break;
|
||||
|
||||
case 5:
|
||||
if(bPretty){
|
||||
System.out.println("\n\n\n\n/************************");
|
||||
System.out.println(" * Launching Aircraft...");
|
||||
}
|
||||
launchAircraft();
|
||||
if(bPretty){
|
||||
System.out.println(" * Done.\n\n");
|
||||
}
|
||||
break;
|
||||
|
||||
case 6:
|
||||
if(bPretty){
|
||||
System.out.println("\n\n\n\n/************************");
|
||||
}
|
||||
System.out.println("Thank you for using pseudo-Aircraft"+
|
||||
"Carrier Version 1.1, send $20 to gtg184g for the"+
|
||||
" full version.\n");
|
||||
if(bPretty){
|
||||
System.out.println(" * Done.");
|
||||
}
|
||||
quit = true;
|
||||
break;
|
||||
default:
|
||||
System.out.println("Try Again, 1-6");
|
||||
break;
|
||||
}
|
||||
}
|
||||
catch(NumberFormatException nfe){
|
||||
System.out.println("Please try again");
|
||||
}
|
||||
}while(!quit);
|
||||
}//end doMenu()
|
||||
|
||||
|
||||
/**
|
||||
* Debugging main for class AircraftCarrier.
|
||||
* This method will rigorously test my code.
|
||||
*
|
||||
* <br><br>
|
||||
* @param args a String array of command line arguments.
|
||||
*/
|
||||
public static void main(String[] args) {
|
||||
AircraftCarrier bob = new AircraftCarrier();
|
||||
|
||||
/*bob.aircraftBST = new BST();
|
||||
bob.aircraftBST.add(new Aircraft("F-14","Tomcat","Interceptor",8));
|
||||
|
||||
bob.StrikePackageReady = false;
|
||||
bob.findAircraft();
|
||||
|
||||
bob.StrikePackageReady = true;
|
||||
bob.findAircraft();
|
||||
bob.throwAircraftOverboard();
|
||||
bob.aircraftBST.outputTree();
|
||||
|
||||
System.out.println("\nTesting createNewStrikePackage()\n");
|
||||
bob.createNewStrikePackage();
|
||||
|
||||
bob.aircraftBST.outputTree();
|
||||
bob.findAircraft();
|
||||
bob.printStrikePackage();
|
||||
|
||||
bob.launchAircraft();
|
||||
System.out.println(bob.aircraftBST);
|
||||
System.out.println(bob.launchQueue);*/
|
||||
|
||||
|
||||
}// end of main(String[] args)
|
||||
|
||||
}// end of class AircraftCarrier
|
||||
Reference in New Issue
Block a user