package course;

public class CourseWithID {
	// File:  /home/walker/java/examples/Course/CourseWithID.java
	// Created:  September 11, 2014
	// Based on /home/walker/java/examples/Course/Course.java
	// Last Revised:  September 11, 2014

	// Field:   Listing of data global to the class
	static int sequenceNumber = 74234; // first unique registration ID
	static int numCourses = 0;         // number of courses created
			
    // Fields:  Listing of private data
    String subject;     // the subject or department name
    double number;         // the course number
    String title;       // name of the course
    int regNum;         // unique course registration ID number

    // Methods
    // Constructors

    /* Build a course, based on subject, course number, credits, 
       and title
     */
    CourseWithID (String subj, double num, String name) {
        subject = subj;
        number = num;
        title = name;
        regNum = sequenceNumber;
        sequenceNumber++;
        numCourses ++;
    }
	      
    // Extractor for subject field
    public String getSubject () {
        return subject;
    }

    // Data convertion
    /* Formulate a string of the fields, in a format suitable for 
       printing
     */
    public String toString () {
        return (regNum + " --- " +subject + " " + number + ":  " + title); 
    }

    // Report class information on number of courses
    public static int numberCourses ()
    {
    	return numCourses;
    }
    
    // method for testing
    public static void main (String[] args) 
        throws Exception {

    	System.out.println ("Creating a partial directory of Grinnell courses");
    	
        // create array of [mostly CS] courses
    	CourseWithID list [] = new CourseWithID [20];
        list [ 0] = new CourseWithID ("CSC", 151.01, "Functional Problem Solving");
        list [ 1] = new CourseWithID ("HIS", 225.01, "Native American History, 1941-1865");
        list [ 2] = new CourseWithID ("HIS", 242.01, "The Rise and Fall of the Soviet Union");
        list [ 3] = new CourseWithID ("HIS", 336.01, "The European Metropolis");
        list [ 4] = new CourseWithID ("CSC", 151.02, "Functional Problem Solving");
        list [ 5] = new CourseWithID ("CSC", 161.01, "Imperative Problem Solving and Data Structures");
        list [ 6] = new CourseWithID ("CSC", 161.03, "Imperative Problem Solving and Data Structures");
        list [ 7] = new CourseWithID ("CSC", 205.01, "Computational Linguistics");
        list [ 8] = new CourseWithID ("LIN", 205.01, "Computational Linguistics");
        list [ 9] = new CourseWithID ("CSC", 207.01, "Algorithms and Object-oriented Design");
        list [10] = new CourseWithID ("CSC", 213.01, "Operating Systems");
        list [11] = new CourseWithID ("CSC", 281.01, "Learning from CS Alumni");
        list [12] = new CourseWithID ("CSC", 301.01, "Analysis of Algorithms");
        list [13] = new CourseWithID ("LIN", 114.01, "Introduction to General Linguistics");
        list [14] = new CourseWithID ("CSC", 321.01, "Software Design Principles and Practices");
        list [15] = new CourseWithID ("CSC", 322.01, "Team Software Community Project");
        System.out.println (numberCourses() + " CourseWithID objects were created");
        System.out.println();

        // Print directory information
        System.out.println ("printing [partial] directory of courses");
        System.out.println ("Reg#        Section    Course Title");
        int i;
        for (i = 0; i < numCourses; i++)
        {
        	System.out.println (list[i]);
        }
        System.out.println();
        
        /* count number of CSC and number of LIN courses in directory */
        int CSCcount = 0;
        int LINcount = 0;
        for (i = 0; i < numCourses; i++)
        {
        	if (list[i].getSubject().equals("CSC"))
        		CSCcount++;
        	if (list[i].getSubject().equals("LIN"))
        		LINcount++;
        }

        System.out.printf ("Number of CSC courses:  %2d\n", CSCcount);
        System.out.printf ("Number of LIN courses:  %2d\n", LINcount);
        
    }

} // class CourseWithID

