/* title: BicycleRace.java description: Software to handle the information management requirements for the race managers... output: http://paepcke.net/BicycleRace_output.html Note: Kavan and I began development together and then branched off */ import java.io.*; class BicycleRace { private static RaceManager Roster = new RaceManager(); private static FileWriter HTMLFile; // For HTML generation public static final long secsInHr = 3600; // Simplify time conversions later public static final long secsInMin = 60; public static void main(String[] arg) { String Cmd; for( ; ; ) { System.out.println("\nRacing Manager\n"); Menu(); System.out.print("\nHow Would You Like To Proceed? "); Cmd = Input.line(); if (Cmd.equals("q")) break; else if(Cmd.equals("a")) addRacer(); else if(Cmd.equals("v")) viewRacer(); else if(Cmd.equals("s")) startTime(); else if(Cmd.equals("f")) finishTime(); else if(Cmd.equals("l")) showRacer(); else if(Cmd.equals("g")) htmlGen(); } } public static void Menu(){ //Menu items will call methods System.out.println("Add Racers... (a)dd"); //in this class, which in turn System.out.println("Enter Start Time... (s)tart"); //talk to RaceManager (array) System.out.println("Enter Finish Time...(f)inish"); //and RacerData (object) System.out.println("Lookup Racer... (l)ookup"); System.out.println("View All Racers... (v)iew"); System.out.println("Generate Report... (g)enerate"); System.out.println("Leave Program... (q)uit"); } public static String grabIdentification() { System.out.print("Enter Name or ID: "); return (Input.line()); } public static void addRacer() { String Name, Home, cmd; System.out.println("Enter the Racers Information Below."); System.out.print("Enter Racer's Name: "); //Add method runs infinitely until "s" Name = Input.line(); System.out.print("Enter Contestant's Hometown: "); Home = Input.line(); Roster.Add(Name, Home); for ( ; ; ){ System.out.print("Enter next racer or (s)top: "); cmd = Input.line(); if(cmd.equals("s")) break; else { Name = cmd; System.out.print("Enter Contestant's Hometown: "); Home = Input.line(); Roster.Add(Name, Home); } } } public static void viewRacer() { System.out.println("ViewRacer was called"); Roster.showroster(); } public static void showRacer() { System.out.println("showRacer was called"); RacerData theRacerObj = lookupRacer(); if(theRacerObj == null) System.out.println("This racer was not found"); else theRacerObj.showRacer(); } public static RacerData lookupRacer() { //Allows user to enter either ID RacerData theRacerObj; //or name without having to specify String tmpID = grabIdentification(); //shared by startTime() & finishTime() if(Character.isLetter(tmpID.charAt(0))) theRacerObj = Roster.getRacerByName(tmpID); else { int tmpNum = Integer.parseInt(tmpID); theRacerObj = Roster.getRacerByID(tmpNum); } return theRacerObj; } public static void startTime() { RacerData tmpRacerObj = lookupRacer(); if(tmpRacerObj == null) System.out.println("This racer was not found"); else { tmpRacerObj.setStartTime(inputTime("start")); System.out.println("New start time set successfullly"); } } public static void finishTime() { RacerData tmpRacerObj = lookupRacer(); if(tmpRacerObj == null) System.out.println("This racer was not found"); else { tmpRacerObj.setFinishTime(inputTime("finish")); System.out.println("New finish time set successfullly"); } } public static long inputTime(String prompt) { //Receives time in hour/min/sec //converts to seconds before return int hrs, mins, secs; System.out.print("Enter " + prompt + " time hour: "); hrs = Input.integer(); System.out.print("Enter " + prompt + " time minute: "); mins = Input.integer(); System.out.print("Enter " + prompt + " time second: "); secs = Input.integer(); return(makeSecs(hrs, mins, secs)); } public static long makeSecs(int hrs, int mins, int secs) { return(hrs * secsInHr + mins * secsInMin + secs); } // #### Begin HTML Generation methods #### //Calls several methods in RacerData //in order to obtain data public static void htmlGen() { //Will run in for() to write out
| Name | \nHome | \nStart | \nFinish | \nElapsed | "); for( int i = 0 ; i < Roster.getcurrSize() ; i++) { racerTmp = Roster.getRacerByID(i); writelnFile("
|---|---|---|---|---|
| " + racerTmp.getName() + " | "); writelnFile("" + racerTmp.getHome() + " | "); writelnFile("" + racerTmp.getStartTime() + " | "); writelnFile("" + racerTmp.getFinishTime() + " | "); writelnFile("" + racerTmp.getElapsedTime() + " | "); writelnFile("