All pastes #452296 Raw Edit

Anonymous

public java v1 · immutable
·published 2007-04-22 04:45 UTC
rendered paste body
// *******************************************************// *   Student.java                                      *// *                                                     *// *   Student operations.                               *// *   Author: Jurand Nogiec                             *// *   Date:   April 11, 2007                            *// *******************************************************public class Student{        //4 private instance variables    private String firstName;    private String lastName;    private String uid;    private SemesterTranscript[] transcriptArray;        //2 private instance methods     private Student()	{	    //no code necessary here	}    //     private SearchResultPair findSemester(SemesterPair semester) // 	{// 	    Error.Assert(// 			 (semester != null),// 			 "Student::findSemester(SemesterPair): " +// 			 "parameter SemesterPair reference must not be null!");	    // 	    boolean semesterNotFound = true;// 	    int semesterIndex = 0;	    // 	    //search the transcriptArray	    // 	    while(semesterNotFound && (semesterIndex < transcriptArray.length))// 		{		    		    	          // 		    if(transcriptArray[semesterIndex].getSemesterPair().compareTo(semester) == 0)// 			    semesterNotFound = false;			// 		    else// 			semesterIndex++;// 		}	    // 	    // from the SemesterTranscript.java file provided in part1// 	    SearchResultPair resultPair = new SearchResultPair();// 	    resultPair.index = semesterIndex;// 	    resultPair.isFound = !(semesterNotFound); // if exits not finding it, semesterNotFound is true// 	    return resultPair;                        // if exits finding it, semesterNotFound is false	    // 	}        private SearchResultPair findSemester(SemesterPair semesterPair)    {	Error.Assert(		     (semesterPair != null),		     "Student::findSemester(SemesterPair): " +		     "parameter SemesterPair reference must not be null!");		SearchResultPair result = new SearchResultPair();		// SemesterPair found		if(transcriptArray.length == 0)	    {		result.index = 0;		result.isFound = false;		return result;	    }	for(int i=0; i < transcriptArray.length; i++)	    {		if(transcriptArray[i].getSemesterPair().equals(semesterPair))		    {			result.index = i;			result.isFound = true;			return result;		    }		else if( semesterPair.compareTo(transcriptArray[i].getSemesterPair().getSeason(),transcriptArray[i].getSemesterPair().getYear()) == 1 )		{			result.index = i;			result.isFound = false;			return result;		}			   	    }		// SemesterPair not found					return result;    }    //15 public instance methods        //constructor    public Student(String theFirstName, String theLastName, String theUid)	{	    Error.Assert(			 (theFirstName != null),			 "Student::Student(String, String, String): " +			 "parameter firstName reference must not be null!");	    	    Error.Assert(			 (theLastName != null),			 "Student::Student(String, String, String): " +			 "parameter lastName reference must not be null!");	    	    Error.Assert(			 (!theFirstName.equals("")),			 "Student::Student(String, String, String): " +			 "parameter String cannot be empty String!");	    	    Error.Assert(			 (!theLastName.equals("")),			 "Student::Student(String, String, String): " +			 "parameter String cannot be empty String!");	    	    Error.Assert(			 (verifyUID(theUid)),			 "Student::Student(String, String, String): " +			 "parameter String UID  must be valid String!");	    	    firstName = theFirstName;	    lastName = theLastName;	    uid = theUid;	    transcriptArray = new SemesterTranscript[0]; // size 0	}            //constructor    public Student(Student origStudent)	{	    Error.Assert(			 (origStudent != null),			 "Student::Student(String): " +			 "parameter origStudent reference must not be null!");	    	    //independent copy, initialize object to be copy of parameter object	    firstName  = origStudent.firstName;	    lastName = origStudent.lastName;	    uid = origStudent.uid;	    transcriptArray = new SemesterTranscript[origStudent.transcriptArray.length];	    	    for(int i=0; i < transcriptArray.length; i++)		transcriptArray[i] = origStudent.transcriptArray[i].copy();	}        public Student copy()	{	    Student studentCopy =  new Student(this);	    return studentCopy;	}        public String getFirstName()	{	    return firstName;	}    public String getLastName()	{	    return lastName;	}    public String getUID()	{	    return uid;	}    public boolean addCourse(SemesterPair semesterPair, String courseName, int credit)	{	    Error.Assert(			 (semesterPair != null),			 "Student::addCourse(SemesterPair, String, int): " +			 "parameter SemesterPair semester reference must not be null!");	    Error.Assert(			 (courseName != null),			 "Student::addCourse(SemesterPair, String, int): " +			 "parameter String courseName reference must not be null!");	    Error.Assert(			 !(courseName.equals("")),			 "Student::addCourse(SemesterPair, String, int): " +			 "parameter String courseName reference must not be empty!");	    Error.Assert(			 (credit > 0),			 "Student::addCourse(SemesterPair, String, int): " +			 "parameter int credit reference must be positive!");	    int loc = findSemester(semesterPair).index;	    		    if(findSemester(semesterPair).isFound)	       return transcriptArray[loc].addCourse(courseName, credit);	       	    SemesterTranscript[] temp = new SemesterTranscript[transcriptArray.length];	    	    if (transcriptArray.length == 0) {                transcriptArray = new SemesterTranscript[1];		transcriptArray[loc] = new SemesterTranscript(semesterPair); 		return transcriptArray[loc].addCourse(courseName, credit);	    }	    	    for(int i=0; i < transcriptArray.length; i++)                                   		temp[i] = transcriptArray[i];                                          	    	    transcriptArray = new SemesterTranscript[temp.length + 1]; 	    	    for(int i=0; i < loc; i++) 		transcriptArray[i] = temp[i]; 	    	    for(int i=loc+1; i < transcriptArray.length; i++) 		transcriptArray[i] = temp[i];  	    	    transcriptArray[loc] = new SemesterTranscript(semesterPair); 	    return transcriptArray[loc].addCourse(courseName, credit);	    	}        public boolean removeCourse(SemesterPair semesterPair, String courseName)    {	int loc = findSemester(semesterPair).index;	if(!findSemester(semesterPair).isFound)	    return false;		// else semester is found	if(transcriptArray[loc].getNumCourses() <= 0)	    {				SemesterTranscript[] temp = new SemesterTranscript[transcriptArray.length];				for(int i=0; i < transcriptArray.length; i++)		    temp[i] = transcriptArray[i];				transcriptArray = new SemesterTranscript[temp.length - 1];				for(int i=0; i < loc; i++)		    transcriptArray[i] = temp[i];				for(int i=loc+1; i < temp.length; i++)		    transcriptArray[i-1] = temp[i];				return true;	    }	return transcriptArray[loc].removeCourse(courseName);	    }        public boolean setCourseGrade(SemesterPair semesterPair, String courseName, String newGrade)	{	    Error.Assert(			 (semesterPair != null),			 "Student::setCourseGrade(SemesterPair, String, String): " +			 "parameter SemesterPair semester reference must not be null!");	    Error.Assert(			 (courseName != null),			 "Student::setCourseGrade(SemesterPair, String, String): " +			 "parameter String courseName reference must not be null!");	    Error.Assert(			 (newGrade != null),			 "Student::setCourseGrade(SemesterPair, String, String): " +			 "parameter String newGrade reference must not be null!");	    Error.Assert(			 (!courseName.equals("")),			 "Student::setCourseGrade(SemesterPair, String, String): " +			 "parameter String courseName reference must not be empty!");	    	    Error.Assert(			 (GradeEntry.verifyGrade(newGrade)),			 "Student::setCourseGrade(SemesterPair, String, String): " +			 "parameter String newGrade reference must be valid grade!");	    int loc = findSemester(semesterPair).index;	    if(findSemester(semesterPair).isFound)		return transcriptArray[loc].setCourseGrade(courseName, newGrade); // return true	    //else		return false;	}    public GradeResultPair getCourseGrade(SemesterPair semesterPair, String courseName)	{	    Error.Assert(			 (semesterPair != null),			 "Student::getCourseGrade(SemesterPair, String): " +			 "parameter SemesterPair semesterPair reference must not be null!");	    Error.Assert(			 (courseName != null),			 "Student::getCourseGrade(SemesterPair, String): " +			 "parameter String courseName reference must not be null!");	    Error.Assert(			 (!courseName.equals("")),			 "Student::getCourseGrade(SemesterPair, String): " +			 "parameter String courseName reference must not be empty!");	    int loc = findSemester(semesterPair).index;	    if(findSemester(semesterPair).isFound)		return transcriptArray[loc].getCourseGrade(courseName); // returns a GradeResultPair	    //else return an empty, false GradeResultPair	    GradeResultPair result = new GradeResultPair();	    result.grade = "";	    result.isFound = false;	    return result;	}    public GPAResultPair getGPA()    {	double totalCredit = 0;	double totalGrade = 0;	double curGrade = 0;	for(int i=0; i < transcriptArray.length; i++)	    {		for(int j=0; j < transcriptArray[i].getGradeEntries().length; j++)		    {			GradeEntry grd = transcriptArray[i].getGradeEntries()[j];			if(grd.getCourseGrade() != "-")			    totalCredit = totalCredit + grd.getCourseCredit();			if(grd.getCourseGrade().charAt(0)=='A')			    curGrade = 4;			if(grd.getCourseGrade().charAt(0)=='B')			    curGrade = 3;			if(grd.getCourseGrade().charAt(0)=='C')			    curGrade = 2;			if(grd.getCourseGrade().charAt(0)=='D')			    curGrade = 1;			if(grd.getCourseGrade().charAt(0)=='F')			    curGrade = 0;			if(grd.getCourseGrade().length() == 2)			    {				if(grd.getCourseGrade().charAt(1)=='-')				    curGrade -= .3;				else if (grd.getCourseGrade().charAt(1)=='+')				    curGrade += .3;			    }			totalGrade += curGrade;		    }	    }	GPAResultPair gpa = new GPAResultPair();		//all pending	if(totalCredit <= 0)	    {		gpa.isLegitimateGPA = false;		gpa.GPA = 0;	    }	else	    {		gpa.isLegitimateGPA = true;		gpa.GPA = totalGrade/totalCredit;	    }	    	return gpa;    }    public OutputData getCourseOutput(SemesterPair semesterPair, String courseName)	{	    Error.Assert(			 (semesterPair != null),			 "Student::getCourseOutput(SemesterPair, String): " +			 "parameter SemesterPair semesterPair reference must not be null!");	    Error.Assert(			 (courseName != null),			 "Student::getCourseOutput(SemesterPair, String): " +			 "parameter String courseName reference must not be null!");    	    Error.Assert(			 (!courseName.equals("")),			 "Student::getCourseOutput(SemesterPair, String): " +			 "parameter String courseName reference must not be empty!");	    int loc = findSemester(semesterPair).index;	    if(findSemester(semesterPair).isFound)		return transcriptArray[loc].getCourseOutput(courseName);	    	    //else	    return new OutputData(); //empty	}    public OutputData getSemesterOutput(SemesterPair semesterPair)	{	    Error.Assert(			 (semesterPair != null),			 "Student::getSemesterOutput(SemesterPair): " +			 "parameter SemesterPair semesterPair reference must not be null!");	     int loc = findSemester(semesterPair).index;	    if(findSemester(semesterPair).isFound)		return transcriptArray[loc].getOutput();	    	    //else	    return new OutputData(); //empty, no lines	}    public OutputData getOutput()	    {		OutputData data = new OutputData();				data.append(lastName);		data.append(firstName);		data.append(uid);				for(int i=0; i < transcriptArray.length; i++)		    data.append(transcriptArray[i].getOutput());				return data;			}    public void write(WriteFile writeHandle)    {	    	{	    Error.Assert(			 (writeHandle != null),			 "Student::write(WriteFile): " +			 "parameter WriteFile reference must not be null!");			    Error.Assert(			 !writeHandle.isClosed(),			 "Student::write(writeFile): " +			 "cannot write to a closed file!");			    writeHandle.println(firstName); // String	    writeHandle.println(lastName); //String	    writeHandle.println(uid); //String	    	    writeHandle.println(transcriptArray.length); // number of transcripts Int	    	    // in each SemesterTranscript, array of SemesterPair (season, year)	    for(int i=0; i < transcriptArray.length; i++)		{		    writeHandle.println(transcriptArray[i].getSemesterPair().getSeason()); // season String		    writeHandle.println(transcriptArray[i].getSemesterPair().getYear()); // year Int		    writeHandle.println(transcriptArray[i].getNumCourses()); // number of courses in this semester Int		    		    // in each SemesterPair, array of GradeEntry (name, grade, credit)		    for(int j=0; j < transcriptArray[i].getNumCourses(); j++)			{			    writeHandle.println(transcriptArray[i].getGradeEntries()[j].getCourseName()); // String			    writeHandle.println(transcriptArray[i].getGradeEntries()[j].getCourseCredit()); // Int			    writeHandle.println(transcriptArray[i].getGradeEntries()[j].getCourseGrade()); // String 			}		    		}	}	    }                //two public class methods    public static Student read(ReadFile readHandle)    {		Error.Assert(		     (readHandle != null),		     "Student::read(ReadFile): " +		     "parameter ReadFile reference must not be null!");		Error.Assert(		     !readHandle.isClosed(),		     "Student::read(readFile): " +		     "cannot read from a closed file!");		Student initStudent = new Student(readHandle.readString(), readHandle.readString(), readHandle.readString());	int transcriptNum = readHandle.readInt();	for(int i=0; i < transcriptNum; i++)	    {		SemesterPair semesterPair = new SemesterPair(readHandle.readString(), readHandle.readInt());		int courseNum = readHandle.readInt();		for(int j=0; j < courseNum; j++)		    {			String courseName = readHandle.readString();			int credit = readHandle.readInt();			String grade = readHandle.readString();			initStudent.addCourse(semesterPair, courseName, credit);			initStudent.setCourseGrade(semesterPair, courseName, grade);		    }	    }	return initStudent;    }    public static boolean verifyUID(String uid)	{	    if(uid.length() == 9)		{		    for(int i=0; i < uid.length(); i++)			{			    if(!Character.isDigit(uid.charAt(i)))				return false;			}		    return true;		}	    	    //else not 9	    return false;	    	}}