Coding Assignment

profilegarinh
seaportproject1.zip

SeaPortproject/CargoShip.java

SeaPortproject/CargoShip.java

/*
 Shreeya Bhetwal
 project 1
 CMSC 335
 */
import  java . util . Scanner ;


public   class   CargoShip   extends   Ship {
     double  cargoValue ;
     double  cargoVolume ;
     double  cargoWeight ;

     public   CargoShip ( Scanner  sc )   {
         super ( sc );
        cargoWeight = sc . nextDouble ();
        cargoVolume = sc . nextDouble ();
        cargoValue = sc . nextDouble ();
     }

    

     public   double  getCargoValue ()   {
         return  cargoValue ;
     }

     public   void  setCargoValue ( double  cargoValue )   {
         this . cargoValue  =  cargoValue ;
     }

     public   double  getCargoVolume ()   {
         return  cargoVolume ;
     }

     public   void  setCargoVolume ( double  cargoVolume )   {
         this . cargoVolume  =  cargoVolume ;
     }

     public   double  getCargoWeight ()   {
         return  cargoWeight ;
     }

     public   void  setCargoWeight ( double  cargoWeight )   {
         this . cargoWeight  =  cargoWeight ;
     }
    
    @ Override
     public   String  toString ()
     {
         return   "Cargo Ship: " + name + " " + index ;
     }
}

SeaPortproject/Dock.java

SeaPortproject/Dock.java

/*
 Shreeya Bhetwal
 project 1
 CMSC 335
 */
import  java . util . Scanner ;


public   class   Dock   extends   Thing {
    
     Ship  ship ;

     public   Dock ( Scanner  sc )   {
         super ( sc );
        
        
     }
    
     public   Ship  getShip ()   {
         return  ship ;
     }

     public   void  setShip ( Ship  ship )   {
         this . ship  =  ship ;
     }
    
     public   String  toString ()
     {
         return   "Dock: " + super . toString () + "\n  Ship: " + ship . toString ();
     }
    
}

SeaPortproject/input.txt

// File: aSPaa.txt // Data file for SeaPort projects // Date: Sat Jul 09 22:51:16 EDT 2016 // parameters: 1 1 5 5 1 5 // ports, docks, pships, cships, jobs, persons // port name index parent(null) // port <string> <int> <int> port Lanshan 10000 0 // dock name index parent(port) // dock <string> <int> <int> dock Pier_4 20004 10000 30004 5 dock Pier_0 20000 10000 30000 dock Pier_1 20001 10000 30001 dock Pier_3 20003 10000 30003 dock Pier_2 20002 10000 30002 // pship name index parent(dock/port) weight length width draft numPassengers numRooms numOccupied // pship <string> <int> <int> <double> <double> <double> <double> <int> <int> <int> pship Gallinules 30000 20000 125.99 234.70 60.67 37.14 746 246 246 pship Remora 30001 20001 126.38 358.27 74.12 31.54 3768 979 979 pship Absentmindedness 30004 20004 86.74 450.43 33.13 41.67 2143 920 920 pship Preanesthetic 30003 20003 149.85 483.92 125.71 31.21 166 409 83 pship Shoetrees 30002 20002 134.41 156.96 120.31 35.20 1673 633 633 // cship name index parent(dock/port) weight length width draft cargoWeight cargoVolume cargoValue // cship <string> <int> <int> <double> <double> <double> <double> <double> <double> <double> cship Erosional 40001 10000 200.80 242.33 38.31 23.49 172.73 188.54 235.57 cship Kielbasas 40000 10000 120.85 362.55 96.82 19.09 33.08 188.31 261.57 cship Generics 40002 10000 79.90 234.26 73.18 15.71 125.27 179.00 729.95 cship Barcelona 40003 10000 219.92 443.54 104.44 34.16 86.69 139.89 813.72 cship Toluene 40004 10000 189.12 448.99 73.97 37.67 88.90 175.03 1002.63 // person name index parent skill // person <string> <int> <int> <string> person Sara 50000 10000 electrician person Duane 50002 10000 inspector person Betsy 50004 10000 cleaner person Archie 50003 10000 captain person Thomas 50001 10000 clerk

SeaPortproject/Job.java

SeaPortproject/Job.java

/*
 Shreeya Bhetwal
 project 1
 CMSC 335
 */
