Inherit the STUDENT Class(Program here http://thecprojectt.blogspot.in/2013/09/simple-java-program-to-demonstrate.html) and override the input method so as to input the department of each student. Search and display a sorted list of students one department or students based on scoring criteria. Create an arraylist of students and remove a student based on scoring criteria and then call gc() and check for free memory
import java.util.*;
public class ListStudent
{
public static void main(String[] args)
{
int[] mdays={31,28,31,30,31,30,31,31,30,31,30,31};
int[] ldays={31,29,31,30,31,30,31,31,30,31,30,31};
int ch,k=0,n;
String d1;
boolean lp,fg=true;
Runtime r = Runtime.getRuntime();
Scanner in = new Scanner(System.in);
Course co = new Course();
extendStudent[] students = new extendStudent[6];
for(int i=0;i<6;i++)
students[i]=new extendStudent();
ArrayList<extendStudent> L = new ArrayList<extendStudent>();
System.out.println("Courses available are Graduation, PG and PhD with 3,2 and 1 seats respectively:");
String choice1="";
do
{
System.out.println("\n Enter the course name:");
String S = in.next();
if(co.getCourse(S).equals("XX"))
{
System.out.println("Invalid course:");
continue;
}
if(co.getSeat(S)>co.getSeatLimit(S))
{
System.out.println("Seats for the course "+S+" is exhausted:");
continue;
}
System.out.println("Enter the Record for student :"+(k+1));
students[k].setCourse(S);
students[k].inputData();
L.add(students[k]);
k++;
System.out.println(" Want to add another record yes/no:");
choice1 = in.next();
}while("YES".equalsIgnoreCase(choice1));
n=k;
System.out.println(" Intial List Size is: "+L.size());
System.out.println("Press 1 to display Records of all STUDENTS:");
System.out.println("Press 2 to see the result of all STUDENTS:");
ch = in.nextInt();
switch(ch)
{
case 1:
for(int i=0;i<L.size();i++)
L.get(i).displayAll();
break;
case 2:
for(int i=0;i<L.size();i++)
L.get(i).resultBuild();
break;
default:
System.out.println("Wrong choice:");
break;
}
System.out.println(" Intial List Size is: "+L.size());
System.out.println(" Total free memory is: "+r.freeMemory()+" Bytes");
System.out.println(" Want to search by Admission Date(dd/mm/yyyy)? yes/no:");
String choice = in.next();
if("YES".equalsIgnoreCase(choice))
{
int d=0,m=0,y=0;
do {
fg=true;
int i=0;
int j=0;
String temp ="";
System.out.println("Enter the admission date(dd/mm/yyyy):");
d1=in.next();
while(d1.charAt(i)!='/' && i<d1.length())
{
if(0 <= d1.charAt(i)-48 && d1.charAt(i)-48 <= 9 )
{
temp=temp+d1.charAt(i);
i++;
j++;
}
else
{
System.out.println("Incorrect format:");
i++;
fg=false;
break;
}
} //d extraction
//System.out.println("Temp="+temp+"I="+i+"J="+j+"fg="+fg);
if(fg==true && j<=2 && d1.charAt(i)=='/' && j >0 )
{
j=0;
d = Integer.valueOf(temp);
i=i+1;
temp="";
while(d1.charAt(i)!='/' && i<d1.length() )
{
if(0 <= d1.charAt(i)-48 && d1.charAt(i)-48 <= 9 )
{
temp=temp+d1.charAt(i);
i++;
j++;
}
else
{
System.out.println("Incorrect format:");
i++;
//j++;
fg=false;
break;
}
} //m extraction
m = Integer.valueOf(temp);
}
//System.out.println("Temp="+temp+"I="+i+"J="+j+"fg="+fg);
if(fg==true && j<=2 && d1.charAt(i)=='/' && j >0 && m <=12 && 1<=m)
{
j=0;
//m = Integer.valueOf(temp);
//System.out.println(d);
i=i+1;
temp="";
while(i<d1.length())
{
if(0 <= d1.charAt(i)-48 && d1.charAt(i)-48 <= 9 )
{
temp=temp+d1.charAt(i);
i++;
j++;
}
else
{
System.out.println("Incorrect format:");
fg=false;
i++;
break;
//j++;
}
} //y extraction
}
//System.out.println("Temp="+temp+"I="+i+"J="+j+"fg="+fg);
if(fg==true && j==4)
{
y = Integer.valueOf(temp);
fg=true;
}//end of else of y
else
fg=false;
if(fg==true)
{
if(y%400==0)
lp=true;
else if (y%100==0)
lp=false;
else if (y%4==0)
lp=true;
else
lp=false;
if(lp==false)
{
if(d>mdays[m-1] || d < 1 )
{
System.out.println("Invalid d of a m:");
fg=false;
}
}//non-lp y checking
else
{
if(d>ldays[m-1] || d < 1)
{
System.out.println("Invalid d of a m:");
fg=false;
}
} //lp y checking
} // checking for vaild date in months
}while(fg==false);
d1="";
d1=d+"/"+m+"/"+y;
for(int i=0;i<L.size();i++)
{
if(L.get(i).searchByAdmissionDate().equals(d1))
L.get(i).displayAll();
}
}
System.out.println("Press 1 to display Records on basis of Departments:");
System.out.println("Press 2 to display Records on basis of Scoring Criteria:");
ch = in.nextInt();
switch(ch)
{
case 1:
System.out.println("Enter the Department name:");
String dept = in.next();
for(int i=0;i<L.size();i++)
if(L.get(i).deptName().equals(dept))
{
System.out.println("Department name: "+dept+" Student Name: "+L.get(i).getName());
}
break;
case 2:
System.out.println("Enter the cut-off percentage:");
double per = in.nextDouble();
extendStudent S = new extendStudent();
for(int i=0;i<n-1;i++)
{
for(int j=0;j<n-i-1;j++)
{
if(L.get(j).getPercentage()<L.get(j+1).getPercentage())
{
S=L.get(j);
L.set(j,L.get(j+1));
L.set(j+1,S);
}
}
}
System.out.println(" Sorted List is:");
for(int i=0;i<n;i++)
{
System.out.println("Department name: "+L.get(i).deptName()+" Student Name: "+L.get(i).getName()+" Percentage Marks: "+L.get(i).getPercentage());
}
System.out.println("List after imposing the cut-off percentage:");
for(int i=0;i<L.size();i++)
{
if(L.get(i).getPercentage()>=per)
System.out.println("Department name: "+L.get(i).deptName()+" Student Name: "+L.get(i).getName()+" Percentage Marks: "+L.get(i).getPercentage());
else
{
L.remove(i);
r.gc();
}
}
break;
default:
System.out.println("Wrong choice:");
break;
}
in.close();
System.out.println(" List Size after elimination is: "+L.size());
System.out.println(" Total free memory after removing unwanted objects: "+r.freeMemory()+" Bytes");
}
}
class StudentRecord
{
StudentRecord()
{
roll=0;
name="";
co="";
for(int i:marks)
marks[i]=0;
}
public String searchByAdmissionDate()
{
return (dte);
}
public String getName()
{
return name;
}
public void resultBuild()
{
int sum=0;
System.out.println("----------------------------------------------------");
System.out.println("Name :"+name);
System.out.println("Course :"+co);
System.out.println("Roll Number :"+roll);
System.out.println("----------------------------------------------------");
for(int i=0;i<5;i++)
{
System.out.println("Subject "+(i+1)+" "+marks[i]);
sum +=marks[i];
}
System.out.println("Total Marks: "+sum);
System.out.println("Percentage: "+sum/5);
percentage= sum/5;
System.out.println("");
}
public void inputData()
{
Scanner in = new Scanner(System.in);
System.out.println("Enter the name:");
name=in.nextLine();
System.out.println("Enter the roll number:");
roll=in.nextInt();
do {
flag=true;
int i=0;
int j=0;
String temp ="";
System.out.println("Enter the admission date(dd/mm/yyyy):");
dte=in.next();
while(dte.charAt(i)!='/' && i<dte.length())
{
if(0 <= dte.charAt(i)-48 && dte.charAt(i)-48 <= 9 )
{
temp=temp+dte.charAt(i);
i++;
j++;
}
else
{
System.out.println("Incorrect format:");
i++;
flag=false;
break;
}
} //day extraction
//System.out.println("Temp="+temp+"I="+i+"J="+j+"flag="+flag);
if(flag==true && j<=2 && dte.charAt(i)=='/' && j >0 )
{
j=0;
day = Integer.valueOf(temp);
i=i+1;
temp="";
while(dte.charAt(i)!='/' && i<dte.length() )
{
if(0 <= dte.charAt(i)-48 && dte.charAt(i)-48 <= 9 )
{
temp=temp+dte.charAt(i);
i++;
j++;
}
else
{
System.out.println("Incorrect format:");
i++;
//j++;
flag=false;
break;
}
} //month extraction
month = Integer.valueOf(temp);
}
//System.out.println("Temp="+temp+"I="+i+"J="+j+"flag="+flag);
if(flag==true && j<=2 && dte.charAt(i)=='/' && j >0 && month <=12 && 1<=month)
{
j=0;
//month = Integer.valueOf(temp);
//System.out.println(day);
i=i+1;
temp="";
while(i<dte.length())
{
if(0 <= dte.charAt(i)-48 && dte.charAt(i)-48 <= 9 )
{
temp=temp+dte.charAt(i);
i++;
j++;
}
else
{
System.out.println("Incorrect format:");
flag=false;
i++;
break;
//j++;
}
} //year extraction
}
//System.out.println("Temp="+temp+"I="+i+"J="+j+"flag="+flag);
if(flag==true && j==4)
{
year = Integer.valueOf(temp);
flag=true;
}//end of else of year
else
flag=false;
if(flag==true)
{
if(year%400==0)
leap=true;
else if (year%100==0)
leap=false;
else if (year%4==0)
leap=true;
else
leap=false;
if(leap==false)
{
if(day>mdays[month-1] || day < 1 )
{
System.out.println("Invalid day of a month:");
flag=false;
}
}//non-leap year checking
else
{
if(day>ldays[month-1] || day < 1)
{
System.out.println("Invalid day of a month:");
flag=false;
}
} //leap year checking
} // checking for vaild date in months
}while(flag==false);
dte="";
dte=day+"/"+month+"/"+year;
System.out.println("Enter the marks:");
for(int i=0;i<5;i++)
{
System.out.println("Enter the marks in Subject:"+(i+1));
marks[i]=in.nextInt();
}
}
public void setCourse(String S)
{
co=S;
}
public void displayAll()
{
System.out.println("Roll No. = "+roll+" Name= "+name+" Course ="+co);
System.out.println("Admission date: "+dte);
for(int i=0;i<5;i++)
{
System.out.println("Marks in Subject "+(i+1)+"= "+marks[i]);
}
System.out.println("");
}
public double getPercentage()
{
return percentage;
}
private int roll;
private String name;
private String co;
private String dte;
private boolean flag=true;
private boolean leap;
private double percentage;
private int day;
private int month;
private int year;
int[] marks = new int[5];
int[] mdays={31,28,31,30,31,30,31,31,30,31,30,31};
int[] ldays={31,29,31,30,31,30,31,31,30,31,30,31};
}
class extendStudent extends StudentRecord
{
public extendStudent()
{
super();
Department="";
}
public void inputData()
{
Scanner in = new Scanner(System.in);
System.out.println("Enter the department:");
Department = in.nextLine();
super.inputData();
}
public String deptName()
{
return Department;
}
public double getPercentage()
{
return super.getPercentage();
}
private String Department;
}
class Course
{
Course()
{
seats=new int[3];
seats[0]=0;
seats[1]=0;
seats[2]=0;
}
public String getCourse(String S)
{
for(int i=0;i<3;i++)
if(S.equalsIgnoreCase(course[i]))
{
seats[i]++;
return course[i];
}
return "XX";
}
public int getSeat(String S)
{
for(int i=0;i<3;i++)
{
if(S.equalsIgnoreCase(course[i]))
return seats[i];
}
return -9;
}
public int getSeatLimit(String S)
{
for(int i=0;i<3;i++)
{
if(S.equalsIgnoreCase(course[i]))
return fixSeat[i];
}
return -9;
}
private static String[] course = {"Graduation", "PG", "PhD"};
private static int[] fixSeat={3,2,1};
private int[] seats;
}
import java.util.*;
public class ListStudent
{
public static void main(String[] args)
{
int[] mdays={31,28,31,30,31,30,31,31,30,31,30,31};
int[] ldays={31,29,31,30,31,30,31,31,30,31,30,31};
int ch,k=0,n;
String d1;
boolean lp,fg=true;
Runtime r = Runtime.getRuntime();
Scanner in = new Scanner(System.in);
Course co = new Course();
extendStudent[] students = new extendStudent[6];
for(int i=0;i<6;i++)
students[i]=new extendStudent();
ArrayList<extendStudent> L = new ArrayList<extendStudent>();
System.out.println("Courses available are Graduation, PG and PhD with 3,2 and 1 seats respectively:");
String choice1="";
do
{
System.out.println("\n Enter the course name:");
String S = in.next();
if(co.getCourse(S).equals("XX"))
{
System.out.println("Invalid course:");
continue;
}
if(co.getSeat(S)>co.getSeatLimit(S))
{
System.out.println("Seats for the course "+S+" is exhausted:");
continue;
}
System.out.println("Enter the Record for student :"+(k+1));
students[k].setCourse(S);
students[k].inputData();
L.add(students[k]);
k++;
System.out.println(" Want to add another record yes/no:");
choice1 = in.next();
}while("YES".equalsIgnoreCase(choice1));
n=k;
System.out.println(" Intial List Size is: "+L.size());
System.out.println("Press 1 to display Records of all STUDENTS:");
System.out.println("Press 2 to see the result of all STUDENTS:");
ch = in.nextInt();
switch(ch)
{
case 1:
for(int i=0;i<L.size();i++)
L.get(i).displayAll();
break;
case 2:
for(int i=0;i<L.size();i++)
L.get(i).resultBuild();
break;
default:
System.out.println("Wrong choice:");
break;
}
System.out.println(" Intial List Size is: "+L.size());
System.out.println(" Total free memory is: "+r.freeMemory()+" Bytes");
System.out.println(" Want to search by Admission Date(dd/mm/yyyy)? yes/no:");
String choice = in.next();
if("YES".equalsIgnoreCase(choice))
{
int d=0,m=0,y=0;
do {
fg=true;
int i=0;
int j=0;
String temp ="";
System.out.println("Enter the admission date(dd/mm/yyyy):");
d1=in.next();
while(d1.charAt(i)!='/' && i<d1.length())
{
if(0 <= d1.charAt(i)-48 && d1.charAt(i)-48 <= 9 )
{
temp=temp+d1.charAt(i);
i++;
j++;
}
else
{
System.out.println("Incorrect format:");
i++;
fg=false;
break;
}
} //d extraction
//System.out.println("Temp="+temp+"I="+i+"J="+j+"fg="+fg);
if(fg==true && j<=2 && d1.charAt(i)=='/' && j >0 )
{
j=0;
d = Integer.valueOf(temp);
i=i+1;
temp="";
while(d1.charAt(i)!='/' && i<d1.length() )
{
if(0 <= d1.charAt(i)-48 && d1.charAt(i)-48 <= 9 )
{
temp=temp+d1.charAt(i);
i++;
j++;
}
else
{
System.out.println("Incorrect format:");
i++;
//j++;
fg=false;
break;
}
} //m extraction
m = Integer.valueOf(temp);
}
//System.out.println("Temp="+temp+"I="+i+"J="+j+"fg="+fg);
if(fg==true && j<=2 && d1.charAt(i)=='/' && j >0 && m <=12 && 1<=m)
{
j=0;
//m = Integer.valueOf(temp);
//System.out.println(d);
i=i+1;
temp="";
while(i<d1.length())
{
if(0 <= d1.charAt(i)-48 && d1.charAt(i)-48 <= 9 )
{
temp=temp+d1.charAt(i);
i++;
j++;
}
else
{
System.out.println("Incorrect format:");
fg=false;
i++;
break;
//j++;
}
} //y extraction
}
//System.out.println("Temp="+temp+"I="+i+"J="+j+"fg="+fg);
if(fg==true && j==4)
{
y = Integer.valueOf(temp);
fg=true;
}//end of else of y
else
fg=false;
if(fg==true)
{
if(y%400==0)
lp=true;
else if (y%100==0)
lp=false;
else if (y%4==0)
lp=true;
else
lp=false;
if(lp==false)
{
if(d>mdays[m-1] || d < 1 )
{
System.out.println("Invalid d of a m:");
fg=false;
}
}//non-lp y checking
else
{
if(d>ldays[m-1] || d < 1)
{
System.out.println("Invalid d of a m:");
fg=false;
}
} //lp y checking
} // checking for vaild date in months
}while(fg==false);
d1="";
d1=d+"/"+m+"/"+y;
for(int i=0;i<L.size();i++)
{
if(L.get(i).searchByAdmissionDate().equals(d1))
L.get(i).displayAll();
}
}
System.out.println("Press 1 to display Records on basis of Departments:");
System.out.println("Press 2 to display Records on basis of Scoring Criteria:");
ch = in.nextInt();
switch(ch)
{
case 1:
System.out.println("Enter the Department name:");
String dept = in.next();
for(int i=0;i<L.size();i++)
if(L.get(i).deptName().equals(dept))
{
System.out.println("Department name: "+dept+" Student Name: "+L.get(i).getName());
}
break;
case 2:
System.out.println("Enter the cut-off percentage:");
double per = in.nextDouble();
extendStudent S = new extendStudent();
for(int i=0;i<n-1;i++)
{
for(int j=0;j<n-i-1;j++)
{
if(L.get(j).getPercentage()<L.get(j+1).getPercentage())
{
S=L.get(j);
L.set(j,L.get(j+1));
L.set(j+1,S);
}
}
}
System.out.println(" Sorted List is:");
for(int i=0;i<n;i++)
{
System.out.println("Department name: "+L.get(i).deptName()+" Student Name: "+L.get(i).getName()+" Percentage Marks: "+L.get(i).getPercentage());
}
System.out.println("List after imposing the cut-off percentage:");
for(int i=0;i<L.size();i++)
{
if(L.get(i).getPercentage()>=per)
System.out.println("Department name: "+L.get(i).deptName()+" Student Name: "+L.get(i).getName()+" Percentage Marks: "+L.get(i).getPercentage());
else
{
L.remove(i);
r.gc();
}
}
break;
default:
System.out.println("Wrong choice:");
break;
}
in.close();
System.out.println(" List Size after elimination is: "+L.size());
System.out.println(" Total free memory after removing unwanted objects: "+r.freeMemory()+" Bytes");
}
}
class StudentRecord
{
StudentRecord()
{
roll=0;
name="";
co="";
for(int i:marks)
marks[i]=0;
}
public String searchByAdmissionDate()
{
return (dte);
}
public String getName()
{
return name;
}
public void resultBuild()
{
int sum=0;
System.out.println("----------------------------------------------------");
System.out.println("Name :"+name);
System.out.println("Course :"+co);
System.out.println("Roll Number :"+roll);
System.out.println("----------------------------------------------------");
for(int i=0;i<5;i++)
{
System.out.println("Subject "+(i+1)+" "+marks[i]);
sum +=marks[i];
}
System.out.println("Total Marks: "+sum);
System.out.println("Percentage: "+sum/5);
percentage= sum/5;
System.out.println("");
}
public void inputData()
{
Scanner in = new Scanner(System.in);
System.out.println("Enter the name:");
name=in.nextLine();
System.out.println("Enter the roll number:");
roll=in.nextInt();
do {
flag=true;
int i=0;
int j=0;
String temp ="";
System.out.println("Enter the admission date(dd/mm/yyyy):");
dte=in.next();
while(dte.charAt(i)!='/' && i<dte.length())
{
if(0 <= dte.charAt(i)-48 && dte.charAt(i)-48 <= 9 )
{
temp=temp+dte.charAt(i);
i++;
j++;
}
else
{
System.out.println("Incorrect format:");
i++;
flag=false;
break;
}
} //day extraction
//System.out.println("Temp="+temp+"I="+i+"J="+j+"flag="+flag);
if(flag==true && j<=2 && dte.charAt(i)=='/' && j >0 )
{
j=0;
day = Integer.valueOf(temp);
i=i+1;
temp="";
while(dte.charAt(i)!='/' && i<dte.length() )
{
if(0 <= dte.charAt(i)-48 && dte.charAt(i)-48 <= 9 )
{
temp=temp+dte.charAt(i);
i++;
j++;
}
else
{
System.out.println("Incorrect format:");
i++;
//j++;
flag=false;
break;
}
} //month extraction
month = Integer.valueOf(temp);
}
//System.out.println("Temp="+temp+"I="+i+"J="+j+"flag="+flag);
if(flag==true && j<=2 && dte.charAt(i)=='/' && j >0 && month <=12 && 1<=month)
{
j=0;
//month = Integer.valueOf(temp);
//System.out.println(day);
i=i+1;
temp="";
while(i<dte.length())
{
if(0 <= dte.charAt(i)-48 && dte.charAt(i)-48 <= 9 )
{
temp=temp+dte.charAt(i);
i++;
j++;
}
else
{
System.out.println("Incorrect format:");
flag=false;
i++;
break;
//j++;
}
} //year extraction
}
//System.out.println("Temp="+temp+"I="+i+"J="+j+"flag="+flag);
if(flag==true && j==4)
{
year = Integer.valueOf(temp);
flag=true;
}//end of else of year
else
flag=false;
if(flag==true)
{
if(year%400==0)
leap=true;
else if (year%100==0)
leap=false;
else if (year%4==0)
leap=true;
else
leap=false;
if(leap==false)
{
if(day>mdays[month-1] || day < 1 )
{
System.out.println("Invalid day of a month:");
flag=false;
}
}//non-leap year checking
else
{
if(day>ldays[month-1] || day < 1)
{
System.out.println("Invalid day of a month:");
flag=false;
}
} //leap year checking
} // checking for vaild date in months
}while(flag==false);
dte="";
dte=day+"/"+month+"/"+year;
System.out.println("Enter the marks:");
for(int i=0;i<5;i++)
{
System.out.println("Enter the marks in Subject:"+(i+1));
marks[i]=in.nextInt();
}
}
public void setCourse(String S)
{
co=S;
}
public void displayAll()
{
System.out.println("Roll No. = "+roll+" Name= "+name+" Course ="+co);
System.out.println("Admission date: "+dte);
for(int i=0;i<5;i++)
{
System.out.println("Marks in Subject "+(i+1)+"= "+marks[i]);
}
System.out.println("");
}
public double getPercentage()
{
return percentage;
}
private int roll;
private String name;
private String co;
private String dte;
private boolean flag=true;
private boolean leap;
private double percentage;
private int day;
private int month;
private int year;
int[] marks = new int[5];
int[] mdays={31,28,31,30,31,30,31,31,30,31,30,31};
int[] ldays={31,29,31,30,31,30,31,31,30,31,30,31};
}
class extendStudent extends StudentRecord
{
public extendStudent()
{
super();
Department="";
}
public void inputData()
{
Scanner in = new Scanner(System.in);
System.out.println("Enter the department:");
Department = in.nextLine();
super.inputData();
}
public String deptName()
{
return Department;
}
public double getPercentage()
{
return super.getPercentage();
}
private String Department;
}
class Course
{
Course()
{
seats=new int[3];
seats[0]=0;
seats[1]=0;
seats[2]=0;
}
public String getCourse(String S)
{
for(int i=0;i<3;i++)
if(S.equalsIgnoreCase(course[i]))
{
seats[i]++;
return course[i];
}
return "XX";
}
public int getSeat(String S)
{
for(int i=0;i<3;i++)
{
if(S.equalsIgnoreCase(course[i]))
return seats[i];
}
return -9;
}
public int getSeatLimit(String S)
{
for(int i=0;i<3;i++)
{
if(S.equalsIgnoreCase(course[i]))
return fixSeat[i];
}
return -9;
}
private static String[] course = {"Graduation", "PG", "PhD"};
private static int[] fixSeat={3,2,1};
private int[] seats;
}
No comments:
Post a Comment