import  java . util . ArrayList ;
import  java . util . Scanner ;


public   class   Job   extends   Thing {
    
     double  duration ;
     ArrayList < String >  requirements ;

     public   Job ( Scanner  sc )   {
         super ( sc );
     }

    
    
     public   double  getDuration ()   {
         return  duration ;
     }

     public   void  setDuration ( double  duration )   {
         this . duration  =  duration ;
     }

     public   ArrayList < String >  getRequirements ()   {
         return  requirements ;
     }

     public   void  setRequirements ( ArrayList < String >  requirements )   {
         this . requirements  =  requirements ;
     }
    
    
    
}

SeaPortproject/PassengerShip.java

SeaPortproject/PassengerShip.java

/*
 Shreeya Bhetwal
 project 1
 CMSC 335
 */
import  java . util . Scanner ;

public   class   PassengerShip   extends   Ship {
     int  numberOfOccupiedRooms ;
     int  numberOfPassengers ;
     int  numberOfRooms ;

   

     public   PassengerShip   ( Scanner  sc )   {
       super   ( sc );
       if   ( sc . hasNextInt ())  numberOfPassengers  =  sc . nextInt ();
       if   ( sc . hasNextInt ())  numberOfRooms  =  sc . nextInt ();
       if   ( sc . hasNextInt ())  numberOfOccupiedRooms  =  sc . nextInt ();
    }   //  end Scanner constructor
    
    

    
    
     public   int  getNumberOfOccupiedRooms ()   {
         return  numberOfOccupiedRooms ;
     }

     public   void  setNumberOfOccupiedRooms ( int  numberOfOccupiedRooms )   {
         this . numberOfOccupiedRooms  =  numberOfOccupiedRooms ;
     }

     public   int  getNumberOfPassengers ()   {
         return  numberOfPassengers ;
     }

     public   void  setNumberOfPassengers ( int  numberOfPassengers )   {
         this . numberOfPassengers  =  numberOfPassengers ;
     }

     public   int  getNumberOfRooms ()   {
         return  numberOfRooms ;
     }

     public   void  setNumberOfRooms ( int  numberOfRooms )   {
         this . numberOfRooms  =  numberOfRooms ;
     }
    
     public   String  toString  ()   {
       String  st  =   "Passenger ship: "   +   super . toString ();
       if   ( jobs . size ()   ==   0 )  
          return  st ;
       for   ( Job  mj :  jobs )  st  +=   "\n       - "   +  mj ;
       return  st ;
    }   // end method toString
    
}

SeaPortproject/Person.java

SeaPortproject/Person.java

/*
 Shreeya Bhetwal
 project 1
 CMSC 335
 */
import  java . util . Scanner ;


public   class   Person   extends   Thing {
    
     String  skills ;

     public   Person ( Scanner  sc )
     {
         super ( sc );
        skills = sc . next ();
     }

     public   String  getSkills ()   {
         return  skills ;
     }

     public   void  setSkills ( String  skills )   {
         this . skills  =  skills ;
     }
    
    @ Override
     public   String  toString ()
     {
         return   "Person: " + name + " " + index + " " + skills ;
     }
    
}

SeaPortproject/PortTime.java

SeaPortproject/PortTime.java

/*
 Shreeya Bhetwal
 project 1
 CMSC 335
 */
public   class   PortTime   {
     int  time ;

     public   PortTime ( int  time )   {
         this . time  =  time ;
     }

     public   int  getTime ()   {
         return  time ;
     }

     public   void  setTime ( int  time )   {
         this . time  =  time ;
     }
    
    
}

SeaPortproject/Project1Report_ShreeyaBhetwal.docx

Shreeya Bhetwal

Project1

Shreeya Bhetwal

Project 1

Design

In Design, Complete project can be divided into 10 classes. A SeaPortProgram class is a main class which will provide the GUI interface which will manipulate the data. A Complete GUI interface has include Read File and Display option in which user can read any file and display that data whenever it’s require.

User Guide

Open the project in the IDE of your choice. The home screen will show the GUI with appropriate buttons and a text field. The lower part of the GUI is where the results will be displayed.

You will first need to choose the appropriate file. In this instance, we will chose the following text file: input.txt. This will load the file into the program. Additionally, you may create your own txt file by using the format that is provided. You are now ready to interact with the GUI. You can choose the option to display the cave.

Test Plan

Test 1 (Open the file correctly)

Expected output: the screen will ask for the file.

Actual output: Here is the screen shot when the file is chosen:

Test 2 (Perform Read)

Expected output: Data will be shown.

Actual output: Here’s the screen shot after the file is chosen:

Comments

In this Project we need to focus on how we can make out code more usable. For instance, this project has 4 phase. So, we need make our GUI expandable.

Lessons Learned

I have learned about following things:

How to use Arraylist

How to use File chooser

What are the benefit to use class in java project.

Improvements Possible

There are lots for improvements we can made are following:

GUI can be improved.

Job class can be implement

We can use Multi-threading so the operation will be perform parallel.

image1.png

image2.png

SeaPortproject/SeaPort.java

SeaPortproject/SeaPort.java

/*
 Shreeya Bhetwal
 project 1
 CMSC 335
 */
import  java . util . ArrayList ;
import  java . util . Scanner ;


public   class   SeaPort   extends   Thing {
    
      ArrayList   < Dock >  docks ;
      ArrayList   < Ship >  ships ;
      ArrayList   < Ship >  que ;
      ArrayList   < Person >   persons ;

     public   SeaPort ( Scanner  sc )   {
         super ( sc );
        docks = new   ArrayList <> ();
        ships = new   ArrayList <> ();
        que = new   ArrayList <> ();
        persons = new   ArrayList <> ();
     }

     
     
     public   ArrayList < Dock >  getDocks ()   {
         return  docks ;
     }

     public   void  setDocks ( ArrayList < Dock >  docks )   {
         this . docks  =  docks ;
     }

     public   ArrayList < Ship >  getShips ()   {
         return  ships ;
     }

     public   void  setShips ( ArrayList < Ship >  ships )   {
         this . ships  =  ships ;
     }

     public   ArrayList < Ship >  getQue ()   {
         return  que ;
     }

     public   void  setQue ( ArrayList < Ship >  que )   {
         this . que  =  que ;
     }

     public   ArrayList < Person >  getPersons ()   {
         return  persons ;
     }

     public   void  setPersons ( ArrayList < Person >  persons )   {
         this . persons  =  persons ;
     }
     
    
     
     
      public   String  toString  ()   {
       String  st  =   "\n\nSeaPort: "   +   super . toString ();
       for   ( Dock  md :  docks )  st  +=   "\n"   +  md ;
      st  +=   "\n\n --- List of all ships in que:" ;
       for   ( Ship  ms :  que  )  st  +=   "\n   > "   +  ms ;
      st  +=   "\n\n --- List of all ships:" ;
       for   ( Ship  ms :  ships )  st  +=   "\n   > "   +  ms ;
      st  +=   "\n\n --- List of all persons:" ;
       for   ( Person  mp :  persons )  st  +=   "\n   > "   +  mp ;
       return  st ;
    }   // end method toString
}

SeaPortproject/SeaPortProgram.java

SeaPortproject/SeaPortProgram.java

/*
 Shreeya Bhetwal
 project 1
 CMSC 335
 */

import  java . io . BufferedReader ;
import  java . io . File ;
import  java . io . FileReader ;
import  java . util . Scanner ;
import  javax . swing . JFileChooser ;
import  javax . swing . JOptionPane ;




public   class   SeaPortProgram   extends  javax . swing . JFrame   {

     World  world = new   World ( null );
     /**
     * Creates new form SeaPortProgram
     */
     public   SeaPortProgram ()   {
         JFileChooser  jf = new   JFileChooser ( "." );
        jf . showOpenDialog ( null );
        jf . setVisible ( true );
         File  f = jf . getSelectedFile ();
         if ( f != null )
         {
            initComponents ();
            readFile ( f );
         }
         else
         {
             JOptionPane . showMessageDialog ( null , "Error: You didn't choose a file." , "Error" , 1 );
         }
        
     }

     public   void  readFile ( File  f )
     {
         try  
         {
             BufferedReader  input = new   BufferedReader ( new   FileReader ( f ));
           
             while ( input . ready ())
             {
                 String  str = input . readLine (). trim ();
                 Scanner  sc = new   Scanner ( str );
                
                 if ( ! str . startsWith ( "//" ))
                 {
                     String  type = "" ;
                     if ( sc . hasNext ())
                     {
                        type = sc . next ();
                     }
                    
                     if ( type . equalsIgnoreCase ( "port" ))
                     {
                         world . assignPort ( new   SeaPort ( sc ));
                     }
                     else   if ( type . equalsIgnoreCase ( "dock" ))
                     {
                         world . assignDock ( new   Dock ( sc ));
                     }
                     else   if ( type . equalsIgnoreCase ( "ship" ))
                     {
                         world . assignShip ( new   Ship ( sc ));
                     }
                     else   if ( type . equalsIgnoreCase ( "pship" ))
                     {
                        world . assignShip ( new   PassengerShip ( sc ));
                     }
                     else   if ( type . equalsIgnoreCase ( "cship" ))
                     {
                        world . assignShip ( new   CargoShip ( sc ));
                     }
                     else   if ( type . equalsIgnoreCase ( "person" ))
                     {
                        world . assignPerson ( new   Person ( sc ));
                     }
                 }                     
             }
            
            output . setText ( world . toString ());
         }  
         catch   ( Exception  e )  
         {
             System . out . println ( e + "-----" );
         }
     }
    
    
    
   
    @ SuppressWarnings ( "unchecked" )
   
     private   void  initComponents ()   {

        buttonGroup1  =   new  javax . swing . ButtonGroup ();
        jScrollPane1  =   new  javax . swing . JScrollPane ();
        output  =   new  javax . swing . JTextArea ();
        searchText  =   new  javax . swing . JTextField ();
        jButton1  =   new  javax . swing . JButton ();
        name  =   new  javax . swing . JRadioButton ();
        index  =   new  javax . swing . JRadioButton ();
        skills  =   new  javax . swing . JRadioButton ();

        setDefaultCloseOperation ( javax . swing . WindowConstants . EXIT_ON_CLOSE );

        output . setColumns ( 20 );
        output . setRows ( 5 );
        jScrollPane1 . setViewportView ( output );

        jButton1 . setText ( "Search" );

        buttonGroup1 . add ( name );
        name . setText ( "Name" );

        buttonGroup1 . add ( index );
        index . setText ( "Index" );

        buttonGroup1 . add ( skills );
        skills . setText ( "Skill" );

        javax . swing . GroupLayout  layout  =   new  javax . swing . GroupLayout ( getContentPane ());
        getContentPane (). setLayout ( layout );
        layout . setHorizontalGroup (
            layout . createParallelGroup ( javax . swing . GroupLayout . Alignment . LEADING )
             . addGroup ( layout . createSequentialGroup ()
                 . addContainerGap ()
                 . addGroup ( layout . createParallelGroup ( javax . swing . GroupLayout . Alignment . LEADING )
                     . addComponent ( jScrollPane1 )
                     . addGroup ( layout . createSequentialGroup ()
                         . addGroup ( layout . createParallelGroup ( javax . swing . GroupLayout . Alignment . LEADING )
                             . addGroup ( layout . createSequentialGroup ()
                                 . addGap ( 6 ,   6 ,   6 )
                                 . addComponent ( name )
                                 . addPreferredGap ( javax . swing . LayoutStyle . ComponentPlacement . RELATED ,   230 ,   Short . MAX_VALUE )
                                 . addComponent ( index )
                                 . addGap ( 167 ,   167 ,   167 )
                                 . addComponent ( skills ))
                             . addComponent ( searchText ))
                         . addPreferredGap ( javax . swing . LayoutStyle . ComponentPlacement . UNRELATED )
                         . addComponent ( jButton1 )
                         . addGap ( 25 ,   25 ,   25 ))))
         );
        layout . setVerticalGroup (
            layout . createParallelGroup ( javax . swing . GroupLayout . Alignment . LEADING )
             . addGroup ( javax . swing . GroupLayout . Alignment . TRAILING ,  layout . createSequentialGroup ()
                 . addContainerGap ()
                 . addGroup ( layout . createParallelGroup ( javax . swing . GroupLayout . Alignment . BASELINE )
                     . addComponent ( searchText ,  javax . swing . GroupLayout . PREFERRED_SIZE ,  javax . swing . GroupLayout . DEFAULT_SIZE ,  javax . swing . GroupLayout . PREFERRED_SIZE )
                     . addComponent ( jButton1 ))
                 . addPreferredGap ( javax . swing . LayoutStyle . ComponentPlacement . RELATED ,  javax . swing . GroupLayout . DEFAULT_SIZE ,   Short . MAX_VALUE )
                 . addGroup ( layout . createParallelGroup ( javax . swing . GroupLayout . Alignment . BASELINE )
                     . addComponent ( name )
                     . addComponent ( index )
                     . addComponent ( skills ))
                 . addPreferredGap ( javax . swing . LayoutStyle . ComponentPlacement . RELATED )
                 . addComponent ( jScrollPane1 ,  javax . swing . GroupLayout . PREFERRED_SIZE ,   344 ,  javax . swing . GroupLayout . PREFERRED_SIZE )
                 . addContainerGap ())
         );

        pack ();
     }
 
     public   static   void  main ( String  args [])   {
       
      
         try   {
             for   ( javax . swing . UIManager . LookAndFeelInfo  info  :  javax . swing . UIManager . getInstalledLookAndFeels ())   {
                 if   ( "Windows" . equals ( info . getName ()))   {
                    javax . swing . UIManager . setLookAndFeel ( info . getClassName ());
                     break ;
                 }
             }
         }   catch   ( ClassNotFoundException  ex )   {
            java . util . logging . Logger . getLogger ( SeaPortProgram . class . getName ()). log ( java . util . logging . Level . SEVERE ,   null ,  ex );
         }   catch   ( InstantiationException  ex )   {
            java . util . logging . Logger . getLogger ( SeaPortProgram . class . getName ()). log ( java . util . logging . Level . SEVERE ,   null ,  ex );
         }   catch   ( IllegalAccessException  ex )   {
            java . util . logging . Logger . getLogger ( SeaPortProgram . class . getName ()). log ( java . util . logging . Level . SEVERE ,   null ,  ex );
         }   catch   ( javax . swing . UnsupportedLookAndFeelException  ex )   {
            java . util . logging . Logger . getLogger ( SeaPortProgram . class . getName ()). log ( java . util . logging . Level . SEVERE ,   null ,  ex );
         }
       

         /* Create and display the form */
        java . awt . EventQueue . invokeLater ( new   Runnable ()   {
             public   void  run ()   {
                 new   SeaPortProgram (). setVisible ( true );
             }
         });
     }

     // Variables declaration
     private  javax . swing . ButtonGroup  buttonGroup1 ;
     private  javax . swing . JRadioButton  index ;
     private  javax . swing . JButton  jButton1 ;
     private  javax . swing . JScrollPane  jScrollPane1 ;
     private  javax . swing . JRadioButton  name ;
     private  javax . swing . JTextArea  output ;
     private  javax . swing . JTextField  searchText ;
     private  javax . swing . JRadioButton  skills ;
     // End of variables declaration
}

SeaPortproject/Ship.java

SeaPortproject/Ship.java

/*
 Shreeya Bhetwal
 project 1
 CMSC 335
 */
import  java . util . ArrayList ;
import  java . util . Scanner ;

public   class   Ship   extends   Thing {
   
     PortTime  arrivalTime , dockTime ;
     double  draft , length , weight , width ;
     ArrayList < Job >  jobs ;

    
     public   Ship ( Scanner  sc )
     {
         super ( sc );
        weight = sc . nextDouble ();
        length = sc . nextDouble ();
        width = sc . nextDouble ();
        draft = sc . nextDouble ();  
        jobs = new   ArrayList <> ();
     }
    
    
    
    
     public   PortTime  getArrivalTime ()   {
         return  arrivalTime ;
     }

     public   void  setArrivalTime ( PortTime  arrivalTime )   {
         this . arrivalTime  =  arrivalTime ;
     }

     public   PortTime  getDockTime ()   {
         return  dockTime ;
     }

     public   void  setDockTime ( PortTime  dockTime )   {
         this . dockTime  =  dockTime ;
     }

     public   double  getDraft ()   {
         return  draft ;
     }

     public   void  setDraft ( double  draft )   {
         this . draft  =  draft ;
     }

     public   double  getLength ()   {
         return  length ;
     }

     public   void  setLength ( double  length )   {
         this . length  =  length ;
     }

     public   double  getWeight ()   {
         return  weight ;
     }

     public   void  setWeight ( double  weight )   {
         this . weight  =  weight ;
     }

     public   double  getWidth ()   {
         return  width ;
     }

     public   void  setWidth ( double  width )   {
         this . width  =  width ;
     }

     public   ArrayList < Job >  getJobs ()   {
         return  jobs ;
     }

     public   void  setJobs ( ArrayList < Job >  jobs )   {
         this . jobs  =  jobs ;
     }
    
    
    
    
}

SeaPortproject/Thing.java

SeaPortproject/Thing.java

/*
 Shreeya Bhetwal
 project 1
 CMSC 335
 */
import  java . util . Scanner ;


public   class   Thing   implements   Comparable < Thing > {

     String  name ;
     int  index ;
     int  parent ;


     public   Thing ( Scanner  sc )
     {
        
         if ( sc != null )
         {
            name = sc . next ();
            index = sc . nextInt ();
            parent = sc . nextInt ();
         }
     }
    

     public   int  getIndex ()   {
         return  index ;
     }

     public   String  getName ()   {
         return  name ;
     }

     public   int  getParent ()   {
         return  parent ;
     }
    
    
    
    @ Override
     public   int  compareTo ( Thing  o )   {
         if ( this . index > o . index )
             return   1 ;
         else   if ( this . index == o . index )
             return   0 ;
         else
             return   - 1 ;
     }
    
    
    @ Override
     public   String  toString ()
     {
         return  name + " " + index ;
     }
}

SeaPortproject/World.java

SeaPortproject/World.java

/*
 Shreeya Bhetwal
 project 1
 CMSC 335
 */
import  java . util . ArrayList ;
import  java . util . Scanner ;


public   class   World   extends   Thing {
    
     ArrayList < SeaPort >  ports ;
     PortTime  time ;

     public   World ( Scanner  sc )   {
         super ( sc );
        ports = new   ArrayList <> ();
     }

     public   ArrayList < SeaPort >  getPorts ()   {
         return  ports ;
     }

     public   void  setPorts ( ArrayList < SeaPort >  ports )   {
         this . ports  =  ports ;
     }

     public   PortTime  getTime ()   {
         return  time ;
     }

     public   void  setTime ( PortTime  time )   {
         this . time  =  time ;
     }
    
      Ship  getShipByIndex  ( int  x )   {
       for   ( SeaPort  msp :  ports )
          for   ( Ship  ms :  msp . ships )
             if   ( ms . index  ==  x )  
                return  ms ;
       return   null ;
    }   // end getShipByIndex
    
     
    Dock  getDockByIndex ( int  x )
    {
        for   ( SeaPort  msp :  ports )
          for   ( Dock  ms :  msp . docks )
             if   ( ms . index  ==  x )  
                return  ms ;
       return   null ;
    } // end getDockByIndex
     
   
    SeaPort  getSeaPortByIndex ( int  x )
    {
        for   ( SeaPort  msp :  ports )
           if ( msp . index == x )
               return  msp ;
       return   null ;
    }
   
    void  assignShip  ( Ship  ms )   {
       Dock  md  =  getDockByIndex ( ms . parent );
       if   ( md  ==   null )   {
          SeaPort  p = getSeaPortByIndex  ( ms . parent );
          if ( p != null )
          {
             p . ships . add  ( ms );
             p . que . add  ( ms );
          }
          return ;
       }
       else
       {
           md . ship  =  ms ;
           getSeaPortByIndex  ( md . parent ). ships . add  ( ms );
       }
     
      
    }   // end method assignShip
   
   
    void  assignPerson ( Person  p )
    {
        for ( SeaPort  sp : ports )
        {
            if ( sp . getIndex () == p . getParent ())
            {
               sp . persons . add ( p );
            }
        }
    }   // end assignPerson
   
    void  assignDock ( Dock  d )
    {
        for ( SeaPort  sp : ports )
        {
            if ( sp . getIndex () == d . getParent ())
            {
               sp . docks . add ( d );
            }
        }
    } //end assignDock
    
    void  assignPort ( SeaPort  p )
    {
       ports . add ( p );
    }
   
   
    public   String  toString ()
    {
        String  str = "" ;
        for ( SeaPort  s : ports )
        {
           str += s . toString () + "\n" ;
        }
        return  str ;
    }
}